PorousFlowUnsaturated

Adds Kernels and fluid-property Materials necessary to simulate a single-phase saturated-unsaturated flow problem. The saturation is computed using van Genuchten's expression. No Kernels for diffusion and dispersion of fluid components are added. To run a simulation you will also need to provide various other Materials for each mesh block, depending on your simulation type, viz: permeability, porosity, elasticity tensor, strain calculator, stress calculator, matrix internal energy, thermal conductivity, diffusivity

For discussion and a worked example, see tutorial page 8.

Input Parameters

  • porepressureThe name of the porepressure variable

    C++ Type:VariableName

    Controllable:No

    Description:The name of the porepressure variable

Required Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • add_darcy_auxTrueAdd AuxVariables that record Darcy velocity

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Add AuxVariables that record Darcy velocity

  • add_saturation_auxTrueAdd an AuxVariable that records saturation

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Add an AuxVariable that records saturation

  • add_stress_auxTrueAdd AuxVariables that record effective stress

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Add AuxVariables that record effective stress

  • base_nameThe base_name used in the TensorMechanics strain calculator. This is only relevant for mechanically-coupled models.

    C++ Type:std::string

    Controllable:No

    Description:The base_name used in the TensorMechanics strain calculator. This is only relevant for mechanically-coupled models.

  • biot_coefficient1The Biot coefficient (relevant only for mechanically-coupled simulations)

    Default:1

    C++ Type:double

    Controllable:No

    Description:The Biot coefficient (relevant only for mechanically-coupled simulations)

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • coupling_typeHydroThe type of simulation. For simulations involving Mechanical deformations, you will need to supply the correct Biot coefficient. For simulations involving Thermal flows, you will need an associated ConstantThermalExpansionCoefficient Material

    Default:Hydro

    C++ Type:MooseEnum

    Options:Hydro, ThermoHydro, HydroMechanical, ThermoHydroMechanical

    Controllable:No

    Description:The type of simulation. For simulations involving Mechanical deformations, you will need to supply the correct Biot coefficient. For simulations involving Thermal flows, you will need an associated ConstantThermalExpansionCoefficient Material

  • dictator_namedictatorThe name of the dictator user object that is created by this Action

    Default:dictator

    C++ Type:std::string

    Controllable:No

    Description:The name of the dictator user object that is created by this Action

  • displacementsThe name of the displacement variables (relevant only for mechanically-coupled simulations)

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:The name of the displacement variables (relevant only for mechanically-coupled simulations)

  • eigenstrain_namesList of all eigenstrain models used in mechanics calculations. Typically the eigenstrain_name used in ComputeThermalExpansionEigenstrain. Only needed for thermally-coupled simulations with thermal expansion.

    C++ Type:std::vector<MaterialPropertyName>

    Controllable:No

    Description:List of all eigenstrain models used in mechanics calculations. Typically the eigenstrain_name used in ComputeThermalExpansionEigenstrain. Only needed for thermally-coupled simulations with thermal expansion.

  • fluid_properties_typePorousFlowSingleComponentFluidType of fluid properties to use. For 'PorousFlowSingleComponentFluid' you must provide a fp UserObject. For 'PorousFlowBrine' you must supply a nacl_name. For 'Custom' your input file must include a Material that provides fluid properties such as density, viscosity, enthalpy and internal energy

    Default:PorousFlowSingleComponentFluid

    C++ Type:MooseEnum

    Options:PorousFlowSingleComponentFluid, PorousFlowBrine, Custom

    Controllable:No

    Description:Type of fluid properties to use. For 'PorousFlowSingleComponentFluid' you must provide a fp UserObject. For 'PorousFlowBrine' you must supply a nacl_name. For 'Custom' your input file must include a Material that provides fluid properties such as density, viscosity, enthalpy and internal energy

  • flux_limiter_typeVanLeerType of flux limiter to use if stabilization=KT. 'None' means that no antidiffusion will be added in the Kuzmin-Turek scheme

    Default:VanLeer

    C++ Type:MooseEnum

    Options:MinMod, VanLeer, MC, superbee, None

    Controllable:No

    Description:Type of flux limiter to use if stabilization=KT. 'None' means that no antidiffusion will be added in the Kuzmin-Turek scheme

  • fpThe name of the user object for fluid properties. Only needed if fluid_properties_type = PorousFlowSingleComponentFluid

    C++ Type:UserObjectName

    Controllable:No

    Description:The name of the user object for fluid properties. Only needed if fluid_properties_type = PorousFlowSingleComponentFluid

  • gravity0 0 -10Gravitational acceleration vector downwards (m/s^2)

    Default:0 0 -10

    C++ Type:libMesh::VectorValue<double>

    Controllable:No

    Description:Gravitational acceleration vector downwards (m/s^2)

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • mass_fraction_varsList of variables that represent the mass fractions. With only one fluid component, this may be left empty. With N fluid components, the format is 'f_0 f_1 f_2 ... f_(N-1)'. That is, the N^th component need not be specified because f_N = 1 - (f_0 + f_1 + ... + f_(N-1)). It is best numerically to choose the N-1 mass fraction variables so that they represent the fluid components with small concentrations. This Action will associated the i^th mass fraction variable to the equation for the i^th fluid component, and the pressure variable to the N^th fluid component.

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:List of variables that represent the mass fractions. With only one fluid component, this may be left empty. With N fluid components, the format is 'f_0 f_1 f_2 ... f_(N-1)'. That is, the N^th component need not be specified because f_N = 1 - (f_0 + f_1 + ... + f_(N-1)). It is best numerically to choose the N-1 mass fraction variables so that they represent the fluid components with small concentrations. This Action will associated the i^th mass fraction variable to the equation for the i^th fluid component, and the pressure variable to the N^th fluid component.

  • nacl_nameName of the NaCl variable. Only required if fluid_properties_type = PorousFlowBrine

    C++ Type:VariableName

    Controllable:No

    Description:Name of the NaCl variable. Only required if fluid_properties_type = PorousFlowBrine

  • number_aqueous_equilibrium0The number of secondary species in the aqueous-equilibrium reaction system. (Leave as zero if the simulation does not involve chemistry)

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The number of secondary species in the aqueous-equilibrium reaction system. (Leave as zero if the simulation does not involve chemistry)

  • number_aqueous_kinetic0The number of secondary species in the aqueous-kinetic reaction system involved in precipitation and dissolution. (Leave as zero if the simulation does not involve chemistry)

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The number of secondary species in the aqueous-kinetic reaction system involved in precipitation and dissolution. (Leave as zero if the simulation does not involve chemistry)

  • pressure_unitPaThe unit of the pressure variable used everywhere in the input file except for in the FluidProperties-module objects. This can be set to the non-default value only for fluid_properties_type = PorousFlowSingleComponentFluid

    Default:Pa

    C++ Type:MooseEnum

    Options:Pa, MPa

    Controllable:No

    Description:The unit of the pressure variable used everywhere in the input file except for in the FluidProperties-module objects. This can be set to the non-default value only for fluid_properties_type = PorousFlowSingleComponentFluid

  • relative_permeability_exponent3Relative permeability exponent

    Default:3

    C++ Type:double

    Controllable:No

    Description:Relative permeability exponent

  • relative_permeability_typeFLACType of relative-permeability function. FLAC relperm = (1+m)S^m - mS^(1+m). Corey relperm = S^m. m is the exponent. Here S = (saturation - residual)/(1 - residual)

    Default:FLAC

    C++ Type:MooseEnum

    Options:FLAC, Corey

    Controllable:No

    Description:Type of relative-permeability function. FLAC relperm = (1+m)S^m - mS^(1+m). Corey relperm = S^m. m is the exponent. Here S = (saturation - residual)/(1 - residual)

  • residual_saturation0Residual saturation to use in the relative permeability expression

    Default:0

    C++ Type:double

    Controllable:No

    Description:Residual saturation to use in the relative permeability expression

  • save_component_rate_inList of AuxVariables into which the rate-of-change of each fluid component at each node will be saved. There must be exactly N of these to match the N fluid components. The result will be measured in kg/s, where the kg is the mass of the fluid component at the node (or m^3/s if multiply_by_density=false). Note that this saves the result from the MassTimeDerivative Kernels, but NOT from the MassVolumetricExpansion Kernels.

    C++ Type:std::vector<AuxVariableName>

    Controllable:No

    Description:List of AuxVariables into which the rate-of-change of each fluid component at each node will be saved. There must be exactly N of these to match the N fluid components. The result will be measured in kg/s, where the kg is the mass of the fluid component at the node (or m^3/s if multiply_by_density=false). Note that this saves the result from the MassTimeDerivative Kernels, but NOT from the MassVolumetricExpansion Kernels.

  • stabilizationFullNumerical stabilization used. 'Full' means full upwinding. 'KT' means FEM-TVD stabilization of Kuzmin-Turek

    Default:Full

    C++ Type:MooseEnum

    Options:None, Full, KT

    Controllable:No

    Description:Numerical stabilization used. 'Full' means full upwinding. 'KT' means FEM-TVD stabilization of Kuzmin-Turek

  • strain_at_nearest_qpFalseOnly relevant for models in which porosity depends on strain. If true, then when calculating nodal porosity that depends on strain, the strain at the nearest quadpoint will be used. This adds a small extra computational burden, and is only necessary for simulations involving: (1) elements that are not linear lagrange or (2) certain PorousFlow Dirac Kernels (as specified in their documentation). If you set this to true, you will also want to set the same parameter to true for related Kernels and Materials (which is probably easiest to do in the GlobalParams block)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Only relevant for models in which porosity depends on strain. If true, then when calculating nodal porosity that depends on strain, the strain at the nearest quadpoint will be used. This adds a small extra computational burden, and is only necessary for simulations involving: (1) elements that are not linear lagrange or (2) certain PorousFlow Dirac Kernels (as specified in their documentation). If you set this to true, you will also want to set the same parameter to true for related Kernels and Materials (which is probably easiest to do in the GlobalParams block)

  • temperature293.0For isothermal simulations, this is the temperature at which fluid properties (and stress-free strains) are evaluated at. Otherwise, this is the name of the temperature variable. Units = Kelvin

    Default:293.0

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:For isothermal simulations, this is the temperature at which fluid properties (and stress-free strains) are evaluated at. Otherwise, this is the name of the temperature variable. Units = Kelvin

  • temperature_unitKelvinThe unit of the temperature variable

    Default:Kelvin

    C++ Type:MooseEnum

    Options:Kelvin, Celsius

    Controllable:No

    Description:The unit of the temperature variable

  • time_unitsecondsThe unit of time used everywhere in the input file except for in the FluidProperties-module objects. This can be set to the non-default value only for fluid_properties_type = PorousFlowSingleComponentFluid

    Default:seconds

    C++ Type:MooseEnum

    Options:seconds, hours, days, years

    Controllable:No

    Description:The unit of time used everywhere in the input file except for in the FluidProperties-module objects. This can be set to the non-default value only for fluid_properties_type = PorousFlowSingleComponentFluid

  • use_displaced_meshFalseUse displaced mesh computations in mechanical kernels

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use displaced mesh computations in mechanical kernels

  • van_genuchten_alpha1e-06Van Genuchten alpha parameter used to determine saturation from porepressure

    Default:1e-06

    C++ Type:double

    Controllable:No

    Description:Van Genuchten alpha parameter used to determine saturation from porepressure

  • van_genuchten_m0.6Van Genuchten m parameter used to determine saturation from porepressure

    Default:0.6

    C++ Type:double

    Controllable:No

    Description:Van Genuchten m parameter used to determine saturation from porepressure

Optional Parameters