https://mooseframework.inl.gov
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
GravityVectorInterface Class Reference

Interface for specifying gravity vector. More...

#include <GravityVectorInterface.h>

Inheritance diagram for GravityVectorInterface:
[legend]

Public Member Functions

 GravityVectorInterface (const MooseObject *moose_object)
 
Real gravityMagnitude () const
 Gets gravity magnitude. More...
 
const RealVectorValuegravityVector () const
 Gets gravity magnitude. More...
 
const RealVectorValuegravityDirection () const
 Gets gravity direction (zero vector if zero magnitude) More...
 

Static Public Member Functions

static InputParameters validParams ()
 

Private Attributes

RealVectorValue _gravity_vector
 Gravitational acceleration vector. More...
 
Real _gravity_magnitude
 Gravitational acceleration magnitude. More...
 
RealVectorValue _gravity_direction
 Gravitational acceleration unit direction. More...
 

Detailed Description

Interface for specifying gravity vector.

Definition at line 18 of file GravityVectorInterface.h.

Constructor & Destructor Documentation

◆ GravityVectorInterface()

GravityVectorInterface::GravityVectorInterface ( const MooseObject moose_object)

Definition at line 32 of file GravityVectorInterface.C.

33 {
34  if (moose_object->isParamValid("gravity_direction"))
35  {
36  if (moose_object->isParamValid("gravity_vector"))
37  moose_object->paramError(
38  "gravity_direction",
39  "The parameters 'gravity_vector' and 'gravity_direction' are mutually exclusive.");
40 
41  _gravity_magnitude = moose_object->getParam<Real>("gravity_magnitude");
42 
43  // Direction is normalized below
44  _gravity_direction = moose_object->getParam<RealVectorValue>("gravity_direction");
45 
46  // If gravity is zero, direction is the zero vector (which is initial value)
47  if (MooseUtils::absoluteFuzzyEqual(_gravity_direction.norm(), 0.0))
48  {
49  if (!MooseUtils::absoluteFuzzyEqual(_gravity_magnitude, 0.0))
50  mooseError("If 'gravity_direction' is zero, then 'gravity_magnitude' must also be zero.");
51  }
52  else
53  {
54  // If gravity is zero, direction is the zero vector
55  if (MooseUtils::absoluteFuzzyEqual(_gravity_magnitude, 0.0))
57  else
59  }
60 
62  }
63  else if (moose_object->isParamValid("gravity_vector"))
64  {
65  if (moose_object->isParamSetByUser("gravity_magnitude"))
66  moose_object->paramError(
67  "gravity_magnitude",
68  "The parameters 'gravity_vector' and 'gravity_magnitude' are mutually exclusive.");
69 
70  _gravity_vector = moose_object->getParam<RealVectorValue>("gravity_vector");
72 
73  // If gravity is zero, direction is the zero vector
74  if (MooseUtils::absoluteFuzzyEqual(_gravity_magnitude, 0.0))
76  else
78  }
79  else
80  moose_object->paramError("gravity_vector",
81  "Either 'gravity_vector' or 'gravity_direction' must be specified.");
82 }
auto norm() const
void paramError(const std::string &param, Args... args) const
const T & getParam(const std::string &name) const
void mooseError(Args &&... args)
Real _gravity_magnitude
Gravitational acceleration magnitude.
RealVectorValue _gravity_direction
Gravitational acceleration unit direction.
TypeVector< Real > unit() const
RealVectorValue _gravity_vector
Gravitational acceleration vector.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool isParamValid(const std::string &name) const
bool isParamSetByUser(const std::string &name) const

Member Function Documentation

◆ gravityDirection()

const RealVectorValue& GravityVectorInterface::gravityDirection ( ) const
inline

Gets gravity direction (zero vector if zero magnitude)

Definition at line 30 of file GravityVectorInterface.h.

Referenced by TestGravityVectorInterface::getValue().

30 { return _gravity_direction; }
RealVectorValue _gravity_direction
Gravitational acceleration unit direction.

◆ gravityMagnitude()

Real GravityVectorInterface::gravityMagnitude ( ) const
inline

Gets gravity magnitude.

Definition at line 26 of file GravityVectorInterface.h.

Referenced by TestGravityVectorInterface::getValue().

26 { return _gravity_magnitude; }
Real _gravity_magnitude
Gravitational acceleration magnitude.

◆ gravityVector()

const RealVectorValue& GravityVectorInterface::gravityVector ( ) const
inline

Gets gravity magnitude.

Definition at line 28 of file GravityVectorInterface.h.

Referenced by TestGravityVectorInterface::getValue(), and HydrostaticPressureFunction::value().

28 { return _gravity_vector; }
RealVectorValue _gravity_vector
Gravitational acceleration vector.

◆ validParams()

InputParameters GravityVectorInterface::validParams ( )
static

Definition at line 16 of file GravityVectorInterface.C.

Referenced by TestGravityVectorInterface::validParams(), and HydrostaticPressureFunction::validParams().

17 {
19  params.addParam<Real>("gravity_magnitude",
21  "Magnitude of the gravitational acceleration [m/s^2]");
22  params.addParam<RealVectorValue>(
23  "gravity_direction",
24  "Direction of gravitational acceleration. This will be normalized and multiplied by "
25  "'gravity_magnitude'. This parameter is mutually exclusive with 'gravity_vector'.");
26  params.addParam<RealVectorValue>("gravity_vector",
27  "Gravitational acceleration vector [m/s^2]. This parameter is "
28  "mutually exclusive with 'gravity_direction'.");
29  return params;
30 }
const auto acceleration_of_gravity
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
InputParameters emptyInputParameters()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Data Documentation

◆ _gravity_direction

RealVectorValue GravityVectorInterface::_gravity_direction
private

Gravitational acceleration unit direction.

Definition at line 38 of file GravityVectorInterface.h.

Referenced by gravityDirection(), and GravityVectorInterface().

◆ _gravity_magnitude

Real GravityVectorInterface::_gravity_magnitude
private

Gravitational acceleration magnitude.

Definition at line 36 of file GravityVectorInterface.h.

Referenced by gravityMagnitude(), and GravityVectorInterface().

◆ _gravity_vector

RealVectorValue GravityVectorInterface::_gravity_vector
private

Gravitational acceleration vector.

Definition at line 34 of file GravityVectorInterface.h.

Referenced by gravityVector(), and GravityVectorInterface().


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