23#ifndef __MIXED_NONLINEAR_VARIATIONAL_PROBLEM_H
24#define __MIXED_NONLINEAR_VARIATIONAL_PROBLEM_H
28#include <dolfin/common/Hierarchical.h>
52 typedef std::vector<std::vector<std::shared_ptr<const Form>>>
form_list_type;
54 std::vector<std::shared_ptr<Function>> u,
55 std::vector<std::shared_ptr<const DirichletBC>>
bcs,
60 const std::vector<Function>& ub_func);
63 void set_bounds(std::vector<std::shared_ptr<const GenericVector>> lb,
64 std::vector<std::shared_ptr<const GenericVector>> ub);
68 std::shared_ptr<const Form>
residual_form(
int i,
int j=0)
const;
72 std::shared_ptr<const Form>
jacobian_form(
int i,
int j=0)
const;
75 std::vector<std::shared_ptr<Function>>
solution();
76 std::shared_ptr<Function>
solution(
int i);
79 const std::vector<std::shared_ptr<Function>>
solution()
const;
80 std::shared_ptr<const Function>
solution(
int i)
const;
83 std::vector<std::vector<std::shared_ptr<const DirichletBC>>>
bcs()
const;
84 std::vector<std::shared_ptr<const DirichletBC>>
bcs(
int i)
const;
87 std::vector<std::shared_ptr<const FunctionSpace>>
trial_space()
const;
88 std::shared_ptr<const FunctionSpace>
trial_space(
int i)
const;
91 std::vector<std::shared_ptr<const FunctionSpace>>
test_space()
const;
92 std::shared_ptr<const FunctionSpace>
test_space(
int i)
const;
95 std::vector<std::shared_ptr<const GenericVector>>
lower_bound()
const;
98 std::vector<std::shared_ptr<const GenericVector>>
upper_bound()
const;
112 void check_forms()
const;
115 void build_mappings();
124 std::vector<std::shared_ptr<Function>> _u;
127 std::vector<std::vector<std::shared_ptr<const DirichletBC>>> _bcs;
131 std::vector<std::shared_ptr<const GenericVector>> _lb;
132 std::vector<std::shared_ptr<const GenericVector>> _ub;
Definition Hierarchical.h:44
Definition MixedNonlinearVariationalProblem.h:48
bool has_jacobian() const
Check whether Jacobian has been defined.
Definition MixedNonlinearVariationalProblem.cpp:181
std::vector< std::shared_ptr< const FunctionSpace > > trial_space() const
Return trial space.
Definition MixedNonlinearVariationalProblem.cpp:126
std::vector< std::shared_ptr< const GenericVector > > lower_bound() const
Return lower bound.
Definition MixedNonlinearVariationalProblem.cpp:166
bool has_upper_bound() const
Check whether upper bound have has defined.
Definition MixedNonlinearVariationalProblem.cpp:191
std::vector< std::vector< std::shared_ptr< const Form > > > form_list_type
Definition MixedNonlinearVariationalProblem.h:52
std::vector< std::shared_ptr< const GenericVector > > upper_bound() const
Return upper bound.
Definition MixedNonlinearVariationalProblem.cpp:174
std::vector< std::vector< std::shared_ptr< const DirichletBC > > > bcs() const
Return boundary conditions.
Definition MixedNonlinearVariationalProblem.cpp:114
std::vector< std::shared_ptr< Function > > solution()
Return solution variable.
Definition MixedNonlinearVariationalProblem.cpp:90
void set_bounds(std::vector< std::shared_ptr< const GenericVector > > lb, std::vector< std::shared_ptr< const GenericVector > > ub)
Set the bounds for bound constrained solver.
bool has_lower_bound() const
Check whether lower bound has been defined.
Definition MixedNonlinearVariationalProblem.cpp:186
void set_bounds(const std::vector< Function > &lb_func, const std::vector< Function > &ub_func)
Set the bounds for bound constrained solver.
form_list_type jacobian_form() const
Return Jacobian form.
Definition MixedNonlinearVariationalProblem.cpp:78
form_list_type residual_form() const
Return residual form.
Definition MixedNonlinearVariationalProblem.cpp:66
std::vector< std::shared_ptr< const FunctionSpace > > test_space() const
Return test space.
Definition MixedNonlinearVariationalProblem.cpp:138