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

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

#include <PorousFlowFullySaturated.h>

Inheritance diagram for PorousFlowFullySaturated:
[legend]

Public Member Functions

 PorousFlowFullySaturated (const InputParameters &params)
 
virtual void act () override
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type) override
 

Protected Types

enum  CouplingTypeEnum { CouplingTypeEnum::Hydro, CouplingTypeEnum::ThermoHydro, CouplingTypeEnum::HydroMechanical, CouplingTypeEnum::ThermoHydroMechanical }
 Determines the coupling type. More...
 
enum  StabilizationEnum { StabilizationEnum::Full, StabilizationEnum::KT }
 

Protected Member Functions

virtual void addKernels () override
 Add all Kernels. 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...
 
virtual void addAuxObjects () override
 Add all AuxVariables and AuxKernels. More...
 
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 addVolumetricStrainMaterial (const std::vector< VariableName > &displacements, bool consistent_with_displaced_mesh)
 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)
 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)
 Adds a brine fluid Material. 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)
 

Protected Attributes

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
 
const 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...
 
const bool _use_brine
 Use PorousFlowBrine material. More...
 
const unsigned _nacl_index
 Index of NaCl in list of fluid components. 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
 
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...
 
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 fully saturated fluid.

Definition at line 22 of file PorousFlowFullySaturated.h.

Member Enumeration Documentation

◆ CouplingTypeEnum

enum PorousFlowSinglePhaseBase::CouplingTypeEnum
strongprotectedinherited

Determines the coupling type.

Enumerator
Hydro 
ThermoHydro 
HydroMechanical 
ThermoHydroMechanical 

Definition at line 38 of file PorousFlowSinglePhaseBase.h.

38  {
39  Hydro,
40  ThermoHydro,
41  HydroMechanical,
42  ThermoHydroMechanical

◆ StabilizationEnum

enum PorousFlowActionBase::StabilizationEnum
strongprotectedinherited
Enumerator
Full 
KT 

Definition at line 86 of file PorousFlowActionBase.h.

86 { Full, KT } _stabilization;

Constructor & Destructor Documentation

◆ PorousFlowFullySaturated()

PorousFlowFullySaturated::PorousFlowFullySaturated ( const InputParameters &  params)

Definition at line 45 of file PorousFlowFullySaturated.C.

47 {
48 }

Member Function Documentation

◆ act()

void PorousFlowActionBase::act ( )
overridevirtualinherited

Definition at line 115 of file PorousFlowActionBase.C.

116 {
117  // Check if the simulation is transient (note: can't do this in the ctor)
118  _transient = _problem->isTransient();
119 
120  // Make sure that all mesh subdomains have the same coordinate system
121  const auto & all_subdomains = _problem->mesh().meshSubdomains();
122  if (all_subdomains.empty())
123  mooseError("No subdomains found");
124  _coord_system = _problem->getCoordSystem(*all_subdomains.begin());
125  for (const auto & subdomain : all_subdomains)
126  if (_problem->getCoordSystem(subdomain) != _coord_system)
127  mooseError(
128  "The PorousFlow Actions require all subdomains to have the same coordinate system.");
129 
130  // Note: this must be called before addMaterials!
132 
133  // Make the vector of added objects unique
134  std::sort(_included_objects.begin(), _included_objects.end());
135  _included_objects.erase(std::unique(_included_objects.begin(), _included_objects.end()),
136  _included_objects.end());
137 
138  if (_current_task == "add_user_object")
139  addUserObjects();
140 
141  if (_current_task == "add_aux_variable" || _current_task == "add_aux_kernel")
142  addAuxObjects();
143 
144  if (_current_task == "add_kernel")
145  addKernels();
146 
147  if (_current_task == "add_material")
148  addMaterials();
149 }

◆ addAdvectiveFluxCalculatorSaturated()

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

Definition at line 544 of file PorousFlowActionBase.C.

547 {
548  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
549  {
550  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturated";
551  InputParameters params = _factory.getValidParams(userobject_type);
552  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
553  params.set<RealVectorValue>("gravity") = _gravity;
554  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
555  params.set<unsigned>("phase") = phase;
556  params.set<bool>("multiply_by_density") = multiply_by_density;
557  _problem->addUserObject(userobject_type, userobject_name, params);
558  }
559 }

Referenced by addUserObjects().

◆ addAdvectiveFluxCalculatorSaturatedHeat()

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

Definition at line 580 of file PorousFlowActionBase.C.

583 {
584  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
585  {
586  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturatedHeat";
587  InputParameters params = _factory.getValidParams(userobject_type);
588  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
589  params.set<RealVectorValue>("gravity") = _gravity;
590  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
591  params.set<unsigned>("phase") = phase;
592  params.set<bool>("multiply_by_density") = multiply_by_density;
593  _problem->addUserObject(userobject_type, userobject_name, params);
594  }
595 }

Referenced by addUserObjects().

◆ addAdvectiveFluxCalculatorSaturatedMultiComponent()

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

Definition at line 616 of file PorousFlowActionBase.C.

620 {
621  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
622  {
623  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent";
624  InputParameters params = _factory.getValidParams(userobject_type);
625  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
626  params.set<RealVectorValue>("gravity") = _gravity;
627  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
628  params.set<unsigned>("phase") = phase;
629  params.set<bool>("multiply_by_density") = multiply_by_density;
630  params.set<unsigned>("fluid_component") = fluid_component;
631  _problem->addUserObject(userobject_type, userobject_name, params);
632  }
633 }

Referenced by addUserObjects().

◆ addAdvectiveFluxCalculatorUnsaturated()

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

Definition at line 562 of file PorousFlowActionBase.C.

565 {
566  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
567  {
568  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorUnsaturated";
569  InputParameters params = _factory.getValidParams(userobject_type);
570  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
571  params.set<RealVectorValue>("gravity") = _gravity;
572  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
573  params.set<unsigned>("phase") = phase;
574  params.set<bool>("multiply_by_density") = multiply_by_density;
575  _problem->addUserObject(userobject_type, userobject_name, params);
576  }
577 }

Referenced by PorousFlowUnsaturated::addUserObjects().

◆ addAdvectiveFluxCalculatorUnsaturatedHeat()

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

Definition at line 598 of file PorousFlowActionBase.C.

601 {
602  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
603  {
604  const std::string userobject_type = "PorousFlowAdvectiveFluxCalculatorUnsaturatedHeat";
605  InputParameters params = _factory.getValidParams(userobject_type);
606  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
607  params.set<RealVectorValue>("gravity") = _gravity;
608  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
609  params.set<unsigned>("phase") = phase;
610  params.set<bool>("multiply_by_density") = multiply_by_density;
611  _problem->addUserObject(userobject_type, userobject_name, params);
612  }
613 }

Referenced by PorousFlowUnsaturated::addUserObjects().

◆ addAdvectiveFluxCalculatorUnsaturatedMultiComponent()

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

Definition at line 636 of file PorousFlowActionBase.C.

638 {
639  if (_stabilization == StabilizationEnum::KT && _current_task == "add_user_object")
640  {
641  const std::string userobject_type =
642  "PorousFlowAdvectiveFluxCalculatorUnsaturatedMultiComponent";
643  InputParameters params = _factory.getValidParams(userobject_type);
644  params.set<MooseEnum>("flux_limiter_type") = _flux_limiter_type;
645  params.set<RealVectorValue>("gravity") = _gravity;
646  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
647  params.set<unsigned>("phase") = phase;
648  params.set<bool>("multiply_by_density") = multiply_by_density;
649  params.set<unsigned>("fluid_component") = fluid_component;
650  _problem->addUserObject(userobject_type, userobject_name, params);
651  }
652 }

Referenced by PorousFlowUnsaturated::addUserObjects().

◆ addAuxObjects()

void PorousFlowSinglePhaseBase::addAuxObjects ( )
overrideprotectedvirtualinherited

Add all AuxVariables and AuxKernels.

Reimplemented from PorousFlowActionBase.

Reimplemented in PorousFlowUnsaturated.

Definition at line 207 of file PorousFlowSinglePhaseBase.C.

208 {
210 
211  if (_add_darcy_aux)
213 
215  addStressAux();
216 }

Referenced by PorousFlowUnsaturated::addAuxObjects().

◆ addBrineMaterial()

void PorousFlowActionBase::addBrineMaterial ( const VariableName  xnacl,
bool  at_nodes,
unsigned  phase,
bool  compute_density_and_viscosity,
bool  compute_internal_energy,
bool  compute_enthalpy 
)
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

Definition at line 453 of file PorousFlowActionBase.C.

459 {
460  if (_current_task == "add_material")
461  {
462  std::string material_type = "PorousFlowBrine";
463  InputParameters params = _factory.getValidParams(material_type);
464 
465  params.set<std::vector<VariableName>>("xnacl") = {nacl_brine};
466  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
467  params.set<unsigned int>("phase") = phase;
468  params.set<bool>("compute_density_and_viscosity") = compute_density_and_viscosity;
469  params.set<bool>("compute_internal_energy") = compute_internal_energy;
470  params.set<bool>("compute_enthalpy") = compute_enthalpy;
471 
472  std::string material_name = "PorousFlowActionBase_FluidProperties_qp";
473  if (at_nodes)
474  material_name = "PorousFlowActionBase_FluidProperties";
475 
476  params.set<bool>("at_nodes") = at_nodes;
477  _problem->addMaterial(material_type, material_name, params);
478  }
479 }

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ 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 531 of file PorousFlowActionBase.C.

532 {
533  if (_current_task == "add_user_object")
534  {
535  std::string userobject_type = "PorousFlowCapillaryPressureVG";
536  InputParameters params = _factory.getValidParams(userobject_type);
537  params.set<Real>("m") = m;
538  params.set<Real>("alpha") = alpha;
539  _problem->addUserObject(userobject_type, userobject_name, params);
540  }
541 }

Referenced by PorousFlowUnsaturated::addUserObjects().

◆ 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 220 of file PorousFlowActionBase.C.

221 {
222  if (_current_task == "add_aux_variable")
223  {
224  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
225 
226  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_x", var_params);
227  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_y", var_params);
228  _problem->addAuxVariable("MooseVariableConstMonomial", "darcy_vel_z", var_params);
229  }
230 
231  if (_current_task == "add_aux_kernel")
232  {
233  std::string aux_kernel_type = "PorousFlowDarcyVelocityComponent";
234  InputParameters params = _factory.getValidParams(aux_kernel_type);
235 
236  params.set<RealVectorValue>("gravity") = gravity;
237  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
238  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
239 
240  std::string aux_kernel_name = "PorousFlowActionBase_Darcy_x_Aux";
241  params.set<MooseEnum>("component") = "x";
242  params.set<AuxVariableName>("variable") = "darcy_vel_x";
243  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
244 
245  aux_kernel_name = "PorousFlowActionBase_Darcy_y_Aux";
246  params.set<MooseEnum>("component") = "y";
247  params.set<AuxVariableName>("variable") = "darcy_vel_y";
248  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
249 
250  aux_kernel_name = "PorousFlowActionBase_Darcy_z_Aux";
251  params.set<MooseEnum>("component") = "z";
252  params.set<AuxVariableName>("variable") = "darcy_vel_z";
253  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
254  }
255 }

Referenced by PorousFlowSinglePhaseBase::addAuxObjects().

◆ addDictator()

void PorousFlowSinglePhaseBase::addDictator ( )
overrideprotectedvirtualinherited

Add the PorousFlowDictator object.

Implements PorousFlowActionBase.

Definition at line 277 of file PorousFlowSinglePhaseBase.C.

278 {
279  const std::string uo_name = _dictator_name;
280  const std::string uo_type = "PorousFlowDictator";
281  InputParameters params = _factory.getValidParams(uo_type);
282  std::vector<VariableName> pf_vars = _mass_fraction_vars;
283  pf_vars.push_back(_pp_var);
284  if (_thermal)
285  pf_vars.push_back(_temperature_var[0]);
286  if (_mechanical)
287  pf_vars.insert(pf_vars.end(), _coupled_displacements.begin(), _coupled_displacements.end());
288  params.set<std::vector<VariableName>>("porous_flow_vars") = pf_vars;
289  params.set<unsigned int>("number_fluid_phases") = 1;
290  params.set<unsigned int>("number_fluid_components") = _num_mass_fraction_vars + 1;
291  params.set<unsigned int>("number_aqueous_equilibrium") = _num_aqueous_equilibrium;
292  params.set<unsigned int>("number_aqueous_kinetic") = _num_aqueous_kinetic;
293  _problem->addUserObject(uo_type, uo_name, params);
294 }

◆ 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 388 of file PorousFlowActionBase.C.

389 {
390  if (_current_task == "add_material")
391  {
392  std::string material_type = "PorousFlowEffectiveFluidPressure";
393  InputParameters params = _factory.getValidParams(material_type);
394 
395  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
396 
397  std::string material_name = "PorousFlowUnsaturated_EffectiveFluidPressure_qp";
398  if (at_nodes)
399  material_name = "PorousFlowUnsaturated_EffectiveFluidPressure";
400 
401  params.set<bool>("at_nodes") = at_nodes;
402  _problem->addMaterial(material_type, material_name, params);
403  }
404 }

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ addKernels()

void PorousFlowFullySaturated::addKernels ( )
overrideprotectedvirtual

Add all Kernels.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 75 of file PorousFlowFullySaturated.C.

76 {
78 
80  {
81  const std::string kernel_type = "PorousFlowFullySaturatedDarcyFlow";
82  InputParameters params = _factory.getValidParams(kernel_type);
83  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
84  params.set<RealVectorValue>("gravity") = _gravity;
85 
86  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
87  {
88  const std::string kernel_name = "PorousFlowFullySaturated_DarcyFlow" + Moose::stringify(i);
89  params.set<unsigned int>("fluid_component") = i;
90  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
91  _problem->addKernel(kernel_type, kernel_name, params);
92  }
93 
94  const std::string kernel_name =
95  "PorousFlowFullySaturated_DarcyFlow" + Moose::stringify(_num_mass_fraction_vars);
96  params.set<unsigned int>("fluid_component") = _num_mass_fraction_vars;
97  params.set<NonlinearVariableName>("variable") = _pp_var;
98  _problem->addKernel(kernel_type, kernel_name, params);
99  }
101  {
102  const std::string kernel_type = "PorousFlowFluxLimitedTVDAdvection";
103  InputParameters params = _factory.getValidParams(kernel_type);
104  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
105 
106  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
107  {
108  const std::string kernel_name = "PorousFlowFluxLimited_DarcyFlow" + Moose::stringify(i);
109  params.set<UserObjectName>("advective_flux_calculator") =
110  "PorousFlowFullySaturated_AC_" + Moose::stringify(i);
111  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
112  _problem->addKernel(kernel_type, kernel_name, params);
113  }
114 
115  const std::string kernel_name =
116  "PorousFlowFluxLimited_DarcyFlow" + Moose::stringify(_num_mass_fraction_vars);
117  params.set<NonlinearVariableName>("variable") = _pp_var;
118  params.set<UserObjectName>("advective_flux_calculator") =
119  "PorousFlowFullySaturated_AC_" + Moose::stringify(_num_mass_fraction_vars);
120  _problem->addKernel(kernel_type, kernel_name, params);
121  }
122 
123  if (_transient)
124  {
125  std::string kernel_name = "PorousFlowFullySaturated_MassTimeDerivative";
126  std::string kernel_type = "PorousFlowMassTimeDerivative";
127  InputParameters params = _factory.getValidParams(kernel_type);
128  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
129 
130  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
131  {
132  kernel_name = "PorousFlowFullySaturated_MassTimeDerivative" + Moose::stringify(i);
133  params.set<unsigned int>("fluid_component") = i;
134  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
135  _problem->addKernel(kernel_type, kernel_name, params);
136  }
137 
138  kernel_name =
139  "PorousFlowFullySaturated_MassTimeDerivative" + Moose::stringify(_num_mass_fraction_vars);
140  params.set<unsigned int>("fluid_component") = _num_mass_fraction_vars;
141  params.set<NonlinearVariableName>("variable") = _pp_var;
142  _problem->addKernel(kernel_type, kernel_name, params);
143  }
144 
145  if (_mechanical && _transient)
146  {
147  std::string kernel_name = "PorousFlowFullySaturated_MassVolumetricExpansion";
148  std::string kernel_type = "PorousFlowMassVolumetricExpansion";
149  InputParameters params = _factory.getValidParams(kernel_type);
150  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
151 
152  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
153  {
154  kernel_name = "PorousFlowFullySaturated_MassVolumetricExpansion" + Moose::stringify(i);
155  params.set<unsigned>("fluid_component") = i;
156  params.set<NonlinearVariableName>("variable") = _mass_fraction_vars[i];
157  _problem->addKernel(kernel_type, kernel_name, params);
158  }
159 
160  kernel_name = "PorousFlowFullySaturated_MassVolumetricExpansion" +
161  Moose::stringify(_num_mass_fraction_vars);
162  params.set<unsigned>("fluid_component") = _num_mass_fraction_vars;
163  params.set<NonlinearVariableName>("variable") = _pp_var;
164  _problem->addKernel(kernel_type, kernel_name, params);
165  }
166 
167  if (_thermal)
168  {
170  {
171  std::string kernel_name = "PorousFlowFullySaturated_HeatAdvection";
172  std::string kernel_type = "PorousFlowFullySaturatedHeatAdvection";
173  InputParameters params = _factory.getValidParams(kernel_type);
174  params.set<NonlinearVariableName>("variable") = _temperature_var[0];
175  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
176  params.set<RealVectorValue>("gravity") = _gravity;
177  _problem->addKernel(kernel_type, kernel_name, params);
178  }
180  {
181  const std::string kernel_name = "PorousFlowFullySaturated_HeatAdvection";
182  const std::string kernel_type = "PorousFlowFluxLimitedTVDAdvection";
183  InputParameters params = _factory.getValidParams(kernel_type);
184  params.set<NonlinearVariableName>("variable") = _temperature_var[0];
185  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
186  params.set<UserObjectName>("advective_flux_calculator") = "PorousFlowFullySaturatedHeat_AC";
187  _problem->addKernel(kernel_type, kernel_name, params);
188  }
189  }
190 }

◆ 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 363 of file PorousFlowActionBase.C.

364 {
365  if (_current_task == "add_material")
366  {
367  if (!(parameters().hasDefaultCoupledValue("mass_fraction_vars") ||
368  parameters().hasCoupledValue("mass_fraction_vars")))
369  mooseError("Attempt to add a PorousFlowMassFraction material without setting the "
370  "mass_fraction_vars");
371 
372  std::string material_type = "PorousFlowMassFraction";
373  InputParameters params = _factory.getValidParams(material_type);
374 
375  params.applySpecificParameters(parameters(), {"mass_fraction_vars"});
376  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
377 
378  std::string material_name = "PorousFlowActionBase_MassFraction_qp";
379  if (at_nodes)
380  material_name = "PorousFlowActionBase_MassFraction";
381 
382  params.set<bool>("at_nodes") = at_nodes;
383  _problem->addMaterial(material_type, material_name, params);
384  }
385 }

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ addMaterialDependencies()

void PorousFlowFullySaturated::addMaterialDependencies ( )
overrideprotectedvirtual

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

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 51 of file PorousFlowFullySaturated.C.

52 {
54 
55  // Add necessary objects to list of PorousFlow objects added by this action
56  _included_objects.push_back("PorousFlowFullySaturatedDarcyFlow");
57 
58  if (_transient)
59  _included_objects.push_back("PorousFlowMassTimeDerivative");
60 
61  if (_mechanical && _transient)
62  _included_objects.push_back("PorousFlowMassVolumetricExpansion");
63 
64  if (_thermal)
65  _included_objects.push_back("PorousFlowFullySaturatedHeatAdvection");
66 
68  _included_objects.push_back("PorousFlowAdvectiveFluxCalculatorSaturatedMultiComponent");
69 
71  _included_objects.push_back("PorousFlowAdvectiveFluxCalculatorSaturatedHeat");
72 }

◆ addMaterials()

void PorousFlowFullySaturated::addMaterials ( )
overrideprotectedvirtual

Add all Materials.

Reimplemented from PorousFlowSinglePhaseBase.

Definition at line 224 of file PorousFlowFullySaturated.C.

225 {
227 
228  // add Materials
229  if (_deps.dependsOn(_included_objects, "pressure_saturation_qp"))
230  {
231  // saturation is always unity, so is trivially calculated using PorousFlow1PhaseFullySaturated
232  std::string material_type = "PorousFlow1PhaseFullySaturated";
233  InputParameters params = _factory.getValidParams(material_type);
234  std::string material_name = "PorousFlowFullySaturated_1PhaseP_qp";
235  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
236  params.set<std::vector<VariableName>>("porepressure") = {_pp_var};
237  params.set<bool>("at_nodes") = false;
238  _problem->addMaterial(material_type, material_name, params);
239  }
240 
241  if (_deps.dependsOn(_included_objects, "pressure_saturation_nodal"))
242  {
243  std::string material_type = "PorousFlow1PhaseFullySaturated";
244  InputParameters params = _factory.getValidParams(material_type);
245  std::string material_name = "PorousFlowFullySaturated_1PhaseP";
246  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
247  params.set<std::vector<VariableName>>("porepressure") = {_pp_var};
248  params.set<bool>("at_nodes") = true;
249  _problem->addMaterial(material_type, material_name, params);
250  }
251 
252  if (_deps.dependsOn(_included_objects, "volumetric_strain_qp") ||
253  _deps.dependsOn(_included_objects, "volumetric_strain_nodal"))
255 
256  if (_deps.dependsOn(_included_objects, "relative_permeability_qp"))
257  addRelativePermeabilityCorey(false, 0, 0.0, 0.0, 0.0);
258 
259  if (_deps.dependsOn(_included_objects, "relative_permeability_nodal"))
260  addRelativePermeabilityCorey(true, 0, 0.0, 0.0, 0.0);
261 }

◆ addRelationshipManagers()

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

Definition at line 106 of file PorousFlowActionBase.C.

107 {
108  InputParameters ips = (_stabilization == StabilizationEnum::KT
109  ? _factory.getValidParams("PorousFlowAdvectiveFluxCalculatorSaturated")
110  : emptyInputParameters());
111  addRelationshipManagers(input_rm_type, ips);
112 }

◆ 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
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 482 of file PorousFlowActionBase.C.

485 {
486  if (_current_task == "add_material")
487  {
488  std::string material_type = "PorousFlowRelativePermeabilityCorey";
489  InputParameters params = _factory.getValidParams(material_type);
490 
491  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
492  params.set<Real>("n") = n;
493  params.set<unsigned int>("phase") = phase;
494  params.set<Real>("s_res") = s_res;
495  params.set<Real>("sum_s_res") = sum_s_res;
496 
497  std::string material_name = "PorousFlowActionBase_RelativePermeability_qp";
498  if (at_nodes)
499  material_name = "PorousFlowActionBase_RelativePermeability_nodal";
500 
501  params.set<bool>("at_nodes") = at_nodes;
502  _problem->addMaterial(material_type, material_name, params);
503  }
504 }

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

◆ 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
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 507 of file PorousFlowActionBase.C.

509 {
510  if (_current_task == "add_material")
511  {
512  std::string material_type = "PorousFlowRelativePermeabilityFLAC";
513  InputParameters params = _factory.getValidParams(material_type);
514 
515  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
516  params.set<Real>("m") = m;
517  params.set<unsigned int>("phase") = phase;
518  params.set<Real>("s_res") = s_res;
519  params.set<Real>("sum_s_res") = sum_s_res;
520 
521  std::string material_name = "PorousFlowActionBase_RelativePermeability_qp";
522  if (at_nodes)
523  material_name = "PorousFlowActionBase_RelativePermeability_nodal";
524 
525  params.set<bool>("at_nodes") = at_nodes;
526  _problem->addMaterial(material_type, material_name, params);
527  }
528 }

Referenced by PorousFlowUnsaturated::addMaterials().

◆ addSaturationAux()

void PorousFlowActionBase::addSaturationAux ( unsigned  phase)
protectedinherited

Add an AuxVariable and AuxKernel to calculate saturation.

Parameters
phaseSaturation for this fluid phase

Definition at line 195 of file PorousFlowActionBase.C.

196 {
197  std::string phase_str = Moose::stringify(phase);
198 
199  if (_current_task == "add_aux_variable")
200  {
201  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
202  _problem->addAuxVariable("MooseVariableConstMonomial", "saturation" + phase_str, var_params);
203  }
204 
205  if (_current_task == "add_aux_kernel")
206  {
207  std::string aux_kernel_type = "MaterialStdVectorAux";
208  InputParameters params = _factory.getValidParams(aux_kernel_type);
209 
210  std::string aux_kernel_name = "PorousFlowActionBase_SaturationAux" + phase_str;
211  params.set<MaterialPropertyName>("property") = "PorousFlow_saturation_qp";
212  params.set<unsigned>("index") = phase;
213  params.set<AuxVariableName>("variable") = "saturation" + phase_str;
214  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
215  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
216  }
217 }

Referenced by PorousFlowUnsaturated::addAuxObjects().

◆ addSingleComponentFluidMaterial()

void PorousFlowActionBase::addSingleComponentFluidMaterial ( bool  at_nodes,
unsigned  phase,
bool  compute_density_and_viscosity,
bool  compute_internal_energy,
bool  compute_enthalpy,
const UserObjectName &  fp 
)
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

Definition at line 424 of file PorousFlowActionBase.C.

430 {
431  if (_current_task == "add_material")
432  {
433  std::string material_type = "PorousFlowSingleComponentFluid";
434  InputParameters params = _factory.getValidParams(material_type);
435 
436  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
437  params.set<unsigned int>("phase") = phase;
438  params.set<bool>("compute_density_and_viscosity") = compute_density_and_viscosity;
439  params.set<bool>("compute_internal_energy") = compute_internal_energy;
440  params.set<bool>("compute_enthalpy") = compute_enthalpy;
441  params.set<UserObjectName>("fp") = fp;
442 
443  std::string material_name = "PorousFlowActionBase_FluidProperties_qp";
444  if (at_nodes)
445  material_name = "PorousFlowActionBase_FluidProperties";
446 
447  params.set<bool>("at_nodes") = at_nodes;
448  _problem->addMaterial(material_type, material_name, params);
449  }
450 }

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ addStressAux()

void PorousFlowActionBase::addStressAux ( )
protectedinherited

Add AuxVariables and AuxKernels to compute effective stress.

Definition at line 258 of file PorousFlowActionBase.C.

259 {
260  if (_current_task == "add_aux_variable")
261  {
262  auto var_params = _factory.getValidParams("MooseVariableConstMonomial");
263  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xx", var_params);
264  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xy", var_params);
265  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_xz", var_params);
266  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yx", var_params);
267  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yy", var_params);
268  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_yz", var_params);
269  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zx", var_params);
270  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zy", var_params);
271  _problem->addAuxVariable("MooseVariableConstMonomial", "stress_zz", var_params);
272  }
273 
274  if (_current_task == "add_aux_kernel")
275  {
276  std::string aux_kernel_type = "RankTwoAux";
277  InputParameters params = _factory.getValidParams(aux_kernel_type);
278 
279  params.set<MaterialPropertyName>("rank_two_tensor") = "stress";
280  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
281 
282  std::string aux_kernel_name = "PorousFlowAction_stress_xx";
283  params.set<AuxVariableName>("variable") = "stress_xx";
284  params.set<unsigned>("index_i") = 0;
285  params.set<unsigned>("index_j") = 0;
286  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
287 
288  aux_kernel_name = "PorousFlowAction_stress_xy";
289  params.set<AuxVariableName>("variable") = "stress_xy";
290  params.set<unsigned>("index_i") = 0;
291  params.set<unsigned>("index_j") = 1;
292  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
293 
294  aux_kernel_name = "PorousFlowAction_stress_xz";
295  params.set<AuxVariableName>("variable") = "stress_xz";
296  params.set<unsigned>("index_i") = 0;
297  params.set<unsigned>("index_j") = 2;
298  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
299 
300  aux_kernel_name = "PorousFlowAction_stress_yx";
301  params.set<AuxVariableName>("variable") = "stress_yx";
302  params.set<unsigned>("index_i") = 1;
303  params.set<unsigned>("index_j") = 0;
304  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
305 
306  aux_kernel_name = "PorousFlowAction_stress_yy";
307  params.set<AuxVariableName>("variable") = "stress_yy";
308  params.set<unsigned>("index_i") = 1;
309  params.set<unsigned>("index_j") = 1;
310  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
311 
312  aux_kernel_name = "PorousFlowAction_stress_yz";
313  params.set<AuxVariableName>("variable") = "stress_yz";
314  params.set<unsigned>("index_i") = 1;
315  params.set<unsigned>("index_j") = 2;
316  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
317 
318  aux_kernel_name = "PorousFlowAction_stress_zx";
319  params.set<AuxVariableName>("variable") = "stress_zx";
320  params.set<unsigned>("index_i") = 2;
321  params.set<unsigned>("index_j") = 0;
322  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
323 
324  aux_kernel_name = "PorousFlowAction_stress_zy";
325  params.set<AuxVariableName>("variable") = "stress_zy";
326  params.set<unsigned>("index_i") = 2;
327  params.set<unsigned>("index_j") = 1;
328  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
329 
330  aux_kernel_name = "PorousFlowAction_stress_zz";
331  params.set<AuxVariableName>("variable") = "stress_zz";
332  params.set<unsigned>("index_i") = 2;
333  params.set<unsigned>("index_j") = 2;
334  _problem->addAuxKernel(aux_kernel_type, aux_kernel_name, params);
335  }
336 }

Referenced by PorousFlowSinglePhaseBase::addAuxObjects().

◆ 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 339 of file PorousFlowActionBase.C.

340 {
341  if (_current_task == "add_material")
342  {
343  if (!parameters().hasDefaultCoupledValue("temperature"))
344  mooseError("Attempt to add a PorousFlowTemperature material without setting a temperature "
345  "variable");
346 
347  std::string material_type = "PorousFlowTemperature";
348  InputParameters params = _factory.getValidParams(material_type);
349 
350  params.applySpecificParameters(parameters(), {"temperature"});
351  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
352 
353  std::string material_name = "PorousFlowActionBase_Temperature_qp";
354  if (at_nodes)
355  material_name = "PorousFlowActionBase_Temperature";
356 
357  params.set<bool>("at_nodes") = at_nodes;
358  _problem->addMaterial(material_type, material_name, params);
359  }
360 }

Referenced by PorousFlowSinglePhaseBase::addMaterials().

◆ addUserObjects()

void PorousFlowFullySaturated::addUserObjects ( )
overrideprotectedvirtual

Add all other UserObjects.

Reimplemented from PorousFlowActionBase.

Definition at line 193 of file PorousFlowFullySaturated.C.

194 {
196 
197  // add Advective Flux calculator UserObjects, if required
199  {
200  for (unsigned i = 0; i < _num_mass_fraction_vars; ++i)
201  {
202  const std::string userobject_name = "PorousFlowFullySaturated_AC_" + Moose::stringify(i);
203  addAdvectiveFluxCalculatorSaturatedMultiComponent(0, i, true, userobject_name);
204  }
205 
206  const std::string userobject_name =
207  "PorousFlowFullySaturated_AC_" + Moose::stringify(_num_mass_fraction_vars);
208 
209  if (_num_mass_fraction_vars == 0)
210  addAdvectiveFluxCalculatorSaturated(0, true, userobject_name); // 1 component only
211  else
213  0, _num_mass_fraction_vars, true, userobject_name);
214 
215  if (_thermal)
216  {
217  const std::string userobject_name = "PorousFlowFullySaturatedHeat_AC";
218  addAdvectiveFluxCalculatorSaturatedHeat(0, true, userobject_name);
219  }
220  }
221 }

◆ addVolumetricStrainMaterial()

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

Adds a quadpoint volumetric strain material.

Parameters
displacementsthe names of the displacement variables
consistent_with_displaced_meshThe volumetric strain should be consistent with the displaced mesh

Definition at line 407 of file PorousFlowActionBase.C.

409 {
410  if (_current_task == "add_material")
411  {
412  std::string material_type = "PorousFlowVolumetricStrain";
413  InputParameters params = _factory.getValidParams(material_type);
414 
415  std::string material_name = "PorousFlowActionBase_VolumetricStrain";
416  params.set<UserObjectName>("PorousFlowDictator") = _dictator_name;
417  params.set<std::vector<VariableName>>("displacements") = displacements;
418  params.set<bool>("consistent_with_displaced_mesh") = consistent_with_displaced_mesh;
419  _problem->addMaterial(material_type, material_name, params);
420  }
421 }

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

Member Data Documentation

◆ _add_darcy_aux

const bool PorousFlowSinglePhaseBase::_add_darcy_aux
protectedinherited

Add a AuxVariables to record Darcy velocity.

Definition at line 56 of file PorousFlowSinglePhaseBase.h.

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

◆ _add_stress_aux

const bool PorousFlowSinglePhaseBase::_add_stress_aux
protectedinherited

Add AuxVariables for stress.

Definition at line 59 of file PorousFlowSinglePhaseBase.h.

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

◆ _biot_coefficient

const Real PorousFlowSinglePhaseBase::_biot_coefficient
protectedinherited

Fluid specific heat capacity at constant volume.

Definition at line 53 of file PorousFlowSinglePhaseBase.h.

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

◆ _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 75 of file PorousFlowActionBase.h.

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

◆ _flux_limiter_type

const MooseEnum PorousFlowActionBase::_flux_limiter_type
protectedinherited

◆ _fp

const UserObjectName& PorousFlowSinglePhaseBase::_fp
protectedinherited

Name of the fluid-properties UserObject.

Definition at line 50 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addMaterials(), and PorousFlowSinglePhaseBase::PorousFlowSinglePhaseBase().

◆ _gravity

const RealVectorValue PorousFlowActionBase::_gravity
protectedinherited

◆ _included_objects

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

List of Kernels, AuxKernels, Materials, etc, that are added in this input file.

This list will be used to determine what Materials need to be added. Actions may add or remove things from this list

Definition at line 51 of file PorousFlowActionBase.h.

Referenced by PorousFlowActionBase::act(), addMaterialDependencies(), PorousFlowSinglePhaseBase::addMaterialDependencies(), PorousFlowUnsaturated::addMaterialDependencies(), PorousFlowBasicTHM::addMaterialDependencies(), PorousFlowActionBase::addMaterialDependencies(), addMaterials(), PorousFlowSinglePhaseBase::addMaterials(), PorousFlowBasicTHM::addMaterials(), and PorousFlowUnsaturated::addMaterials().

◆ _mass_fraction_vars

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

Name of the mass-fraction variables (if any)

Definition at line 66 of file PorousFlowActionBase.h.

Referenced by PorousFlowSinglePhaseBase::addDictator(), addKernels(), PorousFlowUnsaturated::addKernels(), and PorousFlowSinglePhaseBase::addMaterials().

◆ _mechanical

const bool PorousFlowSinglePhaseBase::_mechanical
protectedinherited

◆ _nacl_index

const unsigned PorousFlowSinglePhaseBase::_nacl_index
protectedinherited

Index of NaCl in list of fluid components.

Definition at line 65 of file PorousFlowSinglePhaseBase.h.

Referenced by PorousFlowSinglePhaseBase::addMaterials(), and PorousFlowSinglePhaseBase::PorousFlowSinglePhaseBase().

◆ _ndisp

const unsigned PorousFlowActionBase::_ndisp
protectedinherited

Number of displacement variables supplied.

Definition at line 78 of file PorousFlowActionBase.h.

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

◆ _num_aqueous_equilibrium

const unsigned int PorousFlowActionBase::_num_aqueous_equilibrium
protectedinherited

Number of aqueous-equilibrium secondary species.

Definition at line 57 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 60 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

◆ _stabilization

enum PorousFlowActionBase::StabilizationEnum PorousFlowActionBase::_stabilization
protectedinherited

◆ _temperature_var

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

◆ _thermal

const bool PorousFlowSinglePhaseBase::_thermal
protectedinherited

◆ _transient

bool PorousFlowActionBase::_transient
protectedinherited

◆ _use_brine

const bool PorousFlowSinglePhaseBase::_use_brine
protectedinherited

The documentation for this class was generated from the following files:
PorousFlowActionBase::_num_mass_fraction_vars
const unsigned _num_mass_fraction_vars
Number of mass-fraction variables.
Definition: PorousFlowActionBase.h:69
PorousFlowActionBase::_coord_system
Moose::CoordinateSystemType _coord_system
Coordinate system of the simulation (eg RZ, XYZ, etc)
Definition: PorousFlowActionBase.h:89
PorousFlowActionBase::addAuxObjects
virtual void addAuxObjects()
Add all AuxVariables and AuxKernels.
Definition: PorousFlowActionBase.C:180
PorousFlowActionBase::_transient
bool _transient
Flag to denote if the simulation is transient.
Definition: PorousFlowActionBase.h:92
PorousFlowActionBase::addMaterials
virtual void addMaterials()
Add all Materials.
Definition: PorousFlowActionBase.C:190
PorousFlowActionBase::_stabilization
enum PorousFlowActionBase::StabilizationEnum _stabilization
PorousFlowSinglePhaseBase::_coupling_type
enum PorousFlowSinglePhaseBase::CouplingTypeEnum _coupling_type
PorousFlowActionBase::addStressAux
void addStressAux()
Add AuxVariables and AuxKernels to compute effective stress.
Definition: PorousFlowActionBase.C:258
PorousFlowActionBase::addAdvectiveFluxCalculatorSaturated
void addAdvectiveFluxCalculatorSaturated(unsigned phase, bool multiply_by_density, std::string userobject_name)
Definition: PorousFlowActionBase.C:544
PorousFlowSinglePhaseBase::_mechanical
const bool _mechanical
Definition: PorousFlowSinglePhaseBase.h:47
PorousFlowActionBase::addUserObjects
virtual void addUserObjects()
Add all other UserObjects.
Definition: PorousFlowActionBase.C:174
PorousFlowSinglePhaseBase::PorousFlowSinglePhaseBase
PorousFlowSinglePhaseBase(const InputParameters &params)
Definition: PorousFlowSinglePhaseBase.C:65
PorousFlowSinglePhaseBase::_add_stress_aux
const bool _add_stress_aux
Add AuxVariables for stress.
Definition: PorousFlowSinglePhaseBase.h:59
PorousFlowActionBase::addKernels
virtual void addKernels()
Add all Kernels.
Definition: PorousFlowActionBase.C:185
PorousFlowSinglePhaseBase::_pp_var
const VariableName _pp_var
Porepressure NonlinearVariable name.
Definition: PorousFlowSinglePhaseBase.h:35
PorousFlowActionBase::addRelationshipManagers
virtual void addRelationshipManagers(Moose::RelationshipManagerType when_type) override
Definition: PorousFlowActionBase.C:106
PorousFlowActionBase::_coupled_displacements
std::vector< VariableName > _coupled_displacements
Displacement Variable names.
Definition: PorousFlowActionBase.h:81
PorousFlowActionBase::_mass_fraction_vars
const std::vector< VariableName > & _mass_fraction_vars
Name of the mass-fraction variables (if any)
Definition: PorousFlowActionBase.h:66
PorousFlowDependencies::_deps
DependencyResolver< std::string > _deps
All dependencies of kernels, auxkernels, materials, etc, are stored in _dependencies.
Definition: PorousFlowDependencies.h:37
PorousFlowActionBase::StabilizationEnum::Full
PorousFlowSinglePhaseBase::addKernels
virtual void addKernels() override
Add all Kernels.
Definition: PorousFlowSinglePhaseBase.C:127
PorousFlowActionBase::addAdvectiveFluxCalculatorSaturatedMultiComponent
void addAdvectiveFluxCalculatorSaturatedMultiComponent(unsigned phase, unsigned fluid_component, bool multiply_by_density, std::string userobject_name)
Definition: PorousFlowActionBase.C:616
PorousFlowActionBase::addDarcyAux
void addDarcyAux(const RealVectorValue &gravity)
Add AuxVariables and AuxKernels to calculate Darcy velocity.
Definition: PorousFlowActionBase.C:220
PorousFlowActionBase::_gravity
const RealVectorValue _gravity
Gravity.
Definition: PorousFlowActionBase.h:63
PorousFlowActionBase::_num_aqueous_kinetic
const unsigned int _num_aqueous_kinetic
Number of aqeuous-kinetic secondary species that are involved in mineralisation.
Definition: PorousFlowActionBase.h:60
PorousFlowActionBase::_num_aqueous_equilibrium
const unsigned int _num_aqueous_equilibrium
Number of aqueous-equilibrium secondary species.
Definition: PorousFlowActionBase.h:57
PorousFlowSinglePhaseBase::addMaterialDependencies
virtual void addMaterialDependencies() override
Add all material dependencies so that the correct version of each material can be added.
Definition: PorousFlowSinglePhaseBase.C:97
fp
Definition: DimensionlessFlowNumbers.h:19
PorousFlowActionBase::_temperature_var
const std::vector< VariableName > & _temperature_var
Name of the temperature variable (if any)
Definition: PorousFlowActionBase.h:72
PorousFlowSinglePhaseBase::addMaterials
virtual void addMaterials() override
Add all Materials.
Definition: PorousFlowSinglePhaseBase.C:219
PorousFlowActionBase::addAdvectiveFluxCalculatorSaturatedHeat
void addAdvectiveFluxCalculatorSaturatedHeat(unsigned phase, bool multiply_by_density, std::string userobject_name)
Definition: PorousFlowActionBase.C:580
PorousFlowActionBase::_dictator_name
const std::string _dictator_name
The name of the PorousFlowDictator object to be added.
Definition: PorousFlowActionBase.h:54
PorousFlowSinglePhaseBase::_thermal
const bool _thermal
Flags to indicate whether thermal or mechanical effects are included.
Definition: PorousFlowSinglePhaseBase.h:46
PorousFlowActionBase::addVolumetricStrainMaterial
void addVolumetricStrainMaterial(const std::vector< VariableName > &displacements, bool consistent_with_displaced_mesh)
Adds a quadpoint volumetric strain material.
Definition: PorousFlowActionBase.C:407
PorousFlowSinglePhaseBase::_add_darcy_aux
const bool _add_darcy_aux
Add a AuxVariables to record Darcy velocity.
Definition: PorousFlowSinglePhaseBase.h:56
PorousFlowActionBase::_flux_limiter_type
const MooseEnum _flux_limiter_type
Flux limiter type in the Kuzmin-Turek FEM-TVD stabilization scheme.
Definition: PorousFlowActionBase.h:84
PorousFlowActionBase::addRelativePermeabilityCorey
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.
Definition: PorousFlowActionBase.C:482
PorousFlowActionBase::_included_objects
std::vector< std::string > _included_objects
List of Kernels, AuxKernels, Materials, etc, that are added in this input file.
Definition: PorousFlowActionBase.h:51
PorousFlowActionBase::StabilizationEnum::KT
PorousFlowActionBase::addMaterialDependencies
virtual void addMaterialDependencies()
Add all material dependencies so that the correct version of each material can be added.
Definition: PorousFlowActionBase.C:152