Porous Flow Failure Analysis Report

Introduction

The FAR for the Porous Flow module describes the system functional and non-functional requirements that describe the expected interactions that the software shall provide.

Dependencies

The Porous Flow module is developed using MOOSE and can itself be based on various MOOSE modules, as such the FAR for the Porous Flow module is dependent upon the following documents.

Failure Analysis Requirements

The following is a complete list for all the requirements related to failure analysis for the Porous Flow module.

  • porous_flow: Actions
  • 13.1.2The system shall produce an error when attempting to use a PorousFlowBrine Material without any NaCl variable

    Specification(s): fullsat_brine_except1

    Design: Brine and carbon dioxide

    Issue(s): #10093#16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.3The system shall produce an error when attempting to use a PorousFlowBrine Material at the same time as a PorousFlowSimpleFluidProperties Material

    Specification(s): fullsat_brine_except2

    Design: Brine and carbon dioxide

    Issue(s): #10093#16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.4The system shall produce an error when attempting to use a PorousFlowSingleComponentFluid Material at the same time as a PorousFlowBrine Material

    Specification(s): fullsat_brine_except3

    Design: Brine and carbon dioxide

    Issue(s): #10093#16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.5The system shall produce an error when attempting to use a PorousFlowSingleComponentFluid Material without a fluid-properties UserObject

    Specification(s): fullsat_brine_except4

    Design: PorousFlowFullySaturated

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.6The system shall produce an error when attempting to use a non-standard pressure unit choice with PorousFlowBrine

    Specification(s): fullsat_brine_except5

    Design: PorousFlowFullySaturated

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.7The system shall produce an error when attempting to use a non-standard time unit choice with PorousFlowBrine

    Specification(s): fullsat_brine_except6

    Design: PorousFlowFullySaturated

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.8The system shall produce an error if PorousFlowUnsaturated is used with no stabilization.

    Specification(s): unsat_except1

    Design: PorousFlowUnsaturated

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.1.9The system shall produce an error if the number of variables to save fluid-component rates-of-change into is not equal to the number of fluid components

    Specification(s): unsat_except2

    Design: PorousFlowUnsaturated

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Aux Kernels
  • 13.3.7An error shall be produced if the system is asked to calculate the Darcy flow velocity vector on a lower-dimensional fracture, but the variables are not defined only on the lower-dimensional elements.

    Specification(s): darcy_velocity_lower_except

    Design: PorousFlowDarcyVelocityComponentLowerDimensional

    Issue(s): #17159

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.3.8The system shall be able to calculate a measure of element length in a given direction, and shall produce an error if a nodal variable is used to store the results.

    Specification(s): element_length_except1

    Design: PorousFlowElementLength

    Issue(s): #18232

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.3.9The system shall be able to calculate a measure of element length in a given direction, and shall produce an error if the direction is incorrectly specified.

    Specification(s): element_length_except2

    Design: PorousFlowElementLength

    Issue(s): #18232

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.3.12The system shall be able to calculate element normal, and shall produce an error if a nodal variable is used to store the result.

    Specification(s): element_normal_except1

    Design: PorousFlowElementNormal

    Issue(s): #18232

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.3.13The system shall be able to calculate element normal for 1D elements if provided with a perpendicular vector, and shall produce an error if the perpendicular vector is incorrectly specified.

    Specification(s): element_normal_except2

    Design: PorousFlowElementNormal

    Issue(s): #18232

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.3.14The system shall be able to calculate element normals for meshes containing 3D elements if provided with a default value for the 3D elements, but shall produce an error if that default value is incorrectly specified.

    Specification(s): element_normal_except3

    Design: PorousFlowElementNormal

    Issue(s): #18232

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Basic Advection
  • 13.4.1

    Specification(s): except1

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.4.2

    Specification(s): except2

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Chemistry
  • 13.7.1The system shall produce an error if the number of secondary activity coefficients is not equal to the number of secondary species.

    Specification(s): except1

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.2The system shall produce an error if more than one phase is supplied to for a saturated geochemistry system.

    Specification(s): except2

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.3The system shall produce an error if the number of mass fractions supplied is not correct.

    Specification(s): except3

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.4The system shall produce an error if the number of equilibrium constants is not equal to the number of reactions.

    Specification(s): except5

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.5The system shall produce an error if the number of activity coefficients is not equal to the number of primary species.

    Specification(s): except6

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.6The system shall produce an error if the number of stoichiometric coefficients is not equal to the product of the number of reactions and number of primary species.

    Specification(s): except7

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.7The system shall produce an error if the number of reactive surface areas is not equal to the number of reactions.

    Specification(s): except8

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.8The system shall produce an error if the number of kinetic rate constants is not equal to the number of reactions.

    Specification(s): except9

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.9The system shall produce an error if the number of activation energies is not equal to the number of reactions.

    Specification(s): except10

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.10The system shall produce an error if the number of molar volumes is not equal to the number of reactions.

    Specification(s): except11

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.11The system shall produce an error if the number of theta exponents is not equal to the number of reactions.

    Specification(s): except12

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.12The system shall produce an error if the number of eta exponents is not equal to the number of reactions.

    Specification(s): except13

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.13The system shall produce an error if the number of initial concentrations is not equal to the number of kinetic reactions.

    Specification(s): except14

    Design: PorousFlow Aqueous PreDis Mineral

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.14The system shall produce an error if the number of mineral secondary species is not equal to the number of kinetic reactions.

    Specification(s): except15

    Design: PorousFlow PreDis

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.15The system shall produce an error if the number of stoichiometric coefficients is not equal to the number of kinetic reactions.

    Specification(s): except16

    Design: PorousFlow PreDis

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.16The system shall produce an error if the number of equilibrium reactions specified is not equal to the actual number of reactions in the system.

    Specification(s): except17

    Design: PorousFlow Mass Fraction Aqueous Equilibrium Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.17The system shall produce an error if the number of kinetic reactions specified is not equal to the actual number of reactions in the system.

    Specification(s): except18

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.18The system shall produce an error if no initial mineral concentration is supplied when porosity depends on chemistry.

    Specification(s): except19

    Design: PorousFlowPorosity

    Issue(s): #10847#11049

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.19The system shall produce an error if no reference chemical values are supplied when porosity depends on chemistry.

    Specification(s): except20

    Design: PorousFlowPorosity

    Issue(s): #10847#11049

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.20The system shall produce an error if the aqueous phase number is not less than the number of phases.

    Specification(s): except21

    Design: PorousFlowDictator

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.7.21The system shall produce an error if no fluid phases are present.

    Specification(s): except22

    Design: PorousFlow Aqueous PreDis Chemistry

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Functions
  • 13.17.1

    Specification(s): mpf_except1

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Heat Advection
  • 13.19.1The system shall produce an error when the kernel describing heat advection by a single-phase fluid is used in a multi-phase situation.

    Specification(s): except1

    Design: PorousFlowFullySaturatedUpwindHeatAdvection

    Issue(s): #16841

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Hysteresis
  • 13.23.1If the liquid phase number exceeds the number of phases in the system, PorousFlow shall produce an appropriate error message and exit

    Specification(s): except01

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.2The maximum order for hysteretic relative permeabilities and capillary pressures is 3 and if the user specifies an initial order greater than this amount, an error shall be thrown

    Specification(s): except02

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.3An error shall be thrown if the initial order of hysteresis is incommensurate with previous_turning_points

    Specification(s): except03

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.4An error shall be thrown if the hysteretic turning points do not lie in the range [0, 1]

    Specification(s): except04

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.5An error shall be thrown if the hysteretic turning points do not lie in the range [0, 1]

    Specification(s): except05

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.6An error shall be thrown if the turning points are incorrectly ordered

    Specification(s): except06

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.7An error shall be thrown if the turning points are incorrectly ordered

    Specification(s): except07

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.8An error shall be thrown if the turning points are incorrectly ordered

    Specification(s): except08

    Design: PorousFlowHysteresisOrder

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.9An error shall be thrown if the hysteresis turning-point information is requested for the Nth turning point, when N exceeds the maximum number of turning points

    Specification(s): except09

    Design: PorousFlowHysteresisOrderPorousFlowPropertyAux

    Issue(s): #16021

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.10An error shall be thrown if the maximum gas residual saturation is greater than 1 - minimum_liquid_saturation in hysteretic problems

    Specification(s): except10

    Design: Hysteresis in PorousFlow

    Issue(s): #16129

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.11An error shall be thrown if parameters are chosen such that the high and low extension regions of the hysteretic capillary pressure overlap

    Specification(s): except11

    Design: Hysteresis in PorousFlow

    Issue(s): #16129

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.12A warning shall be produced if the residual saturation is not greater than the minimum saturation in hysteretic simulations

    Specification(s): except12

    Design: Hysteresis in PorousFlow

    Issue(s): #16129

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.13An exception shall be thrown if a single-phase hysteretic capillary-pressure Material is used in situations with more than one fluid phase

    Specification(s): except13

    Design: PorousFlow1PhaseHysP

    Issue(s): #16129

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.14An exception shall be thrown if a two-phase PP hysteretic capillary-pressure Material is used in models that do not have exactly 2 phases

    Specification(s): except14

    Design: PorousFlow2PhaseHysPP

    Issue(s): #16260

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.15An exception shall be thrown if a two-phase PS hysteretic capillary-pressure Material is used in models that do not have exactly 2 phases

    Specification(s): except15

    Design: PorousFlow2PhaseHysPS

    Issue(s): #16260

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.23.16When using hysteretic relative permeabilities, an exception shall be thrown if the gas residual saturation is not less than 1 - liquid_residual_saturation

    Specification(s): except16

    Design: PorousFlowHystereticRelativePermeabilityLiquidPorousFlowHystereticRelativePermeabilityGas

    Issue(s): #16324

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • porous_flow: Poroperm
  • 13.32.6The system shall produce an error if the variable value used for A in the Kozeny Carman permeability is less than 0.

    Specification(s): PermFromPoro02_var_error

    Design: PermeabilityPorousFlowPermeabilityKozenyCarmanFromVar

    Issue(s): #30339

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.7The system shall produce an error if a parameter incompatible with the permeability function is provided.

    Specification(s): PermFromPoro02_param_error

    Design: PermeabilityPorousFlowPermeabilityKozenyCarman

    Issue(s): #30339

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.15The system shall produce an error if the porosity depends on temperature but no thermal expansion coefficient is provided.

    Specification(s): except1

    Design: PorosityPorousFlowPorosity

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.16The system shall produce an error if the porosity depends on porepressure but no solid bulk modulus is provided.

    Specification(s): except2

    Design: PorosityPorousFlowPorosity

    Issue(s): #10847

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.21The system shall produce an error if a linear porosity relationship that depends on effective fluid pressure is used if there is no effective fluid pressure material.

    Specification(s): linear_except1

    Design: PorosityPorousFlowPorosityLinear

    Issue(s): #18079

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.22The system shall produce an error if a linear porosity relationship that depends on temperature is used if there is no temperature material.

    Specification(s): linear_except2

    Design: PorosityPorousFlowPorosityLinear

    Issue(s): #18079

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException

  • 13.32.23The system shall produce an error if a linear porosity relationship that depends on volumetric strain is used if there is no volumetric-strain material.

    Specification(s): linear_except3

    Design: PorosityPorousFlowPorosityLinear

    Issue(s): #18079

    Collection(s): FUNCTIONALFAILURE_ANALYSIS

    Type(s): RunException