GEOS
ImplicitSmallStrainNewmark.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 Total, S.A
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
20 #ifndef GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
21 #define GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
22 
24 
25 
26 namespace geos
27 {
28 
29 namespace solidMechanicsLagrangianFEMKernels
30 {
31 
44 template< typename SUBREGION_TYPE,
45  typename CONSTITUTIVE_TYPE,
46  typename FE_TYPE >
48  CONSTITUTIVE_TYPE,
49  FE_TYPE >
50 {
51 public:
53  using Base = ImplicitSmallStrainQuasiStatic< SUBREGION_TYPE,
54  CONSTITUTIVE_TYPE,
55  FE_TYPE >;
56 
62 
63  using Base::m_dofNumber;
64  using Base::m_matrix;
65  using Base::m_rhs;
67  using Base::m_disp;
68  using Base::m_uhat;
69  using Base::m_density;
71  using Base::m_dt;
72 
73 #if !defined(CALCFEMSHAPE)
74  using Base::m_X;
75 #endif
77 
87  ImplicitSmallStrainNewmark( NodeManager const & nodeManager,
88  EdgeManager const & edgeManager,
89  FaceManager const & faceManager,
90  localIndex const targetRegionIndex,
91  SUBREGION_TYPE const & elementSubRegion,
92  FE_TYPE const & finiteElementSpace,
93  CONSTITUTIVE_TYPE & inputConstitutiveType,
94  arrayView1d< globalIndex const > const & inputDofNumber,
95  globalIndex const rankOffset,
97  arrayView1d< real64 > const inputRhs,
98  real64 const inputDt,
99  real64 const (&inputGravityVector)[3],
100  real64 const inputNewmarkGamma,
101  real64 const inputNewmarkBeta,
102  real64 const inputMassDamping,
103  real64 const inputStiffnessDamping );
104 
105  //***************************************************************************
114  {
115 public:
116  using Base::StackVariables::maxNumRows;
117  using Base::StackVariables::maxNumCols;
118 
122  Base::StackVariables(),
123  dRdU_InertiaMassDamping{ {0.0} },
124  vtilde_local(),
125  uhattilde_local()
126  {}
127 
129  real64 dRdU_InertiaMassDamping[ maxNumRows ][ maxNumCols ];
130 
133 
136  };
137  //***************************************************************************
138 
148  void setup( localIndex const k,
149  StackVariables & stack ) const;
150 
158  void quadraturePointKernel( localIndex const k,
159  localIndex const q,
160  StackVariables & stack ) const;
161 
169  real64 complete( localIndex const k,
170  StackVariables & stack ) const;
171 
175  template< typename POLICY,
176  typename KERNEL_TYPE >
177  static real64
178  kernelLaunch( localIndex const numElems,
179  KERNEL_TYPE const & kernelComponent );
180 
181 
182 
183 protected:
186 
189 
192 
195 
198 
201 
202 
203 };
204 
208  globalIndex,
210  arrayView1d< real64 > const,
211  real64 const,
212  real64 const (&)[3],
213  real64,
214  real64,
215  real64,
216  real64 >;
217 
218 } // namespace solidMechanicsLagrangianFEMKernels
219 
220 } // namespace geos
221 
223 
224 #endif //GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
#define GEOS_HOST_DEVICE
Marks a host-device function.
Definition: GeosxMacros.hpp:49
This class provides an interface to ObjectManagerBase in order to manage edge data.
Definition: EdgeManager.hpp:43
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data.
Definition: FaceManager.hpp:44
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data.
Definition: NodeManager.hpp:46
traits::ViewTypeConst< typename SUBREGION_TYPE::NodeMapType::base_type > const m_elemsToNodes
The element to nodes map.
Definition: KernelBase.hpp:257
CRSMatrixView< real64, globalIndex const > const m_matrix
The global Jacobian matrix.
arrayView1d< globalIndex const > const m_dofNumber
The global degree of freedom number.
Used to forward arguments to a class that implements the KernelBase interface.
Definition: KernelBase.hpp:282
Implements kernels for solving the equations of motion using an implicit Newmark's method....
ImplicitSmallStrainNewmark(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, real64 const (&inputGravityVector)[3], real64 const inputNewmarkGamma, real64 const inputNewmarkBeta, real64 const inputMassDamping, real64 const inputStiffnessDamping)
Constructor.
real64 const m_newmarkGamma
The Gamma parameter for Newmark's method.
arrayView2d< real64 const, nodes::TOTAL_DISPLACEMENT_USD > const m_vtilde
The rank-global velocity predictor.
real64 const m_newmarkBeta
The Beta parameter for Newmark's method.
arrayView2d< real64 const, nodes::INCR_DISPLACEMENT_USD > const m_uhattilde
The rank-global incremental displacement predictor.
arrayView2d< real64 const, nodes::INCR_DISPLACEMENT_USD > const m_uhat
The rank-global incremental displacement array.
arrayView2d< real64 const, nodes::TOTAL_DISPLACEMENT_USD > const m_disp
The rank-global displacement array.
arrayView2d< real64 const, nodes::REFERENCE_POSITION_USD > const m_X
The array containing the nodal position array.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:180
LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
Definition: DataTypes.hpp:310
GEOS_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
Definition: DataTypes.hpp:88
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Definition: DataTypes.hpp:85
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:196
real64 dRdU_InertiaMassDamping[maxNumRows][maxNumCols]
Stack storage for the Inertial damping contributions to the Jacobian.