21 #include "libmesh/elem.h" 
   22 #include "libmesh/fe.h" 
   23 #include "libmesh/fe_interface.h" 
   24 #include "libmesh/enum_to_string.h" 
   35 void clough_nodal_soln(
const Elem * elem,
 
   37                        const std::vector<Number> & elem_soln,
 
   38                        std::vector<Number> &       nodal_soln,
 
   41   const unsigned int n_nodes = elem->n_nodes();
 
   43   const ElemType elem_type = elem->type();
 
   47   const Order totalorder = static_cast<Order>(order + elem->p_level());
 
   50   FEType fe_type(totalorder, 
CLOUGH);
 
   60         const unsigned int n_sf =
 
   64         std::vector<Point> refspace_nodes;
 
   66         libmesh_assert_equal_to (refspace_nodes.size(), 
n_nodes);
 
   68         for (
unsigned int n=0; n<
n_nodes; n++)
 
   70             libmesh_assert_equal_to (elem_soln.size(), n_sf);
 
   76             for (
unsigned int i=0; i<n_sf; i++)
 
   77               nodal_soln[n] += elem_soln[i] *
 
   86       libmesh_error_msg(
"ERROR: Invalid total order " << totalorder);
 
  134 unsigned int clough_n_dofs_at_node(
const ElemType t,
 
  136                                    const unsigned int n)
 
  161                   libmesh_error_msg(
"ERROR: Invalid node ID " << n << 
" selected for TRI6!");
 
  190                   libmesh_error_msg(
"ERROR: Invalid node ID " << n << 
" selected for TRI6!");
 
  206 unsigned int clough_n_dofs_per_elem(
const ElemType t, 
const Order o)
 
  243                               const std::vector<Number> & elem_soln,
 
  244                               std::vector<Number> & nodal_soln)
 
  245 { clough_nodal_soln(elem, order, elem_soln, nodal_soln, 0); }
 
  250                               const std::vector<Number> & elem_soln,
 
  251                               std::vector<Number> & nodal_soln)
 
  252 { clough_nodal_soln(elem, order, elem_soln, nodal_soln, 1); }
 
  257                               const std::vector<Number> & elem_soln,
 
  258                               std::vector<Number> & nodal_soln)
 
  259 { clough_nodal_soln(elem, order, elem_soln, nodal_soln, 2); }
 
  264                               const std::vector<Number> & elem_soln,
 
  265                               std::vector<Number> & nodal_soln)
 
  266 { clough_nodal_soln(elem, order, elem_soln, nodal_soln, 3); }
 
  300 #ifdef LIBMESH_ENABLE_AMR 
  305                                         const unsigned int variable_number,
 
  307 { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
 
  312                                         const unsigned int variable_number,
 
  314 { compute_proj_constraints(constraints, dof_map, variable_number, elem); }
 
  315 #endif // #ifdef LIBMESH_ENABLE_AMR