23 #ifndef __MIXED_NONLINEAR_VARIATIONAL_SOLVER_H
24 #define __MIXED_NONLINEAR_VARIATIONAL_SOLVER_H
26 #include <dolfin/nls/NonlinearProblem.h>
27 #include <dolfin/nls/NewtonSolver.h>
28 #include <dolfin/nls/PETScSNESSolver.h>
29 #include "MixedNonlinearVariationalProblem.h"
30 #include "SystemAssembler.h"
36 class MixedNonlinearVariationalProblem;
37 class PETScNestMatrix;
51 std::pair<std::size_t, bool>
solve();
58 p.
add(
"symmetric",
false);
59 p.
add(
"print_rhs",
false);
60 p.
add(
"print_matrix",
false);
62 std::set<std::string> nonlinear_solvers = {
"newton"};
63 std::string default_nonlinear_solver =
"newton";
68 nonlinear_solvers.insert(
"snes");
71 p.
add(
"nonlinear_solver", default_nonlinear_solver, nonlinear_solvers);
84 MixedNonlinearDiscreteProblem(
85 std::shared_ptr<const MixedNonlinearVariationalProblem> problem,
86 std::shared_ptr<const MixedNonlinearVariationalSolver> solver);
89 ~MixedNonlinearDiscreteProblem();
101 std::shared_ptr<const MixedNonlinearVariationalProblem> _problem;
102 std::shared_ptr<const MixedNonlinearVariationalSolver> _solver;
105 std::vector<std::shared_ptr<GenericMatrix>> _Js;
106 std::vector<std::shared_ptr<GenericVector>> _bs;
110 std::shared_ptr<MixedNonlinearVariationalProblem> _problem;
113 std::shared_ptr<MixedNonlinearDiscreteProblem> nonlinear_problem;
116 std::shared_ptr<NewtonSolver> newton_solver;
120 std::shared_ptr<PETScSNESSolver> snes_solver;
This class defines a common interface for matrices.
Definition: GenericMatrix.h:47
This class defines a common interface for vectors.
Definition: GenericVector.h:48
This class implements a solver for mixed nonlinear variational problems.
Definition: MixedNonlinearVariationalSolver.h:42
static Parameters default_parameters()
Default parameter values.
Definition: MixedNonlinearVariationalSolver.h:54
MixedNonlinearVariationalSolver()
Create linear variational solver for given problem.
Definition: MixedNonlinearVariationalSolver.cpp:46
std::pair< std::size_t, bool > solve()
Solve variational problem.
Definition: MixedNonlinearVariationalSolver.cpp:60
static Parameters default_parameters()
Definition: NewtonSolver.cpp:48
Definition: NonlinearProblem.h:37
static Parameters default_parameters()
Default parameter values.
Definition: PETScSNESSolver.cpp:83
Definition: Parameters.h:95
void add(std::string key)
Definition: Parameters.h:128
Common base class for DOLFIN variables.
Definition: Variable.h:36