* on each cell. Furthermore it provides the difference matrix
* $id-I_h$ that is needed for evaluating $(id-I_h)z$ for e.g. the
* dual solution $z$.
- *
+ *
* For more information about the <tt>spacedim</tt> template parameter
* check the documentation of FiniteElement or the one of
* Triangulation.
*/
virtual ~FEFactoryBase();
};
-
+
/**
* A concrete class for factory
* objects creating finite
* element class wishes to
* interpret this number) given
* as argument to get().
- *
+ *
* @author Guido Kanschat, 2006
*/
template <class FE>
virtual FiniteElement<FE::dimension,FE::dimension>*
get (const unsigned int degree) const;
};
-
+
/**
* @warning In most cases, you
* will probably want to use
std::vector<unsigned int>& renumbering,
std::vector<unsigned int>& block_data,
bool return_start_indices = true);
-
+
/**
* @name Generation of local matrices
* @{
get_interpolation_matrix(const FiniteElement<dim,spacedim> &fe1,
const FiniteElement<dim,spacedim> &fe2,
FullMatrix<number> &interpolation_matrix);
-
+
/**
* Gives the interpolation matrix
* that interpolates a @p fe1-
* space due to @p fe1 is not a subset of
* the finite element space due to
* @p fe2, as if it were a subset then
- * the @p interpolation_matrix would be
+ * the @p interpolation_matrix would be
* only the unit matrix.
*/
template <int dim, typename number, int spacedim>
static void get_projection_matrix(const FiniteElement<dim,spacedim> &fe1,
const FiniteElement<dim,spacedim> &fe2,
FullMatrix<number> &matrix);
-
+
/**
* Compute the matrix of nodal
* values of a finite element
template <int dim, int spacedim>
static void compute_node_matrix(FullMatrix<double>& M,
const FiniteElement<dim,spacedim>& fe);
-
+
/**
* For all possible (isotropic
* and anisotropic) refinement
/**
- * This method implements the
+ * This method implements the
* FETools::compute_projection_from_quadrature_points_matrix
- * method for faces of a mesh.
+ * method for faces of a mesh.
* The matrix that it returns, X, is face specific
* and its size is fe.dofs_per_cell by
* rhs_quadrature.size().
* The dimension, dim must be larger than 1 for this class,
- * since Quadrature<dim-1> objects are required. See the
+ * since Quadrature<dim-1> objects are required. See the
* documentation on the Quadrature class for more information.
*/
template <int dim, int spacedim>
unsigned int face,
FullMatrix<double> &X);
-
+
//@}
/**
const InVector &u1,
const DH2<dim,spacedim> &dof2,
OutVector &u2);
-
+
/**
* Gives the interpolation of a
* the @p dof1-function @p u1 to
* at the DoF values on the
* discontinuities.
*/
- template <int dim, int spacedim,
+ template <int dim, int spacedim,
template <int, int> class DH1,
- template <int, int> class DH2,
+ template <int, int> class DH2,
class InVector, class OutVector>
static void interpolate (const DH1<dim,spacedim> &dof1,
const InVector &u1,
const DH2<dim,spacedim> &dof2,
const ConstraintMatrix &constraints,
- OutVector& u2);
+ OutVector& u2);
/**
* Gives the interpolation of the
static void interpolation_difference(const DoFHandler<dim,spacedim> &dof1,
const InVector &z1,
const FiniteElement<dim,spacedim> &fe2,
- OutVector &z1_difference);
-
+ OutVector &z1_difference);
+
/**
* Gives $(Id-I_h)z_1$ for a given
* @p dof1-function $z_1$, where $I_h$
const DoFHandler<dim,spacedim>& dof2,
const ConstraintMatrix& constraints2,
OutVector& z1_difference);
-
+
/**
* $L^2$ projection for
* discontinuous
const InVector& u1,
const DoFHandler<dim,spacedim>& dof2,
OutVector& u2);
-
+
/**
* Gives the patchwise
* extrapolation of a @p dof1
* does not satisfy continuity
* requirements of the given
* finite elements.
- *
+ *
* When you use continuous
* elements on grids with hanging
* nodes, please use the
static void extrapolate (const DoFHandler<dim,spacedim>& dof1,
const InVector& z1,
const DoFHandler<dim,spacedim>& dof2,
- OutVector& z2);
+ OutVector& z2);
/**
* Gives the patchwise
const InVector& z1,
const DoFHandler<dim,spacedim>& dof2,
const ConstraintMatrix& constraints,
- OutVector& z2);
+ OutVector& z2);
//@}
/**
* The numbering of the degrees
template <int dim>
static
std::vector<unsigned int>
- hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe_data);
-
+ hierarchic_to_lexicographic_numbering (const FiniteElementData<dim> &fe_data);
+
/**
* This is the reverse function
* to the above one, generating
static
std::vector<unsigned int>
lexicographic_to_hierarchic_numbering (const FiniteElementData<dim> &fe_data);
-
+
/**
* Parse the name of a finite
* element and generate a finite
* make your own elements known
* to this function, use the
* add_fe_name() function.
- * This function does not work
+ * This function does not work
* if one wants to get a codimension
* 1 finite element.
*/
* destroy it later on. The
* object will be deleted at the
* end of the program's lifetime.
- *
+ *
* If the name of the element
* is already in use, an exception
* is thrown. Thus, functionality
template <int dim, int spacedim>
static void add_fe_name (const std::string& name,
const FEFactoryBase<dim,spacedim>* factory);
-
+
/**
* The string used for
* get_fe_from_name() cannot be
std::string,
<< "Can't re-generate a finite element from the string '"
<< arg1 << "'.");
-
+
/**
* The string used for
* get_fe_from_name() cannot be
<< " in the finite element string must match "
<< "the space dimension "
<< arg2 << ".");
-
+
/**
* Exception
*
DeclException2 (ExcNotGreaterThan,
int, int,
<< arg1 << " must be greater than " << arg2);
-
- private:
- /**
- * Return a finite element that
- * is created using the beginning
- * of <tt>name</tt> and eat away
- * the part of <tt>name</tt>
- * defining this element.
- */
- template <int dim, int spacedim>
- static
- FiniteElement<dim,spacedim> *
- get_fe_from_name_aux (std::string &name);
-
};