20 #include "libmesh/dirichlet_boundaries.h" 22 #ifdef LIBMESH_ENABLE_DIRICHLET 25 #include "libmesh/composite_fem_function.h" 26 #include "libmesh/composite_function.h" 27 #include "libmesh/vector_value.h" 37 std::vector<unsigned int> variables_in,
41 variables(
std::move(variables_in)),
42 f(f_in ? f_in->clone() : nullptr),
43 g(g_in ? g_in->clone() : nullptr),
45 jacobian_tolerance(0.)
56 std::vector<unsigned int> variables_in,
60 variables(
std::move(variables_in)),
62 jacobian_tolerance(0.)
66 auto c = std::make_unique<CompositeFunction<Number>>();
79 std::vector<unsigned int> variables_in,
84 variables(
std::move(variables_in)),
86 jacobian_tolerance(0.)
90 auto cf = std::make_unique<CompositeFunction<Number>>();
94 auto cg = std::make_unique<CompositeFunction<Gradient>>();
111 std::vector<unsigned int> variables_in,
116 variables(
std::move(variables_in)),
117 f_fem(f_in ? f_in->clone() : nullptr),
118 g_fem(g_in ? g_in->clone() : nullptr),
120 jacobian_tolerance(0.)
128 std::vector<unsigned int> variables_in,
133 variables(
std::move(variables_in)),
135 jacobian_tolerance(0.)
139 auto c = std::make_unique<CompositeFEMFunction<Number>>();
141 f_fem = std::move(c);
150 std::vector<unsigned int> variables_in,
156 variables(
std::move(variables_in)),
158 jacobian_tolerance(0.)
162 auto cf = std::make_unique<CompositeFEMFunction<Number>>();
164 f_fem = std::move(cf);
166 auto cg = std::make_unique<CompositeFEMFunction<Gradient>>();
168 g_fem = std::move(cg);
181 variables(d_in.variables),
182 f(d_in.f ? d_in.f->clone() : nullptr),
183 g(d_in.g ? d_in.g->clone() : nullptr),
184 f_fem(d_in.f_fem ? d_in.f_fem->clone() : nullptr),
185 g_fem(d_in.g_fem ? d_in.g_fem->clone() : nullptr),
186 f_system(d_in.f_system),
187 jacobian_tolerance(d_in.jacobian_tolerance)
205 std::swap(tmp, *
this);
214 #endif // LIBMESH_ENABLE_DIRICHLET std::unique_ptr< FEMFunctionBase< Gradient > > g_fem
std::unique_ptr< FunctionBase< Number > > f
~DirichletBoundary()
Standard destructor.
This class allows one to associate Dirichlet boundary values with a given set of mesh boundary ids an...
std::vector< unsigned int > variables
DirichletBoundary(std::set< boundary_id_type > b_in, std::vector< unsigned int > variables_in, const FunctionBase< Number > *f_in, const FunctionBase< Gradient > *g_in=nullptr)
Constructor for a system-variable-order boundary using pointers-to-functors.
The libMesh namespace provides an interface to certain functionality in the library.
std::unique_ptr< FEMFunctionBase< Number > > f_fem
VariableIndexing
Dirichlet functions may be indexed either by "system variable order" or "local variable order"...
Manages consistently variables, degrees of freedom, and coefficient vectors.
DirichletBoundary & operator=(const DirichletBoundary &)
std::unique_ptr< FunctionBase< Gradient > > g
virtual std::unique_ptr< FunctionBase< Output > > clone() const =0
virtual std::unique_ptr< FEMFunctionBase< Output > > clone() const =0