|
Nektar++
|
Specialisation of the NodalUtil class to support nodal tetrahedral elements. More...
#include <NodalUtil.h>


Public Member Functions | |
| NodalUtilTetrahedron (int degree, Array< OneD, NekDouble > r, Array< OneD, NekDouble > s, Array< OneD, NekDouble > t) | |
| Construct the nodal utility class for a tetrahedron. More... | |
| virtual | ~NodalUtilTetrahedron () |
Public Member Functions inherited from Nektar::LibUtilities::NodalUtil | |
| NekVector< NekDouble > | GetWeights () |
| Obtain the integration weights for the given nodal distribution. More... | |
| SharedMatrix | GetVandermonde () |
| Return the Vandermonde matrix for the nodal distribution. More... | |
| SharedMatrix | GetVandermondeForDeriv (int dir) |
| Return the Vandermonde matrix of the derivative of the basis functions for the nodal distribution. More... | |
| SharedMatrix | GetDerivMatrix (int dir) |
| Return the derivative matrix for the nodal distribution. More... | |
| SharedMatrix | GetInterpolationMatrix (Array< OneD, Array< OneD, NekDouble > > &xi) |
Construct the interpolation matrix used to evaluate the basis at the points xi inside the element. More... | |
Protected Member Functions | |
| virtual NekVector< NekDouble > | v_OrthoBasis (const int mode) |
| Return the value of the modal functions for the tetrahedral element at the nodal points m_xi for a given mode. More... | |
| virtual NekVector< NekDouble > | v_OrthoBasisDeriv (const int dir, const int mode) |
| Return the value of the derivative of the modal functions for the tetrahedral element at the nodal points m_xi for a given mode. More... | |
| virtual boost::shared_ptr < NodalUtil > | v_CreateUtil (Array< OneD, Array< OneD, NekDouble > > &xi) |
| Construct a NodalUtil object of the appropriate element type for a given set of points. More... | |
| virtual NekDouble | v_ModeZeroIntegral () |
| Return the value of the integral of the zero-th mode for this element. More... | |
| virtual int | v_NumModes () |
| Calculate the number of degrees of freedom for this element. More... | |
Protected Member Functions inherited from Nektar::LibUtilities::NodalUtil | |
| NodalUtil (int degree, int dim) | |
| Set up the NodalUtil object. More... | |
Protected Attributes | |
| std::vector< Mode > | m_ordering |
Mapping from the indexing of the basis to a continuous ordering. More... | |
| Array< OneD, Array< OneD, NekDouble > > | m_eta |
Collapsed coordinates of the nodal points. More... | |
Protected Attributes inherited from Nektar::LibUtilities::NodalUtil | |
| int | m_dim |
| Dimension of the nodal element. More... | |
| int | m_degree |
| Degree of the nodal element. More... | |
| int | m_numPoints |
| Total number of nodal points. More... | |
| Array< OneD, Array< OneD, NekDouble > > | m_xi |
| Coordinates of the nodal points defining the basis. More... | |
Private Types | |
| typedef boost::tuple< int, int, int > | Mode |
Specialisation of the NodalUtil class to support nodal tetrahedral elements.
Definition at line 215 of file NodalUtil.h.
|
private |
Definition at line 217 of file NodalUtil.h.
| Nektar::LibUtilities::NodalUtilTetrahedron::NodalUtilTetrahedron | ( | int | degree, |
| Array< OneD, NekDouble > | r, | ||
| Array< OneD, NekDouble > | s, | ||
| Array< OneD, NekDouble > | t | ||
| ) |
Construct the nodal utility class for a tetrahedron.
The constructor of this class sets up two member variables used in the evaluation of the orthogonal basis:
inside the cube
on which the orthogonal basis functions are defined.
to an ordering
that defines the monomials
that span the tetrahedral space. This is then used to calculate which
triple (represented as a boost tuple) corresponding to a column of the Vandermonde matrix when calculating the orthogonal polynomials.| degree | Polynomial order of this nodal tetrahedron |
| r | -coordinates of nodal points in the standard element. |
| s | -coordinates of nodal points in the standard element. |
| t | -coordinates of nodal points in the standard element. |
Definition at line 420 of file NodalUtil.cpp.
References Nektar::NekConstants::kNekZeroTol, Nektar::LibUtilities::NodalUtil::m_degree, m_eta, Nektar::LibUtilities::NodalUtil::m_numPoints, m_ordering, and Nektar::LibUtilities::NodalUtil::m_xi.
|
inlinevirtual |
Definition at line 225 of file NodalUtil.h.
|
inlineprotectedvirtual |
Construct a NodalUtil object of the appropriate element type for a given set of points.
This function is used inside NodalUtil::GetInterpolationMatrix so that the (potentially non-square) Vandermonde matrix can be constructed to create the interpolation matrix at an arbitrary set of points in the domain.
| xi | Distribution of nodal points to create utility with. |
Implements Nektar::LibUtilities::NodalUtil.
Definition at line 242 of file NodalUtil.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and Nektar::LibUtilities::NodalUtil::m_degree.
|
inlineprotectedvirtual |
Return the value of the integral of the zero-th mode for this element.
Note that for the orthogonal basis under consideration, all modes integrate to zero asides from the zero-th mode. This function is used in NodalUtil::GetWeights to determine integration weights.
Implements Nektar::LibUtilities::NodalUtil.
Definition at line 249 of file NodalUtil.h.
|
inlineprotectedvirtual |
Calculate the number of degrees of freedom for this element.
Implements Nektar::LibUtilities::NodalUtil.
Definition at line 254 of file NodalUtil.h.
References Nektar::LibUtilities::NodalUtil::m_degree.
|
protectedvirtual |
Return the value of the modal functions for the tetrahedral element at the nodal points m_xi for a given mode.
In a tetrahedron, we use the orthogonal basis
where
is the mapping defined in m_ordering and
denotes the standard Jacobi polynomial.
| mode | The mode of the orthogonal basis to evaluate. |
Implements Nektar::LibUtilities::NodalUtil.
Definition at line 495 of file NodalUtil.cpp.
References Polylib::jacobfd(), m_eta, Nektar::LibUtilities::NodalUtil::m_numPoints, m_ordering, and CG_Iterations::modes.
|
protectedvirtual |
Return the value of the derivative of the modal functions for the tetrahedral element at the nodal points m_xi for a given mode.
Note that this routine must use the chain rule combined with the collapsed coordinate derivatives as described in Sherwin & Karniadakis (2nd edition), pg 152.
| dir | Coordinate direction in which to evaluate the derivative. |
| mode | The mode of the orthogonal basis to evaluate. |
Implements Nektar::LibUtilities::NodalUtil.
Definition at line 537 of file NodalUtil.cpp.
References Polylib::jacobd(), Polylib::jacobfd(), m_eta, Nektar::LibUtilities::NodalUtil::m_numPoints, m_ordering, and CG_Iterations::modes.
Collapsed coordinates
of the nodal points.
Definition at line 236 of file NodalUtil.h.
Referenced by NodalUtilTetrahedron(), v_OrthoBasis(), and v_OrthoBasisDeriv().
|
protected |
Mapping from the
indexing of the basis to a continuous ordering.
Definition at line 232 of file NodalUtil.h.
Referenced by NodalUtilTetrahedron(), v_OrthoBasis(), and v_OrthoBasisDeriv().
1.8.8