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

#include <CavityPressureUserObject.h>

Inheritance diagram for CavityPressureUserObject:
[legend]

Public Member Functions

 CavityPressureUserObject (const InputParameters &parameters)
 
virtual void execute () override
 
virtual void initialize () override
 
virtual void finalize () override
 
virtual Real computeCavityVolume ()
 
Real getValue (const MooseEnum &quantity) const
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Types

enum  CAVITY_PRESSURE_USEROBJECT_QUANTITY { INITIAL_MOLES, CAVITY_PRESSURE }
 

Protected Attributes

Real & _cavity_pressure
 
Real & _n0
 Initial number of moles of gas. More...
 
const Real _initial_pressure
 
std::vector< const PostprocessorValue * > _material_input
 
std::vector< const PostprocessorValue * > _volume
 
const Real _R
 
const Real & _temperature
 
const bool _init_temp_given
 
const Real _init_temp
 
const Real _startup_time
 
bool & _initialized
 
Real _start_time
 

Detailed Description

Definition at line 14 of file CavityPressureUserObject.h.

Member Enumeration Documentation

◆ CAVITY_PRESSURE_USEROBJECT_QUANTITY

Enumerator
INITIAL_MOLES 
CAVITY_PRESSURE 

Definition at line 30 of file CavityPressureUserObject.h.

31  {
34  };

Constructor & Destructor Documentation

◆ CavityPressureUserObject()

CavityPressureUserObject::CavityPressureUserObject ( const InputParameters &  parameters)

Definition at line 48 of file CavityPressureUserObject.C.

49  : GeneralUserObject(params),
50  _cavity_pressure(declareRestartableData<Real>("cavity_pressure", 0.0)),
51  _n0(declareRestartableData<Real>("initial_moles", 0.0)),
52  _initial_pressure(getParam<Real>("initial_pressure")),
53  _material_input(params.get<std::vector<PostprocessorName>>("material_input").size()),
54  _volume(params.get<std::vector<PostprocessorName>>("volume").size()),
55  _R(getParam<Real>("R")),
56  _temperature(getPostprocessorValue("temperature")),
57  _init_temp_given(isParamValid("initial_temperature")),
58  _init_temp(_init_temp_given ? getParam<Real>("initial_temperature") : 0.0),
59  _startup_time(getParam<Real>("startup_time")),
60  _initialized(declareRestartableData<bool>("initialized", false)),
61  _start_time(0.0)
62 {
63  auto material_names = params.get<std::vector<PostprocessorName>>("material_input");
64  for (unsigned int i = 0; i < _material_input.size(); ++i)
65  _material_input[i] = &getPostprocessorValueByName(material_names[i]);
66 
67  auto volume_names = params.get<std::vector<PostprocessorName>>("volume");
68  for (unsigned int i = 0; i < volume_names.size(); ++i)
69  _volume[i] = &getPostprocessorValueByName(volume_names[i]);
70 }

Member Function Documentation

◆ computeCavityVolume()

Real CavityPressureUserObject::computeCavityVolume ( )
virtual

Definition at line 131 of file CavityPressureUserObject.C.

132 {
133  Real volume = 0;
134  for (unsigned int i = 0; i < _volume.size(); ++i)
135  volume += *_volume[i];
136 
137  return volume;
138 }

Referenced by execute(), and initialize().

◆ execute()

void CavityPressureUserObject::execute ( )
overridevirtual

Definition at line 117 of file CavityPressureUserObject.C.

118 {
119  const Real volume = computeCavityVolume();
120  Real mat = 0;
121 
122  for (unsigned int i = 0; i < _material_input.size(); ++i)
123  mat += *_material_input[i];
124 
125  const Real pressure = (_n0 + mat) * _R * _temperature / volume;
126  const Real factor = _t >= _start_time + _startup_time ? 1.0 : (_t - _start_time) / _startup_time;
127  _cavity_pressure = factor * pressure;
128 }

◆ finalize()

virtual void CavityPressureUserObject::finalize ( )
inlineoverridevirtual

Definition at line 23 of file CavityPressureUserObject.h.

23 {}

◆ getValue()

Real CavityPressureUserObject::getValue ( const MooseEnum &  quantity) const

Definition at line 73 of file CavityPressureUserObject.C.

74 {
75  Real value = 0;
76  if (quantity == INITIAL_MOLES)
77  {
78  if (_n0 < 0.0)
79  mooseError("In ",
80  _name,
81  ": Negative number of moles calculated as an input for the cavity pressure");
82 
83  value = _n0;
84  }
85  else if (quantity == CAVITY_PRESSURE)
86  value = _cavity_pressure;
87  else
88  mooseError("In ", _name, ": Unknown quantity.");
89 
90  return value;
91 }

Referenced by CavityPressurePostprocessor::getValue().

◆ initialize()

void CavityPressureUserObject::initialize ( )
overridevirtual

Definition at line 94 of file CavityPressureUserObject.C.

95 {
96  if (!_initialized)
97  {
98  const Real volume = computeCavityVolume();
99  Real init_temp = _temperature;
100  if (_init_temp_given)
101  init_temp = _init_temp;
102 
103  if (MooseUtils::absoluteFuzzyLessEqual(init_temp, 0.0))
104  mooseError("Cannot have initial temperature of zero when initializing cavity pressure. "
105  "Does the supplied Postprocessor for temperature execute at initial?");
106 
107  _n0 = _initial_pressure * volume / (_R * init_temp);
108  _start_time = _t - _dt;
109  const Real factor =
110  _t >= _start_time + _startup_time ? 1.0 : (_t - _start_time) / _startup_time;
112  _initialized = true;
113  }
114 }

◆ validParams()

InputParameters CavityPressureUserObject::validParams ( )
static

Definition at line 17 of file CavityPressureUserObject.C.

18 {
19  InputParameters params = GeneralUserObject::validParams();
20  params.addClassDescription("Uses the ideal gas law to compute internal pressure "
21  "and an initial moles of gas quantity.");
22  params.addRangeCheckedParam<Real>(
23  "initial_pressure",
24  0.0,
25  "initial_pressure >= 0.0",
26  "The initial pressure in the cavity. If not given, a zero initial pressure will be used.");
27  params.addParam<std::vector<PostprocessorName>>("material_input",
28  "The name of the postprocessor(s) that holds the "
29  "amount of material injected into the cavity.");
30  params.addRequiredRangeCheckedParam<Real>(
31  "R", "R > 0.0", "The universal gas constant for the units used.");
32  params.addRequiredParam<PostprocessorName>(
33  "temperature", "The name of the average temperature postprocessor value.");
34  params.addRangeCheckedParam<Real>(
35  "initial_temperature", "initial_temperature > 0.0", "Initial temperature (optional)");
36  params.addRequiredParam<std::vector<PostprocessorName>>(
37  "volume",
38  "The name of the postprocessor(s) that holds the value of the internal volume in the cavity");
39  params.addParam<Real>(
40  "startup_time",
41  0.0,
42  "The amount of time during which the pressure will ramp from zero to its true value.");
43  params.set<bool>("use_displaced_mesh") = true;
44 
45  return params;
46 }

Referenced by CavityPressureUOAction::validParams().

Member Data Documentation

◆ _cavity_pressure

Real& CavityPressureUserObject::_cavity_pressure
protected

Definition at line 36 of file CavityPressureUserObject.h.

Referenced by execute(), getValue(), and initialize().

◆ _init_temp

const Real CavityPressureUserObject::_init_temp
protected

Definition at line 50 of file CavityPressureUserObject.h.

Referenced by initialize().

◆ _init_temp_given

const bool CavityPressureUserObject::_init_temp_given
protected

Definition at line 49 of file CavityPressureUserObject.h.

Referenced by initialize().

◆ _initial_pressure

const Real CavityPressureUserObject::_initial_pressure
protected

Definition at line 41 of file CavityPressureUserObject.h.

Referenced by initialize().

◆ _initialized

bool& CavityPressureUserObject::_initialized
protected

Definition at line 54 of file CavityPressureUserObject.h.

Referenced by initialize().

◆ _material_input

std::vector<const PostprocessorValue *> CavityPressureUserObject::_material_input
protected

Definition at line 43 of file CavityPressureUserObject.h.

Referenced by CavityPressureUserObject(), and execute().

◆ _n0

Real& CavityPressureUserObject::_n0
protected

Initial number of moles of gas.

Definition at line 39 of file CavityPressureUserObject.h.

Referenced by execute(), getValue(), and initialize().

◆ _R

const Real CavityPressureUserObject::_R
protected

Definition at line 46 of file CavityPressureUserObject.h.

Referenced by execute(), and initialize().

◆ _start_time

Real CavityPressureUserObject::_start_time
protected

Definition at line 55 of file CavityPressureUserObject.h.

Referenced by execute(), and initialize().

◆ _startup_time

const Real CavityPressureUserObject::_startup_time
protected

Definition at line 52 of file CavityPressureUserObject.h.

Referenced by execute(), and initialize().

◆ _temperature

const Real& CavityPressureUserObject::_temperature
protected

Definition at line 48 of file CavityPressureUserObject.h.

Referenced by execute(), and initialize().

◆ _volume

std::vector<const PostprocessorValue *> CavityPressureUserObject::_volume
protected

Definition at line 44 of file CavityPressureUserObject.h.

Referenced by CavityPressureUserObject(), and computeCavityVolume().


The documentation for this class was generated from the following files:
CavityPressureUserObject::_volume
std::vector< const PostprocessorValue * > _volume
Definition: CavityPressureUserObject.h:44
CavityPressureUserObject::_start_time
Real _start_time
Definition: CavityPressureUserObject.h:55
CavityPressureUserObject::_R
const Real _R
Definition: CavityPressureUserObject.h:46
CavityPressureUserObject::_init_temp
const Real _init_temp
Definition: CavityPressureUserObject.h:50
CavityPressureUserObject::_init_temp_given
const bool _init_temp_given
Definition: CavityPressureUserObject.h:49
CavityPressureUserObject::_initialized
bool & _initialized
Definition: CavityPressureUserObject.h:54
CavityPressureUserObject::_cavity_pressure
Real & _cavity_pressure
Definition: CavityPressureUserObject.h:36
CavityPressureUserObject::_temperature
const Real & _temperature
Definition: CavityPressureUserObject.h:48
CavityPressureUserObject::computeCavityVolume
virtual Real computeCavityVolume()
Definition: CavityPressureUserObject.C:131
CavityPressureUserObject::CAVITY_PRESSURE
Definition: CavityPressureUserObject.h:33
CavityPressureUserObject::_initial_pressure
const Real _initial_pressure
Definition: CavityPressureUserObject.h:41
CavityPressureUserObject::_startup_time
const Real _startup_time
Definition: CavityPressureUserObject.h:52
validParams
InputParameters validParams()
CavityPressureUserObject::INITIAL_MOLES
Definition: CavityPressureUserObject.h:32
CavityPressureUserObject::_material_input
std::vector< const PostprocessorValue * > _material_input
Definition: CavityPressureUserObject.h:43
CavityPressureUserObject::_n0
Real & _n0
Initial number of moles of gas.
Definition: CavityPressureUserObject.h:39
NS::pressure
const std::string pressure
Definition: NS.h:25