- PorousFlowDictatorThe UserObject that holds the list of PorousFlow variable names
C++ Type:UserObjectName
Unit:(no unit assumed)
Controllable:No
Description:The UserObject that holds the list of PorousFlow variable names
- fpThe name of the user object for fluid properties
C++ Type:UserObjectName
Unit:(no unit assumed)
Controllable:No
Description:The name of the user object for fluid properties
- phaseThe phase number
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The phase number
PorousFlowMultiComponentFluid
This Material calculates fluid properties for a multicomponent fluid
Recommended choice of units
Most of MOOSE is independent of the choice of units, but the units must be kept consistent throughout the input file.
For instance, time can be measured in seconds, nano-seconds, years, etc, providing this choice is used everywhere.
For instance, you must specify fluid bulk modulus and solid Young's modulus using the same units (for example, both in GPa).
PorousFlow does not check the consistency of units in the input file.
However, the FluidProperties module assumes that the pressure units are Pascals, the time units are seconds, temperature is measured in Kelvin, distance is measured in metres, mass in kilograms and energy in Joules. Therefore, when using this module, users are ordinarily restricted to using these standard SI units. Almost all PorousFlow input files use the FluidProperties module. Therefore it is recommended to use these standard SI units everywhere in your input file.
Alternate unit choices
PorousFlowMultiComponentFluid
allows different units to be employed: it modifies the input and output of the FluidProperties module to reflect the choice of units.
For instance, suppose you choose to measure temperature in Celsius. Then
PorousFlowMultiComponentFluid
will add 273.15 to your temperature before feeding it to the FluidProperties module. No other alterations to the FluidProperties input/output are needed.For instance, suppose you choose to measure pressure in MPa. Then
PorousFlowMultiComponentFluid
will multiply your pressure by before feeding it to the FluidProperties module. Since the viscosity returned by the FluidProperties module has units Pa.s, it needs to be converted to MPa.s before using it in the remainder of PorousFlow, so the FluidProperties viscosity is multiplied by .
If you choose non-default SI units, you must ensure that all the other parameters in your input file use these non-default units. For instance, if you choose to measure pressure in MPa, then your solid-mechanical stresses, Young's moduli, strengths, etc, must also be specified in MPa. That is, PorousFlowMultiComponentFluid
only interfaces with the FluidProperties module: it doesn't also change your pressure boundary conditions, end time, gravity, etc: all these must be specified by you in the units you choose. See PorousFlowSingleComponentFluid for more details.
Available unit systems
PorousFlowMultiComponentFluid
includes the following choices for unit systems
Default: Pascals, seconds and Kelvin
No changes to the input or output of the FluidProperties module are required
Temperature in Celsius
Choosing the temperature unit to be Celsius means that 273.15 is added to all PorousFlow temperatures before feeding them to the FluidProperties module.
Other input-file objects that may need to be specified in Celsius are boundary conditions, initial conditions, PorousFlowSinks, etc.
All objects in the input file need to be specified in Celsius, except the FluidProperties objects.
Pressure (and stress) in MPa
Choosing the pressure unit to be MPa means that the PorousFlow pressures are multiplied by before feeding them to the FluidProperties module. The viscosity returned by the FluidProperties module is multiplied by (and any quantity from choosing non-default time units) before handing back to the remainder of PorousFlow.
In addition, you must remember that solid mechanical stresses should be measured in MPa, so moduli and strengths need to be specified in MPa. Similarly, boundary tractions or pressures need to be specified in MPa.
Remember that the FluidProperties module always uses Pa, m, s and J.
Alternate time units
Choosing the time unit to be hours means no change is made to the inputs to the FluidProperties module.
You must remember that fluid and heat sources must be measured in kg.m.time and J.m.time, respectively (where "time" is "hours", "days" or "years" depending on your specific choice). Remember too that the thermal conductivity of the solid skeleton must be measured in J.m.K.time. Velocities, radioactive decay rates, chemical precipitation and reaction rates, dispersion tensors and diffusion coefficients are similarly impacted.
Remember that the FluidProperties module always uses Pa, m, s and J.
Hours
The viscosity returned by the FluidProperties module is multiplied by (and any quantity from choosing non-default pressure units) before handing back to the remainder of PorousFlow.
Days
The viscosity returned by the FluidProperties module is multiplied by (and any quantity from choosing non-default pressure units) before handing back to the remainder of PorousFlow.
Julian years
The viscosity returned by the FluidProperties module is multiplied by (and any quantity from choosing non-default pressure units) before handing back to the remainder of PorousFlow.
Input Parameters
- at_nodesFalseEvaluate Material properties at nodes instead of quadpoints
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Evaluate Material properties at nodes instead of quadpoints
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- compute_density_and_viscosityTrueCompute the fluid density and viscosity
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Compute the fluid density and viscosity
- compute_enthalpyTrueCompute the fluid enthalpy
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Compute the fluid enthalpy
- compute_internal_energyTrueCompute the fluid internal energy
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Compute the fluid internal energy
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- pressure_unitPaThe unit of the pressure variable used everywhere in the input file except for in the FluidProperties-module objects
Default:Pa
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The unit of the pressure variable used everywhere in the input file except for in the FluidProperties-module objects
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- temperature_unitKelvinThe unit of the temperature variable
Default:Kelvin
C++ Type:MooseEnum
Unit:(no unit assumed)
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
Default:seconds
C++ Type:MooseEnum
Unit:(no unit assumed)
Controllable:No
Description:The unit of time used everywhere in the input file except for in the FluidProperties-module objects
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
- xThe mass fraction variable
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The mass fraction variable
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object