www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
PorousFlowUnsaturated Class Reference

Action for simulation involving a single phase, partially or fully saturated fluid. More...

#include <PorousFlowUnsaturated.h>

Inheritance diagram for PorousFlowUnsaturated:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 PorousFlowUnsaturated (const InputParameters &params)
 
virtual void act () override
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type) override
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type)
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 
void timedAct ()
 
MooseObjectName uniqueActionName () const
 
const std::string & specificTaskName () const
 
const std::set< std::string > & getAllTasks () const
 
void appendTask (const std::string &task)
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
PerfGraphperfGraph ()
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &name, const std::string *param=nullptr) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 

Public Attributes

const ConsoleStream _console
 

Static Public Attributes

static constexpr auto SYSTEM
 
static constexpr auto NAME
 

Protected Types

enum  RelpermTypeChoiceEnum { RelpermTypeChoiceEnum::FLAC, RelpermTypeChoiceEnum::COREY }
 Fluid relative permeability type (FLAC or Corey) More...
 
enum  CouplingTypeEnum { CouplingTypeEnum::Hydro, CouplingTypeEnum::ThermoHydro, CouplingTypeEnum::HydroMechanical, CouplingTypeEnum::ThermoHydroMechanical }
 Determines the coupling type. More...
 
enum  FluidPropertiesTypeEnum { FluidPropertiesTypeEnum::PorousFlowSingleComponentFluid, FluidPropertiesTypeEnum::PorousFlowBrine, FluidPropertiesTypeEnum::Custom }
 Determines the fluid-properties type. More...
 
enum  StabilizationEnum { StabilizationEnum::None, StabilizationEnum::Full, StabilizationEnum::KT }
 

Protected Member Functions

virtual void addKernels () override
 Add all Kernels. More...
 
virtual void addAuxObjects () override
 Add all AuxVariables and AuxKernels. More...
 
virtual void addMaterialDependencies () override
 Add all material dependencies so that the correct version of each material can be added. More...
 
virtual void addMaterials () override
 Add all Materials. More...
 
virtual void addUserObjects () override
 Add all other UserObjects. More...
 
virtual void addDictator () override
 Add the PorousFlowDictator object. More...
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 
void addSaturationAux (unsigned phase)
 Add an AuxVariable and AuxKernel to calculate saturation. More...
 
void addDarcyAux (const RealVectorValue &gravity)
 Add AuxVariables and AuxKernels to calculate Darcy velocity. More...
 
void addStressAux ()
 Add AuxVariables and AuxKernels to compute effective stress. More...
 
void addTemperatureMaterial (bool at_nodes)
 Adds a nodal and a quadpoint Temperature material. More...
 
void addMassFractionMaterial (bool at_nodes)
 Adds a nodal and a quadpoint MassFraction material. More...
 
void addEffectiveFluidPressureMaterial (bool at_nodes)
 Adds a nodal and a quadpoint effective fluid pressure material. More...
 
void addNearestQpMaterial ()
 Adds a PorousFlowNearestQp material. More...
 
void addVolumetricStrainMaterial (const std::vector< VariableName > &displacements, const std::string &base_name)
 Adds a quadpoint volumetric strain material. More...
 
void addSingleComponentFluidMaterial (bool at_nodes, unsigned phase, bool compute_density_and_viscosity, bool compute_internal_energy, bool compute_enthalpy, const UserObjectName &fp, const MooseEnum &temperature_unit, const MooseEnum &pressure_unit, const MooseEnum &time_unit)
 Adds a single-component fluid Material. More...
 
void addBrineMaterial (const VariableName xnacl, bool at_nodes, unsigned phase, bool compute_density_and_viscosity, bool compute_internal_energy, bool compute_enthalpy, const MooseEnum &temperature_unit)
 Adds a brine fluid Material. More...
 
void addRelativePermeabilityConst (bool at_nodes, unsigned phase, Real kr)
 Adds a relative-permeability Material of the constant variety (primarily to add kr = 1 in actions that add a default relatively permeability for objects that require kr even when the flow is fully saturated with a single phase) More...
 
void addRelativePermeabilityCorey (bool at_nodes, unsigned phase, Real n, Real s_res, Real sum_s_res)
 Adds a relative-permeability Material of the Corey variety. More...
 
void addRelativePermeabilityFLAC (bool at_nodes, unsigned phase, Real m, Real s_res, Real sum_s_res)
 Adds a relative-permeability Material of the FLAC variety. More...
 
void addCapillaryPressureVG (Real m, Real alpha, std::string userobject_name)
 Adds a van Genuchten capillary pressure UserObject. More...
 
void addAdvectiveFluxCalculatorSaturated (unsigned phase, bool multiply_by_density, std::string userobject_name)
 
void addAdvectiveFluxCalculatorUnsaturated (unsigned phase, bool multiply_by_density, std::string userobject_name)
 
void addAdvectiveFluxCalculatorSaturatedHeat (unsigned phase, bool multiply_by_density, std::string userobject_name)
 
void addAdvectiveFluxCalculatorUnsaturatedHeat (unsigned phase, bool multiply_by_density, std::string userobject_name)
 
void addAdvectiveFluxCalculatorSaturatedMultiComponent (unsigned phase, unsigned fluid_component, bool multiply_by_density, std::string userobject_name)
 
void addAdvectiveFluxCalculatorUnsaturatedMultiComponent (unsigned phase, unsigned fluid_component, bool multiply_by_density, std::string userobject_name)
 
void associateWithParameter (const std::string &param_name, InputParameters &params) const
 
void associateWithParameter (const InputParameters &from_params, const std::string &param_name, InputParameters &params) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

const bool _add_saturation_aux
 Add an Aux Variable to record saturation. More...
 
const Real _van_genuchten_alpha
 Van Genuchten alpha parameter. More...
 
const Real _van_genuchten_m
 Van Genuchten m parameter. More...
 
enum PorousFlowUnsaturated::RelpermTypeChoiceEnum _relperm_type
 
const Real _relative_permeability_exponent
 Relative permeability exponent. More...
 
const Real _s_res
 Residual saturation to use in the relative permeability expressions. More...
 
const std::string _capillary_pressure_name
 Name of the capillary pressure UserObject. More...
 
const VariableName _pp_var
 Porepressure NonlinearVariable name. More...
 
enum PorousFlowSinglePhaseBase::CouplingTypeEnum _coupling_type
 
const bool _thermal
 Flags to indicate whether thermal or mechanical effects are included. More...
 
const bool _mechanical
 
enum PorousFlowSinglePhaseBase::FluidPropertiesTypeEnum _fluid_properties_type
 
UserObjectName _fp
 Name of the fluid-properties UserObject. More...
 
const Real _biot_coefficient
 Fluid specific heat capacity at constant volume. More...
 
const bool _add_darcy_aux
 Add a AuxVariables to record Darcy velocity. More...
 
const bool _add_stress_aux
 Add AuxVariables for stress. More...
 
VariableName _nacl_name
 Name of the NaCl variable. More...
 
const std::vector< AuxVariableName > _save_component_rate_in
 Name of the variables (if any) that will record the fluid-components' rate of change. More...
 
const MooseEnum _temperature_unit
 Unit used for temperature. More...
 
const MooseEnum _pressure_unit
 Unit used for porepressure. More...
 
const MooseEnum _time_unit
 Unit used for time. More...
 
const std::string _base_name
 base_name used in the TensorMechanics strain calculator More...
 
std::vector< std::string > _included_objects
 List of Kernels, AuxKernels, Materials, etc, that are added in this input file. More...
 
const std::string _dictator_name
 The name of the PorousFlowDictator object to be added. More...
 
const unsigned int _num_aqueous_equilibrium
 Number of aqueous-equilibrium secondary species. More...
 
const unsigned int _num_aqueous_kinetic
 Number of aqeuous-kinetic secondary species that are involved in mineralisation. More...
 
const RealVectorValue _gravity
 Gravity. More...
 
const std::vector< VariableName > _mass_fraction_vars
 Name of the mass-fraction variables (if any) More...
 
const unsigned _num_mass_fraction_vars
 Number of mass-fraction variables. More...
 
const std::vector< VariableName > _temperature_var
 Name of the temperature variable (if any) More...
 
const std::vector< VariableName > & _displacements
 Displacement NonlinearVariable names (if any) More...
 
const unsigned _ndisp
 Number of displacement variables supplied. More...
 
std::vector< VariableName > _coupled_displacements
 Displacement Variable names. More...
 
const MooseEnum _flux_limiter_type
 Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme. More...
 
enum PorousFlowActionBase::StabilizationEnum _stabilization
 
const bool _strain_at_nearest_qp
 Evaluate strain at the nearest quadpoint for porosity that depends on strain. More...
 
Moose::CoordinateSystemType _coord_system
 Coordinate system of the simulation (eg RZ, XYZ, etc) More...
 
bool _transient
 Flag to denote if the simulation is transient. More...
 
std::string _registered_identifier
 
std::string _specific_task_name
 
std::set< std::string > _all_tasks
 
ActionWarehouse_awh
 
const std::string & _current_task
 
std::shared_ptr< MooseMesh > & _mesh
 
std::shared_ptr< MooseMesh > & _displaced_mesh
 
std::shared_ptr< FEProblemBase > & _problem
 
PerfID _act_timer
 
MooseApp_app
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 
DependencyResolver< std::string > _deps
 All dependencies of kernels, auxkernels, materials, etc, are stored in _dependencies. More...
 

Detailed Description

Action for simulation involving a single phase, partially or fully saturated fluid.

The fluid's saturation is found using the van Genuchten expression, and the relative permeability is found using the FLAC or Corey expression.

Definition at line 19 of file PorousFlowUnsaturated.h.

Member Enumeration Documentation

◆ CouplingTypeEnum

enum PorousFlowSinglePhaseBase::CouplingTypeEnum
strongprotectedinherited

Determines the coupling type.

Enumerator
Hydro 
ThermoHydro 
HydroMechanical 
ThermoHydroMechanical 

Definition at line 35 of file PorousFlowSinglePhaseBase.h.

35  {
36  Hydro,
37  ThermoHydro,
38  HydroMechanical,
39  ThermoHydroMechanical
enum PorousFlowSinglePhaseBase::CouplingTypeEnum _coupling_type

◆ FluidPropertiesTypeEnum

Determines the fluid-properties type.

Enumerator
PorousFlowSingleComponentFluid 
PorousFlowBrine 
Custom 

Definition at line 47 of file PorousFlowSinglePhaseBase.h.

47  {
50  Custom
PorousFlowSingleComponentFluidTempl< false > PorousFlowSingleComponentFluid
Fluid properties of Brine.
enum PorousFlowSinglePhaseBase::FluidPropertiesTypeEnum _fluid_properties_type

◆ RelpermTypeChoiceEnum

Fluid relative permeability type (FLAC or Corey)

Enumerator
FLAC 
COREY 

Definition at line 43 of file PorousFlowUnsaturated.h.

43 { FLAC, COREY } _relperm_type;
enum PorousFlowUnsaturated::RelpermTypeChoiceEnum _relperm_type

◆ StabilizationEnum

enum PorousFlowActionBase::StabilizationEnum
strongprotectedinherited
Enumerator
None 
Full 
KT 

Definition at line 83 of file PorousFlowActionBase.h.

83 { None, Full, KT } _stabilization;
enum PorousFlowActionBase::StabilizationEnum _stabilization

Constructor & Destructor Documentation

◆ PorousFlowUnsaturated()

PorousFlowUnsaturated::PorousFlowUnsaturated ( const InputParameters params)

Definition at line 67 of file PorousFlowUnsaturated.C.

68  : PorousFlowSinglePhaseBase(params),
69  _add_saturation_aux(getParam<bool>("add_saturation_aux")),
70  _van_genuchten_alpha(getParam<Real>("van_genuchten_alpha")),
71  _van_genuchten_m(getParam<Real>("van_genuchten_m")),
73  getParam<MooseEnum>("relative_permeability_type").getEnum<RelpermTypeChoiceEnum>()),
74  _relative_permeability_exponent(getParam<Real>("relative_permeability_exponent")),
75  _s_res(getParam<Real>("residual_saturation")),
76  _capillary_pressure_name("PorousFlowUnsaturated_CapillaryPressureVG")
77 {
79  paramError("stabilization", "Some stabilization must be used in PorousFlowUnsaturated");
80 }
const Real _van_genuchten_m
Van Genuchten m parameter.
const bool _add_saturation_aux
Add an Aux Variable to record saturation.
const Real _van_genuchten_alpha
Van Genuchten alpha parameter.
const Real _s_res
Residual saturation to use in the relative permeability expressions.
void paramError(const std::string &param, Args... args) const
const Real _relative_permeability_exponent
Relative permeability exponent.
PorousFlowSinglePhaseBase(const InputParameters &params)
enum PorousFlowUnsaturated::RelpermTypeChoiceEnum _relperm_type
const std::string _capillary_pressure_name
Name of the capillary pressure UserObject.
enum PorousFlowActionBase::StabilizationEnum _stabilization

Member Function Documentation

◆ act()

void PorousFlowActionBase::act ( )
overridevirtualinherited

Implements Action.

Definition at line 133 of file PorousFlowActionBase.C.

134 {
135  // Check if the simulation is transient (note: can't do this in the ctor)
136  _transient = _problem->isTransient();
137 
138  // Make sure that all mesh subdomains have the same coordinate system
139  const auto & all_subdomains = _problem->mesh().meshSubdomains();
140  if (all_subdomains.empty())
141  mooseError("No subdomains found");
142  _coord_system = _problem->getCoordSystem(*all_subdomains.begin());
143  for (const auto & subdomain : all_subdomains)
144  if (_problem->getCoordSystem(subdomain) != _coord_system)
145  mooseError(
146  "The PorousFlow Actions require all subdomains to have the same coordinate system.");
147 
148  // Note: this must be called before addMaterials!
150 
151  // Make the vector of added objects unique
152  std::sort(_included_objects.begin(), _included_objects.end());
153  _included_objects.erase(std::unique(_included_objects.begin(), _included_objects.end()),
154  _included_objects.end());
155 
156  if (_current_task == "add_user_object")
157  addUserObjects();
158 
159  if (_current_task == "add_aux_variable" || _current_task == "add_aux_kernel")
160  addAuxObjects();
161 
162  if (_current_task == "add_kernel")
163  addKernels();
164 
165  if (_current_task == "add_material")
166  addMaterials();
167 }
Moose::CoordinateSystemType _coord_system
Coordinate system of the simulation (eg RZ, XYZ, etc)
virtual void addKernels()
Add all Kernels.
std::vector< std::string > _included_objects
List of Kernels, AuxKernels, Materials, etc, that are added in this input file.
virtual void addMaterials()
Add all Materials.
const std::string & _current_task
bool _transient
Flag to denote if the simulation is transient.
virtual void addAuxObjects()
Add all AuxVariables and AuxKernels.
void mooseError(Args &&... args) const
std::shared_ptr< FEProblemBase > & _problem
virtual void addUserObjects()
Add all other UserObjects.
virtual void addMaterialDependencies()
Add all material dependencies so that the correct version of each material can be added...

◆ addAdvectiveFluxCalculatorSaturated()

void PorousFlowActionBase::addAdvectiveFluxCalculatorSaturated ( unsigned  phase,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 616 of file PorousFlowActionBase.C.

Referenced by PorousFlowFullySaturated::addUserObjects().

619 {
620  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
621  {
622  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturated";
623  InputParameters params = _factory.getValidParams(userobject_type);
624  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
625  params.set<RealVectorValue>("gravity") = _gravity;
626  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
627  params.set<unsigned>("phase") = phase;
628  params.set<bool>("multiply_by_density") = multiply_by_density;
629  _problem->addUserObject(userobject_type, userobject_name, params);
630  }
631 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAdvectiveFluxCalculatorSaturatedHeat()

void PorousFlowActionBase::addAdvectiveFluxCalculatorSaturatedHeat ( unsigned  phase,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 652 of file PorousFlowActionBase.C.

Referenced by PorousFlowFullySaturated::addUserObjects().

655 {
656  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
657  {
658  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturatedHeat";
659  InputParameters params = _factory.getValidParams(userobject_type);
660  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
661  params.set<RealVectorValue>("gravity") = _gravity;
662  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
663  params.set<unsigned>("phase") = phase;
664  params.set<bool>("multiply_by_density") = multiply_by_density;
665  _problem->addUserObject(userobject_type, userobject_name, params);
666  }
667 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAdvectiveFluxCalculatorSaturatedMultiComponent()

void PorousFlowActionBase::addAdvectiveFluxCalculatorSaturatedMultiComponent ( unsigned  phase,
unsigned  fluid_component,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 688 of file PorousFlowActionBase.C.

Referenced by PorousFlowFullySaturated::addUserObjects().

692 {
693  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
694  {
695  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent";
696  InputParameters params = _factory.getValidParams(userobject_type);
697  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
698  params.set<RealVectorValue>("gravity") = _gravity;
699  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
700  params.set<unsigned>("phase") = phase;
701  params.set<bool>("multiply_by_density") = multiply_by_density;
702  params.set<unsigned>("fluid_component") = fluid_component;
703  _problem->addUserObject(userobject_type, userobject_name, params);
704  }
705 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAdvectiveFluxCalculatorUnsaturated()

void PorousFlowActionBase::addAdvectiveFluxCalculatorUnsaturated ( unsigned  phase,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 634 of file PorousFlowActionBase.C.

Referenced by addUserObjects().

637 {
638  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
639  {
640  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorUnsaturated";
641  InputParameters params = _factory.getValidParams(userobject_type);
642  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
643  params.set<RealVectorValue>("gravity") = _gravity;
644  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
645  params.set<unsigned>("phase") = phase;
646  params.set<bool>("multiply_by_density") = multiply_by_density;
647  _problem->addUserObject(userobject_type, userobject_name, params);
648  }
649 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAdvectiveFluxCalculatorUnsaturatedHeat()

void PorousFlowActionBase::addAdvectiveFluxCalculatorUnsaturatedHeat ( unsigned  phase,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 670 of file PorousFlowActionBase.C.

Referenced by addUserObjects().

673 {
674  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
675  {
676  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorUnsaturatedHeat";
677  InputParameters params = _factory.getValidParams(userobject_type);
678  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
679  params.set<RealVectorValue>("gravity") = _gravity;
680  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
681  params.set<unsigned>("phase") = phase;
682  params.set<bool>("multiply_by_density") = multiply_by_density;
683  _problem->addUserObject(userobject_type, userobject_name, params);
684  }
685 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAdvectiveFluxCalculatorUnsaturatedMultiComponent()

void PorousFlowActionBase::addAdvectiveFluxCalculatorUnsaturatedMultiComponent ( unsigned  phase,
unsigned  fluid_component,
bool  multiply_by_density,
std::string  userobject_name 
)
protectedinherited

Definition at line 708 of file PorousFlowActionBase.C.

Referenced by addUserObjects().

710 {
711  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
712  {
713  const std::string userobject_type =
714  "PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent";
715  InputParameters params = _factory.getValidParams(userobject_type);
716  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
717  params.set<RealVectorValue>("gravity") = _gravity;
718  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
719  params.set<unsigned>("phase") = phase;
720  params.set<bool>("multiply_by_density") = multiply_by_density;
721  params.set<unsigned>("fluid_component") = fluid_component;
722  _problem->addUserObject(userobject_type, userobject_name, params);
723  }
724 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const RealVectorValue _gravity
Gravity.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addAuxObjects()

void PorousFlowUnsaturated::addAuxObjects ( )
overrideprotectedvirtual

Add all AuxVariables and AuxKernels.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 315 of file PorousFlowUnsaturated.C.

316 {
318 
320  addSaturationAux(0);
321 }
void addSaturationAux(unsigned phase)
Add an AuxVariable and AuxKernel to calculate saturation.
const bool _add_saturation_aux
Add an Aux Variable to record saturation.
virtual void addAuxObjects() override
Add all AuxVariables and AuxKernels.

◆ addBrineMaterial()

void PorousFlowActionBase::addBrineMaterial ( const VariableName  xnacl,
bool  at_nodes,
unsigned  phase,
bool  compute_density_and_viscosity,
bool  compute_internal_energy,
bool  compute_enthalpy,
const MooseEnum temperature_unit 
)
protectedinherited

Adds a brine fluid Material.

Parameters
xnaclthe variable containing the mass fraction of NaCl in the fluid
phasethe phase number of the fluid
compute_density_and_viscositycompute the density and viscosity of the fluid
compute_internal_energycompute the fluid internal energy
compute_enthalpycompute the fluid enthalpy
at_nodesadd a nodal material
temperature_unitthe unit of temperature (Kelvin or Celsius)

Definition at line 504 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

511 {
512  if (_current_task == "add_material")
513  {
514  std::string material_type = "PorousFlowBrine";
515  InputParameters params = _factory.getValidParams(material_type);
516 
517  params.set<std::vector<VariableName>>("xnacl") = {nacl_brine};
518  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
519  params.set<unsigned int>("phase") = phase;
520  params.set<bool>("compute_density_and_viscosity") = compute_density_and_viscosity;
521  params.set<bool>("compute_internal_energy") = compute_internal_energy;
522  params.set<bool>("compute_enthalpy") = compute_enthalpy;
523  params.set<MooseEnum>("temperature_unit") = temperature_unit;
524 
525  std::string material_name = "PorousFlowActionBase_FluidProperties_qp";
526  if (at_nodes)
527  material_name = "PorousFlowActionBase_FluidProperties";
528 
529  params.set<bool>("at_nodes") = at_nodes;
530  _problem->addMaterial(material_type, material_name, params);
531  }
532 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addCapillaryPressureVG()

void PorousFlowActionBase::addCapillaryPressureVG ( Real  m,
Real  alpha,
std::string  userobject_name 
)
protectedinherited

Adds a van Genuchten capillary pressure UserObject.

Parameters
mvan Genuchten exponent
alphavan Genuchten alpha
userobject_namename of the user object

Definition at line 603 of file PorousFlowActionBase.C.

Referenced by addUserObjects().

604 {
605  if (_current_task == "add_user_object")
606  {
607  std::string userobject_type = "PorousFlowCapillaryPressureVG";
608  InputParameters params = _factory.getValidParams(userobject_type);
609  params.set<Real>("m") = m;
610  params.set<Real>("alpha") = alpha;
611  _problem->addUserObject(userobject_type, userobject_name, params);
612  }
613 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string alpha
Definition: NS.h:126
std::shared_ptr< FEProblemBase > & _problem

◆ addDarcyAux()

void PorousFlowActionBase::addDarcyAux ( const RealVectorValue gravity)
protectedinherited

Add AuxVariables and AuxKernels to calculate Darcy velocity.

Parameters
gravitygravitational acceleration pointing downwards (eg (0, 0, -9.8))

Definition at line 248 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addAuxObjects().

249 {
250  if (_current_task == "add_aux_variable")
251  {
252  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
253 
254  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_x", var_params);
255  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_y", var_params);
256  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_z", var_params);
257  }
258 
259  if (_current_task == "add_aux_kernel")
260  {
261  std::string aux_kernel_type = "PorousFlowDarcyVelocityComponent";
262  InputParameters params = _factory.getValidParams(aux_kernel_type);
263 
264  params.set<RealVectorValue>("gravity") = gravity;
265  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
266  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
267 
268  std::string aux_kernel_name = "PorousFlowActionBase_Darcy_x_Aux";
269  params.set<MooseEnum>("component") = "x";
270  params.set<AuxVariableName>("variable") = "darcy_vel_x";
271  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
272 
273  aux_kernel_name = "PorousFlowActionBase_Darcy_y_Aux";
274  params.set<MooseEnum>("component") = "y";
275  params.set<AuxVariableName>("variable") = "darcy_vel_y";
276  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
277 
278  aux_kernel_name = "PorousFlowActionBase_Darcy_z_Aux";
279  params.set<MooseEnum>("component") = "z";
280  params.set<AuxVariableName>("variable") = "darcy_vel_z";
281  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
282  }
283 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addDictator()

void PorousFlowSinglePhaseBase::addDictator ( )
overrideprotectedvirtualinherited

Add the PorousFlowDictator object.

Implements PorousFlowActionBase.

Definition at line 377 of file PorousFlowSinglePhaseBase.C.

378 {
379  const std::string uo_name = _dictator_name;
380  const std::string uo_type = "PorousFlowDictator";
381  InputParameters params = _factory.getValidParams(uo_type);
382  std::vector<VariableName> pf_vars = _mass_fraction_vars;
383  pf_vars.push_back(_pp_var);
384  if (_thermal)
385  pf_vars.push_back(_temperature_var[0]);
386  if (_mechanical)
387  pf_vars.insert(pf_vars.end(), _coupled_displacements.begin(), _coupled_displacements.end());
388  params.set<std::vector<VariableName>>("porous_flow_vars") = pf_vars;
389  params.set<unsigned int>("number_fluid_phases") = 1;
390  params.set<unsigned int>("number_fluid_components") = _num_mass_fraction_vars + 1;
391  params.set<unsigned int>("number_aqueous_equilibrium") = _num_aqueous_equilibrium;
392  params.set<unsigned int>("number_aqueous_kinetic") = _num_aqueous_kinetic;
393  _problem->addUserObject(uo_type, uo_name, params);
394 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
const VariableName _pp_var
Porepressure NonlinearVariable name.
std::vector< VariableName > _coupled_displacements
Displacement Variable names.
const unsigned int _num_aqueous_kinetic
Number of aqeuous-kinetic secondary species that are involved in mineralisation.
const bool _thermal
Flags to indicate whether thermal or mechanical effects are included.
Factory & _factory
const std::vector< VariableName > _temperature_var
Name of the temperature variable (if any)
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
const unsigned _num_mass_fraction_vars
Number of mass-fraction variables.
std::shared_ptr< FEProblemBase > & _problem
const unsigned int _num_aqueous_equilibrium
Number of aqueous-equilibrium secondary species.
const std::vector< VariableName > _mass_fraction_vars
Name of the mass-fraction variables (if any)

◆ addEffectiveFluidPressureMaterial()

void PorousFlowActionBase::addEffectiveFluidPressureMaterial ( bool  at_nodes)
protectedinherited

Adds a nodal and a quadpoint effective fluid pressure material.

Parameters
at_nodesAdd nodal effective fluid pressure material

Definition at line 416 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

417 {
418  if (_current_task == "add_material")
419  {
420  std::string material_type = "PorousFlowEffectiveFluidPressure";
421  InputParameters params = _factory.getValidParams(material_type);
422 
423  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
424 
425  std::string material_name = "PorousFlowUnsaturated_EffectiveFluidPressure_qp";
426  if (at_nodes)
427  material_name = "PorousFlowUnsaturated_EffectiveFluidPressure";
428 
429  params.set<bool>("at_nodes") = at_nodes;
430  _problem->addMaterial(material_type, material_name, params);
431  }
432 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addKernels()

void PorousFlowUnsaturated::addKernels ( )
overrideprotectedvirtual

Add all Kernels.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 110 of file PorousFlowUnsaturated.C.

111 {
113 
114  // add the kernels
116  {
117  const std::string kernel_type = "PorousFlowAdvectiveFlux";
118  InputParameters params = _factory.getValidParams(kernel_type);
119  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
120  params.set<RealVectorValue>("gravity") = _gravity;
121 
122  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
123  {
124  const std::string kernel_name = "PorousFlowUnsaturated_AdvectiveFlux" + Moose::stringify(i);
125  params.set<unsigned int>("fluid_component") = i;
126  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
127  _problem->addKernel(kernel_type, kernel_name, params);
128  }
129  const std::string kernel_name =
130  "PorousFlowUnsaturated_AdvectiveFlux" + Moose::stringify(_num_mass_fraction_vars);
131  params.set<unsigned int>("fluid_component") = _num_mass_fraction_vars;
132  params.set<NonlinearVariableName>("variable") = _pp_var;
133  _problem->addKernel(kernel_type, kernel_name, params);
134  }
136  {
137  const std::string kernel_type = "PorousFlowFluxLimitedTVDAdvection";
138  InputParameters params = _factory.getValidParams(kernel_type);
139  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
140 
141  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
142  {
143  const std::string kernel_name = "PorousFlowFluxLimited_DarcyFlow" + Moose::stringify(i);
144  params.set<UserObjectName>("advective_flux_calculator") =
145  "PorousFlowUnsaturated_AC_" + Moose::stringify(i);
146  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
147  _problem->addKernel(kernel_type, kernel_name, params);
148  }
149  const std::string kernel_name =
150  "PorousFlowFluxLimited_DarcyFlow" + Moose::stringify(_num_mass_fraction_vars);
151  params.set<NonlinearVariableName>("variable") = _pp_var;
152  params.set<UserObjectName>("advective_flux_calculator") =
153  "PorousFlowUnsaturated_AC_" + Moose::stringify(_num_mass_fraction_vars);
154  _problem->addKernel(kernel_type, kernel_name, params);
155  }
156 
157  if (_transient)
158  {
159  std::string kernel_name = "PorousFlowUnsaturated_MassTimeDerivative";
160  std::string kernel_type = "PorousFlowMassTimeDerivative";
161  InputParameters params = _factory.getValidParams(kernel_type);
162  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
163  params.set<bool>("strain_at_nearest_qp") = _strain_at_nearest_qp;
164  if (!_base_name.empty())
165  params.set<std::string>("base_name") = _base_name;
166 
167  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
168  {
169  kernel_name = "PorousFlowUnsaturated_MassTimeDerivative" + Moose::stringify(i);
170  params.set<unsigned int>("fluid_component") = i;
171  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
172  if (_save_component_rate_in.size() != 0)
173  params.set<std::vector<AuxVariableName>>("save_in") = {_save_component_rate_in[i]};
174  _problem->addKernel(kernel_type, kernel_name, params);
175  }
176  kernel_name =
177  "PorousFlowUnsaturated_MassTimeDerivative" + Moose::stringify(_num_mass_fraction_vars);
178  params.set<unsigned int>("fluid_component") = _num_mass_fraction_vars;
179  params.set<NonlinearVariableName>("variable") = _pp_var;
180  if (_save_component_rate_in.size() != 0)
181  params.set<std::vector<AuxVariableName>>("save_in") = {
183  _problem->addKernel(kernel_type, kernel_name, params);
184  }
185 
186  if (_mechanical && _transient)
187  {
188  std::string kernel_name = "PorousFlowUnsaturated_MassVolumetricExpansion";
189  std::string kernel_type = "PorousFlowMassVolumetricExpansion";
190  InputParameters params = _factory.getValidParams(kernel_type);
191  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
192  params.set<bool>("strain_at_nearest_qp") = _strain_at_nearest_qp;
193 
194  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
195  {
196  kernel_name = "PorousFlowUnsaturated_MassVolumetricExpansion" + Moose::stringify(i);
197  params.set<unsigned>("fluid_component") = i;
198  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
199  _problem->addKernel(kernel_type, kernel_name, params);
200  }
201  kernel_name =
202  "PorousFlowUnsaturated_MassVolumetricExpansion" + Moose::stringify(_num_mass_fraction_vars);
203  params.set<unsigned>("fluid_component") = _num_mass_fraction_vars;
204  params.set<NonlinearVariableName>("variable") = _pp_var;
205  _problem->addKernel(kernel_type, kernel_name, params);
206  }
207 
208  if (_thermal)
209  {
211  {
212  const std::string kernel_name = "PorousFlowUnsaturated_HeatAdvection";
213  const std::string kernel_type = "PorousFlowHeatAdvection";
214  InputParameters params = _factory.getValidParams(kernel_type);
215  params.set<NonlinearVariableName>("variable") = _temperature_var[0];
216  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
217  params.set<RealVectorValue>("gravity") = _gravity;
218  _problem->addKernel(kernel_type, kernel_name, params);
219  }
221  {
222  const std::string kernel_name = "PorousFlowUnsaturated_HeatAdvection";
223  const std::string kernel_type = "PorousFlowFluxLimitedTVDAdvection";
224  InputParameters params = _factory.getValidParams(kernel_type);
225  params.set<NonlinearVariableName>("variable") = _temperature_var[0];
226  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
227  params.set<UserObjectName>("advective_flux_calculator") = "PorousFlowUnsaturatedHeat_AC";
228  _problem->addKernel(kernel_type, kernel_name, params);
229  }
230  }
231 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
const VariableName _pp_var
Porepressure NonlinearVariable name.
const std::vector< AuxVariableName > _save_component_rate_in
Name of the variables (if any) that will record the fluid-components&#39; rate of change.
const bool _thermal
Flags to indicate whether thermal or mechanical effects are included.
Factory & _factory
virtual void addKernels() override
Add all Kernels.
std::string stringify(const T &t)
const RealVectorValue _gravity
Gravity.
const std::vector< VariableName > _temperature_var
Name of the temperature variable (if any)
bool _transient
Flag to denote if the simulation is transient.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
const bool _strain_at_nearest_qp
Evaluate strain at the nearest quadpoint for porosity that depends on strain.
const unsigned _num_mass_fraction_vars
Number of mass-fraction variables.
std::shared_ptr< FEProblemBase > & _problem
const std::string _base_name
base_name used in the TensorMechanics strain calculator
enum PorousFlowActionBase::StabilizationEnum _stabilization
const std::vector< VariableName > _mass_fraction_vars
Name of the mass-fraction variables (if any)

◆ addMassFractionMaterial()

void PorousFlowActionBase::addMassFractionMaterial ( bool  at_nodes)
protectedinherited

Adds a nodal and a quadpoint MassFraction material.

Parameters
at_nodesAdd nodal mass-fraction material

Definition at line 391 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

392 {
393  if (_current_task == "add_material")
394  {
395  if (!(parameters().hasDefaultCoupledValue("mass_fraction_vars") ||
396  parameters().hasCoupledValue("mass_fraction_vars")))
397  mooseError("Attempt to add a PorousFlowMassFraction material without setting the "
398  "mass_fraction_vars");
399 
400  std::string material_type = "PorousFlowMassFraction";
401  InputParameters params = _factory.getValidParams(material_type);
402 
403  params.applySpecificParameters(parameters(), {"mass_fraction_vars"});
404  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
405 
406  std::string material_name = "PorousFlowActionBase_MassFraction_qp";
407  if (at_nodes)
408  material_name = "PorousFlowActionBase_MassFraction";
409 
410  params.set<bool>("at_nodes") = at_nodes;
411  _problem->addMaterial(material_type, material_name, params);
412  }
413 }
void applySpecificParameters(const InputParameters &common, const std::vector< std::string > &include, bool allow_private=false)
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
void mooseError(Args &&... args) const
std::shared_ptr< FEProblemBase > & _problem
const InputParameters & parameters() const

◆ addMaterialDependencies()

void PorousFlowUnsaturated::addMaterialDependencies ( )
overrideprotectedvirtual

Add all material dependencies so that the correct version of each material can be added.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 83 of file PorousFlowUnsaturated.C.

84 {
86 
87  // Add necessary objects to list of PorousFlow objects added by this action
88  _included_objects.push_back("PorousFlowAdvectiveFlux");
89 
90  if (_transient)
91  _included_objects.push_back("PorousFlowMassTimeDerivative");
92 
93  if (_mechanical && _transient)
94  _included_objects.push_back("PorousFlowMassVolumetricExpansion");
95 
96  if (_thermal)
97  _included_objects.push_back("PorousFlowHeatAdvection");
98 
100  _included_objects.push_back("SaturationAux");
101 
103  _included_objects.push_back("PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent");
104 
106  _included_objects.push_back("PorousFlowAdvectiveFluxCalculatorUnsaturatedHeat");
107 }
const bool _add_saturation_aux
Add an Aux Variable to record saturation.
std::vector< std::string > _included_objects
List of Kernels, AuxKernels, Materials, etc, that are added in this input file.
const bool _thermal
Flags to indicate whether thermal or mechanical effects are included.
bool _transient
Flag to denote if the simulation is transient.
virtual void addMaterialDependencies() override
Add all material dependencies so that the correct version of each material can be added...
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addMaterials()

void PorousFlowUnsaturated::addMaterials ( )
overrideprotectedvirtual

Add all Materials.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 266 of file PorousFlowUnsaturated.C.

267 {
269 
270  if (_deps.dependsOn(_included_objects, "pressure_saturation_qp"))
271  {
272  const std::string material_type = "PorousFlow1PhaseP";
273  InputParameters params = _factory.getValidParams(material_type);
274  const std::string material_name = "PorousFlowUnsaturated_1PhaseP_VG_qp";
275  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
276  params.set<std::vector<VariableName>>("porepressure") = {_pp_var};
277  params.set<UserObjectName>("capillary_pressure") = _capillary_pressure_name;
278  params.set<bool>("at_nodes") = false;
279  _problem->addMaterial(material_type, material_name, params);
280  }
281  if (_deps.dependsOn(_included_objects, "pressure_saturation_nodal"))
282  {
283  const std::string material_type = "PorousFlow1PhaseP";
284  InputParameters params = _factory.getValidParams(material_type);
285  const std::string material_name = "PorousFlowUnsaturated_1PhaseP_VG_nodal";
286  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
287  params.set<std::vector<VariableName>>("porepressure") = {_pp_var};
288  params.set<UserObjectName>("capillary_pressure") = _capillary_pressure_name;
289  params.set<bool>("at_nodes") = true;
290  _problem->addMaterial(material_type, material_name, params);
291  }
292 
293  if (_deps.dependsOn(_included_objects, "relative_permeability_qp"))
294  {
297  else
299  }
300 
301  if (_deps.dependsOn(_included_objects, "relative_permeability_nodal"))
302  {
305  else
307  }
308 
309  if (_deps.dependsOn(_included_objects, "volumetric_strain_qp") ||
310  _deps.dependsOn(_included_objects, "volumetric_strain_nodal"))
312 }
virtual void addMaterials() override
Add all Materials.
void addRelativePermeabilityCorey(bool at_nodes, unsigned phase, Real n, Real s_res, Real sum_s_res)
Adds a relative-permeability Material of the Corey variety.
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
bool dependsOn(const std::string &key, const std::string &value)
const VariableName _pp_var
Porepressure NonlinearVariable name.
std::vector< VariableName > _coupled_displacements
Displacement Variable names.
std::vector< std::string > _included_objects
List of Kernels, AuxKernels, Materials, etc, that are added in this input file.
Factory & _factory
const Real _s_res
Residual saturation to use in the relative permeability expressions.
const Real _relative_permeability_exponent
Relative permeability exponent.
enum PorousFlowUnsaturated::RelpermTypeChoiceEnum _relperm_type
const std::string _capillary_pressure_name
Name of the capillary pressure UserObject.
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
void addVolumetricStrainMaterial(const std::vector< VariableName > &displacements, const std::string &base_name)
Adds a quadpoint volumetric strain material.
void addRelativePermeabilityFLAC(bool at_nodes, unsigned phase, Real m, Real s_res, Real sum_s_res)
Adds a relative-permeability Material of the FLAC variety.
std::shared_ptr< FEProblemBase > & _problem
const std::string _base_name
base_name used in the TensorMechanics strain calculator
DependencyResolver< std::string > _deps
All dependencies of kernels, auxkernels, materials, etc, are stored in _dependencies.

◆ addNearestQpMaterial()

void PorousFlowActionBase::addNearestQpMaterial ( )
protectedinherited

Adds a PorousFlowNearestQp material.

Definition at line 435 of file PorousFlowActionBase.C.

Referenced by PorousFlowActionBase::addMaterials().

436 {
437  if (_current_task == "add_material")
438  {
439  std::string material_type = "PorousFlowNearestQp";
440  InputParameters params = _factory.getValidParams(material_type);
441 
442  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
443  params.set<bool>("nodal_material") = true;
444 
445  std::string material_name = "PorousFlowActionBase_NearestQp";
446  _problem->addMaterial(material_type, material_name, params);
447  }
448 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addRelationshipManagers() [1/3]

virtual void Action::addRelationshipManagers
inherited

◆ addRelationshipManagers() [2/3]

bool Action::addRelationshipManagers
inherited

◆ addRelationshipManagers() [3/3]

void PorousFlowActionBase::addRelationshipManagers ( Moose::RelationshipManagerType  when_type)
overridevirtualinherited

Reimplemented from Action.

Definition at line 124 of file PorousFlowActionBase.C.

125 {
127  ? _factory.getValidParams("PorousFlowAdvectiveFluxCalculatorSaturated")
129  addRelationshipManagers(input_rm_type, ips);
130 }
InputParameters getValidParams(const std::string &name) const
InputParameters emptyInputParameters()
Factory & _factory
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type) override
enum PorousFlowActionBase::StabilizationEnum _stabilization

◆ addRelativePermeabilityConst()

void PorousFlowActionBase::addRelativePermeabilityConst ( bool  at_nodes,
unsigned  phase,
Real  kr 
)
protectedinherited

Adds a relative-permeability Material of the constant variety (primarily to add kr = 1 in actions that add a default relatively permeability for objects that require kr even when the flow is fully saturated with a single phase)

Parameters
at_nodeswhether the material is nodal
phasethe phase number of the fluid
krthe relative permeability

Definition at line 535 of file PorousFlowActionBase.C.

Referenced by PorousFlowFullySaturated::addMaterials(), and PorousFlowBasicTHM::addMaterials().

536 {
537  if (_current_task == "add_material")
538  {
539  std::string material_type = "PorousFlowRelativePermeabilityConst";
540  InputParameters params = _factory.getValidParams(material_type);
541 
542  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
543  params.set<unsigned int>("phase") = phase;
544  params.set<Real>("kr") = kr;
545  std::string material_name = "PorousFlowActionBase_RelativePermeability_qp";
546  if (at_nodes)
547  material_name = "PorousFlowActionBase_RelativePermeability_nodal";
548 
549  params.set<bool>("at_nodes") = at_nodes;
550  _problem->addMaterial(material_type, material_name, params);
551  }
552 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addRelativePermeabilityCorey()

void PorousFlowActionBase::addRelativePermeabilityCorey ( bool  at_nodes,
unsigned  phase,
Real  n,
Real  s_res,
Real  sum_s_res 
)
protectedinherited

Adds a relative-permeability Material of the Corey variety.

Parameters
at_nodeswhether the material is nodal
phasethe phase number of the fluid
nThe Corey exponent
s_resThe residual saturation for this phase
sum_s_resThe sum of residual saturations over all phases

Definition at line 555 of file PorousFlowActionBase.C.

Referenced by addMaterials().

557 {
558  if (_current_task == "add_material")
559  {
560  std::string material_type = "PorousFlowRelativePermeabilityCorey";
561  InputParameters params = _factory.getValidParams(material_type);
562 
563  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
564  params.set<Real>("n") = n;
565  params.set<unsigned int>("phase") = phase;
566  params.set<Real>("s_res") = s_res;
567  params.set<Real>("sum_s_res") = sum_s_res;
568 
569  std::string material_name = "PorousFlowActionBase_RelativePermeability_qp";
570  if (at_nodes)
571  material_name = "PorousFlowActionBase_RelativePermeability_nodal";
572 
573  params.set<bool>("at_nodes") = at_nodes;
574  _problem->addMaterial(material_type, material_name, params);
575  }
576 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addRelativePermeabilityFLAC()

void PorousFlowActionBase::addRelativePermeabilityFLAC ( bool  at_nodes,
unsigned  phase,
Real  m,
Real  s_res,
Real  sum_s_res 
)
protectedinherited

Adds a relative-permeability Material of the FLAC variety.

Parameters
at_nodeswhether the material is nodal
phasethe phase number of the fluid
mThe FLAC exponent
s_resThe residual saturation for this phase
sum_s_resThe sum of residual saturations over all phases

Definition at line 579 of file PorousFlowActionBase.C.

Referenced by addMaterials().

581 {
582  if (_current_task == "add_material")
583  {
584  std::string material_type = "PorousFlowRelativePermeabilityFLAC";
585  InputParameters params = _factory.getValidParams(material_type);
586 
587  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
588  params.set<Real>("m") = m;
589  params.set<unsigned int>("phase") = phase;
590  params.set<Real>("s_res") = s_res;
591  params.set<Real>("sum_s_res") = sum_s_res;
592 
593  std::string material_name = "PorousFlowActionBase_RelativePermeability_qp";
594  if (at_nodes)
595  material_name = "PorousFlowActionBase_RelativePermeability_nodal";
596 
597  params.set<bool>("at_nodes") = at_nodes;
598  _problem->addMaterial(material_type, material_name, params);
599  }
600 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addSaturationAux()

void PorousFlowActionBase::addSaturationAux ( unsigned  phase)
protectedinherited

Add an AuxVariable and AuxKernel to calculate saturation.

Parameters
phaseSaturation for this fluid phase

Definition at line 223 of file PorousFlowActionBase.C.

Referenced by addAuxObjects().

224 {
225  std::string phase_str = Moose::stringify(phase);
226 
227  if (_current_task == "add_aux_variable")
228  {
229  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
230  _problem->addAuxVariable("MooseVariableConstMonomial", "saturation" + phase_str, var_params);
231  }
232 
233  if (_current_task == "add_aux_kernel")
234  {
235  std::string aux_kernel_type = "MaterialStdVectorAux";
236  InputParameters params = _factory.getValidParams(aux_kernel_type);
237 
238  std::string aux_kernel_name = "PorousFlowActionBase_SaturationAux" + phase_str;
239  params.set<MaterialPropertyName>("property") = "PorousFlow_saturation_qp";
240  params.set<unsigned>("index") = phase;
241  params.set<AuxVariableName>("variable") = "saturation" + phase_str;
242  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
243  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
244  }
245 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
std::string stringify(const T &t)
std::shared_ptr< FEProblemBase > & _problem

◆ addSingleComponentFluidMaterial()

void PorousFlowActionBase::addSingleComponentFluidMaterial ( bool  at_nodes,
unsigned  phase,
bool  compute_density_and_viscosity,
bool  compute_internal_energy,
bool  compute_enthalpy,
const UserObjectName &  fp,
const MooseEnum temperature_unit,
const MooseEnum pressure_unit,
const MooseEnum time_unit 
)
protectedinherited

Adds a single-component fluid Material.

Parameters
phasethe phase number of the fluid
fpthe name of the FluidProperties UserObject
compute_density_and_viscositycompute the density and viscosity of the fluid
compute_internal_energycompute the fluid internal energy
compute_enthalpycompute the fluid enthalpy
at_nodesadd a nodal material
temperature_unitthe unit of temperature (Kelvin or Celsius)
pressure_unitthe unit of pressure (MPa or Pa)
time_unitthe unit of time (seconds, days, hours, etc)

Definition at line 469 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

478 {
479  if (_current_task == "add_material")
480  {
481  std::string material_type = "PorousFlowSingleComponentFluid";
482  InputParameters params = _factory.getValidParams(material_type);
483 
484  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
485  params.set<unsigned int>("phase") = phase;
486  params.set<bool>("compute_density_and_viscosity") = compute_density_and_viscosity;
487  params.set<bool>("compute_internal_energy") = compute_internal_energy;
488  params.set<bool>("compute_enthalpy") = compute_enthalpy;
489  params.set<UserObjectName>("fp") = fp;
490  params.set<MooseEnum>("temperature_unit") = temperature_unit;
491  params.set<MooseEnum>("pressure_unit") = pressure_unit;
492  params.set<MooseEnum>("time_unit") = time_unit;
493 
494  std::string material_name = "PorousFlowActionBase_FluidProperties_qp";
495  if (at_nodes)
496  material_name = "PorousFlowActionBase_FluidProperties";
497 
498  params.set<bool>("at_nodes") = at_nodes;
499  _problem->addMaterial(material_type, material_name, params);
500  }
501 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ addStressAux()

void PorousFlowActionBase::addStressAux ( )
protectedinherited

Add AuxVariables and AuxKernels to compute effective stress.

Definition at line 286 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addAuxObjects().

287 {
288  if (_current_task == "add_aux_variable")
289  {
290  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
291  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xx", var_params);
292  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xy", var_params);
293  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xz", var_params);
294  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yx", var_params);
295  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yy", var_params);
296  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yz", var_params);
297  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zx", var_params);
298  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zy", var_params);
299  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zz", var_params);
300  }
301 
302  if (_current_task == "add_aux_kernel")
303  {
304  std::string aux_kernel_type = "RankTwoAux";
305  InputParameters params = _factory.getValidParams(aux_kernel_type);
306 
307  params.set<MaterialPropertyName>("rank_two_tensor") = "stress";
308  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
309 
310  std::string aux_kernel_name = "PorousFlowAction_stress_xx";
311  params.set<AuxVariableName>("variable") = "stress_xx";
312  params.set<unsigned>("index_i") = 0;
313  params.set<unsigned>("index_j") = 0;
314  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
315 
316  aux_kernel_name = "PorousFlowAction_stress_xy";
317  params.set<AuxVariableName>("variable") = "stress_xy";
318  params.set<unsigned>("index_i") = 0;
319  params.set<unsigned>("index_j") = 1;
320  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
321 
322  aux_kernel_name = "PorousFlowAction_stress_xz";
323  params.set<AuxVariableName>("variable") = "stress_xz";
324  params.set<unsigned>("index_i") = 0;
325  params.set<unsigned>("index_j") = 2;
326  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
327 
328  aux_kernel_name = "PorousFlowAction_stress_yx";
329  params.set<AuxVariableName>("variable") = "stress_yx";
330  params.set<unsigned>("index_i") = 1;
331  params.set<unsigned>("index_j") = 0;
332  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
333 
334  aux_kernel_name = "PorousFlowAction_stress_yy";
335  params.set<AuxVariableName>("variable") = "stress_yy";
336  params.set<unsigned>("index_i") = 1;
337  params.set<unsigned>("index_j") = 1;
338  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
339 
340  aux_kernel_name = "PorousFlowAction_stress_yz";
341  params.set<AuxVariableName>("variable") = "stress_yz";
342  params.set<unsigned>("index_i") = 1;
343  params.set<unsigned>("index_j") = 2;
344  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
345 
346  aux_kernel_name = "PorousFlowAction_stress_zx";
347  params.set<AuxVariableName>("variable") = "stress_zx";
348  params.set<unsigned>("index_i") = 2;
349  params.set<unsigned>("index_j") = 0;
350  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
351 
352  aux_kernel_name = "PorousFlowAction_stress_zy";
353  params.set<AuxVariableName>("variable") = "stress_zy";
354  params.set<unsigned>("index_i") = 2;
355  params.set<unsigned>("index_j") = 1;
356  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
357 
358  aux_kernel_name = "PorousFlowAction_stress_zz";
359  params.set<AuxVariableName>("variable") = "stress_zz";
360  params.set<unsigned>("index_i") = 2;
361  params.set<unsigned>("index_j") = 2;
362  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
363  }
364 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
std::shared_ptr< FEProblemBase > & _problem

◆ addTemperatureMaterial()

void PorousFlowActionBase::addTemperatureMaterial ( bool  at_nodes)
protectedinherited

Adds a nodal and a quadpoint Temperature material.

Parameters
at_nodesAdd nodal temperature Material

Definition at line 367 of file PorousFlowActionBase.C.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

368 {
369  if (_current_task == "add_material")
370  {
371  if (!parameters().hasDefaultCoupledValue("temperature"))
372  mooseError("Attempt to add a PorousFlowTemperature material without setting a temperature "
373  "variable");
374 
375  std::string material_type = "PorousFlowTemperature";
376  InputParameters params = _factory.getValidParams(material_type);
377 
378  params.applySpecificParameters(parameters(), {"temperature"});
379  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
380 
381  std::string material_name = "PorousFlowActionBase_Temperature_qp";
382  if (at_nodes)
383  material_name = "PorousFlowActionBase_Temperature";
384 
385  params.set<bool>("at_nodes") = at_nodes;
386  _problem->addMaterial(material_type, material_name, params);
387  }
388 }
void applySpecificParameters(const InputParameters &common, const std::vector< std::string > &include, bool allow_private=false)
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
void mooseError(Args &&... args) const
std::shared_ptr< FEProblemBase > & _problem
const InputParameters & parameters() const

◆ addUserObjects()

void PorousFlowUnsaturated::addUserObjects ( )
overrideprotectedvirtual

Add all other UserObjects.

Reimplemented from PorousFlowActionBase.

Definition at line 234 of file PorousFlowUnsaturated.C.

235 {
237 
238  // Add the capillary pressure UserObject
240 
241  // add Advective Flux calculator UserObjects, if required
243  {
244  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
245  {
246  const std::string userobject_name = "PorousFlowUnsaturated_AC_" + Moose::stringify(i);
247  addAdvectiveFluxCalculatorUnsaturatedMultiComponent(0, i, true, userobject_name);
248  }
249  const std::string userobject_name =
250  "PorousFlowUnsaturated_AC_" + Moose::stringify(_num_mass_fraction_vars);
251  if (_num_mass_fraction_vars == 0)
252  addAdvectiveFluxCalculatorUnsaturated(0, true, userobject_name); // 1 component only
253  else
255  0, _num_mass_fraction_vars, true, userobject_name);
256 
257  if (_thermal)
258  {
259  const std::string userobject_name = "PorousFlowUnsaturatedHeat_AC";
260  addAdvectiveFluxCalculatorUnsaturatedHeat(0, true, userobject_name);
261  }
262  }
263 }
const Real _van_genuchten_m
Van Genuchten m parameter.
const Real _van_genuchten_alpha
Van Genuchten alpha parameter.
const bool _thermal
Flags to indicate whether thermal or mechanical effects are included.
void addCapillaryPressureVG(Real m, Real alpha, std::string userobject_name)
Adds a van Genuchten capillary pressure UserObject.
void addAdvectiveFluxCalculatorUnsaturated(unsigned phase, bool multiply_by_density, std::string userobject_name)
std::string stringify(const T &t)
const std::string _capillary_pressure_name
Name of the capillary pressure UserObject.
const unsigned _num_mass_fraction_vars
Number of mass-fraction variables.
virtual void addUserObjects()
Add all other UserObjects.
void addAdvectiveFluxCalculatorUnsaturatedMultiComponent(unsigned phase, unsigned fluid_component, bool multiply_by_density, std::string userobject_name)
enum PorousFlowActionBase::StabilizationEnum _stabilization
void addAdvectiveFluxCalculatorUnsaturatedHeat(unsigned phase, bool multiply_by_density, std::string userobject_name)

◆ addVolumetricStrainMaterial()

void PorousFlowActionBase::addVolumetricStrainMaterial ( const std::vector< VariableName > &  displacements,
const std::string &  base_name 
)
protectedinherited

Adds a quadpoint volumetric strain material.

Parameters
displacementsthe names of the displacement variables
base_nameThe base_name used in the TensorMechanics strain calculator displaced mesh

Definition at line 451 of file PorousFlowActionBase.C.

Referenced by PorousFlowFullySaturated::addMaterials(), addMaterials(), and PorousFlowBasicTHM::addMaterials().

453 {
454  if (_current_task == "add_material")
455  {
456  std::string material_type = "PorousFlowVolumetricStrain";
457  InputParameters params = _factory.getValidParams(material_type);
458 
459  std::string material_name = "PorousFlowActionBase_VolumetricStrain";
460  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
461  params.set<std::vector<VariableName>>("displacements") = displacements;
462  if (!base_name.empty())
463  params.set<std::string>("base_name") = base_name;
464  _problem->addMaterial(material_type, material_name, params);
465  }
466 }
T & set(const std::string &name, bool quiet_mode=false)
InputParameters getValidParams(const std::string &name) const
Factory & _factory
const std::string & _current_task
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
std::shared_ptr< FEProblemBase > & _problem

◆ validParams()

InputParameters PorousFlowUnsaturated::validParams ( )
static

Definition at line 27 of file PorousFlowUnsaturated.C.

28 {
30  params.addParam<bool>("add_saturation_aux", true, "Add an AuxVariable that records saturation");
31  params.addRangeCheckedParam<Real>(
32  "van_genuchten_alpha",
33  1.0E-6,
34  "van_genuchten_alpha > 0.0",
35  "Van Genuchten alpha parameter used to determine saturation from porepressure");
36  params.addRangeCheckedParam<Real>(
37  "van_genuchten_m",
38  0.6,
39  "van_genuchten_m > 0 & van_genuchten_m < 1",
40  "Van Genuchten m parameter used to determine saturation from porepressure");
41  MooseEnum relperm_type_choice("FLAC Corey", "FLAC");
42  params.addParam<MooseEnum>("relative_permeability_type",
43  relperm_type_choice,
44  "Type of relative-permeability function. FLAC relperm = (1+m)S^m - "
45  "mS^(1+m). Corey relperm = S^m. m is the exponent. Here S = "
46  "(saturation - residual)/(1 - residual)");
47  params.addRangeCheckedParam<Real>("relative_permeability_exponent",
48  3.0,
49  "relative_permeability_exponent>=0",
50  "Relative permeability exponent");
51  params.addRangeCheckedParam<Real>(
52  "residual_saturation",
53  0.0,
54  "residual_saturation>=0.0 & residual_saturation<1.0",
55  "Residual saturation to use in the relative permeability expression");
56  params.addClassDescription("Adds Kernels and fluid-property Materials necessary to simulate a "
57  "single-phase saturated-unsaturated flow problem. The saturation is "
58  "computed using van Genuchten's expression. No Kernels for diffusion "
59  "and dispersion of fluid components are added. To run a simulation "
60  "you will also need to provide various other Materials for each mesh "
61  "block, depending on your simulation type, viz: permeability, "
62  "porosity, elasticity tensor, strain calculator, stress calculator, "
63  "matrix internal energy, thermal conductivity, diffusivity");
64  return params;
65 }
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)

Member Data Documentation

◆ _add_darcy_aux

const bool PorousFlowSinglePhaseBase::_add_darcy_aux
protectedinherited

Add a AuxVariables to record Darcy velocity.

Definition at line 60 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addAuxObjects(), and PorousFlowSinglePhaseBase::addMaterialDependencies().

◆ _add_saturation_aux

const bool PorousFlowUnsaturated::_add_saturation_aux
protected

Add an Aux Variable to record saturation.

Definition at line 34 of file PorousFlowUnsaturated.h.

Referenced by addAuxObjects(), and addMaterialDependencies().

◆ _add_stress_aux

const bool PorousFlowSinglePhaseBase::_add_stress_aux
protectedinherited

Add AuxVariables for stress.

Definition at line 63 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addAuxObjects(), and PorousFlowSinglePhaseBase::addMaterialDependencies().

◆ _base_name

const std::string PorousFlowSinglePhaseBase::_base_name
protectedinherited

◆ _biot_coefficient

const Real PorousFlowSinglePhaseBase::_biot_coefficient
protectedinherited

Fluid specific heat capacity at constant volume.

Definition at line 57 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addKernels(), and PorousFlowBasicTHM::addKernels().

◆ _capillary_pressure_name

const std::string PorousFlowUnsaturated::_capillary_pressure_name
protected

Name of the capillary pressure UserObject.

Definition at line 52 of file PorousFlowUnsaturated.h.

Referenced by addMaterials(), and addUserObjects().

◆ _coord_system

Moose::CoordinateSystemType PorousFlowActionBase::_coord_system
protectedinherited

Coordinate system of the simulation (eg RZ, XYZ, etc)

Definition at line 89 of file PorousFlowActionBase.h.

Referenced by PorousFlowActionBase::act(), and PorousFlowSinglePhaseBase::addKernels().

◆ _coupled_displacements

std::vector<VariableName> PorousFlowActionBase::_coupled_displacements
protectedinherited

◆ _coupling_type

enum PorousFlowSinglePhaseBase::CouplingTypeEnum PorousFlowSinglePhaseBase::_coupling_type
protectedinherited

◆ _deps

DependencyResolver<std::string> PorousFlowDependencies::_deps
protectedinherited

◆ _dictator_name

const std::string PorousFlowActionBase::_dictator_name
protectedinherited

◆ _displacements

const std::vector<VariableName>& PorousFlowActionBase::_displacements
protectedinherited

Displacement NonlinearVariable names (if any)

Definition at line 72 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addKernels().

◆ _fluid_properties_type

enum PorousFlowSinglePhaseBase::FluidPropertiesTypeEnum PorousFlowSinglePhaseBase::_fluid_properties_type
protectedinherited

◆ _flux_limiter_type

const MooseEnum PorousFlowActionBase::_flux_limiter_type
protectedinherited

◆ _fp

UserObjectName PorousFlowSinglePhaseBase::_fp
protectedinherited

◆ _gravity

const RealVectorValue PorousFlowActionBase::_gravity
protectedinherited

◆ _included_objects

std::vector<std::string> PorousFlowActionBase::_included_objects
protectedinherited

◆ _mass_fraction_vars

const std::vector<VariableName> PorousFlowActionBase::_mass_fraction_vars
protectedinherited

Name of the mass-fraction variables (if any)

Definition at line 63 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addDictator(), PorousFlowFullySaturated::addKernels(), and addKernels().

◆ _mechanical

const bool PorousFlowSinglePhaseBase::_mechanical
protectedinherited

◆ _nacl_name

VariableName PorousFlowSinglePhaseBase::_nacl_name
protectedinherited

◆ _ndisp

const unsigned PorousFlowActionBase::_ndisp
protectedinherited

Number of displacement variables supplied.

Definition at line 75 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addKernels().

◆ _num_aqueous_equilibrium

const unsigned int PorousFlowActionBase::_num_aqueous_equilibrium
protectedinherited

Number of aqueous-equilibrium secondary species.

Definition at line 54 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addDictator().

◆ _num_aqueous_kinetic

const unsigned int PorousFlowActionBase::_num_aqueous_kinetic
protectedinherited

Number of aqeuous-kinetic secondary species that are involved in mineralisation.

Definition at line 57 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addDictator().

◆ _num_mass_fraction_vars

const unsigned PorousFlowActionBase::_num_mass_fraction_vars
protectedinherited

◆ _pp_var

const VariableName PorousFlowSinglePhaseBase::_pp_var
protectedinherited

◆ _pressure_unit

const MooseEnum PorousFlowSinglePhaseBase::_pressure_unit
protectedinherited

◆ _relative_permeability_exponent

const Real PorousFlowUnsaturated::_relative_permeability_exponent
protected

Relative permeability exponent.

Definition at line 46 of file PorousFlowUnsaturated.h.

Referenced by addMaterials().

◆ _relperm_type

enum PorousFlowUnsaturated::RelpermTypeChoiceEnum PorousFlowUnsaturated::_relperm_type
protected

Referenced by addMaterials().

◆ _s_res

const Real PorousFlowUnsaturated::_s_res
protected

Residual saturation to use in the relative permeability expressions.

Definition at line 49 of file PorousFlowUnsaturated.h.

Referenced by addMaterials().

◆ _save_component_rate_in

const std::vector<AuxVariableName> PorousFlowSinglePhaseBase::_save_component_rate_in
protectedinherited

Name of the variables (if any) that will record the fluid-components' rate of change.

Definition at line 69 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowFullySaturated::addKernels(), addKernels(), PorousFlowBasicTHM::addKernels(), and PorousFlowSinglePhaseBase::PorousFlowSinglePhaseBase().

◆ _stabilization

enum PorousFlowActionBase::StabilizationEnum PorousFlowActionBase::_stabilization
protectedinherited

◆ _strain_at_nearest_qp

const bool PorousFlowActionBase::_strain_at_nearest_qp
protectedinherited

Evaluate strain at the nearest quadpoint for porosity that depends on strain.

Definition at line 86 of file PorousFlowActionBase.h.

Referenced by PorousFlowFullySaturated::addKernels(), PorousFlowSinglePhaseBase::addKernels(), addKernels(), PorousFlowActionBase::addMaterialDependencies(), and PorousFlowActionBase::addMaterials().

◆ _temperature_unit

const MooseEnum PorousFlowSinglePhaseBase::_temperature_unit
protectedinherited

Unit used for temperature.

Definition at line 72 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ _temperature_var

const std::vector<VariableName> PorousFlowActionBase::_temperature_var
protectedinherited

◆ _thermal

const bool PorousFlowSinglePhaseBase::_thermal
protectedinherited

◆ _time_unit

const MooseEnum PorousFlowSinglePhaseBase::_time_unit
protectedinherited

◆ _transient

bool PorousFlowActionBase::_transient
protectedinherited

◆ _van_genuchten_alpha

const Real PorousFlowUnsaturated::_van_genuchten_alpha
protected

Van Genuchten alpha parameter.

Definition at line 37 of file PorousFlowUnsaturated.h.

Referenced by addUserObjects().

◆ _van_genuchten_m

const Real PorousFlowUnsaturated::_van_genuchten_m
protected

Van Genuchten m parameter.

Definition at line 40 of file PorousFlowUnsaturated.h.

Referenced by addUserObjects().


The documentation for this class was generated from the following files: