* Default constructor. Constructs an element
* which is not so useful. Checking
* #total_dofs# is therefore a good way to
- * check if something went wrong.
- */
+ * check if something went wrong. */
FiniteElementData ();
/**
* @author Wolfgang Bangerth, 1998
*/
template <int dim>
-class FiniteElement : public FiniteElementBase<dim> {
+class FiniteElement : public FiniteElementBase<dim>
+{
public:
/**
* Constructor
const Boundary<dim> &boundary,
FullMatrix<double> &local_mass_matrix) const =0;
+ /**
+ * Number of base elements in a mixed
+ * discretization. This function returns
+ * 1 for simple elements.
+ */
+ virtual unsigned int n_base_elements() const;
+
+ /**
+ * Access to base element
+ * objects. By default,
+ * #base_element(0)# is #this#.
+ * This function is overloaded by
+ * system elements to allow
+ * access to the different
+ * components of mixed
+ * discretizations.
+ */
+ virtual const FiniteElement<dim>& base_element(unsigned index) const;
+
/**
* Exception
*/
DeclException1 (ExcComputationNotUseful,
int,
<< "The computation you required from this function is not "
- << "feasable or not probable in the present dimension ("
+ << "feasible or not probable in the present dimension ("
<< arg1 << ") because it would be prohibitively expensive.");
};
* @author Wolfgang Bangerth, Guido Kanschat, 1999
*/
template <int dim>
-class FESystem : public FiniteElement<dim>
+class FESystem //<dim>
+ : public FiniteElement<dim>
{
/**
* Copy constructor prohibited.
* of finite elements composed
* into this structure.
*/
- unsigned n_base_elements() const;
+ virtual unsigned n_base_elements() const;
/**
* How often is a composing element used.
* by index.
*
*/
- const FiniteElement<dim>& base_element(unsigned index) const;
+ virtual const FiniteElement<dim>& base_element(unsigned index) const;
private: