|
IPPL (Independent Parallel Particle Layer)
IPPL
|
A class representing a Lagrange space for finite element methods on a structured, rectilinear grid. More...
#include <LagrangeSpace.h>
Classes | |
| struct | DeviceStruct |
| Device struct for copies //////////////////////////////////////////. More... | |
Public Types | |
| typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::indices_t | indices_t |
| typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::point_t | point_t |
| typedef FiniteElementSpace< T, Dim, numElementDOFs, ElementType, QuadratureType, FieldLHS, FieldRHS >::vertex_points_t | vertex_points_t |
| typedef FieldLayout< Dim > | Layout_t |
| typedef detail::ViewType< T, Dim >::view_type | ViewType |
| typedef detail::ViewType< T, Dim, Kokkos::MemoryTraits< Kokkos::Atomic > >::view_type | AtomicViewType |
| typedef Vector< size_t, numElementVertices > | vertex_indices_t |
| typedef Vector< indices_t, numElementVertices > | indices_list_t |
Public Member Functions | |
| LagrangeSpace (UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature, const Layout_t &layout) | |
| Construct a new LagrangeSpace object. | |
| LagrangeSpace (UniformCartesian< T, Dim > &mesh, ElementType &ref_element, const QuadratureType &quadrature) | |
| Construct a new LagrangeSpace object (without layout) This constructor is made to work with the default constructor in FEMPoissonSolver.h such that it is compatible with alpine. | |
| void | initialize (UniformCartesian< T, Dim > &mesh, const Layout_t &layout) |
| Initialize a LagrangeSpace object created with the default constructor. | |
| void | initializeElementIndices (const Layout_t &layout) |
| Initialize a Kokkos view containing the element indices. This distributes the elements among MPI ranks. | |
| KOKKOS_FUNCTION size_t | numGlobalDOFs () const override |
| Degree of Freedom operations //////////////////////////////////////. | |
| KOKKOS_FUNCTION size_t | getLocalDOFIndex (const size_t &elementIndex, const size_t &globalDOFIndex) const override |
| Get the elements local DOF from the element index and global DOF index. | |
| KOKKOS_FUNCTION size_t | getGlobalDOFIndex (const size_t &elementIndex, const size_t &localDOFIndex) const override |
| Get the global DOF index from the element index and local DOF. | |
| KOKKOS_FUNCTION Vector< size_t, numElementDOFs > | getLocalDOFIndices () const override |
| Get the local DOF indices (vector of local DOF indices) They are independent of the specific element because it only depends on the reference element type. | |
| KOKKOS_FUNCTION Vector< size_t, numElementDOFs > | getGlobalDOFIndices (const size_t &element_index) const override |
| Get the global DOF indices (vector of global DOF indices) of an element. | |
| KOKKOS_FUNCTION T | evaluateRefElementShapeFunction (const size_t &localDOF, const point_t &localPoint) const |
| Basis functions and gradients /////////////////////////////////////. | |
| KOKKOS_FUNCTION point_t | evaluateRefElementShapeFunctionGradient (const size_t &localDOF, const point_t &localPoint) const |
| Evaluate the gradient of the shape function of a local degree of freedom at a given point in the reference element. | |
| template<typename F> | |
| FieldLHS | evaluateAx (FieldLHS &field, F &evalFunction) const |
| Assembly operations ///////////////////////////////////////////////. | |
| template<typename F> | |
| FieldLHS | evaluateAx_lower (FieldLHS &field, F &evalFunction) const |
| template<typename F> | |
| FieldLHS | evaluateAx_upper (FieldLHS &field, F &evalFunction) const |
| template<typename F> | |
| FieldLHS | evaluateAx_upperlower (FieldLHS &field, F &evalFunction) const |
| template<typename F> | |
| FieldLHS | evaluateAx_inversediag (FieldLHS &field, F &evalFunction) const |
| template<typename F> | |
| FieldLHS | evaluateAx_diag (FieldLHS &field, F &evalFunction) const |
| template<typename F> | |
| FieldLHS | evaluateAx_lift (FieldLHS &field, F &evalFunction) const |
| Assemble the left stiffness matrix A of the system but only for the boundary values, so that they can be subtracted from the RHS for treatment of Dirichlet BCs. | |
| void | evaluateLoadVector (FieldRHS &field) const |
| Assemble the load vector b of the system Ax = b. | |
| template<typename F> | |
| T | computeErrorL2 (const FieldLHS &u_h, const F &u_sol) const |
| Error norm computations ///////////////////////////////////////////. | |
| T | computeAvg (const FieldLHS &u_h) const |
| Given a field, compute the average. | |
| DeviceStruct | getDeviceMirror () const |
| Device struct definitions /////////////////////////////////////////. | |
| void | setMesh (UniformCartesian< T, Dim > &mesh) |
| KOKKOS_FUNCTION size_t | numElements () const |
| Mesh and Element operations ///////////////////////////////////////. | |
| KOKKOS_FUNCTION size_t | numElementsInDim (const size_t &dim) const |
| Get the number of elements in a given dimension. | |
| KOKKOS_FUNCTION indices_t | getMeshVertexNDIndex (const size_t &vertex_index) const |
| Get the NDIndex of a mesh vertex. | |
| KOKKOS_FUNCTION size_t | getMeshVertexIndex (const indices_t &vertex_nd_index) const |
| Get the global index of a mesh vertex given its NDIndex. | |
| KOKKOS_FUNCTION indices_t | getElementNDIndex (const size_t &elementIndex) const |
| Get the NDIndex (vector of indices for each dimension) of a mesh element. | |
| KOKKOS_FUNCTION size_t | getElementIndex (const indices_t &ndindex) const |
| Get the global index of a mesh element given the NDIndex. | |
| KOKKOS_FUNCTION vertex_indices_t | getElementMeshVertexIndices (const indices_t &elementNDIndex) const |
| Get all the global vertex indices of an element (given by its NDIndex). | |
| KOKKOS_FUNCTION indices_list_t | getElementMeshVertexNDIndices (const indices_t &elementNDIndex) const |
| Get all the NDIndices of the vertices of an element (given by its NDIndex). | |
| KOKKOS_FUNCTION vertex_points_t | getElementMeshVertexPoints (const indices_t &elementNDIndex) const |
| Get all the global vertex points of an element (given by its NDIndex). | |
Public Attributes | |
| UniformCartesian< T, Dim > & | mesh_m |
| Member variables //////////////////////////////////////////////////. | |
| ElementType | ref_element_m |
| const QuadratureType & | quadrature_m |
| Vector< size_t, Dim > | nr_m |
| Vector< double, Dim > | hr_m |
| Vector< double, Dim > | origin_m |
Static Public Attributes | |
| static constexpr unsigned | numElementDOFs = getLagrangeNumElementDOFs(Dim, Order) |
| static constexpr unsigned | dim |
| static constexpr unsigned | order = Order |
| static constexpr unsigned | numElementVertices |
Private Member Functions | |
| KOKKOS_FUNCTION bool | isDOFOnBoundary (const indices_t &ndindex) const |
| Check if a DOF is on the boundary of the mesh. | |
Private Attributes | |
| Kokkos::View< size_t * > | elementIndices |
A class representing a Lagrange space for finite element methods on a structured, rectilinear grid.
| T | The floating point number type of the field values |
| Dim | The dimension of the mesh |
| Order | The order of the Lagrange space |
| QuadratureType | The type of the quadrature rule |
| FieldLHS | The type of the left hand side field |
| FieldRHS | The type of the right hand side field |
Definition at line 33 of file LagrangeSpace.h.
| typedef detail::ViewType<T,Dim,Kokkos::MemoryTraits<Kokkos::Atomic>>::view_type ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::AtomicViewType |
Definition at line 69 of file LagrangeSpace.h.
|
inherited |
Definition at line 59 of file FiniteElementSpace.h.
| typedef FiniteElementSpace<T,Dim,numElementDOFs,ElementType,QuadratureType,FieldLHS,FieldRHS>::indices_t ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::indices_t |
Definition at line 54 of file LagrangeSpace.h.
| typedef FieldLayout<Dim> ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::Layout_t |
Definition at line 64 of file LagrangeSpace.h.
| typedef FiniteElementSpace<T,Dim,numElementDOFs,ElementType,QuadratureType,FieldLHS,FieldRHS>::point_t ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::point_t |
Definition at line 58 of file LagrangeSpace.h.
|
inherited |
Definition at line 57 of file FiniteElementSpace.h.
| typedef FiniteElementSpace<T,Dim,numElementDOFs,ElementType,QuadratureType,FieldLHS,FieldRHS>::vertex_points_t ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::vertex_points_t |
Definition at line 61 of file LagrangeSpace.h.
| typedef detail::ViewType<T,Dim>::view_type ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::ViewType |
Definition at line 67 of file LagrangeSpace.h.
| ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::LagrangeSpace | ( | UniformCartesian< T, Dim > & | mesh, |
| ElementType & | ref_element, | ||
| const QuadratureType & | quadrature, | ||
| const Layout_t & | layout ) |
Construct a new LagrangeSpace object.
| mesh | Reference to the mesh |
| ref_element | Reference to the reference element |
| quadrature | Reference to the quadrature rule |
| layout | Reference to the field layout |
Definition at line 8 of file LagrangeSpace.hpp.
References Dim, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::FiniteElementSpace(), getLagrangeNumElementDOFs(), and initializeElementIndices().
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::DeviceStruct::evaluateRefElementShapeFunction().
| ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::LagrangeSpace | ( | UniformCartesian< T, Dim > & | mesh, |
| ElementType & | ref_element, | ||
| const QuadratureType & | quadrature ) |
Construct a new LagrangeSpace object (without layout) This constructor is made to work with the default constructor in FEMPoissonSolver.h such that it is compatible with alpine.
| mesh | Reference to the mesh |
| ref_element | Reference to the reference element |
| quadrature | Reference to the quadrature rule |
Definition at line 24 of file LagrangeSpace.hpp.
References Dim, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::FiniteElementSpace(), and getLagrangeNumElementDOFs().
| T ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg | ( | const FieldLHS & | u_h | ) | const |
Given a field, compute the average.
| u_h | The numerical solution found using FEM |
Definition at line 1512 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::Comm, Dim, elementIndices, evaluateRefElementShapeFunction(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), numElementDOFs, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, and ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::ref_element_m.
| T ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2 | ( | const FieldLHS & | u_h, |
| const F & | u_sol ) const |
Error norm computations ///////////////////////////////////////////.
Functions for error computations, etc. ////////////////////////////.
Given two fields, compute the L2 norm error
| u_h | The numerical solution found using FEM |
| u_sol | The analytical solution (functor) |
Definition at line 1428 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::Comm, Dim, elementIndices, evaluateRefElementShapeFunction(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), numElementDOFs, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, and ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::ref_element_m.
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Assembly operations ///////////////////////////////////////////////.
Assemble the left stiffness matrix A of the system Ax = b
| field | The field to assemble the matrix for |
| evalFunction | The lambda telling us the form which A takes |
Definition at line 350 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_diag | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Definition at line 1066 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx_diag(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx_diag().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Definition at line 931 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx_inversediag(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::parallel_for(), ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx_inversediag().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lift | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Assemble the left stiffness matrix A of the system but only for the boundary values, so that they can be subtracted from the RHS for treatment of Dirichlet BCs.
| field | The field to assemble the matrix for |
| evalFunction | The lambda telling us the form which A takes |
Definition at line 1191 of file LagrangeSpace.hpp.
References ippl::apply(), Dim, elementIndices, evaluateAx_lift(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), isDOFOnBoundary(), numElementDOFs, and ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m.
Referenced by evaluateAx_lift().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lower | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Definition at line 493 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx_lower(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx_lower().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upper | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Definition at line 640 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx_upper(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx_upper().
| FieldLHS ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upperlower | ( | FieldLHS & | field, |
| F & | evalFunction ) const |
Definition at line 787 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateAx_upperlower(), evaluateRefElementShapeFunctionGradient(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateAx_upperlower().
| void ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector | ( | FieldRHS & | field | ) | const |
Assemble the load vector b of the system Ax = b.
| rhs_field | The field to set with the load vector |
Definition at line 1301 of file LagrangeSpace.hpp.
References ippl::apply(), ippl::BConds< Field, Dim >::apply(), ippl::BConds< Field, Dim >::assignGhostToPhysical(), ippl::CONSTANT_FACE, Dim, elementIndices, evaluateLoadVector(), evaluateRefElementShapeFunction(), getGlobalDOFIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getMeshVertexNDIndex(), IpplTimings::getTimer(), isDOFOnBoundary(), numElementDOFs, ippl::PERIODIC_FACE, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::quadrature_m, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::ref_element_m, IpplTimings::startTimer(), IpplTimings::stopTimer(), and ippl::ZERO_FACE.
Referenced by evaluateLoadVector().
| KOKKOS_FUNCTION T ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateRefElementShapeFunction | ( | const size_t & | localDOF, |
| const point_t & | localPoint ) const |
Basis functions and gradients /////////////////////////////////////.
Evaluate the shape function of a local degree of freedom at a given point in the reference element
| localDOF | size_t - The local degree of freedom index |
| localPoint | point_t (Vector<T, Dim>) - The point in the reference element |
Definition at line 256 of file LagrangeSpace.hpp.
Referenced by computeAvg(), computeErrorL2(), and evaluateLoadVector().
| KOKKOS_FUNCTION LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::point_t ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateRefElementShapeFunctionGradient | ( | const size_t & | localDOF, |
| const point_t & | localPoint ) const |
Evaluate the gradient of the shape function of a local degree of freedom at a given point in the reference element.
| localDOF | size_t - The local degree of freedom index |
| localPoint | point_t (Vector<T, Dim>) - The point in the reference element |
Definition at line 291 of file LagrangeSpace.hpp.
Referenced by evaluateAx(), evaluateAx_diag(), evaluateAx_inversediag(), evaluateAx_lift(), evaluateAx_lower(), evaluateAx_upper(), and evaluateAx_upperlower().
| LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::DeviceStruct ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::getDeviceMirror | ( | ) | const |
Device struct definitions /////////////////////////////////////////.
Definition at line 1599 of file LagrangeSpace.hpp.
References ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::nr_m, ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::DeviceStruct::nr_m, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::ref_element_m, and ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::DeviceStruct::ref_element_m.
|
inherited |
Get the global index of a mesh element given the NDIndex.
| ndindex | indices_t (Vector<size_t, Dim>) - vector of indices for each direction |
Definition at line 135 of file FiniteElementSpace.hpp.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initializeElementIndices().
|
inherited |
Get all the global vertex indices of an element (given by its NDIndex).
| elementNDIndex | The NDIndex of the element |
Definition at line 146 of file FiniteElementSpace.hpp.
|
inherited |
Get all the NDIndices of the vertices of an element (given by its NDIndex).
| elementNDIndex | The NDIndex of the element |
Definition at line 157 of file FiniteElementSpace.hpp.
|
inherited |
Get all the global vertex points of an element (given by its NDIndex).
| elementNDIndex | The NDIndex of the element |
Definition at line 167 of file FiniteElementSpace.hpp.
|
inherited |
Get the NDIndex (vector of indices for each dimension) of a mesh element.
| elementIndex | indices_t (Vector<size_t, Dim>) - The index of the element |
Definition at line 126 of file FiniteElementSpace.hpp.
References nr_m.
|
overridevirtual |
Get the global DOF index from the element index and local DOF.
| elementIndex | size_t - The index of the element |
| localDOFIndex | size_t - The local DOF index |
Definition at line 151 of file LagrangeSpace.hpp.
References getGlobalDOFIndex().
Referenced by getGlobalDOFIndex().
|
overridevirtual |
Get the global DOF indices (vector of global DOF indices) of an element.
| elementIndex | size_t - The index of the element |
Definition at line 178 of file LagrangeSpace.hpp.
Referenced by computeAvg(), computeErrorL2(), evaluateAx(), evaluateAx_diag(), evaluateAx_inversediag(), evaluateAx_lift(), evaluateAx_lower(), evaluateAx_upper(), evaluateAx_upperlower(), evaluateLoadVector(), and getLocalDOFIndex().
|
overridevirtual |
Get the elements local DOF from the element index and global DOF index.
| elementIndex | size_t - The index of the element |
| globalDOFIndex | size_t - The global DOF index |
Definition at line 122 of file LagrangeSpace.hpp.
References Dim, and getGlobalDOFIndices().
|
overridevirtual |
Get the local DOF indices (vector of local DOF indices) They are independent of the specific element because it only depends on the reference element type.
Definition at line 163 of file LagrangeSpace.hpp.
References getLocalDOFIndices(), and numElementDOFs.
Referenced by getLocalDOFIndices().
|
inherited |
Get the global index of a mesh vertex given its NDIndex.
| vertex_nd_index | indices_t (Vector<size_t, Dim>) - The NDIndex of the vertex (vector of indices for each dimension). |
Definition at line 117 of file FiniteElementSpace.hpp.
References Dim, and FiniteElementSpace().
|
inherited |
Get the NDIndex of a mesh vertex.
| vertex_index | size_t - The index of the vertex |
Definition at line 107 of file FiniteElementSpace.hpp.
References nr_m.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_diag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lift(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lower(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upper(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upperlower(), and ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector().
| void ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initialize | ( | UniformCartesian< T, Dim > & | mesh, |
| const Layout_t & | layout ) |
Initialize a LagrangeSpace object created with the default constructor.
| mesh | Reference to the mesh |
| layout | Reference to the field layout |
Definition at line 38 of file LagrangeSpace.hpp.
References Dim, ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::FiniteElementSpace(), getLagrangeNumElementDOFs(), initializeElementIndices(), and ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::setMesh().
| void ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initializeElementIndices | ( | const Layout_t & | layout | ) |
Initialize a Kokkos view containing the element indices. This distributes the elements among MPI ranks.
Definition at line 52 of file LagrangeSpace.hpp.
References Dim, first(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::getElementIndex(), ippl::FieldLayout< Dim >::getLocalNDIndex(), initializeElementIndices(), ippl::FiniteElementSpace< T, Dim, getLagrangeNumElementDOFs(Dim, Order), ElementType, QuadratureType, FieldLHS, FieldRHS >::nr_m, and ippl::NDIndex< Dim >::size().
Referenced by initialize(), initializeElementIndices(), and LagrangeSpace().
|
inlineprivate |
Check if a DOF is on the boundary of the mesh.
| ndindex | The NDIndex of the global DOF |
Definition at line 303 of file LagrangeSpace.h.
Referenced by evaluateAx(), evaluateAx_diag(), evaluateAx_inversediag(), evaluateAx_lift(), evaluateAx_lower(), evaluateAx_upper(), evaluateAx_upperlower(), and evaluateLoadVector().
|
inherited |
Mesh and Element operations ///////////////////////////////////////.
Get the number of elements in the mesh of the space
Definition at line 88 of file FiniteElementSpace.hpp.
|
inherited |
Get the number of elements in a given dimension.
| dim | size_t - representing the dimension |
Definition at line 97 of file FiniteElementSpace.hpp.
|
overridevirtual |
Degree of Freedom operations //////////////////////////////////////.
Get the number of global degrees of freedom in the space
Definition at line 110 of file LagrangeSpace.hpp.
References numGlobalDOFs().
Referenced by numGlobalDOFs().
|
inherited |
Definition at line 77 of file FiniteElementSpace.hpp.
References nr_m.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initialize().
|
staticconstexpr |
Definition at line 41 of file LagrangeSpace.h.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::DeviceStruct::getGlobalDOFIndices().
|
private |
Private member containing the element indices owned by //////////// my MPI rank. //////////////////////////////////////////////////////
Definition at line 316 of file LagrangeSpace.h.
Referenced by computeAvg(), computeErrorL2(), evaluateAx(), evaluateAx_diag(), evaluateAx_inversediag(), evaluateAx_lift(), evaluateAx_lower(), evaluateAx_upper(), evaluateAx_upperlower(), and evaluateLoadVector().
|
inherited |
Definition at line 231 of file FiniteElementSpace.h.
|
inherited |
Member variables //////////////////////////////////////////////////.
Definition at line 227 of file FiniteElementSpace.h.
|
inherited |
Definition at line 230 of file FiniteElementSpace.h.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::getDeviceMirror(), getElementMeshVertexNDIndices(), getElementNDIndex(), getMeshVertexNDIndex(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::initializeElementIndices(), and setMesh().
|
staticconstexpr |
Definition at line 38 of file LagrangeSpace.h.
Referenced by computeAvg(), computeErrorL2(), evaluateAx(), evaluateAx_diag(), evaluateAx_inversediag(), evaluateAx_lift(), evaluateAx_lower(), evaluateAx_upper(), evaluateAx_upperlower(), evaluateLoadVector(), and getLocalDOFIndices().
|
staticconstexpr |
Definition at line 48 of file LagrangeSpace.h.
|
staticconstexpr |
Definition at line 45 of file LagrangeSpace.h.
|
inherited |
Definition at line 232 of file FiniteElementSpace.h.
|
inherited |
Definition at line 229 of file FiniteElementSpace.h.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_diag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_inversediag(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lift(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_lower(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upper(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateAx_upperlower(), and ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector().
|
inherited |
Definition at line 228 of file FiniteElementSpace.h.
Referenced by ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeAvg(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::computeErrorL2(), ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::evaluateLoadVector(), and ippl::LagrangeSpace< T, Dim, Order, ElementType, QuadratureType, FieldLHS, FieldRHS >::getDeviceMirror().