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"
26 #include "finiteElement/elementFormulations/FiniteElementOperators.hpp"
34 namespace poromechanicsKernels
37 template<
typename SUBREGION_TYPE,
38 typename CONSTITUTIVE_TYPE,
45 SUBREGION_TYPE
const & elementSubRegion,
46 FE_TYPE
const & finiteElementSpace,
47 CONSTITUTIVE_TYPE & inputConstitutiveType,
53 real64 const (&gravityVector)[3],
54 string const inputFlowDofKey,
57 integer const useSimpleAccumulation,
58 integer const useTotalMassEquation,
59 integer const performStressInitialization,
60 string const fluidModelKey ):
67 inputConstitutiveType,
76 m_fluidPhaseVolFrac( elementSubRegion.template getField< fields::flow::phaseVolumeFraction >() ),
77 m_fluidPhaseVolFrac_n( elementSubRegion.template getField< fields::flow::phaseVolumeFraction_n >() ),
78 m_dFluidPhaseVolFrac( elementSubRegion.template getField< fields::flow::dPhaseVolumeFraction >() ),
79 m_dGlobalCompFraction_dGlobalCompDensity( elementSubRegion.template getField< fields::flow::dGlobalCompFraction_dGlobalCompDensity >() ),
80 m_compDens( elementSubRegion.template getField< fields::flow::globalCompDensity >() ),
81 m_compDens_n( elementSubRegion.template getField< fields::flow::globalCompDensity_n >() ),
82 m_numComponents( numComponents ),
83 m_numPhases( numPhases ),
84 m_useSimpleAccumulation( useSimpleAccumulation ),
85 m_useTotalMassEquation( useTotalMassEquation ),
86 m_performStressInitialization( performStressInitialization )
89 "MultiphasePoromechanics solver allows at most " <<
90 maxNumComponents <<
" components at the moment" );
94 string const & fluidModelName = elementSubRegion.template getReference< string >( fluidModelKey );
95 constitutive::MultiFluidBase
const & fluid =
96 elementSubRegion.template getConstitutiveModel< constitutive::MultiFluidBase >( fluidModelName );
99 m_fluidPhaseDensity_n = fluid.phaseDensity_n();
100 m_dFluidPhaseDensity = fluid.dPhaseDensity();
103 m_fluidPhaseCompFrac_n = fluid.phaseCompFraction_n();
104 m_dFluidPhaseCompFrac = fluid.dPhaseCompFraction();
107 m_dFluidPhaseMassDensity = fluid.dPhaseMassDensity();
109 m_useMass = fluid.getMassFlag();
110 m_componentMolarWeight = fluid.componentMolarWeights();
122 template<
typename SUBREGION_TYPE,
123 typename CONSTITUTIVE_TYPE,
132 Base::setup( k, stack );
137 for(
integer flowDofIndex=0; flowDofIndex < m_numComponents; ++flowDofIndex )
143 template<
typename SUBREGION_TYPE,
144 typename CONSTITUTIVE_TYPE,
155 real64 dPorosity_dVolStrain = 0.0;
156 real64 dPorosity_dPressure = 0.0;
157 real64 dPorosity_dTemperature = 0.0;
158 real64 dSolidDensity_dPressure = 0.0;
161 m_constitutiveUpdate.smallStrainUpdatePoromechanics( k, q,
172 m_performStressInitialization,
175 dPorosity_dVolStrain,
177 dPorosity_dTemperature,
178 dSolidDensity_dPressure );
181 computeBodyForce( k, q,
183 dPorosity_dVolStrain,
185 dPorosity_dTemperature,
186 dSolidDensity_dPressure,
190 computeFluidIncrement( k, q,
193 dPorosity_dVolStrain,
195 dPorosity_dTemperature,
199 computePoreVolumeConstraint( k,
204 template<
typename SUBREGION_TYPE,
205 typename CONSTITUTIVE_TYPE,
207 template<
typename FUNC >
214 real64 const & dPorosity_dVolStrain,
215 real64 const & dPorosity_dPressure,
216 real64 const & dPorosity_dTemperature,
217 real64 const & dSolidDensity_dPressure,
219 FUNC && bodyForceKernelOp )
const
225 real64 totalMassDensity = 0.0;
226 real64 dTotalMassDensity_dComponents[maxNumComponents]{};
229 for(
integer ic = 0; ic < m_numComponents; ++ic )
231 totalMassDensity = totalMassDensity + ( m_useMass ? compDens[ic] : compDens[ic] * m_componentMolarWeight[ic] );
232 dTotalMassDensity_dComponents[ic] = m_useMass ? 1.0 : m_componentMolarWeight[ic];
237 real64 const mixtureDensity = ( 1.0 - porosity ) * m_solidDensity( k, q ) + porosity * totalMassDensity;
238 real64 const dMixtureDens_dVolStrainIncrement = dPorosity_dVolStrain * ( -m_solidDensity( k, q ) + totalMassDensity );
239 real64 const dMixtureDens_dPressure = dPorosity_dPressure * ( -m_solidDensity( k, q ) + totalMassDensity )
240 + ( 1.0 - porosity ) * dSolidDensity_dPressure;
241 LvArray::tensorOps::scale< maxNumComponents >( dTotalMassDensity_dComponents, porosity );
245 LvArray::tensorOps::scaledCopy< 3 >( stack.bodyForce, m_gravityVector, mixtureDensity );
246 LvArray::tensorOps::scaledCopy< 3 >( stack.dBodyForce_dVolStrainIncrement, m_gravityVector, dMixtureDens_dVolStrainIncrement );
247 LvArray::tensorOps::scaledCopy< 3 >( stack.dBodyForce_dPressure, m_gravityVector, dMixtureDens_dPressure );
248 LvArray::tensorOps::Rij_eq_AiBj< 3, maxNumComponents >( stack.dBodyForce_dComponents, m_gravityVector, dTotalMassDensity_dComponents );
251 bodyForceKernelOp( totalMassDensity, mixtureDensity );
255 template<
typename SUBREGION_TYPE,
256 typename CONSTITUTIVE_TYPE,
258 template<
typename FUNC >
265 real64 const & porosity_n,
266 real64 const & dPorosity_dVolStrain,
267 real64 const & dPorosity_dPressure,
268 real64 const & dPorosity_dTemperature,
270 FUNC && fluidIncrementKernelOp )
const
272 LvArray::tensorOps::fill< maxNumComponents >( stack.compMassIncrement, 0.0 );
273 LvArray::tensorOps::fill< maxNumComponents >( stack.dCompMassIncrement_dVolStrainIncrement, 0.0 );
274 LvArray::tensorOps::fill< maxNumComponents >( stack.dCompMassIncrement_dPressure, 0.0 );
275 LvArray::tensorOps::fill< maxNumComponents, maxNumComponents >( stack.dCompMassIncrement_dComponents, 0.0 );
277 if( m_useSimpleAccumulation )
280 const compDens = m_compDens[k];
282 const compDens_n = m_compDens_n[k];
284 for(
integer ic = 0; ic < m_numComponents; ++ic )
286 stack.compMassIncrement[ic] += porosity * compDens[ic] - porosity_n * compDens_n[ic];
287 stack.dCompMassIncrement_dPressure[ic] += dPorosity_dPressure * compDens[ic];
288 stack.dCompMassIncrement_dVolStrainIncrement[ic] += dPorosity_dVolStrain * compDens[ic];
289 stack.dCompMassIncrement_dComponents[ic][ic] += porosity;
294 using Deriv = constitutive::multifluid::DerivativeOffset;
299 real64 dPhaseAmount_dC[maxNumComponents]{};
300 real64 dPhaseCompFrac_dC[maxNumComponents]{};
303 const phaseDensity = m_fluidPhaseDensity[k][q];
305 const phaseDensity_n = m_fluidPhaseDensity_n[k][q];
307 const dPhaseDensity = m_dFluidPhaseDensity[k][q];
309 const phaseCompFrac = m_fluidPhaseCompFrac[k][q];
311 const phaseCompFrac_n = m_fluidPhaseCompFrac_n[k][q];
313 const dPhaseCompFrac = m_dFluidPhaseCompFrac[k][q];
315 const phaseVolFrac = m_fluidPhaseVolFrac[k];
317 const phaseVolFrac_n = m_fluidPhaseVolFrac_n[k];
319 const dPhaseVolFrac = m_dFluidPhaseVolFrac[k];
321 const dGlobalCompFrac_dGlobalCompDensity = m_dGlobalCompFraction_dGlobalCompDensity[k];
324 for(
integer ip = 0; ip < m_numPhases; ++ip )
328 real64 const phaseAmount = porosity * phaseVolFrac( ip ) * phaseDensity( ip );
329 real64 const phaseAmount_n = porosity_n * phaseVolFrac_n( ip ) * phaseDensity_n( ip );
331 real64 const dPhaseAmount_dVolStrain = dPorosity_dVolStrain * phaseVolFrac( ip ) * phaseDensity( ip );
332 real64 const dPhaseAmount_dP = dPorosity_dPressure * phaseVolFrac( ip ) * phaseDensity( ip )
333 + porosity * ( dPhaseVolFrac( ip, Deriv::dP ) * phaseDensity( ip )
334 + phaseVolFrac( ip ) * dPhaseDensity( ip, Deriv::dP ) );
336 applyChainRule( m_numComponents,
337 dGlobalCompFrac_dGlobalCompDensity,
342 for(
integer jc = 0; jc < m_numComponents; ++jc )
344 dPhaseAmount_dC[jc] = dPhaseAmount_dC[jc] * phaseVolFrac( ip )
345 + phaseDensity( ip ) * dPhaseVolFrac( ip, Deriv::dC + jc );
346 dPhaseAmount_dC[jc] *= porosity;
350 for(
integer ic = 0; ic < m_numComponents; ++ic )
352 stack.compMassIncrement[ic] += phaseAmount * phaseCompFrac( ip, ic )
353 - phaseAmount_n * phaseCompFrac_n( ip, ic );
355 stack.dCompMassIncrement_dPressure[ic] += dPhaseAmount_dP * phaseCompFrac( ip, ic )
356 + phaseAmount * dPhaseCompFrac( ip, ic, Deriv::dP );
357 stack.dCompMassIncrement_dVolStrainIncrement[ic] += dPhaseAmount_dVolStrain * phaseCompFrac( ip, ic );
359 applyChainRule( m_numComponents,
360 dGlobalCompFrac_dGlobalCompDensity,
361 dPhaseCompFrac[ip][ic],
365 for(
integer jc = 0; jc < m_numComponents; ++jc )
367 stack.dCompMassIncrement_dComponents[ic][jc] += dPhaseAmount_dC[jc] * phaseCompFrac( ip, ic )
368 + phaseAmount * dPhaseCompFrac_dC[jc];
374 fluidIncrementKernelOp( ip, phaseAmount, phaseAmount_n, dPhaseAmount_dVolStrain, dPhaseAmount_dP, dPhaseAmount_dC );
380 template<
typename SUBREGION_TYPE,
381 typename CONSTITUTIVE_TYPE,
387 real64 const & porosity_n,
390 using Deriv = constitutive::multifluid::DerivativeOffset;
392 arraySlice1d<
real64 const, compflow::USD_PHASE - 1 >
const phaseVolFrac = m_fluidPhaseVolFrac[k];
393 arraySlice2d<
real64 const, compflow::USD_PHASE_DC - 1 >
const dPhaseVolFrac = m_dFluidPhaseVolFrac[k];
399 for(
integer ip = 0; ip < m_numPhases; ++ip )
404 for(
integer jc = 0; jc < m_numComponents; ++jc )
412 template<
typename SUBREGION_TYPE,
413 typename CONSTITUTIVE_TYPE,
419 real64 const ( &dNdX )[numNodesPerElem][3],
423 using namespace PDEUtilities;
425 constexpr FunctionSpace displacementTrialSpace = FE_TYPE::template getFunctionSpace< numDofPerTrialSupportPoint >();
426 constexpr FunctionSpace displacementTestSpace = displacementTrialSpace;
427 constexpr FunctionSpace pressureTrialSpace = FunctionSpace::P0;
431 LinearFormUtilities::compute< displacementTestSpace,
432 DifferentialOperator::SymmetricGradient >
439 LinearFormUtilities::compute< displacementTestSpace,
440 DifferentialOperator::Identity >
448 BilinearFormUtilities::compute< displacementTestSpace,
449 displacementTrialSpace,
450 DifferentialOperator::SymmetricGradient,
451 DifferentialOperator::SymmetricGradient >
459 BilinearFormUtilities::compute< displacementTestSpace,
460 displacementTrialSpace,
461 DifferentialOperator::Identity,
462 DifferentialOperator::Divergence >
471 BilinearFormUtilities::compute< displacementTestSpace,
473 DifferentialOperator::SymmetricGradient,
474 DifferentialOperator::Identity >
482 BilinearFormUtilities::compute< displacementTestSpace,
484 DifferentialOperator::Identity,
485 DifferentialOperator::Identity >
494 BilinearFormUtilities::compute< displacementTestSpace,
496 DifferentialOperator::Identity,
497 DifferentialOperator::Identity >
506 template<
typename SUBREGION_TYPE,
507 typename CONSTITUTIVE_TYPE,
516 using namespace PDEUtilities;
518 constexpr FunctionSpace displacementTrialSpace = FE_TYPE::template getFunctionSpace< numDofPerTrialSupportPoint >();
519 constexpr FunctionSpace displacementTestSpace = displacementTrialSpace;
524 LinearFormUtilities::compute< FunctionSpace::P0,
525 DifferentialOperator::Identity >
533 BilinearFormUtilities::compute< FunctionSpace::P0,
534 displacementTestSpace,
535 DifferentialOperator::Identity,
536 DifferentialOperator::Divergence >
545 BilinearFormUtilities::compute< FunctionSpace::P0,
547 DifferentialOperator::Identity,
548 DifferentialOperator::Identity >
557 BilinearFormUtilities::compute< FunctionSpace::P0,
559 DifferentialOperator::Identity,
560 DifferentialOperator::Identity >
572 LinearFormUtilities::compute< FunctionSpace::P0,
573 DifferentialOperator::Identity >
581 BilinearFormUtilities::compute< FunctionSpace::P0,
583 DifferentialOperator::Identity,
584 DifferentialOperator::Identity >
593 BilinearFormUtilities::compute< FunctionSpace::P0,
595 DifferentialOperator::Identity,
596 DifferentialOperator::Identity >
606 template<
typename SUBREGION_TYPE,
607 typename CONSTITUTIVE_TYPE,
618 real64 N[numNodesPerElem]{};
619 real64 dNdX[numNodesPerElem][3]{};
620 FE_TYPE::calcN( q, stack.feStack, N );
621 real64 const detJxW = FE_TYPE::calcGradN( q, stack.xLocal,
622 stack.feStack, dNdX );
625 LvArray::tensorOps::fill< 6 >( stack.strainIncrement, 0.0 );
626 finiteElement::feOps::symmetricGradient( dNdX, stack.uhat_local, stack.strainIncrement );
631 smallStrainUpdate( k, q, stack );
635 assembleMomentumBalanceTerms( N, dNdX, detJxW, stack );
639 assembleElementBasedFlowTerms( dNdX, detJxW, stack );
645 template<
typename SUBREGION_TYPE,
646 typename CONSTITUTIVE_TYPE,
654 using namespace compositionalMultiphaseUtilities;
660 m_finiteElementSpace.getNumSupportPoints( stack.feStack );
661 integer numDisplacementDofs = numSupportPoints * numDofPerTestSupportPoint;
662 constexpr
integer maxNumDisplacementDofs = FE_TYPE::maxSupportPoints * numDofPerTestSupportPoint;
664 if( m_useTotalMassEquation > 0 )
667 real64 work[maxNumDisplacementDofs > ( maxNumComponents + 1 ) ? maxNumDisplacementDofs : maxNumComponents + 1];
671 shiftElementsAheadByOneAndReplaceFirstElementWithSum( m_numComponents, stack.
localResidualMass );
674 for(
int localNode = 0; localNode < numSupportPoints; ++localNode )
676 for(
int dim = 0; dim < numDofPerTestSupportPoint; ++dim )
678 localIndex const dof = LvArray::integerConversion< localIndex >( stack.localRowDofIndex[numDofPerTestSupportPoint * localNode + dim] - m_dofRankOffset );
681 if( dof < 0 || dof >= m_matrix.numRows() )
685 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
686 stack.localRowDofIndex,
688 numDisplacementDofs );
690 RAJA::atomicAdd< parallelDeviceAtomic >( &m_rhs[dof], stack.
localResidualMomentum[numDofPerTestSupportPoint * localNode + dim] );
691 maxForce = fmax( maxForce, fabs( stack.
localResidualMomentum[numDofPerTestSupportPoint * localNode + dim] ) );
693 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
698 m_matrix.template addToRowBinarySearchUnsorted< parallelDeviceAtomic >( dof,
708 if( 0 <= dof && dof < m_matrix.numRows() )
710 for(
localIndex i = 0; i < m_numComponents; ++i )
712 m_matrix.template addToRowBinarySearchUnsorted< serialAtomic >( dof + i,
713 stack.localRowDofIndex,
715 numDisplacementDofs );
716 m_matrix.template addToRow< serialAtomic >( dof + i,
720 m_matrix.template addToRow< serialAtomic >( dof + i,
727 m_matrix.template addToRow< serialAtomic >( dof + m_numComponents,
732 m_matrix.template addToRow< serialAtomic >( dof + m_numComponents,
742 template<
typename SUBREGION_TYPE,
743 typename CONSTITUTIVE_TYPE,
745 template<
typename POLICY,
746 typename KERNEL_TYPE >
749 KERNEL_TYPE
const & kernelComponent )
754 RAJA::ReduceMax< ReducePolicy< POLICY >,
real64 > maxResidual( 0 );
756 forAll< POLICY >( numElems,
759 typename KERNEL_TYPE::StackVariables stack;
761 kernelComponent.setup( k, stack );
762 for(
integer q=0; q<KERNEL_TYPE::numQuadraturePointsPerElem; ++q )
764 kernelComponent.quadraturePointKernel( k, q, stack );
766 maxResidual.max( kernelComponent.complete( k, stack ) );
768 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,...)
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.
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.
LvArray::CRSMatrixView< T, COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
int integer
Signed integer type.
Kernel variables (dof numbers, jacobian and residual) located on the stack.
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 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 deltaTemperature
Delta temperature from reference state.
real64 deltaTemperatureFromLastStep
Delta temperature since last time step.
real64 totalStress[6]
Total stress.