www.mooseframework.org
PorousFlowActionBase.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef POROUSFLOWACTIONBASE_H
8 #define POROUSFLOWACTIONBASE_H
9 
10 #include "Action.h"
11 #include "PorousFlowDependencies.h"
12 
14 
15 template <>
16 InputParameters validParams<PorousFlowActionBase>();
17 
24 class PorousFlowActionBase : public Action, public PorousFlowDependencies
25 {
26 public:
27  PorousFlowActionBase(const InputParameters & params);
28 
29  virtual void act() override;
30 
31 protected:
38  std::vector<std::string> _objects_to_add;
39 
41  const std::string _dictator_name;
42 
44  const RealVectorValue _gravity;
45 
47  const std::vector<VariableName> & _mass_fraction_vars;
48 
50  const unsigned _num_mass_fraction_vars;
51 
53  const std::vector<VariableName> & _temperature_var;
54 
56  const std::vector<NonlinearVariableName> & _displacements;
57 
59  const unsigned _ndisp;
60 
62  std::vector<VariableName> _coupled_displacements;
63 
65  Moose::CoordinateSystemType _coord_system;
66 
70  virtual void addDictator() = 0;
71 
76  void addSaturationAux(unsigned phase);
77 
82  void addDarcyAux(const RealVectorValue & gravity);
83 
87  void addStressAux();
88 
93  void addTemperatureMaterial(bool at_nodes);
94 
99  void addMassFractionMaterial(bool at_nodes);
100 
105  void addEffectiveFluidPressureMaterial(bool at_nodes);
106 
113  void addVolumetricStrainMaterial(const std::vector<VariableName> & displacements,
114  bool consistent_with_displaced_mesh);
115 
125  void addSingleComponentFluidMaterial(bool at_nodes,
126  unsigned phase,
127  bool compute_density_and_viscosity,
128  bool compute_internal_energy,
129  bool compute_enthalpy,
130  const UserObjectName & fp);
131 
141  void addBrineMaterial(const VariableName xnacl,
142  bool at_nodes,
143  unsigned phase,
144  bool compute_density_and_viscosity,
145  bool compute_internal_energy,
146  bool compute_enthalpy);
147 
155  void
156  addRelativePermeabilityCorey(bool at_nodes, unsigned phase, Real n, Real s_res, Real sum_s_res);
157 
165  void
166  addRelativePermeabilityFLAC(bool at_nodes, unsigned phase, Real m, Real s_res, Real sum_s_res);
167 
174  void addCapillaryPressureVG(Real m, Real alpha, std::string userobject_name);
175 
183  void
184  addJoiner(bool at_nodes, const std::string & material_property, const std::string & output_name);
185 
191  void joinDensity(bool at_nodes);
192 
198  void joinViscosity(bool at_nodes);
199 
205  void joinRelativePermeability(bool at_nodes);
206 
212  void joinInternalEnergy(bool at_nodes);
213 
219  void joinEnthalpy(bool at_nodes);
220 };
221 
222 #endif // POROUSFLOWACTIONBASE_H
Moose::CoordinateSystemType _coord_system
Coordinate system of the simulation (eg RZ, XYZ, etc)
void addStressAux()
Add AuxVariables and AuxKernels to compute effective stress.
const std::vector< VariableName > & _mass_fraction_vars
Name of the mass-fraction variables (if any)
void addSaturationAux(unsigned phase)
Add an AuxVariable and AuxKernel to calculate saturation.
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.
PorousFlowActionBase(const InputParameters &params)
void joinEnthalpy(bool at_nodes)
Adds a PorousFlowJoiner for the fluid enthalpy.
void addEffectiveFluidPressureMaterial(bool at_nodes)
Adds a nodal and a quadpoint effective fluid pressure material.
InputParameters validParams< PorousFlowActionBase >()
std::vector< VariableName > _coupled_displacements
displacement Variable names
void joinInternalEnergy(bool at_nodes)
Adds a PorousFlowJoiner for the fluid internal energy.
void addCapillaryPressureVG(Real m, Real alpha, std::string userobject_name)
Adds a van Genuchten capillary pressure UserObject.
virtual void addDictator()=0
add the PorousFlowDictator object
virtual void act() override
void joinDensity(bool at_nodes)
Adds a PorousFlowJoiner for the fluid density.
const unsigned _ndisp
number of displacement variables supplied
std::vector< std::string > _objects_to_add
List of Kernels, AuxKernels, Materials, etc, to be added.
void addDarcyAux(const RealVectorValue &gravity)
Add AuxVariables and AuxKernels to calculate Darcy velocity.
Base class for PorousFlow actions.
void addTemperatureMaterial(bool at_nodes)
Adds a nodal and a quadpoint Temperature material.
const RealVectorValue _gravity
gravity
const std::vector< VariableName > & _temperature_var
Name of the temperature variable (if any)
void addMassFractionMaterial(bool at_nodes)
Adds a nodal and a quadpoint MassFraction material.
void joinRelativePermeability(bool at_nodes)
Adds a PorousFlowJoiner for the fluid relative permeability.
void joinViscosity(bool at_nodes)
Adds a PorousFlowJoiner for the fluid viscosity.
Holds the PorousFlow dependencies of kernels, auxkernels, materials, etc.
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.
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.
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.
void addVolumetricStrainMaterial(const std::vector< VariableName > &displacements, bool consistent_with_displaced_mesh)
Adds a quadpoint volumetric strain material.
const std::vector< NonlinearVariableName > & _displacements
displacement NonlinearVariable names (if any)
void addJoiner(bool at_nodes, const std::string &material_property, const std::string &output_name)
Adds a PorousFlowJoiner for the material_property Material.
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.