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