AuxKernels

  • Porous Flow App
  • PorousFlowDarcyVelocityComponentDarcy velocity (in m3.s-1.m-2, or m.s-1) -(k_ij * krel /mu (nabla_j P - w_j)), where k_ij is the permeability tensor, krel is the relative permeability, mu is the fluid viscosity, P is the fluid pressure, and w_j is the fluid weight.
  • PorousFlowDarcyVelocityComponentLowerDimensionalDarcy velocity on a lower-dimensional element embedded in a higher-dimensional mesh. Units m3.s-1.m-2, or m.s-1. Darcy velocity = -(k_ij * krel /(mu * a) (nabla_j P - w_j)), where k_ij is the permeability tensor, krel is the relative permeability, mu is the fluid viscosity, P is the fluid pressure, a is the fracture aperture and w_j is the fluid weight. The difference between this AuxKernel and PorousFlowDarcyVelocity is that this one projects gravity along the element's tangent direction. NOTE! For a meaningful answer, your permeability tensor must NOT contain terms that rotate tangential vectors to non-tangential vectors.
  • PorousFlowPropertyAuxAuxKernel to provide access to properties evaluated at quadpoints. Note that elemental AuxVariables must be used, so that these properties are integrated over each element.

AuxVariables

BCs

  • Porous Flow App
  • PorousFlowHalfCubicSinkApplies a flux sink to a boundary. The base flux defined by PorousFlowSink is multiplied by a cubic.
  • PorousFlowHalfGaussianSinkApplies a flux sink to a boundary. The base flux defined by PorousFlowSink is multiplied by a Gaussian.
  • PorousFlowPiecewiseLinearSinkApplies a flux sink to a boundary. The base flux defined by PorousFlowSink is multiplied by a piecewise linear function.
  • PorousFlowSinkApplies a flux sink to a boundary.

DiracKernels

  • Porous Flow App
  • PorousFlowPeacemanBoreholeApproximates a borehole in the mesh using the Peaceman approach, ie using a number of point sinks with given radii whose positions are read from a file. NOTE: if you are using PorousFlowPorosity that depends on volumetric strain, you should set strain_at_nearest_qp=true in your GlobalParams, to ensure the nodal Porosity Material uses the volumetric strain at the Dirac quadpoints, and can therefore be computed
  • PorousFlowPolyLineSinkApproximates a polyline sink by using a number of point sinks with given weighting whose positions are read from a file. NOTE: if you are using PorousFlowPorosity that depends on volumetric strain, you should set strain_at_nearest_qp=true in your GlobalParams, to ensure the nodal Porosity Material uses the volumetric strain at the Dirac quadpoints, and can therefore be computed
  • PorousFlowSquarePulsePointSourcePoint source (or sink) that adds (removes) fluid at a constant mass flux rate for times between the specified start and end times.

Functions

  • Porous Flow App
  • MovingPlanarFrontThis function defines the position of a moving front. The front is an infinite plane with normal pointing from start_posn to end_posn. The front's distance from start_posn is defined by 'distance', so if the 'distance' function is time dependent, the front's position will change with time. Roughly speaking, the function returns true_value for points lying in between start_posn and start_posn + distance. Precisely speaking, two planes are constructed, both with normal pointing from start_posn to end_posn. The first plane passes through start_posn; the second plane passes through end_posn. Given a point p and time t, this function returns false_value if ANY of the following are true: (a) t<activation_time; (b) t>=deactivation_time; (c) p is 'behind' start_posn (ie, p lies on one side of the start_posn plane and end_posn lies on the other side); (d) p is 'ahead' of the front (ie, p lies one one side of the front and start_posn lies on the other side); (e) the distance between p and the front is greater than active_length. Otherwise, the point is 'in the active zone' and the function returns true_value.

ICs

Kernels

Materials

  • Porous Flow App
  • PorousFlowAddMaterialActionMakes sure that the correct nodal and/or qp materials are added for each property
  • PorousFlowAddMaterialJoinerAdds PorousFlowJoiner materials as required for each phase-dependent property
  • PorousFlow1PhaseFullySaturatedThis Material is used for the fully saturated single-phase situation where porepressure is the primary variable
  • PorousFlow1PhaseMD_GaussianThis Material is used for the single-phase situation where log(mass-density) is the primary variable. calculates the 1 porepressure and the 1 saturation in a 1-phase situation, and derivatives of these with respect to the PorousFlowVariables. A gaussian capillary function is assumed
  • PorousFlow1PhasePThis Material is used for the fully saturated single-phase situation where porepressure is the primary variable
  • PorousFlow2PhasePPThis Material calculates the 2 porepressures and the 2 saturations in a 2-phase situation, and derivatives of these with respect to the PorousFlowVariables
  • PorousFlow2PhasePSThis Material calculates the 2 porepressures and the 2 saturations in a 2-phase situation, and derivatives of these with respect to the PorousFlowVariables.
  • PorousFlowAqueousPreDisChemistryThis Material forms a std::vector of mineralisation reaction rates (L(precipitate)/L(solution)/s) appropriate to the aqueous precipitation-dissolution system provided. Note: the PorousFlowTemperature must be measured in Kelvin.
  • PorousFlowAqueousPreDisMineralThis Material forms a std::vector of mineral concentrations (volume-of-mineral/volume-of-material) appropriate to the aqueous precipitation-dissolution system provided.
  • PorousFlowBrineThis Material calculates fluid properties for brine at the quadpoints or nodes
  • PorousFlowConstantBiotModulusComputes the Biot Modulus, which is assumed to be constant for all time. Sometimes 1 / BiotModulus is called storativity
  • PorousFlowConstantThermalExpansionCoefficientComputes the effective thermal expansion coefficient, (biot_coeff - porosity) * drained_coefficient + porosity * fluid_coefficient.
  • PorousFlowDarcyVelocityMaterialThis Material calculates the Darcy velocity for all phases
  • PorousFlowDiffusivityConstThis Material provides constant tortuosity and diffusion coefficients
  • PorousFlowDiffusivityMillingtonQuirkThis Material provides saturation-dependent diffusivity using the Millington-Quirk model
  • PorousFlowEffectiveFluidPressureThis Material calculates an effective fluid pressure: effective_stress = total_stress + biot_coeff*effective_fluid_pressure. The effective_fluid_pressure = sum_{phases}(S_phase * P_phase)
  • PorousFlowFluidStateClass for fluid state calculations using persistent primary variables and a vapor-liquid flash
  • PorousFlowFluidStateBrineCO2Fluid state class for brine and CO2
  • PorousFlowFluidStateSingleComponentClass for single component multiphase fluid state calculations using pressure and enthalpy
  • PorousFlowFluidStateWaterNCGFluid state class for water and non-condensable gas
  • PorousFlowJoinerThis Material forms a std::vector of properties, old properties (optionally), and derivatives, out of the individual phase properties
  • PorousFlowMassFractionThis Material forms a std::vector<std::vector ...> of mass-fractions out of the individual mass fractions
  • PorousFlowMassFractionAqueousEquilibriumChemistryThis Material forms a std::vector<std::vector ...> of mass-fractions (total concentrations of primary species (m{3}(primary species)/m{3}(solution)) and since this is for an aqueous system only, mass-fraction equals volume-fraction) corresponding to an aqueous equilibrium chemistry system. The first mass fraction is the concentration of the first primary species, etc, and the last mass fraction is the concentration of H2O.
  • PorousFlowMatrixInternalEnergyThis Material calculates the internal energy of solid rock grains, which is specific_heat_capacity * density * temperature. Kernels multiply this by (1 - porosity) to find the energy density of the porous rock in a rock-fluid system
  • PorousFlowNearestQpProvides the nearest quadpoint to a node in each element
  • PorousFlowPermeabilityConstThis Material calculates the permeability tensor assuming it is constant
  • PorousFlowPermeabilityConstFromVarThis Material calculates the permeability tensor given by the input variables
  • PorousFlowPermeabilityExponentialThis Material calculates the permeability tensor from an exponential function of porosity: k = k_ijk * BB exp(AA phi), where k_ijk is a tensor providing the anisotropy, phi is porosity, and AA and BB are empirical constants. The user can provide input for the function expressed in ln k, log k or exponential forms (see poroperm_function).
  • PorousFlowPermeabilityKozenyCarmanThis Material calculates the permeability tensor from a form of the Kozeny-Carman equation, k = k_ijk * A * phin / (1 - phi)m, where k_ijk is a tensor providing the anisotropy, phi is porosity, n and m are positive scalar constants and A is given in one of the following forms: A = k0 * (1 - phi0)^m / phi0^n (where k0 and phi0 are a reference permeability and porosity) or A = f * d^2 (where f is a scalar constant and d is grain diameter.
  • PorousFlowPermeabilityTensorFromVarThis Material calculates the permeability tensor from a coupled variable multiplied by a tensor
  • PorousFlowPorosityThis Material calculates the porosity PorousFlow simulations
  • PorousFlowPorosityConstThis Material calculates the porosity assuming it is constant
  • PorousFlowPorosityHMBiotModulusThis Material calculates the porosity for hydro-mechanical simulations, assuming that the Biot modulus and the fluid bulk modulus are both constant. This is useful for comparing with solutions from poroelasticity theory, but is less accurate than PorousFlowPorosity
  • PorousFlowRelativePermeabilityBCBrooks-Corey relative permeability
  • PorousFlowRelativePermeabilityBWBroadbridge-White form of relative permeability
  • PorousFlowRelativePermeabilityConstThis class sets the relative permeability to a constant value (default = 1)
  • PorousFlowRelativePermeabilityCoreyThis Material calculates relative permeability of the fluid phase, using the simple Corey model ((S-S_res)/(1-sum(S_res)))^n
  • PorousFlowRelativePermeabilityFLACThis Material calculates relative permeability of a phase using a model inspired by FLAC
  • PorousFlowRelativePermeabilityVGThis Material calculates relative permeability of a phase using the van Genuchten model
  • PorousFlowSingleComponentFluidThis Material calculates fluid properties at the quadpoints or nodes for a single component fluid
  • PorousFlowTemperatureMaterial to provide temperature at the quadpoints or nodes and derivatives of it with respect to the PorousFlow variables
  • PorousFlowThermalConductivityFromPorosityThis Material calculates rock-fluid combined thermal conductivity for the single phase, fully saturated case by using a linear weighted average. Thermal conductivity = phi * lambda_f + (1 - phi) * lambda_s, where phi is porosity, and lambda_f, lambda_s are thermal conductivities of the fluid and solid (assumed constant)
  • PorousFlowThermalConductivityIdealThis Material calculates rock-fluid combined thermal conductivity by using a weighted sum. Thermal conductivity = dry_thermal_conductivity + S^exponent * (wet_thermal_conductivity - dry_thermal_conductivity), where S is the aqueous saturation
  • PorousFlowTotalGravitationalDensityFullySaturatedFromPorosityThis Material calculates the porous medium density from the porosity, solid density (assumed constant) and fluid density, for the fully-saturated single fluid phase case, using a linear weighted average. density = phi * rho_f + (1 - phi) * rho_s, where phi is porosity and rho_f, rho_s are the densities of the fluid and solid phases.
  • PorousFlowVolumetricStrainCompute volumetric strain and the volumetric_strain rate, for use in PorousFlow.

PorousFlowBasicTHM

  • Porous Flow App
  • PorousFlowBasicTHMAdds Kernels and fluid-property Materials necessary to simulate a single-phase, single-component fully-saturated flow problem. No upwinding and no mass lumping of the fluid mass are used. The fluid-mass time derivative is close to linear, and is perfectly linear if multiply_by_density=false. These features mean the results may differ slightly from the Unsaturated Action case. To run a simulation you will also need to provide various other Materials for each mesh block, depending on your simulation type, viz: permeability, constant Biot modulus, constant thermal expansion coefficient, porosity, elasticity tensor, strain calculator, stress calculator, matrix internal energy, thermal conductivity, diffusivity

PorousFlowFullySaturated

  • Porous Flow App
  • PorousFlowFullySaturatedAdds Kernels and fluid-property Materials necessary to simulate a single-phase fully-saturated flow problem. Full-upwinding of fluid flow is not available in this Action, so the results may differ slightly from the Unsaturated Action. However KT stabilization may be employed for both the fluid and any heat flow. 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

PorousFlowUnsaturated

  • Porous Flow App
  • PorousFlowUnsaturatedAdds 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

Postprocessors

UserObjects

  • Porous Flow App
  • AdvectiveFluxCalculatorConstantVelocityCompute K_ij (a measure of advective flux from node i to node j) and R+ and R- (which quantify amount of antidiffusion to add) in the Kuzmin-Turek FEM-TVD multidimensional scheme. Constant advective velocity is assumed
  • PorousFlowAdvectiveFluxCalculatorSaturatedComputes the advective flux of fluid of given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowAdvectiveFluxCalculatorSaturatedHeatComputes the advective flux of heat energy in the given phase, assuming fully-saturated conditions. Hence this UserObject is only relevant to single-phase situations. Explicitly, the UserObject computes (density * enthalpy / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponentComputes the advective flux of fluid of given phase and fluid component. Explicitly, the UserObject computes (mass_fraction * density / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowAdvectiveFluxCalculatorUnsaturatedComputes the advective flux of fluid of given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowAdvectiveFluxCalculatorUnsaturatedHeatComputes the advective flux of heat energy in a given phase, assuming unsaturated conditions. Hence this UserObject is only relevant to single-phase situations, or multi-phase situations where each fluid component appears in one phase only. Explicitly, the UserObject computes (density * enthalpy * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponentComputes the advective flux of fluid of given phase and component. Hence this UserObject is relevant to multi-phase, multi-component situations. Explicitly, the UserObject computes (mass_fraction * density * relative_permeability / viscosity) * (- permeability * (grad(P) - density * gravity)), using the Kuzmin-Turek FEM-TVD multidimensional stabilization scheme
  • PorousFlowBrineCO2Fluid state class for brine and CO2
  • PorousFlowCapillaryPressureBCBrooks-Corey capillary pressure
  • PorousFlowCapillaryPressureBWBroadbridge and White capillary pressure for negligable Kn
  • PorousFlowCapillaryPressureConstConstant capillary pressure
  • PorousFlowCapillaryPressureRSCRogers-Stallybrass-Clements version of effective saturation for the water phase, valid for residual saturations = 0, and viscosityOil = 2 * viscosityWater. seff_water = 1 / sqrt(1 + exp((Pc - shift) / scale)), where scale = 0.25 * scale_ratio * oil_viscosity.
  • PorousFlowCapillaryPressureVGvan Genuchten capillary pressure
  • PorousFlowDictatorHolds information on the PorousFlow variable names
  • PorousFlowSumQuantityRecords total mass flowing into a borehole
  • PorousFlowWaterNCGFluid state class for water and non-condensable gas
  • PorousFlowWaterVaporFluid state class for water and vapor

Variables