GEOSX
|
Define the base interface for implicit finite element kernels. More...
#include <ImplicitKernelBase.hpp>
Classes | |
struct | StackVariables |
Kernel variables allocated on the stack. More... | |
Public Types | |
using | Base = KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP > |
Alias for the base class. (i.e. geos::finiteElement::KernelBase) | |
Public Member Functions | |
ImplicitKernelBase (NodeManager const &nodeManager, EdgeManager const &edgeManager, FaceManager const &faceManager, localIndex const targetRegionIndex, SUBREGION_TYPE const &elementSubRegion, FE_TYPE const &finiteElementSpace, CONSTITUTIVE_TYPE &inputConstitutiveType, arrayView1d< globalIndex const > const &inputDofNumber, globalIndex const rankOffset, CRSMatrixView< real64, globalIndex const > const &inputMatrix, arrayView1d< real64 > const &inputRhs, real64 const inputDt) | |
Constructor. More... | |
GEOS_HOST_DEVICE void | setup (localIndex const k, StackVariables &stack) const |
Performs the setup phase for the kernel. More... | |
Public Member Functions inherited from geos::finiteElement::KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP > | |
KernelBase (SUBREGION_TYPE const &elementSubRegion, FE_TYPE const &finiteElementSpace, CONSTITUTIVE_TYPE &inputConstitutiveType) | |
Constructor. More... | |
GEOS_HOST_DEVICE void | setup (localIndex const k, StackVariables &stack) const |
Performs the setup phase for the kernel. More... | |
GEOS_HOST_DEVICE GEOS_FORCE_INLINE void | quadraturePointKernel (localIndex const k, localIndex const q, StackVariables &stack) const |
Performs a state update at a quadrature point. More... | |
GEOS_HOST_DEVICE real64 | complete (localIndex const k, StackVariables &stack) const |
Performs the complete phase for the kernel. More... | |
Public Attributes | |
const traits::ViewTypeConst< typename SUBREGION_TYPE::NodeMapType::base_type > | m_elemsToNodes |
The element to nodes map. | |
const FE_TYPE & | m_finiteElementSpace |
Static Public Attributes | |
static constexpr int | maxNumTestSupportPointsPerElem |
static constexpr int | maxNumTrialSupportPointsPerElem |
static constexpr int | numDofPerTestSupportPoint |
static constexpr int | numDofPerTrialSupportPoint |
Static Public Attributes inherited from geos::finiteElement::KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP > | |
static constexpr int | maxNumTestSupportPointsPerElem = FE_TYPE::maxSupportPoints |
static constexpr int | maxNumTrialSupportPointsPerElem = FE_TYPE::maxSupportPoints |
static constexpr int | numDofPerTestSupportPoint = NUM_DOF_PER_TEST_SP |
static constexpr int | numDofPerTrialSupportPoint = NUM_DOF_PER_TRIAL_SP |
static constexpr int | numQuadraturePointsPerElem = FE_TYPE::numQuadraturePoints |
Compile time value for the number of quadrature points per element. | |
Protected Attributes | |
const arrayView1d< globalIndex const > | m_dofNumber |
The global degree of freedom number. | |
const globalIndex | m_dofRankOffset |
The global rank offset. | |
const CRSMatrixView< real64, globalIndex const > | m_matrix |
The global Jacobian matrix. | |
const arrayView1d< real64 > | m_rhs |
The global residaul vector. | |
FE_TYPE::template MeshData< SUBREGION_TYPE > | m_meshData |
Data structure containing mesh data used to setup the finite element. | |
const real64 | m_dt |
time increment | |
Protected Attributes inherited from geos::finiteElement::KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP > | |
const traits::ViewTypeConst< typename SUBREGION_TYPE::NodeMapType::base_type > | m_elemsToNodes |
The element to nodes map. | |
const arrayView1d< integer const > | m_elemGhostRank |
The element ghost rank array. | |
const CONSTITUTIVE_TYPE::KernelWrapper | m_constitutiveUpdate |
const FE_TYPE & | m_finiteElementSpace |
Additional Inherited Members | |
Static Public Member Functions inherited from geos::finiteElement::KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP > | |
template<typename POLICY , typename KERNEL_TYPE > | |
static real64 | kernelLaunch (localIndex const numElems, KERNEL_TYPE const &kernelComponent) |
Kernel Launcher. More... | |
Define the base interface for implicit finite element kernels.
Define the base interface for finite element kernels.
SUBREGION_TYPE | The type of subregion that the kernel will act on. |
CONSTITUTIVE_TYPE | The type of constitutive model present in the subregion. |
NUM_TEST_SUPPORT_POINTS_PER_ELEM | The number of test space support points per element. |
NUM_TRIAL_SUPPORT_POINTS_PER_ELEM | The number of trial space support points per element. |
NUM_DOF_PER_TEST_SP | The number of DOF per test support point. |
NUM_DOF_PER_TRIAL_SP | The number of DOF per trial support point. |
KernelBase defines an interface for implementing finite element kernels that will be callable by the family of kernel launch functions. Specific physics kernels may or may not derive from KernelBase, but must follow the same interface in order to be callable from the generic launching functions.
The template parameters of KernelBase should be duplicated as part of the interface, EXCEPT for NUM_DOF_PER_TEST_SP
and NUM_DOF_PER_TRIAL_SP
. These values should be set internally by the physics solver since each physics discretization will have a constant intrinsic value for these quantities. For example, when solving or the heat equation with scalar temperature as the primary variable at the support point, these will have a value of 1. In contrast, when solving a solid mechanics problem, with vector displacement as the primary variable at the support point, these will have a value of 3. Note that the interface provided by geos::finiteElement::RegionBasedKernelApplication will construct a kernel assuming only the first 4 template arguments.
Provides a common base for kernels that require the assembly of a system of equations. The types required to assemble the system, such as DOF information, the Matrix and Vector object, etc., are declared and set here.
Definition at line 50 of file ImplicitKernelBase.hpp.
|
inline |
Constructor.
nodeManager | Reference to the NodeManager object. |
edgeManager | Reference to the EdgeManager object. |
faceManager | Reference to the FaceManager object. |
targetRegionIndex | Index of the region the subregion belongs to. |
inputDofNumber | The dof number for the primary field. |
rankOffset | dof index offset of current rank |
inputMatrix | Reference to the Jacobian matrix. |
inputRhs | Reference to the RHS vector. |
inputDt | The timestep for the physics update. |
Constructor.
elementSubRegion | Reference to the SUBREGION_TYPE(class template parameter) object. |
inputConstitutiveType | The constitutive object. |
finiteElementSpace | Placeholder for the finite element space object, which currently doesn't do much. |
Definition at line 85 of file ImplicitKernelBase.hpp.
|
inline |
Performs the setup phase for the kernel.
STACK_VARIABLE_TYPE | The type of StackVariable that holds the stack variables. This is most likely a defined in a type that derives from KernelBase. |
k | The element index. |
stack | The StackVariable object that hold the stack variables. |
The operations typically found in setup are thing such as the collection of global data into local stack storage.
In this implementation, the element local Row and Column DOF stack arrays are filled for when we fill the global matrix and rhs.
Definition at line 182 of file ImplicitKernelBase.hpp.
const FE_TYPE& geos::finiteElement::KernelBase< SUBREGION_TYPE, CONSTITUTIVE_TYPE, FE_TYPE, NUM_DOF_PER_TEST_SP, NUM_DOF_PER_TRIAL_SP >::m_finiteElementSpace |
The finite element space/discretization object for the element type in the SUBREGION_TYPE.
Definition at line 267 of file KernelBase.hpp.
|
staticconstexpr |
Compile time value for the number of test function support points per element.
Definition at line 90 of file KernelBase.hpp.
|
staticconstexpr |
Compile time value for the number of trial function support points per element.
Definition at line 94 of file KernelBase.hpp.
|
staticconstexpr |
Compile time value for the number of degrees of freedom per test function support point.
Definition at line 98 of file KernelBase.hpp.
|
staticconstexpr |
Compile time value for the number of degrees of freedom per trial function support point.
Definition at line 102 of file KernelBase.hpp.