20 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSKERNELS_MULTIPHASEPOROMECHANICS_IMPL_HPP_
21 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_POROMECHANICSKERNELS_MULTIPHASEPOROMECHANICS_IMPL_HPP_
23 #include "constitutive/fluid/multifluid/MultiFluidBase.hpp"
24 #include "finiteElement/BilinearFormUtilities.hpp"
25 #include "finiteElement/LinearFormUtilities.hpp"
33 namespace poromechanicsKernels
36 template<
typename SUBREGION_TYPE,
37 typename CONSTITUTIVE_TYPE,
44 SUBREGION_TYPE
const & elementSubRegion,
45 FE_TYPE
const & finiteElementSpace,
46 CONSTITUTIVE_TYPE & inputConstitutiveType,
52 real64 const (&gravityVector)[3],
53 string const inputFlowDofKey,
56 integer const useSimpleAccumulation,
57 integer const useTotalMassEquation,
58 integer const performStressInitialization,
59 string const fluidModelKey ):
66 inputConstitutiveType,
75 m_fluidPhaseVolFrac( elementSubRegion.template getField< fields::flow::phaseVolumeFraction >() ),
76 m_fluidPhaseVolFrac_n( elementSubRegion.template getField< fields::flow::phaseVolumeFraction_n >() ),
77 m_dFluidPhaseVolFrac( elementSubRegion.template getField< fields::flow::dPhaseVolumeFraction >() ),
78 m_dGlobalCompFraction_dGlobalCompDensity( elementSubRegion.template getField< fields::flow::dGlobalCompFraction_dGlobalCompDensity >() ),
79 m_compDens( elementSubRegion.template getField< fields::flow::globalCompDensity >() ),
80 m_compDens_n( elementSubRegion.template getField< fields::flow::globalCompDensity_n >() ),
81 m_numComponents( numComponents ),
82 m_numPhases( numPhases ),
83 m_useSimpleAccumulation( useSimpleAccumulation ),
84 m_useTotalMassEquation( useTotalMassEquation ),
85 m_performStressInitialization( performStressInitialization )
88 "MultiphasePoromechanics solver allows at most " <<
89 maxNumComponents <<
" components at the moment" );
93 string const fluidModelName = elementSubRegion.template getReference< string >( fluidModelKey );
94 constitutive::MultiFluidBase
const & fluid =
95 elementSubRegion.template getConstitutiveModel< constitutive::MultiFluidBase >( fluidModelName );
98 m_fluidPhaseDensity_n = fluid.phaseDensity_n();
99 m_dFluidPhaseDensity = fluid.dPhaseDensity();
102 m_fluidPhaseCompFrac_n = fluid.phaseCompFraction_n();
103 m_dFluidPhaseCompFrac = fluid.dPhaseCompFraction();
106 m_dFluidPhaseMassDensity = fluid.dPhaseMassDensity();
108 m_useMass = fluid.getMassFlag();
109 m_componentMolarWeight = fluid.componentMolarWeights();
121 template<
typename SUBREGION_TYPE,
122 typename CONSTITUTIVE_TYPE,
131 Base::setup( k, stack );
136 for(
integer flowDofIndex=0; flowDofIndex < m_numComponents; ++flowDofIndex )
142 template<
typename SUBREGION_TYPE,
143 typename CONSTITUTIVE_TYPE,
154 real64 dPorosity_dVolStrain = 0.0;
155 real64 dPorosity_dPressure = 0.0;
156 real64 dPorosity_dTemperature = 0.0;
157 real64 dSolidDensity_dPressure = 0.0;
160 m_constitutiveUpdate.smallStrainUpdatePoromechanics( k, q,
171 m_performStressInitialization,
174 dPorosity_dVolStrain,
176 dPorosity_dTemperature,
177 dSolidDensity_dPressure );
180 computeBodyForce( k, q,
182 dPorosity_dVolStrain,
184 dPorosity_dTemperature,
185 dSolidDensity_dPressure,
189 computeFluidIncrement( k, q,
192 dPorosity_dVolStrain,
194 dPorosity_dTemperature,
198 computePoreVolumeConstraint( k,
203 template<
typename SUBREGION_TYPE,
204 typename CONSTITUTIVE_TYPE,
206 template<
typename FUNC >
213 real64 const & dPorosity_dVolStrain,
214 real64 const & dPorosity_dPressure,
215 real64 const & dPorosity_dTemperature,
216 real64 const & dSolidDensity_dPressure,
217 StackVariables & stack,
218 FUNC && bodyForceKernelOp )
const
224 real64 totalMassDensity = 0.0;
225 real64 dTotalMassDensity_dComponents[maxNumComponents]{};
228 for(
integer ic = 0; ic < m_numComponents; ++ic )
230 totalMassDensity = totalMassDensity + ( m_useMass ? compDens[ic] : compDens[ic] * m_componentMolarWeight[ic] );
231 dTotalMassDensity_dComponents[ic] = m_useMass ? 1.0 : m_componentMolarWeight[ic];
236 real64 const mixtureDensity = ( 1.0 - porosity ) * m_solidDensity( k, q ) + porosity * totalMassDensity;
237 real64 const dMixtureDens_dVolStrainIncrement = dPorosity_dVolStrain * ( -m_solidDensity( k, q ) + totalMassDensity );
238 real64 const dMixtureDens_dPressure = dPorosity_dPressure * ( -m_solidDensity( k, q ) + totalMassDensity )
239 + ( 1.0 - porosity ) * dSolidDensity_dPressure;
240 LvArray::tensorOps::scale< maxNumComponents >( dTotalMassDensity_dComponents, porosity );
244 LvArray::tensorOps::scaledCopy< 3 >( stack.bodyForce, m_gravityVector, mixtureDensity );
245 LvArray::tensorOps::scaledCopy< 3 >( stack.dBodyForce_dVolStrainIncrement, m_gravityVector, dMixtureDens_dVolStrainIncrement );
246 LvArray::tensorOps::scaledCopy< 3 >( stack.dBodyForce_dPressure, m_gravityVector, dMixtureDens_dPressure );
247 LvArray::tensorOps::Rij_eq_AiBj< 3, maxNumComponents >( stack.dBodyForce_dComponents, m_gravityVector, dTotalMassDensity_dComponents );
250 bodyForceKernelOp( totalMassDensity, mixtureDensity );
254 template<
typename SUBREGION_TYPE,
255 typename CONSTITUTIVE_TYPE,
257 template<
typename FUNC >
264 real64 const & porosity_n,
265 real64 const & dPorosity_dVolStrain,
266 real64 const & dPorosity_dPressure,
267 real64 const & dPorosity_dTemperature,
268 StackVariables & stack,
269 FUNC && fluidIncrementKernelOp )
const
271 LvArray::tensorOps::fill< maxNumComponents >( stack.compMassIncrement, 0.0 );
272 LvArray::tensorOps::fill< maxNumComponents >( stack.dCompMassIncrement_dVolStrainIncrement, 0.0 );
273 LvArray::tensorOps::fill< maxNumComponents >( stack.dCompMassIncrement_dPressure, 0.0 );
274 LvArray::tensorOps::fill< maxNumComponents, maxNumComponents >( stack.dCompMassIncrement_dComponents, 0.0 );
276 if( m_useSimpleAccumulation )
279 const compDens = m_compDens[k];
281 const compDens_n = m_compDens_n[k];
283 for(
integer ic = 0; ic < m_numComponents; ++ic )
285 stack.compMassIncrement[ic] += porosity * compDens[ic] - porosity_n * compDens_n[ic];
286 stack.dCompMassIncrement_dPressure[ic] += dPorosity_dPressure * compDens[ic];
287 stack.dCompMassIncrement_dVolStrainIncrement[ic] += dPorosity_dVolStrain * compDens[ic];
288 stack.dCompMassIncrement_dComponents[ic][ic] += porosity;
293 using Deriv = constitutive::multifluid::DerivativeOffset;
298 real64 dPhaseAmount_dC[maxNumComponents]{};
299 real64 dPhaseCompFrac_dC[maxNumComponents]{};
302 const phaseDensity = m_fluidPhaseDensity[k][q];
304 const phaseDensity_n = m_fluidPhaseDensity_n[k][q];
306 const dPhaseDensity = m_dFluidPhaseDensity[k][q];
308 const phaseCompFrac = m_fluidPhaseCompFrac[k][q];
310 const phaseCompFrac_n = m_fluidPhaseCompFrac_n[k][q];
312 const dPhaseCompFrac = m_dFluidPhaseCompFrac[k][q];
314 const phaseVolFrac = m_fluidPhaseVolFrac[k];
316 const phaseVolFrac_n = m_fluidPhaseVolFrac_n[k];
318 const dPhaseVolFrac = m_dFluidPhaseVolFrac[k];
320 const dGlobalCompFrac_dGlobalCompDensity = m_dGlobalCompFraction_dGlobalCompDensity[k];
323 for(
integer ip = 0; ip < m_numPhases; ++ip )
327 real64 const phaseAmount = porosity * phaseVolFrac( ip ) * phaseDensity( ip );
328 real64 const phaseAmount_n = porosity_n * phaseVolFrac_n( ip ) * phaseDensity_n( ip );
330 real64 const dPhaseAmount_dVolStrain = dPorosity_dVolStrain * phaseVolFrac( ip ) * phaseDensity( ip );
331 real64 const dPhaseAmount_dP = dPorosity_dPressure * phaseVolFrac( ip ) * phaseDensity( ip )
332 + porosity * ( dPhaseVolFrac( ip, Deriv::dP ) * phaseDensity( ip )
333 + phaseVolFrac( ip ) * dPhaseDensity( ip, Deriv::dP ) );
335 applyChainRule( m_numComponents,
336 dGlobalCompFrac_dGlobalCompDensity,
341 for(
integer jc = 0; jc < m_numComponents; ++jc )
343 dPhaseAmount_dC[jc] = dPhaseAmount_dC[jc] * phaseVolFrac( ip )
344 + phaseDensity( ip ) * dPhaseVolFrac( ip, Deriv::dC + jc );
345 dPhaseAmount_dC[jc] *= porosity;
349 for(
integer ic = 0; ic < m_numComponents; ++ic )
351 stack.compMassIncrement[ic] += phaseAmount * phaseCompFrac( ip, ic )
352 - phaseAmount_n * phaseCompFrac_n( ip, ic );
354 stack.dCompMassIncrement_dPressure[ic] += dPhaseAmount_dP * phaseCompFrac( ip, ic )
355 + phaseAmount * dPhaseCompFrac( ip, ic, Deriv::dP );
356 stack.dCompMassIncrement_dVolStrainIncrement[ic] += dPhaseAmount_dVolStrain * phaseCompFrac( ip, ic );
358 applyChainRule( m_numComponents,
359 dGlobalCompFrac_dGlobalCompDensity,
360 dPhaseCompFrac[ip][ic],
364 for(
integer jc = 0; jc < m_numComponents; ++jc )
366 stack.dCompMassIncrement_dComponents[ic][jc] += dPhaseAmount_dC[jc] * phaseCompFrac( ip, ic )
367 + phaseAmount * dPhaseCompFrac_dC[jc];
373 fluidIncrementKernelOp( ip, phaseAmount, phaseAmount_n, dPhaseAmount_dVolStrain, dPhaseAmount_dP, dPhaseAmount_dC );
379 template<
typename SUBREGION_TYPE,
380 typename CONSTITUTIVE_TYPE,
386 real64 const & porosity_n,
389 using Deriv = constitutive::multifluid::DerivativeOffset;
391 arraySlice1d<
real64 const, compflow::USD_PHASE - 1 >
const phaseVolFrac = m_fluidPhaseVolFrac[k];
392 arraySlice2d<
real64 const, compflow::USD_PHASE_DC - 1 >
const dPhaseVolFrac = m_dFluidPhaseVolFrac[k];
398 for(
integer ip = 0; ip < m_numPhases; ++ip )
403 for(
integer jc = 0; jc < m_numComponents; ++jc )
411 template<
typename SUBREGION_TYPE,
412 typename CONSTITUTIVE_TYPE,
418 real64 const ( &dNdX )[numNodesPerElem][3],
422 using namespace PDEUtilities;
424 constexpr FunctionSpace displacementTrialSpace = FE_TYPE::template getFunctionSpace< numDofPerTrialSupportPoint >();
425 constexpr FunctionSpace displacementTestSpace = displacementTrialSpace;
426 constexpr FunctionSpace pressureTrialSpace = FunctionSpace::P0;
430 LinearFormUtilities::compute< displacementTestSpace,
431 DifferentialOperator::SymmetricGradient >
438 LinearFormUtilities::compute< displacementTestSpace,
439 DifferentialOperator::Identity >
447 BilinearFormUtilities::compute< displacementTestSpace,
448 displacementTrialSpace,
449 DifferentialOperator::SymmetricGradient,
450 DifferentialOperator::SymmetricGradient >
458 BilinearFormUtilities::compute< displacementTestSpace,
459 displacementTrialSpace,
460 DifferentialOperator::Identity,
461 DifferentialOperator::Divergence >
470 BilinearFormUtilities::compute< displacementTestSpace,
472 DifferentialOperator::SymmetricGradient,
473 DifferentialOperator::Identity >
481 BilinearFormUtilities::compute< displacementTestSpace,
483 DifferentialOperator::Identity,
484 DifferentialOperator::Identity >
493 BilinearFormUtilities::compute< displacementTestSpace,
495 DifferentialOperator::Identity,
496 DifferentialOperator::Identity >
505 template<
typename SUBREGION_TYPE,
506 typename CONSTITUTIVE_TYPE,
515 using namespace PDEUtilities;
517 constexpr FunctionSpace displacementTrialSpace = FE_TYPE::template getFunctionSpace< numDofPerTrialSupportPoint >();
518 constexpr FunctionSpace displacementTestSpace = displacementTrialSpace;
523 LinearFormUtilities::compute< FunctionSpace::P0,
524 DifferentialOperator::Identity >
532 BilinearFormUtilities::compute< FunctionSpace::P0,
533 displacementTestSpace,
534 DifferentialOperator::Identity,
535 DifferentialOperator::Divergence >
544 BilinearFormUtilities::compute< FunctionSpace::P0,
546 DifferentialOperator::Identity,
547 DifferentialOperator::Identity >
556 BilinearFormUtilities::compute< FunctionSpace::P0,
558 DifferentialOperator::Identity,
559 DifferentialOperator::Identity >
571 LinearFormUtilities::compute< FunctionSpace::P0,
572 DifferentialOperator::Identity >
580 BilinearFormUtilities::compute< FunctionSpace::P0,
582 DifferentialOperator::Identity,
583 DifferentialOperator::Identity >
592 BilinearFormUtilities::compute< FunctionSpace::P0,
594 DifferentialOperator::Identity,
595 DifferentialOperator::Identity >
605 template<
typename SUBREGION_TYPE,
606 typename CONSTITUTIVE_TYPE,
613 StackVariables & stack )
const
617 real64 N[numNodesPerElem]{};
618 real64 dNdX[numNodesPerElem][3]{};
619 FE_TYPE::calcN( q, stack.feStack, N );
620 real64 const detJxW = m_finiteElementSpace.template getGradN< FE_TYPE >( k, q, stack.xLocal,
621 stack.feStack, dNdX );
624 LvArray::tensorOps::fill< 6 >( stack.strainIncrement, 0.0 );
625 FE_TYPE::symmetricGradient( dNdX, stack.uhat_local, stack.strainIncrement );
630 smallStrainUpdate( k, q, stack );
634 assembleMomentumBalanceTerms( N, dNdX, detJxW, stack );
638 assembleElementBasedFlowTerms( dNdX, detJxW, stack );
644 template<
typename SUBREGION_TYPE,
645 typename CONSTITUTIVE_TYPE,
653 using namespace compositionalMultiphaseUtilities;
659 m_finiteElementSpace.template numSupportPoints< FE_TYPE >( stack.feStack );
660 integer numDisplacementDofs = numSupportPoints * numDofPerTestSupportPoint;
661 constexpr
integer maxNumDisplacementDofs = FE_TYPE::maxSupportPoints * numDofPerTestSupportPoint;
663 if( m_useTotalMassEquation > 0 )
666 real64 work[maxNumDisplacementDofs > ( maxNumComponents + 1 ) ? maxNumDisplacementDofs : maxNumComponents + 1];
670 shiftElementsAheadByOneAndReplaceFirstElementWithSum( m_numComponents, stack.
localResidualMass );
673 for(
int localNode = 0; localNode < numSupportPoints; ++localNode )
675 for(
int dim = 0; dim < numDofPerTestSupportPoint; ++dim )
677 localIndex const dof = LvArray::integerConversion< localIndex >( stack.localRowDofIndex[numDofPerTestSupportPoint * localNode + dim] - m_dofRankOffset );
680 if( dof < 0 || dof >= m_matrix.numRows() )
684 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
685 stack.localRowDofIndex,
687 numDisplacementDofs );
689 RAJA::atomicAdd< parallelDeviceAtomic >( &m_rhs[dof], stack.
localResidualMomentum[numDofPerTestSupportPoint * localNode + dim] );
690 maxForce = fmax( maxForce, fabs( stack.
localResidualMomentum[numDofPerTestSupportPoint * localNode + dim] ) );
692 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
697 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
707 if( 0 <= dof && dof < m_matrix.numRows() )
709 for(
localIndex i = 0; i < m_numComponents; ++i )
711 m_matrix.template addToRowBinarySearchUnsorted< serialAtomic >( dof + i,
712 stack.localRowDofIndex,
714 numDisplacementDofs );
715 m_matrix.template addToRow< serialAtomic >( dof + i,
719 m_matrix.template addToRow< serialAtomic >( dof + i,
726 m_matrix.template addToRow< serialAtomic >( dof + m_numComponents,
731 m_matrix.template addToRow< serialAtomic >( dof + m_numComponents,
741 template<
typename SUBREGION_TYPE,
742 typename CONSTITUTIVE_TYPE,
744 template<
typename POLICY,
745 typename KERNEL_TYPE >
748 KERNEL_TYPE
const & kernelComponent )
753 RAJA::ReduceMax< ReducePolicy< POLICY >,
real64 > maxResidual( 0 );
755 forAll< POLICY >( numElems,
758 typename KERNEL_TYPE::StackVariables stack;
760 kernelComponent.setup( k, stack );
761 for(
integer q=0; q<KERNEL_TYPE::numQuadraturePointsPerElem; ++q )
763 kernelComponent.quadraturePointKernel( k, q, stack );
765 maxResidual.max( kernelComponent.complete( k, stack ) );
767 return maxResidual.get();
#define GEOS_HOST_DEVICE
Marks a host-device function.
#define GEOS_UNUSED_VAR(...)
Mark an unused variable and silence compiler warnings.
#define GEOS_FORCE_INLINE
Marks a function or lambda for inlining.
#define GEOS_ERROR_IF_GT_MSG(lhs, rhs, msg)
Raise a hard error if one value compares greater than the other.
#define GEOS_MARK_FUNCTION
Mark function with both Caliper and NVTX if enabled.
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.
Implements kernels for solving quasi-static multiphase poromechanics.
arrayView4d< real64 const, constitutive::multifluid::USD_PHASE_COMP > m_fluidPhaseCompFrac
Views on phase component fractions and derivatives.
GEOS_HOST_DEVICE void assembleElementBasedFlowTerms(real64 const (&dNdX)[numNodesPerElem][3], real64 const &detJxW, StackVariables &stack) const
Assemble the local mass balance residual and derivatives using fluid mass/energy increment.
localIndex const m_numComponents
Number of components.
arrayView3d< real64 const, constitutive::multifluid::USD_PHASE > m_fluidPhaseDensity
Views on phase densities and derivatives.
GEOS_HOST_DEVICE void computePoreVolumeConstraint(localIndex const k, real64 const &porosity_n, StackVariables &stack) const
Helper function to compute the pore-volume constraint and its derivatives wrt primary variables.
GEOS_HOST_DEVICE void computeBodyForce(localIndex const k, localIndex const q, real64 const &porosity, real64 const &dPorosity_dVolStrain, real64 const &dPorosity_dPressure, real64 const &dPorosity_dTemperature, real64 const &dSolidDensity_dPressure, StackVariables &stack, FUNC &&bodyForceKernelOp=NoOpFunc{}) const
Helper function to compute the body force term (\rho g) and its derivatives wrt primary variables.
arrayView3d< real64 const, constitutive::multifluid::USD_PHASE > m_fluidPhaseMassDensity
Views on phase mass densities.
static real64 kernelLaunch(localIndex const numElems, KERNEL_TYPE const &kernelComponent)
Kernel Launcher.
GEOS_HOST_DEVICE void smallStrainUpdate(localIndex const k, localIndex const q, StackVariables &stack) const
Helper function to compute 1) the total stress, 2) the body force term, and 3) the fluidMassIncrement...
GEOS_HOST_DEVICE void setup(localIndex const k, StackVariables &stack) const
Copy global values from primary field to a local stack array.
MultiphasePoromechanics(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 inputDispDofNumber, globalIndex const rankOffset, CRSMatrixView< real64, globalIndex const > const inputMatrix, arrayView1d< real64 > const inputRhs, real64 const inputDt, real64 const (&gravityVector)[3], string const inputFlowDofKey, localIndex const numComponents, localIndex const numPhases, integer const useSimpleAccumulation, integer const useTotalMassEquation, integer const performStressInitialization, string const fluidModelKey)
Constructor.
GEOS_HOST_DEVICE void assembleMomentumBalanceTerms(real64 const (&N)[numNodesPerElem], real64 const (&dNdX)[numNodesPerElem][3], real64 const &detJxW, StackVariables &stack) const
Assemble the local linear momentum balance residual and derivatives using total stress and body force...
GEOS_HOST_DEVICE real64 complete(localIndex const k, StackVariables &stack) const
Performs the complete phase for the kernel.
GEOS_HOST_DEVICE void computeFluidIncrement(localIndex const k, localIndex const q, real64 const &porosity, real64 const &porosity_n, real64 const &dPorosity_dVolStrain, real64 const &dPorosity_dPressure, real64 const &dPorosity_dTemperature, StackVariables &stack, FUNC &&fluidIncrementKernelOp=NoOpFunc{}) const
Helper function to compute the fluid mass increment and its derivatives wrt primary variables.
Defines the kernel structure for solving quasi-static poromechanics.
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).
ArraySlice< T, 2, USD > arraySlice2d
Alias for 2D array slice.
ArraySlice< T, 3, USD > arraySlice3d
Alias for 3D array slice.
double real64
64-bit floating point type.
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).
ArraySlice< T, 1, USD > arraySlice1d
Alias for 1D array slice.
std::int32_t integer
Signed integer type.
Kernel variables allocated on the stack.
real64 dBodyForce_dComponents[3][maxNumComponents]
Derivative of body force wrt comp density.
real64 dLocalResidualMass_dPressure[maxNumComponents][1]
Derivative of mass balance residual wrt pressure.
real64 dCompMassIncrement_dVolStrainIncrement[maxNumComponents]
Derivative of mass accumulation wrt volumetric strain increment.
real64 dCompMassIncrement_dPressure[maxNumComponents]
Derivative of mass accumulation wrt pressure.
real64 dPoreVolConstraint_dComponents[1][maxNumComponents]
Derivative of pore volume constraint wrt comp density.
real64 dLocalResidualMass_dDisplacement[maxNumComponents][Base::StackVariables::numDispDofPerElem]
Derivative of mass balance residual wrt volumetric strain increment.
real64 compMassIncrement[maxNumComponents]
Mass accumulation.
real64 dCompMassIncrement_dComponents[maxNumComponents][maxNumComponents]
Derivative of mass accumulation wrt comp density.
real64 dLocalResidualPoreVolConstraint_dPressure[1][1]
Derivative of pore volume constraint residual wrt pressure.
globalIndex localComponentDofIndices[maxNumComponents]
C-array storage for the element local row degrees of freedom.
real64 dLocalResidualMomentum_dComponents[Base::StackVariables::numDispDofPerElem][maxNumComponents]
Derivative of momemtum balance residual wrt comp density.
real64 localResidualPoreVolConstraint[1]
Pore volume constraint residual (sum of saturations = 1)
real64 dLocalResidualPoreVolConstraint_dComponents[1][maxNumComponents]
Derivative of pore volume constraint residual wrt components.
real64 dPoreVolConstraint_dPressure
Derivative of pore volume constraint wrt pressure.
real64 poreVolConstraint
Pore volume constraint.
real64 dLocalResidualMass_dComponents[maxNumComponents][maxNumComponents]
Derivative of mass balance residual wrt components.
real64 localResidualMass[maxNumComponents]
Mass balance residual.
real64(& dLocalResidualMomentum_dDisplacement)[numDispDofPerElem][numDispDofPerElem]
Derivative of linear momentum balance residual wrt displacement.
globalIndex localPressureDofIndex
C-array storage for the element local row degrees of freedom.
real64 dBodyForce_dPressure[3]
Derivative of body force wrt pressure.
real64 bodyForce[3]
Body force.
real64 dTotalStress_dTemperature[6]
Derivative of total stress wrt temperature.
CONSTITUTIVE_TYPE::KernelWrapper::DiscretizationOps stiffness
Derivative of total stress wrt displacement.
real64 strainIncrement[6]
Strain increment.
real64 temperature
Temperature.
real64 dLocalResidualMomentum_dPressure[numDispDofPerElem][1]
Derivative of linear momentum balance residual wrt pressure.
real64 dTotalStress_dPressure[6]
Derivative of total stress wrt pressure.
real64 dBodyForce_dVolStrainIncrement[3]
Derivative of body force wrt volumetric strain increment.
real64(& localResidualMomentum)[numDispDofPerElem]
Linear momentum balance residual.
real64 deltaTemperatureFromLastStep
Delta temperature since last time step.
real64 totalStress[6]
Total stress.