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

Extrudes a mesh to another dimension. More...

#include <AdvancedExtruderGenerator.h>

Inheritance diagram for AdvancedExtruderGenerator:
[legend]

Public Types

using DataFileParameterType = DataFileName
 The parameter type this interface expects for a data file name.
 

Public Member Functions

 AdvancedExtruderGenerator (const InputParameters &parameters)
 
std::unique_ptr< MeshBase > generate () override
 Generate / modify the mesh.
 
bool hasGenerateData () const
 
bool hasGenerateCSG () const
 
std::unique_ptr< CSG::CSGBase > generateInternalCSG ()
 Internal generation method for CSG object generation.
 
std::unique_ptr< MeshBase > generateInternal ()
 Internal generation method - this is what is actually called within MooseApp to execute the MeshGenerator.
 
const std::set< MeshGeneratorName > & getRequestedMeshGenerators () const
 
const std::set< MeshGeneratorName > & getRequestedMeshGeneratorsForSub () const
 
void addParentMeshGenerator (const MeshGenerator &mg, const AddParentChildKey)
 Adds the MeshGenerator mg as a parent.
 
void addChildMeshGenerator (const MeshGenerator &mg, const AddParentChildKey)
 Adds the MeshGenerator mg as a child.
 
const std::set< const MeshGenerator *, Comparator > & getParentMeshGenerators () const
 Gets the MeshGenerators that are parents to this MeshGenerator.
 
const std::set< const MeshGenerator *, Comparator > & getChildMeshGenerators () const
 Gets the MeshGenerators that are children to this MeshGenerator.
 
const std::set< const MeshGenerator *, Comparator > & getSubMeshGenerators () const
 Gets the MeshGenerators that are children to this MeshGenerator.
 
bool isParentMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const
 
bool isChildMeshGenerator (const MeshGeneratorName &name, const bool direct=true) const
 
bool isNullMeshName (const MeshGeneratorName &name) const
 
bool hasSaveMesh () const
 Return whether or not to save the current mesh.
 
bool hasOutput () const
 
const std::string & getSavedMeshName () const
 Return the name of the saved mesh.
 
bool isDataOnly () const
 
virtual bool enabled () const
 Return the enabled status of the object.
 
std::shared_ptr< MooseObject > getSharedPtr ()
 Get another shared pointer to this object that has the same ownership group.
 
std::shared_ptr< const MooseObject > getSharedPtr () const
 
bool isKokkosObject () const
 Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.
 
MooseApp & getMooseApp () const
 Get the MooseApp this class is associated with.
 
const std::string & type () const
 Get the type of this class.
 
const std::string & name () const
 Get the name of the class.
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling.
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParameters & parameters () const
 Get the parameters of the object.
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object.
 
template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 Retrieve two parameters and provide pair of parameters for the object.
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object.
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object.
 
template<typename T >
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 Verifies that the requested parameter exists and is not NULL and returns it to the caller.
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid.
 
bool isParamSetByUser (const std::string &name) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default.
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 Connect controllable parameter of this action with the controllable parameters of the objects added by this action.
 
template<typename... Args>
void paramError (const std::string &param, Args... args) const
 Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 
template<typename... Args>
void paramInfo (const std::string &param, Args... args) const
 Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 Deprecated message prefix; the error type is no longer used.
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError().
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type.
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning().
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and a stack trace.
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseDeprecatedNoTrace (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and no stack trace.
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 External method for calling moose error with added object context.
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method.
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method.
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path.
 

Static Public Member Functions

static InputParameters validParams ()
 
static void setHasGenerateData (InputParameters &params)
 Sets that a mesh generator has a generateData() implementation.
 
static bool hasGenerateData (const InputParameters &params)
 
static void setHasGenerateCSG (InputParameters &params)
 Sets that a mesh generator has a generateCSG() implementation.
 
static bool hasGenerateCSG (const InputParameters &params)
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 External method for calling moose error with added object context.
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 An instance of helper class to write streams to the Console objects.
 

Static Public Attributes

static const std::string data_only_param = "_data_only"
 The name of the private parameter for setting data only.
 
static const std::string type_param = "_type"
 The name of the parameter that contains the object type.
 
static const std::string name_param = "_object_name"
 The name of the parameter that contains the object name.
 
static const std::string unique_name_param = "_unique_name"
 The name of the parameter that contains the unique object name.
 
static const std::string app_param = "_moose_app"
 The name of the parameter that contains the MooseApp.
 
static const std::string moose_base_param = "_moose_base"
 The name of the parameter that contains the moose system base.
 
static const std::string kokkos_object_param = "_kokkos_object"
 The name of the parameter that indicates an object is a Kokkos functor.
 
static constexpr auto SYSTEM = "MeshMetaData"
 The system name used when initializing the Restartable interface.
 
static constexpr auto NAME = "<empty>"
 The data name used when initializing the Restartable interface for non-MeshGenerator objects.
 

Protected Member Functions

Real radialExpansionRatio (const Real t) const
 Calculate the share of the radial expansion to apply at the local node This share goes from 0 at the beginning of the extrusion to 1 at the end.
 
std::unordered_map< dof_id_type, Point > computeNodeNormals (const MeshBase &input) const
 Compute, for each node, the extrusion direction as the JxW-weighted average of the normals, evaluated at that node with nodal quadrature, of all the elements connected to it.
 
virtual void generateData ()
 Generate the mesh data.
 
virtual std::unique_ptr< CSG::CSGBase > generateCSG ()
 Generate the CSG representation of the mesh (or meshing operation) created by this mesh generator.
 
template<typename T >
T & copyMeshProperty (const std::string &target_data_name, const std::string &source_data_name, const std::string &source_mesh)
 Method for copying attribute from input mesh meta-data store to current mesh meta-data store.
 
template<typename T >
T & copyMeshProperty (const std::string &source_data_name, const std::string &source_mesh)
 Method for copying attribute from input mesh meta-data store to current mesh meta-data store, keeping source and target data names the same.
 
std::unique_ptr< MeshBase > & getMesh (const std::string &param_name, const bool allow_invalid=false)
 Takes the name of a MeshGeneratorName parameter and then gets a pointer to the Mesh that MeshGenerator is going to create.
 
std::vector< std::unique_ptr< MeshBase > * > getMeshes (const std::string &param_name)
 Like getMesh(), but for multiple generators.
 
std::unique_ptr< MeshBase > & getMeshByName (const MeshGeneratorName &mesh_generator_name)
 Like getMesh(), but takes the name of another MeshGenerator directly.
 
std::vector< std::unique_ptr< MeshBase > * > getMeshesByName (const std::vector< MeshGeneratorName > &mesh_generator_names)
 Like getMeshByName(), but for multiple generators.
 
std::unique_ptr< CSG::CSGBase > & getCSGBase (const std::string &param_name)
 Takes the name of a MeshGeneratorName parameter and then gets a pointer to the CSGBase object that MeshGenerator has created.
 
std::unique_ptr< CSG::CSGBase > & getCSGBaseByName (const MeshGeneratorName &mesh_generator_name)
 Like getCSGBase(), but takes the name of another MeshGenerator directly.
 
std::vector< std::unique_ptr< CSG::CSGBase > * > getCSGBases (const std::string &param_name)
 Like getCSGBase(), but for multiple generators.
 
std::vector< std::unique_ptr< CSG::CSGBase > * > getCSGBasesByName (const std::vector< MeshGeneratorName > &mesh_generator_names)
 Like getCSGBaseByName(), but for multiple generators.
 
void declareMeshForSub (const std::string &param_name)
 Declares that a MeshGenerator referenced in the InputParameters is to be used as a dependency of a sub MeshGenerator created by this MeshGenerator (see addSubMeshGenerator)
 
void declareMeshesForSub (const std::string &param_name)
 Like declareMeshForSub(), but for multiple generators.
 
void declareMeshForSubByName (const MeshGeneratorName &mesh_generator_name)
 Like declareMeshForSub(), but takes the name of another MeshGenerator directly.
 
void declareMeshesForSubByName (const std::vector< MeshGeneratorName > &mesh_generator_names)
 Like declareMeshForSubByName(), but for multiple generators.
 
std::unique_ptr< MeshBase > buildMeshBaseObject (unsigned int dim=libMesh::invalid_uint)
 Build a MeshBase object whose underlying type will be determined by the Mesh input file block.
 
std::unique_ptr< ReplicatedMesh > buildReplicatedMesh (unsigned int dim=libMesh::invalid_uint)
 Build a replicated mesh.
 
std::unique_ptr< DistributedMesh > buildDistributedMesh (unsigned int dim=libMesh::invalid_uint)
 Build a distributed mesh that has correct remote element removal behavior and geometric ghosting functors based on the simulation objects.
 
template<typename... Ts>
void addMeshSubgenerator (const std::string &type, const std::string &name, Ts... extra_input_parameters)
 Construct a "subgenerator", a different MeshGenerator subclass that will be added to the same MooseApp on the fly.
 
void addMeshSubgenerator (const std::string &type, const std::string &name, InputParameters params)
 Construct a "subgenerator", as above.
 
void declareNullMeshName (const MeshGeneratorName &name)
 Registers the name name as a "null" mesh, which is a MeshGenerator used in InputParameters that will not represent an input mesh when requested via getMesh.
 
template<bool warning>
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 Set solution invalid mark for the given solution ID.
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
template<typename T >
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 Method for retrieving a property with the given type and name exists in the mesh meta-data store.
 
template<typename T >
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
template<typename T >
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
template<typename T >
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
template<typename T , typename... Args>
T & declareMeshProperty (const std::string &data_name, Args &&... args)
 Methods for writing out attributes to the mesh meta-data store, which can be retrieved from most other MOOSE systems and is recoverable.
 
template<typename T >
T & declareMeshProperty (const std::string &data_name, const T &data_value)
 
template<typename T , typename... Args>
T & setMeshProperty (const std::string &data_name, Args &&... args)
 Method for updating attributes to the mesh meta-data store, which can only be invoked in the MeshGenerator generate routine only if the mesh generator property has already been declared.
 
template<typename T >
T & setMeshProperty (const std::string &data_name, const T &data_value)
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

std::unique_ptr< MeshBase > & _input
 Mesh that comes from another generator.
 
const std::vector< Real > & _heights
 Height of each elevation.
 
const std::vector< Real > _biases
 Bias growth factor of each elevation.
 
const std::vector< unsigned int > & _num_layers
 Number of layers in each elevation.
 
const std::vector< std::vector< SubdomainName > > & _subdomain_swaps
 Subdomains to swap out for each elevation.
 
const std::vector< std::vector< boundary_id_type > > & _boundary_swaps
 Boundaries to swap out for each elevation.
 
const std::vector< std::string > & _elem_integer_names_to_swap
 Names and indices of extra element integers to swap.
 
std::vector< unsigned int > _elem_integer_indices_to_swap
 
const std::vector< std::vector< std::vector< dof_id_type > > > & _elem_integers_swaps
 Extra element integers to swap out for each elevation and each element interger name.
 
std::vector< std::unordered_map< subdomain_id_type, subdomain_id_type > > _subdomain_swap_pairs
 Easier to work with version of _sudomain_swaps.
 
std::vector< std::unordered_map< boundary_id_type, boundary_id_type > > _boundary_swap_pairs
 Easier to work with version of _boundary_swaps.
 
std::vector< std::unordered_map< dof_id_type, dof_id_type > > _elem_integers_swap_pairs
 Easier to work with version of _elem_integers_swaps.
 
Point _direction
 The direction of the extrusion.
 
std::unique_ptr< MeshBase > & _extrusion_curve
 Curve mesh to extrude along.
 
const RealVectorValue _start_extrusion_direction
 Extrusion direction to follow at the start (first layer) of the extrusion.
 
const RealVectorValue _end_extrusion_direction
 Extrusion direction for the final layer of the extrusion.
 
bool _extrude_along_curve
 Whether we are extruding along a curve.
 
const bool _extrude_along_node_normals
 Whether to extrude each node along the averaged normal of the elements connected to it.
 
const bool _has_top_boundary
 
const BoundaryName _top_boundary
 
const bool _has_bottom_boundary
 
const BoundaryName _bottom_boundary
 
const bool _has_side_boundary
 Whether to add the lateral exterior sides (and their nodes) to a boundary.
 
const BoundaryName _side_boundary
 Boundary for the lateral exterior sides and their nodes.
 
const std::vector< std::vector< subdomain_id_type > > _upward_boundary_source_blocks
 The list of input mesh's blocks that need to be assigned upward boundary interfaces for each layer of elevation.
 
const std::vector< std::vector< boundary_id_type > > _upward_boundary_ids
 Upward boundary interfaces for each layer of elevation.
 
const std::vector< std::vector< subdomain_id_type > > _downward_boundary_source_blocks
 The list of input mesh's blocks that need to be assigned downward boundary interfaces for each layer of elevation.
 
const std::vector< std::vector< boundary_id_type > > _downward_boundary_ids
 Downward boundary interfaces for each layer of elevation.
 
const Real _twist_pitch
 Axial pitch for a full rotation.
 
const Real _end_radial_extent
 Radial extent of the extruded geometry at the end of the extrusion.
 
const MooseEnum _radial_expansion_method
 Function type for modifying the radial extent of the extruded shape.
 
const Real _start_radial_growth_rate
 Derivative of the radial expansion function at the beginning of the extrusion.
 
const Real _end_radial_growth_rate
 Derivative of the radial expansion function at the end of the extrusion.
 
MooseMesh *const _mesh
 Pointer to the owning mesh.
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
 
MooseApp & _app
 The MOOSE application this is associated with.
 
Factory & _factory
 The Factory associated with the MooseApp.
 
ActionFactory & _action_factory
 Builds Actions.
 
const std::string & _type
 The type of this class.
 
const std::string & _name
 The name of this class.
 
const InputParameters & _pars
 The object's parameters.
 
const Parallel::Communicator & _communicator
 

Private Member Functions

virtual std::string meshPropertyPrefix (const std::string &) const override final
 Override of the default prefix to use when getting mesh properties.
 
void checkGetMesh (const MeshGeneratorName &mesh_generator_name, const std::string &param_name) const
 Helper for performing error checking in the getMesh methods.
 
const MeshGeneratorName * getMeshGeneratorNameFromParam (const std::string &param_name, const bool allow_invalid) const
 Helper for getting a MeshGeneratorName parameter.
 
const std::vector< MeshGeneratorName > & getMeshGeneratorNamesFromParam (const std::string &param_name) const
 Helper for getting a std::vector<MeshGeneratorName> parameter.
 
RestartableDataValue & setMeshPropertyHelper (const std::string &data_name)
 Helper for getting a writable reference to a mesh property, used in declareMeshProperty and setMeshProperty.
 
const RestartableDataValue & getMeshPropertyInternal (const std::string &data_name, const std::string &prefix) const
 Helper for getting a mesh property.
 
template<typename... Args>
void mooseErrorInternal (Args &&... args) const
 Helper for forwarding a mooseError to an object's mooseError if it is available (said error will provide more context: object name and type)
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 Internal method for getting a hit node (if available) given a set of parameters.
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 Internal method for getting the message prefix for an object (object type, name, etc).
 

Private Attributes

std::set< MeshGeneratorName > _requested_mesh_generators
 The names of the MeshGenerators that were requested in the getMesh methods.
 
std::set< MeshGeneratorName > _requested_mesh_generators_for_sub
 The names of the MeshGenerators that were requested in the declareMeshForSub methods.
 
std::vector< std::pair< std::string, std::unique_ptr< MeshBase > * > > _requested_meshes
 The meshes that were requested by this MeshGenerator; used to verify that any input meshes that are requested are properly released after generation.
 
std::vector< std::pair< std::string, std::unique_ptr< CSG::CSGBase > * > > _requested_csg_bases
 The CSGBase objects that were requested by this MeshGenerator; used to verify that any input meshes that are requested are properly released after generation.
 
std::unique_ptr< MeshBase > _null_mesh = nullptr
 A nullptr to use for when inputs aren't specified.
 
std::unique_ptr< CSG::CSGBase > _null_csg_base = nullptr
 A nullptr to use for when inputs aren't specified.
 
std::set< const MeshGenerator *, Comparator > _parent_mesh_generators
 The MeshGenerators that are parents to this MeshGenerator.
 
std::set< const MeshGenerator *, Comparator > _child_mesh_generators
 The MeshGenerators that are children to this MeshGenerator.
 
std::set< const MeshGenerator *, Comparator > _sub_mesh_generators
 The sub MeshGenerators constructed by this MeshGenerator.
 
std::set< std::string > _null_mesh_names
 The declared "null" mesh names that will not represent a mesh in input; see declareNullMeshName()
 
const std::string & _save_with_name
 A user-defined name to save the mesh.
 
const bool _data_only
 Whether or not this mesh generator will run in data only mode.
 
const ParallelParamObject & _parent
 
const MooseBase & _si_moose_base
 The MooseBase that owns this interface.
 
const FEProblemBase * _si_problem
 A pointer to FEProblem base.
 
MooseApp & _meta_data_app
 Reference to the application.
 
const MooseObject *const _meta_data_object
 The MooseObject (if any); used for better error handling.
 

Detailed Description

Extrudes a mesh to another dimension.

Definition at line 19 of file AdvancedExtruderGenerator.h.

Member Typedef Documentation

◆ DataFileParameterType

using DataFileInterface::DataFileParameterType = DataFileName
inherited

The parameter type this interface expects for a data file name.

Definition at line 27 of file DataFileInterface.h.

Constructor & Destructor Documentation

◆ AdvancedExtruderGenerator()

AdvancedExtruderGenerator::AdvancedExtruderGenerator ( const InputParameters &  parameters)

Definition at line 185 of file AdvancedExtruderGenerator.C.

187 _input(getMesh("input")),
188 _heights(getParam<std::vector<Real>>("heights")),
189 _biases(isParamValid("biases") ? getParam<std::vector<Real>>("biases")
190 : std::vector<Real>(_heights.size(), 1.0)),
191 _num_layers(getParam<std::vector<unsigned int>>("num_layers")),
192 _subdomain_swaps(getParam<std::vector<std::vector<SubdomainName>>>("subdomain_swaps")),
193 _boundary_swaps(getParam<std::vector<std::vector<boundary_id_type>>>("boundary_swaps")),
194 _elem_integer_names_to_swap(getParam<std::vector<std::string>>("elem_integer_names_to_swap")),
196 getParam<std::vector<std::vector<std::vector<dof_id_type>>>>("elem_integers_swaps")),
197 _direction(isParamValid("direction") ? getParam<Point>("direction") : Point(0, 0, 0)),
198 _extrusion_curve(getMesh("extrusion_curve", true)),
199 _start_extrusion_direction(isParamValid("start_extrusion_direction")
200 ? getParam<RealVectorValue>("start_extrusion_direction").unit()
201 : Point(0, 0, 0)),
202 _end_extrusion_direction(isParamValid("end_extrusion_direction")
203 ? getParam<RealVectorValue>("end_extrusion_direction").unit()
204 : Point(0, 0, 0)),
205 _extrude_along_curve(isParamValid("extrusion_curve")),
206 _extrude_along_node_normals(getParam<bool>("extrude_along_node_normals")),
207 _has_top_boundary(isParamValid("top_boundary")),
208 _top_boundary(isParamValid("top_boundary") ? getParam<BoundaryName>("top_boundary") : "0"),
209 _has_bottom_boundary(isParamValid("bottom_boundary")),
210 _bottom_boundary(isParamValid("bottom_boundary") ? getParam<BoundaryName>("bottom_boundary")
211 : "0"),
212 _has_side_boundary(isParamValid("side_boundary")),
213 _side_boundary(isParamValid("side_boundary") ? getParam<BoundaryName>("side_boundary") : ""),
215 isParamValid("upward_boundary_source_blocks")
216 ? getParam<std::vector<std::vector<subdomain_id_type>>>("upward_boundary_source_blocks")
217 : std::vector<std::vector<subdomain_id_type>>(_heights.size(),
218 std::vector<subdomain_id_type>())),
220 isParamValid("upward_boundary_ids")
221 ? getParam<std::vector<std::vector<boundary_id_type>>>("upward_boundary_ids")
222 : std::vector<std::vector<boundary_id_type>>(_heights.size(),
223 std::vector<boundary_id_type>())),
224 _downward_boundary_source_blocks(isParamValid("downward_boundary_source_blocks")
225 ? getParam<std::vector<std::vector<subdomain_id_type>>>(
226 "downward_boundary_source_blocks")
227 : std::vector<std::vector<subdomain_id_type>>(
228 _heights.size(), std::vector<subdomain_id_type>())),
230 isParamValid("downward_boundary_ids")
231 ? getParam<std::vector<std::vector<boundary_id_type>>>("downward_boundary_ids")
232 : std::vector<std::vector<boundary_id_type>>(_heights.size(),
233 std::vector<boundary_id_type>())),
234 _twist_pitch(getParam<Real>("twist_pitch")),
235 _end_radial_extent(getParam<Real>("end_radial_extent")),
236 _radial_expansion_method(getParam<MooseEnum>("radial_growth_method")),
237 _start_radial_growth_rate(getParam<Real>("start_radial_growth_rate")),
238 _end_radial_growth_rate(getParam<Real>("end_radial_growth_rate"))
239{
241 {
242 if (isParamSetByUser("heights"))
243 paramError("heights", "heights cannot be set if extruding along curve!");
244 if (isParamValid("biases"))
245 paramError("biases", "biases cannot be set if extruding along curve!");
246 if (isParamSetByUser("num_layers"))
247 paramError("num_layers", "num_layers cannot be set if extruding along curve!");
248 if (isParamValid("direction"))
249 paramError("direction", "direction cannot be set if extruding along curve!");
251 paramError("extrude_along_node_normals",
252 "extrude_along_node_normals cannot be set if extruding along curve!");
253 }
255 {
256 if (isParamValid("direction"))
257 paramError("direction",
258 "direction cannot be set if 'extrude_along_node_normals' is set, as the extrusion "
259 "direction is computed from the element normals!");
260 if (!MooseUtils::absoluteFuzzyEqual(_twist_pitch, 0.))
261 paramError("twist_pitch",
262 "twist_pitch cannot be set if 'extrude_along_node_normals' is set!");
264 paramError("end_radial_extent",
265 "end_radial_extent cannot be set if 'extrude_along_node_normals' is set!");
266 }
267 else
268 {
269 if (!_direction.norm())
270 paramError("direction", "Must have some length!");
271 _direction /= _direction.norm();
272 }
273
274 unsigned int num_elevations;
276 num_elevations = 1;
277 else
278 {
279 num_elevations = _heights.size();
280 if (_num_layers.size() != num_elevations)
282 "heights", "The length of 'heights' and 'num_layers' must be the same in ", name());
283 }
284
285 if (_subdomain_swaps.size() && (_subdomain_swaps.size() != num_elevations))
286 {
288 paramError("subdomain_swaps",
289 "If specified, 'subdomain_swaps' (" + std::to_string(_subdomain_swaps.size()) +
290 ") must be equal to 1 when extruding along a curve.");
291 else
292 {
293 paramError("subdomain_swaps",
294 "If specified, 'subdomain_swaps' (" + std::to_string(_subdomain_swaps.size()) +
295 ") must be the same length as 'heights' (" + std::to_string(num_elevations) +
296 ") in ",
297 name());
298 }
299 }
300
301 if (_boundary_swaps.size() && (_boundary_swaps.size() != num_elevations))
302 {
304 {
305 paramError("boundary_swaps",
306 "If specified, 'boundary_swaps' (" + std::to_string(_boundary_swaps.size()) +
307 ") must be the same length as 'heights' (" + std::to_string(num_elevations) +
308 ") in ",
309 name());
310 }
311 else
312 {
313 paramError("boundary_swaps",
314 "If specified, 'boundary_swaps' (" + std::to_string(_boundary_swaps.size()) +
315 ") must be equal to 1 when extruding along a curve.");
316 }
317 }
318
319 try
320 {
322 name(), "boundary_swaps", _boundary_swaps, _boundary_swap_pairs);
323 }
324 catch (const MooseException & e)
325 {
326 paramError("boundary_swaps", e.what());
327 }
328
329 if (_elem_integers_swaps.size() &&
331 paramError("elem_integers_swaps",
332 "If specified, 'elem_integers_swaps' must have the same length as the length of "
333 "'elem_integer_names_to_swap'.");
334
335 for (const auto & unit_elem_integers_swaps : _elem_integers_swaps)
336 if (unit_elem_integers_swaps.size() != num_elevations)
337 paramError("elem_integers_swaps",
338 "If specified, each element of 'elem_integers_swaps' must have the same length as "
339 "the length of 'heights'.");
340
341 try
342 {
344 num_elevations,
348 }
349 catch (const MooseException & e)
350 {
351 paramError("elem_integers_swaps", e.what());
352 }
353
355 {
356 bool has_negative_entry = false;
357 bool has_positive_entry = false;
358 for (const auto & h : _heights)
359 {
360 if (h > 0.0)
361 has_positive_entry = true;
362 else
363 has_negative_entry = true;
364 }
365
366 if (has_negative_entry && has_positive_entry)
367 paramError("heights", "Cannot have both positive and negative heights!");
368 if (_biases.size() != _heights.size())
369 paramError("biases", "Size of this parameter, if provided, must be the same as heights.");
370 }
371
374 _upward_boundary_ids.size() != num_elevations))
375 {
378 "upward_boundary_ids",
379 "This parameter must have the same length (" +
380 std::to_string(_upward_boundary_ids.size()) + ") as upward_boundary_source_blocks (" +
381 std::to_string(_upward_boundary_source_blocks.size()) + ") and num_elevations (" +
382 std::to_string(num_elevations) +
383 "). Note that the number of heights is set to 1 when extruding along a curve.");
384 else
385 {
386 paramError("upward_boundary_ids",
387 "This parameter must have the same length (" +
388 std::to_string(_upward_boundary_ids.size()) +
389 ") as upward_boundary_source_blocks (" +
390 std::to_string(_upward_boundary_source_blocks.size()) + ") and heights (" +
391 std::to_string(num_elevations) + ")");
392 }
393 }
394
395 for (unsigned int i = 0; i < _upward_boundary_source_blocks.size(); i++)
396 if (_upward_boundary_source_blocks[i].size() != _upward_boundary_ids[i].size())
397 paramError("upward_boundary_ids",
398 "Every element of this parameter must have the same length as the corresponding "
399 "element of upward_boundary_source_blocks.");
400
403 _downward_boundary_ids.size() != num_elevations))
404 {
407 "downward_boundary_ids",
408 "This parameter must have the same length (" +
409 std::to_string(_downward_boundary_ids.size()) +
410 ") as downward_boundary_source_blocks (" +
411 std::to_string(_downward_boundary_source_blocks.size()) + ") and (" +
412 std::to_string(num_elevations) +
413 "). Note that the number of heights is set to 1 when extruding along a curve.");
414 else
415 {
416 paramError("downward_boundary_ids",
417 "This parameter must have the same length (" +
418 std::to_string(_downward_boundary_ids.size()) +
419 ") as downward_boundary_source_blocks (" +
420 std::to_string(_downward_boundary_source_blocks.size()) + ") and heights (" +
421 std::to_string(num_elevations) + ")");
422 }
423 }
424 for (unsigned int i = 0; i < _downward_boundary_source_blocks.size(); i++)
426 paramError("downward_boundary_ids",
427 "Every element of this parameter must have the same length as the corresponding "
428 "element of downward_boundary_source_blocks.");
429}
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
void ErrorVector unsigned int
const Real _twist_pitch
Axial pitch for a full rotation.
const std::vector< Real > & _heights
Height of each elevation.
const std::vector< unsigned int > & _num_layers
Number of layers in each elevation.
const RealVectorValue _end_extrusion_direction
Extrusion direction for the final layer of the extrusion.
const std::vector< std::vector< subdomain_id_type > > _upward_boundary_source_blocks
The list of input mesh's blocks that need to be assigned upward boundary interfaces for each layer of...
const Real _start_radial_growth_rate
Derivative of the radial expansion function at the beginning of the extrusion.
const std::vector< std::vector< SubdomainName > > & _subdomain_swaps
Subdomains to swap out for each elevation.
const bool _has_side_boundary
Whether to add the lateral exterior sides (and their nodes) to a boundary.
const RealVectorValue _start_extrusion_direction
Extrusion direction to follow at the start (first layer) of the extrusion.
Point _direction
The direction of the extrusion.
const std::vector< std::vector< boundary_id_type > > & _boundary_swaps
Boundaries to swap out for each elevation.
const std::vector< Real > _biases
Bias growth factor of each elevation.
const std::vector< std::vector< boundary_id_type > > _upward_boundary_ids
Upward boundary interfaces for each layer of elevation.
const std::vector< std::vector< boundary_id_type > > _downward_boundary_ids
Downward boundary interfaces for each layer of elevation.
const std::vector< std::vector< std::vector< dof_id_type > > > & _elem_integers_swaps
Extra element integers to swap out for each elevation and each element interger name.
std::vector< std::unordered_map< boundary_id_type, boundary_id_type > > _boundary_swap_pairs
Easier to work with version of _boundary_swaps.
const bool _extrude_along_node_normals
Whether to extrude each node along the averaged normal of the elements connected to it.
const Real _end_radial_extent
Radial extent of the extruded geometry at the end of the extrusion.
const std::vector< std::string > & _elem_integer_names_to_swap
Names and indices of extra element integers to swap.
bool _extrude_along_curve
Whether we are extruding along a curve.
const Real _end_radial_growth_rate
Derivative of the radial expansion function at the end of the extrusion.
const MooseEnum _radial_expansion_method
Function type for modifying the radial extent of the extruded shape.
const std::vector< std::vector< subdomain_id_type > > _downward_boundary_source_blocks
The list of input mesh's blocks that need to be assigned downward boundary interfaces for each layer ...
std::vector< std::unordered_map< dof_id_type, dof_id_type > > _elem_integers_swap_pairs
Easier to work with version of _elem_integers_swaps.
std::unique_ptr< MeshBase > & _input
Mesh that comes from another generator.
std::unique_ptr< MeshBase > & _extrusion_curve
Curve mesh to extrude along.
const BoundaryName _side_boundary
Boundary for the lateral exterior sides and their nodes.
MeshGenerators are objects that can modify or add to an existing mesh.
std::unique_ptr< MeshBase > & getMesh(const std::string &param_name, const bool allow_invalid=false)
Takes the name of a MeshGeneratorName parameter and then gets a pointer to the Mesh that MeshGenerato...
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
const std::string & name() const
Get the name of the class.
Definition MooseBase.h:103
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
bool isParamSetByUser(const std::string &name) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
Definition MooseBase.h:205
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition MooseBase.h:406
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition MooseEnum.h:55
Provides a way for users to bail out of the current solve.
virtual const char * what() const
Get out the error message.
void extraElemIntegerSwapParametersProcessor(const std::string &class_name, const unsigned int num_sections, const unsigned int num_integers, const std::vector< std::vector< std::vector< dof_id_type > > > &elem_integers_swaps, std::vector< std::unordered_map< dof_id_type, dof_id_type > > &elem_integers_swap_pairs)
Reprocess the elem_integers_swaps into maps so they are easier to use.
void idSwapParametersProcessor(const std::string &class_name, const std::string &id_name, const std::vector< std::vector< T > > &id_swaps, std::vector< std::unordered_map< T, T > > &id_swap_pairs, const unsigned int row_index_shift=0)
Reprocess the swap related input parameters to make pairs out of them to ease further processing.
int8_t boundary_id_type
TestClass subdomain_id_type
VectorValue< Real > RealVectorValue
Definition SubProblem.h:34
uint8_t dof_id_type
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Member Function Documentation

◆ addChildMeshGenerator()

void MeshGenerator::addChildMeshGenerator ( const MeshGenerator &  mg,
const AddParentChildKey   
)
inherited

Adds the MeshGenerator mg as a child.

Protected by the AddParentChildKey so that parents can only be added by the MooseApp.

Definition at line 471 of file MeshGenerator.C.

472{
473 mooseAssert(_app.constructingMeshGenerators(), "Should only be called at construction");
474 _child_mesh_generators.insert(&mg);
475}
std::set< const MeshGenerator *, Comparator > _child_mesh_generators
The MeshGenerators that are children to this MeshGenerator.
virtual bool constructingMeshGenerators() const
Whether this app is constructing mesh generators.
Definition MooseApp.C:3503
MooseApp & _app
The MOOSE application this is associated with.
Definition MooseBase.h:375

◆ addMeshSubgenerator() [1/2]

void MeshGenerator::addMeshSubgenerator ( const std::string &  type,
const std::string &  name,
InputParameters  params 
)
protectedinherited

Construct a "subgenerator", as above.

User code is responsible for constructing valid InputParameters.

Parameters
typeThe type of MeshGenerator
nameThe name of the MeshGenerator
paramsThe parameters to use to construct the MeshGenerator

Definition at line 440 of file MeshGenerator.C.

443{
445 mooseError("Can only call addMeshSubgenerator() during MeshGenerator construction");
446
447 // In case the user forgot it
449
450 // Set this to be data-only if this generator is data only
451 params.set<bool>(data_only_param) = isDataOnly();
452
453 _app.addMeshGenerator(type, name, params);
454 _sub_mesh_generators.insert(&std::as_const(_app).getMeshGenerator(name));
455}
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
std::set< const MeshGenerator *, Comparator > _sub_mesh_generators
The sub MeshGenerators constructed by this MeshGenerator.
static const std::string data_only_param
The name of the private parameter for setting data only.
bool isDataOnly() const
Base class for MOOSE-based applications.
Definition MooseApp.h:110
void addMeshGenerator(const std::string &type, const std::string &name, const InputParameters &params)
Add a mesh generator that will act on the meshes in the system.
Definition MooseApp.h:906
const std::string & type() const
Get the type of this class.
Definition MooseBase.h:93
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271
static const std::string app_param
The name of the parameter that contains the MooseApp.
Definition MooseBase.h:59

◆ addMeshSubgenerator() [2/2]

template<typename... Ts>
void MeshGenerator::addMeshSubgenerator ( const std::string &  type,
const std::string &  name,
Ts...  extra_input_parameters 
)
protectedinherited

Construct a "subgenerator", a different MeshGenerator subclass that will be added to the same MooseApp on the fly.

Parameters
typeThe type of MeshGenerator
nameThe name of the MeshGenerator
extra_input_parameters... Additional InputParameters to pass

Sub generators must be added in the order that they are executed.

Any input dependencies for a sub generator that come from inputs for this generator must first be declared with the declareMesh(es)ForSub() method.

You can use the output of a sub generator as a mesh in this generator by calling getMesh() with the sub generator's name after adding said sub generator.

Definition at line 593 of file MeshGenerator.h.

596{
597 InputParameters subgenerator_params = _app.getFactory().getValidParams(type);
598
599 subgenerator_params.setParameters(extra_input_parameters...);
600
601 addMeshSubgenerator(type, name, subgenerator_params);
602}
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition Factory.C:68
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void setParameters(const std::string &name, const T &value, Ts... extra_input_parameters)
Given a series of parameters names and values, sets each name to the corresponding value.
void addMeshSubgenerator(const std::string &type, const std::string &name, Ts... extra_input_parameters)
Construct a "subgenerator", a different MeshGenerator subclass that will be added to the same MooseAp...
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition MooseApp.h:404

Referenced by MeshGenerator::addMeshSubgenerator(), OverlayMeshGenerator::OverlayMeshGenerator(), SideSetExtruderGenerator::SideSetExtruderGenerator(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ addParentMeshGenerator()

void MeshGenerator::addParentMeshGenerator ( const MeshGenerator &  mg,
const AddParentChildKey   
)
inherited

Adds the MeshGenerator mg as a parent.

Protected by the AddParentChildKey so that parents can only be added by the MooseApp.

Definition at line 464 of file MeshGenerator.C.

465{
466 mooseAssert(_app.constructingMeshGenerators(), "Should only be called at construction");
467 _parent_mesh_generators.insert(&mg);
468}
std::set< const MeshGenerator *, Comparator > _parent_mesh_generators
The MeshGenerators that are parents to this MeshGenerator.

◆ buildDistributedMesh()

std::unique_ptr< DistributedMesh > MeshGenerator::buildDistributedMesh ( unsigned int  dim = libMesh::invalid_uint)
protectedinherited

Build a distributed mesh that has correct remote element removal behavior and geometric ghosting functors based on the simulation objects.

Parameters
dimThe logical dimension of the mesh, e.g. 3 for hexes/tets, 2 for quads/tris. If the caller doesn't specify a value for dim, then the value in the Mesh input file block will be used

Definition at line 333 of file MeshGenerator.C.

334{
335 mooseAssert(_mesh, "Need a MooseMesh object");
336 return _mesh->buildTypedMesh<DistributedMesh>(dim);
337}
unsigned int dim
MooseMesh *const _mesh
Pointer to the owning mesh.
std::unique_ptr< T > buildTypedMesh(unsigned int dim=libMesh::invalid_uint)
Shortcut method to construct a unique pointer to a libMesh mesh instance.
Definition MooseMesh.h:2288

Referenced by DistributedRectilinearMeshGenerator::generate().

◆ buildMeshBaseObject()

std::unique_ptr< MeshBase > MeshGenerator::buildMeshBaseObject ( unsigned int  dim = libMesh::invalid_uint)
protectedinherited

Build a MeshBase object whose underlying type will be determined by the Mesh input file block.

Parameters
dimThe logical dimension of the mesh, e.g. 3 for hexes/tets, 2 for quads/tris. If the caller doesn't specify a value for dim, then the value in the Mesh input file block will be used

Definition at line 319 of file MeshGenerator.C.

320{
321 mooseAssert(_mesh, "Need a MooseMesh object");
322 return _mesh->buildMeshBaseObject(dim);
323}
std::unique_ptr< MeshBase > buildMeshBaseObject(unsigned int dim=libMesh::invalid_uint)
Method to construct a libMesh::MeshBase object that is normally set and used by the MooseMesh object ...
Definition MooseMesh.C:2907

Referenced by Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), generate(), AnnularMeshGenerator::generate(), BlockToMeshConverterGenerator::generate(), Boundary2DDelaunayGenerator::generate(), CartesianMeshGenerator::generate(), ElementGenerator::generate(), ExamplePatchMeshGenerator::generate(), FileMeshGenerator::generate(), GeneratedMeshGenerator::generate(), MeshExtruderGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), PolyLineMeshGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), SphereMeshGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), and TransfiniteMeshGenerator::generate().

◆ buildReplicatedMesh()

std::unique_ptr< ReplicatedMesh > MeshGenerator::buildReplicatedMesh ( unsigned int  dim = libMesh::invalid_uint)
protectedinherited

Build a replicated mesh.

Parameters
dimThe logical dimension of the mesh, e.g. 3 for hexes/tets, 2 for quads/tris. If the caller doesn't specify a value for dim, then the value in the Mesh input file block will be used

Definition at line 326 of file MeshGenerator.C.

327{
328 mooseAssert(_mesh, "Need a MooseMesh object");
329 return _mesh->buildTypedMesh<ReplicatedMesh>(dim);
330}

Referenced by XYFrontalDelaunayGenerator::buildTriangleMesh(), BSplineCurveGenerator::generate(), ConcentricCircleMeshGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), ImageMeshGenerator::generate(), ParsedCurveGenerator::generate(), RinglebMeshGenerator::generate(), SpiralAnnularMeshGenerator::generate(), and SurfaceSubdomainsDelaunayRemesher::generate().

◆ callMooseError() [1/2]

void MooseBase::callMooseError ( MooseApp *const  app,
const InputParameters &  params,
std::string  msg,
const bool  with_prefix,
const hit::Node *  node,
const bool  show_trace = true 
)
staticinherited

External method for calling moose error with added object context.

Needed so that objects without the MooseBase context (InputParameters) can call errors with context

Parameters
appThe app pointer (if available); adds multiapp context and clears the console
paramsThe parameters, needed to obtain object information
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix
show_traceWhether or not to show a stack trace, defaults to true

Definition at line 114 of file MooseBase.C.

120{
121 if (!node)
122 node = MooseBase::getHitNode(params);
123
124 std::string multiapp_prefix = "";
125 if (app)
126 {
127 if (!app->isUltimateMaster())
128 multiapp_prefix = app->name();
130 }
131
132 if (with_prefix)
133 // False here because the hit context will get processed by the node
134 msg = messagePrefix(params, false) + msg;
135
136 moose::internal::mooseErrorRaw(msg, multiapp_prefix, node, show_trace);
137}
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition MooseApp.C:2418
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition MooseApp.h:870
const hit::Node * getHitNode() const
Definition MooseBase.h:136
std::string messagePrefix(const bool hit_prefix=true) const
Definition MooseBase.h:256
void mooseConsole()
Send current output buffer to Console output objects.
void mooseErrorRaw(std::string msg, const std::string &prefix="", const hit::Node *node=nullptr, const bool show_trace=true)
Main callback for emitting a moose error.
Definition MooseError.C:51

◆ callMooseError() [2/2]

void MooseBase::callMooseError ( std::string  msg,
const bool  with_prefix,
const hit::Node *  node = nullptr,
const bool  show_trace = true 
) const
inherited

External method for calling moose error with added object context.

Parameters
msgThe message
with_prefixIf true, add the prefix from messagePrefix(), which is the object information (type, name, etc)
nodeOptional hit node to add file path context as a prefix
show_traceWhether or not to show a stack trace, defaults to true

Definition at line 105 of file MooseBase.C.

109{
110 callMooseError(&_app, _pars, msg, with_prefix, node, show_trace);
111}
MooseApp & _app
The MOOSE application this is associated with.
Definition MooseBase.h:375
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
External method for calling moose error with added object context.
Definition MooseBase.C:105
const InputParameters & _pars
The object's parameters.
Definition MooseBase.h:384

Referenced by MooseBase::callMooseError(), InputParameters::callMooseError(), MooseBase::mooseDocumentedError(), MooseBase::mooseError(), and MooseBase::mooseErrorNonPrefixed().

◆ checkGetMesh()

void MeshGenerator::checkGetMesh ( const MeshGeneratorName &  mesh_generator_name,
const std::string &  param_name 
) const
privateinherited

Helper for performing error checking in the getMesh methods.

Definition at line 158 of file MeshGenerator.C.

160{
161 mooseAssert(!mesh_generator_name.empty(), "Empty name");
162 const auto & mg_sys = _app.getMeshGeneratorSystem();
164 mooseError("Cannot get a mesh outside of construction");
165 if (!mg_sys.hasMeshGenerator(mesh_generator_name) && !isNullMeshName(mesh_generator_name))
166 {
167 std::stringstream error;
168 error << "The requested MeshGenerator with name '" << mesh_generator_name << "' ";
169 if (mg_sys.hasMeshGeneratorParams(mesh_generator_name))
170 error << "was found, but has not been constructed yet.\n\nThis can occur when your "
171 "dependencies are not properly defined and we cannot infer the proper construction "
172 "order of your MeshGenerators.\n\nThe most likely case is a sub generator whose "
173 "input(s) are not declared as a sub dependency in the generator creating them.";
174 else
175 error << "was not found.\nMesh generators that can be found: "
176 << Moose::stringify(mg_sys.getMeshGeneratorNames());
177
178 if (param_name.size())
179 paramError(param_name, error.str());
180 else
181 mooseError(error.str());
182 }
183
184#ifdef MOOSE_MFEM_ENABLED
185 if (mg_sys.hasMeshGenerator(mesh_generator_name))
186 {
187 const auto is_mfem = [](const InputParameters & pars)
188 {
189 const auto * const flag = pars.queryParam<bool>("_mfem_mesh_generator");
190 return flag && *flag;
191 };
192 const auto & parent = mg_sys.getMeshGenerator(mesh_generator_name);
193 const bool parent_is_mfem = is_mfem(parent.parameters());
194 const bool this_is_mfem = is_mfem(parameters());
195 if (parent_is_mfem != this_is_mfem)
196 {
197 const auto & mfem_name = parent_is_mfem ? mesh_generator_name : name();
198 const auto & mfem_type = parent_is_mfem ? parent.type() : type();
199 const auto & libmesh_name = parent_is_mfem ? name() : mesh_generator_name;
200 const auto & libmesh_type = parent_is_mfem ? type() : parent.type();
201 const std::string msg = "Cannot chain MFEM-native mesh generator '" + mfem_name +
202 "' of type '" + mfem_type + "' with libMesh-native mesh generator '" +
203 libmesh_name + "' of type '" + libmesh_type +
204 "'. MFEM and libMesh mesh generators cannot be mixed within the "
205 "same generator chain.";
206 if (param_name.size())
207 paramError(param_name, msg);
208 else
209 mooseError(msg);
210 }
211 }
212#endif
213}
bool hasGenerateCSG() const
bool isNullMeshName(const MeshGeneratorName &name) const
MeshGeneratorSystem & getMeshGeneratorSystem()
Gets the system that manages the MeshGenerators.
Definition MooseApp.h:890
std::string stringify(const T &t)
conversion to string
Definition Conversion.h:65

Referenced by MeshGenerator::declareMeshForSubByName(), MeshGenerator::getCSGBaseByName(), MeshGenerator::getMeshByName(), MeshGenerator::getMeshGeneratorNameFromParam(), and MeshGenerator::getMeshGeneratorNamesFromParam().

◆ computeNodeNormals()

std::unordered_map< dof_id_type, Point > AdvancedExtruderGenerator::computeNodeNormals ( const MeshBase &  input) const
protected

Compute, for each node, the extrusion direction as the JxW-weighted average of the normals, evaluated at that node with nodal quadrature, of all the elements connected to it.

The input surface mesh is expected to have consistently oriented elements.

Parameters
inputthe 1D or 2D mesh being extruded
Returns
a map from node id to its (unit) extrusion direction

Definition at line 1810 of file AdvancedExtruderGenerator.C.

1811{
1812 // Evaluate the geometric map of each element at its nodes with a nodal quadrature rule, as done
1813 // for mortar nodal normals. On curved (higher-order) elements this captures the local surface
1814 // normal at each node rather than a single per-element normal.
1815 const auto dim = input.mesh_dimension();
1816 libMesh::QNodal qrule(dim);
1817 const auto & qweights = qrule.get_weights();
1818 std::unique_ptr<FEBase> fe(FEBase::build(dim, FEType(FIRST, LAGRANGE)));
1819 fe->attach_quadrature_rule(&qrule);
1820 const auto & dxyzdxi = fe->get_dxyzdxi();
1821 const auto & dxyzdeta = fe->get_dxyzdeta();
1822 const auto & q_points = fe->get_xyz();
1823 const Point z_axis(0, 0, 1);
1824
1825 // Sum the JxW-weighted normals of the elements connected to each node
1826 std::unordered_map<dof_id_type, Point> node_normals;
1827 for (const auto & elem : input.element_ptr_range())
1828 {
1829 fe->reinit(elem);
1830 const auto qpoint_to_node = MooseMeshUtils::nodalQuadraturePointToNodeMap(*elem, q_points);
1831 for (const auto qp : index_range(q_points))
1832 {
1833 // The weighted normal JxW * n is the quadrature weight times the area vector
1834 // dxyz/dxi x dxyz/deta in 2D, or the in-plane rotation z x dxyz/dxi of the tangent in 1D.
1835 // Both have the orientation of the element's node ordering, so that the extruded elements
1836 // are not inverted.
1837 Point weighted_normal;
1838 if (dim == 2)
1839 weighted_normal = dxyzdxi[qp].cross(dxyzdeta[qp]);
1840 else
1841 {
1842 // A curve only defines a unique normal within its plane
1843 if (std::abs(dxyzdxi[qp](2)) > libMesh::TOLERANCE * dxyzdxi[qp].norm())
1844 paramError("extrude_along_node_normals",
1845 "Extruding a 1D mesh along node normals requires the mesh to lie in a plane "
1846 "of constant z, but element ",
1847 elem->id(),
1848 " is not.");
1849 weighted_normal = z_axis.cross(dxyzdxi[qp]);
1850 }
1851 node_normals[elem->node_id(qpoint_to_node[qp])] += qweights[qp] * weighted_normal;
1852 }
1853 }
1854
1855 // The input surface mesh is expected to have consistently oriented elements.
1856 for (auto & [node_id, normal] : node_normals)
1857 {
1858 if (normal.norm_sq() == 0)
1859 mooseError("The averaged normal at node ",
1860 node_id,
1861 " is zero; an extrusion direction cannot be determined. This can happen if the "
1862 "connected elements do not have consistent orientations.");
1863 normal = normal.unit();
1864 }
1865
1866 return node_normals;
1867}
std::vector< unsigned int > nodalQuadraturePointToNodeMap(const Elem &elem, const std::vector< Point > &q_points)
Match the points of a nodal quadrature rule (e.g.
LIBMESH_DEVICE_INLINE auto norm(const T &a)
auto index_range(const T &sizable)
static constexpr Real TOLERANCE

Referenced by generate().

◆ connectControllableParams()

void MooseBase::connectControllableParams ( const std::string &  parameter,
const std::string &  object_type,
const std::string &  object_name,
const std::string &  object_parameter 
) const
inherited

Connect controllable parameter of this action with the controllable parameters of the objects added by this action.

Parameters
parameterName of the controllable parameter of this action
object_typeType of the object added by this action.
object_nameName of the object added by this action.
object_parameterName of the parameter of the object.

Definition at line 77 of file MooseBase.C.

81{
82 auto & factory = _app.getFactory();
83 auto & ip_warehouse = _app.getInputParameterWarehouse();
84
85 MooseObjectParameterName primary_name(uniqueName(), parameter);
86 const auto base_type = factory.getValidParams(object_type).getBase();
87 MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
88 ip_warehouse.addControllableParameterConnection(primary_name, secondary_name);
89
90 const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
91 for (const auto & tag : tags)
92 {
93 if (!tag.empty())
94 {
95 // Only adds the parameter with the different control tags if the derived class
96 // properly registers the parameter to its own syntax
97 MooseObjectParameterName tagged_name(tag, name(), parameter);
98 ip_warehouse.addControllableParameterConnection(
99 tagged_name, secondary_name, /*error_on_empty=*/false);
100 }
101 }
102}
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition MooseApp.C:2876
MooseObjectName uniqueName() const
Definition MooseBase.C:69
A class for storing an input parameter name.

◆ copyMeshProperty() [1/2]

template<typename T >
T & MeshGenerator::copyMeshProperty ( const std::string &  source_data_name,
const std::string &  source_mesh 
)
inlineprotectedinherited

Method for copying attribute from input mesh meta-data store to current mesh meta-data store, keeping source and target data names the same.

This may often be avoided as getMeshProperty calls can traverse the tree of mesh generators to find a metadata instance

Definition at line 276 of file MeshGenerator.h.

277 {
278 return copyMeshProperty<T>(source_data_name, source_data_name, source_mesh);
279 }

◆ copyMeshProperty() [2/2]

template<typename T >
T & MeshGenerator::copyMeshProperty ( const std::string &  target_data_name,
const std::string &  source_data_name,
const std::string &  source_mesh 
)
inlineprotectedinherited

Method for copying attribute from input mesh meta-data store to current mesh meta-data store.

This may often be avoided as getMeshProperty calls can traverse the tree of mesh generators to find a metadata instance

Definition at line 263 of file MeshGenerator.h.

266 {
267 return declareMeshProperty(target_data_name, getMeshProperty<T>(source_data_name, source_mesh));
268 }
T & declareMeshProperty(const std::string &data_name, Args &&... args)
Methods for writing out attributes to the mesh meta-data store, which can be retrieved from most othe...

◆ declareMeshesForSub()

void MeshGenerator::declareMeshesForSub ( const std::string &  param_name)
protectedinherited

Like declareMeshForSub(), but for multiple generators.

Definition at line 295 of file MeshGenerator.C.

296{
298}
const std::vector< MeshGeneratorName > & getMeshGeneratorNamesFromParam(const std::string &param_name) const
Helper for getting a std::vector<MeshGeneratorName> parameter.
void declareMeshesForSubByName(const std::vector< MeshGeneratorName > &mesh_generator_names)
Like declareMeshForSubByName(), but for multiple generators.

Referenced by XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ declareMeshesForSubByName()

void MeshGenerator::declareMeshesForSubByName ( const std::vector< MeshGeneratorName > &  mesh_generator_names)
protectedinherited

Like declareMeshForSubByName(), but for multiple generators.

Definition at line 311 of file MeshGenerator.C.

313{
314 for (const auto & name : mesh_generator_names)
316}
void declareMeshForSubByName(const MeshGeneratorName &mesh_generator_name)
Like declareMeshForSub(), but takes the name of another MeshGenerator directly.

Referenced by MeshGenerator::declareMeshesForSub(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ declareMeshForSub()

void MeshGenerator::declareMeshForSub ( const std::string &  param_name)
protectedinherited

Declares that a MeshGenerator referenced in the InputParameters is to be used as a dependency of a sub MeshGenerator created by this MeshGenerator (see addSubMeshGenerator)

You must declare all such MeshGenerators that are passed by parameter to this MeshGenerator but instead used in a sub MeshGenerator. This is in order to declare the intention to use an input mesh as a dependency for a sub generator instead of this one.

Definition at line 289 of file MeshGenerator.C.

290{
292}
const MeshGeneratorName * getMeshGeneratorNameFromParam(const std::string &param_name, const bool allow_invalid) const
Helper for getting a MeshGeneratorName parameter.

Referenced by OverlayMeshGenerator::OverlayMeshGenerator(), SideSetExtruderGenerator::SideSetExtruderGenerator(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ declareMeshForSubByName()

void MeshGenerator::declareMeshForSubByName ( const MeshGeneratorName &  mesh_generator_name)
protectedinherited

Like declareMeshForSub(), but takes the name of another MeshGenerator directly.

Definition at line 301 of file MeshGenerator.C.

302{
303 checkGetMesh(mesh_generator_name, "");
304 if (isNullMeshName(mesh_generator_name))
305 return;
306
307 _requested_mesh_generators_for_sub.insert(mesh_generator_name);
308}
std::set< MeshGeneratorName > _requested_mesh_generators_for_sub
The names of the MeshGenerators that were requested in the declareMeshForSub methods.
void checkGetMesh(const MeshGeneratorName &mesh_generator_name, const std::string &param_name) const
Helper for performing error checking in the getMesh methods.

Referenced by MeshGenerator::declareMeshesForSubByName(), and MeshGenerator::declareMeshForSub().

◆ declareMeshProperty() [1/2]

template<typename T , typename... Args>
T & MeshGenerator::declareMeshProperty ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Methods for writing out attributes to the mesh meta-data store, which can be retrieved from most other MOOSE systems and is recoverable.

Definition at line 535 of file MeshGenerator.h.

536{
538 mooseError("Can only call declareMeshProperty() during MeshGenerator construction");
539
540 // We sort construction ordering so that we _must_ declare before retrieving
541 if (hasMeshProperty(data_name))
542 mooseError("While declaring mesh property '",
543 data_name,
544 "' with type '",
545 MooseUtils::prettyCppType<T>(),
546 "',\nsaid property has already been declared with type '",
547 setMeshPropertyHelper(data_name).type(),
548 "'");
549
550 const auto full_name = meshPropertyName(data_name);
551 auto new_T_value =
552 std::make_unique<RestartableData<T>>(full_name, nullptr, std::forward<Args>(args)...);
553 auto value =
554 &_app.registerRestartableData(std::move(new_T_value), 0, false, MooseApp::MESH_META_DATA);
555 mooseAssert(value->declared(), "Should be declared");
556
557 RestartableData<T> * T_value = dynamic_cast<RestartableData<T> *>(value);
558 mooseAssert(T_value, "Bad cast");
559
560 return T_value->set();
561}
RestartableDataValue & setMeshPropertyHelper(const std::string &data_name)
Helper for getting a writable reference to a mesh property, used in declareMeshProperty and setMeshPr...
bool hasMeshProperty(const std::string &data_name, const std::string &prefix) const
static std::string meshPropertyName(const std::string &data_name, const std::string &prefix)
RestartableDataValue & registerRestartableData(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid, bool read_only, const RestartableDataMapName &metaname="")
Definition MooseApp.C:2458
static const RestartableDataMapName MESH_META_DATA
Definition MooseApp.h:133
Concrete definition of a parameter value for a specified type.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

Referenced by AddMetaDataGenerator::AddMetaDataGenerator(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), MeshGenerator::copyMeshProperty(), DistributedRectilinearMeshGenerator::DistributedRectilinearMeshGenerator(), ImageMeshGenerator::ImageMeshGenerator(), RinglebMeshGenerator::RinglebMeshGenerator(), and SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator().

◆ declareMeshProperty() [2/2]

template<typename T >
T & MeshGenerator::declareMeshProperty ( const std::string &  data_name,
const T &  data_value 
)
inlineprotectedinherited

Definition at line 236 of file MeshGenerator.h.

237 {
238 return declareMeshProperty<T, const T &>(data_name, data_value);
239 }

◆ declareNullMeshName()

void MeshGenerator::declareNullMeshName ( const MeshGeneratorName &  name)
protectedinherited

Registers the name name as a "null" mesh, which is a MeshGenerator used in InputParameters that will not represent an input mesh when requested via getMesh.

An example use case for this is when you as a developer want users to represent a hole in a mesh pattern that is defined in input.

Definition at line 504 of file MeshGenerator.C.

505{
506 mooseAssert(_app.constructingMeshGenerators(), "Should only be called at construction");
507 mooseAssert(!_null_mesh_names.count(name), "Already declared");
508 _null_mesh_names.insert(name);
509}
std::set< std::string > _null_mesh_names
The declared "null" mesh names that will not represent a mesh in input; see declareNullMeshName()

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 49 of file MooseObject.h.

49{ return _enabled; }
const bool & _enabled
Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
Definition MooseObject.h:71

Referenced by EigenKernel::enabled(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), and NodeFaceConstraint::validParams().

◆ errorPrefix()

std::string MooseBase::errorPrefix ( const std::string &  ) const
inlineinherited

Deprecated message prefix; the error type is no longer used.

Definition at line 264 of file MooseBase.h.

264{ return messagePrefix(); }

◆ flagInvalidSolutionInternal()

template<bool warning>
template void SolutionInvalidInterface::flagInvalidSolutionInternal< false > ( const InvalidSolutionID  invalid_solution_id) const
protectedinherited

Set solution invalid mark for the given solution ID.

Definition at line 41 of file SolutionInvalidInterface.C.

43{
44 mooseAssert(
45 warning == moose::internal::getSolutionInvalidityRegistry().item(invalid_solution_id).warning,
46 "Inconsistent warning flag");
47 auto & solution_invalidity = _si_moose_base.getMooseApp().solutionInvalidity();
48 if constexpr (!warning)
50 solution_invalidity.printDebug(invalid_solution_id);
51 return solution_invalidity.flagInvalidSolutionInternal(invalid_solution_id);
52}
bool immediatelyPrintInvalidSolution() const
Whether or not the solution invalid warnings are printed out immediately.
SolutionInvalidity & solutionInvalidity()
Get the SolutionInvalidity for this app.
Definition MooseApp.h:182
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition MooseBase.h:87
const FEProblemBase * _si_problem
A pointer to FEProblem base.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.
void printDebug(InvalidSolutionID _invalid_solution_id) const
Immediately print the section and message for debug purpose.
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.

◆ generate()

std::unique_ptr< MeshBase > AdvancedExtruderGenerator::generate ( )
overridevirtual

Generate / modify the mesh.

Implements MeshGenerator.

Definition at line 432 of file AdvancedExtruderGenerator.C.

433{
434 // Note: bulk of this code originally from libmesh mesh_modification.C
435 // Original copyright: Copyright (C) 2002-2019 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
436 // Original license is LGPL so it can be used here.
437
438 auto mesh = buildMeshBaseObject(_input->mesh_dimension() + 1);
439 mesh->set_mesh_dimension(_input->mesh_dimension() + 1);
440
441 // Check if the element integer names are existent in the input mesh.
442 for (const auto i : make_range(_elem_integer_names_to_swap.size()))
443 if (_input->has_elem_integer(_elem_integer_names_to_swap[i]))
445 _input->get_elem_integer_index(_elem_integer_names_to_swap[i]));
446 else
447 paramError("elem_integer_names_to_swap",
448 "Element ",
449 i + 1,
450 " of 'elem_integer_names_to_swap' in is not a valid extra element integer of the "
451 "input mesh.");
452
453 // prepare for transferring extra element integers from original mesh to the extruded mesh.
454 const unsigned int num_extra_elem_integers = _input->n_elem_integers();
455 std::vector<std::string> id_names;
456
457 for (unsigned int i = 0; i < num_extra_elem_integers; i++)
458 {
459 id_names.push_back(_input->get_elem_integer_name(i));
460 if (!mesh->has_elem_integer(id_names[i]))
461 mesh->add_elem_integer(id_names[i]);
462 }
463
464 // retrieve subdomain/sideset/nodeset name maps
465 if (!_input->preparation().has_cached_elem_data)
466 _input->cache_elem_data();
467 const auto & input_subdomain_map = _input->get_subdomain_name_map();
468 const auto & input_sideset_map = _input->get_boundary_info().get_sideset_name_map();
469 const auto & input_nodeset_map = _input->get_boundary_info().get_nodeset_name_map();
470
471 // Check that the swaps source blocks are present in the mesh
472 for (const auto & swap : _subdomain_swaps)
473 for (const auto i : index_range(swap))
474 if (i % 2 == 0 && !MooseMeshUtils::hasSubdomainName(*_input, swap[i]))
475 {
476 std::string blocks;
477 for (const auto & [name, id] : MooseMeshUtils::getAllSubdomainNamesAndIDs(*_input))
478 blocks += (blocks.empty() ? "" : ", ") + name + " (" + std::to_string(id) + ")";
479 paramError("subdomain_swaps",
480 "The block '",
481 swap[i],
482 "' was not found within the mesh.\nBlock names (ID) in the mesh: " + blocks);
483 }
484
485 // Convert the subdomain swaps from names to IDs. Target subdomains that are neither IDs nor
486 // names of subdomains in the input mesh are assigned new IDs, unused by the input mesh and by
487 // any other target ID
489 for (const auto & swap : _subdomain_swaps)
490 for (const auto i : index_range(swap))
491 if (i % 2 == 1 && MooseUtils::isDigits(swap[i]))
492 next_free_subdomain_id = std::max(
493 next_free_subdomain_id,
495 std::map<SubdomainName, subdomain_id_type> new_subdomain_ids;
496 std::vector<std::vector<subdomain_id_type>> subdomain_swap_ids(_subdomain_swaps.size());
497 for (const auto row : index_range(_subdomain_swaps))
498 for (const auto i : index_range(_subdomain_swaps[row]))
499 {
500 const auto & subdomain = _subdomain_swaps[row][i];
501 if (i % 2 == 0 || MooseUtils::isDigits(subdomain) ||
503 subdomain_swap_ids[row].push_back(MooseMeshUtils::getSubdomainID(subdomain, *_input));
504 else
505 {
506 if (!new_subdomain_ids.count(subdomain))
507 new_subdomain_ids[subdomain] = next_free_subdomain_id++;
508 subdomain_swap_ids[row].push_back(new_subdomain_ids[subdomain]);
509 }
510 }
511
512 try
513 {
515 name(), "subdomain_swaps", subdomain_swap_ids, _subdomain_swap_pairs);
516 }
517 catch (const MooseException & e)
518 {
519 paramError("subdomain_swaps", e.what());
520 }
521
522 // Check that the swaps source boundaries are present in the mesh
523 for (const auto & swap : _boundary_swaps)
524 for (const auto i : index_range(swap))
525 if (i % 2 == 0 && !MooseMeshUtils::hasBoundaryID(*_input, swap[i]))
526 paramError("boundary_swaps",
527 "The boundary '",
528 swap[i],
529 "' was not found within the mesh.\nBoundaries in the mesh: " +
531
532 // Check that the source blocks for layer top/bottom boundaries exist in the mesh
533 for (const auto & layer_vec : _upward_boundary_source_blocks)
534 for (const auto bid : layer_vec)
537 "upward_boundary_source_blocks", "The block '", bid, "' was not found within the mesh");
538 for (const auto & layer_vec : _downward_boundary_source_blocks)
539 for (const auto bid : layer_vec)
541 paramError("downward_boundary_source_blocks",
542 "The block '",
543 bid,
544 "' was not found within the mesh");
545
546 // Move the meshes as requested by the mesh generator system
547 std::unique_ptr<MeshBase> input = std::move(_input);
548 std::unique_ptr<MeshBase> extrusion_curve;
550 extrusion_curve = std::move(_extrusion_curve);
551
552 if (_extrude_along_node_normals && !input->is_serial())
553 paramError("extrude_along_node_normals",
554 "Extruding along node normals is not implemented for non-serialized distributed "
555 "meshes yet.");
556
557 // We must serialize the curve to know how to extrude across all ranks
558 std::unique_ptr<libMesh::MeshSerializer> serializer;
560 serializer = std::make_unique<libMesh::MeshSerializer>(*extrusion_curve);
561
562 // Exterior sides of the input mesh are identified by their lack of neighbor
563 if (_has_side_boundary && !input->preparation().has_neighbor_ptrs)
564 input->find_neighbors();
565
566 // If we're using a distributed mesh... then make sure we don't have any remote elements hanging
567 // around
568 if (!input->is_serial())
569 {
570 input->delete_remote_elements();
571 // This should be a no-op, and yet, it's needed for two THM tests
572 mesh->delete_remote_elements();
573 }
574
575 if (input->n_nodes() != input->max_node_id())
576 input->renumber_nodes_and_elements();
577
578 if (input->n_nodes() != input->max_node_id())
580 "You must allow renumbering, because the extruded mesh should be contiguously numbered. "
581 "Alternatively, you can use a separate mesh generator (MeshRepairGenerator with the "
582 "renumber_contiguously parameter for example) to renumber the nodes contiguously.");
583
584 unsigned int total_num_layers;
585 unsigned int total_num_elevations;
587 {
588 total_num_layers = std::accumulate(_num_layers.begin(), _num_layers.end(), 0);
589 total_num_elevations = _heights.size();
590 }
591 else
592 {
593 total_num_layers = extrusion_curve->n_elem();
594 total_num_elevations = 1;
595 }
596
597 dof_id_type orig_elem = input->n_elem();
598 dof_id_type orig_nodes = input->n_nodes();
599
600#ifdef LIBMESH_ENABLE_UNIQUE_ID
601 unique_id_type orig_unique_ids = input->parallel_max_unique_id();
602 bool has_poly_midnodes = false;
603#endif
604
605 bool has_polygons = false;
606 unsigned int order = 1;
607
608 BoundaryInfo & boundary_info = mesh->get_boundary_info();
609 const BoundaryInfo & input_boundary_info = input->get_boundary_info();
610
611 // Determine boundary IDs for the new user provided boundary names
612 std::vector<BoundaryName> new_boundary_names;
614 new_boundary_names.push_back(_bottom_boundary);
616 new_boundary_names.push_back(_top_boundary);
618 new_boundary_names.push_back(_side_boundary);
619 std::vector<boundary_id_type> new_boundary_ids =
620 MooseMeshUtils::getBoundaryIDs(*input, new_boundary_names, true);
621 // getBoundaryIDs generates a distinct ID for each unknown name, even a repeated one, so make
622 // boundaries given the same name share an ID
623 for (const auto i : index_range(new_boundary_names))
624 for (const auto j : make_range(i))
625 if (new_boundary_names[i] == new_boundary_names[j])
626 new_boundary_ids[i] = new_boundary_ids[j];
627 const auto user_bottom_boundary_id =
628 _has_bottom_boundary ? new_boundary_ids.front() : libMesh::BoundaryInfo::invalid_id;
629 const auto user_top_boundary_id = _has_top_boundary
630 ? new_boundary_ids[_has_bottom_boundary ? 1 : 0]
632 const auto user_side_boundary_id =
633 _has_side_boundary ? new_boundary_ids.back() : libMesh::BoundaryInfo::invalid_id;
634
635 // We know a priori how many elements we'll need
636 mesh->reserve_elem(total_num_layers * orig_elem);
637
638 // Look for higher order elements which introduce an extra layer
639 std::set<ElemType> higher_orders = {EDGE3, EDGE4, TRI6, TRI7, QUAD8, QUAD9};
640 bool extruding_quad_eights = false;
641 std::vector<ElemType> types;
642 MeshTools::elem_types(*input, types);
643 for (const auto elem_type : types)
644 {
645 if (higher_orders.count(elem_type))
646 order = 2;
647 if (elem_type == QUAD8)
648 extruding_quad_eights = true;
649 }
650 mesh->comm().max(order);
651 mesh->comm().max(extruding_quad_eights);
652
653 // Reserve for the max number possibly needed
654 mesh->reserve_nodes((order * total_num_layers + 1) * orig_nodes);
655
656 // Container to catch the boundary IDs handed back by the BoundaryInfo object
657 std::vector<boundary_id_type> ids_to_copy;
658
659 // We need to compute the distance to the axis
660 Real start_radial_extent = 0;
661 Point reference_point;
663 reference_point = *(extrusion_curve->node_ptr(0));
664 else if (!MooseUtils::absoluteFuzzyEqual(_twist_pitch, 0.))
665 // Backwards compatibility: we were twisting along an axis going through the origin
666 reference_point = Point(0, 0, 0);
667 else
668 reference_point = MooseMeshUtils::meshCentroidCalculator(*input);
669
671 {
672 // the center is at the curve if we are extruding along a curve, and the centroid of the mesh
673 // otherwise
674 RealVectorValue reference_direction;
676 reference_direction =
680 (*(extrusion_curve->node_ptr(1)) - *(extrusion_curve->node_ptr(0))).unit());
681 else
682 reference_direction = _direction;
683
684 // now we measure the initial radial extent
685 start_radial_extent =
686 MooseMeshUtils::computeMaxDistanceToAxis(*input, reference_point, reference_direction);
687 }
688
689 // Compute the total extrusion distance along the axis
690 Real total_extrusion_distance_at_axis;
692 {
693 if (!extrusion_curve->is_prepared())
694 extrusion_curve->prepare_for_use();
695 total_extrusion_distance_at_axis = MeshTools::volume(*extrusion_curve);
696 }
697 else
698 total_extrusion_distance_at_axis = std::accumulate(_heights.begin(), _heights.end(), 0);
699
700 // When extruding along node normals, precompute each node's extrusion direction from the
701 // normals of the elements connected to it
702 std::unordered_map<dof_id_type, Point> node_normals;
704 node_normals = computeNodeNormals(*input);
705
706 // Create translated layers of nodes in the direction of extrusion
707 for (const auto & node : input->node_ptr_range())
708 {
709 unsigned int current_node_layer = 0;
710 Point orig_node_to_previous;
711 Point orig_node_to_current;
712 Real sum_step_sizes = 0.;
713 Real sum_step_sizes_at_axis = 0.;
714 // Initial distance from the node to the extrusion axis
715 Real start_node_radius = (*node - reference_point).norm();
716
717 // Direction to extrude this node along: a fixed direction, or the averaged normal of the
718 // elements connected to it
719 Point node_extrude_direction = _direction;
721 {
722 auto it = node_normals.find(node->id());
723 if (it == node_normals.end())
724 mooseError("Node ",
725 node->id(),
726 " is not connected to any element with a well-defined normal; its extrusion "
727 "direction cannot be determined.");
728 node_extrude_direction = it->second;
729 }
730
731 // e is the elevation layer ordering
732 for (const auto e : make_range(total_num_elevations))
733 {
734 unsigned int num_layers = libMesh::invalid_uint;
735 Real height = std::numeric_limits<Real>::max(), bias = std::numeric_limits<Real>::max();
737 {
738 num_layers = extrusion_curve->n_elem();
739 }
740 else
741 {
742 num_layers = _num_layers[e];
743 height = _heights[e];
744 bias = _biases[e];
745 }
746
747 // In first layer we also add the base nodes, hence the "plus one"
748 unsigned int num_heights_at_elevation = order * num_layers + (e == 0 ? 1 : 0);
749 // Keep track of the plane normal to the extrusion
750 RealVectorValue prev_intersecting_plane_normal_vec = _start_extrusion_direction;
751
752 // k is the element layer ordering within each elevation layer
753 for (const auto k : make_range(num_heights_at_elevation))
754 {
755 // Compute 'orig_node_to_current', the update vector
756 // For the first layer we don't need to move
757 if (e == 0 && k == 0)
758 orig_node_to_current.zero();
759 else
760 {
761 // Shift the previous position by a certain fraction of 'height' along the extrusion
762 // direction to get the new position.
763
764 // Compute orig_node_to_current before any transformation
765 Real step_size = 0;
766 Real step_size_at_axis = 0;
768 {
769 // current point in extrusion curve
770 const Node * P_current = extrusion_curve->node_ptr(k);
771 // previous point in extrusion curve
772 const Node * P_prev = extrusion_curve->node_ptr(k - 1);
773
774 // Quantities for the previous position of the extruded node
775 const auto old_node = orig_node_to_previous + *node;
776 RealVectorValue b_vec = old_node - *P_prev;
777 Real node_distance_to_curve = b_vec.norm();
778
779 // Node does not lie exactly on the extrusion curve we are following
780 if (node_distance_to_curve > libMesh::TOLERANCE)
781 {
782 // normal vector to the plane to extrude the point into
783 RealVectorValue intersecting_plane_normal_vec;
784
785 // Select the extrusion direction based on the curve or the user parameters
786 if (k == 1)
787 {
788 const auto P_next = extrusion_curve->node_ptr(k + 1);
789 intersecting_plane_normal_vec =
790 0.5 * (_start_extrusion_direction + (*P_next - *P_current).unit());
791 }
792 else if (k < order * num_layers - 1)
793 {
794 const auto P_next = extrusion_curve->node_ptr(k + 1);
795 // this approximates the derivative at the spline point
796 intersecting_plane_normal_vec = *P_next - *P_prev;
797 }
798 else
799 {
800 intersecting_plane_normal_vec = (_end_extrusion_direction.norm_sq() > 0)
802 : RealVectorValue(*P_current - *P_prev);
803 }
804 intersecting_plane_normal_vec /= intersecting_plane_normal_vec.norm();
805
806 Point new_node_point;
807 // If the extrusion direction and the previous plane normal are aligned,
808 // we can't define a rotation axis. We simply translate the points
809 if (MooseUtils::absoluteFuzzyEqual(
810 prev_intersecting_plane_normal_vec.cross(intersecting_plane_normal_vec)
811 .norm_sq(),
812 0))
813 new_node_point = old_node + *P_current - *P_prev;
814 // We use a rotation from the previous extrusion plane normal to the current one
815 // We have tried in the past:
816 // - assuming (P_prev, P_current, old_node, current_node) are coplanar
817 // - assuming (P_prev, P_current) and (old_node, current_node) are parallel
818 // Both result in a slight deformation of the shape during extrusion.
819 else
820 {
821 auto axis = prev_intersecting_plane_normal_vec.cross(intersecting_plane_normal_vec);
822 const auto sin_th = axis.norm();
823 axis /= sin_th;
824 Real cos_th = prev_intersecting_plane_normal_vec * intersecting_plane_normal_vec;
825 // Rodrigues formula for rotation
826 const auto new_v = cos_th * b_vec + axis.cross(b_vec) * sin_th +
827 axis * (axis * b_vec) * (1. - cos_th);
828
829 mooseAssert(MooseUtils::absoluteFuzzyEqual(new_v.norm(), b_vec.norm()),
830 "Radial extent be conserved");
831 new_node_point = *P_current + new_v;
832 }
833
834 orig_node_to_current = new_node_point - *node;
835
836 step_size = (orig_node_to_current - orig_node_to_previous).norm();
837 step_size_at_axis = (*P_current - *P_prev).norm();
838 prev_intersecting_plane_normal_vec = intersecting_plane_normal_vec;
839 }
840 // Point is on the axis of the line
841 else
842 {
843 _direction = *P_current - *P_prev;
844 _direction /= _direction.norm();
845 mooseAssert(std::abs(_direction.norm() - 1.0) < libMesh::TOLERANCE,
846 "Norm of direction vector is not 1!");
847
848 // Calculate step size.
849 // Note: orig_node_to_previous + *node is the vector description of the
850 // previously-created node
851 step_size = ((*P_current - (orig_node_to_previous + *node)) * _direction);
852 step_size_at_axis = step_size;
853 orig_node_to_current = orig_node_to_previous + _direction * step_size;
854 }
855 }
856 // Extruding in a fixed direction (not along a curve)
857 else
858 {
859 // Divide by the order to avoid applying the bias to the nodes within a higher order
860 // element
861 auto layer_index = (k - (e == 0 ? 1 : 0)) / order + 1;
862 step_size = MooseUtils::absoluteFuzzyEqual(bias, 1.0)
863 ? height / (Real)num_layers / (Real)order
864 : height * std::pow(bias, (Real)(layer_index - 1)) * (1.0 - bias) /
865 (1.0 - std::pow(bias, (Real)(num_layers))) / (Real)order;
866 step_size_at_axis = step_size;
867 // update distance from starting node to new node
868 orig_node_to_current = orig_node_to_previous + node_extrude_direction * step_size;
869 }
870
871 // Keep track of the cumulative step size as an extrusion axis coordinate
872 sum_step_sizes += step_size;
873 sum_step_sizes_at_axis += step_size_at_axis;
874
875 // Handle radial expansion. No need to perform expansion at the centerline
876 if (_end_radial_extent && start_node_radius > libMesh::TOLERANCE)
877 {
878 // How far along we are in the extrusion, measured at the axis (=curve when extruding
879 // along a curve)
880 Real tm1 =
881 (sum_step_sizes_at_axis - step_size_at_axis) / total_extrusion_distance_at_axis;
882 Real t = sum_step_sizes_at_axis / total_extrusion_distance_at_axis;
883
884 // Direction of radial expansion.
885 RealVectorValue node_to_extrusion_axis;
887 node_to_extrusion_axis =
888 *node + orig_node_to_current - *(extrusion_curve->node_ptr(k));
889 // The radial expansion has to be performed in the rotated frame
890 else if (!MooseUtils::absoluteFuzzyEqual(_twist_pitch, 0.))
891 node_to_extrusion_axis =
892 *node + orig_node_to_current - (reference_point + _direction * sum_step_sizes);
893 // when extruding in a straight line with no twisting, we can use the original radial
894 // direction
895 else
896 node_to_extrusion_axis = *node - reference_point;
897
898 // Fraction of the total starting radius the node lives in
899 const auto radius_scaling = start_node_radius / start_radial_extent;
900 // Calculate weighting for expansion
901 const auto radial_ratio_m1 = AdvancedExtruderGenerator::radialExpansionRatio(tm1);
902 const auto radial_ratio = AdvancedExtruderGenerator::radialExpansionRatio(t);
903
904 // Compute change in step
905 orig_node_to_current += (start_radial_extent * (radial_ratio_m1 - radial_ratio) +
906 (radial_ratio - radial_ratio_m1) * _end_radial_extent) *
907 radius_scaling * node_to_extrusion_axis.unit();
908 }
909
910 // Handle helicoidal extrusion
911 if (!MooseUtils::absoluteFuzzyEqual(_twist_pitch, 0.))
912 {
913 // twist 1 should be 'normal' to the extruded shape
914 RealVectorValue twist1 = _direction.cross(*node);
915 // This happens for any node on the helicoidal extrusion axis
916 if (!MooseUtils::absoluteFuzzyEqual(twist1.norm(), .0))
917 twist1 /= twist1.norm();
918 const RealVectorValue twist2 = twist1.cross(_direction);
919
920 auto twist =
921 (cos(2. * libMesh::pi * current_node_layer * step_size / _twist_pitch) -
922 cos(2. * libMesh::pi * (current_node_layer - 1) * step_size / _twist_pitch)) *
923 twist2 +
924 (sin(2. * libMesh::pi * current_node_layer * step_size / _twist_pitch) -
925 sin(2. * libMesh::pi * (current_node_layer - 1) * step_size / _twist_pitch)) *
926 twist1;
927
928 // If we normalize twist, we must multiply by 2 * sin(libMesh::pi * step_size /
929 // _twist_pitch) if (!MooseUtils::absoluteFuzzyEqual(twist.norm(), .0))
930 // twist /= twist.norm();
931
932 // Get a point on the extrusion axis (around which we currently twist the geometry)
933 // at the local elevation height to be able to compute the distance to the axis
934 Point extrusion_axis_at_elevation;
935 Point prev_extrusion_axis_at_elevation;
937 {
938 extrusion_axis_at_elevation = *extrusion_curve->node_ptr(k);
939 prev_extrusion_axis_at_elevation = *extrusion_curve->node_ptr(k - 1);
940 }
941 else
942 {
943 // We can't use old and current step updates because they have been "twisted"
944 extrusion_axis_at_elevation = reference_point + _direction * sum_step_sizes;
945 prev_extrusion_axis_at_elevation =
946 reference_point + _direction * (sum_step_sizes - step_size);
947 }
948
949 // Scale with how far the node is from the extrusion axis, before twisting
950 twist *= (*node + orig_node_to_current - extrusion_axis_at_elevation).norm();
951
952 // No need to twist or expand the point on the axis
953 if (!MooseUtils::absoluteFuzzyEqual(twist1.norm(), .0))
954 orig_node_to_current += twist;
955 }
956 }
957
958 // Add the new node to the mesh
959 Node * new_node = mesh->add_point(*node + orig_node_to_current,
960 node->id() + (current_node_layer * orig_nodes),
961 node->processor_id());
962
963#ifdef LIBMESH_ENABLE_UNIQUE_ID
964 // Let's give the base of the extruded mesh the same
965 // unique_ids as the source mesh, in case anyone finds that
966 // a useful map to preserve.
967 const unique_id_type uid = (current_node_layer == 0)
968 ? node->unique_id()
969 : orig_unique_ids +
970 (current_node_layer - 1) * (orig_elem + orig_nodes) +
971 node->id();
972 new_node->set_unique_id(uid);
973#endif
974
975 // Add the new node to the extruded boundaries
976 input_boundary_info.boundary_ids(node, ids_to_copy);
977 if (_boundary_swap_pairs.empty())
978 boundary_info.add_node(new_node, ids_to_copy);
979 else
980 for (const auto & id_to_copy : ids_to_copy)
981 {
982 boundary_info.add_node(new_node,
983 _boundary_swap_pairs[e].count(id_to_copy)
984 ? _boundary_swap_pairs[e][id_to_copy]
985 : id_to_copy);
986 }
987
988 orig_node_to_previous = orig_node_to_current;
989 current_node_layer++;
990 }
991 }
992 }
993
994 const auto & side_ids = input_boundary_info.get_side_boundary_ids();
995
996 boundary_id_type next_side_id =
997 side_ids.empty() ? 0 : cast_int<boundary_id_type>(*side_ids.rbegin() + 1);
998
999 // side_ids may not include ids from remote elements, in which case
1000 // some processors may have underestimated the next_side_id; let's
1001 // fix that.
1002 input->comm().max(next_side_id);
1003
1004 // A generated side boundary ID starts after the largest input boundary ID, so it can coincide
1005 // with the default bottom (next_side_id) and top (next_side_id + 1) IDs
1007 while (user_side_boundary_id == next_side_id || user_side_boundary_id == next_side_id + 1)
1008 ++next_side_id;
1009
1010 // Map to keep track of polygon sides of polygonal prisms
1011 std::map<std::array<unsigned int, 3>, std::shared_ptr<libMesh::Polygon>> poly_extruded_sides;
1012
1013 // Build the extruded elements
1014 for (const auto & elem : input->element_ptr_range())
1015 {
1016 const ElemType etype = elem->type();
1017
1018 // build_extrusion currently only works on coarse meshes
1019 libmesh_assert(!elem->parent());
1020
1021 unsigned int current_layer = 0;
1022
1023 for (unsigned int e = 0; e != total_num_elevations; e++)
1024 {
1025 auto num_layers = !_extrude_along_curve ? _num_layers[e] : extrusion_curve->n_nodes() - 1;
1026
1027 for (unsigned int k = 0; k != num_layers; ++k)
1028 {
1029 std::unique_ptr<Elem> new_elem;
1030 bool is_flipped(false);
1031 switch (etype)
1032 {
1033 case EDGE2:
1034 {
1035 new_elem = std::make_unique<Quad4>();
1036 new_elem->set_node(
1037 0, mesh->node_ptr(elem->node_ptr(0)->id() + (current_layer * orig_nodes)));
1038 new_elem->set_node(
1039 1, mesh->node_ptr(elem->node_ptr(1)->id() + (current_layer * orig_nodes)));
1040 new_elem->set_node(
1041 2, mesh->node_ptr(elem->node_ptr(1)->id() + ((current_layer + 1) * orig_nodes)));
1042 new_elem->set_node(
1043 3, mesh->node_ptr(elem->node_ptr(0)->id() + ((current_layer + 1) * orig_nodes)));
1044
1045 if (elem->neighbor_ptr(0) == remote_elem)
1046 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1047 if (elem->neighbor_ptr(1) == remote_elem)
1048 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1049
1050 break;
1051 }
1052 case EDGE3:
1053 {
1054 new_elem = std::make_unique<Quad9>();
1055 new_elem->set_node(
1056 0, mesh->node_ptr(elem->node_ptr(0)->id() + (2 * current_layer * orig_nodes)));
1057 new_elem->set_node(
1058 1, mesh->node_ptr(elem->node_ptr(1)->id() + (2 * current_layer * orig_nodes)));
1059 new_elem->set_node(
1060 2,
1061 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 2) * orig_nodes)));
1062 new_elem->set_node(
1063 3,
1064 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 2) * orig_nodes)));
1065 new_elem->set_node(
1066 4, mesh->node_ptr(elem->node_ptr(2)->id() + (2 * current_layer * orig_nodes)));
1067 new_elem->set_node(
1068 5,
1069 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 1) * orig_nodes)));
1070 new_elem->set_node(
1071 6,
1072 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 2) * orig_nodes)));
1073 new_elem->set_node(
1074 7,
1075 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 1) * orig_nodes)));
1076 new_elem->set_node(
1077 8,
1078 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 1) * orig_nodes)));
1079
1080 if (elem->neighbor_ptr(0) == remote_elem)
1081 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1082 if (elem->neighbor_ptr(1) == remote_elem)
1083 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1084
1085 break;
1086 }
1087 case TRI3:
1088 {
1089 new_elem = std::make_unique<Prism6>();
1090 new_elem->set_node(
1091 0, mesh->node_ptr(elem->node_ptr(0)->id() + (current_layer * orig_nodes)));
1092 new_elem->set_node(
1093 1, mesh->node_ptr(elem->node_ptr(1)->id() + (current_layer * orig_nodes)));
1094 new_elem->set_node(
1095 2, mesh->node_ptr(elem->node_ptr(2)->id() + (current_layer * orig_nodes)));
1096 new_elem->set_node(
1097 3, mesh->node_ptr(elem->node_ptr(0)->id() + ((current_layer + 1) * orig_nodes)));
1098 new_elem->set_node(
1099 4, mesh->node_ptr(elem->node_ptr(1)->id() + ((current_layer + 1) * orig_nodes)));
1100 new_elem->set_node(
1101 5, mesh->node_ptr(elem->node_ptr(2)->id() + ((current_layer + 1) * orig_nodes)));
1102
1103 if (elem->neighbor_ptr(0) == remote_elem)
1104 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1105 if (elem->neighbor_ptr(1) == remote_elem)
1106 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1107 if (elem->neighbor_ptr(2) == remote_elem)
1108 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1109
1110 if (new_elem->volume() < 0.0)
1111 {
1112 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 3);
1113 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 4);
1114 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 5);
1115 is_flipped = true;
1116 }
1117
1118 break;
1119 }
1120 case TRI6:
1121 {
1122 new_elem = std::make_unique<Prism18>();
1123 new_elem->set_node(
1124 0, mesh->node_ptr(elem->node_ptr(0)->id() + (2 * current_layer * orig_nodes)));
1125 new_elem->set_node(
1126 1, mesh->node_ptr(elem->node_ptr(1)->id() + (2 * current_layer * orig_nodes)));
1127 new_elem->set_node(
1128 2, mesh->node_ptr(elem->node_ptr(2)->id() + (2 * current_layer * orig_nodes)));
1129 new_elem->set_node(
1130 3,
1131 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 2) * orig_nodes)));
1132 new_elem->set_node(
1133 4,
1134 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 2) * orig_nodes)));
1135 new_elem->set_node(
1136 5,
1137 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 2) * orig_nodes)));
1138 new_elem->set_node(
1139 6, mesh->node_ptr(elem->node_ptr(3)->id() + (2 * current_layer * orig_nodes)));
1140 new_elem->set_node(
1141 7, mesh->node_ptr(elem->node_ptr(4)->id() + (2 * current_layer * orig_nodes)));
1142 new_elem->set_node(
1143 8, mesh->node_ptr(elem->node_ptr(5)->id() + (2 * current_layer * orig_nodes)));
1144 new_elem->set_node(
1145 9,
1146 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 1) * orig_nodes)));
1147 new_elem->set_node(
1148 10,
1149 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 1) * orig_nodes)));
1150 new_elem->set_node(
1151 11,
1152 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 1) * orig_nodes)));
1153 new_elem->set_node(
1154 12,
1155 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 2) * orig_nodes)));
1156 new_elem->set_node(
1157 13,
1158 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 2) * orig_nodes)));
1159 new_elem->set_node(
1160 14,
1161 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 2) * orig_nodes)));
1162 new_elem->set_node(
1163 15,
1164 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 1) * orig_nodes)));
1165 new_elem->set_node(
1166 16,
1167 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 1) * orig_nodes)));
1168 new_elem->set_node(
1169 17,
1170 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 1) * orig_nodes)));
1171
1172 if (elem->neighbor_ptr(0) == remote_elem)
1173 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1174 if (elem->neighbor_ptr(1) == remote_elem)
1175 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1176 if (elem->neighbor_ptr(2) == remote_elem)
1177 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1178
1179 if (new_elem->volume() < 0.0)
1180 {
1181 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 3);
1182 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 4);
1183 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 5);
1184 MooseMeshUtils::swapNodesInElem(*new_elem, 6, 12);
1185 MooseMeshUtils::swapNodesInElem(*new_elem, 7, 13);
1186 MooseMeshUtils::swapNodesInElem(*new_elem, 8, 14);
1187 is_flipped = true;
1188 }
1189
1190 break;
1191 }
1192 case TRI7:
1193 {
1194 new_elem = std::make_unique<Prism21>();
1195 new_elem->set_node(
1196 0, mesh->node_ptr(elem->node_ptr(0)->id() + (2 * current_layer * orig_nodes)));
1197 new_elem->set_node(
1198 1, mesh->node_ptr(elem->node_ptr(1)->id() + (2 * current_layer * orig_nodes)));
1199 new_elem->set_node(
1200 2, mesh->node_ptr(elem->node_ptr(2)->id() + (2 * current_layer * orig_nodes)));
1201 new_elem->set_node(
1202 3,
1203 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 2) * orig_nodes)));
1204 new_elem->set_node(
1205 4,
1206 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 2) * orig_nodes)));
1207 new_elem->set_node(
1208 5,
1209 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 2) * orig_nodes)));
1210 new_elem->set_node(
1211 6, mesh->node_ptr(elem->node_ptr(3)->id() + (2 * current_layer * orig_nodes)));
1212 new_elem->set_node(
1213 7, mesh->node_ptr(elem->node_ptr(4)->id() + (2 * current_layer * orig_nodes)));
1214 new_elem->set_node(
1215 8, mesh->node_ptr(elem->node_ptr(5)->id() + (2 * current_layer * orig_nodes)));
1216 new_elem->set_node(
1217 9,
1218 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 1) * orig_nodes)));
1219 new_elem->set_node(
1220 10,
1221 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 1) * orig_nodes)));
1222 new_elem->set_node(
1223 11,
1224 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 1) * orig_nodes)));
1225 new_elem->set_node(
1226 12,
1227 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 2) * orig_nodes)));
1228 new_elem->set_node(
1229 13,
1230 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 2) * orig_nodes)));
1231 new_elem->set_node(
1232 14,
1233 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 2) * orig_nodes)));
1234 new_elem->set_node(
1235 15,
1236 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 1) * orig_nodes)));
1237 new_elem->set_node(
1238 16,
1239 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 1) * orig_nodes)));
1240 new_elem->set_node(
1241 17,
1242 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 1) * orig_nodes)));
1243 new_elem->set_node(
1244 18, mesh->node_ptr(elem->node_ptr(6)->id() + (2 * current_layer * orig_nodes)));
1245 new_elem->set_node(
1246 19,
1247 mesh->node_ptr(elem->node_ptr(6)->id() + ((2 * current_layer + 2) * orig_nodes)));
1248 new_elem->set_node(
1249 20,
1250 mesh->node_ptr(elem->node_ptr(6)->id() + ((2 * current_layer + 1) * orig_nodes)));
1251
1252 if (elem->neighbor_ptr(0) == remote_elem)
1253 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1254 if (elem->neighbor_ptr(1) == remote_elem)
1255 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1256 if (elem->neighbor_ptr(2) == remote_elem)
1257 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1258
1259 if (new_elem->volume() < 0.0)
1260 {
1261 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 3);
1262 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 4);
1263 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 5);
1264 MooseMeshUtils::swapNodesInElem(*new_elem, 6, 12);
1265 MooseMeshUtils::swapNodesInElem(*new_elem, 7, 13);
1266 MooseMeshUtils::swapNodesInElem(*new_elem, 8, 14);
1267 MooseMeshUtils::swapNodesInElem(*new_elem, 18, 19);
1268 is_flipped = true;
1269 }
1270
1271 break;
1272 }
1273 case QUAD4:
1274 {
1275 new_elem = std::make_unique<Hex8>();
1276 new_elem->set_node(
1277 0, mesh->node_ptr(elem->node_ptr(0)->id() + (current_layer * orig_nodes)));
1278 new_elem->set_node(
1279 1, mesh->node_ptr(elem->node_ptr(1)->id() + (current_layer * orig_nodes)));
1280 new_elem->set_node(
1281 2, mesh->node_ptr(elem->node_ptr(2)->id() + (current_layer * orig_nodes)));
1282 new_elem->set_node(
1283 3, mesh->node_ptr(elem->node_ptr(3)->id() + (current_layer * orig_nodes)));
1284 new_elem->set_node(
1285 4, mesh->node_ptr(elem->node_ptr(0)->id() + ((current_layer + 1) * orig_nodes)));
1286 new_elem->set_node(
1287 5, mesh->node_ptr(elem->node_ptr(1)->id() + ((current_layer + 1) * orig_nodes)));
1288 new_elem->set_node(
1289 6, mesh->node_ptr(elem->node_ptr(2)->id() + ((current_layer + 1) * orig_nodes)));
1290 new_elem->set_node(
1291 7, mesh->node_ptr(elem->node_ptr(3)->id() + ((current_layer + 1) * orig_nodes)));
1292
1293 if (elem->neighbor_ptr(0) == remote_elem)
1294 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1295 if (elem->neighbor_ptr(1) == remote_elem)
1296 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1297 if (elem->neighbor_ptr(2) == remote_elem)
1298 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1299 if (elem->neighbor_ptr(3) == remote_elem)
1300 new_elem->set_neighbor(4, const_cast<RemoteElem *>(remote_elem));
1301
1302 if (new_elem->volume() < 0.0)
1303 {
1304 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 4);
1305 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 5);
1306 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 6);
1307 MooseMeshUtils::swapNodesInElem(*new_elem, 3, 7);
1308 is_flipped = true;
1309 }
1310
1311 break;
1312 }
1313 case QUAD8:
1314 {
1315 new_elem = std::make_unique<Hex20>();
1316 new_elem->set_node(
1317 0, mesh->node_ptr(elem->node_ptr(0)->id() + (2 * current_layer * orig_nodes)));
1318 new_elem->set_node(
1319 1, mesh->node_ptr(elem->node_ptr(1)->id() + (2 * current_layer * orig_nodes)));
1320 new_elem->set_node(
1321 2, mesh->node_ptr(elem->node_ptr(2)->id() + (2 * current_layer * orig_nodes)));
1322 new_elem->set_node(
1323 3, mesh->node_ptr(elem->node_ptr(3)->id() + (2 * current_layer * orig_nodes)));
1324 new_elem->set_node(
1325 4,
1326 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 2) * orig_nodes)));
1327 new_elem->set_node(
1328 5,
1329 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 2) * orig_nodes)));
1330 new_elem->set_node(
1331 6,
1332 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 2) * orig_nodes)));
1333 new_elem->set_node(
1334 7,
1335 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 2) * orig_nodes)));
1336 new_elem->set_node(
1337 8, mesh->node_ptr(elem->node_ptr(4)->id() + (2 * current_layer * orig_nodes)));
1338 new_elem->set_node(
1339 9, mesh->node_ptr(elem->node_ptr(5)->id() + (2 * current_layer * orig_nodes)));
1340 new_elem->set_node(
1341 10, mesh->node_ptr(elem->node_ptr(6)->id() + (2 * current_layer * orig_nodes)));
1342 new_elem->set_node(
1343 11, mesh->node_ptr(elem->node_ptr(7)->id() + (2 * current_layer * orig_nodes)));
1344 new_elem->set_node(
1345 12,
1346 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 1) * orig_nodes)));
1347 new_elem->set_node(
1348 13,
1349 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 1) * orig_nodes)));
1350 new_elem->set_node(
1351 14,
1352 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 1) * orig_nodes)));
1353 new_elem->set_node(
1354 15,
1355 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 1) * orig_nodes)));
1356 new_elem->set_node(
1357 16,
1358 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 2) * orig_nodes)));
1359 new_elem->set_node(
1360 17,
1361 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 2) * orig_nodes)));
1362 new_elem->set_node(
1363 18,
1364 mesh->node_ptr(elem->node_ptr(6)->id() + ((2 * current_layer + 2) * orig_nodes)));
1365 new_elem->set_node(
1366 19,
1367 mesh->node_ptr(elem->node_ptr(7)->id() + ((2 * current_layer + 2) * orig_nodes)));
1368
1369 if (elem->neighbor_ptr(0) == remote_elem)
1370 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1371 if (elem->neighbor_ptr(1) == remote_elem)
1372 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1373 if (elem->neighbor_ptr(2) == remote_elem)
1374 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1375 if (elem->neighbor_ptr(3) == remote_elem)
1376 new_elem->set_neighbor(4, const_cast<RemoteElem *>(remote_elem));
1377
1378 if (new_elem->volume() < 0.0)
1379 {
1380 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 4);
1381 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 5);
1382 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 6);
1383 MooseMeshUtils::swapNodesInElem(*new_elem, 3, 7);
1384 MooseMeshUtils::swapNodesInElem(*new_elem, 8, 16);
1385 MooseMeshUtils::swapNodesInElem(*new_elem, 9, 17);
1386 MooseMeshUtils::swapNodesInElem(*new_elem, 10, 18);
1387 MooseMeshUtils::swapNodesInElem(*new_elem, 11, 19);
1388 is_flipped = true;
1389 }
1390
1391 break;
1392 }
1393 case QUAD9:
1394 {
1395 new_elem = std::make_unique<Hex27>();
1396 new_elem->set_node(
1397 0, mesh->node_ptr(elem->node_ptr(0)->id() + (2 * current_layer * orig_nodes)));
1398 new_elem->set_node(
1399 1, mesh->node_ptr(elem->node_ptr(1)->id() + (2 * current_layer * orig_nodes)));
1400 new_elem->set_node(
1401 2, mesh->node_ptr(elem->node_ptr(2)->id() + (2 * current_layer * orig_nodes)));
1402 new_elem->set_node(
1403 3, mesh->node_ptr(elem->node_ptr(3)->id() + (2 * current_layer * orig_nodes)));
1404 new_elem->set_node(
1405 4,
1406 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 2) * orig_nodes)));
1407 new_elem->set_node(
1408 5,
1409 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 2) * orig_nodes)));
1410 new_elem->set_node(
1411 6,
1412 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 2) * orig_nodes)));
1413 new_elem->set_node(
1414 7,
1415 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 2) * orig_nodes)));
1416 new_elem->set_node(
1417 8, mesh->node_ptr(elem->node_ptr(4)->id() + (2 * current_layer * orig_nodes)));
1418 new_elem->set_node(
1419 9, mesh->node_ptr(elem->node_ptr(5)->id() + (2 * current_layer * orig_nodes)));
1420 new_elem->set_node(
1421 10, mesh->node_ptr(elem->node_ptr(6)->id() + (2 * current_layer * orig_nodes)));
1422 new_elem->set_node(
1423 11, mesh->node_ptr(elem->node_ptr(7)->id() + (2 * current_layer * orig_nodes)));
1424 new_elem->set_node(
1425 12,
1426 mesh->node_ptr(elem->node_ptr(0)->id() + ((2 * current_layer + 1) * orig_nodes)));
1427 new_elem->set_node(
1428 13,
1429 mesh->node_ptr(elem->node_ptr(1)->id() + ((2 * current_layer + 1) * orig_nodes)));
1430 new_elem->set_node(
1431 14,
1432 mesh->node_ptr(elem->node_ptr(2)->id() + ((2 * current_layer + 1) * orig_nodes)));
1433 new_elem->set_node(
1434 15,
1435 mesh->node_ptr(elem->node_ptr(3)->id() + ((2 * current_layer + 1) * orig_nodes)));
1436 new_elem->set_node(
1437 16,
1438 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 2) * orig_nodes)));
1439 new_elem->set_node(
1440 17,
1441 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 2) * orig_nodes)));
1442 new_elem->set_node(
1443 18,
1444 mesh->node_ptr(elem->node_ptr(6)->id() + ((2 * current_layer + 2) * orig_nodes)));
1445 new_elem->set_node(
1446 19,
1447 mesh->node_ptr(elem->node_ptr(7)->id() + ((2 * current_layer + 2) * orig_nodes)));
1448 new_elem->set_node(
1449 20, mesh->node_ptr(elem->node_ptr(8)->id() + (2 * current_layer * orig_nodes)));
1450 new_elem->set_node(
1451 21,
1452 mesh->node_ptr(elem->node_ptr(4)->id() + ((2 * current_layer + 1) * orig_nodes)));
1453 new_elem->set_node(
1454 22,
1455 mesh->node_ptr(elem->node_ptr(5)->id() + ((2 * current_layer + 1) * orig_nodes)));
1456 new_elem->set_node(
1457 23,
1458 mesh->node_ptr(elem->node_ptr(6)->id() + ((2 * current_layer + 1) * orig_nodes)));
1459 new_elem->set_node(
1460 24,
1461 mesh->node_ptr(elem->node_ptr(7)->id() + ((2 * current_layer + 1) * orig_nodes)));
1462 new_elem->set_node(
1463 25,
1464 mesh->node_ptr(elem->node_ptr(8)->id() + ((2 * current_layer + 2) * orig_nodes)));
1465 new_elem->set_node(
1466 26,
1467 mesh->node_ptr(elem->node_ptr(8)->id() + ((2 * current_layer + 1) * orig_nodes)));
1468
1469 if (elem->neighbor_ptr(0) == remote_elem)
1470 new_elem->set_neighbor(1, const_cast<RemoteElem *>(remote_elem));
1471 if (elem->neighbor_ptr(1) == remote_elem)
1472 new_elem->set_neighbor(2, const_cast<RemoteElem *>(remote_elem));
1473 if (elem->neighbor_ptr(2) == remote_elem)
1474 new_elem->set_neighbor(3, const_cast<RemoteElem *>(remote_elem));
1475 if (elem->neighbor_ptr(3) == remote_elem)
1476 new_elem->set_neighbor(4, const_cast<RemoteElem *>(remote_elem));
1477
1478 if (new_elem->volume() < 0.0)
1479 {
1480 MooseMeshUtils::swapNodesInElem(*new_elem, 0, 4);
1481 MooseMeshUtils::swapNodesInElem(*new_elem, 1, 5);
1482 MooseMeshUtils::swapNodesInElem(*new_elem, 2, 6);
1483 MooseMeshUtils::swapNodesInElem(*new_elem, 3, 7);
1484 MooseMeshUtils::swapNodesInElem(*new_elem, 8, 16);
1485 MooseMeshUtils::swapNodesInElem(*new_elem, 9, 17);
1486 MooseMeshUtils::swapNodesInElem(*new_elem, 10, 18);
1487 MooseMeshUtils::swapNodesInElem(*new_elem, 11, 19);
1488 MooseMeshUtils::swapNodesInElem(*new_elem, 20, 25);
1489 is_flipped = true;
1490 }
1491
1492 break;
1493 }
1494 case libMesh::C0POLYGON:
1495 {
1496 has_polygons = true;
1497 const auto num_sides = elem->n_sides();
1498 std::vector<std::shared_ptr<libMesh::Polygon>> sides;
1499 sides.reserve(2 + num_sides);
1500 if (2 * elem->n_nodes() > libMesh::C0Polygon::max_n_nodes)
1501 mooseError("Too many nodes in polygons to extrude it. Max number of the prism "
1502 "polyhedral nodes after extrusion: " +
1503 std::to_string(libMesh::C0Polygon::max_n_nodes));
1504 // Make a copy of the original element to use as a side
1505 auto new_ptr = std::make_shared<libMesh::C0Polygon>(num_sides);
1506 for (const auto node_i : make_range(elem->n_nodes()))
1507 {
1508 // This one will be oriented outwards, it should be OK though, polyhedron code does
1509 // not mind
1510 new_ptr->set_node(
1511 node_i,
1512 mesh->node_ptr(elem->node_ptr(node_i)->id() + (current_layer * orig_nodes)));
1513 }
1514 sides.push_back(new_ptr);
1515 // Form the next horizontal side
1516 auto translated_side = std::make_shared<libMesh::C0Polygon>(num_sides);
1517 for (const auto node_i : make_range(elem->n_nodes()))
1518 translated_side->set_node(node_i,
1519 mesh->node_ptr(elem->node_ptr(node_i)->id() +
1520 ((current_layer + 1) * orig_nodes)));
1521 sides.push_back(translated_side);
1522
1523 // Form the vertical sides
1524 for (const auto side_i : make_range(num_sides))
1525 {
1526 // If the side already exists, use that
1527 std::array<unsigned int, 3> side_key = {
1528 current_layer,
1529 static_cast<unsigned int>(
1530 std::min(elem->node_ptr(side_i)->id(),
1531 elem->node_ptr((side_i + 1) % num_sides)->id())),
1532 static_cast<unsigned int>(
1533 std::max(elem->node_ptr(side_i)->id(),
1534 elem->node_ptr((side_i + 1) % num_sides)->id()))};
1535 if (poly_extruded_sides.count(side_key))
1536 {
1537 sides.push_back(poly_extruded_sides[side_key]);
1538 continue;
1539 }
1540
1541 // They are all quads, but constructor expects polygons
1542 auto vert_side = std::make_shared<libMesh::C0Polygon>(4);
1543 vert_side->set_node(
1544 0, mesh->node_ptr(elem->node_ptr(side_i)->id() + (current_layer * orig_nodes)));
1545 vert_side->set_node(1,
1546 mesh->node_ptr(elem->node_ptr((side_i + 1) % num_sides)->id() +
1547 (current_layer * orig_nodes)));
1548 vert_side->set_node(2,
1549 mesh->node_ptr(elem->node_ptr((side_i + 1) % num_sides)->id() +
1550 ((current_layer + 1) * orig_nodes)));
1551 vert_side->set_node(3,
1552 mesh->node_ptr(elem->node_ptr(side_i)->id() +
1553 ((current_layer + 1) * orig_nodes)));
1554 sides.push_back(vert_side);
1555
1556 poly_extruded_sides.insert(std::make_pair(side_key, vert_side));
1557 }
1558 mooseAssert(sides.size() == 2 + num_sides, "Unexpected size of side vector");
1559
1560 // Create the element from the sides, let libMesh figure out the orientation
1561 std::unique_ptr<libMesh::Node> mid_elem_node;
1562 new_elem = std::make_unique<libMesh::C0Polyhedron>(sides, mid_elem_node);
1563 if (mid_elem_node)
1564 {
1565#ifdef LIBMESH_ENABLE_UNIQUE_ID
1566 // Number it at the end for convenience
1567 // use the element ID to be able to set in parallel
1568 unsigned int total_new_node_layers = total_num_layers * order;
1569 unsigned int last_uid = orig_unique_ids + (total_new_node_layers - 1) * orig_elem +
1570 total_new_node_layers * orig_nodes + elem->unique_id();
1571 mid_elem_node->set_unique_id(last_uid);
1572 has_poly_midnodes = true;
1573#endif
1574 mesh->add_node(std::move(mid_elem_node));
1575 }
1576
1577 break;
1578 }
1579 default:
1580 mooseError("Extrusion is not implemented for element type " + Moose::stringify(etype));
1581 }
1582
1583 new_elem->set_id(elem->id() + (current_layer * orig_elem));
1584 new_elem->processor_id() = elem->processor_id();
1585
1586#ifdef LIBMESH_ENABLE_UNIQUE_ID
1587 // Let's give the base of the extruded mesh the same
1588 // unique_ids as the source mesh, in case anyone finds that
1589 // a useful map to preserve.
1590 const unique_id_type uid = (current_layer == 0)
1591 ? elem->unique_id()
1592 : orig_unique_ids +
1593 (current_layer - 1) * (orig_elem + orig_nodes) +
1594 orig_nodes + elem->id();
1595
1596 new_elem->set_unique_id(uid);
1597#endif
1598
1599 // maintain the subdomain_id
1600 new_elem->subdomain_id() = elem->subdomain_id();
1601
1602 // define upward boundaries
1603 if (k == num_layers - 1)
1604 {
1605 // Identify the side index of the new element that is part of the upward boundary
1606 const unsigned short top_id =
1607 new_elem->dim() == 3 ? cast_int<unsigned short>(elem->n_sides() + 1) : 2;
1608 // Assign sideset id to the side if the element belongs to a specified
1609 // upward_boundary_source_blocks
1611 for (unsigned int i = 0; i < _upward_boundary_source_blocks[e].size(); i++)
1612 if (new_elem->subdomain_id() == _upward_boundary_source_blocks[e][i])
1613 boundary_info.add_side(
1614 new_elem.get(), is_flipped ? 0 : top_id, _upward_boundary_ids[e][i]);
1615 }
1616 // define downward boundaries
1617 if (k == 0)
1618 {
1619 const unsigned short top_id =
1620 new_elem->dim() == 3 ? cast_int<unsigned short>(elem->n_sides() + 1) : 2;
1622 for (unsigned int i = 0; i < _downward_boundary_source_blocks[e].size(); i++)
1623 if (new_elem->subdomain_id() == _downward_boundary_source_blocks[e][i])
1624 boundary_info.add_side(
1625 new_elem.get(), is_flipped ? top_id : 0, _downward_boundary_ids[e][i]);
1626 }
1627
1628 // perform subdomain swaps
1629 if (_subdomain_swap_pairs.size())
1630 {
1631 auto & elevation_swap_pairs = _subdomain_swap_pairs[e];
1632
1633 auto new_id_it = elevation_swap_pairs.find(elem->subdomain_id());
1634
1635 if (new_id_it != elevation_swap_pairs.end())
1636 new_elem->subdomain_id() = new_id_it->second;
1637 }
1638
1639 Elem * added_elem = mesh->add_elem(std::move(new_elem));
1640
1641 // maintain extra integers
1642 for (unsigned int i = 0; i < num_extra_elem_integers; i++)
1643 added_elem->set_extra_integer(i, elem->get_extra_integer(i));
1644
1645 if (_elem_integers_swap_pairs.size())
1646 {
1647 for (unsigned int i = 0; i < _elem_integer_indices_to_swap.size(); i++)
1648 {
1649 auto & elevation_extra_swap_pairs = _elem_integers_swap_pairs[i * _heights.size() + e];
1650
1651 auto new_extra_id_it = elevation_extra_swap_pairs.find(
1652 elem->get_extra_integer(_elem_integer_indices_to_swap[i]));
1653
1654 if (new_extra_id_it != elevation_extra_swap_pairs.end())
1655 added_elem->set_extra_integer(_elem_integer_indices_to_swap[i],
1656 new_extra_id_it->second);
1657 }
1658 }
1659
1660 // Copy any old boundary ids on all sides
1661 for (auto s : elem->side_index_range())
1662 {
1663 input_boundary_info.boundary_ids(elem, s, ids_to_copy);
1664
1665 if (added_elem->dim() == 3)
1666 {
1667 // For 2D->3D extrusion, we give the boundary IDs
1668 // for side s on the old element to side s+1 on the
1669 // new element. This is just a happy coincidence as
1670 // far as I can tell...
1671 if (_boundary_swap_pairs.empty())
1672 boundary_info.add_side(added_elem, cast_int<unsigned short>(s + 1), ids_to_copy);
1673 else
1674 for (const auto & id_to_copy : ids_to_copy)
1675 boundary_info.add_side(added_elem,
1676 cast_int<unsigned short>(s + 1),
1677 _boundary_swap_pairs[e].count(id_to_copy)
1678 ? _boundary_swap_pairs[e][id_to_copy]
1679 : id_to_copy);
1680 }
1681 else
1682 {
1683 // For 1D->2D extrusion, the boundary IDs map as:
1684 // Old elem -> New elem
1685 // 0 -> 3
1686 // 1 -> 1
1687 libmesh_assert_less(s, 2);
1688 const unsigned short sidemap[2] = {3, 1};
1689 if (_boundary_swap_pairs.empty())
1690 boundary_info.add_side(added_elem, sidemap[s], ids_to_copy);
1691 else
1692 for (const auto & id_to_copy : ids_to_copy)
1693 boundary_info.add_side(added_elem,
1694 sidemap[s],
1695 _boundary_swap_pairs[e].count(id_to_copy)
1696 ? _boundary_swap_pairs[e][id_to_copy]
1697 : id_to_copy);
1698 }
1699
1700 // Add the extruded exterior sides and their nodes to the side boundary
1701 if (_has_side_boundary && !elem->neighbor_ptr(s))
1702 {
1703 const unsigned short new_side =
1704 added_elem->dim() == 3 ? cast_int<unsigned short>(s + 1) : (s == 0 ? 3 : 1);
1705 boundary_info.add_side(added_elem, new_side, user_side_boundary_id);
1706 for (const auto n : added_elem->nodes_on_side(new_side))
1707 boundary_info.add_node(added_elem->node_ptr(n), user_side_boundary_id);
1708 }
1709 }
1710
1711 // Give new boundary ids to bottom and top
1712 if (current_layer == 0)
1713 {
1714 const unsigned short top_id =
1715 added_elem->dim() == 3 ? cast_int<unsigned short>(elem->n_sides() + 1) : 2;
1717 {
1718 mooseAssert(user_bottom_boundary_id != libMesh::BoundaryInfo::invalid_id,
1719 "We should have retrieved a proper boundary ID");
1720 boundary_info.add_side(added_elem, is_flipped ? top_id : 0, user_bottom_boundary_id);
1721 }
1722 else
1723 boundary_info.add_side(added_elem, is_flipped ? top_id : 0, next_side_id);
1724 }
1725
1726 if (current_layer == total_num_layers - 1)
1727 {
1728 // For 2D->3D extrusion, the "top" ID is 1+the original
1729 // element's number of sides. For 1D->2D extrusion, the
1730 // "top" ID is side 2.
1731 const unsigned short top_id =
1732 added_elem->dim() == 3 ? cast_int<unsigned short>(elem->n_sides() + 1) : 2;
1733
1735 {
1736 mooseAssert(user_top_boundary_id != libMesh::BoundaryInfo::invalid_id,
1737 "We should have retrieved a proper boundary ID");
1738 boundary_info.add_side(added_elem, is_flipped ? 0 : top_id, user_top_boundary_id);
1739 }
1740 else
1741 boundary_info.add_side(
1742 added_elem, is_flipped ? 0 : top_id, cast_int<boundary_id_type>(next_side_id + 1));
1743 }
1744
1745 current_layer++;
1746 }
1747 }
1748 }
1749
1750 if (has_polygons && !input->is_serial())
1751 mooseError("Distributed meshes are not supported when extruding polygons at this time.");
1752
1753#ifdef LIBMESH_ENABLE_UNIQUE_ID
1754 // Update the value of next_unique_id based on newly created nodes and elements
1755 // Note: Number of element layers is one less than number of node layers
1756 unsigned int total_new_node_layers = total_num_layers * order;
1757 unsigned int new_unique_ids = orig_unique_ids + (total_new_node_layers - 1) * orig_elem +
1758 total_new_node_layers * orig_nodes;
1759 // Maximum case for the unique ids: all poly elements have a midnode
1760 if (has_poly_midnodes)
1761 new_unique_ids += orig_elem;
1762 mesh->set_next_unique_id(new_unique_ids);
1763#endif
1764
1765 // Copy all the subdomain/sideset/nodeset name maps to the extruded mesh
1766 if (!input_subdomain_map.empty())
1767 mesh->set_subdomain_name_map().insert(input_subdomain_map.begin(), input_subdomain_map.end());
1768 for (const auto & [subdomain_name, subdomain_id] : new_subdomain_ids)
1769 mesh->set_subdomain_name(subdomain_id, subdomain_name, true);
1770 if (!input_sideset_map.empty())
1771 mesh->get_boundary_info().set_sideset_name_map().insert(input_sideset_map.begin(),
1772 input_sideset_map.end());
1773 if (!input_nodeset_map.empty())
1774 mesh->get_boundary_info().set_nodeset_name_map().insert(input_nodeset_map.begin(),
1775 input_nodeset_map.end());
1776
1777 for (const auto i : index_range(new_boundary_names))
1778 boundary_info.sideset_name(new_boundary_ids[i]) = new_boundary_names[i];
1780 boundary_info.nodeset_name(user_side_boundary_id) = _side_boundary;
1781
1782 mesh->unset_is_prepared();
1783 // Creating the layered meshes creates a lot of leftover nodes, notably in the boundary_info,
1784 // which will crash both paraview and trigger exodiff. Best to be safe.
1785 if (extruding_quad_eights)
1786 mesh->prepare_for_use();
1787
1788 return mesh;
1789}
unsigned int count
Definition MortarUtils.C:53
for(PetscInt i=0;i< nvars;++i)
char ** sides
char ** blocks
std::unordered_map< dof_id_type, Point > computeNodeNormals(const MeshBase &input) const
Compute, for each node, the extrusion direction as the JxW-weighted average of the normals,...
std::vector< std::unordered_map< subdomain_id_type, subdomain_id_type > > _subdomain_swap_pairs
Easier to work with version of _sudomain_swaps.
Real radialExpansionRatio(const Real t) const
Calculate the share of the radial expansion to apply at the local node This share goes from 0 at the ...
std::vector< unsigned int > _elem_integer_indices_to_swap
std::unique_ptr< MeshBase > buildMeshBaseObject(unsigned int dim=libMesh::invalid_uint)
Build a MeshBase object whose underlying type will be determined by the Mesh input file block.
static const boundary_id_type invalid_id
static const unsigned int max_n_nodes
TypeVector< typename CompareTypes< T, T2 >::supertype > cross(const TypeVector< T2 > &v) const
LIBMESH_DEVICE_INLINE void zero()
auto norm_sq() const
MeshBase & mesh
auto max(const L &left, const R &right)
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template * sin(_arg) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(tan
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template cos(_arg) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(cos
std::set< std::pair< BoundaryName, BoundaryID > > getAllBoundaryNamesAndIDs(const libMesh::MeshBase &mesh)
Get all boundary names and IDs from a mesh.
bool hasBoundaryID(const MeshBase &input_mesh, const BoundaryID id)
Whether a particular boundary ID exists in the mesh.
bool hasSubdomainName(const MeshBase &input_mesh, const SubdomainName &name)
Whether a particular subdomain name exists in the mesh.
std::set< std::pair< SubdomainName, SubdomainID > > getAllSubdomainNamesAndIDs(const libMesh::MeshBase &mesh)
Get all subdomain names and ids from a mesh.
bool hasSubdomainID(const MeshBase &input_mesh, const SubdomainID &id)
Whether a particular subdomain ID exists in the mesh.
std::vector< BoundaryID > getBoundaryIDs(const libMesh::MeshBase &mesh, const std::vector< BoundaryName > &boundary_name, bool generate_unknown, const std::set< BoundaryID > &mesh_boundary_ids)
Gets the boundary IDs with their names.
void swapNodesInElem(Elem &elem, const unsigned int nd1, const unsigned int nd2)
Swap two nodes within an element.
SubdomainID getNextFreeSubdomainID(MeshBase &input_mesh)
Checks input mesh and returns max(block ID) + 1, which represents a block ID that is not currently in...
SubdomainID getSubdomainID(const SubdomainName &subdomain_name, const MeshBase &mesh)
Gets the subdomain ID associated with the given SubdomainName.
Point meshCentroidCalculator(const MeshBase &mesh)
Calculates the centroid of a MeshBase.
Real computeMaxDistanceToAxis(const MeshBase &mesh, const Point &origin, const RealVectorValue &direction)
Computes the maximum distance from all nodes of a mesh to a general axis.
void swap(std::vector< T > &data, const std::size_t idx0, const std::size_t idx1, const libMesh::Parallel::Communicator &comm)
Swap function for serial or distributed vector of data.
Definition Shuffle.h:495
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
std::string stringify(MOOSEIOType type)
Definition NEML2Utils.C:56
Tnew cast_int(Told oldvar)
LIBMESH_DEVICE_INLINE auto row(const TensorLike &T_in, const unsigned int i) -> std::enable_if_t< is_tensor_like_v< TensorLike >, std::conditional_t< std::is_void< ResultVector >::value, libMesh::TypeVector< typename TensorLike::value_type >, ResultVector > >
void elem_types(const MeshBase &mesh, std::vector< ElemType > &et)
Real volume(const MeshBase &mesh, unsigned int dim=libMesh::invalid_uint)
uint8_t unique_id_type
libmesh_assert(ctx)
const unsigned int invalid_uint
const Real pi
IntRange< T > make_range(T beg, T end)
MooseUnits pow(const MooseUnits &, int)
Definition Units.C:537
const boundary_id_type top_id
const dof_id_type n_nodes

◆ generateCSG()

std::unique_ptr< CSG::CSGBase > MeshGenerator::generateCSG ( )
protectedvirtualinherited

Generate the CSG representation of the mesh (or meshing operation) created by this mesh generator.

Definition at line 537 of file MeshGenerator.C.

538{
539 mooseAssert(!hasGenerateCSG(), "Inconsistent flag");
540 mooseError("This MeshGenerator does not have a generateCSG() implementation.");
541}

Referenced by MeshGenerator::generateInternalCSG().

◆ generateData()

void MeshGenerator::generateData ( )
protectedvirtualinherited

Generate the mesh data.

Reimplemented in AddMetaDataGenerator.

Definition at line 530 of file MeshGenerator.C.

531{
532 mooseAssert(!hasGenerateData(), "Inconsistent flag");
533 mooseError("This MeshGenerator does not have a generateData() implementation.");
534}
bool hasGenerateData() const

Referenced by MeshGenerator::generateInternal().

◆ generateInternal()

std::unique_ptr< MeshBase > MeshGenerator::generateInternal ( )
inherited

Internal generation method - this is what is actually called within MooseApp to execute the MeshGenerator.

Definition at line 340 of file MeshGenerator.C.

341{
342 libmesh_parallel_only(comm());
343 mooseAssert(comm().verify(type() + name()), "Inconsistent execution ordering");
344
345 if (hasGenerateData())
346 generateData();
347
348 if (isDataOnly())
349 return nullptr;
350
351 auto mesh = generate();
352 if (!mesh)
353 mooseError("A mesh was not generated by this generator (it was nullptr).");
354
355 for (const auto & [requested_name, requested_mesh] : _requested_meshes)
356 if (*requested_mesh)
358 "The mesh from input ",
359 _app.getMeshGenerator(requested_name).type(),
360 " '",
361 _app.getMeshGenerator(requested_name).name(),
362 "' was not moved.\n\nThe MeshGenerator system requires that the memory from all input "
363 "meshes\nare managed by the requesting MeshGenerator during the generate phase.\n\nThis "
364 "is achieved with a std::move() operation within the generate() method.");
365
366 if (getParam<bool>("show_info"))
367 {
368 if (!mesh->is_prepared())
369 mesh->prepare_for_use();
370
371 const auto mesh_info = mesh->get_info(/* verbosity = */ 2);
372
373 // We will prefix all information with "type() 'name()':" because this could potentially
374 // output a ton of information and looks a bit better with a prefix
375 std::stringstream oss;
376 const auto split = MooseUtils::split(mesh_info, "\n");
377 if (split.size())
378 for (std::size_t i = 0; i < split.size() - 1; ++i) // ignore the last line break
379 oss << COLOR_CYAN << "" << type() << " '" << name() << "': " << COLOR_DEFAULT << split[i]
380 << std::endl;
381 _console << oss.str() << std::flush;
382 }
383
384 // output the current mesh block to file
385 if (hasOutput())
386 {
387 if (!mesh->is_prepared())
388 mesh->prepare_for_use();
389
390 if (!getParam<bool>("nemesis"))
391 {
392 libMesh::ExodusII_IO exio(*mesh);
393
394 if (mesh->mesh_dimension() == 1)
395 exio.write_as_dimension(3);
396
397 // Avoid truncating names
398 exio.set_max_name_length(80);
399
400 // Default to non-HDF5 output for wider compatibility
401 exio.set_hdf5_writing(false);
402
403 exio.write(name() + "_in.e");
404 }
405 else
406 {
407 libMesh::Nemesis_IO nemesis_io(*mesh);
408
409 // Default to non-HDF5 output for wider compatibility
410 nemesis_io.set_hdf5_writing(false);
411
412 nemesis_io.write(name() + "_in.e");
413 }
414 }
415
416 return mesh;
417}
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
virtual std::unique_ptr< MeshBase > generate()=0
Generate / modify the mesh.
std::vector< std::pair< std::string, std::unique_ptr< MeshBase > * > > _requested_meshes
The meshes that were requested by this MeshGenerator; used to verify that any input meshes that are r...
bool hasOutput() const
virtual void generateData()
Generate the mesh data.
const Parallel::Communicator & comm() const
std::vector< std::string > split(const std::string &str, const std::string &delimiter, std::size_t max_count)
tbb::split split

◆ generateInternalCSG()

std::unique_ptr< CSG::CSGBase > MeshGenerator::generateInternalCSG ( )
inherited

Internal generation method for CSG object generation.

Definition at line 420 of file MeshGenerator.C.

421{
422 mooseAssert(isDataOnly(), "Trying to use csg-only mode while not in data-driven mode");
423 auto csg_obj = generateCSG();
424 mooseAssert(csg_obj, "Null CSG object");
425 for (const auto & [requested_name, requested_csg] : _requested_csg_bases)
426 if (*requested_csg)
428 "The CSGBase object from input ",
429 _app.getMeshGenerator(requested_name).type(),
430 " '",
431 _app.getMeshGenerator(requested_name).name(),
432 "' was not moved.\n\nThe MeshGenerator system requires that the memory from all input "
433 "meshes\nare managed by the requesting MeshGenerator during the generate phase.\n\nThis "
434 "is achieved with a std::move() operation within the generateCSG() method.");
435
436 return csg_obj;
437}
virtual std::unique_ptr< CSG::CSGBase > generateCSG()
Generate the CSG representation of the mesh (or meshing operation) created by this mesh generator.
std::vector< std::pair< std::string, std::unique_ptr< CSG::CSGBase > * > > _requested_csg_bases
The CSGBase objects that were requested by this MeshGenerator; used to verify that any input meshes t...

◆ getBase()

const std::string & MooseBase::getBase ( ) const
inlineinherited
Returns
The registered base for this object (set via InputParameters::registerBase())

Definition at line 147 of file MooseBase.h.

147{ return _pars.getBase(); }
const std::string & getBase() const

Referenced by MooseBase::uniqueParameterName().

◆ getCheckedPointerParam()

template<typename T >
T MooseBase::getCheckedPointerParam ( const std::string &  name,
const std::string &  error_string = "" 
) const
inherited

Verifies that the requested parameter exists and is not NULL and returns it to the caller.

The template parameter must be a pointer or an error will be thrown.

Definition at line 450 of file MooseBase.h.

451{
452 return _pars.getCheckedPointerParam<T>(name, error_string);
453}
T getCheckedPointerParam(const std::string &name, const std::string &error_string="") const
Verifies that the requested parameter exists and is not NULL and returns it to the caller.

◆ getChildMeshGenerators()

const std::set< const MeshGenerator *, Comparator > & MeshGenerator::getChildMeshGenerators ( ) const
inlineinherited

Gets the MeshGenerators that are children to this MeshGenerator.

Definition at line 148 of file MeshGenerator.h.

149 {
151 }

Referenced by MeshGenerator::isChildMeshGenerator().

◆ getCSGBase()

std::unique_ptr< CSG::CSGBase > & MeshGenerator::getCSGBase ( const std::string &  param_name)
protectedinherited

Takes the name of a MeshGeneratorName parameter and then gets a pointer to the CSGBase object that MeshGenerator has created.

NOTE: You MUST catch this by reference!

Parameters
param_nameThe name of the parameter that contains the name of the MeshGenerator
Returns
The CSGBase object generated by that MeshGenerator

Definition at line 253 of file MeshGenerator.C.

254{
255 const MeshGeneratorName * name = getMeshGeneratorNameFromParam(param_name, false);
256 if (!name)
257 return _null_csg_base;
258 return getCSGBaseByName(*name);
259}
std::unique_ptr< CSG::CSGBase > & getCSGBaseByName(const MeshGeneratorName &mesh_generator_name)
Like getCSGBase(), but takes the name of another MeshGenerator directly.
std::unique_ptr< CSG::CSGBase > _null_csg_base
A nullptr to use for when inputs aren't specified.

◆ getCSGBaseByName()

std::unique_ptr< CSG::CSGBase > & MeshGenerator::getCSGBaseByName ( const MeshGeneratorName &  mesh_generator_name)
protectedinherited

Like getCSGBase(), but takes the name of another MeshGenerator directly.

NOTE: You MUST catch this by reference!

Parameters
mesh_generator_nameThe name of the MeshGenerator associated with the CSGBase object
Returns
The CSGBase pointer generated by that MeshGenerator

Definition at line 262 of file MeshGenerator.C.

263{
264 checkGetMesh(mesh_generator_name, "");
265 if (isNullMeshName(mesh_generator_name))
266 return _null_csg_base;
267
268 auto & csg_base = _app.getMeshGeneratorSystem().getCSGBaseGeneratorOutput(mesh_generator_name);
269 _requested_csg_bases.emplace_back(mesh_generator_name, &csg_base);
270 return csg_base;
271}
std::unique_ptr< CSG::CSGBase > & getCSGBaseGeneratorOutput(const MeshGeneratorName &name)
Returns the output CSGBase object associated with a particular mesh generator name.

Referenced by MeshGenerator::getCSGBase(), and MeshGenerator::getCSGBasesByName().

◆ getCSGBases()

std::vector< std::unique_ptr< CSG::CSGBase > * > MeshGenerator::getCSGBases ( const std::string &  param_name)
protectedinherited

Like getCSGBase(), but for multiple generators.

NOTE: You MUST catch this by reference!

Parameters
param_nameThe name of the parameter that contains the names of MeshGenerator objects
Returns
Vector of CSGBase pointers associated with input parameter

Definition at line 274 of file MeshGenerator.C.

275{
277}
std::vector< std::unique_ptr< CSG::CSGBase > * > getCSGBasesByName(const std::vector< MeshGeneratorName > &mesh_generator_names)
Like getCSGBaseByName(), but for multiple generators.

◆ getCSGBasesByName()

std::vector< std::unique_ptr< CSG::CSGBase > * > MeshGenerator::getCSGBasesByName ( const std::vector< MeshGeneratorName > &  mesh_generator_names)
protectedinherited

Like getCSGBaseByName(), but for multiple generators.

NOTE: You MUST catch this by reference!

Parameters
mesh_generator_namesThe names of MeshGenerator objects
Returns
Vector of CSGBase pointers associated with input parameter

Definition at line 280 of file MeshGenerator.C.

281{
282 std::vector<std::unique_ptr<CSG::CSGBase> *> csg_bases;
283 for (const auto & name : mesh_generator_names)
284 csg_bases.push_back(&getCSGBaseByName(name));
285 return csg_bases;
286}

Referenced by MeshGenerator::getCSGBases().

◆ getDataFileName()

std::string DataFileInterface::getDataFileName ( const std::string &  param) const
inherited

Deprecated method.

The data file paths are now automatically set within the InputParameters object, so using getParam<DataFileName>("param_name") is now sufficient.

Definition at line 21 of file DataFileInterface.C.

22{
23 _parent.mooseDeprecated("getDataFileName() is deprecated. The file path is now directly set "
24 "within the InputParameters.\nUse getParam<DataFileName>(\"",
25 param,
26 "\") instead.");
27 return _parent.getParam<DataFileName>(param);
28}
const ParallelParamObject & _parent
void mooseDeprecated(Args &&... args) const
Emits a deprecation warning prefixed with the object name and type, and a stack trace.
Definition MooseBase.h:317

◆ getDataFileNameByName()

std::string DataFileInterface::getDataFileNameByName ( const std::string &  relative_path) const
inherited

Deprecated method.

Use getDataFilePath() instead.

Definition at line 31 of file DataFileInterface.C.

32{
33 _parent.mooseDeprecated("getDataFileNameByName() is deprecated. Use getDataFilePath(\"",
34 relative_path,
35 "\") instead.");
36 return getDataFilePath(relative_path);
37}
std::string getDataFilePath(const std::string &relative_path) const
Returns the path of a data file for a given relative file path.

◆ getDataFilePath()

std::string DataFileInterface::getDataFilePath ( const std::string &  relative_path) const
inherited

Returns the path of a data file for a given relative file path.

This can be used for hardcoded datafile names and will search the same locations as getDataFileName

Definition at line 40 of file DataFileInterface.C.

41{
42 // This should only ever be used with relative paths. There is no point to
43 // use this search path with an absolute path.
44 if (std::filesystem::path(relative_path).is_absolute())
45 _parent.mooseWarning("While using getDataFilePath(\"",
46 relative_path,
47 "\"): This API should not be used for absolute paths.");
48
49 // This will search the data paths for this relative path
50 std::optional<std::string> error;
52 {
53 // Throw on error so that if getPath() fails, we can throw an error
54 // with the context of _parent.mooseError()
55 Moose::ScopedThrowOnError scoped_throw_on_error;
56
57 try
58 {
59 found_path = Moose::DataFileUtils::getPath(relative_path);
60 }
61 catch (std::exception & e)
62 {
63 error = e.what();
64 }
65 }
66
67 if (error)
68 _parent.mooseError(*error);
69
70 mooseAssert(found_path.context == Moose::DataFileUtils::Context::DATA,
71 "Should only ever obtain data");
72 mooseAssert(found_path.data_name, "Should be set");
73
74 const std::string msg =
75 "Using data file '" + found_path.path + "' from " + *found_path.data_name + " data";
76 _parent.mooseInfo(msg);
77
78 return found_path.path;
79}
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition MooseBase.h:299
void mooseInfo(Args &&... args) const
Definition MooseBase.h:334
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition Moose.h:308
@ DATA
From installed/in-tree data.
Path getPath(std::string path, const GetPathOptions &options={})
Get the data path for a given path, searching the registered data.
Representation of a data file path.
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Context context
Context for the file (where it came from)

Referenced by DataFileInterface::getDataFileNameByName().

◆ getHitNode() [1/2]

const hit::Node * MooseBase::getHitNode ( ) const
inlineinherited
Returns
The block-level hit node for this object, if any

Definition at line 136 of file MooseBase.h.

136{ return getHitNode(_pars); }

Referenced by MooseBase::callMooseError(), MooseBase::getHitNode(), and MooseBase::messagePrefix().

◆ getHitNode() [2/2]

const hit::Node * MooseBase::getHitNode ( const InputParameters &  params)
staticprivateinherited

Internal method for getting a hit node (if available) given a set of parameters.

Needs to be static so that we can call it externally from InputParameters for errors that do not have context of the MooseBase

Definition at line 167 of file MooseBase.C.

168{
169 if (const auto hit_node = params.getHitNode())
170 if (!hit_node->isRoot())
171 return hit_node;
172 return nullptr;
173}
const hit::Node * getHitNode(const std::string &param) const

◆ getMesh()

std::unique_ptr< MeshBase > & MeshGenerator::getMesh ( const std::string &  param_name,
const bool  allow_invalid = false 
)
protectedinherited

Takes the name of a MeshGeneratorName parameter and then gets a pointer to the Mesh that MeshGenerator is going to create.

That MeshGenerator is made to be a dependency of this one, so will generate() its mesh first.

Parameters
param_nameThe name of the parameter that contains the name of the MeshGenerator
allow_invalidIf true, will allow for invalid parameters and will return a nullptr mesh if said parameter does not exist
Returns
The Mesh generated by that MeshGenerator

NOTE: You MUST catch this by reference!

Definition at line 216 of file MeshGenerator.C.

217{
218 const MeshGeneratorName * name = getMeshGeneratorNameFromParam(param_name, allow_invalid);
219 if (!name)
220 return _null_mesh;
221 return getMeshByName(*name);
222}
std::unique_ptr< MeshBase > _null_mesh
A nullptr to use for when inputs aren't specified.
std::unique_ptr< MeshBase > & getMeshByName(const MeshGeneratorName &mesh_generator_name)
Like getMesh(), but takes the name of another MeshGenerator directly.

◆ getMeshByName()

std::unique_ptr< MeshBase > & MeshGenerator::getMeshByName ( const MeshGeneratorName &  mesh_generator_name)
protectedinherited

Like getMesh(), but takes the name of another MeshGenerator directly.

NOTE: You MUST catch this by reference!

Returns
The Mesh generated by that MeshGenerator

Definition at line 231 of file MeshGenerator.C.

232{
233 checkGetMesh(mesh_generator_name, "");
234 if (isNullMeshName(mesh_generator_name))
235 return _null_mesh;
236
237 _requested_mesh_generators.insert(mesh_generator_name);
238 auto & mesh = _app.getMeshGeneratorSystem().getMeshGeneratorOutput(mesh_generator_name);
239 _requested_meshes.emplace_back(mesh_generator_name, &mesh);
240 return mesh;
241}
std::unique_ptr< libMesh::MeshBase > & getMeshGeneratorOutput(const MeshGeneratorName &name)
Get a reference to a pointer that will be the output of the MeshGenerator named name.
std::set< MeshGeneratorName > _requested_mesh_generators
The names of the MeshGenerators that were requested in the getMesh methods.

Referenced by MeshGenerator::getMesh(), MeshGenerator::getMeshesByName(), OverlayMeshGenerator::OverlayMeshGenerator(), SideSetExtruderGenerator::SideSetExtruderGenerator(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ getMeshes()

std::vector< std::unique_ptr< MeshBase > * > MeshGenerator::getMeshes ( const std::string &  param_name)
protectedinherited

Like getMesh(), but for multiple generators.

Returns
The generated meshes

Definition at line 225 of file MeshGenerator.C.

226{
228}
std::vector< std::unique_ptr< MeshBase > * > getMeshesByName(const std::vector< MeshGeneratorName > &mesh_generator_names)
Like getMeshByName(), but for multiple generators.

◆ getMeshesByName()

std::vector< std::unique_ptr< MeshBase > * > MeshGenerator::getMeshesByName ( const std::vector< MeshGeneratorName > &  mesh_generator_names)
protectedinherited

Like getMeshByName(), but for multiple generators.

Returns
The generated meshes

Definition at line 244 of file MeshGenerator.C.

245{
246 std::vector<std::unique_ptr<MeshBase> *> meshes;
247 for (const auto & name : mesh_generator_names)
248 meshes.push_back(&getMeshByName(name));
249 return meshes;
250}

Referenced by MeshGenerator::getMeshes().

◆ getMeshGeneratorNameFromParam()

const MeshGeneratorName * MeshGenerator::getMeshGeneratorNameFromParam ( const std::string &  param_name,
const bool  allow_invalid 
) const
privateinherited

Helper for getting a MeshGeneratorName parameter.

Definition at line 106 of file MeshGenerator.C.

108{
109 const auto valid_param = isParamValid(param_name);
110 if (!allow_invalid)
111 {
112 if (!valid_param)
113 mooseError("Failed to get a parameter with the name \"",
114 param_name,
115 "\" when getting a MeshGenerator.",
116 "\n\nKnown parameters:\n",
117 _pars);
118 if (!_pars.isType<MeshGeneratorName>(param_name))
119 paramError(param_name,
120 "Parameter of type \"",
121 _pars.type(param_name),
122 "\" is not an expected type for getting a MeshGenerator (should be of type "
123 "\"MeshGeneratorName\")");
124 }
125 else if (!valid_param)
126 return nullptr;
127
128 const auto & name = getParam<MeshGeneratorName>(param_name);
129 checkGetMesh(name, param_name);
130
131 return &name;
132}
std::string type(const std::string &name) const
Prints the type of the requested parameter by name.
bool isType(const std::string &name) const

Referenced by MeshGenerator::declareMeshForSub(), MeshGenerator::getCSGBase(), and MeshGenerator::getMesh().

◆ getMeshGeneratorNamesFromParam()

const std::vector< MeshGeneratorName > & MeshGenerator::getMeshGeneratorNamesFromParam ( const std::string &  param_name) const
privateinherited

Helper for getting a std::vector<MeshGeneratorName> parameter.

Definition at line 135 of file MeshGenerator.C.

136{
137 if (!isParamValid(param_name))
138 mooseError("Failed to get a parameter with the name \"",
139 param_name,
140 "\" when getting MeshGenerators.",
141 "\n\nKnown parameters:\n",
142 _pars);
143 if (!_pars.isType<std::vector<MeshGeneratorName>>(param_name))
144 paramError(param_name,
145 "Parameter of type \"",
146 _pars.type(param_name),
147 "\" is not an expected type for getting MeshGenerators (should be of type "
148 "\"std::vector<MeshGeneratorName>\")");
149
150 const auto & names = getParam<std::vector<MeshGeneratorName>>(param_name);
151 for (const auto & name : names)
152 checkGetMesh(name, param_name);
153
154 return names;
155}

Referenced by MeshGenerator::declareMeshesForSub(), MeshGenerator::getCSGBases(), and MeshGenerator::getMeshes().

◆ getMeshProperty() [1/2]

template<typename T >
const T & MeshMetaDataInterface::getMeshProperty ( const std::string &  data_name)
inlineprotectedinherited

Definition at line 64 of file MeshMetaDataInterface.h.

65 {
66 return getMeshProperty<T>(data_name, meshPropertyPrefix(data_name));
67 }
virtual std::string meshPropertyPrefix(const std::string &data_name) const
The default prefix to use for getting/seeing if mesh properties exist.

◆ getMeshProperty() [2/2]

template<typename T >
const T & MeshMetaDataInterface::getMeshProperty ( const std::string &  data_name,
const std::string &  prefix 
)
protectedinherited

Method for retrieving a property with the given type and name exists in the mesh meta-data store.

This method will throw an error if the property does not exist.

Definition at line 142 of file MeshMetaDataInterface.h.

144{
145 if (!hasMeshProperty(data_name, prefix))
146 mooseErrorInternal("Failed to get mesh property '", prefix, "/", data_name, "'");
147
148 auto value = &getMeshPropertyInternal(data_name, prefix);
149 mooseAssert(value->declared(), "Value has not been declared");
150 const RestartableData<T> * T_value = dynamic_cast<const RestartableData<T> *>(value);
151 if (!T_value)
152 mooseErrorInternal("While retrieving mesh property '",
153 prefix,
154 "/",
155 data_name,
156 "' with type '",
157 MooseUtils::prettyCppType<T>(),
158 "',\nthe property exists with different type '",
159 value->type(),
160 "'");
161 return T_value->get();
162}
const RestartableDataValue & getMeshPropertyInternal(const std::string &data_name, const std::string &prefix) const
Helper for getting a mesh property.
void mooseErrorInternal(Args &&... args) const
Helper for forwarding a mooseError to an object's mooseError if it is available (said error will prov...
const T & get() const

◆ getMeshPropertyInternal()

const RestartableDataValue & MeshMetaDataInterface::getMeshPropertyInternal ( const std::string &  data_name,
const std::string &  prefix 
) const
privateinherited

Helper for getting a mesh property.

Definition at line 54 of file MeshMetaDataInterface.C.

56{
58 meshPropertyName(data_name, prefix), MooseApp::MESH_META_DATA, 0);
59}
MooseApp & _meta_data_app
Reference to the application.
RestartableDataValue & getRestartableMetaData(const std::string &name, const RestartableDataMapName &metaname, THREAD_ID tid)
Definition MooseApp.C:2520

Referenced by MeshMetaDataInterface::getMeshProperty(), and MeshMetaDataInterface::hasMeshProperty().

◆ getMooseApp()

MooseApp & MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

87{ return _app; }

Referenced by ChainControlSetupAction::act(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::advanceState(), ParsedChainControl::buildFunction(), MooseMesh::cacheChangedLists(), ReporterTransferInterface::checkHasReporterValue(), LinearFVGradientManager::checkRestartedGradientHistory(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Coupleable::checkWritableVar(), ComponentPhysicsInterface::ComponentPhysicsInterface(), Coupleable::Coupleable(), MortarInterfaceWarehouse::createMortarInterface(), EigenProblem::doFreeNonlinearPowerIterations(), GreaterThanLessThanPostprocessor::execute(), Terminator::execute(), WorkBalance::execute(), FEProblemSolve::FEProblemSolve(), RadialAverage::finalize(), SolutionInvalidInterface::flagInvalidSolutionInternal(), ChainControl::getChainControlDataSystem(), FEProblemBase::getDistribution(), FEProblemBase::getFunction(), FEProblemBase::getFVInterpolationMethod(), FEProblemBase::getMultiApp(), FEProblemBase::getSampler(), DefaultConvergenceBase::getSharedExecutionerParam(), FEProblemBase::getUserObjectBase(), FEProblemBase::getVectorPostprocessorObjectByName(), ChainControlDataPostprocessor::initialSetup(), MaterialPropertyInterface::MaterialPropertyInterface(), MooseLinearVariableFV< OutputType >::MooseLinearVariableFV(), MooseVariableDataFV< OutputType >::MooseVariableDataFV(), SubProblem::numThreads(), ProgressOutput::output(), PetscOutputInterface::petscLinearOutput(), PetscOutputInterface::petscNonlinearOutput(), Moose::PetscSupport::PetscOptionsScope::PetscOptionsScope(), PetscOutputInterface::PetscOutputInterface(), PostprocessorInterface::postprocessorsAdded(), MultiApp::preTransfer(), AuxiliarySystem::registerFVGradient(), Reporter::Reporter(), ReporterInterface::reportersAdded(), MultiApp::restore(), and VectorPostprocessorInterface::vectorPostprocessorsAdded().

◆ getParam() [1/2]

template<typename T >
const T & MooseBase::getParam ( const std::string &  name) const
inherited

Retrieve a parameter for the object.

Parameters
nameThe name of the parameter
Returns
The value of the parameter

Definition at line 406 of file MooseBase.h.

407{
408 return InputParameters::getParamHelper<T>(name, _pars);
409}

Referenced by CommonOutputAction::act(), CreateDisplacedProblemAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), CylinderComponent::addMeshGenerators(), FEProblemBase::addOutput(), ArrayParsedAux::ArrayParsedAux(), BicubicSplineFunction::BicubicSplineFunction(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), Console::Console(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DiffusionPhysicsBase::DiffusionPhysicsBase(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), MFEMEigenvaluesPostprocessor::execute(), FEProblemSolve::FEProblemSolve(), SurfaceDelaunayGeneratorBase::fillDelaunayOptions(), ParsedVectorReporter::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), ParsedSubdomainGeneratorBase::functionInitialize(), BlockDeletionGenerator::generate(), BoundaryLayerSubdomainGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FileMeshGenerator::generate(), MeshExtruderGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), GenericConstantRankTwoTensorTempl< is_ad >::GenericConstantRankTwoTensorTempl(), GenericConstantSymmetricRankTwoTensorTempl< is_ad >::GenericConstantSymmetricRankTwoTensorTempl(), GeometricSearchInterface::GeometricSearchInterface(), MooseApp::getCheckpointDirectories(), DataFileInterface::getDataFileName(), ExecutorInterface::getExecutor(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), AdvancedOutput::init(), FixedPointIterationAdaptiveDT::init(), TimeSequenceStepper::init(), AdvancedOutput::initAvailableLists(), AttribThread::initFrom(), AttribExecutionOrderGroup::initFrom(), AttribSysNum::initFrom(), AttribResidualObject::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), Console::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh::MooseMesh(), MooseVariableBase::MooseVariableBase(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), PerfGraphOutput::output(), Console::outputSystemInformation(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedElementDeletionGenerator::ParsedElementDeletionGenerator(), ParsedGenerateNodeset::ParsedGenerateNodeset(), ParsedGenerateSideset::ParsedGenerateSideset(), ParsedMaterialTempl< is_ad >::ParsedMaterialTempl(), ParsedNodeTransformGenerator::ParsedNodeTransformGenerator(), ParsedODEKernel::ParsedODEKernel(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedVectorReporter::ParsedVectorReporter(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), ReferenceResidualInterface::ReferenceResidualInterface(), Moose::FV::setInterpolationMethod(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), PetscOutput::solveSetup(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorOfPostprocessors::VectorOfPostprocessors(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ getParam() [2/2]

template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > MooseBase::getParam ( const std::string &  param1,
const std::string &  param2 
) const
inherited

Retrieve two parameters and provide pair of parameters for the object.

Parameters
param1The name of first parameter
param2The name of second parameter
Returns
Vector of pairs of first and second parameters

Definition at line 443 of file MooseBase.h.

444{
445 return _pars.get<T1, T2>(param1, param2);
446}

◆ getParentMeshGenerators()

const std::set< const MeshGenerator *, Comparator > & MeshGenerator::getParentMeshGenerators ( ) const
inlineinherited

Gets the MeshGenerators that are parents to this MeshGenerator.

Definition at line 141 of file MeshGenerator.h.

142 {
144 }

Referenced by MeshGeneratorSystem::createMeshGeneratorOrder(), and MeshGenerator::isParentMeshGenerator().

◆ getRenamedParam()

template<typename T >
const T & MooseBase::getRenamedParam ( const std::string &  old_name,
const std::string &  new_name 
) const
inherited

Retrieve a renamed parameter for the object.

This helper makes sure we check both names before erroring, and that only one parameter is passed to avoid silent errors

Parameters
old_namethe old name for the parameter
new_namethe new name for the parameter

Definition at line 420 of file MooseBase.h.

421{
422 // Most important: accept new parameter
423 if (isParamSetByUser(new_name) && !isParamValid(old_name))
424 return getParam<T>(new_name);
425 // Second most: accept old parameter
426 if (isParamValid(old_name) && !isParamSetByUser(new_name))
427 return getParam<T>(old_name);
428 // Third most: accept default for new parameter
429 if (isParamValid(new_name) && !isParamValid(old_name))
430 return getParam<T>(new_name);
431 // Refuse: no default, no value passed
432 if (!isParamValid(old_name) && !isParamValid(new_name))
433 mooseError("parameter '" + new_name +
434 "' is being retrieved without being set.\nDid you misspell it?");
435 // Refuse: both old and new parameters set by user
436 else
437 mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
438 old_name + "'");
439}

◆ getRequestedMeshGenerators()

const std::set< MeshGeneratorName > & MeshGenerator::getRequestedMeshGenerators ( ) const
inlineinherited
Returns
The names of the MeshGenerators that were requested in the getMesh methods

Definition at line 99 of file MeshGenerator.h.

100 {
102 }

◆ getRequestedMeshGeneratorsForSub()

const std::set< MeshGeneratorName > & MeshGenerator::getRequestedMeshGeneratorsForSub ( ) const
inlineinherited
Returns
The names of the MeshGenerators that were requested in the declareMeshForSub methods

Definition at line 107 of file MeshGenerator.h.

108 {
110 }

◆ getSavedMeshName()

const std::string & MeshGenerator::getSavedMeshName ( ) const
inherited

Return the name of the saved mesh.

Definition at line 524 of file MeshGenerator.C.

525{
526 return _save_with_name;
527}
const std::string & _save_with_name
A user-defined name to save the mesh.

◆ getSharedPtr() [1/2]

std::shared_ptr< MooseObject > MooseObject::getSharedPtr ( )
inherited

Get another shared pointer to this object that has the same ownership group.

Wrapper around shared_from_this().

Definition at line 70 of file MooseObject.C.

71{
72 try
73 {
74 return shared_from_this();
75 }
76 catch (std::bad_weak_ptr &)
77 {
78 mooseError(not_shared_error);
79 }
80}

Referenced by MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), and WebServerControl::addServerAction().

◆ getSharedPtr() [2/2]

std::shared_ptr< const MooseObject > MooseObject::getSharedPtr ( ) const
inherited

Definition at line 83 of file MooseObject.C.

84{
85 try
86 {
87 return shared_from_this();
88 }
89 catch (std::bad_weak_ptr &)
90 {
91 mooseError(not_shared_error);
92 }
93}

◆ getSubMeshGenerators()

const std::set< const MeshGenerator *, Comparator > & MeshGenerator::getSubMeshGenerators ( ) const
inlineinherited

Gets the MeshGenerators that are children to this MeshGenerator.

Definition at line 155 of file MeshGenerator.h.

156 {
158 }

◆ hasBase()

bool MooseBase::hasBase ( ) const
inlineinherited
Returns
Whether or not this object has a registered base (set via InputParameters::registerBase())

Definition at line 142 of file MooseBase.h.

142{ return _pars.hasBase(); }
bool hasBase() const

◆ hasGenerateCSG() [1/2]

bool MeshGenerator::hasGenerateCSG ( ) const
inlineinherited
Returns
Whether or not this generator has a generateCSG() implementation

Definition at line 209 of file MeshGenerator.h.

209{ return hasGenerateCSG(_pars); }

Referenced by MeshGenerator::checkGetMesh(), MeshGenerator::generateCSG(), MeshGenerator::hasGenerateCSG(), and MeshGenerator::MeshGenerator().

◆ hasGenerateCSG() [2/2]

bool MeshGenerator::hasGenerateCSG ( const InputParameters &  params)
staticinherited
Returns
Whether or not the mesh generator noted by the given parameters has a generateCSG() implementation

Definition at line 100 of file MeshGenerator.C.

101{
102 return params.get<bool>("_has_generate_csg");
103}

◆ hasGenerateData() [1/2]

bool MeshGenerator::hasGenerateData ( ) const
inlineinherited
Returns
Whether or not this generator has a generateData() implementation

Definition at line 204 of file MeshGenerator.h.

204{ return hasGenerateData(_pars); }

Referenced by MeshGenerator::generateData(), MeshGenerator::generateInternal(), MeshGenerator::hasGenerateData(), and MeshGenerator::MeshGenerator().

◆ hasGenerateData() [2/2]

bool MeshGenerator::hasGenerateData ( const InputParameters &  params)
staticinherited
Returns
Whether or not the mesh generator noted by the given parameters has a generateData() implementation

Definition at line 88 of file MeshGenerator.C.

89{
90 return params.get<bool>("_has_generate_data");
91}

◆ hasMeshProperty() [1/4]

bool MeshMetaDataInterface::hasMeshProperty ( const std::string &  data_name) const
inlineprotectedinherited
Returns
Whether or not a mesh meta-data exists with the default prefix.

Definition at line 82 of file MeshMetaDataInterface.h.

83 {
84 return hasMeshProperty(data_name, meshPropertyPrefix(data_name));
85 }

◆ hasMeshProperty() [2/4]

template<typename T >
bool MeshMetaDataInterface::hasMeshProperty ( const std::string &  data_name) const
inlineprotectedinherited
Returns
Whether or not a mesh meta-data exists with the default prefix and the given type.

Definition at line 90 of file MeshMetaDataInterface.h.

91 {
92 return hasMeshProperty<T>(data_name, meshPropertyPrefix(data_name));
93 }

◆ hasMeshProperty() [3/4]

bool MeshMetaDataInterface::hasMeshProperty ( const std::string &  data_name,
const std::string &  prefix 
) const
protectedinherited
Returns
Whether or not a mesh meta-data exists.

Definition at line 33 of file MeshMetaDataInterface.C.

35{
38}
bool hasRestartableMetaData(const std::string &name, const RestartableDataMapName &metaname) const
Definition MooseApp.C:2510

Referenced by MeshGenerator::declareMeshProperty(), MeshMetaDataInterface::getMeshProperty(), MeshMetaDataInterface::hasMeshProperty(), MeshMetaDataInterface::hasMeshProperty(), and MeshGenerator::setMeshProperty().

◆ hasMeshProperty() [4/4]

template<typename T >
bool MeshMetaDataInterface::hasMeshProperty ( const std::string &  data_name,
const std::string &  prefix 
) const
protectedinherited
Returns
Whether or not a mesh meta-data exists with the given type.

Definition at line 166 of file MeshMetaDataInterface.h.

168{
169 if (!hasMeshProperty(data_name, prefix))
170 return false;
171 const auto & value = getMeshPropertyInternal(data_name, prefix);
172 return dynamic_cast<const RestartableData<T> *>(&value) != nullptr;
173}

◆ hasOutput()

bool MeshGenerator::hasOutput ( ) const
inherited
Returns
Whether or not to output this mesh generator separately (output parameter is set)

Definition at line 518 of file MeshGenerator.C.

519{
520 return getParam<bool>("output");
521}

Referenced by MeshGeneratorSystem::createMeshGeneratorOrder(), and MeshGenerator::generateInternal().

◆ hasSaveMesh()

bool MeshGenerator::hasSaveMesh ( ) const
inherited

Return whether or not to save the current mesh.

Definition at line 512 of file MeshGenerator.C.

513{
514 return _save_with_name.size();
515}

Referenced by MeshGeneratorSystem::createMeshGeneratorOrder(), and MeshGenerator::MeshGenerator().

◆ isChildMeshGenerator()

bool MeshGenerator::isChildMeshGenerator ( const MeshGeneratorName &  name,
const bool  direct = true 
) const
inherited
Returns
Whether or not the MeshGenerator with the name name is a child of this MeshGenerator.

If direct = true, check only immediate children of this generator. Otherwise, check all children.

Definition at line 491 of file MeshGenerator.C.

493{
494 return std::find_if(getChildMeshGenerators().begin(),
496 [&name, &direct](const auto & mg)
497 {
498 return mg->name() == name ||
499 (!direct && mg->isChildMeshGenerator(name, /* direct = */ false));
500 }) != getChildMeshGenerators().end();
501}
const std::set< const MeshGenerator *, Comparator > & getChildMeshGenerators() const
Gets the MeshGenerators that are children to this MeshGenerator.

Referenced by MeshGeneratorSystem::createMeshGeneratorOrder().

◆ isDataOnly()

bool MeshGenerator::isDataOnly ( ) const
inlineinherited
Returns
Whether or not this generator is to be generated in data-only mode

Definition at line 214 of file MeshGenerator.h.

214{ return _data_only; }
const bool _data_only
Whether or not this mesh generator will run in data only mode.

Referenced by MeshGenerator::addMeshSubgenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), and MeshGenerator::MeshGenerator().

◆ isKokkosObject()

bool MooseObject::isKokkosObject ( ) const
inlineinherited

Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.

Definition at line 63 of file MooseObject.h.

63{ return parameters().isKokkosObject(); }
bool isKokkosObject() const
Returns whether this InputParameters belongs to a Kokkos object Checks whether MooseBase::kokkos_obje...

Referenced by AttribKokkos::initFrom(), BlockRestrictable::initializeBlockRestrictable(), and BoundaryRestrictable::initializeBoundaryRestrictable().

◆ isNullMeshName()

bool MeshGenerator::isNullMeshName ( const MeshGeneratorName &  name) const
inlineinherited
Returns
Whether or not the name name is registered as a "null" mesh, that is, a MeshGenerator that will not represent an input mesh when requested via getMesh.

See declareNullMeshName().

Definition at line 184 of file MeshGenerator.h.

184{ return _null_mesh_names.count(name); }

Referenced by MeshGenerator::checkGetMesh(), MeshGenerator::declareMeshForSubByName(), MeshGenerator::getCSGBaseByName(), and MeshGenerator::getMeshByName().

◆ isParamSetByUser()

bool MooseBase::isParamSetByUser ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is set by a user, as opposed to not set or set to default.

Parameters
nameThe name of the parameter to test

Definition at line 205 of file MooseBase.h.

206 {
208 }
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.

Referenced by DiffusionCG::addFEBCs(), DiffusionCG::addFEKernels(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AdvancedExtruderGenerator(), MFEMMesh::buildMesh(), MFEMBoundarySubMesh::buildSubMesh(), MFEMDomainSubMesh::buildSubMesh(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), MFEMNewtonNonlinearSolver::ConstructSolver(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), FileMesh::FileMesh(), FullSolveMultiApp::FullSolveMultiApp(), MeshDiagnosticsGenerator::generate(), OrientSurfaceMeshGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), MFEMVectorFESpace::getFECName(), MooseBase::getRenamedParam(), MFEMEigenproblem::getRHSCoefficient(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), MFEMMesh::init(), PhysicsBase::initializePhysics(), LibtorchNeuralNetControl::initialSetup(), ElementSubdomainModifierBase::initialSetup(), LibtorchNeuralNetControl::loadControlNeuralNetFromFile(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MFEMEigenproblem::MFEMEigenproblem(), MFEMGeneratedMeshGenerator::MFEMGeneratedMeshGenerator(), MFEMVariable::MFEMVariable(), MooseApp::MooseApp(), MortarConstraintBase::MortarConstraintBase(), MoveNodesByParsedExpressionModifier::moveNodes(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), SolutionInvalidityOutput::output(), Output::Output(), MultiAppGeneralFieldTransfer::outputValueConflicts(), PetscExternalPartitioner::partition(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::run(), MooseApp::runInputFile(), MooseApp::runInputs(), MooseApp::setMFEMDevice(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), MFEMHypreBoomerAMG::SetSolverParameters(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), SmoothMeshGenerator::SmoothMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SurfaceSubdomainsFromAllNormalsGenerator::SurfaceSubdomainsFromAllNormalsGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), TriToQuadConverter::TriToQuadConverter(), XYFrontalDelaunayGenerator::XYFrontalDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isParamValid()

bool MooseBase::isParamValid ( const std::string &  name) const
inlineinherited

Test if the supplied parameter is valid.

Parameters
nameThe name of the parameter to test

Definition at line 199 of file MooseBase.h.

199{ return _pars.isParamValid(name); }
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...

Referenced by GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), AddVariableAction::act(), AutoCheckpointAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CopyNodalVarsAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshCompleteAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), DiffusionPhysicsBase::addPostprocessors(), AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), TimedSubdomainModifier::buildFromFile(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentJunction::ComponentJunction(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DiffusionPhysicsBase::DiffusionPhysicsBase(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenProblemSolve::EigenProblemSolve(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), SurfaceDelaunayGeneratorBase::fillDelaunayOptions(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), BlockDeletionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BSplineCurveGenerator::generate(), ConcentricCircleMeshGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshExtruderGenerator::generate(), OrientSurfaceMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), SphereMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), AddPeriodicBCAction::getVariables(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), SolutionAux::initialSetup(), SolutionScalarAux::initialSetup(), PIDTransientControl::initialSetup(), ParsedConvergence::initialSetup(), EigenProblemSolve::initialSetup(), MooseParsedFunction::initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedVectorFunction::initialSetup(), PiecewiseTabularBase::initialSetup(), SolutionIC::initialSetup(), Console::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), PNGOutput::makePNG(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MeshGeneratorComponent::MeshGeneratorComponent(), MooseApp::MooseApp(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< RealEigenVector >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2Action::NEML2Action(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), EqualValueBoundaryConstraint::pickPrimaryNode(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), MooseMesh::prepare(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusIIOrNemesis(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBaseInternal(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, T >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), SolutionUserObjectBase::SolutionUserObjectBase(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), PIDTransientControl::timestepSetup(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ isParentMeshGenerator()

bool MeshGenerator::isParentMeshGenerator ( const MeshGeneratorName &  name,
const bool  direct = true 
) const
inherited
Returns
Whether or not the MeshGenerator with the name name is a parent of this MeshGenerator.

If direct = true, check only immediate parents of this generator. Otherwise, check all parents.

Definition at line 478 of file MeshGenerator.C.

480{
481 return std::find_if(getParentMeshGenerators().begin(),
483 [&name, &direct](const auto & mg)
484 {
485 return mg->name() == name ||
486 (!direct && mg->isParentMeshGenerator(name, /* direct = */ false));
487 }) != getParentMeshGenerators().end();
488}
const std::set< const MeshGenerator *, Comparator > & getParentMeshGenerators() const
Gets the MeshGenerators that are parents to this MeshGenerator.

◆ meshPropertyName() [1/2]

std::string MeshMetaDataInterface::meshPropertyName ( const std::string &  data_name) const
inlineprotectedinherited
Returns
The default mesh property name for mesh property data

Definition at line 103 of file MeshMetaDataInterface.h.

104 {
105 return meshPropertyName(data_name, meshPropertyPrefix(data_name));
106 }

◆ meshPropertyName() [2/2]

std::string MeshMetaDataInterface::meshPropertyName ( const std::string &  data_name,
const std::string &  prefix 
)
staticprotectedinherited
Returns
The full name for mesh property data.

Definition at line 41 of file MeshMetaDataInterface.C.

42{
43 return std::string(SYSTEM) + "/" + prefix + "/" + data_name;
44}
static constexpr auto SYSTEM
The system name used when initializing the Restartable interface.

Referenced by MeshGenerator::declareMeshProperty(), MeshMetaDataInterface::getMeshPropertyInternal(), MeshMetaDataInterface::hasMeshProperty(), MeshMetaDataInterface::meshPropertyName(), and MeshGenerator::setMeshPropertyHelper().

◆ meshPropertyPrefix()

virtual std::string MeshGenerator::meshPropertyPrefix ( const std::string &  ) const
inlinefinaloverrideprivatevirtualinherited

Override of the default prefix to use when getting mesh properties.

Until we support getting mesh properties from other mesh generators (which is coming), we will default to properties returned by this generator.

Reimplemented from MeshMetaDataInterface.

Definition at line 471 of file MeshGenerator.h.

472 {
473 return name();
474 }

◆ messagePrefix() [1/2]

std::string MooseBase::messagePrefix ( const bool  hit_prefix = true) const
inlineinherited
Returns
A prefix to be used in messages that contain the input file location associated with this object (if any) and the name and type of the object.

Definition at line 256 of file MooseBase.h.

257 {
258 return messagePrefix(_pars, hit_prefix);
259 }

Referenced by MooseBase::callMooseError(), MooseBase::errorPrefix(), MooseBase::messagePrefix(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), and MooseBase::mooseWarning().

◆ messagePrefix() [2/2]

std::string MooseBase::messagePrefix ( const InputParameters &  params,
const bool  hit_prefix 
)
staticprivateinherited

Internal method for getting the message prefix for an object (object type, name, etc).

Needs to be static so that we can call it externally from InputParameters for errors that do not have context of the MooseBase

Definition at line 140 of file MooseBase.C.

141{
142 std::string prefix = "";
143
144 if (hit_prefix)
145 if (const auto node = MooseBase::getHitNode(params))
146 prefix += Moose::hitMessagePrefix(*node);
147
148 // Don't have context without type and name
149 if (!params.isMooseBaseObject())
150 return prefix;
151
152 const auto & name = params.getObjectName();
153 const std::string base = params.hasBase() ? params.getBase() : "object";
154 const bool is_main_app = base == "Application" && name == AppFactory::main_app_name;
155 prefix += "The following occurred in the ";
156 if (is_main_app)
157 prefix += "main " + base;
158 else
159 prefix += base;
160 if (base != params.getObjectName() && name.size() && !is_main_app)
161 prefix += " '" + name + "'";
162 prefix += " of type " + params.getObjectType() + ".";
163 return prefix + "\n\n";
164}
static const std::string main_app_name
The name for the "main" moose application.
Definition AppFactory.h:68
bool isMooseBaseObject() const
const std::string & getObjectType() const
const std::string & getObjectName() const
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition Moose.C:915

◆ mooseDeprecated() [1/2]

template<typename... Args>
void MooseBase::mooseDeprecated ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and a stack trace.

Definition at line 317 of file MooseBase.h.

318 {
320 _console, false, true, true, messagePrefix(true), std::forward<Args>(args)...);
321 }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition MooseError.h:252

Referenced by MooseApp::addCapability(), DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), MooseApp::getRecoverFileBase(), MooseApp::hasRecoverFileBase(), MooseApp::MooseApp(), and MooseApp::setupOptions().

◆ mooseDeprecated() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseDeprecated ( Args &&...  args) const
inlineinherited

◆ mooseDeprecatedNoTrace()

template<typename... Args>
void MooseBase::mooseDeprecatedNoTrace ( Args &&...  args) const
inlineinherited

Emits a deprecation warning prefixed with the object name and type, and no stack trace.

Definition at line 327 of file MooseBase.h.

328 {
330 _console, false, true, false, messagePrefix(true), std::forward<Args>(args)...);
331 }

Referenced by MooseApp::MooseApp().

◆ mooseDocumentedError()

template<typename... Args>
void MooseBase::mooseDocumentedError ( const std::string &  repo_name,
const unsigned int  issue_num,
Args &&...  args 
) const
inlineinherited

Definition at line 277 of file MooseBase.h.

280 {
282 repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
283 /* with_prefix = */ true);
284 }
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition MooseError.C:140

◆ mooseError()

template<typename... Args>
void MooseBase::mooseError ( Args &&...  args) const
inlineinherited

Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.

Definition at line 271 of file MooseBase.h.

272 {
273 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
274 }

Referenced by CopyMeshPartitioner::_do_partition(), GridPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), AdaptivityAction::act(), AddBoundsVectorsAction::act(), AddFVICAction::act(), AddICAction::act(), AddMeshGeneratorAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), AddVectorPostprocessorAction::act(), ChainControlSetupAction::act(), CheckFVBCAction::act(), CheckIntegrityAction::act(), CombineComponentsMeshes::act(), CommonOutputAction::act(), CreateDisplacedProblemAction::act(), CreateExecutionerAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), InitProblemAction::act(), MaterialOutputAction::act(), SetAdaptivityOptionsAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), SetupMeshCompleteAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), SplitMeshAction::act(), Action::Action(), AddActionComponentAction::AddActionComponentAction(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), MooseApp::addCapabilityInternal(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), SubProblem::addFunctor(), PhysicsComponentInterface::addInitialConditionsFromComponents(), ComponentJunction::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), AddActionComponentAction::addRelationshipManagers(), WebServerControl::addServerAction(), AddVariableAction::addVariable(), SubProblem::addVectorTag(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), MooseVariableBase::allDofIndices(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), MooseApp::attachRelationshipManagers(), MooseApp::attachRelationshipManagers(), Function::average(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromJSON(), PiecewiseTabularInterface::buildFromXY(), MooseMesh::buildLowerDMesh(), GeneratedMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), TiledMesh::buildMesh(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), MooseMesh::checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), MooseMesh::checkDuplicateSubdomainNames(), MaterialBase::checkExecutionStage(), FVFluxBC::checkFaceIntegrity(), FVInterfaceKernel::checkFaceIntegrity(), PhysicsVariableCoordinator::checkFVAdjacency(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), ExplicitTimeIntegrator::checkLinearConvergence(), MooseApp::checkMetaDataIntegrity(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), Moose::PeriodicBCHelper::checkPeriodicParams(), Sampler::checkReinitStatus(), MultiAppTransfer::checkSiblingsTransferSupported(), NEML2Action::checkStatefulConsistency(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), Moose::PetscSupport::checkUserProvidedPetscOption(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), MooseMesh::clone(), LibmeshPartitioner::clone(), CombinerGenerator::CombinerGenerator(), MooseVariableFieldBase::componentName(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), MooseVariableFieldBase::computeFaceValues(), TimeStepper::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), MooseMesh::computeFiniteVolumeCoords(), computeNodeNormals(), Moose::Kokkos::ResidualObject::computeOffDiagJacobian(), MaterialBase::computeProperties(), ResidualObject::computeResidualAndJacobian(), TimeStepper::computeStep(), AStableDirk4::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), ExplicitEuler::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), ReporterTransferInterface::declareClone(), Moose::Kokkos::MaterialBase::declareKokkosPropertyInternal(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), MooseApp::determineLibtorchDeviceType(), MeshDiagnosticsGenerator::diagnosticsLog(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), FunctorRelationshipManager::dofmap_reinit(), MooseApp::dynamicAllRegistration(), MooseApp::dynamicAppRegistration(), DistributedRectilinearMeshGenerator::elemId(), MooseApp::errorCheck(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), FixedPointSolve::examineFixedPointConvergence(), Eigenvalue::execute(), TransientBase::execute(), WebServerControl::execute(), MooseApp::executeExecutioner(), FVInterfaceKernel::faceArg1(), FVInterfaceKernel::faceArg2(), MultiApp::fillPositions(), MooseApp::finalizeRestore(), Transfer::find_sys(), PhysicsVariableCoordinator::findOrCreate(), DiracKernelInfo::findPoint(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), LinearFVBoundaryCondition::functorFaceArg(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), generate(), BoundingBoxNodeSetGenerator::generate(), CoarsenBlockGenerator::generate(), CombinerGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), DistributedRectilinearMeshGenerator::generate(), ElementOrderConversionGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MeshCollectionGenerator::generate(), MeshDiagnosticsGenerator::generate(), MeshExtruderGenerator::generate(), MeshRepairGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SmoothMeshGenerator::generate(), SpiralAnnularMeshGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateCSG(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), MooseMesh::getAxisymmetricRadialCoord(), MooseMesh::getBlockConnectedBlocks(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), WebServerControl::getClientInfo(), MooseMesh::getCoarseningMap(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), MooseMesh::getCoordSystem(), PhysicsBase::getCoupledPhysics(), PhysicsBase::getCoupledPhysics(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), EigenExecutionerBase::getEigenSystemConvergence(), MooseMesh::getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), MooseMesh::getElemIDMapping(), MooseMesh::getElemIDsOnBlocks(), WebServerControl::Response::getError(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), SubProblem::getFunctor(), MooseMesh::getGeneralAxisymmetricCoordAxis(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), MaterialPropertyInterface::getKokkosBlockMaterialProperty(), FunctionInterface::getKokkosFunctionByName(), MaterialPropertyInterface::getKokkosMaterialPropertyByName(), Material::getMaterialByName(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), MultiAppTransfer::getMultiApp(), DistributedRectilinearMeshGenerator::getNeighbors(), MooseMesh::getNodeBlockIds(), MooseMesh::getNodeList(), MooseMesh::getPairedBoundaryMapping(), MaterialOutputAction::getParams(), PlaneIDMeshGenerator::getPlaneID(), PostprocessorInterface::getPostprocessorValueByNameInternal(), ComponentMaterialPropertyInterface::getPropertyValue(), MooseMesh::getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), MooseObject::getSharedPtr(), MooseObject::getSharedPtr(), PhysicsBase::getSolverSystem(), MooseMesh::getSubdomainBoundaryIds(), TransientBase::getTimeIntegratorNames(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), MooseMesh::getUniqueCoordSystem(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), SubProblem::getVariableHelper(), AddPeriodicBCAction::getVariables(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), MultiApp::globalAppToLocal(), Function::gradient(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), TransientBase::incrementStepOrReject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), EigenExecutionerBase::init(), TransientBase::init(), MFEMMesh::init(), CrankNicolson::init(), ExplicitTimeIntegrator::init(), FixedPointIterationAdaptiveDT::init(), IterationAdaptiveDT::init(), MultiApp::init(), NestedDivision::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SubProblem::initialSetup(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), FullSolveMultiApp::initialSetup(), ExplicitTimeIntegrator::initialSetup(), Function::integral(), InternalSideIndicatorBase::InternalSideIndicatorBase(), EigenExecutionerBase::inversePowerIteration(), Sampler::isAdaptiveSamplingCompleted(), MooseMesh::isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LibmeshPartitioner::LibmeshPartitioner(), MooseApp::libNameToAppName(), LineSearch::lineSearch(), LibtorchNeuralNetControl::loadControlNeuralNetFromFile(), MooseApp::loadLibraryAndDependencies(), ReporterPointMarker::markerSetup(), Material::Material(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), SetupMeshAction::modifyParamsForUseSplit(), MooseApp::MooseApp(), MeshMetaDataInterface::mooseErrorInternal(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableBase::MooseVariableBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppTransfer::MultiAppTransfer(), NewmarkBeta::NewmarkBeta(), DistributedRectilinearMeshGenerator::nodeId(), DistributedRectilinearMeshGenerator::numNeighbors(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), MortarNodalGeometryOutput::output(), Output::Output(), MooseApp::outputMachineReadableData(), DistributedRectilinearMeshGenerator::paritionSquarely(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularInterface::PiecewiseTabularInterface(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), ProjectSideSetOntoLevelSetGenerator::pointPairLevelSetInterception(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), AStableDirk4::postResidual(), ExplicitRK2::postResidual(), ExplicitTVDRK2::postResidual(), ImplicitMidpoint::postResidual(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), LStableDirk4::postResidual(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), FixedPointSolve::printFixedPointConvergenceReason(), MFEMFunctorMaterial::processLiterals(), MultiApp::readCommandLineArguments(), CoarsenBlockGenerator::recursiveCoarsen(), MooseApp::recursivelyCreateExecutors(), FunctorRelationshipManager::redistribute(), MooseApp::registerRestartableData(), MooseApp::registerRestartableNameWithFilter(), Sampler::reinit(), MooseApp::removeRelationshipManager(), PhysicsBase::reportPotentiallyMissedParameters(), PhysicsVariableCoordinator::requestVariable(), NEML2Action::resolveParameterName(), MooseApp::restore(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), MooseApp::run(), MooseApp::runInputs(), ScalarComponentIC::ScalarComponentIC(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), MooseMesh::setCoordSystem(), MooseMesh::setGeneralAxisymmetricCoordAxes(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Split::setup(), TransientMultiApp::setupApp(), Moose::PeriodicBCHelper::setupAutoPeriodicBoundaries(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), Moose::PeriodicBCHelper::setupManualPeriodicBoundaries(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), NEML2Action::setupOutputMappings(), NEML2Action::setupParameterDerivativeMappings(), NEML2Action::setupParameterMappings(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), MooseVariableBase::sizeMatrixTagData(), SmoothMeshGenerator::SmoothMeshGenerator(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), Moose::MFEM::LinearSolverBase::Solve(), TimeIntegrator::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), FullSolveMultiApp::solveStep(), UserObject::spatialPoints(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), MeshRepairGenerator::splitNonConvexPolygons(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), MaterialBase::subdomainSetup(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), Action::timedAct(), Function::timeDerivative(), Function::timeIntegral(), ParsedCurveGenerator::tSectionSpaceDefiner(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), MooseVariableScalar::uDotOld(), MooseBase::uniqueName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), Function::value(), Moose::Kokkos::ResidualObject::variable(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), AddVariableAction::variableType(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), WebServerControl::WebServerControl(), WebServerControl::writePortFile(), MFEMMesh::writeRecoveryFiles(), and MooseApp::writeRestartableMetaData().

◆ mooseErrorInternal()

template<typename... Args>
void MeshMetaDataInterface::mooseErrorInternal ( Args &&...  args) const
inlineprivateinherited

Helper for forwarding a mooseError to an object's mooseError if it is available (said error will provide more context: object name and type)

Definition at line 132 of file MeshMetaDataInterface.h.

133 {
135 _meta_data_object->mooseError(std::forward<Args>(args)...);
136 mooseError(std::forward<Args>(args)...);
137 }
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
const MooseObject *const _meta_data_object
The MooseObject (if any); used for better error handling.

Referenced by MeshMetaDataInterface::getMeshProperty().

◆ mooseErrorNonPrefixed()

template<typename... Args>
void MooseBase::mooseErrorNonPrefixed ( Args &&...  args) const
inlineinherited

Emits an error without the prefixing included in mooseError().

Definition at line 290 of file MooseBase.h.

291 {
292 callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
293 }

◆ mooseInfo()

template<typename... Args>
void MooseBase::mooseInfo ( Args &&...  args) const
inlineinherited

◆ mooseWarning() [1/2]

template<typename... Args>
void MooseBase::mooseWarning ( Args &&...  args) const
inlineinherited

Emits a warning prefixed with object name and type.

Definition at line 299 of file MooseBase.h.

300 {
301 moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
302 }
void mooseWarningStream(S &oss, Args &&... args)
Definition MooseError.h:197

Referenced by DiracKernelInfo::findPoint(), DataFileInterface::getDataFilePath(), MooseApp::loadLibraryAndDependencies(), MooseBase::paramWarning(), and MooseApp::setupOptions().

◆ mooseWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarning ( Args &&...  args) const
inlineinherited

Definition at line 73 of file SolutionInvalidInterface.h.

74 {
75 _si_moose_base.MooseBase::mooseWarning(std::forward<Args>(args)...);
76 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
77 }

Referenced by CopyMeshPartitioner::_do_partition(), AddFunctionAction::act(), AddKernelAction::act(), CommonOutputAction::act(), MaterialOutputAction::act(), MeshOnlyAction::act(), MooseMesh::addPeriodicVariable(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkPolygons(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), MultiApp::createApp(), MeshDiagnosticsGenerator::diagnosticsLog(), CartesianGridDivision::divisionIndex(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), Postprocessor::evaluateDotWarning(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), BSplineCurveGenerator::generate(), RenumberBySubdomainGenerator::generate(), SubdomainPerElementGenerator::generate(), SurfaceMeshGeneratorBase::get2DElemNormal(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), IndicatorMarker::IndicatorMarker(), CartesianGridDivision::initialize(), CylindricalGridDivision::initialize(), SphericalGridDivision::initialize(), MaterialBase::initStatefulProperties(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MFEMRefinementMarker::MFEMRefinementMarker(), NewmarkBeta::NewmarkBeta(), Output::Output(), MaterialOutputAction::outputHelper(), Executioner::problem(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), MooseMesh::setCoordSystem(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

◆ mooseWarningNonPrefixed() [1/2]

template<typename... Args>
void MooseBase::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Emits a warning without the prefixing included in mooseWarning().

Definition at line 308 of file MooseBase.h.

309 {
310 moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
311 }

◆ mooseWarningNonPrefixed() [2/2]

template<typename... Args>
void SolutionInvalidInterface::mooseWarningNonPrefixed ( Args &&...  args) const
inlineinherited

Definition at line 80 of file SolutionInvalidInterface.h.

81 {
82 _si_moose_base.MooseBase::mooseWarningNonPrefixed(std::forward<Args>(args)...);
83 flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
84 }

◆ name()

const std::string & MooseBase::name ( ) const
inlineinherited

Get the name of the class.

Returns
The name of the class

Definition at line 103 of file MooseBase.h.

104 {
105 mooseAssert(_name.size(), "Empty name");
106 return _name;
107 }
const std::string & _name
The name of this class.
Definition MooseBase.h:381

Referenced by AdaptivityAction::act(), AddActionComponentAction::act(), AddElementalFieldAction::act(), AddPeriodicBCAction::act(), AddTimeStepperAction::act(), CommonOutputAction::act(), CopyNodalVarsAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), SetupResidualDebugAction::act(), SetupTimeIntegratorAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), MFEMComplexWeakForm::addBoundaryCondition(), MFEMWeakForm::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), MFEMProblem::addDefaultProblemComposer(), MFEMProblem::addDefaultWeakForm(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVGradientMethod(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), ElementAndTraceScalarHDGAssemblyHelper::additionalROVariables(), BoundaryIntegralValueConstraint::additionalROVariables(), DiffusionLHDGKernel::additionalROVariables(), ADKernelScalarBase::additionalROVariables(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), MFEMComplexWeakForm::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentJunction::addMeshGenerators(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), MFEMProblem::addObject(), FEProblemBase::addObject(), InitialConditionWarehouse::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), UserObjectBase::addPostprocessorDependencyHelper(), AuxKernelBase::addPostprocessorDependencyHelper(), InitialConditionBase::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), MFEMProblem::addProblemComposer(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), AddActionComponentAction::addRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), WebServerControl::addServerActionsInternal(), PhysicsBase::addSharedAuxVariable(), PhysicsBase::addSharedSolverVariable(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), PhysicsBase::addUserObject(), FEProblemBase::addUserObject(), UserObjectBase::addUserObjectDependencyHelper(), AuxKernelBase::addUserObjectDependencyHelper(), InitialConditionBase::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), UserObjectBase::addVectorPostprocessorDependencyHelper(), AuxKernelBase::addVectorPostprocessorDependencyHelper(), MFEMProblem::addWeakForm(), MooseLinearVariableFV< OutputType >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator(), NEML2ModelExecutor::advanceState(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), Function::average(), MultiApp::backup(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromXY(), MFEMGeometricMultigridSolver::BuildMultigrid(), MooseMesh::buildNodeListFromSideList(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), DefaultNonlinearConvergence::checkConvergence(), ParsedConvergence::checkConvergence(), checkCoupledScalarVariableBlocks(), FEProblemBase::checkDependMaterialsHelper(), FVFluxBC::checkFaceIntegrity(), FVInterfaceKernel::checkFaceIntegrity(), TaggingInterface::checkForNans(), SamplerBase::checkForStandardFieldVariableType(), PhysicsVariableCoordinator::checkFVAdjacency(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), NonlinearSystemBase::checkKernelCoverage(), Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), LinearFVGradientManager::checkRestartedGradientHistory(), FEProblemBase::checkUserObjectNameCollision(), BlockRestrictable::checkVariable(), DomainUserObject::checkVariable(), Coupleable::checkWritableVar(), CoarsenSurfaceMeshAlongSidesetGenerator::coarsenAlongSidesets(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBase::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), Coupleable::coupledName(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), DebugResidualAux::DebugResidualAux(), MaterialBase::declareADProperty(), MFEMComplexVariable::declareCoefficients(), MFEMVariable::declareCoefficients(), MeshInfo::declareHelper(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), MFEMCoordinateTransformations::declareRZCoefficients(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), ElementDamper::ElementDamper(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementMaterialSampler::ElementMaterialSampler(), ElementValueSampler::ElementValueSampler(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), RestartableDataReporter::execute(), MultiAppGeneralFieldTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), SideValueSampler::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FVInterfaceKernel::faceArg1(), FVInterfaceKernel::faceArg2(), NEML2ModelExecutor::failedInputDumpName(), FEProblemBase::FEProblemBase(), NEML2ModelExecutor::fillInputs(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionArrayAux::FunctionArrayAux(), FunctionDT::FunctionDT(), FVFunctionIC::functionName(), FunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), GapValueAux::GapValueAux(), generate(), BoundaryDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), BSplineCurveGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ManifoldSubdomainGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MooseMesh::getBoundaryString(), MultiApp::getBoundingBox(), MooseBase::getCheckedPointerParam(), MooseApp::getCheckpointDirectories(), MFEMProblem::getComplexGridFunction(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), MeshGenerator::getCSGBase(), MeshGenerator::getCSGBasesByName(), UserObjectBase::getDependObjects(), FEProblemBase::getDistribution(), DistributionInterface::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), FEProblemBase::getExecutor(), MooseApp::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVAdvectedInterpolationMethod(), FEProblemBase::getFVFaceInterpolationMethod(), FEProblemBase::getFVGradientMethod(), FEProblemBase::getFVGradientMethod(), FEProblemBase::getFVInterpolationMethod(), AuxKernelTempl< ComputeValueType >::getGenericMaterialProperty(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), FEProblemBase::getKokkosFunction(), FEProblemBase::getKokkosUserObject(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), AuxKernelTempl< ComputeValueType >::getMaterialProperty(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), Material::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), AuxKernelTempl< ComputeValueType >::getMaterialPropertyOlder(), NodalPatchRecovery::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), MFEMObject::getMatrixCoefficient(), MFEMObject::getMatrixCoefficientByName(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MFEMProblem::getMFEMObject(), ActionWarehouse::getMooseAppName(), TorchFEInterpolation::getMOOSEVariable(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), MooseBase::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MFEMExecutedObject::getRequestedItems(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMObject::getScalarCoefficient(), MFEMObject::getScalarCoefficientByName(), TimedSubdomainModifier::getSubdomainIDAndCheck(), MFEMExecutedObject::getSuppliedItems(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMObject::getVectorCoefficient(), MFEMObject::getVectorCoefficientByName(), LinearFVGradientManager::gradientStateVectorName(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasDistribution(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), FEProblemBase::hasFVGradientMethod(), FEProblemBase::hasFVInterpolationMethod(), MeshInfo::hasItem(), MooseApp::hasMeshGenerator(), MFEMProblem::hasMFEMObject(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), NEML2Action::inferMOOSEIOType(), AddVariableAction::init(), AdvancedOutput::init(), IterationAdaptiveDT::init(), AdvancedOutput::initAvailableLists(), MeshInfo::initCombinedInfos(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), AuxKernelBase::initialSetup(), SolutionScalarAux::initialSetup(), MFEMScalarQuadratureFunction::initialSetup(), MFEMVectorQuadratureFunction::initialSetup(), Console::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), NodalVariableValue::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppGeneralFieldFunctorTransfer::initialSetup(), MultiAppProjectionTransfer::initialSetup(), BoundaryMeshBuilder::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< T >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< OutputType >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), Material::Material(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), NEML2ModelExecutor::meshChanged(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMScalarQuadratureFunction::MFEMScalarQuadratureFunction(), MFEMVectorQuadratureFunction::MFEMVectorQuadratureFunction(), MooseApp::MooseApp(), OutputWarehouse::mooseConsole(), SolutionInvalidInterface::mooseDeprecated(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< T >::MooseVariableInterface(), SolutionInvalidInterface::mooseWarning(), SolutionInvalidInterface::mooseWarningNonPrefixed(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalDamper::NodalDamper(), MooseLinearVariableFV< OutputType >::nodalError(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), MeshGenerator::Comparator::operator()(), DOFMapOutput::output(), ProgressOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), Exodus::outputPostprocessors(), Nemesis::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), SolutionInvalidInterface::paramWarning(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseFunction::PiecewiseFunction(), PointInUnionCheckUO::PointInUnionCheckUO(), MooseApp::possiblyLoadRestartableMetaData(), MFEMExecutedObject::postprocessorDependencyKey(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), FEProblemBase::projectInitialConditionOnCustomRange(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), FEProblemBase::setAuxKernelParamsAndLog(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), OutputWarehouse::setFileNumbers(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), MooseMesh::setSubdomainName(), MooseMesh::setSubdomainName(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), Split::setup(), TransientMultiApp::setupApp(), MoveNodesByParsedExpressionModifier::setupNodalOutputVariables(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), LinearFVGradientReader::stateComponents(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), ConstraintWarehouse::subdomainsCovered(), MaterialBase::subdomainSetup(), SumPostprocessor::SumPostprocessor(), MFEMPostprocessor::suppliedPostprocessorName(), MFEMVectorPostprocessor::suppliedVectorPostprocessorName(), BoundaryMeshBuilder::surfaceElementSet(), TorchFEInterpolation::syncWithMainThread(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< OutputType >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), TorchPreKernel::TorchPreKernel(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), MultiAppMFEMCopyTransfer::transferVariables(), MultiAppMFEMShapeEvaluationTransfer::transferVariables(), TransientMultiApp::TransientMultiApp(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVQpFluxBC::uOnGhost(), FVQpFluxBC::uOnUSub(), UserObjectBase::UserObjectBase(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), BreakMeshByBlockGenerator::validParams(), MeshInfo::validParams(), MFEMExecutedObject::variableDependencyKey(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), MFEMExecutedObject::vectorPostprocessorDependencyKey(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), MooseApp::writeRestartableMetaData(), and XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve().

◆ paramError()

template<typename... Args>
void MooseBase::paramError ( const std::string &  param,
Args...  args 
) const
inherited

Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseError - only printing a message using the given args.

Definition at line 457 of file MooseBase.h.

458{
459 _pars.paramError(param, std::forward<Args>(args)...);
460}
void paramError(const std::string &param, Args... args) const
Emits a parameter error prefixed with the parameter location and object information if available.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), CommonOutputAction::act(), SetupDebugAction::act(), ADArrayIntegratedBC::ADArrayIntegratedBC(), ADArrayRobinBC::ADArrayRobinBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), ReporterPointSource::addPoints(), DiffusionPhysicsBase::addPostprocessors(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), ArrayCoupledForce::ArrayCoupledForce(), ArrayDGKernel::ArrayDGKernel(), ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayDirichletBC::ArrayDirichletBC(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayIntegratedBC::ArrayIntegratedBC(), ArrayKernel::ArrayKernel(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), ArrayParsedAux::ArrayParsedAux(), ArrayPenaltyDirichletBC::ArrayPenaltyDirichletBC(), ArrayReactionNodalKernelTempl< is_ad >::ArrayReactionNodalKernelTempl(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelBase::AuxKernelBase(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundaryIntegralValueConstraint::BoundaryIntegralValueConstraint(), BoundaryLinearFVFluxIntegral::BoundaryLinearFVFluxIntegral(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), MFEMFESpaceHierarchy::buildHierarchy(), MFEMMesh::buildMesh(), TimeSequenceStepperBase::buildSequence(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), SurfaceDelaunayGeneratorBase::checkBoundaryAndHolesParams(), checkComponent(), Moose::Kokkos::ParsedObjectBase::checkDuplicateSymbols(), SamplerBase::checkForStandardFieldVariableType(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), SurfaceDelaunayGeneratorBase::checkInteriorPoints(), SideUserObject::checkNoInterfaceMaterialPropertyDependencies(), PostprocessorInterface::checkParam(), MortarConsumerInterface::checkPetrovGalerkinQuadraticFaces(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), NEML2Action::checkStatefulConsistency(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), MultiAppGeneralFieldTransfer::closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentJunction::ComponentJunction(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), computeNodeNormals(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< is_ad >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), MFEMNewtonNonlinearSolver::ConstructSolver(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), MultiAppGeneralFieldTransfer::correctSolutionVectorValues(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), CumulativeTimeAverageFunctorAux::CumulativeTimeAverageFunctorAux(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), CylindricalGridDivision::CylindricalGridDivision(), DebugResidualAux::DebugResidualAux(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ElementNormalAux::ElementNormalAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), StitchMeshGeneratorBase::errorMissingBoundary(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), FunctorNodalCorrector::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::FileMeshGenerator(), FillBetweenCurvesGenerator::FillBetweenCurvesGenerator(), FillBetweenSidesetsGenerator::FillBetweenSidesetsGenerator(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), MeshTriangulationUtils::finalizeTriangulation(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), ForcingFunctionAux::ForcingFunctionAux(), FullSolveMultiApp::FullSolveMultiApp(), FunctionArrayAux::FunctionArrayAux(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FunctorADConverterTempl< T >::FunctorADConverterTempl(), FunctorAux::FunctorAux(), FunctorBinnedValuesDivision::FunctorBinnedValuesDivision(), FunctorCoordinatesFunctionAux::FunctorCoordinatesFunctionAux(), FunctorElementalGradientAuxTempl< is_ad >::FunctorElementalGradientAuxTempl(), FunctorExtremaPositions::FunctorExtremaPositions(), FunctorIC::FunctorIC(), FunctorNodalCorrector::FunctorNodalCorrector(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FunctorVectorElementalAuxTempl< is_ad >::FunctorVectorElementalAuxTempl(), FVAdvection::FVAdvection(), FVFluxBC::FVFluxBC(), FVInterfaceKernel::FVInterfaceKernel(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), FVTwoVarContinuityConstraint::FVTwoVarContinuityConstraint(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), generate(), BlockDeletionGenerator::generate(), BlockToMeshConverterGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BoundaryDeletionGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), BreakMeshByBlockGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CoarsenBlockGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), CombinerGenerator::generate(), ConcentricCircleMeshGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), ElementsToTetrahedronsConverter::generate(), ExtraNodesetGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ManifoldSubdomainGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), MoveBoundaryNodesToCurveGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), PlaneIDMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), StackGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), SurfaceSubdomainsDelaunayRemesher::generate(), TriToQuadConverter::generate(), UniqueExtraIDMeshGenerator::generate(), XYFrontalDelaunayGenerator::generate(), XYMeshLineCutter::generate(), XYZDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), BoundaryLayerUtils::generateOffsetPolyline(), GenericConstantStdVectorMaterialTempl< is_ad >::GenericConstantStdVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), PropertyReadFile::getBlockData(), ComponentBoundaryConditionInterface::getBoundaryCondition(), MultiApp::getCommandLineArgs(), PropertyReadFile::getData(), PropertyReadFile::getFileNames(), Sampler::getGlobalSamples(), ComponentInitialConditionInterface::getInitialCondition(), NEML2Action::getInputParameterMapping(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), Sampler::getLocalSamples(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), FEProblemSolve::getParamFromNonlinearSystemVectorParam(), PostprocessorInterface::getPostprocessorNameInternal(), PostprocessorInterface::getPostprocessorValueInternal(), Sampler::getSampleRow(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), UserObjectInterface::getUserObjectBase(), UserObjectInterface::getUserObjectName(), AddPeriodicBCAction::getVariables(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), TimeIntegrator::init(), MFEMTransient::init(), FEProblemBase::init(), MultiApp::init(), MFEMWeakFormBase::initEquationSystem(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), ReferenceResidualConvergence::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), SolutionIC::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), ElementSubdomainModifierBase::initialSetup(), MFEMScalarCoefficientPointValueSampler::initialSetup(), FullSolveMultiApp::initialSetup(), JSONOutput::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), MultiAppGeneralFieldKDTreeTransferBase::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppGeneralFieldTransfer::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), PointInPolyhedronCheckUO::initialSetup(), HistogramVectorPostprocessor::initialSetup(), SampledOutput::initSample(), AddMetaDataGenerator::inputChecker(), IntegratedBC::IntegratedBC(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceValueUserObjectAux::InterfaceValueUserObjectAux(), InternalSideIndicatorBase::InternalSideIndicatorBase(), InterpolatedStatefulMaterialTempl< T >::InterpolatedStatefulMaterialTempl(), InversePowerMethod::InversePowerMethod(), IterationAdaptiveDT::IterationAdaptiveDT(), MultiApp::keepSolutionDuringRestore(), Kernel::Kernel(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationFunction::LinearCombinationFunction(), LinearFVAdvectionDiffusionFunctorRobinBC::LinearFVAdvectionDiffusionFunctorRobinBC(), LinearFVGradientAux::LinearFVGradientAux(), Moose::MFEM::LinearSolverBase::LinearSolverBase(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatReactionTempl< is_ad >::MatReactionTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MeshInfo::MeshInfo(), MFEMComplexSumAux::MFEMComplexSumAux(), MFEMEigenproblem::MFEMEigenproblem(), MFEMFunctorMaterial::MFEMFunctorMaterial(), MFEMGeneratedMeshGenerator::MFEMGeneratedMeshGenerator(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorMatrixMaterial::MFEMGenericFunctorMatrixMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver(), MFEMHypreBoomerAMG::MFEMHypreBoomerAMG(), MFEMMultiAppTransfer::MFEMMultiAppTransfer(), MFEMNDtoRTAux::MFEMNDtoRTAux(), MFEMSumAux::MFEMSumAux(), MFEMVariable::MFEMVariable(), MFEMWeakFormProblemComposerBase::MFEMWeakFormProblemComposerBase(), MooseLinearVariableFV< OutputType >::MooseLinearVariableFV(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveBoundaryNodesToCurveGenerator::MoveBoundaryNodesToCurveGenerator(), MoveNodeGenerator::MoveNodeGenerator(), MoveNodesByParsedExpressionModifier::MoveNodesByParsedExpressionModifier(), TriToQuadConverter::moveSurvivingTriangles(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppGeometricInterpolationTransfer::MultiAppGeometricInterpolationTransfer(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorToAuxScalarTransfer::MultiAppPostprocessorToAuxScalarTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppProjectionTransfer::MultiAppProjectionTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppScalarToAuxScalarTransfer::MultiAppScalarToAuxScalarTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiAppVectorPostprocessorTransfer::MultiAppVectorPostprocessorTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NearestNodeValueAux::NearestNodeValueAux(), NEML2Action::NEML2Action(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), NumDOFs::NumDOFs(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), MeshTriangulationUtils::outerBoundaryIds(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), ParsedSubdomainGeneratorBase::ParsedSubdomainGeneratorBase(), ParsedVectorRealReductionReporter::ParsedVectorRealReductionReporter(), ParsedVectorReporter::ParsedVectorReporter(), ParsedVectorVectorRealReductionReporter::ParsedVectorVectorRealReductionReporter(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointInPolyhedronBaseUO::PointInPolyhedronBaseUO(), PointInSignedFunctionCheckUO::PointInSignedFunctionCheckUO(), PointInUnionCheckUO::PointInUnionCheckUO(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), EqualValueBoundaryConstraint::populateSecondaryNodes(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), RankTwoTensorFromComponentProperties::RankTwoTensorFromComponentProperties(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusIIOrNemesis(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), FEProblemBase::restoreSolutions(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), Moose::MFEM::LinearSolverBase::SetPreconditioner(), Moose::MFEM::LinearSolverBase::SetPreconditionerImpl(), MFEMHypreAME::SetPreconditionerImpl(), MFEMHypreFGMRES::SetPreconditionerImpl(), MFEMHypreGMRES::SetPreconditionerImpl(), MFEMHyprePCG::SetPreconditionerImpl(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), SurfaceMeshGeneratorBase::setup(), CylinderComponent::setupComponent(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), MultiSystemSolveObject::setupMultiSystemFixedPointRelaxationFactors(), MoveNodesByParsedExpressionModifier::setupNodalOutputVariables(), NEML2Action::setupParameterDerivativeMappings(), SetupQuadratureAction::SetupQuadratureAction(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), XYFrontalDelaunayGenerator::targetArea(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), TorchPreKernel::TorchPreKernel(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), CylinderComponent::translation(), MeshTriangulationUtils::triangulateWithDelaunay(), TriToQuadConverter::TriToQuadConverter(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), UserObjectBase::UserObjectBase(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), SolutionAux::validateVariable(), MFEMProblem::validateVariableNumericType(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYFrontalDelaunayGenerator::XYFrontalDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

◆ parameters()

const InputParameters & MooseBase::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 131 of file MooseBase.h.

131{ return _pars; }

Referenced by AddActionComponentAction::act(), CommonOutputAction::act(), CSGOnlyAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), SplitMeshAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), FEProblemBase::addAuxKernel(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addAuxVariable(), FEProblemBase::addBoundaryCondition(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::addDefaultSteadyStateConvergence(), MFEMProblem::addDefaultWeakForm(), MFEMEigenproblem::addDefaultWeakForm(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addFunctorMaterial(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVGradientMethod(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), FEProblemBase::addIndicator(), MFEMProblem::addIndicator(), FEProblemBase::addInitialCondition(), MFEMProblem::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), FEProblemBase::addKernel(), MFEMProblem::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), MFEMProblem::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), MFEMProblem::addObject(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), FEProblemBase::addPostprocessor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), MFEMProblem::addProblemComposer(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), FEProblemBase::addTransfer(), MFEMProblem::addTransfer(), FEProblemBase::addUserObject(), DisplacedProblem::addVariable(), MFEMEigenproblem::addVariable(), MFEMProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), MFEMProblem::addVectorPostprocessor(), MFEMProblem::addWeakForm(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), assemble_l2(), Moose::assemble_matrix(), Action::associateWithParameter(), AuxKernelBase::AuxKernelBase(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), MeshGenerator::checkGetMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), Moose::compute_bounds(), Moose::compute_jacobian(), Moose::compute_nearnullspace(), Moose::compute_nullspace(), Moose::compute_postcheck(), Moose::compute_transpose_nullspace(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), MooseMeshUtils::copyIntoMesh(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), ElementMaterialSampler::ElementMaterialSampler(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), Executor::Executor(), Exodus::Exodus(), ElementSubdomainModifierBase::extrapolatePolynomial(), FEProblem::FEProblem(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), Moose::PeriodicBCHelper::getParams(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), AuxKernelBase::getVariableHelper(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), MeshGeneratorSystem::hasDataDrivenAllowed(), AttribSystem::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), FullSolveMultiApp::initialSetup(), FEProblemBase::initNullSpaceVectors(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MooseObject::isKokkosObject(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), MooseApp::MooseApp(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< T >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), ParsedReporterBase::ParsedReporterBase(), ParsedScalarReporter::ParsedScalarReporter(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), FEProblemBase::setAuxKernelParamsAndLog(), FEProblemBase::setInputParametersFEProblem(), FEProblem::setInputParametersFEProblem(), FEProblemBase::setResidualObjectParamsAndLog(), SideSetsGeneratorBase::setup(), NonlinearSystemBase::shouldEvaluatePreSMOResidual(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), and VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl().

◆ paramInfo()

template<typename... Args>
void MooseBase::paramInfo ( const std::string &  param,
Args...  args 
) const
inherited

Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseInfo - only printing a message using the given args.

Definition at line 471 of file MooseBase.h.

472{
473 mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
474}
std::string paramMessage(const std::string &param, Args... args) const

Referenced by GridPartitioner::_do_partition(), ComboMarker::ComboMarker(), Control::Control(), FEProblemBase::execMultiApps(), FunctorIC::FunctorIC(), and TransientMultiApp::TransientMultiApp().

◆ paramWarning() [1/2]

template<typename... Args>
void MooseBase::paramWarning ( const std::string &  param,
Args...  args 
) const
inherited

Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.

If this object's parameters were not created directly by the Parser, then this function falls back to the normal behavior of mooseWarning - only printing a message using the given args.

Definition at line 464 of file MooseBase.h.

465{
466 mooseWarning(_pars.paramMessage(param, std::forward<Args>(args)...));
467}

◆ paramWarning() [2/2]

template<typename... Args>
void SolutionInvalidInterface::paramWarning ( const std::string &  param,
Args...  args 
) const
inlineinherited

◆ queryParam()

template<typename T >
const T * MooseBase::queryParam ( const std::string &  name) const
inherited

Query a parameter for the object.

If a parameter of the given name and type does not exist or if the parameter is not valid, nullptr will be returned

Parameters
nameThe name of the parameter
Returns
A pointer to the parameter value, if it exists

Definition at line 413 of file MooseBase.h.

414{
415 return _pars.queryParam<T>(name);
416}
const T * queryParam(const std::string &name) const
Query a parameter.

Referenced by MFEMExecutedObject::getRequestedItems(), and MFEMGeometricMultigridSolver::MFEMGeometricMultigridSolver().

◆ radialExpansionRatio()

Real AdvancedExtruderGenerator::radialExpansionRatio ( const Real  t) const
protected

Calculate the share of the radial expansion to apply at the local node This share goes from 0 at the beginning of the extrusion to 1 at the end.

Parameters
tcoordinate along the curve (in the axial direction of extrusion)

Definition at line 1792 of file AdvancedExtruderGenerator.C.

1793{
1794 // NOTE: All functions added to this method must obey the following: f(0)=0, f(1)=1 for all t in
1795 // [0,1].
1797 {
1798 case 0:
1799 return t;
1800 // Only linear and cubic implemented
1801 default:
1804 MathUtils::pow(t, 2) +
1806 }
1807}
T pow(T x, int e)
Definition MathUtils.h:92

Referenced by generate().

◆ registerInvalidSolutionInternal()

InvalidSolutionID SolutionInvalidInterface::registerInvalidSolutionInternal ( const std::string &  message,
const bool  warning 
) const
protectedinherited

Definition at line 55 of file SolutionInvalidInterface.C.

57{
59 _si_moose_base.type(), message, warning);
60}
InvalidSolutionID registerInvalidity(const std::string &object_type, const std::string &message, const bool warning)
Call to register an invalid calculation.

◆ setHasGenerateCSG()

void MeshGenerator::setHasGenerateCSG ( InputParameters &  params)
staticinherited

Sets that a mesh generator has a generateCSG() implementation.

This must be called in the validParams() implementation for all mesh generators that implement generateCSG().

Definition at line 94 of file MeshGenerator.C.

95{
96 params.set<bool>("_has_generate_csg") = true;
97}

◆ setHasGenerateData()

void MeshGenerator::setHasGenerateData ( InputParameters &  params)
staticinherited

Sets that a mesh generator has a generateData() implementation.

This must be called in the validParams() implementation for all mesh generators that implement generateData().

Definition at line 82 of file MeshGenerator.C.

83{
84 params.set<bool>("_has_generate_data") = true;
85}

Referenced by AddMetaDataGenerator::validParams().

◆ setMeshProperty() [1/2]

template<typename T , typename... Args>
T & MeshGenerator::setMeshProperty ( const std::string &  data_name,
Args &&...  args 
)
protectedinherited

Method for updating attributes to the mesh meta-data store, which can only be invoked in the MeshGenerator generate routine only if the mesh generator property has already been declared.

Definition at line 565 of file MeshGenerator.h.

566{
567 if (_app.actionWarehouse().getCurrentTaskName() != "execute_mesh_generators")
568 mooseError("Updating mesh meta data with setMeshProperty() can only be called during "
569 "MeshGenerator::generate()");
570
571 if (!hasMeshProperty(data_name))
572 mooseError("Failed to get the mesh property '", data_name, "'");
574 RestartableData<T> * T_value = dynamic_cast<RestartableData<T> *>(value);
575 if (!T_value)
576 mooseError("While retrieving mesh property '",
577 data_name,
578 "' with type '",
579 MooseUtils::prettyCppType<T>(),
580 "',\nthe property was found with type '",
581 value->type(),
582 "'");
583
584 // Set the value if someone provided arguments to set it to
585 if constexpr (sizeof...(args) > 0)
586 T_value->set() = T(std::forward<Args>(args)...);
587
588 return T_value->set();
589}
const std::string & getCurrentTaskName() const
ActionWarehouse & actionWarehouse()
Return a writable reference to the ActionWarehouse associated with this app.
Definition MooseApp.h:214
Abstract definition of a RestartableData value.

◆ setMeshProperty() [2/2]

template<typename T >
T & MeshGenerator::setMeshProperty ( const std::string &  data_name,
const T &  data_value 
)
inlineprotectedinherited

Definition at line 251 of file MeshGenerator.h.

252 {
253 return setMeshProperty<T, const T &>(data_name, data_value);
254 }

◆ setMeshPropertyHelper()

RestartableDataValue & MeshGenerator::setMeshPropertyHelper ( const std::string &  data_name)
privateinherited

Helper for getting a writable reference to a mesh property, used in declareMeshProperty and setMeshProperty.

Definition at line 458 of file MeshGenerator.C.

Referenced by MeshGenerator::declareMeshProperty(), and MeshGenerator::setMeshProperty().

◆ type()

const std::string & MooseBase::type ( ) const
inlineinherited

Get the type of this class.

Returns
the name of the type of this class

Definition at line 93 of file MooseBase.h.

94 {
95 mooseAssert(_type.size(), "Empty type");
96 return _type;
97 }
const std::string & _type
The type of this class.
Definition MooseBase.h:378

Referenced by CreateProblemDefaultAction::act(), MaterialOutputAction::act(), SetupDebugAction::act(), FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addConvergence(), MFEMProblem::addDefaultProblemComposer(), MFEMProblem::addDefaultWeakForm(), FEProblemBase::addDistribution(), DistributedRectilinearMeshGenerator::addElement(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFESpaceHierarchy(), FEProblemBase::addFunction(), MFEMProblem::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addObject(), FEProblemBase::addObject(), DistributedRectilinearMeshGenerator::addPoint(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addVectorPostprocessor(), SubProblem::addVectorTag(), DisplacedProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelBase::AuxKernelBase(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), MooseMesh::buildHRefinementAndCoarseningMaps(), MooseMesh::buildLowerDMesh(), MooseMesh::buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshGenerator::checkGetMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), FEProblemBase::checkUserObjectNameCollision(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), MeshInfo::CombinedInfos< ElemInfoMap, ElemInfoItems >::CombinedInfos(), ElemElemConstraint::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighJacobian(), DGKernel::computeElemNeighJacobian(), ADDGKernel::computeElemNeighJacobian(), ElemElemConstraint::computeElemNeighResidual(), ArrayDGKernel::computeElemNeighResidual(), DGKernel::computeElemNeighResidual(), ADDGKernel::computeElemNeighResidual(), ArrayDGLowerDKernel::computeLowerDJacobian(), DGLowerDKernel::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDJacobian(), LowerDIntegratedBC::computeLowerDJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpJacobian(), HFEMDirichletBC::computeLowerDQpJacobian(), ArrayHFEMDiffusion::computeLowerDQpJacobian(), HFEMDiffusion::computeLowerDQpJacobian(), ArrayLowerDIntegratedBC::computeLowerDQpOffDiagJacobian(), ArrayDGLowerDKernel::computeLowerDQpOffDiagJacobian(), ArrayHFEMDirichletBC::computeLowerDQpOffDiagJacobian(), HFEMDirichletBC::computeLowerDQpOffDiagJacobian(), FEProblemBase::computeMultiAppsDT(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), DGKernel::computeOffDiagElemNeighJacobian(), ADDGKernel::computeOffDiagElemNeighJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGConvection::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), DGDiffusion::computeQpJacobian(), InterfaceDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), DGConvection::computeQpResidual(), ADDGAdvection::computeQpResidual(), ADDGDiffusion::computeQpResidual(), DGDiffusion::computeQpResidual(), HFEMDiffusion::computeQpResidual(), HFEMTestJump::computeQpResidual(), HFEMTrialJump::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), InterfaceReaction::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), ArrayHFEMDiffusion::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), FEProblemBase::createQRules(), DisplacedProblem::createQRules(), MooseApp::createRecoverablePerfGraph(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), MeshGenerator::declareMeshProperty(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), FEProblemBase::execMultiAppTransfers(), SteadyBase::execute(), WebServerControl::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), SubdomainPerElementGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), MooseServer::getSyntaxMetadata(), FEProblemBase::getTransfers(), FEProblemBase::getUOQuery(), SubProblem::getVectorTags(), DisplacedProblem::getVectorTags(), EqualValueBoundaryConstraint::ghostPrimary(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), TimeIntegrator::init(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), LinearFVAdvection::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVDiffusion::initialSetup(), MultiAppConservativeTransfer::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MooseApp::MooseApp(), MooseObject::MooseObject(), SubProblem::numVectorTags(), DisplacedProblem::numVectorTags(), AdvancedOutput::output(), Console::output(), ConsoleUtils::outputExecutionInformation(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), MooseServer::parseDocumentForDiagnostics(), PointInUnionCheckUO::PointInUnionCheckUO(), MooseMesh::prepare(), MFEMFunctorMaterial::processLiterals(), ProjectedStatefulMaterialStorageAction::processProperty(), MooseApp::recursivelyCreateExecutors(), SolutionInvalidInterface::registerInvalidSolutionInternal(), FEProblemBase::restoreMultiApps(), MeshRepairGenerator::separateSubdomainsByElementType(), FEProblemBase::setCoupling(), MooseApp::setupOptions(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), Reporter::store(), MooseBase::typeAndName(), AuxScalarKernel::uOld(), ScalarKernelBase::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

◆ typeAndName()

std::string MooseBase::typeAndName ( ) const
inherited

Get the class's combined type and name; useful in error handling.

Returns
The type and name of this class in the form '<type()> "<name()>"'.

Definition at line 57 of file MooseBase.C.

58{
59 return type() + std::string(" \"") + name() + std::string("\"");
60}

Referenced by MaterialPropertyStorage::addProperty(), FEProblemBase::checkUserObjectNameCollision(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< T >::finalize(), ReporterData::getReporterInfo(), MFEMSamplerBase::initialSetup(), MFEMVariableSamplerBase::initialSetup(), WebServerControl::outputMessage(), and Action::timedAct().

◆ uniqueName()

MooseObjectName MooseBase::uniqueName ( ) const
inherited
Returns
The unique name for accessing input parameters of this object in the InputParameterWarehouse

Definition at line 69 of file MooseBase.C.

70{
71 if (!_pars.have_parameter<std::string>(unique_name_param))
72 mooseError("uniqueName(): Object does not have a unique name");
73 return MooseObjectName(_pars.get<std::string>(unique_name_param));
74}
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
static const std::string unique_name_param
The name of the parameter that contains the unique object name.
Definition MooseBase.h:57
A class for storing the names of MooseObject by tag and object name.

Referenced by MooseBase::connectControllableParams(), and Action::uniqueActionName().

◆ uniqueParameterName()

MooseObjectParameterName MooseBase::uniqueParameterName ( const std::string &  parameter_name) const
inherited
Returns
The unique parameter name of a valid parameter of this object for accessing parameter controls

Definition at line 63 of file MooseBase.C.

64{
65 return MooseObjectParameterName(getBase(), name(), parameter_name);
66}
const std::string & getBase() const
Definition MooseBase.h:147

◆ validParams()

InputParameters AdvancedExtruderGenerator::validParams ( )
static

Definition at line 58 of file AdvancedExtruderGenerator.C.

59{
61
63 "Extrudes a 1D mesh into 2D, or a 2D mesh into 3D, and supports a variable height for each "
64 "elevation, variable number of layers within each elevation, variable growth factors of "
65 "axial element sizes within each elevation and remap subdomain_ids, boundary_ids and element "
66 "extra integers within each elevation as well as interface boundaries between neighboring "
67 "elevation layers, as well as following a 1D curve and modifying the radial (normal to "
68 "the extrusion axis) extent of the geometry. It can also extrude each node along the "
69 "averaged normal of the elements it is connected to, which is useful to create boundary "
70 "layers.");
71
72 params.addRequiredParam<MeshGeneratorName>("input", "The mesh to extrude");
73
74 // User input of extrusion heights / axial discretization
75 params.addParam<std::vector<Real>>("heights", {}, "The height of each elevation");
76 params.addRangeCheckedParam<std::vector<Real>>(
77 "biases", "biases>0.0", "The axial growth factor used for mesh biasing for each elevation.");
78 params.addParam<std::vector<unsigned int>>(
79 "num_layers",
80 {},
81 "The number of layers for each elevation - must be num_elevations in length!");
82
83 // Swaps on every height
84 params.addParam<std::vector<std::vector<SubdomainName>>>(
85 "subdomain_swaps",
86 {},
87 "For each row, every two entries are interpreted as a pair of "
88 "'from' and 'to' to remap the subdomains for that elevation. Subdomains may be specified by "
89 "name or ID. A 'to' name absent from the input mesh creates a new subdomain");
90 params.addParam<std::vector<std::vector<boundary_id_type>>>(
91 "boundary_swaps",
92 {},
93 "For each row, every two entries are interpreted as a pair of "
94 "'from' and 'to' to remap the boundaries for that elevation");
95 params.addParam<std::vector<std::string>>(
96 "elem_integer_names_to_swap",
97 {},
98 "Array of element extra integer names that need to be swapped during extrusion.");
99 params.addParam<std::vector<std::vector<std::vector<dof_id_type>>>>(
100 "elem_integers_swaps",
101 {},
102 "For each row, every two entries are interpreted as a pair of 'from' and 'to' to remap the "
103 "element extra integer for that elevation. If multiple element extra integers need to be "
104 "swapped, the enties are stacked based on the order provided in "
105 "'elem_integer_names_to_swap' to form the third dimension.");
106
107 // Direction parameter
108 params.addParam<Point>("direction",
109 "A vector that points in the direction to extrude (note, this will be "
110 "normalized internally - so don't worry about it here)");
111 params.addParam<MeshGeneratorName>(
112 "extrusion_curve",
113 "Name of the mesh generator providing the line mesh curve to be extruded along. The "
114 "extrusion path follows the node order in the line mesh");
116 "start_extrusion_direction",
117 "A vector that points in the starting direction for extruding along a curve. This vector "
118 "should be the tangent vector at the FIRST node of the extrusion curve. Vector will be "
119 "normalized in code, so don't worry about it here.");
121 "end_extrusion_direction",
122 "A vector that points in the ending direction for extruding along a curve. This vector "
123 "should be the tangent vector at the LAST node of the extrusion curve. Vector will be "
124 "normalized in code, so don't worry about it here.");
125 params.addParam<bool>(
126 "extrude_along_node_normals",
127 false,
128 "If true, each node is extruded along the averaged normal of the elements it is connected "
129 "to, instead of along a fixed 'direction'. Only supported when extruding a 1D mesh in a "
130 "plane of constant z into 2D, or a 2D surface mesh into 3D. This is useful to create "
131 "boundary layers.");
132
133 // Boundaries and interfaces
134 params.addParam<BoundaryName>(
135 "top_boundary",
136 "The boundary name to set on the top boundary. If omitted an ID will be generated.");
137 params.addParam<BoundaryName>(
138 "bottom_boundary",
139 "The boundary name to set on the bottom boundary. If omitted an ID will be generated.");
140 params.addParam<BoundaryName>(
141 "side_boundary",
142 "The boundary name to add the extruded exterior sides of the input mesh, and their nodes, "
143 "to. If omitted, no side boundary is added.");
144 params.addParam<std::vector<std::vector<subdomain_id_type>>>(
145 "upward_boundary_source_blocks", "Block ids used to generate upward interface boundaries.");
146 params.addParam<std::vector<std::vector<boundary_id_type>>>("upward_boundary_ids",
147 "Upward interface boundary ids.");
148 params.addParam<std::vector<std::vector<subdomain_id_type>>>(
149 "downward_boundary_source_blocks",
150 "Block ids used to generate downward interface boundaries.");
151 params.addParam<std::vector<std::vector<boundary_id_type>>>("downward_boundary_ids",
152 "Downward interface boundary ids.");
153
154 // Radial transformations
155 params.addParam<Real>("twist_pitch",
156 0,
157 "Pitch for helicoidal extrusion around an axis going through the origin "
158 "following the direction vector");
159 params.addParam<Real>("end_radial_extent",
160 0,
161 "If modifying the radial extent of the extruded geometry, final radial "
162 "extent to reach at the end of the extrusion process");
163 MooseEnum radial_growth_methods("linear cubic", "linear");
164 params.addParam<MooseEnum>("radial_growth_method",
165 radial_growth_methods,
166 "Functional form to change radius while extruding along curve.");
167 params.addParam<Real>("start_radial_growth_rate", 1., "Starting rate of radial expansion.");
168 params.addParam<Real>("end_radial_growth_rate", 1., "Ending rate of radial expansion.");
169
170 params.addParamNamesToGroup("top_boundary bottom_boundary side_boundary "
171 "upward_boundary_source_blocks upward_boundary_ids "
172 "downward_boundary_source_blocks downward_boundary_ids",
173 "Boundary Assignment");
175 "subdomain_swaps boundary_swaps elem_integer_names_to_swap elem_integers_swaps", "ID Swap");
176 params.addParamNamesToGroup("extrusion_curve start_extrusion_direction end_extrusion_direction",
177 "Extrusion along curve");
178 params.addParamNamesToGroup("twist_pitch end_radial_extent radial_growth_method "
179 "start_radial_growth_rate end_radial_growth_rate",
180 "Radial transformation");
181
182 return params;
183}
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
This method takes a space delimited list of parameter names and adds them to the specified group name...
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
static InputParameters validParams()

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 375 of file MooseBase.h.

Referenced by AB2PredictorCorrector::AB2PredictorCorrector(), FEProblemBase::acceptInvalidSolution(), FEProblemBase::addAnyRedistributers(), MeshGenerator::addChildMeshGenerator(), FEProblemBase::addMaterialHelper(), MeshGenerator::addMeshSubgenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addOutput(), MeshGenerator::addParentMeshGenerator(), FEProblemBase::allowOutput(), AStableDirk4::AStableDirk4(), FileMesh::buildMesh(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), MooseMesh::cacheFVElementalDoFs(), DefaultNonlinearConvergence::checkConvergence(), MeshGenerator::checkGetMesh(), FEProblemBase::checkICRestartError(), FEProblemBase::checkProblemIntegrity(), LibmeshPartitioner::clone(), BlockWeightedPartitioner::clone(), CopyMeshPartitioner::clone(), GridPartitioner::clone(), HierarchicalGridPartitioner::clone(), PetscExternalPartitioner::clone(), RandomPartitioner::clone(), SingleRankPartitioner::clone(), ElementPointNeighborLayers::clone(), ElementSideNeighborLayers::clone(), GhostAllPointNeighbors::clone(), GhostBoundary::clone(), GhostEverything::clone(), GhostHigherDLowerDPointNeighbors::clone(), GhostLowerDElems::clone(), GhostPrimaryFace::clone(), ProxyRelationshipManager::clone(), RedistributeProperties::clone(), SampledOutput::cloneMesh(), FEProblemBase::computeJacobianSys(), FEProblemBase::computeJacobianTags(), FEProblemBase::computeLinearSystemTags(), FEProblemBase::computeResidualAndJacobian(), FEProblemBase::computeResidualSys(), FEProblemBase::computeResidualTags(), Console::Console(), TimeStepper::constrainStep(), Control::Control(), CopyMeshPartitioner::CopyMeshPartitioner(), MultiApp::createApp(), MultiApp::createApps(), MoveBoundaryNodesToCurveGenerator::curveGenerator(), FEProblemBase::customSetup(), MeshGenerator::declareMeshProperty(), MeshGenerator::declareNullMeshName(), MooseMesh::determineUseDistributedMesh(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), DumpObjectsProblem::dumpVariableHelper(), EigenExecutionerBase::EigenExecutionerBase(), EigenKernel::EigenKernel(), PIDTransientControl::execute(), Eigenvalue::execute(), InversePowerMethod::execute(), NonlinearEigen::execute(), SteadyBase::execute(), TransientBase::execute(), MFEMSteady::execute(), PseudoTimestep::execute(), IterationInfo::execute(), EigenProblem::execute(), Executioner::Executioner(), Executioner::Executioner(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), FEProblemBase::FEProblemBase(), FileOutput::FileOutput(), TorchAssembly::finalize(), ChangeOverFixedPointPostprocessor::finalize(), RadialAverage::finalize(), FixedPointSolve::FixedPointSolve(), FEProblemBase::forceOutput(), FullSolveMultiApp::FullSolveMultiApp(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVAdvection::FVAdvection(), FileMeshGenerator::generate(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), MeshGenerator::getCSGBaseByName(), FEProblemBase::getExecutor(), MeshGenerator::getMeshByName(), NumFixedPointIterations::getValue(), NumRelationshipManagers::getValue(), GhostingUserObject::GhostingUserObject(), MooseMesh::init(), Eigenvalue::init(), InversePowerMethod::init(), NonlinearEigen::init(), TransientBase::init(), MFEMMesh::init(), FEProblemBase::init(), CompositionDT::init(), SubProblem::initialSetup(), PIDTransientControl::initialSetup(), RealFunctionControl::initialSetup(), TimePeriod::initialSetup(), EigenProblemSolve::initialSetup(), FEProblemSolve::initialSetup(), Console::initialSetup(), FEProblemBase::initialSetup(), BoundaryMeshBuilder::initialSetup(), AdvancedOutput::initOutputList(), FEProblemBase::initPetscOutputAndSomeSolverSettings(), EigenProblem::initPetscOutputAndSomeSolverSettings(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), FEProblemBase::meshChanged(), MeshGenerator::MeshGenerator(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer(), EigenExecutionerBase::normalizeSolution(), NumFailedTimeSteps::NumFailedTimeSteps(), Checkpoint::output(), Exodus::output(), Nemesis::output(), PerfGraphOutput::output(), Tecplot::output(), MortarNodalGeometryOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Exodus::outputEmptyTimestep(), Console::outputInput(), Exodus::outputInput(), Exodus::outputNodalVariables(), JSONOutput::outputReporters(), Output::outputStep(), SampledOutput::outputStep(), FEProblemBase::outputStep(), Console::outputSystemInformation(), JSONOutput::outputSystemInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MultiApp::parentOutputPositionChanged(), TransientBase::preExecute(), FEProblemBase::projectSolution(), AnnularMesh::safeClone(), ConcentricCircleMesh::safeClone(), FileMesh::safeClone(), GeneratedMesh::safeClone(), ImageMesh::safeClone(), MeshGeneratorMesh::safeClone(), PatternedMesh::safeClone(), RinglebMesh::safeClone(), SpiralAnnularMesh::safeClone(), StitchedMesh::safeClone(), TiledMesh::safeClone(), MFEMFileMesh::safeClone(), MFEMMeshGeneratorMesh::safeClone(), MultiApp::setAppOutputFileBase(), FileOutput::setFileBaseInternal(), MeshGenerator::setMeshProperty(), MeshGenerator::setMeshPropertyHelper(), FEProblemBase::setRestartFile(), TransientMultiApp::setupApp(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), Output::setWallTimeIntervalFromCommandLineParam(), SideSetExtruderGenerator::SideSetExtruderGenerator(), SolutionInvalidityReporter::SolutionInvalidityReporter(), FixedPointSolve::solve(), ActuallyExplicitEuler::solve(), FEProblemBase::solve(), EigenProblem::solve(), FEProblemBase::solveLinearSystem(), PetscOutput::solveSetup(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), FEProblemBase::subdomainSetup(), FEProblemBase::theWarehouse(), TimeExtremeValue::TimeExtremeValue(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), SubProblem::timestepSetup(), PIDTransientControl::timestepSetup(), FEProblemBase::timestepSetup(), TransientBase::TransientBase(), MooseMesh::update(), TorchFEInterpolation::updateDofMap(), TorchFEInterpolation::updateGradPhi(), TorchFEInterpolation::updateInterpolations(), FEProblemBase::updateMortarMesh(), TorchFEInterpolation::updatePhi(), Console::write(), XYQuadrilateralMeshFromBoundaryCurve::XYQuadrilateralMeshFromBoundaryCurve(), and FEProblemBase::~FEProblemBase().

◆ _biases

const std::vector<Real> AdvancedExtruderGenerator::_biases
protected

Bias growth factor of each elevation.

Definition at line 36 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _bottom_boundary

const BoundaryName AdvancedExtruderGenerator::_bottom_boundary
protected

Definition at line 83 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _boundary_swap_pairs

std::vector<std::unordered_map<boundary_id_type, boundary_id_type> > AdvancedExtruderGenerator::_boundary_swap_pairs
protected

Easier to work with version of _boundary_swaps.

Definition at line 58 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _boundary_swaps

const std::vector<std::vector<boundary_id_type> >& AdvancedExtruderGenerator::_boundary_swaps
protected

Boundaries to swap out for each elevation.

Definition at line 45 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _child_mesh_generators

std::set<const MeshGenerator *, Comparator> MeshGenerator::_child_mesh_generators
privateinherited

The MeshGenerators that are children to this MeshGenerator.

Definition at line 519 of file MeshGenerator.h.

Referenced by MeshGenerator::addChildMeshGenerator(), and MeshGenerator::getChildMeshGenerators().

◆ _console

const ConsoleStream ConsoleStreamInterface::_console
inherited

An instance of helper class to write streams to the Console objects.

Definition at line 31 of file ConsoleStreamInterface.h.

Referenced by IterationAdaptiveDT::acceptStep(), MaterialOutputAction::act(), MeshOnlyAction::act(), SetupDebugAction::act(), FEProblemBase::adaptMesh(), Adaptivity::adaptMesh(), PerfGraph::addToExecutionList(), SimplePredictor::apply(), SystemBase::applyScalingFactors(), MultiApp::backup(), FEProblemBase::backupMultiApps(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), DefaultSteadyStateConvergence::checkConvergence(), MeshDiagnosticsGenerator::checkElementOverlap(), MeshDiagnosticsGenerator::checkElementTypes(), MeshDiagnosticsGenerator::checkElementVolumes(), FEProblemBase::checkExceptionAndStopSolve(), SolverSystem::checkInvalidSolution(), MeshDiagnosticsGenerator::checkLocalJacobians(), MeshDiagnosticsGenerator::checkNonConformalMesh(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonConformingFaces(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), MeshDiagnosticsGenerator::checkPolygons(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkResidualConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), CoarsenSurfaceMeshAlongSidesetGenerator::coarsenAlongSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), FEProblemBase::computeLinearSystemTags(), LinearSystem::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), TimeStepper::constrainStep(), IterationAdaptiveDT::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), Eigenvalue::execute(), SteadyBase::execute(), MFEMSteady::execute(), MessageFromInput::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), SidesetAroundSubdomainUpdater::finalize(), ElementQualityChecker::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), CoarsenBlockGenerator::generate(), CoarsenSurfaceMeshAlongSidesetGenerator::generate(), OrientSurfaceMeshGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), StitchMeshGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), SubProblem::initialSetup(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), SurfaceDelaunayGeneratorBase::meshNormalDeviation2D(), MooseBase::mooseDeprecated(), MooseBase::mooseDeprecatedNoTrace(), MooseBase::mooseInfo(), MooseBase::mooseWarning(), MooseBase::mooseWarningNonPrefixed(), NEML2Action::NEML2Action(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), Console::output(), DOFMapOutput::output(), MaterialPropertyDebugOutput::output(), PerfGraphOutput::output(), ReporterDebugOutput::output(), SolutionInvalidityOutput::output(), VariableResidualNormsDebugOutput::output(), ControlOutput::outputActiveObjects(), ControlOutput::outputChangedControls(), ControlOutput::outputControls(), Console::outputInput(), WebServerControl::outputMessage(), Console::outputPostprocessors(), PseudoTimestep::outputPseudoTimestep(), Console::outputReporters(), DefaultMultiAppFixedPointConvergence::outputResidualNorm(), Console::outputScalarVariables(), Console::outputSystemInformation(), FEProblemBase::possiblyRebuildGeomSearchPatches(), EigenExecutionerBase::postExecute(), AB2PredictorCorrector::postSolve(), DefaultMultiAppFixedPointConvergence::preLoop(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionGroups(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), BlockRestrictionDebugOutput::printBoundaryRestrictionGroups(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), PicardSolve::printFixedPointConvergenceHistory(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), FixedPointSolve::printFixedPointConvergenceReason(), PerfGraphLivePrint::printLiveMessage(), MaterialPropertyDebugOutput::printMaterialMap(), PerfGraphLivePrint::printStats(), NEML2Action::printSummary(), AutomaticMortarGeneration::projectPrimaryNodesSinglePair(), AutomaticMortarGeneration::projectSecondaryNodesSinglePair(), CoarsenBlockGenerator::recursiveCoarsen(), SolutionTimeAdaptiveDT::rejectStep(), MultiApp::restore(), FEProblemBase::restoreMultiApps(), FEProblemBase::restoreSolutions(), NonlinearSystemBase::setInitialSolution(), MooseApp::setupOptions(), Checkpoint::shouldOutput(), SubProblem::showFunctorRequestors(), SubProblem::showFunctors(), FullSolveMultiApp::showStatusMessage(), FEProblemSolve::solve(), FixedPointSolve::solve(), LinearSystem::solve(), NonlinearSystem::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), ExplicitTVDRK2::solve(), ImplicitMidpoint::solve(), LStableDirk2::solve(), LStableDirk3::solve(), LStableDirk4::solve(), EigenProblem::solve(), FixedPointSolve::solveStep(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), TransientBase::takeStep(), MFEMTransient::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _data_only

const bool MeshGenerator::_data_only
privateinherited

Whether or not this mesh generator will run in data only mode.

Definition at line 530 of file MeshGenerator.h.

Referenced by MeshGenerator::isDataOnly().

◆ _direction

Point AdvancedExtruderGenerator::_direction
protected

The direction of the extrusion.

Definition at line 64 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _downward_boundary_ids

const std::vector<std::vector<boundary_id_type> > AdvancedExtruderGenerator::_downward_boundary_ids
protected

Downward boundary interfaces for each layer of elevation.

Definition at line 100 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _downward_boundary_source_blocks

const std::vector<std::vector<subdomain_id_type> > AdvancedExtruderGenerator::_downward_boundary_source_blocks
protected

The list of input mesh's blocks that need to be assigned downward boundary interfaces for each layer of elevation.

Definition at line 97 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _elem_integer_indices_to_swap

std::vector<unsigned int> AdvancedExtruderGenerator::_elem_integer_indices_to_swap
protected

Definition at line 49 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _elem_integer_names_to_swap

const std::vector<std::string>& AdvancedExtruderGenerator::_elem_integer_names_to_swap
protected

Names and indices of extra element integers to swap.

Definition at line 48 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _elem_integers_swap_pairs

std::vector<std::unordered_map<dof_id_type, dof_id_type> > AdvancedExtruderGenerator::_elem_integers_swap_pairs
protected

Easier to work with version of _elem_integers_swaps.

Definition at line 61 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _elem_integers_swaps

const std::vector<std::vector<std::vector<dof_id_type> > >& AdvancedExtruderGenerator::_elem_integers_swaps
protected

Extra element integers to swap out for each elevation and each element interger name.

Definition at line 52 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator().

◆ _enabled

const bool& MooseObject::_enabled
protectedinherited

Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.

Definition at line 71 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _end_extrusion_direction

const RealVectorValue AdvancedExtruderGenerator::_end_extrusion_direction
protected

Extrusion direction for the final layer of the extrusion.

Definition at line 72 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _end_radial_extent

const Real AdvancedExtruderGenerator::_end_radial_extent
protected

Radial extent of the extruded geometry at the end of the extrusion.

Definition at line 107 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _end_radial_growth_rate

const Real AdvancedExtruderGenerator::_end_radial_growth_rate
protected

Derivative of the radial expansion function at the end of the extrusion.

Definition at line 113 of file AdvancedExtruderGenerator.h.

Referenced by radialExpansionRatio().

◆ _extrude_along_curve

bool AdvancedExtruderGenerator::_extrude_along_curve
protected

Whether we are extruding along a curve.

Definition at line 74 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _extrude_along_node_normals

const bool AdvancedExtruderGenerator::_extrude_along_node_normals
protected

Whether to extrude each node along the averaged normal of the elements connected to it.

Definition at line 77 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _extrusion_curve

std::unique_ptr<MeshBase>& AdvancedExtruderGenerator::_extrusion_curve
protected

Curve mesh to extrude along.

Definition at line 68 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _factory

Factory& ParallelParamObject::_factory
protectedinherited

◆ _has_bottom_boundary

const bool AdvancedExtruderGenerator::_has_bottom_boundary
protected

Definition at line 82 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _has_side_boundary

const bool AdvancedExtruderGenerator::_has_side_boundary
protected

Whether to add the lateral exterior sides (and their nodes) to a boundary.

Definition at line 86 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _has_top_boundary

const bool AdvancedExtruderGenerator::_has_top_boundary
protected

Definition at line 79 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _heights

const std::vector<Real>& AdvancedExtruderGenerator::_heights
protected

Height of each elevation.

Definition at line 33 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _input

std::unique_ptr<MeshBase>& AdvancedExtruderGenerator::_input
protected

Mesh that comes from another generator.

Definition at line 30 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _mesh

MooseMesh* const MeshGenerator::_mesh
protectedinherited

◆ _meta_data_app

MooseApp& MeshMetaDataInterface::_meta_data_app
privateinherited

Reference to the application.

Definition at line 122 of file MeshMetaDataInterface.h.

Referenced by MeshMetaDataInterface::getMeshPropertyInternal(), and MeshMetaDataInterface::hasMeshProperty().

◆ _meta_data_object

const MooseObject* const MeshMetaDataInterface::_meta_data_object
privateinherited

The MooseObject (if any); used for better error handling.

Definition at line 125 of file MeshMetaDataInterface.h.

Referenced by MeshMetaDataInterface::mooseErrorInternal().

◆ _name

const std::string& MooseBase::_name
protectedinherited

The name of this class.

Definition at line 381 of file MooseBase.h.

Referenced by AddFieldSplitAction::act(), AddBCAction::act(), AddConstraintAction::act(), AddControlAction::act(), AddConvergenceAction::act(), AddCorrectorAction::act(), AddDamperAction::act(), AddDGKernelAction::act(), AddDiracKernelAction::act(), AddDistributionAction::act(), AddFunctionAction::act(), AddFunctorMaterialAction::act(), AddFVBCAction::act(), AddFVGradientMethodAction::act(), AddFVInitialConditionAction::act(), AddFVInterfaceKernelAction::act(), AddFVInterpolationMethodAction::act(), AddFVKernelAction::act(), AddHDGKernelAction::act(), AddIndicatorAction::act(), AddInitialConditionAction::act(), AddInterfaceKernelAction::act(), AddKernelAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddMarkerAction::act(), AddMaterialAction::act(), AddMeshDivisionAction::act(), AddMeshGeneratorAction::act(), AddMeshModifiersAction::act(), AddMultiAppAction::act(), AddNodalKernelAction::act(), AddOutputAction::act(), AddPositionsAction::act(), AddPostprocessorAction::act(), AddReporterAction::act(), AddSamplerAction::act(), AddScalarKernelAction::act(), AddTimesAction::act(), AddTimeStepperAction::act(), AddTransferAction::act(), AddUserObjectAction::act(), AddVectorPostprocessorAction::act(), PartitionerAction::act(), ReadExecutorParamsAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), AddMFEMFESpaceAction::act(), AddMFEMFESpaceHierarchyAction::act(), AddMFEMProblemComposerAction::act(), AddMFEMSolverAction::act(), AddMFEMSubMeshAction::act(), AddMFEMWeakFormAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), MultiApp::fillPositions(), CentroidMultiApp::fillPositions(), QuadraturePointMultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenCurvesGenerator::generate(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), MooseBase::MooseBase(), MooseBase::name(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseBase::setData(), and AddVariableAction::varName().

◆ _null_csg_base

std::unique_ptr<CSG::CSGBase> MeshGenerator::_null_csg_base = nullptr
privateinherited

A nullptr to use for when inputs aren't specified.

Definition at line 514 of file MeshGenerator.h.

Referenced by MeshGenerator::getCSGBase(), and MeshGenerator::getCSGBaseByName().

◆ _null_mesh

std::unique_ptr<MeshBase> MeshGenerator::_null_mesh = nullptr
privateinherited

A nullptr to use for when inputs aren't specified.

Definition at line 511 of file MeshGenerator.h.

Referenced by MeshGenerator::getMesh(), and MeshGenerator::getMeshByName().

◆ _null_mesh_names

std::set<std::string> MeshGenerator::_null_mesh_names
privateinherited

The declared "null" mesh names that will not represent a mesh in input; see declareNullMeshName()

Definition at line 524 of file MeshGenerator.h.

Referenced by MeshGenerator::declareNullMeshName(), and MeshGenerator::isNullMeshName().

◆ _num_layers

const std::vector<unsigned int>& AdvancedExtruderGenerator::_num_layers
protected

Number of layers in each elevation.

Definition at line 39 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _parent

const ParallelParamObject& DataFileInterface::_parent
privateinherited

◆ _parent_mesh_generators

std::set<const MeshGenerator *, Comparator> MeshGenerator::_parent_mesh_generators
privateinherited

The MeshGenerators that are parents to this MeshGenerator.

Definition at line 517 of file MeshGenerator.h.

Referenced by MeshGenerator::addParentMeshGenerator(), and MeshGenerator::getParentMeshGenerators().

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 384 of file MooseBase.h.

Referenced by AddAuxKernelAction::act(), AddFVICAction::act(), AddICAction::act(), CommonOutputAction::act(), ComposeTimeStepperAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), SetupDebugAction::act(), SetupMeshAction::act(), AddMFEMComplexBCComponentAction::act(), AddMFEMComplexKernelComponentAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), PNGOutput::calculateRescalingValues(), MooseBase::callMooseError(), MooseBase::connectControllableParams(), Console::Console(), MooseApp::copyInputs(), MaterialBase::declareADProperty(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FileMeshGenerator::generate(), MooseBase::getBase(), MooseBase::getCheckedPointerParam(), MaterialBase::getGenericZeroMaterialProperty(), MooseBase::getHitNode(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getParam(), MooseBase::getParam(), MooseBase::hasBase(), MeshGenerator::hasGenerateCSG(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), EigenProblemSolve::initialSetup(), Console::initialSetup(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBase::messagePrefix(), MooseApp::MooseApp(), MooseBase::MooseBase(), MultiSystemSolveObject::MultiSystemSolveObject(), MooseApp::outputMachineReadableData(), MooseBase::paramError(), MooseBase::parameters(), MooseBase::paramInfo(), MooseBase::paramWarning(), MooseMesh::prepare(), MooseBase::queryParam(), MooseMesh::setCoordSystem(), MooseMesh::setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseApp::showInputs(), and MooseBase::uniqueName().

◆ _radial_expansion_method

const MooseEnum AdvancedExtruderGenerator::_radial_expansion_method
protected

Function type for modifying the radial extent of the extruded shape.

Definition at line 109 of file AdvancedExtruderGenerator.h.

Referenced by radialExpansionRatio().

◆ _requested_csg_bases

std::vector<std::pair<std::string, std::unique_ptr<CSG::CSGBase> *> > MeshGenerator::_requested_csg_bases
privateinherited

The CSGBase objects that were requested by this MeshGenerator; used to verify that any input meshes that are requested are properly released after generation.

Definition at line 508 of file MeshGenerator.h.

Referenced by MeshGenerator::generateInternalCSG(), and MeshGenerator::getCSGBaseByName().

◆ _requested_mesh_generators

std::set<MeshGeneratorName> MeshGenerator::_requested_mesh_generators
privateinherited

The names of the MeshGenerators that were requested in the getMesh methods.

Definition at line 500 of file MeshGenerator.h.

Referenced by MeshGenerator::getMeshByName(), and MeshGenerator::getRequestedMeshGenerators().

◆ _requested_mesh_generators_for_sub

std::set<MeshGeneratorName> MeshGenerator::_requested_mesh_generators_for_sub
privateinherited

The names of the MeshGenerators that were requested in the declareMeshForSub methods.

Definition at line 502 of file MeshGenerator.h.

Referenced by MeshGenerator::declareMeshForSubByName(), and MeshGenerator::getRequestedMeshGeneratorsForSub().

◆ _requested_meshes

std::vector<std::pair<std::string, std::unique_ptr<MeshBase> *> > MeshGenerator::_requested_meshes
privateinherited

The meshes that were requested by this MeshGenerator; used to verify that any input meshes that are requested are properly released after generation.

Definition at line 505 of file MeshGenerator.h.

Referenced by MeshGenerator::generateInternal(), and MeshGenerator::getMeshByName().

◆ _save_with_name

const std::string& MeshGenerator::_save_with_name
privateinherited

A user-defined name to save the mesh.

Definition at line 527 of file MeshGenerator.h.

Referenced by MeshGenerator::getSavedMeshName(), MeshGenerator::hasSaveMesh(), and MeshGenerator::MeshGenerator().

◆ _si_moose_base

const MooseBase& SolutionInvalidInterface::_si_moose_base
privateinherited

◆ _si_problem

const FEProblemBase* SolutionInvalidInterface::_si_problem
privateinherited

A pointer to FEProblem base.

Definition at line 114 of file SolutionInvalidInterface.h.

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ _side_boundary

const BoundaryName AdvancedExtruderGenerator::_side_boundary
protected

Boundary for the lateral exterior sides and their nodes.

Definition at line 88 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _start_extrusion_direction

const RealVectorValue AdvancedExtruderGenerator::_start_extrusion_direction
protected

Extrusion direction to follow at the start (first layer) of the extrusion.

Definition at line 70 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _start_radial_growth_rate

const Real AdvancedExtruderGenerator::_start_radial_growth_rate
protected

Derivative of the radial expansion function at the beginning of the extrusion.

Definition at line 111 of file AdvancedExtruderGenerator.h.

Referenced by radialExpansionRatio().

◆ _sub_mesh_generators

std::set<const MeshGenerator *, Comparator> MeshGenerator::_sub_mesh_generators
privateinherited

The sub MeshGenerators constructed by this MeshGenerator.

Definition at line 521 of file MeshGenerator.h.

Referenced by MeshGenerator::addMeshSubgenerator(), and MeshGenerator::getSubMeshGenerators().

◆ _subdomain_swap_pairs

std::vector<std::unordered_map<subdomain_id_type, subdomain_id_type> > AdvancedExtruderGenerator::_subdomain_swap_pairs
protected

Easier to work with version of _sudomain_swaps.

Definition at line 55 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _subdomain_swaps

const std::vector<std::vector<SubdomainName> >& AdvancedExtruderGenerator::_subdomain_swaps
protected

Subdomains to swap out for each elevation.

Definition at line 42 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _top_boundary

const BoundaryName AdvancedExtruderGenerator::_top_boundary
protected

Definition at line 80 of file AdvancedExtruderGenerator.h.

Referenced by generate().

◆ _twist_pitch

const Real AdvancedExtruderGenerator::_twist_pitch
protected

Axial pitch for a full rotation.

Definition at line 103 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _upward_boundary_ids

const std::vector<std::vector<boundary_id_type> > AdvancedExtruderGenerator::_upward_boundary_ids
protected

Upward boundary interfaces for each layer of elevation.

Definition at line 94 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ _upward_boundary_source_blocks

const std::vector<std::vector<subdomain_id_type> > AdvancedExtruderGenerator::_upward_boundary_source_blocks
protected

The list of input mesh's blocks that need to be assigned upward boundary interfaces for each layer of elevation.

Definition at line 91 of file AdvancedExtruderGenerator.h.

Referenced by AdvancedExtruderGenerator(), and generate().

◆ app_param

const std::string MooseBase::app_param = "_moose_app"
staticinherited

◆ data_only_param

const std::string MeshGenerator::data_only_param = "_data_only"
staticinherited

The name of the private parameter for setting data only.

Definition at line 76 of file MeshGenerator.h.

Referenced by MeshGenerator::addMeshSubgenerator(), MeshGeneratorSystem::createAddedMeshGenerators(), and MeshGenerator::validParams().

◆ kokkos_object_param

const std::string MooseBase::kokkos_object_param = "_kokkos_object"
staticinherited

The name of the parameter that indicates an object is a Kokkos functor.

Definition at line 64 of file MooseBase.h.

Referenced by InputParameters::isKokkosObject().

◆ moose_base_param

const std::string MooseBase::moose_base_param = "_moose_base"
staticinherited

The name of the parameter that contains the moose system base.

Definition at line 61 of file MooseBase.h.

Referenced by InputParameters::getBase(), InputParameters::hasBase(), and InputParameters::registerBase().

◆ NAME

constexpr auto MeshMetaDataInterface::NAME = "<empty>"
staticconstexprinherited

The data name used when initializing the Restartable interface for non-MeshGenerator objects.

Definition at line 33 of file MeshMetaDataInterface.h.

◆ name_param

const std::string MooseBase::name_param = "_object_name"
staticinherited

◆ SYSTEM

constexpr auto MeshMetaDataInterface::SYSTEM = "MeshMetaData"
staticconstexprinherited

The system name used when initializing the Restartable interface.

Definition at line 30 of file MeshMetaDataInterface.h.

Referenced by MeshMetaDataInterface::meshPropertyName().

◆ type_param

const std::string MooseBase::type_param = "_type"
staticinherited

◆ unique_name_param

const std::string MooseBase::unique_name_param = "_unique_name"
staticinherited

The name of the parameter that contains the unique object name.

Definition at line 57 of file MooseBase.h.

Referenced by InputParameterWarehouse::addInputParameters(), AppFactory::create(), InputParameterWarehouse::removeInputParameters(), MooseBase::uniqueName(), and MooseBase::validParams().

◆ usingCombinedWarningSolutionWarnings

MooseObject::usingCombinedWarningSolutionWarnings
inherited

Definition at line 67 of file MooseObject.h.


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