20 #ifndef LIBMESH_FE_BASE_H 21 #define LIBMESH_FE_BASE_H 45 template <
typename T>
class DenseMatrix;
46 template <
typename T>
class DenseVector;
52 template <
typename T>
class NumericVector;
57 #ifdef LIBMESH_ENABLE_NODE_CONSTRAINTS 61 #ifdef LIBMESH_ENABLE_PERIODIC 66 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 67 template <
unsigned int Dim, FEFamily T_radial, InfMapType T_map>
84 template <
typename OutputType>
112 static std::unique_ptr<FEGenericBase>
build (
const unsigned int dim,
130 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 140 static std::unique_ptr<FEGenericBase>
build_InfFE (
const unsigned int dim,
145 #ifdef LIBMESH_ENABLE_AMR 155 const unsigned int variable_number,
167 const Elem * coarse_elem,
169 const unsigned int var,
170 const bool use_old_dof_indices =
false);
180 const Elem * coarse_elem,
182 const bool use_old_dof_indices =
false);
184 #endif // #ifdef LIBMESH_ENABLE_AMR 186 #ifdef LIBMESH_ENABLE_PERIODIC 198 const unsigned int variable_number,
201 #endif // LIBMESH_ENABLE_PERIODIC 207 const std::vector<std::vector<OutputShape>> &
get_phi()
const 215 const std::vector<std::vector<OutputGradient>> &
get_dphi()
const 231 const std::vector<std::vector<OutputDivergence>> &
get_div_phi()
const 239 const std::vector<std::vector<OutputShape>> &
get_dphidx()
const 247 const std::vector<std::vector<OutputShape>> &
get_dphidy()
const 255 const std::vector<std::vector<OutputShape>> &
get_dphidz()
const 283 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES 289 const std::vector<std::vector<OutputTensor>> &
get_d2phi()
const 389 #endif //LIBMESH_ENABLE_SECOND_DERIVATIVES 391 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 444 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES 459 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 493 std::unique_ptr<FETransformationBase<OutputType>>
_fe_trans;
498 std::vector<std::vector<OutputShape>>
phi;
503 std::vector<std::vector<OutputGradient>>
dphi;
513 std::vector<std::vector<OutputDivergence>>
div_phi;
518 std::vector<std::vector<OutputShape>>
dphidxi;
533 std::vector<std::vector<OutputShape>>
dphidx;
538 std::vector<std::vector<OutputShape>>
dphidy;
543 std::vector<std::vector<OutputShape>>
dphidz;
546 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES 551 std::vector<std::vector<OutputTensor>>
d2phi;
616 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 649 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS 656 template <
unsigned int friend_Dim, FEFamily friend_T_radial, InfMapType friend_T_map>
674 template <
typename OutputType>
690 #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES
705 #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS
715 template <
typename OutputType>
723 #endif // LIBMESH_FE_BASE_H FEGenericBase(const unsigned int dim, const FEType &fet)
std::vector< std::vector< OutputTensor > > d2phi
Manages the family, order, etc. parameters for a given FE.
std::vector< std::vector< OutputShape > > dphidxi
std::vector< std::vector< OutputShape > > d2phidxdz
const std::vector< std::vector< OutputShape > > & get_d2phidxdy() const
std::vector< std::vector< OutputShape > > dphidzeta
bool calculations_started
std::vector< std::vector< OutputShape > > d2phidydz
Base class for all the infinite geometric element types.
std::unique_ptr< FETransformationBase< OutputType > > _fe_trans
TensorTools::DecrementRank< OutputNumber >::type OutputNumberDivergence
const std::vector< std::vector< OutputShape > > & get_d2phideta2() const
virtual void init_base_shape_functions(const std::vector< Point > &qp, const Elem *e)=0
Maps between boundary ids and PeriodicBoundaryBase objects.
virtual void compute_shape_functions(const Elem *elem, const std::vector< Point > &qp)
const std::vector< std::vector< OutputShape > > & get_d2phidxideta() const
std::vector< std::vector< OutputShape > > d2phidxideta
const std::vector< std::vector< OutputShape > > & get_d2phidydz() const
The base class for all geometric element types.
TensorTools::IncrementRank< OutputNumberGradient >::type OutputNumberTensor
std::vector< Real > weight
TensorTools::IncrementRank< OutputNumber >::type OutputNumberGradient
TensorTools::IncrementRank< OutputShape >::type OutputGradient
std::vector< std::vector< OutputShape > > d2phidx2
std::vector< std::vector< OutputShape > > curl_phi
const std::vector< std::vector< OutputShape > > & get_dphideta() const
const std::vector< std::vector< OutputDivergence > > & get_div_phi() const
std::vector< std::vector< OutputShape > > dphidy
FEGenericBase< RealGradient > FEVectorBase
TensorTools::DecrementRank< OutputShape >::type OutputDivergence
std::vector< std::vector< OutputShape > > d2phidy2
void print_phi(std::ostream &os) const
const std::vector< std::vector< OutputShape > > & get_dphidzeta() const
const std::vector< OutputGradient > & get_dphase() const
std::vector< std::vector< OutputShape > > d2phidetadzeta
const std::vector< std::vector< OutputShape > > & get_dphidx() const
static void coarsened_dof_values(const NumericVector< Number > &global_vector, const DofMap &dof_map, const Elem *coarse_elem, DenseVector< Number > &coarse_dofs, const unsigned int var, const bool use_old_dof_indices=false)
std::vector< std::vector< OutputShape > > d2phidxidzeta
Manages the degrees of freedom (DOFs) in a simulation.
std::vector< std::vector< OutputShape > > d2phidxdy
std::vector< std::vector< OutputShape > > dphidx
const std::vector< std::vector< OutputGradient > > & get_dphi() const
void print_d2phi(std::ostream &os) const
std::vector< std::vector< OutputShape > > phi
std::vector< std::vector< OutputShape > > d2phideta2
TensorTools::IncrementRank< OutputGradient >::type OutputTensor
const std::vector< std::vector< OutputShape > > & get_d2phidx2() const
const std::vector< RealGradient > & get_Sobolev_dweight() const
std::vector< OutputGradient > dphase
static std::unique_ptr< FEGenericBase > build(const unsigned int dim, const FEType &type)
const std::vector< std::vector< OutputShape > > & get_dphidy() const
static void compute_proj_constraints(DofConstraints &constraints, DofMap &dof_map, const unsigned int variable_number, const Elem *elem)
const std::vector< std::vector< OutputShape > > & get_d2phidy2() const
const std::vector< std::vector< OutputTensor > > & get_d2phi() const
TensorTools::MakeNumber< OutputShape >::type OutputNumber
std::vector< std::vector< OutputDivergence > > div_phi
const std::vector< std::vector< OutputShape > > & get_d2phidxi2() const
FEGenericBase< Real > FEBase
void determine_calculations()
const std::vector< std::vector< OutputShape > > & get_d2phidxdz() const
std::vector< std::vector< OutputGradient > > dphi
static void compute_periodic_constraints(DofConstraints &constraints, DofMap &dof_map, const PeriodicBoundaries &boundaries, const MeshBase &mesh, const PointLocatorBase *point_locator, const unsigned int variable_number, const Elem *elem)
const std::vector< std::vector< OutputShape > > & get_d2phidxidzeta() const
const std::vector< std::vector< OutputShape > > & get_d2phidetadzeta() const
const std::vector< std::vector< OutputShape > > & get_curl_phi() const
const std::vector< Real > & get_Sobolev_weight() const
std::vector< std::vector< OutputShape > > d2phidz2
const std::vector< std::vector< OutputShape > > & get_d2phidzeta2() const
static std::unique_ptr< FEGenericBase > build_InfFE(const unsigned int dim, const FEType &type)
std::vector< std::vector< OutputShape > > d2phidxi2
const std::vector< std::vector< OutputShape > > & get_dphidxi() const
void print_dphi(std::ostream &os) const
std::vector< std::vector< OutputShape > > d2phidzeta2
std::vector< std::vector< OutputShape > > dphidz
const std::vector< std::vector< OutputShape > > & get_d2phidz2() const
const std::vector< std::vector< OutputShape > > & get_phi() const
std::vector< std::vector< OutputShape > > dphideta
std::vector< RealGradient > dweight
const std::vector< std::vector< OutputShape > > & get_dphidz() const