#include <finiteelementinterface.h>
Public Member Functions | |
virtual unsigned | n_fields ()=0 |
virtual Index | n_local_dofs ()=0 |
virtual Index | local_dof_field (unsigned local_dof)=0 |
virtual const ArrayOfVecDouble & | get_support_points ()=0 |
virtual Index | n_dofs_per_face ()=0 |
virtual const VecIndex & | face_to_cell_local_map (Index faceId)=0 |
virtual double | shape_value (unsigned i, const VecDouble &p)=0 |
virtual void | shape_grad (unsigned i, const VecDouble &pt, VecDouble &vGrad)=0 |
The base class of all finite elements This class has all its methods as pure virtual.
The finite element is responsible to: 1) Evaluate the basis function in the reference element 2) Define any important information of the reference domain
Important to note the finite element interface does not know anything about the mapping of the cell in the reference domain to the real domain.
Programmers, pay attention not to mix the coordinates of the parametric element to the coordinates of the deformed element in a mesh. Read carefully the documentation of each method and return exactly what the documentation says. If you have any questions about what a method do, ask your manager (i.e ME), but first try to understand the documentation.
This class does not have any data. It just define the methods that all finite element classes should implement plus some methods that are common and usefull for all finite elements
Definition at line 35 of file finiteelementinterface.h.
virtual const VecIndex& FiniteElementInterface::face_to_cell_local_map | ( | Index | faceId | ) | [pure virtual] |
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.
virtual const ArrayOfVecDouble& FiniteElementInterface::get_support_points | ( | ) | [pure virtual] |
Get the support points for each local dof on the reference element. So the support point of the nth local dof is return as a 3d point on the nth position of the ArrayOfVecDouble.
Definition of support points: In many finite elements, each degree of freedom, ak represents the value of the function a0*N0(xi) + a1*N1(xi) .... an*Nn(xi) at a specific point xi==xk. This xk is the support point of the dof ak.
In the vector returned from this function the position i of this vector has the support point of the local dof i in the reference domain.
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.
virtual Index FiniteElementInterface::local_dof_field | ( | unsigned | local_dof | ) | [pure virtual] |
Taking a local dof in the reference domain returns the number of the field where this dof belongs to.
Implemented in FEDealWrapper, FEOrthoMeshDealWrapper, and FEOrthoSystem.
virtual Index FiniteElementInterface::n_dofs_per_face | ( | ) | [pure virtual] |
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.
virtual unsigned FiniteElementInterface::n_fields | ( | ) | [pure virtual] |
This function returns the number of fields (components) of the finite element.
Implemented in FEDealWrapper, FEOrthoMeshDealWrapper, and FEOrthoSystem.
virtual Index FiniteElementInterface::n_local_dofs | ( | ) | [pure virtual] |
Get number of local dofs This is the dimension of the basis functions in the element level. For hat functions in 1D for example, it should return 2
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.
virtual void FiniteElementInterface::shape_grad | ( | unsigned | i, | |
const VecDouble & | pt, | |||
VecDouble & | vGrad | |||
) | [pure virtual] |
Return the derivative of the shape function i in the reference element at point xi
Pre: xi is in [0,1]
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.
virtual double FiniteElementInterface::shape_value | ( | unsigned | i, | |
const VecDouble & | p | |||
) | [pure virtual] |
Get the value of the ith shape function (also called basis function) at position xi in the reference domain. Parameters: i = The shape function number xi= The point in the reference domain Pre: xi is in [0,1]
Implemented in FEDealWrapper, and FEOrthoMeshDealWrapper.