Poromechanics Solver

Introduction

This section describes the use of the poroelasticity models implemented in GEOSX.

Theory

Governing Equations

In our model, the geomechanics (elasticity) equation is expressed in terms of the total stress \mathbf{\sigma}:

\nabla \mathbf{\sigma} + \rho_b \mathbf{g} = 0

where it relates to effective stress \mathbf{\sigma\prime} and pore pressure p through Biot’s coefficient b:

\mathbf{\sigma} = \mathbf{\sigma\prime} - b p\mathbf{I}

The fluid mass conservation equation is expressed in terms of pore pressure and volumetric (mean) total stress:

\left( \frac{1}{M} + \frac{b^2}{K_{dr}} \right) \frac{\partial p}{\partial t} + \frac{b}{K_{dr}} \frac{\partial \sigma_v}{\partial t} + \nabla \cdot \mathbf{v}_f = f

where M is the Biot’s modulus and K_{dr} is the drained bulk modulus.

Unlike the conventional reservoir model that uses Lagrange’s porosity, in the coupled geomechanics and flow model, Euler’s porosity \phi is adopted so the porosity variation is derived as:

\partial \phi = \left( \frac{b-\phi}{K_s}\right) \partial p + \left( b-\phi \right) \partial \epsilon_v

where K_{s} is the bulk modulus of the solid grain and \epsilon_v is the volumetric strain.

Parameters

The poroelasticity model is implemented as a main solver listed in <Solvers> block of the input XML file that calls both SolidMechanicsLagrangianSSLE and SinglePhaseFlow solvers. In the main solver, it requires the specification of solidSolverName, fluidSolverName, and couplingTypeOption.

The following attributes are supported:

Name Type Default Description
cflFactor real64 0.5 Factor to apply to the CFL condition when calculating the maximum allowable time step. Values should be in the interval (0,1]
couplingTypeOption geosx_PoroelasticSolver_CouplingTypeOption required
Coupling method. Valid options:
* FIM
* SIM_FixedStress
discretization string required Name of discretization object (defined in the Numerical Methods) to use for this solver. For instance, if this is a Finite Element Solver, the name of a FiniteElement should be specified. If this is a Finite Volume Method, the name of a FiniteVolume discretization should be specified.
fluidSolverName string required Name of the fluid mechanics solver to use in the poroelastic solver
initialDt real64 1e+99 Initial time-step value required by the solver to the event manager.
logLevel integer 0 Log level
name string required A name is required for any non-unique nodes
solidSolverName string required Name of the solid mechanics solver to use in the poroelastic solver
targetRegions string_array required Allowable regions that the solver may be applied to. Note that this does not indicate that the solver will be applied to these regions, only that allocation will occur such that the solver may be applied to these regions. The decision about what regions this solver will beapplied to rests in the EventManager.
LinearSolverParameters node unique Element: LinearSolverParameters
NonlinearSolverParameters node unique Element: NonlinearSolverParameters
  • couplingTypeOption: defines the coupling scheme.

The solid constitutive model used here is PoroLinearElasticIsotropic, which derives from LinearElasticIsotropic and includes an additional parameter: Biot’s coefficient. The fluid constitutive model is the same as SinglePhaseFlow solver. For the parameter setup of each individual solver, please refer to the guideline of the specific solver.

An example of a valid XML block for the constitutive model is given here:

  <Constitutive>
    <PoroLinearElasticIsotropic
      name="shale"
      defaultDensity="2700"
      defaultBulkModulus="61.9e6"
      defaultShearModulus="28.57e6"
      BiotCoefficient="1.0"/>

    <CompressibleSinglePhaseFluid
      name="water"
      defaultDensity="1000"
      defaultViscosity="0.001"
      referencePressure="2.125e6"
      referenceDensity="1000"
      compressibility="1e-19"
      referenceViscosity="0.001"
      viscosibility="0.0"/>
  </Constitutive>

Example

    <Poroelastic
      name="poroSolve"
      solidSolverName="lagsolve"
      fluidSolverName="SinglePhaseFlow"
      couplingTypeOption="SIM_FixedStress"
      logLevel="1"
      discretization="FE1"
      targetRegions="{ Region2 }">
      <NonlinearSolverParameters
        newtonMaxIter="40"/>
      <LinearSolverParameters
        solverType="direct"
        directParallel="0"
        logLevel="0"/>
    </Poroelastic>

    <SolidMechanicsLagrangianSSLE
      name="lagsolve"
      timeIntegrationOption="QuasiStatic"
      logLevel="1"
      discretization="FE1"
      targetRegions="{ Region2 }"
      solidMaterialNames="{ shale }">
      <NonlinearSolverParameters
        newtonTol="1.0e-6"
        newtonMaxIter="5"/>
      <LinearSolverParameters
        solverType="direct"
        directParallel="0"
        logLevel="0"/>
    </SolidMechanicsLagrangianSSLE>

    <SinglePhaseFVM
      name="SinglePhaseFlow"
      logLevel="1"
      discretization="singlePhaseTPFA"
      targetRegions="{ Region2 }"
      fluidNames="{ water }"
      solidNames="{ shale }">
      <NonlinearSolverParameters
        newtonTol="1.0e-6"
        newtonMaxIter="8"/>
      <LinearSolverParameters
        solverType="direct"
        directParallel="0"
        logLevel="0"/>
    </SinglePhaseFVM>
  </Solvers>