20 #ifndef GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSDISPLACEMENTJUPDATEKERNELS_HPP_
21 #define GEOS_PHYSICSSOLVERS_CONTACT_KERNELS_SOLIDMECHANICSDISPLACEMENTJUPDATEKERNELS_HPP_
23 #include "SolidMechanicsConformingContactKernelsBase.hpp"
29 namespace solidMechanicsConformingContactKernels
35 template<
typename CONSTITUTIVE_TYPE,
77 FE_TYPE
const & finiteElementSpace,
78 CONSTITUTIVE_TYPE & inputConstitutiveType,
92 inputConstitutiveType,
100 m_displacement( nodeManager.getField< fields::solidMechanics::totalDisplacement >()),
101 m_bubbleDisp( faceManager.getField< fields::solidMechanics::totalBubbleDisplacement >() ),
102 m_incrDisp( nodeManager.getField< fields::solidMechanics::incrementalDisplacement >() ),
103 m_incrBubbleDisp( faceManager.getField< fields::solidMechanics::incrementalBubbleDisplacement >() ),
104 m_deltaDispJump( elementSubRegion.getField< fields::contact::deltaDispJump >().toView() ),
105 m_elementArea( elementSubRegion.getField< fields::elementArea >().toView() ),
106 m_slip( elementSubRegion.getField< fields::contact::slip >().toView() )
121 Base::StackVariables(),
149 template<
typename POLICY,
150 typename KERNEL_TYPE >
154 KERNEL_TYPE
const & kernelComponent )
156 return Base::template kernelLaunch< POLICY, KERNEL_TYPE >( numElems, kernelComponent );
181 for(
int i=0; i<3; ++i )
191 for(
int j=0; j<3; ++j )
193 for(
int i=0; i<3; ++i )
199 for(
int i=0; i<3; ++i )
212 StackVariables & stack )
const
218 LvArray::tensorOps::Rij_eq_AkiBkj< 3, numUdofs, 3 >( matRtAtu, stack.localRotationMatrix,
221 LvArray::tensorOps::Rij_eq_AkiBkj< 3, numBdofs, 3 >( matRtAtb, stack.localRotationMatrix,
225 LvArray::tensorOps::Ri_eq_AijBj< 3, numUdofs >( stack.dispJumpLocal, matRtAtu, stack.uLocal );
226 LvArray::tensorOps::Ri_eq_AijBj< 3, numUdofs >( stack.deltaDispJumpLocal, matRtAtu, stack.duLocal );
229 LvArray::tensorOps::Ri_add_AijBj< 3, numBdofs >( stack.dispJumpLocal, matRtAtb, stack.bLocal );
230 LvArray::tensorOps::Ri_add_AijBj< 3, numBdofs >( stack.deltaDispJumpLocal, matRtAtb, stack.dbLocal );
233 real64 const scale = 1 / m_elementArea[k];
235 for(
int i=0; i<3; ++i )
237 m_dispJump[ k ][ i ] = scale * stack.dispJumpLocal[ i ];
241 m_slip[k] = LvArray::math::sqrt( LvArray::math::square(
m_dispJump( k, 1 ) ) + LvArray::math::square(
m_dispJump( k, 2 ) ) );
#define GEOS_HOST_DEVICE
Marks a host-device function.
This class provides an interface to ObjectManagerBase in order to manage edge data.
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data.
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data.
globalIndex const m_dofRankOffset
The global rank offset.
FE_TYPE const m_finiteElementSpace
arrayView1d< globalIndex const > const m_dofNumber
The global degree of freedom number.
static constexpr int maxNumTestSupportPointsPerElem
Used to forward arguments to a class that implements the InterfaceKernelBase interface.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
double real64
64-bit floating point type.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.