https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
RZSymmetry Class Reference

Interface class for enabling objects to be RZ symmetric about arbitrary axis. More...

#include <RZSymmetry.h>

Inheritance diagram for RZSymmetry:
[legend]

Public Member Functions

 RZSymmetry (const MooseObject *moose_object, const InputParameters &parameters)
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual Real computeCircumference (const RealVectorValue &pt)
 

Protected Attributes

RealVectorValue _axis_point
 A point on the axis of symmetry.
 
const RealVectorValue & _axis_dir
 The direction of the axis of symmetry.
 
const Real & _offset
 Radial offset of the axis of symmetry.
 

Detailed Description

Interface class for enabling objects to be RZ symmetric about arbitrary axis.

Definition at line 19 of file RZSymmetry.h.

Constructor & Destructor Documentation

◆ RZSymmetry()

RZSymmetry::RZSymmetry ( const MooseObject moose_object,
const InputParameters parameters 
)

Definition at line 26 of file RZSymmetry.C.

27 : _axis_point(0., 0., 0.),
28 _axis_dir(parameters.get<RealVectorValue>("axis_dir")),
29 _offset(parameters.get<Real>("offset"))
30{
31 const FEProblemBase * fe_problem =
32 moose_object->isParamValid("_fe_problem_base")
33 ? moose_object->getParam<FEProblemBase *>("_fe_problem_base")
34 : nullptr;
35 if (fe_problem != nullptr)
36 {
37 const MooseMesh & mesh = fe_problem->mesh();
38
39 const BlockRestrictable * blk_restr = dynamic_cast<const BlockRestrictable *>(moose_object);
40 const BoundaryRestrictable * bnd_restr =
41 dynamic_cast<const BoundaryRestrictable *>(moose_object);
42
43 if (blk_restr != nullptr)
44 {
45 const std::set<SubdomainID> & blks = blk_restr->meshBlockIDs();
46
47 for (auto & b : blks)
48 {
49 if (fe_problem->getCoordSystem(b) != Moose::COORD_XYZ)
51 moose_object->name(),
52 ": This is a THM-specific object can be applied only on subdomains with Cartesian "
53 "coordinate system. If your domain has RZ cooridnate system associated with it, you "
54 "need to use the object without the RZ suffix to obtain the desired result.");
55 }
56 }
57 if (bnd_restr != nullptr)
58 {
59 std::set<SubdomainID> blks;
60 const std::set<BoundaryID> & bnds = bnd_restr->boundaryIDs();
61 for (auto & bid : bnds)
62 {
63 std::set<SubdomainID> conn_blks = mesh.getBoundaryConnectedBlocks(bid);
64 for (auto & cb : conn_blks)
65 blks.insert(cb);
66 }
67
68 for (auto & b : blks)
69 {
70 if (fe_problem->getCoordSystem(b) != Moose::COORD_XYZ)
72 moose_object->name(),
73 ": This is a THM-specific object can be applied only on subdomains with Cartesian "
74 "coordinate system. If your domain has RZ cooridnate system associated with it, you "
75 "need to use the object without the RZ suffix to obtain the desired result.");
76 }
77 }
78 }
79
80 const Point pt = parameters.get<Point>("axis_point");
81 _axis_point = Point(pt(0), pt(1), pt(2));
82}
void mooseError(Args &&... args)
const std::set< SubdomainID > & meshBlockIDs() const
virtual const std::set< BoundaryID > & boundaryIDs() const
virtual MooseMesh & mesh() override
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
const std::string & name() const
const T & getParam(const std::string &name) const
bool isParamValid(const std::string &name) const
const RealVectorValue & _axis_dir
The direction of the axis of symmetry.
Definition RZSymmetry.h:30
RealVectorValue _axis_point
A point on the axis of symmetry.
Definition RZSymmetry.h:28
const Real & _offset
Radial offset of the axis of symmetry.
Definition RZSymmetry.h:32
Moose::CoordinateSystemType getCoordSystem(SubdomainID sid) const
MeshBase & mesh

Member Function Documentation

◆ computeCircumference()

Real RZSymmetry::computeCircumference ( const RealVectorValue &  pt)
protectedvirtual

Definition at line 85 of file RZSymmetry.C.

86{
88 const Real r = v.cross(_axis_dir).norm() / _axis_dir.norm();
89 return 2 * libMesh::pi * (r + _offset);
90}
const double v
const Real pi
VectorValue< Real > RealVectorValue
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Referenced by LayeredAverageRZ::computeIntegral(), ADHeatStructureEnergyRZ::computeQpIntegral(), HeatStructureEnergyRZ::computeQpIntegral(), ADElementIntegralMaterialPropertyRZ::computeQpIntegral(), ADSideFluxIntegralRZ::computeQpIntegral(), FunctionElementIntegralRZ::computeQpIntegral(), FunctionSideIntegralRZ::computeQpIntegral(), HeatRateConductionRZ::computeQpIntegral(), HeatRateConvectionRZ::computeQpIntegral(), HeatRateExternalAppConvectionRZ::computeQpIntegral(), HeatRateHeatFluxRZ::computeQpIntegral(), HeatRateRadiationRZ::computeQpIntegral(), SideFluxIntegralRZ::computeQpIntegral(), ConvectionHeatTransferRZBC::computeQpJacobian(), ExternalAppConvectionHeatTransferRZBC::computeQpJacobian(), RadiativeHeatFluxRZBC::computeQpJacobian(), CoupledForceRZ::computeQpJacobian(), CoupledForceRZ::computeQpOffDiagJacobian(), ADHeatStructureHeatSourceRZ::computeQpResidual(), ADConvectionHeatTransferRZBC::computeQpResidual(), ADExternalAppConvectionHeatTransferRZBC::computeQpResidual(), ADHSHeatFluxRZBC::computeQpResidual(), ADRadiativeHeatFluxRZBC::computeQpResidual(), ConvectionHeatTransferRZBC::computeQpResidual(), ExternalAppConvectionHeatTransferRZBC::computeQpResidual(), HeatStructure2DCouplerRZBC::computeQpResidual(), HeatStructure2DRadiationCouplerRZBC::computeQpResidual(), HSCoupler2D2DRadiationRZBC::computeQpResidual(), RadiativeHeatFluxRZBC::computeQpResidual(), CoupledForceRZ::computeQpResidual(), LayeredAverageRZ::execute(), ADHeatConductionRZ::precomputeQpResidual(), and ADHeatConductionTimeDerivativeRZ::precomputeQpResidual().

◆ validParams()

InputParameters RZSymmetry::validParams ( )
static

Definition at line 17 of file RZSymmetry.C.

18{
20 params.addRequiredParam<Point>("axis_point", "A point on the axis of RZ symmetry.");
21 params.addRequiredParam<RealVectorValue>("axis_dir", "The direction of the axis of RZ symmetry.");
22 params.addParam<Real>("offset", 0., "Radial offset of the axis of RZ symmetry.");
23 return params;
24}
InputParameters emptyInputParameters()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)

Referenced by ADConvectionHeatTransferRZBC::validParams(), ADExternalAppConvectionHeatTransferRZBC::validParams(), ADHSHeatFluxRZBC::validParams(), ADRadiativeHeatFluxRZBC::validParams(), ConvectionHeatTransferRZBC::validParams(), ExternalAppConvectionHeatTransferRZBC::validParams(), HeatStructure2DCouplerRZBC::validParams(), HeatStructure2DRadiationCouplerRZBC::validParams(), HSCoupler2D2DRadiationRZBC::validParams(), RadiativeHeatFluxRZBC::validParams(), ADHeatConductionRZ::validParams(), ADHeatConductionTimeDerivativeRZ::validParams(), ADHeatStructureHeatSourceRZ::validParams(), CoupledForceRZ::validParams(), ADElementIntegralMaterialPropertyRZ::validParams(), ADHeatStructureEnergyRZ::validParams(), ADSideFluxIntegralRZ::validParams(), FunctionElementIntegralRZ::validParams(), FunctionSideIntegralRZ::validParams(), HeatRateConductionRZ::validParams(), HeatRateConvectionRZ::validParams(), HeatRateExternalAppConvectionRZ::validParams(), HeatRateHeatFluxRZ::validParams(), HeatRateRadiationRZ::validParams(), HeatStructureEnergyRZ::validParams(), SideFluxIntegralRZ::validParams(), and LayeredAverageRZ::validParams().

Member Data Documentation

◆ _axis_dir

const RealVectorValue& RZSymmetry::_axis_dir
protected

The direction of the axis of symmetry.

Definition at line 30 of file RZSymmetry.h.

Referenced by computeCircumference().

◆ _axis_point

RealVectorValue RZSymmetry::_axis_point
protected

A point on the axis of symmetry.

Definition at line 28 of file RZSymmetry.h.

Referenced by computeCircumference(), and RZSymmetry().

◆ _offset

const Real& RZSymmetry::_offset
protected

Radial offset of the axis of symmetry.

Definition at line 32 of file RZSymmetry.h.

Referenced by computeCircumference().


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