AdaptiveNonlinearVariationalSolver.h

Note

The documentation on this page was automatically extracted from the DOLFIN C++ code and may need to be edited or expanded.

class AdaptiveNonlinearVariationalSolver

A class for goal-oriented adaptive solution of nonlinear variational problems.

For a nonlinear variational problem of the form: find u in V satisfying

F(u; v) = 0 for all v in \(\hat V\)

and a corresponding conforming discrete problem: find u_h in V_h satisfying (at least approximately)

F(u_h; v) = 0 for all v in \(\hat V_h\)

and a given goal functional M and tolerance tol, the aim is to find a V_H and a u_H in V_H satisfying the discrete problem such that

|M(u) - M(u_H)| < tol

This strategy is based on dual-weighted residual error estimators designed and automatically generated for the primal problem and subsequent h-adaptivity.

AdaptiveNonlinearVariationalSolver(std::shared_ptr<NonlinearVariationalProblem> problem, std::shared_ptr<GoalFunctional> goal)

Create AdaptiveNonlinearVariationalSolver (shared ptr version)

Arguments
problem (NonlinearVariationalProblem)
The primal problem
goal (GoalFunctional)
The goal functional
AdaptiveNonlinearVariationalSolver(std::shared_ptr<NonlinearVariationalProblem> problem, std::shared_ptr<Form> goal, std::shared_ptr<ErrorControl> control)

Create AdaptiveLinearVariationalSolver from variational problem, goal form and error control instance

Arguments
problem (NonlinearVariationalProblem)
The primal problem
goal (Form)
The goal functional
control (ErrorControl)
An error controller object
std::shared_ptr<const Function> solve_primal()

Solve the primal problem.

Returns
Function
The solution to the primal problem
std::vector<std::shared_ptr<const DirichletBC>> extract_bcs() const

Extract the boundary conditions for the primal problem.

Returns
std::vector<DirichletBC>
The primal boundary conditions
double evaluate_goal(Form &M, std::shared_ptr<const Function> u) const

Evaluate the goal functional.

Arguments
M (Form)
The functional to be evaluated
u (Function)
The function at which to evaluate the functional
Returns
double
The value of M evaluated at u
void adapt_problem(std::shared_ptr<const Mesh> mesh)

Adapt the problem to other mesh.

Arguments
mesh (Mesh)
The other mesh
std::size_t num_dofs_primal()

Return the number of degrees of freedom for primal problem

Returns
_std::size_t_
The number of degrees of freedom
void init(std::shared_ptr<NonlinearVariationalProblem> problem, std::shared_ptr<GoalFunctional> goal)

Helper function for instance initialization

Arguments
problem (NonlinearVariationalProblem)
The primal problem
u (GoalFunctional)
The goal functional