
Public Member Functions | |
| CubicHermite () | |
| bool | supportsCellTypePair (const CellType &maximalCellType, const CellType &cellType) const |
| Inform caller as to whether a given cell type is supported. | |
| void | print (std::ostream &os) const |
| abstract print function | |
| int | order () const |
| int | nReferenceDOFsWithoutFacets (const CellType &maximalCellType, const CellType &cellType) const |
| return the number of nodes for this basis on the given cell type | |
| void | getReferenceDOFs (const CellType &maximalCellType, const CellType &cellType, Array< Array< Array< int > > > &dofs) const |
| Get a description of the DOF numbering and distribution scheme for this basis function on the given cell type. | |
| void | refEval (const CellType &cellType, const Array< Point > &pts, const SpatialDerivSpecifier &deriv, Array< Array< Array< double > > > &result, int verbosity=0) const |
| Evaluate the basis functions (or some mixed spatial derivative of the basis functions) for an array of points on the "reference cell" for a given cell type. | |
| virtual bool | requiresBasisTransformation () const |
| Indicates whether mapping the basis requires an additional correction. | |
| void | preApplyTransformation (const CellType &maxCellType, const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, RCP< Array< double > > &A) const |
| Default transformation does nothing. | |
| void | postApplyTransformation (const CellType &maxCellType, const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, RCP< Array< double > > &A) const |
| Default transformation does nothing. | |
| void | preApplyTransformationTranspose (const CellType &maxCellType, const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, Array< double > &A) const |
| Default transformation does nothing. | |
Handleable interface | |
| static Array< int > | makeRange (int low, int high) |
| void | evalOnLine (const Point &pt, const MultiIndex &deriv, Array< double > &result) const |
| evaluate on a line cell | |
| void | evalOnTriangle (const Point &pt, const MultiIndex &deriv, Array< double > &result) const |
| evaluate on a triangle cell | |
| void | evalOnTet (const Point &pt, const MultiIndex &deriv, Array< double > &result) const |
| evaluate on a tet cell | |
| void | preApplyTransformationTriangle (const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, RCP< Array< double > > &A) const |
| void | postApplyTransformationTriangle (const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, RCP< Array< double > > &A) const |
| void | preApplyTransformationTransposeTriangle (const Mesh &mesh, const Array< int > &cellLIDs, const CellJacobianBatch &JVol, Array< double > &A) const |
| void | getVertexH (const Mesh &mesh, const Array< int > &cellLIDs, Array< double > &cellVertexH) const |
Definition at line 43 of file SundanceCubicHermite.hpp.
| Sundance::CubicHermite::CubicHermite | ( | ) | [inline] |
Definition at line 47 of file SundanceCubicHermite.hpp.
| void CubicHermite::evalOnLine | ( | const Point & | pt, | |
| const MultiIndex & | deriv, | |||
| Array< double > & | result | |||
| ) | const [private] |
evaluate on a line cell
Definition at line 248 of file SundanceCubicHermite.cpp.
References Sundance::MultiIndex::order(), and Sundance::ADReal::value().
Referenced by refEval().
| void CubicHermite::evalOnTet | ( | const Point & | pt, | |
| const MultiIndex & | deriv, | |||
| Array< double > & | result | |||
| ) | const [private] |
| void CubicHermite::evalOnTriangle | ( | const Point & | pt, | |
| const MultiIndex & | deriv, | |||
| Array< double > & | result | |||
| ) | const [private] |
evaluate on a triangle cell
Definition at line 275 of file SundanceCubicHermite.cpp.
References Sundance::MultiIndex::firstOrderDirection(), Sundance::MultiIndex::order(), SUNDANCE_OUT, Sundance::value, Sundance::ADReal::value(), and Playa::ObjectWithVerbosity::verb().
Referenced by refEval().
| void CubicHermite::getReferenceDOFs | ( | const CellType & | maximalCellType, | |
| const CellType & | cellType, | |||
| Array< Array< Array< int > > > & | dofs | |||
| ) | const [virtual] |
Get a description of the DOF numbering and distribution scheme for this basis function on the given cell type.
| cellType | [in] Specification of the cell topology | |
| dofs | [out] Array of dof numbering information, to be filled in during the call. On output, dofs.size()==dimension(cellType). See description of dofs below for more details. |
dofs, and is to be interpreted as follows: The outer dimension of the description array dofs.size() is cellDim, where cellDim is the spatial dimension of the cell. The DOFs attached to facets are stored in array entries dofs[s] where s=0...cellDim-1. Those associated with the cell body are stored in dofs[cellDim-1]. For cell dofs attached to facets, the dof facetDofIndex associated with the facet facetIndex of facet dimension facetDim is given by:
dofs[facetDim][facetIndex][faceDofIndex]
For dofs attached to the cell body, the local DOF within the entire cell is given by dof is given by
dofs[cellDim][0][dofIndex]
More specifically:
dof[facetDim].size() gives the number of facets of the facet dimension facetDim, where 0 <= facetDim <= cellDim
dof[facetDim][facetIndex].size() gives the number of degrees of freedom (DOFs) on the facet facetIndex with facet dimension facetDim, where 0 <= facetDim <= cellDim and 0 <= facetIndex < numFacets(cellType,facetDim).
For example, the Lagrange basis functions of order 0 through 3 on 2D triangles would have the following dof arrays:
Order 0:
{ {}, {}, {{0}} }
Order 1:
{ { {0}, {1}, {2} }, {}, {} }
Order 2:
{ { {0}, {1}, {2} }, { {3}, {4}, {5} }, {} }
Order 3:
{ { {0}, {1}, {2} }, { {3,4}, {5,6}, {7,8} }, {9} }
Above, we have used the ordering given in Hughes' textbook.
Implements Sundance::BasisDOFTopologyBase.
Definition at line 131 of file SundanceCubicHermite.cpp.
References Sundance::LineCell, Sundance::PointCell, and Sundance::TriangleCell.
| void CubicHermite::getVertexH | ( | const Mesh & | mesh, | |
| const Array< int > & | cellLIDs, | |||
| Array< double > & | cellVertexH | |||
| ) | const [private] |
Definition at line 508 of file SundanceCubicHermite.cpp.
References Sundance::Mesh::numCells().
Referenced by postApplyTransformationTriangle(), preApplyTransformationTransposeTriangle(), and preApplyTransformationTriangle().
| static Array<int> Sundance::CubicHermite::makeRange | ( | int | low, | |
| int | high | |||
| ) | [static, private] |
| int CubicHermite::nReferenceDOFsWithoutFacets | ( | const CellType & | maximalCellType, | |
| const CellType & | cellType | |||
| ) | const [virtual] |
return the number of nodes for this basis on the given cell type
Implements Sundance::BasisDOFTopologyBase.
Definition at line 91 of file SundanceCubicHermite.cpp.
References Sundance::LineCell, Sundance::PointCell, and Sundance::TriangleCell.
| int Sundance::CubicHermite::order | ( | ) | const [inline, virtual] |
| void CubicHermite::postApplyTransformation | ( | const CellType & | maxCellType, | |
| const Mesh & | mesh, | |||
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| RCP< Array< double > > & | A | |||
| ) | const [virtual] |
Default transformation does nothing.
Reimplemented from Sundance::BasisFamilyBase.
Definition at line 339 of file SundanceCubicHermite.cpp.
References postApplyTransformationTriangle(), and Sundance::TriangleCell.
| void CubicHermite::postApplyTransformationTriangle | ( | const Mesh & | mesh, | |
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| RCP< Array< double > > & | A | |||
| ) | const [private] |
Definition at line 417 of file SundanceCubicHermite.cpp.
References getVertexH(), Sundance::CellJacobianBatch::jVals(), and Sundance::CellJacobianBatch::numCells().
Referenced by postApplyTransformation().
| void CubicHermite::preApplyTransformation | ( | const CellType & | maxCellType, | |
| const Mesh & | mesh, | |||
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| RCP< Array< double > > & | A | |||
| ) | const [virtual] |
Default transformation does nothing.
Reimplemented from Sundance::BasisFamilyBase.
Definition at line 321 of file SundanceCubicHermite.cpp.
References preApplyTransformationTriangle(), and Sundance::TriangleCell.
| void CubicHermite::preApplyTransformationTranspose | ( | const CellType & | maxCellType, | |
| const Mesh & | mesh, | |||
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| Array< double > & | A | |||
| ) | const [virtual] |
Default transformation does nothing.
Reimplemented from Sundance::BasisFamilyBase.
Definition at line 357 of file SundanceCubicHermite.cpp.
References preApplyTransformationTransposeTriangle(), and Sundance::TriangleCell.
| void CubicHermite::preApplyTransformationTransposeTriangle | ( | const Mesh & | mesh, | |
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| Array< double > & | A | |||
| ) | const [private] |
Definition at line 467 of file SundanceCubicHermite.cpp.
References getVertexH(), Sundance::CellJacobianBatch::jVals(), and Sundance::CellJacobianBatch::numCells().
Referenced by preApplyTransformationTranspose().
| void CubicHermite::preApplyTransformationTriangle | ( | const Mesh & | mesh, | |
| const Array< int > & | cellLIDs, | |||
| const CellJacobianBatch & | JVol, | |||
| RCP< Array< double > > & | A | |||
| ) | const [private] |
Definition at line 376 of file SundanceCubicHermite.cpp.
References getVertexH(), Sundance::CellJacobianBatch::jVals(), and Sundance::CellJacobianBatch::numCells().
Referenced by preApplyTransformation().
| void CubicHermite::print | ( | std::ostream & | os | ) | const [virtual] |
abstract print function
Implements Playa::Printable.
Definition at line 86 of file SundanceCubicHermite.cpp.
| void CubicHermite::refEval | ( | const CellType & | cellType, | |
| const Array< Point > & | pts, | |||
| const SpatialDerivSpecifier & | deriv, | |||
| Array< Array< Array< double > > > & | result, | |||
| int | verbosity = 0 | |||
| ) | const [virtual] |
Evaluate the basis functions (or some mixed spatial derivative of the basis functions) for an array of points on the "reference cell" for a given cell type.
| cellType | [in] The type of cell on which the basis is currently being evaluated. | |
| pts | [in] Array of points on the reference cell (or master cell) where the basis functions are to be computed. | |
| deriv | [in] Specification of which differential operator is to be applied to the basis functions. | |
| result | [out] On output, gives a triply nested array which contain the basis functions (or the requested basis function derivatives) evaluated at the given points pts. The size of the outer array results is either zero or spatialDim, depending on whether this is a scalar or vector basis, respectively. The size of the next array level is equal to the number of evaluation points. Finally, the size of the innermost array level is equal to the number of DOFs visible from the given cell type. x * Specifically, results[k][pointIndex][basisIndex] -th component of
, where |
Implements Sundance::BasisReferenceEvaluationBase.
Definition at line 206 of file SundanceCubicHermite.cpp.
References evalOnLine(), evalOnTriangle(), Sundance::SpatialDerivSpecifier::isIdentity(), Sundance::SpatialDerivSpecifier::isPartial(), Sundance::LineCell, Sundance::SpatialDerivSpecifier::mi(), Sundance::PointCell, and Sundance::TriangleCell.
| virtual bool Sundance::CubicHermite::requiresBasisTransformation | ( | ) | const [inline, virtual] |
Indicates whether mapping the basis requires an additional correction.
Reimplemented from Sundance::BasisFamilyBase.
Definition at line 83 of file SundanceCubicHermite.hpp.
| bool CubicHermite::supportsCellTypePair | ( | const CellType & | maximalCellType, | |
| const CellType & | cellType | |||
| ) | const [virtual] |
Inform caller as to whether a given cell type is supported.
Implements Sundance::BasisDOFTopologyBase.
Definition at line 44 of file SundanceCubicHermite.cpp.
References Sundance::LineCell, Sundance::PointCell, and Sundance::TriangleCell.