Skip to content

Instantly share code, notes, and snippets.

@wence-
Created February 24, 2015 18:20
Show Gist options
  • Select an option

  • Save wence-/39fa71dbc3d0ffdce810 to your computer and use it in GitHub Desktop.

Select an option

Save wence-/39fa71dbc3d0ffdce810 to your computer and use it in GitHub Desktop.
def make_projection(v, target, solver_parameters=None):
V = target.function_space()
p = ufl_expr.TestFunction(V)
q = ufl_expr.TrialFunction(V)
a = ufl.inner(p, q) * V.mesh()._dx
L = ufl.inner(p, v) * V.mesh()._dx
prob = LinearVariationalProblem(a, L, target)
parameters = solver_parameters.copy() if solver_parameters else {}
parameters.setdefault('ksp_type', 'cg')
parameters.setdefault('ksp_rtol', 1e-8)
solver = LinearVariationalSolver(prob, solver_parameters=solver_parameters)
return solver
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment