# WIPP_FLOW Mode Solution Controls¶

Within the `OPTIONS`

block of the `WIPP_FLOW`

Mode, several solution
control parameters can be set. This page describes them all. An example of an
input deck `SIMULATION`

block that uses and sets some solution control
parameters is shown below:

SIMULATION SIMULATION_TYPE SUBSURFACE PROCESS_MODELS SUBSURFACE_FLOW FLOW MODE WIPP_FLOW OPTIONS FIX_UPWIND_DIRECTION GAS_COMPONENT_FORMULA_WEIGHT 2.01588D0 ! H2 kg/kmol LIQUID_EQUATION_TOLERANCE 1.d-6 GAS_EQUATION_TOLERANCE 1.d-6 LIQUID_PRESSURE_TOLERANCE 1.d-5 GAS_SATURATION_TOLERANCE 1.d-4 ! (same functionality as EPS_SAT) PRESSURE_REL_PERTURBATION 1.d-8 PRESSURE_MIN_PERTURBATION 1.d-2 SATURATION_REL_PERTURBATION 1.d-8 SATURATION_MIN_PERTURBATION 1.d-10 DTIMEMAX 1.25 SATLIMIT 1.d-3 DSATLIM 0.20 DSAT_MAX 1.0d-2 SATNORM 3.d-1 TSWITCH 1.d-2 EPS_PRES 1.d-2 EPS_SAT 4 ! (same functionality as GAS_SATURATION_TOLERANCE) DPRELIM -1.d8 ! Pa DPRES_MAX 1.d7 ! Pa PRESNORM 5.d5 ! Pa LSCALE DO_NOT_LSCALE P_SCALE 1.d7 END END END END

## GAS_SATURATION_TOLERANCE (EPS_SAT)¶

The maximum relative change in gas saturation allowed in order for the solution
to be accepted. For example, if `GAS_SATURATION_TOLERANCE`

is
\(1\times10^{-4}\), then a change in gas saturation over a Newton iteration
that is larger than \(1\times10^{-4}\) will force another Newton iteration.
The default value for `GAS_SATURATION_TOLERANCE`

is \(1\times10^{-3}\).
**Currently, the WIPP_FLOW card EPS_SAT implements the**
**same functionality. If both are specified, the tighter tolerance of the two**
**will be chosen and assigned.**

## SATLIMIT¶

Limit on gas saturation solution beyond which a solution will not be accepted.
This limit is designed to ensure unphysical values for gas saturation are not
accepted as solutions.
If the gas saturation, \(S_g\), at the end of a Newton iteration is
\(1.0 + SATLIMIT < S_g\) or \(S_g < -SATLIMIT\), then another
Newton iteration will be forced (i.e. the solution is not accepted).
The default value for `SATLIMIT`

is \(1\times10^{-3}\). The value given
must be smaller than `DSATLIM`

.

## DSATLIM¶

Limit allowed on gas saturation outside of the physically realistic range
between 0.0 and 1.0, and intended to simply reject a solution that is beyond
hope before any more computational effort is expended. If the gas saturation,
\(S_g\), at the end of a Newton iteration is
\(1.0 + DSATLIM < S_g\) or \(S_g < -DSATLIM\), then the time step
will be cut according to `DELTFACTOR`

and the time step will be repeated.
The default value for `DSATLIM`

is \(0.20\). The value given must be
larger than `SATLIMIT`

.

## DPRELIM¶

Lower limit allowed for the liquid pressure (brine), and is intended to simply
reject a solution that is beyond hope before any more computational effort is
expended. If the liquid pressure, \(p_l\), at the end of a Newton iteration
is negative and \(p_l < DPRELIM\), then the time step will be cut according
to `DELTFACTOR`

and the time step will be repeated.
The default value for `DPRELIM`

is \(-1\times10^{8}\) Pa. The value
given must be negative.

## DSAT_MAX¶

The maximum absolute change in gas saturation allowed over a time step. If the
solution has converged, but the absolute change in gas saturation was larger
than `DSAT_MAX`

, then the time step will be cut according to `DELTFACTOR`

and the time step is repeated.
The default value of `DSAT_MAX`

is \(1.0\).

## DPRES_MAX¶

The maximum absolute change in liquid pressure (brine) allowed over a time step.
If the solution has converged, but the absolute change in liquid pressure was
larger than `DPRES_MAX`

, then the time step will be cut according to
`DELTFACTOR`

and the time step is repeated.
The default value of `DPRES_MAX`

is \(1\times10^{7}\) Pa.

## EPS_SAT (GAS_SATURATION_TOLERANCE)¶

The digits of accuracy for the maximum relative change in gas saturation allowed
in order for the solution to be accepted. For example, if `EPS_SAT`

is 4, then
a change in gas saturation over a Newton iteration that is larger than
\(1\times10^{-4}\) will force another Newton iteration.
The default value for `EPS_SAT`

is \(3\).
**Currently, the WIPP_FLOW card GAS_SATURATION_TOLERANCE implements the**
**same functionality. If both are specified, the tighter tolerance of the two**
**will be chosen and assigned.**

## EPS_PRES¶

The maximum relative change in liquid pressure (brine) allowed over a time step.
If the solution has converged, but the relative change in liquid pressure was
larger than `EPS_PRES`

, then an other Newton iteration will be forced.
The default value of `EPS_PRES`

is \(1\times10^{-3}\).

## SATNORM¶

The largest relative change in gas saturation that is allowed over a time step
so that the next time step will be the same as the current time step. If the
largest relative change in gas saturation happens to be larger than `SATNORM`

,
then the next time step will be reduced according to Section
Algorithm That Determines Next Time Step Size. Similarly, if the largest relative change in gas
saturation happens to be smaller than `SATNORM`

, then the next time step will
be increased, but this increase will be limited by the ramping factor
given by `DTIMEMAX`

.
The default value for `SATNORM`

is \(0.3\).

## PRESNORM¶

The largest relative change in liquid pressure that is allowed over a time step
so that the next time step will be the same as the current time step. If the
largest relative change in liquid pressure happens to be larger than `PRESNORM`

,
then the next time step will be reduced according to Section
Algorithm That Determines Next Time Step Size. Similarly, if the largest relative change in liquid
pressure happens to be smaller than `PRESNORM`

, then the next time step will
be increased, but this increase will be limited by the ramping factor
given by `DTIMEMAX`

.
The default value for `PRESNORM`

is \(5\times10^{5}\) Pa.

## TSWITCH¶

The value for gas saturation where `SATNORM`

will switch between using the
maximum relative change in gas saturation over a time step or the maximum
absolute change in gas saturation over a time step to decide on the next time
step size. If \(S_g > TSWITCH\), then the maximum relative change in gas
saturation will be used. If \(S_g < TSWITCH\), then the maximum absolute
change in the gas saturation will be used, so that division by a small number
is avoided. Default value for `TSWITCH`

is \(0.01\).

## DELTFACTOR (TIMESTEP_REDUCTION_FACTOR)¶

The time step reduction factor when non-convergence occurs and the time step
is reduced and repeated. The equivalent functionality in PFLOTRAN is specified
with the `TIMESTEP_REDUCTION_FACTOR`

keyword in the `TIMESTEPPER`

block.
The default value for `TIMESTEP_REDUCTION_FACTOR`

is \(0.5\).
An example of usage is below:

TIMESTEPPER FLOW TIMESTEP_REDUCTION_FACTOR 0.5d0 MAX_TS_CUTS 8 END

## DTIMEMAX¶

Maximum time step ramping factor for determining the value of the next time step.
The default value for `DTIMEMAX`

is \(1.25\).

## LSCALE¶

Toggles on scaling of Jacobian matrix and residual vector.
The default value for `LSCALE`

is `TRUE`

.

## DO_NOT_LSCALE¶

Toggles off scaling of Jacobian matrix and residual vector.
The default value for `LSCALE`

is `FALSE`

.

## P_SCALE¶

The scaling factor by which the Jacobian matrix and residual vector are scaled.
For each row of the matrix, the scaling factor is multiplied by the row’s
maximum absolute value. The row entries and corresponding entry in the residual
vector are then divided by that value.
The default value for `P_SCALE`

is \(10^{7}\).

## MAXIT (ITMAX)¶

Maximum number of Newton iterations per time step.
The default value for `MAXIT`

is \(50\) based on PETSc defaults.
BRAGFLO recommends \(10\).

NEWTON_SOLVER FLOW MAXIT 10 END

## MAX_TS_CUTS (IRESETMAX)¶

Maximum number of time step cuts before PFLOTRAN shuts down due to lack of
convergence. The default value for `MAX_TS_CUTS`

is \(16\). BRAGFLO
recomments \(40\).

TIMESTEPPER FLOW MAX_TS_CUTS 40 END

## PRESSURE_REL_PERTURBATION (DHPRES_REL)¶

Relative change in liquid pressure for Jacobian derivative calculation.
The default value for `PRESSURE_REL_PERTURBATION`

is \(10^{-8}\).

## PRESSURE_MIN_PERTURBATION (DHPRES_MIN)¶

Minimum change in liquid pressure for Jacobian derivative calculation.
The default value for `PRESSURE_MIN_PERTURBATION`

is \(10^{-2}\).

## SATURATION_REL_PERTURBATION (DHSAT_REL)¶

Relative change in gas saturation Jacobian derivative calculation.
The default value for `SATURATION_REL_PERTURBATION`

is \(10^{-8}\).

## SATURATION_MIN_PERTURBATION (DHSAT_MIN)¶

Minimum change in gas saturation Jacobian derivative calculation.
The default value for `SATURATION_MIN_PERTURBATION`

is \(10^{-10}\).

## Algorithm That Determines Next Time Step Size¶

The time step ramping factor, `DTIME`

, is automatically calculated in
PFLOTRAN according to `DTIME = (2.D0*DELTADEPNORM)/(DELTADEPNORM+DELTAMAX)`

.
The variable `DELTADEPNORM`

is either `SATNORM`

or `PRESNORM`

.
The variable `DELTAMAX`

is the maximum absolute change in the primary
dependent variables (gas saturation or liquid pressure), or it is the maximum
relative change in the gas saturation is the current gas saturation value is
larger than `TSWITCH`

. The value for `DTIME`

is chosen
to be the minimum of the value calculated using the gas saturation change and
the value using the liquid pressure change.
The minimum of the calculated value of `DTIME`

and solution control
parameter `DTIMEMAX`

is then chosen to multiply the current time step value
to obtain the next time step value. A final check is made to ensure that the
calculated value for the next time step is within the minimum and maximum
time step sizes indicated in the input deck.