Transport PK#
The Transport PK describes the conservation of mass of components transported with water as it flows. The transport PK is based on the advection-diffusion equation, applies to one or more components that are dissolved in the aqueous phase, and is currently used in both surface and subsurface compartments. The key difference between surface and subsurface transport is in capturing the volume of water. In the subsurface, the volume of water is set by the porosity and saturation of the porous medium, while in the surface it is set by the ponded depth.
The advection-diffusion equation for component i in partially saturated porous media may be written as
The advection-diffusion equation for component i in the surface may be written as
transport-spec
“PK type”
[string]
“transport ats”“domain name”
[string]
domain specifies mesh name that defines the domain of this PK.“component names”
[Array(string)]
No default. Provides the names of the components that will be transported. Must be in the order: aqueous, gaseous, solid.“number of aqueous components”
[int]
-1 The total number of aqueous components. Default value is the length of “component names”“number of gaseous components”
[int]
0 The total number of gaseous components.“boundary conditions”
[transport-bc-spec]
Boundary conditions for transport are dependent on the boundary conditions for flow. See `Flow-specific Boundary Conditions`_ and `Transport-specific Boundary Conditions`_“component molar masses”
[Array(double)]
No default. Molar mass of each component.“molecular diffusion”
[molecular-diffusion-spec]
defines names of solutes in aqueous and gaseous phases and related diffusivity values.“material properties”
[material-properties-spec-list]
Defines material properties see below).
Source terms:
“source terms”
[transport-source-spec-list]
Provides solute source.
Physical model and assumptions:
“physical models and assumptions” [material-properties-spec] Defines material properties.
“effective transport porosity”
[bool]
false If true, effective transport porosity will be used by dispersive-diffusive fluxes instead of total porosity.
Math and solver algorithm options:
“diffusion”
[pde-diffusion-spec]
Diffusion drives the distribution. Typically we use finite volume here. See PDE_Diffusion_“diffusion preconditioner”
[pde-diffusion-spec]
Inverse of the above. Likely only Jacobian term options are needed here, as the others default to the same as the “diffusion” list. See PDE_Diffusion_.“inverse”
[inverse-typed-spec]
Inverse_ method for the solve.“cfl” [double] Time step limiter, a number less than 1. Default value is 1.
“spatial discretization order” [int] defines accuracy of spatial discretization. It permits values 1 or 2. Default value is 1.
“temporal discretization order” [int] defines accuracy of temporal discretization. It permits values 1 or 2 and values 3 or 4 when expert parameter “generic RK implementation” is set to true. Note that RK3 is not monotone. Default value is 1.
- “reconstruction” [list] collects reconstruction parameters. The available options are
describe in the separate section below.
- “transport subcycling”
[bool]
true The code will default to subcycling for transport within the master PK if there is one.
- “transport subcycling”
Developer parameters:
- “enable internal tests” [bool] turns on various internal tests during
run time. Default value is “false”.
- “generic RK implementation” [bool] leads to generic implementation of
all Runge-Kutta methods. Default value is “false”.
- “internal tests tolerance” [double] tolerance for internal tests such as the
divergence-free condition. The default value is 1e-6.
- “runtime diagnostics: solute names” [Array(string)] defines solutes that will be
tracked closely each time step if verbosity “high”. Default value is the first solute in the global list of “aqueous names” and the first gas in the global list of “gaseous names”.
- “runtime diagnostics: regions” [Array(string)] defines a boundary region for
tracking solutes. Default value is a seepage face boundary, see Flow PK.
KEYS
- “saturation liquid” This variable is a multiplier in in the
accumulation term. For subsurface transport, this will typically be the saturation (“saturation_liquid”). For surface transport, this will typically be the ponded depth (“ponded_depth”).
“previous saturation liquid”
- “molar density liquid” Transport is solved
for concentrations in units of mol fractions. Molar density is needed for conversion.
“water flux”
- “water source” Defines the water injection rate [mol H2O m^-2 s^-1] in
surface and [mol H2O m^-3 s^-1] in subsurface) which applies to concentrations specified by the “geochemical conditions”. Note that if this PK is coupled to a surface flow PK, the unit of the water source there must be in [mol m^-2 s^-1], not in [m s^-1] as is an option for that PK (e.g. “water source in meters” must be set to “false” in the overland flow PK).
The injection rate of a solute [molC s^-1], when given as the product of a concentration and a water source, is evaluated as:
- Concentration [mol C L^-1] *
1000 [L m^-3] of water * water source [mol H2O m^-3 s^-1] * volume of injection domain [m^3] / molar density of water [mol H2O m^-3]
molecular-diffusion-spec
“aqueous names”
[Array(string)]
List of aqueous component names to be diffused.“aqueous values”
[Array(string)]
Diffusivities of each component.
<ParameterList name="molecular diffusion">
<Parameter name="aqueous names" type=Array(string)" value="{CO2(l),Tc-99}"/>
<Parameter name="aqueous values" type=Array(double)" value="{1e-8,1e-9}"/>
</ParameterList>
material-properties-spec
“region”
[Array(string)]
Defines geometric regions for material SOIL.“model”
[string]
scalar Defines dispersivity model. One of:“scalar” : scalar dispersivity
“Bear” : dispersion split into along- and across- velocity
“Burnett-Frind”
“Lichtner-Kelkar-Robinson”
“parameters for MODEL”
[list]
where “MODEL” is the model name.
IF model == scalar
ONE OF
“alpha”
[double]
defines dispersivity in all directions, [m].
OR
“dispersion coefficient”
[double]
defines dispersion coefficient [m^2 s^-1].
END
ELSE IF model == Bear
“alpha_l”
[double]
defines dispersion in the direction of Darcy velocity, [m].“alpha_t”
[double]
defines dispersion in the orthogonal direction, [m].
ELSE IF model == Burnett-Frind
“alphaL”
[double]
defines the longitudinal dispersion in the direction of Darcy velocity, [m].“alpha_th”
[double]
Defines the transverse dispersion in the horizonal direction orthogonal directions, [m].“alpha_tv”
[double]
Defines dispersion in the orthogonal directions, [m]. When “alpha_th” equals to “alpha_tv”, we obtain dispersion in the direction of the Darcy velocity.
ELSE IF model == Lichtner-Kelker-Robinson
“alpha_lh”
[double]
defines the longitudinal dispersion in the horizontal direction, [m].“alpha_lv”
[double]
Defines the longitudinal dispersion in the vertical direction, [m]. When “alpha_lh” equals to “alpha_lv”, we obtain dispersion in the direction of the Darcy velocity.“alpha_th”
[double]
Defines the transverse dispersion in the horizontal direction orthogonal directions, [m].“alpha_tv” ``[double]` Defines dispersion in the orthogonal directions. When “alpha_th” equals to “alpha_tv”, we obtain dispersion in the direction of the Darcy velocity.
END
“aqueous tortuosity”
[double]
Defines tortuosity for calculating diffusivity of liquid solutes, [-].“gaseous tortuosity”
[double]
Defines tortuosity for calculating diffusivity of gas solutes, [-].
transport-source-spec
“component mass source”
[list]
Defines solute source injection rate.“spatial distribution method”
[string]
One of:“volume”, source is considered as extensive quantity [molC s^-1] and is evenly distributed across the region.
“none”, source is considered as intensive quantity. [molC m^-2 s^-1] in surface and [molC m^-3 s^-1] in subsurface
“geochemical”
[list]
Defines a source by setting solute concentration for all components (in moles/L) and an injection rate given by the water source. Currently, this option is only available for Alquimia provided geochemical conditions.“geochemical conditions”
[Array(string)]
List of geochemical constraints providing concentration for solute injection.