GEOSX
ImplicitSmallStrainNewmark.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2018-2020 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2020 The Board of Trustees of the Leland Stanford Junior University
7  * Copyright (c) 2018-2020 TotalEnergies
8  * Copyright (c) 2019- GEOSX Contributors
9  * All rights reserved
10  *
11  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
12  * ------------------------------------------------------------------------------------------------------------
13  */
14 
19 #ifndef GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
20 #define GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
21 
23 
24 
25 namespace geos
26 {
27 
28 namespace solidMechanicsLagrangianFEMKernels
29 {
30 
43 template< typename SUBREGION_TYPE,
44  typename CONSTITUTIVE_TYPE,
45  typename FE_TYPE >
47  CONSTITUTIVE_TYPE,
48  FE_TYPE >
49 {
50 public:
52  using Base = ImplicitSmallStrainQuasiStatic< SUBREGION_TYPE,
53  CONSTITUTIVE_TYPE,
54  FE_TYPE >;
55 
61 
62  using Base::m_dofNumber;
63  using Base::m_matrix;
64  using Base::m_rhs;
66  using Base::m_disp;
67  using Base::m_uhat;
68  using Base::m_density;
70  using Base::m_dt;
71 
72 #if !defined(CALCFEMSHAPE)
73  using Base::m_X;
74 #endif
76 
86  ImplicitSmallStrainNewmark( NodeManager const & nodeManager,
87  EdgeManager const & edgeManager,
88  FaceManager const & faceManager,
89  localIndex const targetRegionIndex,
90  SUBREGION_TYPE const & elementSubRegion,
91  FE_TYPE const & finiteElementSpace,
92  CONSTITUTIVE_TYPE & inputConstitutiveType,
93  arrayView1d< globalIndex const > const & inputDofNumber,
94  globalIndex const rankOffset,
96  arrayView1d< real64 > const inputRhs,
97  real64 const inputDt,
98  real64 const (&inputGravityVector)[3],
99  real64 const inputNewmarkGamma,
100  real64 const inputNewmarkBeta,
101  real64 const inputMassDamping,
102  real64 const inputStiffnessDamping );
103 
104  //***************************************************************************
113  {
114 public:
115  using Base::StackVariables::maxNumRows;
116  using Base::StackVariables::maxNumCols;
117 
121  Base::StackVariables(),
122  dRdU_InertiaMassDamping{ {0.0} },
123  vtilde_local(),
124  uhattilde_local()
125  {}
126 
128  real64 dRdU_InertiaMassDamping[ maxNumRows ][ maxNumCols ];
129 
132 
135  };
136  //***************************************************************************
137 
147  void setup( localIndex const k,
148  StackVariables & stack ) const;
149 
157  void quadraturePointKernel( localIndex const k,
158  localIndex const q,
159  StackVariables & stack ) const;
160 
168  real64 complete( localIndex const k,
169  StackVariables & stack ) const;
170 
174  template< typename POLICY,
175  typename KERNEL_TYPE >
176  static real64
177  kernelLaunch( localIndex const numElems,
178  KERNEL_TYPE const & kernelComponent );
179 
180 
181 
182 protected:
185 
188 
191 
194 
197 
200 
201 
202 };
203 
207  globalIndex,
209  arrayView1d< real64 > const,
210  real64 const,
211  real64 const (&)[3],
212  real64,
213  real64,
214  real64,
215  real64 >;
216 
217 } // namespace solidMechanicsLagrangianFEMKernels
218 
219 } // namespace geos
220 
222 
223 #endif //GEOS_PHYSICSSOLVERS_SOLIDMECHANICS_KERNELS_IMPLCITSMALLSTRAINNEWMARK_HPP_
#define GEOS_HOST_DEVICE
Marks a host-device function.
Definition: GeosxMacros.hpp:48
This class provides an interface to ObjectManagerBase in order to manage edge data.
Definition: EdgeManager.hpp:42
The FaceManager class provides an interface to ObjectManagerBase in order to manage face data.
Definition: FaceManager.hpp:43
The NodeManager class provides an interface to ObjectManagerBase in order to manage node data.
Definition: NodeManager.hpp:45
traits::ViewTypeConst< typename SUBREGION_TYPE::NodeMapType::base_type > const m_elemsToNodes
The element to nodes map.
Definition: KernelBase.hpp:256
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:281
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:220
LvArray::CRSMatrixView< T, COL_INDEX, localIndex const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
Definition: DataTypes.hpp:350
double real64
64-bit floating point type.
Definition: DataTypes.hpp:139
GEOSX_GLOBALINDEX_TYPE globalIndex
Global index type (for indexing objects across MPI partitions).
Definition: DataTypes.hpp:128
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.
Definition: DataTypes.hpp:236
GEOSX_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
Definition: DataTypes.hpp:125
real64 dRdU_InertiaMassDamping[maxNumRows][maxNumCols]
Stack storage for the Inertial damping contributions to the Jacobian.