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"
28 #include "libmesh/auto_ptr.h"
35 const std::vector<unsigned int> & variables_in,
39 variables(variables_in),
40 f(f_in ? f_in->clone() : nullptr),
41 g(g_in ? g_in->clone() : nullptr),
43 jacobian_tolerance(0.)
54 const std::vector<unsigned int> & variables_in,
58 variables(variables_in),
60 jacobian_tolerance(0.)
64 auto c = libmesh_make_unique<CompositeFunction<Number>>();
65 c->attach_subfunction(f_in, variables_in);
77 const std::vector<unsigned int> & variables_in,
82 variables(variables_in),
84 jacobian_tolerance(0.)
88 auto cf = libmesh_make_unique<CompositeFunction<Number>>();
89 cf->attach_subfunction(f_in, variables_in);
92 auto cg = libmesh_make_unique<CompositeFunction<Gradient>>();
93 cg->attach_subfunction(g_in, variables_in);
109 const std::vector<unsigned int> & variables_in,
114 variables(variables_in),
115 f_fem(f_in ? f_in->clone() : nullptr),
116 g_fem(g_in ? g_in->clone() : nullptr),
118 jacobian_tolerance(0.)
126 const std::vector<unsigned int> & variables_in,
131 variables(variables_in),
133 jacobian_tolerance(0.)
137 auto c = libmesh_make_unique<CompositeFEMFunction<Number>>();
138 c->attach_subfunction(f_in, variables_in);
139 f_fem = std::move(c);
148 const std::vector<unsigned int> & variables_in,
154 variables(variables_in),
156 jacobian_tolerance(0.)
160 auto cf = libmesh_make_unique<CompositeFEMFunction<Number>>();
161 cf->attach_subfunction(f_in, variables_in);
162 f_fem = std::move(cf);
164 auto cg = libmesh_make_unique<CompositeFEMFunction<Gradient>>();
165 cg->attach_subfunction(g_in, variables_in);
166 g_fem = std::move(cg);
179 variables(d_in.variables),
180 f(d_in.f ? d_in.f->clone() : nullptr),
181 g(d_in.g ? d_in.g->clone() : nullptr),
182 f_fem(d_in.f_fem ? d_in.f_fem->clone() : nullptr),
183 g_fem(d_in.g_fem ? d_in.g_fem->clone() : nullptr),
184 f_system(d_in.f_system),
185 jacobian_tolerance(d_in.jacobian_tolerance)
203 #endif // LIBMESH_ENABLE_DIRICHLET