def METHOD_NAME(region_mode='el_centers', eval_mode='constant'):
    """
    Parameters
    ----------
    region_mode : {'el_centers', 'tiled')
    eval_mode : {'constant', 'continuous'}
    """
    eps0 = 1. / 30  # real size of the reference cell
    phi = nm.array([1, -1]) * 1e4  # prescribed el. potential
    filename_mesh = data_dir + '/meshes/3d/cube_medium_hexa.mesh'
    # define the micro problem - homogenization procedure
    filename_micro = base_dir +\
        '/examples/multi_physics/piezo_elasticity_micro.py'
    filename_mesh_micro = data_dir + '/meshes/3d/piezo_mesh_micro.vtk'
    fields = {
        'displacement': ('real', 'vector', 'Omega', 1),
        'sfield': ('real', 'scalar', 'Omega', 1),
    }
    variables = {
        'u': ('unknown field', 'displacement'),
        'v': ('test field', 'displacement', 'u'),
        'svar': ('parameter field', 'sfield', 'set-to-none'),
    }
    # define material - homogenization
    functions = {
        'get_homog': (get_homog_fun(filename_micro),),
    }
    materials = {
        'hom': 'get_homog',
    }
    integrals = {
        'i2': 2,
    }
    regions = {
        'Omega': 'all',
        'Left': ('vertices in (x < -0.4999)', 'facet'),
        'Recovery': ('cell 266'),
    }
    ebcs = {
        'fixed_u': ('Left', {'u.all': 0.0}),
    }
    equations = {
        'balance_of_forces': """
            dw_lin_elastic.i2.Omega(hom.A, v, u)
          =
          - dw_lin_prestress.i2.Omega(hom.Vf, v)""",
    }
    solvers = {
        'ls': ('ls.scipy_direct', {}),
        'newton': ('nls.newton',
                   {'i_max': 10,
                    'eps_a': 1e-3,
                    'eps_r': 1e-3,
                    'problem': 'nonlinear',
                    })
    }
    options = {
        'output_dir': 'output',
        'nls': 'newton',
        'post_process_hook': 'post_process',
    }
    return locals()