https://mooseframework.inl.gov
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
MultiAppGeneralFieldTransfer Class Referenceabstract

It is a general field transfer. More...

#include <MultiAppGeneralFieldTransfer.h>

Inheritance diagram for MultiAppGeneralFieldTransfer:
[legend]

Classes

struct  InterpInfo
 InterpInfo. More...
 
struct  PointInfo
 Point information. More...
 

Public Types

enum  DIRECTION { TO_MULTIAPP, FROM_MULTIAPP, BETWEEN_MULTIAPP }
 
using DataFileParameterType = DataFileName
 The parameter type this interface expects for a data file name. More...
 

Public Member Functions

 MultiAppGeneralFieldTransfer (const InputParameters &parameters)
 
virtual void initialSetup () override
 Method called at the beginning of the simulation for checking integrity or doing one-time setup. More...
 
virtual void getAppInfo () override
 This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.) More...
 
virtual void execute () override
 Execute the transfer. More...
 
virtual void postExecute () override
 Add some extra work if necessary after execute(). More...
 
VariableName getFromVarName (unsigned int var_index) const
 Get the source variable name, with the suffix for array/vector variables. More...
 
VariableName getToVarName (unsigned int var_index)
 Get the target variable name, with the suffix for array/vector variables. More...
 
void variableIntegrityCheck (const AuxVariableName &var_name, bool is_from_multiapp) const
 Utility to verify that the variable in the destination system exists. More...
 
const std::shared_ptr< MultiAppgetMultiApp () const
 Use this getter to obtain the MultiApp for transfers with a single direction. More...
 
const std::shared_ptr< MultiAppgetFromMultiApp () const
 Get the MultiApp to transfer data from. More...
 
const std::shared_ptr< MultiAppgetToMultiApp () const
 Get the MultiApp to transfer data to. More...
 
std::string getFromName () const
 Get the name of thing being transferred from. More...
 
std::string getToName () const
 Get the name of thing being transferred to. More...
 
bool hasFromMultiApp () const
 Whether the transfer owns a non-null from_multi_app. More...
 
bool hasToMultiApp () const
 Whether the transfer owns a non-null to_multi_app. More...
 
const MultiMooseEnumdirections ()
 The directions this Transfer should be executed on. More...
 
void setCurrentDirection (const int direction)
 Set this Transfer to be executed in a given direction. More...
 
virtual bool enabled () const
 Return the enabled status of the object. More...
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 Get another shared pointer to this object that has the same ownership group. More...
 
std::shared_ptr< const MooseObjectgetSharedPtr () 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. More...
 
MooseAppgetMooseApp () const
 Get the MooseApp this class is associated with. More...
 
const std::string & type () const
 Get the type of this class. More...
 
const std::string & name () const
 Get the name of the class. More...
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling. More...
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 Get the parameters of the object. More...
 
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. More...
 
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. More...
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object. More...
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object. More...
 
template<typename 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. More...
 
template<typename T >
bool haveParameter (const std::string &name) const
 Test if a parameter of the given name and type exists. More...
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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. More...
 
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(). More...
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type. More...
 
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(). More...
 
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. More...
 
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. More...
 
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. More...
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method. More...
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method. More...
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path. More...
 
virtual void timestepSetup ()
 Gets called at the beginning of the timestep before this object is asked to do its job. More...
 
virtual void jacobianSetup ()
 Gets called just before the Jacobian is computed and before this object is asked to do its job. More...
 
virtual void residualSetup ()
 Gets called just before the residual is computed and before this object is asked to do its job. More...
 
virtual void subdomainSetup ()
 Gets called when the subdomain changes (i.e. More...
 
virtual void customSetup (const ExecFlagType &)
 Gets called in FEProblemBase::execute() for execute flags other than initial, timestep_begin, nonlinear, linear and subdomain. More...
 
const ExecFlagEnumgetExecuteOnEnum () const
 Return the execute on MultiMooseEnum for this object. More...
 
PerfGraphperfGraph ()
 Get the PerfGraph. More...
 
MooseEnum direction ()
 
MooseEnum currentDirection ()
 

Static Public Member Functions

static InputParameters validParams ()
 
static void addSkipCoordCollapsingParam (InputParameters &params)
 Add the option to skip coordinate collapsing in coordinate transformation operations Note: this is used by Actions creating transfers as well. More...
 
static libMesh::Systemfind_sys (libMesh::EquationSystems &es, const std::string &var_name)
 Small helper function for finding the system containing the variable. More...
 
static std::string possibleDirections ()
 Used to construct InputParameters. More...
 
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. More...
 

Public Attributes

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

Static Public Attributes

static const libMesh::Number OutOfMeshValue = -999999
 
static const std::string type_param = "_type"
 The name of the parameter that contains the object type. More...
 
static const std::string name_param = "_object_name"
 The name of the parameter that contains the object name. More...
 
static const std::string unique_name_param = "_unique_name"
 The name of the parameter that contains the unique object name. More...
 
static const std::string app_param = "_moose_app"
 The name of the parameter that contains the MooseApp. More...
 
static const std::string moose_base_param = "_moose_base"
 The name of the parameter that contains the moose system base. More...
 
static const std::string kokkos_object_param = "_kokkos_object"
 The name of the parameter that indicates an object is a Kokkos functor. More...
 

Protected Types

enum  MeshDivisionTransferUse { RESTRICTION, MATCH_DIVISION_INDEX, MATCH_SUBAPP_INDEX }
 Matching enum for the mesh division behaviors. More...
 

Protected Member Functions

virtual void checkSiblingsTransferSupported () const override
 Siblings transfers fully supported. More...
 
MooseVariableFieldBasegetToVariable (unsigned int var_index) const
 Return a pointer to a target variable. More...
 
virtual std::string getDataSourceName (unsigned int var_index) const
 Return a human-readable description of the data source (variable, functor, user object, etc.) used for conflict warning messages. More...
 
virtual void prepareEvaluationOfInterpValues (const unsigned int var_index)=0
 
virtual void evaluateInterpValues (const unsigned int var_index, const std::vector< std::pair< Point, unsigned int >> &incoming_points, std::vector< std::pair< Real, Real >> &outgoing_vals)=0
 
void extractLocalFromBoundingBoxes (std::vector< BoundingBox > &local_bboxes)
 
bool acceptPointInOriginMesh (unsigned int i_from, const std::vector< BoundingBox > &local_bboxes, const Point &pt, const unsigned int mesh_div, Real &distance) const
 
bool inMesh (const libMesh::PointLocatorBase *const pl, const Point &pt) const
 
bool inBlocks (const std::set< SubdomainID > &blocks, const Elem *elem) const
 
virtual bool inBlocks (const std::set< SubdomainID > &blocks, const MooseMesh &mesh, const Elem *elem) const
 
bool inBlocks (const std::set< SubdomainID > &blocks, const MooseMesh &mesh, const Node *node) const
 
bool inBlocks (const std::set< SubdomainID > &blocks, const libMesh::PointLocatorBase *const pl, const Point &pt) const
 
bool onBoundaries (const std::set< BoundaryID > &boundaries, const MooseMesh &mesh, const Node *node) const
 
bool onBoundaries (const std::set< BoundaryID > &boundaries, const MooseMesh &mesh, const Elem *elem) const
 
bool onBoundaries (const std::set< BoundaryID > &boundaries, const std::set< SubdomainID > &block_restriction, const MooseMesh &mesh, const libMesh::PointLocatorBase *const pl, const Point &pt) const
 
bool acceptPointMeshDivision (const Point &pt, const unsigned int i_local, const unsigned int only_from_this_mesh_div) const
 Whether a point lies inside the mesh division delineated by the MeshDivision object. More...
 
bool closestToPosition (unsigned int pos_index, const Point &pt) const
 Whether a point is closest to a position at the index specified than any other position. More...
 
bool detectConflict (Real value_1, Real value_2, Real distance_1, Real distance_2) const
 Detects whether two source values are valid and equidistant for a desired target location. More...
 
void registerConflict (unsigned int problem, dof_id_type dof_id, Point p, Real dist, bool local)
 Register a potential value conflict, e.g. More...
 
virtual std::vector< VariableName > getFromVarNames () const override
 Virtual function defining variables to be transferred. More...
 
virtual std::vector< AuxVariableName > getToVarNames () const override
 Virtual function defining variables to transfer to. More...
 
bool performAdjustment (const PostprocessorValue &from, const PostprocessorValue &to) const
 
libMesh::EquationSystemsgetEquationSystem (FEProblemBase &problem, bool use_displaced) const
 Returns the Problem's equation system, displaced or not Be careful! If you transfer TO a displaced system you will likely need a synchronization So most transfers reach the non-displaced system directly. More...
 
std::vector< unsigned intgetFromsPerProc ()
 Return the number of "from" domains that each processor owns. More...
 
libMesh::NumericVector< Real > & getTransferVector (unsigned int i_local, std::string var_name)
 If we are transferring to a multiapp, return the appropriate solution vector. More...
 
unsigned int getGlobalSourceAppIndex (unsigned int i_from) const
 Return the global app index from the local index in the "from-multiapp" transfer direction. More...
 
unsigned int getGlobalTargetAppIndex (unsigned int i_to) const
 Return the global app index from the local index in the "to-multiapp" transfer direction. More...
 
unsigned int getLocalSourceAppIndex (unsigned int i_from) const
 Return the local app index from the global index in the "from-multiapp" transfer direction. More...
 
void checkParentAppUserObjectExecuteOn (const std::string &object_name) const
 Checks the execute_on flags for user object transfers with user objects on the source app which is also the parent app. More...
 
void errorIfObjectExecutesOnTransferInSourceApp (const std::string &object_name) const
 Error if executing this MooseObject on EXEC_TRANSFER in a source multiapp (from_multiapp, e.g. More...
 
Point getPointInTargetAppFrame (const Point &p, unsigned int local_i_to, const std::string &phase) const
 Get the target app point from a point in the reference frame. More...
 
Point getPointInSourceAppFrame (const Point &p, unsigned int local_i_from, const std::string &phase) const
 Get the source app point from a point in the reference frame. More...
 
void checkMultiAppExecuteOn ()
 Helper method for checking the 'check_multiapp_execute_on' flag. More...
 
void checkVariable (const FEProblemBase &fe_problem, const VariableName &var_name, const std::string &param_name="") const
 Helper for checking a problem for a variable. More...
 
void extendBoundingBoxes (const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
 Extends bounding boxes to avoid missing points. More...
 
template<bool warning>
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 Set solution invalid mark for the given solution ID. More...
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
template<typename T , typename... Args>
T & declareRestartableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "restartable" and initialize it. More...
 
template<typename T , typename... Args>
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declares a piece of "managed" restartable data and initialize it. More...
 
template<typename T , typename... Args>
const T & getRestartableData (const std::string &data_name) const
 Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object. More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 Declare a piece of data as "restartable" and initialize it. More...
 
template<typename T , typename... Args>
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "recoverable" and initialize it. More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 Declare a piece of data as "restartable". More...
 
template<typename T , typename... Args>
T & declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 Declare a piece of data as "restartable". More...
 
std::string restartableName (const std::string &data_name) const
 Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix. More...
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 Call to register a named section for timing. More...
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 Call to register a named section for timing. More...
 
std::string timedSectionName (const std::string &section_name) const
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes ()
 Return the bounding boxes of all the "from" domains, including all the domains not local to this processor. More...
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes (BoundaryID boundary_id)
 

Static Protected Member Functions

static void addUserObjectExecutionCheckParam (InputParameters &params)
 Add the execution order check parameter (to skip the warning if needed) More...
 
static void addBBoxFactorParam (InputParameters &params)
 Add the bounding box factor parameter to the supplied input parameters. More...
 
static void transformBoundingBox (libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
 Transform a bounding box according to the transformations in the provided coordinate transformation object. More...
 

Protected Attributes

const std::vector< unsigned int_from_var_components
 Origin array/vector variable components. More...
 
const std::vector< unsigned int_to_var_components
 Target array/vector variable components. More...
 
const bool _use_bounding_boxes
 Whether to use bounding boxes to determine the applications that may receive point requests then send value data, and at other various checks. More...
 
const bool _use_nearest_app
 Whether to keep track of the distance from the requested point to the app position. More...
 
const Positions_nearest_positions_obj
 
bool _source_app_must_contain_point
 Whether the source app mesh must actually contain the points for them to be considered or whether the bounding box is enough. More...
 
std::set< SubdomainID_from_blocks
 Origin block(s) restriction. More...
 
std::set< SubdomainID_to_blocks
 Target block(s) restriction. More...
 
std::set< BoundaryID_to_boundaries
 Target boundary(ies) restriction. More...
 
std::set< BoundaryID_from_boundaries
 Origin boundary(ies) restriction. More...
 
std::vector< const MeshDivision * > _from_mesh_divisions
 Division of the origin mesh. More...
 
std::vector< const MeshDivision * > _to_mesh_divisions
 Division of the target mesh. More...
 
const MooseEnum_from_mesh_division_behavior
 How to use the origin mesh divisions to restrict the transfer. More...
 
const MooseEnum_to_mesh_division_behavior
 How to use the target mesh divisions to restrict the transfer. More...
 
const bool _elemental_boundary_restriction_on_sides
 Whether elemental variable boundary restriction is considered by element side or element nodes. More...
 
std::vector< std::unique_ptr< libMesh::PointLocatorBase > > _from_point_locators
 Point locators, useful to examine point location with regards to domain restriction. More...
 
std::vector< unsigned int_global_app_start_per_proc
 First app each processor owns, indexed by processor If no app on the processor, will have a -1 for the app start instead. More...
 
bool _greedy_search
 Whether or not a greedy strategy will be used If true, all the partitions will be checked for a given outgoing point. More...
 
bool _search_value_conflicts
 Whether to look for conflicts between origin points, multiple valid values for a target point. More...
 
bool _already_output_search_value_conflicts
 Whether we already output the search value conflicts. More...
 
const unsigned int _search_value_conflicts_max_log
 How many conflicts are output to console. More...
 
const MooseEnum _post_transfer_extrapolation
 How to post treat after the transfer. More...
 
const std::vector< VariableName > _from_var_names
 Name of variables transferring from. More...
 
const std::vector< AuxVariableName > _to_var_names
 Name of variables transferring to. More...
 
VariableName _from_var_name
 This values are used if a derived class only supports one variable. More...
 
AuxVariableName _to_var_name
 
bool _preserve_transfer
 If this transfer is going to conserve the physics. More...
 
std::vector< PostprocessorName > _from_postprocessors_to_be_preserved
 Postprocessor evaluates an adjuster for the source physics. More...
 
std::vector< PostprocessorName > _to_postprocessors_to_be_preserved
 Postprocessor evaluates an adjuster for the target physics. More...
 
std::shared_ptr< MultiApp_multi_app
 Deprecated class attribute for compatibility with the apps. More...
 
std::vector< FEProblemBase * > _to_problems
 
std::vector< FEProblemBase * > _from_problems
 
std::vector< libMesh::EquationSystems * > _to_es
 
std::vector< libMesh::EquationSystems * > _from_es
 
std::vector< MooseMesh * > _to_meshes
 
std::vector< MooseMesh * > _from_meshes
 
std::vector< Point > _to_positions
 
std::vector< Point > _from_positions
 
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
 
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
 
const bool _skip_coordinate_collapsing
 Whether to skip coordinate collapsing (transformations of coordinates between applications using different frames of reference) More...
 
bool _displaced_source_mesh
 True if displaced mesh is used for the source mesh, otherwise false. More...
 
bool _displaced_target_mesh
 True if displaced mesh is used for the target mesh, otherwise false. More...
 
std::vector< unsigned int_to_local2global_map
 Given local app index, returns global app index. More...
 
std::vector< unsigned int_from_local2global_map
 Given local app index, returns global app index. More...
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
SystemBase_sys
 
THREAD_ID _tid
 
MultiMooseEnum _directions
 The directions this Transfer is to be executed on. More...
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects. More...
 
MooseApp_app
 The MOOSE application this is associated with. More...
 
Factory_factory
 The Factory associated with the MooseApp. More...
 
ActionFactory_action_factory
 Builds Actions. More...
 
const std::string & _type
 The type of this class. More...
 
const std::string & _name
 The name of this class. More...
 
const InputParameters_pars
 The object's parameters. More...
 
const Parallel::Communicator_communicator
 
const ExecFlagEnum_execute_enum
 Execute settings for this object. More...
 
const ExecFlagType_current_execute_flag
 Reference to FEProblemBase. More...
 
MooseApp_restartable_app
 Reference to the application. More...
 
const std::string _restartable_system_name
 The system name this object is in. More...
 
const THREAD_ID _restartable_tid
 The thread ID for this object. More...
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData) More...
 
MooseApp_pg_moose_app
 The MooseApp that owns the PerfGraph. More...
 
const std::string _prefix
 A prefix to use for all sections. More...
 
MooseEnum _direction
 
MooseEnum _current_direction
 

Private Types

typedef std::unordered_map< processor_id_type, std::vector< std::pair< Point, unsigned int > > > ProcessorToPointVec
 A map from pid to a set of points. More...
 
typedef std::unordered_map< processor_id_type, std::vector< PointInfo > > ProcessorToPointInfoVec
 A map from pid to a set of point info. More...
 
typedef std::vector< std::unordered_map< dof_id_type, InterpInfo > > DofobjectToInterpValVec
 A vector, indexed by to-problem id, of maps from dof object to interpolation values. More...
 
typedef PointIndexedMap InterpCache
 A map from Point to interpolation values NOTE: this is not an asynchronous cache. More...
 
typedef std::vector< InterpCacheInterpCaches
 A vector of such caches, indexed by to_problem. More...
 

Private Member Functions

void prepareToTransfer ()
 Initialize supporting attributes like bounding boxes, processor app indexes etc. More...
 
void transferVariable (unsigned int i)
 Performs the transfer for the variable of index i. More...
 
void extractOutgoingPoints (const unsigned int var_index, ProcessorToPointVec &outgoing_points)
 
void locatePointReceivers (const Point point, std::set< processor_id_type > &processors)
 
void cacheIncomingInterpVals (processor_id_type pid, const unsigned int var_index, std::vector< PointInfo > &pointInfoVec, const std::vector< std::pair< Point, unsigned int >> &point_requests, const std::vector< std::pair< Real, Real >> &incoming_vals, DofobjectToInterpValVec &dofobject_to_valsvec, InterpCaches &interp_caches, InterpCaches &distance_caches)
 
void examineReceivedValueConflicts (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
 Remove potential value conflicts that did not materialize because another source was closer Several equidistant valid values were received, but they were not closest. More...
 
void examineLocalValueConflicts (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
 Remove potential value conflicts that did not materialize because another source was closer Several equidistant valid values were found when computing values to send, but they were not closest, another value got selected. More...
 
void outputValueConflicts (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
 Report on conflicts between overlapping child apps, equidistant origin points etc. More...
 
void setSolutionVectorValues (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
 
void correctSolutionVectorValues (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
 
void cacheOutgoingPointInfo (const Point point, const dof_id_type dof_object_id, const unsigned int problem_id, ProcessorToPointVec &outgoing_points)
 
Real bboxMinDistance (const Point &p, const BoundingBox &bbox) const
 Compute minimum distance. More...
 
Real bboxMaxDistance (const Point &p, const BoundingBox &bbox) const
 Compute max distance. More...
 
Point getMaxToProblemsBBoxDimensions () const
 Obtains the max dimensions to scale all points in the mesh. More...
 
std::vector< BoundingBoxgetRestrictedFromBoundingBoxes () const
 Get from bounding boxes for given domains and boundaries. More...
 
std::vector< unsigned intgetGlobalStartAppPerProc () const
 Get global index for the first app each processes owns Requires a global communication, must be called on every domain simultaneously. More...
 

Private Attributes

std::vector< MooseVariableFieldBase * > _to_variables
 The target variables. More...
 
unsigned int _var_size
 The number of variables to transfer. More...
 
bool _error_on_miss
 Error out when some points can not be located. More...
 
const Real _default_extrapolation_value
 Value to use when no received data is valid for a target location. More...
 
Real _bbox_factor
 How much we should relax bounding boxes. More...
 
std::vector< Real_fixed_bbox_size
 Set the bounding box sizes manually. More...
 
std::vector< unsigned int_froms_per_proc
 Number of source/from applications per processor. This vector is indexed by processor id. More...
 
std::vector< BoundingBox > _from_bboxes
 Bounding boxes for all source applications. More...
 
ProcessorToPointInfoVec _processor_to_pointInfoVec
 A map from processor to pointInfo vector. More...
 
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _local_conflicts
 Keeps track of all local equidistant points to requested points, creating an indetermination in which values should be sent for that request We keep the origin problem ID, the dof ID, the point, and the distance origin-target If using nearest-positions the origin problem ID is not set. More...
 
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
 Keeps track of all received conflicts. More...
 

Detailed Description

It is a general field transfer.

It will do the following things 1) From part of source domain to part of domain. Support subdomains/boundaries to subdomains/boundaries, mixing as appropriate 2) interpolation and extrapolation, as appropriate 3) Support higher order FEM 4) Support mixed orders between source and target variables 5) Support both distributed and replicated meshes 6) Support both origin and target displaced meshes 7) Support siblings transfers 8) Support multiple child apps in both the transfer source and target

Definition at line 37 of file MultiAppGeneralFieldTransfer.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.

◆ DofobjectToInterpValVec

typedef std::vector<std::unordered_map<dof_id_type, InterpInfo> > MultiAppGeneralFieldTransfer::DofobjectToInterpValVec
private

A vector, indexed by to-problem id, of maps from dof object to interpolation values.

Definition at line 347 of file MultiAppGeneralFieldTransfer.h.

◆ InterpCache

A map from Point to interpolation values NOTE: this is not an asynchronous cache.

It is built to completion during the transfer and used as a whole to reconstruct the target variable

Definition at line 352 of file MultiAppGeneralFieldTransfer.h.

◆ InterpCaches

A vector of such caches, indexed by to_problem.

Definition at line 355 of file MultiAppGeneralFieldTransfer.h.

◆ ProcessorToPointInfoVec

typedef std::unordered_map<processor_id_type, std::vector<PointInfo> > MultiAppGeneralFieldTransfer::ProcessorToPointInfoVec
private

A map from pid to a set of point info.

Definition at line 344 of file MultiAppGeneralFieldTransfer.h.

◆ ProcessorToPointVec

typedef std::unordered_map<processor_id_type, std::vector<std::pair<Point, unsigned int> > > MultiAppGeneralFieldTransfer::ProcessorToPointVec
private

A map from pid to a set of points.

Definition at line 326 of file MultiAppGeneralFieldTransfer.h.

Member Enumeration Documentation

◆ DIRECTION

enum Transfer::DIRECTION
inherited
Enumerator
TO_MULTIAPP 
FROM_MULTIAPP 
BETWEEN_MULTIAPP 

Definition at line 68 of file Transfer.h.

◆ MeshDivisionTransferUse

Matching enum for the mesh division behaviors.

Enumerator
RESTRICTION 
MATCH_DIVISION_INDEX 
MATCH_SUBAPP_INDEX 

Definition at line 262 of file MultiAppGeneralFieldTransfer.h.

Constructor & Destructor Documentation

◆ MultiAppGeneralFieldTransfer()

MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer ( const InputParameters parameters)

Definition at line 179 of file MultiAppGeneralFieldTransfer.C.

181  _from_var_components(getParam<std::vector<unsigned int>>("source_variable_components")),
182  _to_var_components(getParam<std::vector<unsigned int>>("target_variable_components")),
183  _use_bounding_boxes(getParam<bool>("use_bounding_boxes")),
184  _use_nearest_app(getParam<bool>("use_nearest_app")),
186  isParamValid("use_nearest_position")
187  ? &_fe_problem.getPositionsObject(getParam<PositionsName>("use_nearest_position"))
188  : nullptr),
189  _source_app_must_contain_point(getParam<bool>("from_app_must_contain_point")),
190  _from_mesh_division_behavior(getParam<MooseEnum>("from_mesh_division_usage")),
191  _to_mesh_division_behavior(getParam<MooseEnum>("to_mesh_division_usage")),
193  getParam<MooseEnum>("elemental_boundary_restriction") == "sides"),
194  _greedy_search(getParam<bool>("greedy_search")),
195  _search_value_conflicts(getParam<bool>("search_value_conflicts")),
197  _search_value_conflicts_max_log(getParam<unsigned int>("value_conflicts_output")),
198  _post_transfer_extrapolation(getParam<MooseEnum>("post_transfer_extrapolation")),
199  _error_on_miss(getParam<bool>("error_on_miss")),
200  _default_extrapolation_value(getParam<Real>("extrapolation_constant")),
201  _bbox_factor(getParam<Real>("bbox_factor")),
202  _fixed_bbox_size(isParamValid("fixed_bounding_box_size")
203  ? getParam<std::vector<Real>>("fixed_bounding_box_size")
204  : std::vector<Real>(3, 0))
205 {
206  _var_size = _to_var_names.size();
207  if (_to_var_names.size() != _from_var_names.size() && !parameters.isPrivate("source_variable"))
208  paramError("variable", "The number of variables to transfer to and from should be equal");
209 
210  // Check the parameters of the components of the array / vector variable
211  if (_from_var_names.size() != _from_var_components.size() && _from_var_components.size() > 0)
212  paramError("source_variable_components",
213  "This parameter must be equal to the number of source variables");
214  if (_to_var_names.size() != _to_var_components.size() && _to_var_components.size() > 0)
215  paramError("target_variable_components",
216  "This parameter must be equal to the number of target variables");
217 
218  // Make simple 'use_nearest_app' parameter rely on Positions
219  if (_use_nearest_app)
220  {
222  paramError("use_nearest_app", "Cannot use nearest-app and nearest-position together");
223  if (!hasFromMultiApp())
224  paramError("use_nearest_app",
225  "Should have a 'from_multiapp' when using the nearest-app informed search");
226  auto pos_params = _app.getFactory().getValidParams("MultiAppPositions");
227  pos_params.set<std::vector<MultiAppName>>("multiapps") = {getFromMultiApp()->name()};
228  _fe_problem.addReporter("MultiAppPositions", "_created_for_" + name(), pos_params);
230  }
231 
232  // Dont let users get wrecked by bounding boxes if it looks like they are trying to extrapolate
234  (_nearest_positions_obj || isParamSetByUser("from_app_must_contain_point")))
235  if (!isParamSetByUser("bbox_factor") && !isParamSetByUser("fixed_bounding_box_size"))
236  mooseWarning(
237  "Extrapolation (nearest-source options, outside-app source) parameters have "
238  "been passed, but no subapp bounding box expansion parameters have been passed.");
239 
240  if (!_use_bounding_boxes &&
241  (isParamValid("fixed_bounding_box_size") || isParamSetByUser("bbox_factor")))
242  paramError("use_bounding_boxes",
243  "Cannot pass additional bounding box parameters (sizes, expansion, etc) if we are "
244  "not using bounding boxes");
245 }
const MooseEnum _post_transfer_extrapolation
How to post treat after the transfer.
const std::shared_ptr< MultiApp > getFromMultiApp() const
Get the MultiApp to transfer data from.
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:467
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:416
bool _source_app_must_contain_point
Whether the source app mesh must actually contain the points for them to be considered or whether the...
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
std::vector< Real > _fixed_bbox_size
Set the bounding box sizes manually.
bool isPrivate(const std::string &name) const
Returns a Boolean indicating whether the specified parameter is private or not.
unsigned int _var_size
The number of variables to transfer.
const Real _default_extrapolation_value
Value to use when no received data is valid for a target location.
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
const Positions & getPositionsObject(const std::string &name) const
Get the Positions object by its name.
const std::vector< unsigned int > _from_var_components
Origin array/vector variable components.
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:406
void mooseWarning(Args &&... args) const
const std::vector< unsigned int > _to_var_components
Target array/vector variable components.
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const bool _use_bounding_boxes
Whether to use bounding boxes to determine the applications that may receive point requests then send...
MultiAppConservativeTransfer(const InputParameters &parameters)
Real _bbox_factor
How much we should relax bounding boxes.
const std::vector< AuxVariableName > _to_var_names
Name of variables transferring to.
bool _error_on_miss
Error out when some points can not be located.
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:385
virtual void addReporter(const std::string &type, const std::string &name, InputParameters &parameters)
Add a Reporter object to the simulation.
bool _already_output_search_value_conflicts
Whether we already output the search value conflicts.
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
const unsigned int _search_value_conflicts_max_log
How many conflicts are output to console.
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209
const bool _elemental_boundary_restriction_on_sides
Whether elemental variable boundary restriction is considered by element side or element nodes...
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:215
bool _greedy_search
Whether or not a greedy strategy will be used If true, all the partitions will be checked for a given...
const MooseEnum & _from_mesh_division_behavior
How to use the origin mesh divisions to restrict the transfer.
const bool _use_nearest_app
Whether to keep track of the distance from the requested point to the app position.

Member Function Documentation

◆ acceptPointInOriginMesh()

bool MultiAppGeneralFieldTransfer::acceptPointInOriginMesh ( unsigned int  i_from,
const std::vector< BoundingBox > &  local_bboxes,
const Point pt,
const unsigned int  mesh_div,
Real distance 
) const
protected

Definition at line 1580 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValuesWithMeshFunctions(), and MultiAppGeneralFieldUserObjectTransfer::evaluateInterpValuesWithUserObjects().

1585 {
1586  if (_use_bounding_boxes && !local_bboxes[i_from].contains_point(pt))
1587  return false;
1588  else
1589  {
1590  auto * pl = _from_point_locators[i_from].get();
1591  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1592  const auto transformed_pt =
1593  getPointInSourceAppFrame(pt, i_from, "Source point acceptance check");
1594 
1595  // Check point against source block restriction
1596  if (!_from_blocks.empty() && !inBlocks(_from_blocks, pl, transformed_pt))
1597  return false;
1598 
1599  // Check point against source boundary restriction. Block restriction will speed up the search
1600  if (!_from_boundaries.empty() &&
1601  !onBoundaries(_from_boundaries, _from_blocks, *_from_meshes[i_from], pl, transformed_pt))
1602  return false;
1603 
1604  // Check point against the source mesh division
1605  if ((!_from_mesh_divisions.empty() || !_to_mesh_divisions.empty()) &&
1606  !acceptPointMeshDivision(transformed_pt, i_from, only_from_mesh_div))
1607  return false;
1608 
1609  // Get nearest position (often a subapp position) for the target point
1610  // We want values from the child app that is closest to the same position as the target
1611  Point nearest_position_source;
1613  {
1614  const bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1615  // The search for the nearest position is done in the reference frame
1616  const Point nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1617  nearest_position_source = _nearest_positions_obj->getNearestPosition(
1618  (*_from_transforms[from_global_num])(Point(0, 0, 0)), initial);
1619 
1621  _from_transforms[from_global_num]->hasNonTranslationTransformation())
1622  mooseError("Rotation and scaling currently unsupported with nearest positions transfer.");
1623 
1624  // Compute distance to nearest position and nearest position source
1625  const Real distance_to_position_nearest_source = (pt - nearest_position_source).norm();
1626  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1627 
1628  // Source (usually app position) is not closest to the same positions as the target, dont
1629  // send values. We check the distance instead of the positions because if they are the same
1630  // that means there's two equidistant positions and we would want to capture that as a "value
1631  // conflict"
1632  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_nearest_source,
1633  distance_to_nearest_position))
1634  return false;
1635 
1636  // Set the distance as the distance from the nearest position to the target point
1637  distance = distance_to_position_nearest_source;
1638  }
1639 
1640  // Check that the app actually contains the origin point
1641  // We dont need to check if we already found it in a block or a boundary
1642  if (_from_blocks.empty() && _from_boundaries.empty() && _source_app_must_contain_point &&
1643  !inMesh(pl, transformed_pt))
1644  return false;
1645  }
1646  return true;
1647 }
const Point & getNearestPosition(const Point &target, bool initial) const
Find the nearest Position for a given point.
Definition: Positions.C:88
bool _source_app_must_contain_point
Whether the source app mesh must actually contain the points for them to be considered or whether the...
const bool _skip_coordinate_collapsing
Whether to skip coordinate collapsing (transformations of coordinates between applications using diff...
Point getPointInSourceAppFrame(const Point &p, unsigned int local_i_from, const std::string &phase) const
Get the source app point from a point in the reference frame.
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
std::vector< std::unique_ptr< libMesh::PointLocatorBase > > _from_point_locators
Point locators, useful to examine point location with regards to domain restriction.
bool acceptPointMeshDivision(const Point &pt, const unsigned int i_local, const unsigned int only_from_this_mesh_div) const
Whether a point lies inside the mesh division delineated by the MeshDivision object.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
std::vector< const MeshDivision * > _from_mesh_divisions
Division of the origin mesh.
std::vector< const MeshDivision * > _to_mesh_divisions
Division of the target mesh.
bool inMesh(const libMesh::PointLocatorBase *const pl, const Point &pt) const
Real distance(const Point &p)
std::set< BoundaryID > _from_boundaries
Origin boundary(ies) restriction.
std::vector< MooseMesh * > _from_meshes
const bool _use_bounding_boxes
Whether to use bounding boxes to determine the applications that may receive point requests then send...
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto norm(const T &a)
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
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:281
std::set< SubdomainID > _from_blocks
Origin block(s) restriction.
bool onBoundaries(const std::set< BoundaryID > &boundaries, const MooseMesh &mesh, const Node *node) const
bool inBlocks(const std::set< SubdomainID > &blocks, const Elem *elem) const
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:30

◆ acceptPointMeshDivision()

bool MultiAppGeneralFieldTransfer::acceptPointMeshDivision ( const Point pt,
const unsigned int  i_local,
const unsigned int  only_from_this_mesh_div 
) const
protected

Whether a point lies inside the mesh division delineated by the MeshDivision object.

Parameters
ptpoint to examine, in the local coordinates (source frame for from_direction=true)
i_localthe index of the problem to consider, holding the mesh division to examine
only_from_this_mesh_diva mesh division index that must be matched when the to/from_mesh_division_behavior for the direction examined is MATCH_DIVISION/SUBAPP_INDEX It is ignored otherwise

Definition at line 1951 of file MultiAppGeneralFieldTransfer.C.

Referenced by acceptPointInOriginMesh().

1953 {
1954  // This routine can also be called to examine if the to_mesh_division index matches the current
1955  // source subapp index
1956  unsigned int source_mesh_div = MooseMeshDivision::INVALID_DIVISION_INDEX - 1;
1957  if (!_from_mesh_divisions.empty())
1958  source_mesh_div = _from_mesh_divisions[i_local]->divisionIndex(pt);
1959 
1960  // If the point is not indexed in the source division
1961  if (!_from_mesh_divisions.empty() && source_mesh_div == MooseMeshDivision::INVALID_DIVISION_INDEX)
1962  return false;
1963  // If the point is not the at the same index in the target and the origin meshes, reject
1964  else if ((_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
1965  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX) &&
1966  source_mesh_div != only_from_this_mesh_div)
1967  return false;
1968  // If the point is at a certain division index that is not the same as the index of the subapp
1969  // we wanted the information to be from for that point, reject
1970  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1971  source_mesh_div != only_from_this_mesh_div)
1972  return false;
1973  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1974  only_from_this_mesh_div != getGlobalSourceAppIndex(i_local))
1975  return false;
1976  else
1977  return true;
1978 }
std::vector< const MeshDivision * > _from_mesh_divisions
Division of the origin mesh.
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
unsigned int INVALID_DIVISION_INDEX
Invalid subdomain id to return when outside the mesh division.
Definition: MeshDivision.h:28
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
const MooseEnum & _from_mesh_division_behavior
How to use the origin mesh divisions to restrict the transfer.

◆ addBBoxFactorParam()

void MultiAppTransfer::addBBoxFactorParam ( InputParameters params)
staticprotectedinherited

Add the bounding box factor parameter to the supplied input parameters.

Definition at line 59 of file MultiAppTransfer.C.

Referenced by MultiAppShapeEvaluationTransfer::validParams(), MultiAppProjectionTransfer::validParams(), and MultiAppNearestNodeTransfer::validParams().

60 {
61  params.addRangeCheckedParam<Real>(
62  "bbox_factor",
63  1 + TOLERANCE,
64  "bbox_factor>0",
65  "Multiply bounding box width (in all directions) by the prescribed factor. Values less than "
66  "1 will shrink the bounding box; values greater than 1 will enlarge the bounding box. It is "
67  "generally not advised to ever shrink the bounding box. On the other hand it may be helpful "
68  "to enlarge the bounding box. Larger bounding boxes will lead to more accurate determination "
69  "of the closest node/element with the tradeoff of more communication.");
70 }
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)

◆ addSkipCoordCollapsingParam()

void MultiAppTransfer::addSkipCoordCollapsingParam ( InputParameters params)
staticinherited

Add the option to skip coordinate collapsing in coordinate transformation operations Note: this is used by Actions creating transfers as well.

Definition at line 73 of file MultiAppTransfer.C.

Referenced by MultiAppTransfer::validParams().

74 {
75  params.addParam<bool>(
76  "skip_coordinate_collapsing",
77  true,
78  "Whether to skip coordinate collapsing (translation and rotation are still performed, only "
79  "XYZ, RZ etc collapsing is skipped) when performing mapping and inverse "
80  "mapping coordinate transformation operations. This parameter should only "
81  "be set by users who really know what they're doing.");
82  params.addParamNamesToGroup("skip_coordinate_collapsing", "Advanced");
83 }
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 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...

◆ addUserObjectExecutionCheckParam()

void MultiAppTransfer::addUserObjectExecutionCheckParam ( InputParameters params)
staticprotectedinherited

Add the execution order check parameter (to skip the warning if needed)

Definition at line 86 of file MultiAppTransfer.C.

Referenced by MultiAppPostprocessorToAuxScalarTransfer::validParams(), MultiAppVectorPostprocessorTransfer::validParams(), MultiAppGeneralFieldUserObjectTransfer::validParams(), MultiAppPostprocessorTransfer::validParams(), and MultiAppUserObjectTransfer::validParams().

87 {
88  params.addParam<bool>("warn_source_object_execution_schedule",
89  true,
90  "Emit a warning when the transfer execution schedule is detected to lag "
91  "information from the user object. Note that the check cannot detect all "
92  "potential wrong combinations of user-object/transfer execution schedules");
93 }
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...

◆ bboxMaxDistance()

Real MultiAppGeneralFieldTransfer::bboxMaxDistance ( const Point p,
const BoundingBox bbox 
) const
private

Compute max distance.

Parameters
pthe point of interest
bboxthe bounding box to find the maximum distance from

Definition at line 2019 of file MultiAppGeneralFieldTransfer.C.

Referenced by locatePointReceivers().

2020 {
2021  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
2022 
2023  std::array<Point, 8> all_points;
2024  for (unsigned int x = 0; x < 2; x++)
2025  for (unsigned int y = 0; y < 2; y++)
2026  for (unsigned int z = 0; z < 2; z++)
2027  all_points[x + 2 * y + 4 * z] =
2028  Point(source_points[x](0), source_points[y](1), source_points[z](2));
2029 
2030  Real max_distance = 0.;
2031 
2032  for (unsigned int i = 0; i < 8; i++)
2033  {
2034  Real distance = (p - all_points[i]).norm();
2035  if (distance > max_distance)
2036  max_distance = distance;
2037  }
2038 
2039  return max_distance;
2040 }
Real distance(const Point &p)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto norm(const T &a)

◆ bboxMinDistance()

Real MultiAppGeneralFieldTransfer::bboxMinDistance ( const Point p,
const BoundingBox bbox 
) const
private

Compute minimum distance.

Parameters
pthe point of interest
bboxthe bounding box to find the minimum distance from

Definition at line 2043 of file MultiAppGeneralFieldTransfer.C.

Referenced by locatePointReceivers().

2044 {
2045  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
2046 
2047  std::array<Point, 8> all_points;
2048  for (unsigned int x = 0; x < 2; x++)
2049  for (unsigned int y = 0; y < 2; y++)
2050  for (unsigned int z = 0; z < 2; z++)
2051  all_points[x + 2 * y + 4 * z] =
2052  Point(source_points[x](0), source_points[y](1), source_points[z](2));
2053 
2054  Real min_distance = std::numeric_limits<Real>::max();
2055 
2056  for (unsigned int i = 0; i < 8; i++)
2057  {
2058  Real distance = (p - all_points[i]).norm();
2059  if (distance < min_distance)
2060  min_distance = distance;
2061  }
2062 
2063  return min_distance;
2064 }
Real distance(const Point &p)
auto max(const L &left, const R &right)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto norm(const T &a)

◆ cacheIncomingInterpVals()

void MultiAppGeneralFieldTransfer::cacheIncomingInterpVals ( processor_id_type  pid,
const unsigned int  var_index,
std::vector< PointInfo > &  pointInfoVec,
const std::vector< std::pair< Point, unsigned int >> &  point_requests,
const std::vector< std::pair< Real, Real >> &  incoming_vals,
DofobjectToInterpValVec dofobject_to_valsvec,
InterpCaches interp_caches,
InterpCaches distance_caches 
)
private

Definition at line 930 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

939 {
940  mooseAssert(pointInfoVec.size() == incoming_vals.size(),
941  "Number of dof objects does not equal to the number of incoming values");
942 
943  dof_id_type val_offset = 0;
944  for (const auto & pointinfo : pointInfoVec)
945  {
946  // Retrieve target information from cached point infos
947  const auto problem_id = pointinfo.problem_id;
948  const auto dof_object_id = pointinfo.dof_object_id;
949 
950  auto & fe_type = _to_variables[var_index]->feType();
951  bool is_nodal = _to_variables[var_index]->isNodal();
952 
953  // In the higher order elemental variable case, we receive point values, not nodal or
954  // elemental. We use an InterpCache to store the values. The distance_cache is necessary to
955  // choose between multiple origin problems sending values. This code could be unified with the
956  // lower order order case by using the dofobject_to_valsvec
957  if (fe_type.order > CONSTANT && !is_nodal)
958  {
959  // Cache solution on target mesh in its local frame of reference
960  InterpCache & value_cache = interp_caches[problem_id];
961  InterpCache & distance_cache = distance_caches[problem_id];
962  Point p = _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(
963  point_requests[val_offset].first);
964  const Number val = incoming_vals[val_offset].first;
965 
966  // Initialize distance to be able to compare
967  if (!distance_cache.hasKey(p))
968  distance_cache[p] = std::numeric_limits<Real>::max();
969 
970  // We should only have one closest value for each variable at any given point.
971  // While there are shared Qps, on vertices for higher order variables usually,
972  // the generic projector only queries each point once
974  value_cache.hasKey(p) != 0 && !MooseUtils::absoluteFuzzyEqual(value_cache[p], val) &&
975  MooseUtils::absoluteFuzzyEqual(distance_cache[p], incoming_vals[val_offset].second))
976  registerConflict(problem_id, dof_object_id, p, incoming_vals[val_offset].second, false);
977 
978  // if we use the nearest app, even if the value is bad we want to save the distance because
979  // it's the distance to the app, if that's the closest app then so be it with the bad value
981  MooseUtils::absoluteFuzzyGreaterThan(distance_cache[p], incoming_vals[val_offset].second))
982  {
983  // NOTE: We store the distance as well as the value. We really only need the
984  // value to construct the variable, but the distance is used to make decisions in nearest
985  // node schemes on which value to use
986  value_cache[p] = val;
987  distance_cache[p] = incoming_vals[val_offset].second;
988  }
989  }
990  else
991  {
992  // Using the dof object pointer, so we can handle
993  // both element and node using the same code
994 #ifndef NDEBUG
995  auto var_num = _to_variables[var_index]->number();
996  auto & to_sys = _to_variables[var_index]->sys();
997 
998  const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
999  const DofObject * dof_object_ptr = nullptr;
1000  const auto sys_num = to_sys.number();
1001  // It is a node
1002  if (is_nodal)
1003  dof_object_ptr = to_mesh.node_ptr(dof_object_id);
1004  // It is an element
1005  else
1006  dof_object_ptr = to_mesh.elem_ptr(dof_object_id);
1007 
1008  // We should only be supporting nodal and constant elemental
1009  // variables in this code path; if we see multiple DoFs on one
1010  // object we should have been using GenericProjector
1011  mooseAssert(dof_object_ptr->n_dofs(sys_num, var_num) == 1,
1012  "Unexpectedly found " << dof_object_ptr->n_dofs(sys_num, var_num)
1013  << "dofs instead of 1");
1014 #endif
1015 
1016  auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
1017 
1018  // Check if we visited this dof object earlier
1019  auto values_ptr = dofobject_to_val.find(dof_object_id);
1020  // We did not visit this
1021  if (values_ptr == dofobject_to_val.end())
1022  {
1023  // Values for this dof object
1024  auto & val = dofobject_to_val[dof_object_id];
1025  // Interpolation value
1026  val.interp = incoming_vals[val_offset].first;
1027  // Where this value came from
1028  val.pid = pid;
1029  // Distance
1030  val.distance = incoming_vals[val_offset].second;
1031  }
1032  else
1033  {
1034  auto & val = values_ptr->second;
1035 
1036  // Look for value conflicts
1037  if (detectConflict(val.interp,
1038  incoming_vals[val_offset].first,
1039  val.distance,
1040  incoming_vals[val_offset].second))
1041  {
1042  // Keep track of distance and value
1043  const Point p =
1044  getPointInTargetAppFrame(point_requests[val_offset].first,
1045  problem_id,
1046  "Registration of received equi-distant value conflict");
1047  registerConflict(problem_id, dof_object_id, p, incoming_vals[val_offset].second, false);
1048  }
1049 
1050  // We adopt values that are, in order of priority
1051  // - valid (or from nearest app)
1052  // - closest distance
1053  // - the smallest rank with the same distance
1054  // It is debatable whether we want invalid values from the nearest app. It could just be
1055  // that the app position was closer but the extent of another child app was large enough
1056  if ((!GeneralFieldTransfer::isOutOfMeshValue(incoming_vals[val_offset].first) ||
1057  _use_nearest_app) &&
1058  (MooseUtils::absoluteFuzzyGreaterThan(val.distance, incoming_vals[val_offset].second) ||
1059  ((val.pid > pid) &&
1060  MooseUtils::absoluteFuzzyEqual(val.distance, incoming_vals[val_offset].second))))
1061  {
1062  val.interp = incoming_vals[val_offset].first;
1063  val.pid = pid;
1064  val.distance = incoming_vals[val_offset].second;
1065  }
1066  }
1067  }
1068 
1069  // Move it to next position
1070  val_offset++;
1071  }
1072 }
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
void registerConflict(unsigned int problem, dof_id_type dof_id, Point p, Real dist, bool local)
Register a potential value conflict, e.g.
std::vector< FEProblemBase * > _to_problems
Point getPointInTargetAppFrame(const Point &p, unsigned int local_i_to, const std::string &phase) const
Get the target app point from a point in the reference frame.
auto max(const L &left, const R &right)
PointIndexedMap InterpCache
A map from Point to interpolation values NOTE: this is not an asynchronous cache. ...
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
unsigned int n_dofs(const unsigned int s, const unsigned int var=libMesh::invalid_uint) const
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
bool detectConflict(Real value_1, Real value_2, Real distance_1, Real distance_2) const
Detects whether two source values are valid and equidistant for a desired target location.
virtual const Elem * elem_ptr(const dof_id_type i) const=0
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
Real Number
virtual const Node * node_ptr(const dof_id_type i) const=0
uint8_t dof_id_type
const bool _use_nearest_app
Whether to keep track of the distance from the requested point to the app position.

◆ cacheOutgoingPointInfo()

void MultiAppGeneralFieldTransfer::cacheOutgoingPointInfo ( const Point  point,
const dof_id_type  dof_object_id,
const unsigned int  problem_id,
ProcessorToPointVec outgoing_points 
)
private

Definition at line 731 of file MultiAppGeneralFieldTransfer.C.

Referenced by extractOutgoingPoints().

735 {
736  std::set<processor_id_type> processors;
737  // Find which processors will receive point data so they can send back value data
738  // The list can be larger than needed, depending on the heuristic / algorithm used to make
739  // the call on whether a processor (and the apps it runs) should be involved
740  processors.clear();
741  locatePointReceivers(point, processors);
742 
743  // We need to send this location data to these processors so they can send back values
744  for (const auto pid : processors)
745  {
746  // Select which from_mesh_division the source data must come from for this point
747  unsigned int required_source_division = 0;
748  if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
749  required_source_division = getGlobalTargetAppIndex(problem_id);
750  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
751  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
752  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
753  required_source_division = _to_mesh_divisions[problem_id]->divisionIndex(
754  _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(point));
755 
756  // Skip if we already know we don't want the point
757  if (required_source_division == MooseMeshDivision::INVALID_DIVISION_INDEX)
758  continue;
759 
760  // Store outgoing information for every source process
761  outgoing_points[pid].push_back(std::pair<Point, unsigned int>(point, required_source_division));
762 
763  // Store point information locally for processing received data
764  // We can use these information when inserting values into the solution vector
765  PointInfo pointinfo;
766  pointinfo.problem_id = problem_id;
767  pointinfo.dof_object_id = dof_object_id;
768  _processor_to_pointInfoVec[pid].push_back(pointinfo);
769  }
770 }
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
void locatePointReceivers(const Point point, std::set< processor_id_type > &processors)
std::vector< const MeshDivision * > _to_mesh_divisions
Division of the target mesh.
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
unsigned int INVALID_DIVISION_INDEX
Invalid subdomain id to return when outside the mesh division.
Definition: MeshDivision.h:28
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
ProcessorToPointInfoVec _processor_to_pointInfoVec
A map from processor to pointInfo vector.
const MooseEnum & _from_mesh_division_behavior
How to use the origin mesh divisions to restrict the transfer.

◆ callMooseError() [1/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.

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

109 {
110  callMooseError(&_app, _pars, msg, with_prefix, node, show_trace);
111 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:385
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

◆ callMooseError() [2/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 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:840
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
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:53
void mooseConsole()
Send current output buffer to Console output objects.
const hit::Node * getHitNode() const
Definition: MooseBase.h:136
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2136
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ checkMultiAppExecuteOn()

void MultiAppTransfer::checkMultiAppExecuteOn ( )
protectedinherited

Helper method for checking the 'check_multiapp_execute_on' flag.

This method was added to allow the check to be delayed by child classes, see StochasticToolsTransfer for an example.

Definition at line 173 of file MultiAppTransfer.C.

Referenced by MultiAppTransfer::MultiAppTransfer().

174 {
176  if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum())
177  mooseDoOnce(
178  mooseWarning("MultiAppTransfer execute_on flags do not match associated from_multi_app "
179  "execute_on flags"));
180 
182  if (getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
183  mooseDoOnce(
184  mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
185  "execute_on flags"));
186 
187  // In the case of siblings transfer, the check will be looser
189  if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum() &&
190  getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
191  mooseDoOnce(
192  mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
193  "and from_multi_app execute_on flags"));
194 }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
void mooseWarning(Args &&... args) const
const ExecFlagEnum & getExecuteOnEnum() const
Return the execute on MultiMooseEnum for this object.
std::shared_ptr< MultiApp > _to_multi_app

◆ checkParentAppUserObjectExecuteOn()

void MultiAppTransfer::checkParentAppUserObjectExecuteOn ( const std::string &  object_name) const
protectedinherited

Checks the execute_on flags for user object transfers with user objects on the source app which is also the parent app.

This is to prevent a common mistake lagging the data from the user object.

Definition at line 688 of file MultiAppTransfer.C.

Referenced by MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppGeneralFieldUserObjectTransfer::execute(), MultiAppGeneralFieldFunctorTransfer::execute(), MultiAppUserObjectTransfer::execute(), and MultiAppVectorPostprocessorTransfer::executeToMultiapp().

689 {
690  // Source app is not the parent, most execution schedules are fine since the transfer occurs after
691  // the app has run NOTE: not true for siblings transfer
692  if (hasFromMultiApp())
693  return;
694  // Get user object from parent. We don't know the type
695  const auto & uo = _fe_problem.getUserObject<UserObject>(object_name);
696  // If we are executing on transfers, every additional schedule is not a problem
697  if (uo.getExecuteOnEnum().contains(EXEC_TRANSFER))
698  return;
699  // If we are transferring on the same schedule as we are executing, we are lagging. Is it on
700  // purpose? We don't know, so we will give a warning unless silenced.
701  // The derived-classes offer the parameter to silence this warning
702  // Note: UOs execute before transfers on INITIAL so it's not a problem at this time
703  if (uo.getExecuteOnEnum().contains(_fe_problem.getCurrentExecuteOnFlag()) &&
705  if (!isParamValid("warn_source_object_execution_schedule") ||
706  getParam<bool>("warn_source_object_execution_schedule"))
707  uo.paramWarning("execute_on",
708  "This UserObject-derived class is being executed on '" +
710  "' and also providing values for the '" + name() +
711  "' transfer, on that same execution schedule. Because user objects are "
712  "executed after transfers are, this means the values provided by this "
713  "user object are lagged. If you are ok with this, then set the "
714  "'warn_source_object_execution_schedule' parameter to false in this "
715  "Transfer. If not, then execute '" +
716  uo.name() +
717  "' on TRANSFER by adding it to the 'execute_on' vector parameter.");
718 }
const ExecFlagType EXEC_TRANSFER
Definition: Moose.C:55
T & getUserObject(const std::string &name, unsigned int tid=0) const
Get the user object by its name.
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209
void paramWarning(const std::string &param, Args... args) const
Base class for user-specific data.
Definition: UserObject.h:19
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:30

◆ checkSiblingsTransferSupported()

virtual void MultiAppGeneralFieldTransfer::checkSiblingsTransferSupported ( ) const
inlineoverrideprotectedvirtual

Siblings transfers fully supported.

Reimplemented from MultiAppTransfer.

Definition at line 57 of file MultiAppGeneralFieldTransfer.h.

57 {}

◆ checkVariable()

void MultiAppTransfer::checkVariable ( const FEProblemBase fe_problem,
const VariableName &  var_name,
const std::string &  param_name = "" 
) const
protectedinherited

Helper for checking a problem for a variable.

Parameters
fe_problemThe problem that should contain the variable
var_nameThe name of the variable that should exist within the problem
param_name(optional) The input file parameter name for throwing paramError, if not provided a mooseError is thrown.

Definition at line 613 of file MultiAppTransfer.C.

Referenced by MultiAppDofCopyTransfer::transfer().

616 {
617  if (!fe_problem.hasVariable(var_name))
618  {
619  if (param_name.empty())
620  mooseError("The variable '", var_name, "' does not exist.");
621  else
622  paramError(param_name, "The variable '", var_name, "' does not exist.");
623  }
624 }
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
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:467
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:281

◆ closestToPosition()

bool MultiAppGeneralFieldTransfer::closestToPosition ( unsigned int  pos_index,
const Point pt 
) const
protected

Whether a point is closest to a position at the index specified than any other position.

Parameters
pos_indexthe index of the position to consider in the positions vector
ptthe point
Returns
whether the point is closest to this position than any other in the positions vector

Definition at line 1981 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppGeneralFieldFunctorTransfer::buildKDTrees(), and MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource().

1982 {
1983  mooseAssert(_nearest_positions_obj, "Should not be here without a positions object");
1985  paramError("skip_coordinate_collapsing", "Coordinate collapsing not implemented");
1986  bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1988  // Faster to just compare the index
1989  return pos_index == _nearest_positions_obj->getNearestPositionIndex(pt, initial);
1990  else
1991  {
1992  // Get the distance to the position and see if we are missing a value just because the position
1993  // is not officially the closest, but it is actually at the same distance
1994  const auto nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1995  const auto nearest_position_at_index = _nearest_positions_obj->getPosition(pos_index, initial);
1996  Real distance_to_position_at_index = (pt - nearest_position_at_index).norm();
1997  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1998 
1999  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_at_index,
2000  distance_to_nearest_position))
2001  return false;
2002  // Actually the same position (point)
2003  else if (nearest_position == nearest_position_at_index)
2004  return true;
2005  else
2006  {
2007  mooseWarning("Two equidistant positions ",
2008  nearest_position,
2009  " and ",
2010  nearest_position_at_index,
2011  " detected near point ",
2012  pt);
2013  return true;
2014  }
2015  }
2016 }
const Point & getNearestPosition(const Point &target, bool initial) const
Find the nearest Position for a given point.
Definition: Positions.C:88
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:467
const bool _skip_coordinate_collapsing
Whether to skip coordinate collapsing (transformations of coordinates between applications using diff...
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
const Point & getPosition(unsigned int index, bool initial) const
Getter for a single position at a known index.
Definition: Positions.C:59
void mooseWarning(Args &&... args) const
unsigned int getNearestPositionIndex(const Point &target, bool initial) const
Find the nearest Position index for a given point.
Definition: Positions.C:96
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
auto norm(const T &a)
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:30

◆ 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 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
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:2594
MooseObjectName uniqueName() const
Definition: MooseBase.C:69
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:406
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:385
A class for storing an input parameter name.

◆ correctSolutionVectorValues()

void MultiAppGeneralFieldTransfer::correctSolutionVectorValues ( const unsigned int  var_index,
const DofobjectToInterpValVec dofobject_to_valsvec,
const InterpCaches interp_caches 
)
private

Definition at line 1650 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1654 {
1655  // TODO: variable component support
1656 
1657  // Get the variable name, with the accommodation for array/vector names
1658  const auto & var_name = getToVarName(var_index);
1659 
1660  for (const auto problem_id : index_range(_to_problems))
1661  {
1662  auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
1663 
1664  // libMesh EquationSystems
1665  // NOTE: we would expect to set variables from the displaced equation system here
1666  auto & es = getEquationSystem(*_to_problems[problem_id], false);
1667 
1668  // libMesh system
1669  System * to_sys = find_sys(es, var_name);
1670 
1671  // libMesh mesh
1672  const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
1673  auto var_num = to_sys->variable_number(var_name);
1674  auto sys_num = to_sys->number();
1675 
1676  auto & fe_type = getToVariable(var_index)->feType();
1677  bool is_nodal = getToVariable(var_index)->isNodal();
1678 
1679  // We might need the synchronization of values that update provides
1680  // to find the nearest target value
1681  // NOTE: we are checking the buffers still for the values transfered, so we actually don't gain
1682  // anything from ghosting We have to still work with buffers, how else do we know the source
1683  // (from transferred buffers) or target (from all the points listed in buffers) are met
1684  if (_post_transfer_extrapolation == "nearest-valid-target")
1685  {
1686  if (fe_type.order > CONSTANT && !is_nodal)
1687  paramError("post_transfer_extrapolation",
1688  "Nearest-valid-target is not implemented for higher order elemental variables");
1689  const auto & node_to_elem_map =
1690  _to_problems[problem_id]->mesh(_displaced_target_mesh).nodeToElemMap();
1691 
1692  for (const auto & val_pair : dofobject_to_val)
1693  {
1694  const auto dof_object_id = val_pair.first;
1695 
1696  // Check that the value was out of bounds
1697  const DofObject * dof_object = nullptr;
1698  if (is_nodal)
1699  dof_object = to_mesh.node_ptr(dof_object_id);
1700  else
1701  dof_object = to_mesh.elem_ptr(dof_object_id);
1702  const auto dof = dof_object->dof_number(sys_num, var_num, 0);
1703  const auto val = val_pair.second.interp;
1705  {
1706  Real nearest_value = 0.;
1708 
1709  // Find the nearest valid value
1710  if (is_nodal)
1711  {
1712  const auto node = to_mesh.node_ptr(dof_object_id);
1713  // Find nearest node
1714  // NOTE: we have access to a bunch of values now here, we could interpolate!
1715  Real min_distance_sq = std::numeric_limits<Real>::max();
1716  for (const auto & elem_id : libmesh_map_find(node_to_elem_map, node->id()))
1717  {
1718  const auto elem = to_mesh.elem_ptr(elem_id);
1719  for (const auto & elem_node : elem->node_ref_range())
1720  {
1721  Real distance_sq = (Point(elem_node) - Point(*node)).norm_sq();
1722  // Avoid using another bad value from a node which did not receive data
1723  // Note: if the node is on another process ID, we can't obtain the value from a
1724  // buffer here Note: we could seek from the solution vector instead BUT if we do
1725  // that we may be ignoring source restrictions set to the transfer.
1726  // Note: Target mesh restrictions are fine since we are picking from
1727  // dofobject_to_val
1728  if (distance_sq < min_distance_sq && elem_node.id() != node->id())
1729  {
1730  if (auto it = dofobject_to_val.find(elem_node.id());
1731  it != dofobject_to_val.end() &&
1732  !GeneralFieldTransfer::isOutOfMeshValue(it->second.interp))
1733  {
1734  min_distance_sq = distance_sq;
1735  min_dist_id = elem_node.id();
1736  nearest_value = it->second.interp;
1737  }
1738  else if (elem_node.n_dofs(sys_num, var_num) > 0)
1739  {
1740  const auto other_dof = elem_node.dof_number(sys_num, var_num, 0);
1741  try
1742  {
1743  // setSolutionVectorValues leaves DOFs that did not receive a transfer
1744  // value marked with OutOfMeshValue, so isOutOfMeshValue is sufficient
1745  // to reject them here. DOFs that did receive data (even if the value
1746  // equals _default_extrapolation_value) are accepted correctly.
1747  if (const auto sol_val = (*to_sys->current_local_solution)(other_dof);
1749  {
1750  min_distance_sq = distance_sq;
1751  min_dist_id = elem_node.id();
1752  nearest_value = sol_val;
1753  }
1754  }
1755  catch (...)
1756  {
1757  // Access in ghosted vector failed, just keep going
1758  }
1759  }
1760  }
1761  }
1762  }
1763  }
1764  else
1765  {
1766  const auto elem = to_mesh.elem_ptr(dof_object_id);
1767  Real min_distance_sq = std::numeric_limits<Real>::max();
1768  for (const auto neigh : elem->neighbor_ptr_range())
1769  {
1770  if (!neigh || neigh == libMesh::remote_elem)
1771  continue;
1772  Real distance_sq = (neigh->vertex_average() - elem->vertex_average()).norm_sq();
1773  if (distance_sq < min_distance_sq)
1774  {
1775  if (auto it = dofobject_to_val.find(neigh->id());
1776  it != dofobject_to_val.end() &&
1777  !GeneralFieldTransfer::isOutOfMeshValue(it->second.interp))
1778  {
1779  min_distance_sq = distance_sq;
1780  min_dist_id = neigh->id();
1781  nearest_value = it->second.interp;
1782  }
1783  // Access into ghosted solution vector. See comments for node
1784  else if (neigh->n_dofs(sys_num, var_num) > 0)
1785  {
1786  const auto other_dof = neigh->dof_number(sys_num, var_num, 0);
1787  try
1788  {
1789  // Same reasoning as the nodal branch: DOFs without transfer data carry
1790  // OutOfMeshValue, so isOutOfMeshValue is the correct rejection criterion.
1791  if (const auto sol_val = (*to_sys->current_local_solution)(other_dof);
1793  {
1794  nearest_value = sol_val;
1795  min_distance_sq = distance_sq;
1796  min_dist_id = neigh->id();
1797  }
1798  }
1799  catch (...)
1800  {
1801  // Access in ghosted vector failed, just keep going
1802  }
1803  }
1804  }
1805  }
1806  }
1807  nearest_value = (min_dist_id != std::numeric_limits<dof_id_type>::max())
1808  ? nearest_value
1810 
1811  if (min_dist_id != std::numeric_limits<dof_id_type>::max())
1812  to_sys->solution->set(dof, nearest_value);
1813  else
1814  {
1815  // No valid neighbor was found; replace the out-of-mesh sentinel with the
1816  // fallback value so the solution vector does not retain an invalid sentinel.
1817  to_sys->solution->set(dof, _default_extrapolation_value);
1818  flagSolutionWarning(
1819  "Search for the valid target nearest from a target point for which no "
1820  "values were found (and thus extrapolation is required) failed. This warning will "
1821  "not be repeated on the console for further failures.");
1822  }
1823  }
1824  }
1825  to_sys->solution->close();
1826  // Sync local solutions
1827  to_sys->update();
1828  }
1829  }
1830 }
virtual bool isNodal() const
Is this variable nodal.
const MooseEnum _post_transfer_extrapolation
How to post treat after the transfer.
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
const libMesh::FEType & feType() const
Get the type of finite element object.
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:467
auto norm_sq(const T &a)
std::vector< FEProblemBase * > _to_problems
MooseVariableFieldBase * getToVariable(unsigned int var_index) const
Return a pointer to a target variable.
const Real _default_extrapolation_value
Value to use when no received data is valid for a target location.
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
auto max(const L &left, const R &right)
unsigned int variable_number(std::string_view var) const
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
unsigned int number() const
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem&#39;s equation system, displaced or not Be careful! If you transfer TO a displaced sy...
static libMesh::System * find_sys(libMesh::EquationSystems &es, const std::string &var_name)
Small helper function for finding the system containing the variable.
Definition: Transfer.C:91
std::unique_ptr< NumericVector< Number > > solution
virtual const Elem * elem_ptr(const dof_id_type i) const=0
virtual void update()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::unique_ptr< NumericVector< Number > > current_local_solution
virtual const Node * node_ptr(const dof_id_type i) const=0
auto index_range(const T &sizable)
uint8_t dof_id_type
const RemoteElem * remote_elem

◆ currentDirection()

MooseEnum Transfer::currentDirection ( )
inlineinherited

Definition at line 85 of file Transfer.h.

85 { return _current_direction; }
MooseEnum _current_direction
Definition: Transfer.h:106

◆ customSetup()

virtual void SetupInterface::customSetup ( const ExecFlagType )
inlinevirtualinherited

Gets called in FEProblemBase::execute() for execute flags other than initial, timestep_begin, nonlinear, linear and subdomain.

Reimplemented in Function.

Definition at line 69 of file SetupInterface.h.

69 {}

◆ declareManagedRestartableDataWithContext()

template<typename T , typename... Args>
Restartable::ManagedValue< T > Restartable::declareManagedRestartableDataWithContext ( const std::string &  data_name,
void context,
Args &&...  args 
)
protectedinherited

Declares a piece of "managed" restartable data and initialize it.

Here, "managed" restartable data means that the caller can destruct this data upon destruction of the return value of this method. Therefore, this ManagedValue<T> wrapper should survive after the final calls to dataStore() for it. That is... at the very end.

This is needed for objects whose destruction ordering is important, and enables natural c++ destruction in reverse construction order of the object that declares it.

See delcareRestartableData and declareRestartableDataWithContext for more information.

Definition at line 283 of file Restartable.h.

286 {
287  auto & data_ptr =
288  declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...);
289  return Restartable::ManagedValue<T>(data_ptr);
290 }
Wrapper class for restartable data that is "managed.
Definition: Restartable.h:42

◆ declareRecoverableData()

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

Declare a piece of data as "recoverable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

Note - this data will NOT be restored on Restart!

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 358 of file Restartable.h.

359 {
360  const auto full_name = restartableName(data_name);
361 
363 
364  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
365 }
std::string restartableName(const std::string &data_name) const
Gets the name of a piece of restartable data given a data name, adding the system name and object nam...
Definition: Restartable.C:78
void registerRestartableNameWithFilterOnApp(const std::string &name, Moose::RESTARTABLE_FILTER filter)
Helper function for actually registering the restartable data.
Definition: Restartable.C:71

◆ declareRestartableData()

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

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
argsArguments to forward to the constructor of the data

Definition at line 276 of file Restartable.h.

277 {
278  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
279 }

◆ declareRestartableDataWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithContext ( const std::string &  data_name,
void context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable" and initialize it.

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 301 of file Restartable.h.

304 {
305  return declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...).set();
306 }

◆ declareRestartableDataWithObjectName()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectName ( const std::string &  data_name,
const std::string &  object_name,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
argsArguments to forward to the constructor of the data

Definition at line 330 of file Restartable.h.

333 {
334  return declareRestartableDataWithObjectNameWithContext<T>(
335  data_name, object_name, nullptr, std::forward<Args>(args)...);
336 }

◆ declareRestartableDataWithObjectNameWithContext()

template<typename T , typename... Args>
T & Restartable::declareRestartableDataWithObjectNameWithContext ( const std::string &  data_name,
const std::string &  object_name,
void context,
Args &&...  args 
)
protectedinherited

Declare a piece of data as "restartable".

This means that in the event of a restart this piece of data will be restored back to its previous value.

NOTE: This returns a reference! Make sure you store it in a reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)
object_nameA supplied name for the object that is declaring this data.
contextContext pointer that will be passed to the load and store functions
argsArguments to forward to the constructor of the data

Definition at line 340 of file Restartable.h.

344 {
345  std::string old_name = _restartable_name;
346 
347  _restartable_name = object_name;
348 
349  T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
350 
351  _restartable_name = old_name;
352 
353  return value;
354 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:250
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)

◆ detectConflict()

bool MultiAppGeneralFieldTransfer::detectConflict ( Real  value_1,
Real  value_2,
Real  distance_1,
Real  distance_2 
) const
protected

Detects whether two source values are valid and equidistant for a desired target location.

Parameters
value_1value from the first value source / subapp
value_2value from the second value source / subapp
distance_1distance from the first source
distance_2distance from the second source
Returns
true if the values are different and distances from the source points/apps are the same

Definition at line 2206 of file MultiAppGeneralFieldTransfer.C.

Referenced by cacheIncomingInterpVals(), MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValuesWithMeshFunctions(), and MultiAppGeneralFieldUserObjectTransfer::evaluateInterpValuesWithUserObjects().

2210 {
2211  // No conflict if we're not looking for them
2213  // Only consider conflicts if the values are valid and different
2214  if (current_value != GeneralFieldTransfer::OutOfMeshValue &&
2215  new_value != GeneralFieldTransfer::OutOfMeshValue &&
2216  !MooseUtils::absoluteFuzzyEqual(current_value, new_value))
2217  // Conflict only occurs if the origin points are equidistant
2218  if (MooseUtils::absoluteFuzzyEqual(current_distance, new_distance))
2219  return true;
2220  return false;
2221 }
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...

◆ direction()

MooseEnum Transfer::direction ( )
inlineinherited

The current direction that this Transfer is going in. direction() is to be deprecated for currentDirection()

Definition at line 84 of file Transfer.h.

Referenced by Transfer::setCurrentDirection().

84 { return _direction; }
MooseEnum _direction
Definition: Transfer.h:105

◆ directions()

const MultiMooseEnum& Transfer::directions ( )
inlineinherited

The directions this Transfer should be executed on.

Definition at line 79 of file Transfer.h.

79 { return _directions; }
MultiMooseEnum _directions
The directions this Transfer is to be executed on.
Definition: Transfer.h:110

◆ 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.

Referenced by EigenKernel::enabled().

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

◆ errorIfObjectExecutesOnTransferInSourceApp()

void MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp ( const std::string &  object_name) const
protectedinherited

Error if executing this MooseObject on EXEC_TRANSFER in a source multiapp (from_multiapp, e.g.

child/sibling app). Note that, conversely, when the parent app is the source application, it is usually desired to use EXEC_TRANSFER for a MooseObject that provides the values to transfer.

Parameters
object_namename of the object to check the execute_on flags for

Definition at line 721 of file MultiAppTransfer.C.

Referenced by MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppGeneralFieldUserObjectTransfer::execute(), MultiAppGeneralFieldFunctorTransfer::execute(), MultiAppUserObjectTransfer::execute(), and MultiAppVectorPostprocessorTransfer::executeFromMultiapp().

722 {
723  // parent app is the source app, EXEC_TRANSFER is fine
724  if (!hasFromMultiApp())
725  return;
726  // Get the app and problem
727  const auto & app = getFromMultiApp();
728  if (!app->hasApp())
729  return;
730  const auto & problem = app->appProblemBase(app->firstLocalApp());
731  // Use the warehouse to find the object
732  std::vector<SetupInterface *> objects_with_exec_on;
733  problem.theWarehouse()
734  .query()
735  .template condition<AttribName>(object_name)
736  .template condition<AttribExecOns>(EXEC_TRANSFER)
737  .queryInto(objects_with_exec_on);
738  if (objects_with_exec_on.size())
739  mooseError("Object '" + object_name +
740  "' should not be executed on EXEC_TRANSFER, because this transfer has "
741  "indicated it does not support it.\nExecuting this object on TIMESTEP_END should be "
742  "sufficient to get updated values.");
743 }
const ExecFlagType EXEC_TRANSFER
Definition: Moose.C:55
const std::shared_ptr< MultiApp > getFromMultiApp() const
Get the MultiApp to transfer data from.
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
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:281

◆ errorPrefix()

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

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

Definition at line 274 of file MooseBase.h.

274 { return messagePrefix(); }
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ evaluateInterpValues()

virtual void MultiAppGeneralFieldTransfer::evaluateInterpValues ( const unsigned int  var_index,
const std::vector< std::pair< Point, unsigned int >> &  incoming_points,
std::vector< std::pair< Real, Real >> &  outgoing_vals 
)
protectedpure virtual

◆ examineLocalValueConflicts()

void MultiAppGeneralFieldTransfer::examineLocalValueConflicts ( const unsigned int  var_index,
const DofobjectToInterpValVec dofobject_to_valsvec,
const InterpCaches distance_caches 
)
private

Remove potential value conflicts that did not materialize because another source was closer Several equidistant valid values were found when computing values to send, but they were not closest, another value got selected.

Parameters
var_indexthe index of the variable of interest
dofobject_to_valsveca data structure mapping dofobjects to received values and distances (used for nodal-value-dof-only variables and constant monomials)
distance_cachesa cache holding the distances received (used for higher order elemental variables)

Definition at line 1139 of file MultiAppGeneralFieldTransfer.C.

Referenced by outputValueConflicts().

1143 {
1144  const auto var_name = getToVarName(var_index);
1145  // We must check a posteriori because we could have:
1146  // - two equidistant points with different values from two different problems
1147  // - two (or more) equidistant points with different values from the same problem
1148  // but a third point/value couple from another problem is actually closer, so there is no
1149  // conflict because only that last one matters. We check here whether the potential conflicts
1150  // actually were the nearest points. We use several global reductions. If there are not too many
1151  // potential conflicts (and there should not be in a well-posed problem) it should be manageably
1152  // expensive
1153 
1154  // Move relevant conflict info (location, distance) to a smaller data structure
1155  std::vector<std::tuple<Point, Real>> potential_conflicts;
1156  potential_conflicts.reserve(_local_conflicts.size());
1157 
1158  // Loop over potential conflicts to broadcast all the conflicts
1159  for (auto conflict_it = _local_conflicts.begin(); conflict_it != _local_conflicts.end();
1160  ++conflict_it)
1161  {
1162  // Extract info for the potential conflict
1163  const auto potential_conflict = *conflict_it;
1164  const unsigned int i_from = std::get<0>(potential_conflict);
1165  Point p = std::get<2>(potential_conflict);
1166  const Real distance = std::get<3>(potential_conflict);
1167  // If not using nearest-positions: potential conflict was saved in the source frame
1168  // If using nearest-positions: potential conflict was saved in the reference frame
1170  {
1171  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1172  p = (*_from_transforms[from_global_num])(p);
1173  }
1174 
1175  // Send data in the global frame of reference
1176  potential_conflicts.push_back(std::make_tuple(p, distance));
1177  }
1178  _communicator.allgather(potential_conflicts, false);
1179  // conflicts could have been reported multiple times within a tolerance
1180  std::sort(potential_conflicts.begin(), potential_conflicts.end());
1181  potential_conflicts.erase(unique(potential_conflicts.begin(),
1182  potential_conflicts.end(),
1183  [](auto l, auto r)
1184  {
1185  return std::get<0>(l).absolute_fuzzy_equals(std::get<0>(r)) &&
1186  std::abs(std::get<1>(l) - std::get<1>(r)) < TOLERANCE;
1187  }),
1188  potential_conflicts.end());
1189 
1190  std::vector<std::tuple<Point, Real>> real_conflicts;
1191  real_conflicts.reserve(potential_conflicts.size());
1192 
1193  // For each potential conflict, we need to identify what problem asked for that value
1194  for (auto conflict_it = potential_conflicts.begin(); conflict_it != potential_conflicts.end();
1195  ++conflict_it)
1196  {
1197  // Extract info for the potential conflict
1198  auto potential_conflict = *conflict_it;
1199  const Point p = std::get<0>(potential_conflict);
1200  const Real distance = std::get<1>(potential_conflict);
1201 
1202  // Check all the problems to try to find this requested point in the data structures filled
1203  // with the received information
1204  bool target_found = false;
1205  bool conflict_real = false;
1206  for (const auto i_to : index_range(_to_problems))
1207  {
1208  // Extract variable info
1210  System * to_sys = find_sys(es, var_name);
1211  auto var_num = to_sys->variable_number(var_name);
1212  auto & fe_type = to_sys->variable_type(var_num);
1213  bool is_nodal = _to_variables[var_index]->isNodal();
1214 
1215  // Move to the local frame of reference for the target problem
1216  Point local_p =
1217  getPointInTargetAppFrame(p, i_to, "Resolution of local value conflicts detected");
1218 
1219  // Higher order elemental
1220  if (fe_type.order > CONSTANT && !is_nodal)
1221  {
1222  // distance_caches finds use a binned floating point search
1223  auto cached_distance = distance_caches[i_to].find(local_p);
1224  if (cached_distance != distance_caches[i_to].end())
1225  {
1226  target_found = true;
1227  // Distance between source & target is still the distance we found in the sending
1228  // process when we detected a potential overlap while gathering values to send
1229  if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1230  conflict_real = true;
1231  }
1232  }
1233  // Nodal-value-dof-only and const monomial variable
1234  else
1235  {
1236  // Find the dof id for the variable to be set
1238  auto pl = _to_problems[i_to]->mesh().getPointLocator();
1239  pl->enable_out_of_mesh_mode();
1240  if (is_nodal)
1241  {
1242  auto node = pl->locate_node(local_p);
1243  if (node)
1244  // this is not the dof_id for the variable, but the dof_object_id
1245  dof_object_id = node->id();
1246  }
1247  else
1248  {
1249  auto elem = (*pl)(local_p);
1250  if (elem)
1251  dof_object_id = elem->id();
1252  }
1253  pl->disable_out_of_mesh_mode();
1254 
1255  // point isn't even in mesh
1256  if (dof_object_id == std::numeric_limits<dof_id_type>::max())
1257  continue;
1258 
1259  // this dof was not requested by this problem on this process
1260  if (dofobject_to_valsvec[i_to].find(dof_object_id) == dofobject_to_valsvec[i_to].end())
1261  continue;
1262 
1263  target_found = true;
1264  // Check the saved distance in the vector of saved results. If the same, then the local
1265  // conflict we detected with that distance is still an issue after receiving all values
1266  if (MooseUtils::absoluteFuzzyEqual(
1267  dofobject_to_valsvec[i_to].find(dof_object_id)->second.distance, distance))
1268  conflict_real = true;
1269  }
1270  }
1271  // Only keep the actual conflicts / overlaps
1272  if (target_found && conflict_real)
1273  real_conflicts.push_back(potential_conflict);
1274  }
1275 
1276  // Communicate real conflicts to all so they can be checked by every process
1277  _communicator.allgather(real_conflicts, false);
1278 
1279  // Delete potential conflicts that were resolved
1280  // Each local list of conflicts will now be updated. It's important to keep conflict lists local
1281  // so we can give more context like the sending processor id (the domain of which can be
1282  // inspected by the user)
1283  for (auto conflict_it = _local_conflicts.begin(); conflict_it != _local_conflicts.end();)
1284  {
1285  // Extract info for the potential conflict
1286  const auto potential_conflict = *conflict_it;
1287  const unsigned int i_from = std::get<0>(potential_conflict);
1288  Point p = std::get<2>(potential_conflict);
1289  const Real distance = std::get<3>(potential_conflict);
1291  {
1292  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1293  p = (*_from_transforms[from_global_num])(p);
1294  }
1295 
1296  // If not in the vector of real conflicts, was not real so delete it
1297  if (std::find_if(real_conflicts.begin(),
1298  real_conflicts.end(),
1299  [p, distance](const auto & item)
1300  {
1301  return std::get<0>(item).absolute_fuzzy_equals(p) &&
1302  std::abs(std::get<1>(item) - distance) < TOLERANCE;
1303  }) == real_conflicts.end())
1304  _local_conflicts.erase(conflict_it);
1305  else
1306  ++conflict_it;
1307  }
1308 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:50
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition: KokkosUtils.h:40
std::vector< FEProblemBase * > _to_problems
const Parallel::Communicator & _communicator
Real distance(const Point &p)
Point getPointInTargetAppFrame(const Point &p, unsigned int local_i_to, const std::string &phase) const
Get the target app point from a point in the reference frame.
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
auto max(const L &left, const R &right)
unsigned int variable_number(std::string_view var) const
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem&#39;s equation system, displaced or not Be careful! If you transfer TO a displaced sy...
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _local_conflicts
Keeps track of all local equidistant points to requested points, creating an indetermination in which...
static libMesh::System * find_sys(libMesh::EquationSystems &es, const std::string &var_name)
Small helper function for finding the system containing the variable.
Definition: Transfer.C:91
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
bool absolute_fuzzy_equals(const T &var1, const T2 &var2, const Real tol=TOLERANCE *TOLERANCE)
const FEType & variable_type(const unsigned int i) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
auto index_range(const T &sizable)
uint8_t dof_id_type

◆ examineReceivedValueConflicts()

void MultiAppGeneralFieldTransfer::examineReceivedValueConflicts ( const unsigned int  var_index,
const DofobjectToInterpValVec dofobject_to_valsvec,
const InterpCaches distance_caches 
)
private

Remove potential value conflicts that did not materialize because another source was closer Several equidistant valid values were received, but they were not closest.

Parameters
var_indexthe index of the variable of interest
dofobject_to_valsveca data structure mapping dofobjects to received values and distances (used for nodal-value-dof-only variables and constant monomials)
distance_cachesa cache holding the distances received (used for higher order elemental variables)

Definition at line 1086 of file MultiAppGeneralFieldTransfer.C.

Referenced by outputValueConflicts().

1090 {
1091  const auto var_name = getToVarName(var_index);
1092  // We must check a posteriori because we could have two
1093  // equidistant points with different values from two different problems, but a third point from
1094  // another problem is actually closer, so there is no conflict because only that last one
1095  // matters We check here whether the potential conflicts actually were the nearest points Loop
1096  // over potential conflicts
1097  for (auto conflict_it = _received_conflicts.begin(); conflict_it != _received_conflicts.end();)
1098  {
1099  const auto potential_conflict = *conflict_it;
1100  bool overlap_found = false;
1101 
1102  // Extract info for the potential conflict
1103  const unsigned int problem_id = std::get<0>(potential_conflict);
1104  const dof_id_type dof_object_id = std::get<1>(potential_conflict);
1105  const Point p = std::get<2>(potential_conflict);
1106  const Real distance = std::get<3>(potential_conflict);
1107 
1108  // Extract target variable info
1109  auto & es = getEquationSystem(*_to_problems[problem_id], _displaced_target_mesh);
1110  System * to_sys = find_sys(es, var_name);
1111  auto var_num = to_sys->variable_number(var_name);
1112  auto & fe_type = to_sys->variable_type(var_num);
1113  bool is_nodal = _to_variables[var_index]->isNodal();
1114 
1115  // Higher order elemental
1116  if (fe_type.order > CONSTANT && !is_nodal)
1117  {
1118  auto cached_distance = distance_caches[problem_id].find(p);
1119  if (cached_distance == distance_caches[problem_id].end())
1120  mooseError("Conflict point was not found in the map of all origin-target distances");
1121  // Distance is still the distance when we detected a potential overlap
1122  if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1123  overlap_found = true;
1124  }
1125  // Nodal and const monomial variable
1126  else if (MooseUtils::absoluteFuzzyEqual(
1127  dofobject_to_valsvec[problem_id].find(dof_object_id)->second.distance, distance))
1128  overlap_found = true;
1129 
1130  // Map will only keep the actual overlaps
1131  if (!overlap_found)
1132  _received_conflicts.erase(conflict_it);
1133  else
1134  ++conflict_it;
1135  }
1136 }
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
Find a value in an array.
Definition: KokkosUtils.h:40
std::vector< FEProblemBase * > _to_problems
Real distance(const Point &p)
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
unsigned int variable_number(std::string_view var) const
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem&#39;s equation system, displaced or not Be careful! If you transfer TO a displaced sy...
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
Keeps track of all received conflicts.
static libMesh::System * find_sys(libMesh::EquationSystems &es, const std::string &var_name)
Small helper function for finding the system containing the variable.
Definition: Transfer.C:91
const FEType & variable_type(const unsigned int i) const
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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:281
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
uint8_t dof_id_type

◆ execute()

void MultiAppGeneralFieldTransfer::execute ( )
overridevirtual

Execute the transfer.

Implements Transfer.

Reimplemented in MultiAppGeneralFieldFunctorTransfer, and MultiAppGeneralFieldUserObjectTransfer.

Definition at line 480 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldUserObjectTransfer::execute(), and MultiAppGeneralFieldFunctorTransfer::execute().

481 {
482  TIME_SECTION(
483  "MultiAppGeneralFieldTransfer::execute()_" + name(), 5, "Transfer execution " + name());
484  getAppInfo();
485 
486  // Set up bounding boxes, etc
488 
489  // loop over the vector of variables and make the transfer one by one
490  for (const auto i : make_range(_var_size))
491  transferVariable(i);
492 
493  postExecute();
494 }
unsigned int _var_size
The number of variables to transfer.
virtual void getAppInfo() override
This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.)
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
void transferVariable(unsigned int i)
Performs the transfer for the variable of index i.
virtual void postExecute() override
Add some extra work if necessary after execute().
IntRange< T > make_range(T beg, T end)
void prepareToTransfer()
Initialize supporting attributes like bounding boxes, processor app indexes etc.

◆ extendBoundingBoxes()

void MultiAppTransfer::extendBoundingBoxes ( const Real  factor,
std::vector< libMesh::BoundingBox > &  bboxes 
) const
protectedinherited

Extends bounding boxes to avoid missing points.

Definition at line 466 of file MultiAppTransfer.C.

Referenced by MultiAppTransfer::getFromBoundingBoxes(), and prepareToTransfer().

467 {
468  const auto extension_factor = factor - 1;
469 
470  // Extend (or contract if the extension factor is negative) bounding boxes along all the
471  // directions by the same length. Greater than zero values of this member may be necessary because
472  // the nearest bounding box does not necessarily give you the closest node/element. It will depend
473  // on the partition and geometry. A node/element will more likely find its nearest source
474  // element/node by extending bounding boxes. If each of the bounding boxes covers the entire
475  // domain, a node/element will be able to find its nearest source element/node for sure, but at
476  // the same time, more communication will be involved and can be expensive.
477  for (auto & box : bboxes)
478  {
479  // libmesh set an invalid bounding box using this code
480  // for (unsigned int i=0; i<LIBMESH_DIM; i++)
481  // {
482  // this->first(i) = std::numeric_limits<Real>::max();
483  // this->second(i) = -std::numeric_limits<Real>::max();
484  // }
485  // If it is an invalid box, we should skip it
486  if (box.first(0) == std::numeric_limits<Real>::max())
487  continue;
488 
489  auto width = box.second - box.first;
490  box.second += width * extension_factor;
491  box.first -= width * extension_factor;
492  }
493 }
auto max(const L &left, const R &right)

◆ extractLocalFromBoundingBoxes()

void MultiAppGeneralFieldTransfer::extractLocalFromBoundingBoxes ( std::vector< BoundingBox > &  local_bboxes)
protected

Definition at line 916 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldShapeEvaluationTransfer::prepareEvaluationOfInterpValues(), and MultiAppGeneralFieldUserObjectTransfer::prepareEvaluationOfInterpValues().

917 {
918  local_bboxes.resize(_froms_per_proc[processor_id()]);
919  // Find the index to the first of this processor's local bounding boxes.
920  unsigned int local_start = 0;
921  for (processor_id_type i_proc = 0; i_proc < n_processors() && i_proc != processor_id(); ++i_proc)
922  local_start += _froms_per_proc[i_proc];
923 
924  // Extract the local bounding boxes.
925  for (const auto i_from : make_range(_froms_per_proc[processor_id()]))
926  local_bboxes[i_from] = _from_bboxes[local_start + i_from];
927 }
std::vector< BoundingBox > _from_bboxes
Bounding boxes for all source applications.
uint8_t processor_id_type
processor_id_type n_processors() const
std::vector< unsigned int > _froms_per_proc
Number of source/from applications per processor. This vector is indexed by processor id...
IntRange< T > make_range(T beg, T end)
processor_id_type processor_id() const

◆ extractOutgoingPoints()

void MultiAppGeneralFieldTransfer::extractOutgoingPoints ( const unsigned int  var_index,
ProcessorToPointVec outgoing_points 
)
private

Definition at line 773 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

775 {
776  // Get the variable name, with the accommodation for array/vector names
777  const auto & var_name = getToVarName(var_index);
778 
779  // Clean up the map from processor to pointInfo vector
780  // This map should be consistent with outgoing_points
782 
783  // Loop over all problems
784  for (const auto i_to : index_range(_to_problems))
785  {
786  const auto global_i_to = getGlobalTargetAppIndex(i_to);
787 
788  // libMesh EquationSystems
790  // libMesh system that has this variable
791  System * to_sys = find_sys(es, var_name);
792  auto sys_num = to_sys->number();
793  auto var_num = _to_variables[var_index]->number();
794  auto & fe_type = _to_variables[var_index]->feType();
795  bool is_nodal = _to_variables[var_index]->isNodal();
796 
797  // Moose mesh
798  const auto & to_moose_mesh = _to_problems[i_to]->mesh(_displaced_target_mesh);
799  const auto & to_mesh = to_moose_mesh.getMesh();
800 
801  // We support more general variables via libMesh GenericProjector
802  if (fe_type.order > CONSTANT && !is_nodal)
803  {
807  const std::vector<unsigned int> varvec(1, var_num);
808 
811  Number,
813  request_gather(*to_sys, f, &g, nullsetter, varvec);
814 
815  // Defining only boundary values will not be enough to describe the variable, disallow it
816  if (_to_boundaries.size() && (_to_variables[var_index]->getContinuity() == DISCONTINUOUS))
817  mooseError("Higher order discontinuous elemental variables are not supported for "
818  "target-boundary "
819  "restricted transfers");
820 
821  // Not implemented as the target mesh division could similarly be cutting elements in an
822  // arbitrary way with not enough requested points to describe the target variable
823  if (!_to_mesh_divisions.empty() && !_to_mesh_divisions[i_to]->coversEntireMesh())
824  mooseError("Higher order variable support not implemented for target mesh division "
825  "unless the mesh is fully covered / indexed in the mesh division. This must be "
826  "set programmatically in the MeshDivision object used.");
827 
828  // We dont look at boundary restriction, not supported for higher order target variables
829  // Same for mesh divisions
830  const auto & to_begin = _to_blocks.empty()
831  ? to_mesh.active_local_elements_begin()
832  : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
833 
834  const auto & to_end = _to_blocks.empty()
835  ? to_mesh.active_local_elements_end()
836  : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
837 
838  ConstElemRange to_elem_range(to_begin, to_end);
839 
840  request_gather.project(to_elem_range);
841 
842  dof_id_type point_id = 0;
843  for (const Point & p : f.points_requested())
844  // using the point number as a "dof_object_id" will serve to identify the point if we ever
845  // rework interp/distance_cache into the dof_id_to_value maps
847  (*_to_transforms[global_i_to])(p), point_id++, i_to, outgoing_points);
848 
849  // This is going to require more complicated transfer work
850  if (!g.points_requested().empty())
851  mooseError("We don't currently support variables with gradient degrees of freedom");
852  }
853  else if (is_nodal)
854  {
855  for (const auto & node : to_mesh.local_node_ptr_range())
856  {
857  // Skip this node if the variable has no dofs at it.
858  if (node->n_dofs(sys_num, var_num) < 1)
859  continue;
860 
861  // Skip if it is a block restricted transfer and current node does not have
862  // specified blocks
863  if (!_to_blocks.empty() && !inBlocks(_to_blocks, to_moose_mesh, node))
864  continue;
865 
866  if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, node))
867  continue;
868 
869  // Skip if the node does not meet the target mesh division behavior
870  // We cannot know from which app the data will come from so we cannot know
871  // the source mesh division index and the source app global index
872  if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*node) ==
874  continue;
875 
876  // Cache point information
877  // We will use this information later for setting values back to solution vectors
879  (*_to_transforms[global_i_to])(*node), node->id(), i_to, outgoing_points);
880  }
881  }
882  else // Elemental, constant monomial
883  {
884  for (const auto & elem :
885  as_range(to_mesh.local_elements_begin(), to_mesh.local_elements_end()))
886  {
887  // Skip this element if the variable has no dofs at it.
888  if (elem->n_dofs(sys_num, var_num) < 1)
889  continue;
890 
891  // Skip if the element is not inside the block restriction
892  if (!_to_blocks.empty() && !inBlocks(_to_blocks, elem))
893  continue;
894 
895  // Skip if the element does not have a side on the boundary
896  if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, elem))
897  continue;
898 
899  // Skip if the element is not indexed within the mesh division
900  if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*elem) ==
902  continue;
903 
904  // Cache point information
905  // We will use this information later for setting values back to solution vectors
906  cacheOutgoingPointInfo((*_to_transforms[global_i_to])(elem->vertex_average()),
907  elem->id(),
908  i_to,
909  outgoing_points);
910  } // for
911  } // else
912  } // for
913 }
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
void cacheOutgoingPointInfo(const Point point, const dof_id_type dof_object_id, const unsigned int problem_id, ProcessorToPointVec &outgoing_points)
std::vector< FEProblemBase * > _to_problems
std::vector< const MeshDivision * > _to_mesh_divisions
Division of the target mesh.
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
DISCONTINUOUS
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
std::set< SubdomainID > _to_blocks
Target block(s) restriction.
unsigned int number() const
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem&#39;s equation system, displaced or not Be careful! If you transfer TO a displaced sy...
Value request recording base class.
std::set< BoundaryID > _to_boundaries
Target boundary(ies) restriction.
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
static libMesh::System * find_sys(libMesh::EquationSystems &es, const std::string &var_name)
Small helper function for finding the system containing the variable.
Definition: Transfer.C:91
unsigned int INVALID_DIVISION_INDEX
Invalid subdomain id to return when outside the mesh division.
Definition: MeshDivision.h:28
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:281
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
Real Number
ProcessorToPointInfoVec _processor_to_pointInfoVec
A map from processor to pointInfo vector.
bool onBoundaries(const std::set< BoundaryID > &boundaries, const MooseMesh &mesh, const Node *node) const
auto index_range(const T &sizable)
uint8_t dof_id_type
bool inBlocks(const std::set< SubdomainID > &blocks, const Elem *elem) const

◆ find_sys()

System * Transfer::find_sys ( libMesh::EquationSystems es,
const std::string &  var_name 
)
staticinherited

Small helper function for finding the system containing the variable.

Note that this implies that variable names are unique across all systems!

Parameters
esThe EquationSystems object to be searched.
var_nameThe name of the variable you are looking for.

Note that this implies that variable names are unique across all systems!

Definition at line 91 of file Transfer.C.

Referenced by correctSolutionVectorValues(), examineLocalValueConflicts(), examineReceivedValueConflicts(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), extractOutgoingPoints(), setSolutionVectorValues(), MultiAppShapeEvaluationTransfer::transferVariable(), and MultiAppMFEMTolibMeshShapeEvaluationTransfer::transferVariables().

92 {
93  // Find the system this variable is from
94  for (unsigned int i = 0; i < es.n_systems(); i++)
95  if (es.get_system(i).has_variable(var_name))
96  return &es.get_system(i);
97 
98  ::mooseError("Unable to find variable " + var_name + " in any system.");
99 
100  // Unreachable
101  return &es.get_system(0);
102 }
unsigned int n_systems() const
const T_sys & get_system(std::string_view name) const
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:281

◆ 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 }
const FEProblemBase * _si_problem
A pointer to FEProblem base.
void printDebug(InvalidSolutionID _invalid_solution_id) const
Immediately print the section and message for debug purpose.
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:87
SolutionInvalidity & solutionInvalidity()
Get the SolutionInvalidity for this app.
Definition: MooseApp.h:184
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.
bool immediatelyPrintInvalidSolution() const
Whether or not the solution invalid warnings are printed out immediately.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ getAppInfo()

void MultiAppGeneralFieldTransfer::getAppInfo ( )
overridevirtual

This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.)

Reimplemented from MultiAppTransfer.

Definition at line 464 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

465 {
467 
468  // Create the point locators to locate evaluation points in the origin mesh(es)
469  _from_point_locators.resize(_from_problems.size());
470  for (const auto i_from : index_range(_from_problems))
471  {
472  const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
473  _from_point_locators[i_from] =
474  PointLocatorBase::build(TREE_LOCAL_ELEMENTS, from_moose_mesh.getMesh());
475  _from_point_locators[i_from]->enable_out_of_mesh_mode();
476  }
477 }
std::vector< std::unique_ptr< libMesh::PointLocatorBase > > _from_point_locators
Point locators, useful to examine point location with regards to domain restriction.
bool _displaced_source_mesh
True if displaced mesh is used for the source mesh, otherwise false.
virtual void getAppInfo()
This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.)
std::vector< FEProblemBase * > _from_problems
auto index_range(const T &sizable)

◆ 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.

Referenced by Factory::copyConstruct(), and MooseBase::uniqueParameterName().

147 { return _pars.getBase(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const std::string & getBase() const

◆ 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 460 of file MooseBase.h.

461 {
462  return _pars.getCheckedPointerParam<T>(name, error_string);
463 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
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...
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103

◆ 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 T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:416
void mooseDeprecated(Args &&... args) const
Emits a deprecation warning prefixed with the object name and type, and a stack trace.
Definition: MooseBase.h:327
const ParallelParamObject & _parent

◆ 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.
void mooseDeprecated(Args &&... args) const
Emits a deprecation warning prefixed with the object name and type, and a stack trace.
Definition: MooseBase.h:327
const ParallelParamObject & _parent

◆ 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.

Referenced by DataFileInterface::getDataFileNameByName().

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;
51  Moose::DataFileUtils::Path found_path;
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 mooseInfo(Args &&... args) const
Definition: MooseBase.h:344
Context context
Context for the file (where it came from)
Definition: DataFileUtils.h:52
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.
Definition: DataFileUtils.C:22
Representation of a data file path.
Definition: DataFileUtils.h:40
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Definition: DataFileUtils.h:54
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition: Moose.h:295
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:309
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:281
const ParallelParamObject & _parent

◆ getDataSourceName()

std::string MultiAppGeneralFieldTransfer::getDataSourceName ( unsigned int  var_index) const
protectedvirtual

Return a human-readable description of the data source (variable, functor, user object, etc.) used for conflict warning messages.

Override in derived classes that use a different source type (e.g. functors).

Parameters
var_indexindex of the variable/functor being transferred

Reimplemented in MultiAppGeneralFieldFunctorTransfer, and MultiAppGeneralFieldUserObjectTransfer.

Definition at line 2161 of file MultiAppGeneralFieldTransfer.C.

Referenced by outputValueConflicts().

2162 {
2163  mooseAssert(var_index < _from_var_names.size(), "No source variable at this index");
2164  return "variable '" + getFromVarName(var_index) + "'";
2165 }
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
VariableName getFromVarName(unsigned int var_index) const
Get the source variable name, with the suffix for array/vector variables.

◆ getEquationSystem()

EquationSystems & MultiAppFieldTransfer::getEquationSystem ( FEProblemBase problem,
bool  use_displaced 
) const
protectedinherited

Returns the Problem's equation system, displaced or not Be careful! If you transfer TO a displaced system you will likely need a synchronization So most transfers reach the non-displaced system directly.

Definition at line 55 of file MultiAppFieldTransfer.C.

Referenced by MultiAppGeneralFieldShapeEvaluationTransfer::buildMeshFunctions(), correctSolutionVectorValues(), examineLocalValueConflicts(), examineReceivedValueConflicts(), extractOutgoingPoints(), setSolutionVectorValues(), and MultiAppShapeEvaluationTransfer::transferVariable().

56 {
57  if (use_displaced)
58  {
59  if (!problem.getDisplacedProblem())
60  mooseError("No displaced problem to provide a displaced equation system");
61  return problem.getDisplacedProblem()->es();
62  }
63  else
64  return problem.es();
65 }
virtual libMesh::EquationSystems & es() override
virtual std::shared_ptr< const DisplacedProblem > getDisplacedProblem() const
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:281

◆ getExecuteOnEnum()

const ExecFlagEnum & SetupInterface::getExecuteOnEnum ( ) const
inherited

◆ getFromBoundingBoxes() [1/2]

std::vector< BoundingBox > MultiAppTransfer::getFromBoundingBoxes ( )
protectedinherited

Return the bounding boxes of all the "from" domains, including all the domains not local to this processor.

There is a boundary restricted version which will return a degenerate minimum boundary box (min, min, min, min, min, min) in the case where the source domain doesn't have any active nodes on the boundary. Note: bounding boxes are in the reference space when using coordinate transformations / positions Note: global bounding boxes are not indexed by app number. But rather outer indexing is by process, then the inner indexing is by local app number.

Definition at line 496 of file MultiAppTransfer.C.

Referenced by MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), and MultiAppShapeEvaluationTransfer::transferVariable().

497 {
498  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
499  for (unsigned int i = 0; i < _from_meshes.size(); i++)
500  {
501  // Get a bounding box around the mesh elements that are local to the current
502  // processor.
503  BoundingBox bbox = MeshTools::create_local_bounding_box(*_from_meshes[i]);
504 
505  // Translate the bounding box to the from domain's position. We may have rotations so we must
506  // be careful in constructing the new min and max (first and second)
507  const auto from_global_num = getGlobalSourceAppIndex(i);
508  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
509 
510  // Cast the bounding box into a pair of points (so it can be put through
511  // MPI communication).
512  bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
513  }
514 
515  // Serialize the bounding box points.
516  _communicator.allgather(bb_points);
517 
518  // Recast the points back into bounding boxes and return.
519  std::vector<BoundingBox> bboxes(bb_points.size());
520  for (unsigned int i = 0; i < bb_points.size(); i++)
521  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
522 
523  // possibly extend bounding boxes
525 
526  return bboxes;
527 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
static void transformBoundingBox(libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
Transform a bounding box according to the transformations in the provided coordinate transformation o...
const Parallel::Communicator & _communicator
libMesh::BoundingBox create_local_bounding_box(const MeshBase &mesh)
std::vector< MooseMesh * > _from_meshes
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
Real _bbox_factor
Extend (or contract) bounding box by a factor in all directions Greater than one values of this membe...
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
void extendBoundingBoxes(const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
Extends bounding boxes to avoid missing points.

◆ getFromBoundingBoxes() [2/2]

std::vector< BoundingBox > MultiAppTransfer::getFromBoundingBoxes ( BoundaryID  boundary_id)
protectedinherited

Definition at line 530 of file MultiAppTransfer.C.

531 {
532  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
533  const Real min_r = std::numeric_limits<Real>::lowest();
534  const Real max_r = std::numeric_limits<Real>::max();
535 
536  for (unsigned int i = 0; i < _from_meshes.size(); i++)
537  {
538 
539  Point min(max_r, max_r, max_r);
540  Point max(min_r, min_r, min_r);
541  bool at_least_one = false;
542 
543  // TODO: Factor this into mesh_tools after adding new boundary bounding box routine.
544  const ConstBndNodeRange & bnd_nodes = *_from_meshes[i]->getBoundaryNodeRange();
545  for (const auto & bnode : bnd_nodes)
546  {
547  if (bnode->_bnd_id == boundary_id &&
548  bnode->_node->processor_id() == _from_meshes[i]->processor_id())
549  {
550  at_least_one = true;
551  const auto & node = *bnode->_node;
552  for (const auto i : make_range(Moose::dim))
553  {
554  min(i) = std::min(min(i), node(i));
555  max(i) = std::max(max(i), node(i));
556  }
557  }
558  }
559 
560  BoundingBox bbox(min, max);
561  if (!at_least_one)
562  bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
563  else
564  {
565  // Translate the bounding box to the from domain's position. We may have rotations so we must
566  // be careful in constructing the new min and max (first and second)
567  const auto from_global_num = getGlobalSourceAppIndex(i);
568  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
569  }
570 
571  // Cast the bounding box into a pair of points (so it can be put through
572  // MPI communication).
573  bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
574  }
575 
576  // Serialize the bounding box points.
577  _communicator.allgather(bb_points);
578 
579  // Recast the points back into bounding boxes and return.
580  std::vector<BoundingBox> bboxes(bb_points.size());
581  for (unsigned int i = 0; i < bb_points.size(); i++)
582  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
583 
584  // possibly extend bounding boxes
586 
587  return bboxes;
588 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
static void transformBoundingBox(libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
Transform a bounding box according to the transformations in the provided coordinate transformation o...
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:163
const Parallel::Communicator & _communicator
auto max(const L &left, const R &right)
std::vector< MooseMesh * > _from_meshes
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _bbox_factor
Extend (or contract) bounding box by a factor in all directions Greater than one values of this membe...
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
IntRange< T > make_range(T beg, T end)
void extendBoundingBoxes(const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
Extends bounding boxes to avoid missing points.
auto min(const L &left, const R &right)

◆ getFromMultiApp()

const std::shared_ptr<MultiApp> MultiAppTransfer::getFromMultiApp ( ) const
inlineinherited

Get the MultiApp to transfer data from.

Definition at line 65 of file MultiAppTransfer.h.

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MFEMMultiAppTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppCloneReporterTransfer::executeFromMultiapp(), MultiAppReporterTransfer::executeFromMultiapp(), MultiAppVectorPostprocessorTransfer::executeFromMultiapp(), MultiAppReporterTransfer::executeToMultiapp(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppReporterTransfer::initialSetup(), MultiAppConservativeTransfer::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), initialSetup(), locatePointReceivers(), MultiAppGeneralFieldTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppConservativeTransfer::postExecute(), and MultiAppVariableValueSamplePostprocessorTransfer::setupPostprocessorCommunication().

66  {
67  if (!_from_multi_app)
68  mooseError(
69  "A from_multiapp was requested but is unavailable. Check the from_multi_app parameter");
70  else
71  return _from_multi_app;
72  }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
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:281

◆ getFromName()

std::string MultiAppTransfer::getFromName ( ) const
inlineinherited

Get the name of thing being transferred from.

Returns
the name of the multiapp or "Parent"

Definition at line 90 of file MultiAppTransfer.h.

91  {
92  if (_from_multi_app)
93  return _from_multi_app->name();
94  else
95  return "Parent";
96  }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.

◆ getFromsPerProc()

std::vector< unsigned int > MultiAppTransfer::getFromsPerProc ( )
protectedinherited

Return the number of "from" domains that each processor owns.

Note: same indexing as getFromBoundingBoxes

Definition at line 591 of file MultiAppTransfer.C.

Referenced by MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), prepareToTransfer(), and MultiAppShapeEvaluationTransfer::transferVariable().

592 {
593  std::vector<unsigned int> froms_per_proc;
594  if (_to_multi_app)
595  froms_per_proc.resize(n_processors(), 1);
596  if (_from_multi_app)
597  {
598  froms_per_proc.resize(n_processors());
599  _communicator.allgather(_from_multi_app->numLocalApps(), froms_per_proc);
600  }
601  return froms_per_proc;
602 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
const Parallel::Communicator & _communicator
processor_id_type n_processors() const
std::shared_ptr< MultiApp > _to_multi_app

◆ getFromVarName()

VariableName MultiAppGeneralFieldTransfer::getFromVarName ( unsigned int  var_index) const

Get the source variable name, with the suffix for array/vector variables.

Definition at line 2168 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppGeneralFieldShapeEvaluationTransfer::buildMeshFunctions(), and getDataSourceName().

2169 {
2170  mooseAssert(var_index < _from_var_names.size(), "No source variable at this index");
2171  VariableName var_name = _from_var_names[var_index];
2172  if (_from_var_components.size())
2173  var_name += "_" + std::to_string(_from_var_components[var_index]);
2174  return var_name;
2175 }
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
const std::vector< unsigned int > _from_var_components
Origin array/vector variable components.

◆ getFromVarNames()

virtual std::vector<VariableName> MultiAppConservativeTransfer::getFromVarNames ( ) const
inlineoverrideprotectedvirtualinherited

Virtual function defining variables to be transferred.

Implements MultiAppFieldTransfer.

Definition at line 34 of file MultiAppConservativeTransfer.h.

34 { return _from_var_names; }
const std::vector< VariableName > _from_var_names
Name of variables transferring from.

◆ getGlobalSourceAppIndex()

unsigned int MultiAppTransfer::getGlobalSourceAppIndex ( unsigned int  i_from) const
protectedinherited

◆ getGlobalStartAppPerProc()

std::vector< unsigned int > MultiAppGeneralFieldTransfer::getGlobalStartAppPerProc ( ) const
private

Get global index for the first app each processes owns Requires a global communication, must be called on every domain simultaneously.

Definition at line 2151 of file MultiAppGeneralFieldTransfer.C.

Referenced by prepareToTransfer().

2152 {
2153  std::vector<unsigned int> global_app_start_per_proc(1, -1);
2154  if (_from_local2global_map.size())
2155  global_app_start_per_proc[0] = _from_local2global_map[0];
2156  _communicator.allgather(global_app_start_per_proc, true);
2157  return global_app_start_per_proc;
2158 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
const Parallel::Communicator & _communicator
std::vector< unsigned int > _from_local2global_map
Given local app index, returns global app index.

◆ getGlobalTargetAppIndex()

unsigned int MultiAppTransfer::getGlobalTargetAppIndex ( unsigned int  i_to) const
protectedinherited

Return the global app index from the local index in the "to-multiapp" transfer direction.

Definition at line 672 of file MultiAppTransfer.C.

Referenced by cacheIncomingInterpVals(), cacheOutgoingPointInfo(), extractOutgoingPoints(), MultiAppTransfer::getPointInTargetAppFrame(), locatePointReceivers(), and setSolutionVectorValues().

673 {
674  mooseAssert(_current_direction == FROM_MULTIAPP || i_to < _to_local2global_map.size(),
675  "Out of bounds local to-app index");
677 }
MooseEnum _current_direction
Definition: Transfer.h:106
std::vector< unsigned int > _to_local2global_map
Given local app index, returns global app index.

◆ getHitNode()

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.

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

136 { return getHitNode(_pars); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const hit::Node * getHitNode() const
Definition: MooseBase.h:136

◆ getLocalSourceAppIndex()

unsigned int MultiAppTransfer::getLocalSourceAppIndex ( unsigned int  i_from) const
protectedinherited

Return the local app index from the global index in the "from-multiapp" transfer direction.

We use the fact that global app indexes are consecutive on a given rank.

Definition at line 680 of file MultiAppTransfer.C.

681 {
683  ? 0
685 }
MooseEnum _current_direction
Definition: Transfer.h:106
std::vector< unsigned int > _from_local2global_map
Given local app index, returns global app index.

◆ getMaxToProblemsBBoxDimensions()

Point MultiAppGeneralFieldTransfer::getMaxToProblemsBBoxDimensions ( ) const
private

Obtains the max dimensions to scale all points in the mesh.

Returns
the maximum dimension in each coordinate axis of all target problems

Definition at line 2188 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

2189 {
2190  Point max_dimension = {std::numeric_limits<Real>::min(),
2193 
2194  for (const auto & to_mesh : _to_meshes)
2195  {
2196  const auto bbox = to_mesh->getInflatedProcessorBoundingBox();
2197  for (const auto dim : make_range(LIBMESH_DIM))
2198  max_dimension(dim) = std::max(
2199  max_dimension(dim), std::max(std::abs(bbox.first(dim)), std::abs(bbox.second(dim))));
2200  }
2201 
2202  return max_dimension;
2203 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:50
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:163
auto max(const L &left, const R &right)
IntRange< T > make_range(T beg, T end)
auto min(const L &left, const R &right)
std::vector< MooseMesh * > _to_meshes

◆ getMooseApp()

MooseApp& MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

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

87 { return _app; }
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:385

◆ getMultiApp()

const std::shared_ptr<MultiApp> MultiAppTransfer::getMultiApp ( ) const
inlineinherited

Use this getter to obtain the MultiApp for transfers with a single direction.

Definition at line 48 of file MultiAppTransfer.h.

Referenced by MultiAppCloneReporterTransfer::initialSetup().

49  {
51  mooseError("Unclear which app you want to retrieve from Transfer ", name());
52  else if (_from_multi_app)
53  return _from_multi_app;
54  else if (_to_multi_app)
55  return _to_multi_app;
56  else if (_multi_app)
57  return _multi_app;
58  else
59  mooseError("Should not get here, there should be a multiapp");
60  }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
std::shared_ptr< MultiApp > _multi_app
Deprecated class attribute for compatibility with the apps.
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
std::shared_ptr< MultiApp > _to_multi_app
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:281

◆ 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 416 of file MooseBase.h.

Referenced by CreateDisplacedProblemAction::act(), CommonOutputAction::act(), CylinderComponent::addMeshGenerators(), FEProblemBase::addOutput(), DiffusionPhysicsBase::addPostprocessors(), ArrayParsedAux::ArrayParsedAux(), BicubicSplineFunction::BicubicSplineFunction(), ComponentPhysicsInterface::ComponentPhysicsInterface(), Console::Console(), FEProblemBase::createTagSolutions(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), AccumulateReporter::declareLateValues(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), MFEMEigenvaluesPostprocessor::execute(), FEProblemSolve::FEProblemSolve(), ParsedVectorReporter::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), ParsedSubdomainGeneratorBase::functionInitialize(), FVInterfaceKernel::FVInterfaceKernel(), BoundaryLayerSubdomainGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), OrientSurfaceMeshGenerator::generate(), GeneratedMeshGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), BreakMeshByBlockGenerator::generate(), BlockDeletionGenerator::generate(), CoarsenBlockGenerator::generate(), MeshExtruderGenerator::generate(), XYDelaunayGenerator::generate(), GenericConstantRankTwoTensorTempl< is_ad >::GenericConstantRankTwoTensorTempl(), GenericConstantSymmetricRankTwoTensorTempl< is_ad >::GenericConstantSymmetricRankTwoTensorTempl(), GeometricSearchInterface::GeometricSearchInterface(), MooseApp::getCheckpointDirectories(), DataFileInterface::getDataFileName(), ExecutorInterface::getExecutor(), MFEMExecutedObject::getRequestedItems(), GhostingUserObject::GhostingUserObject(), FixedPointIterationAdaptiveDT::init(), TimeSequenceStepper::init(), IterationAdaptiveDT::init(), AdvancedOutput::init(), AdvancedOutput::initAvailableLists(), AttribThread::initFrom(), AttribSysNum::initFrom(), AttribResidualObject::initFrom(), AttribDisplaced::initFrom(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), Console::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh::MooseMesh(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2ModelExecutor::NEML2ModelExecutor(), NestedDivision::NestedDivision(), 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(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), PiecewiseConstantByBlockMaterialTempl< is_ad >::PiecewiseConstantByBlockMaterialTempl(), ProjectSideSetOntoLevelSetGenerator::ProjectSideSetOntoLevelSetGenerator(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), Moose::FV::setInterpolationMethod(), SetupMeshAction::setupMesh(), Output::setWallTimeIntervalFromCommandLineParam(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), and VectorOfPostprocessors::VectorOfPostprocessors().

417 {
418  return InputParameters::getParamHelper<T>(name, _pars);
419 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103

◆ 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 453 of file MooseBase.h.

454 {
455  return _pars.get<T1, T2>(param1, param2);
456 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
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.

◆ getPointInSourceAppFrame()

Point MultiAppTransfer::getPointInSourceAppFrame ( const Point &  p,
unsigned int  local_i_from,
const std::string &  phase 
) const
protectedinherited

Get the source app point from a point in the reference frame.

Parameters
pthe point in the reference frame
local_i_fromthe local source problem index
phasethe phase of the transfer where this is being attempted in case we have to output an info message that the coordinate collapse is not being applied
Returns
the point in the source app frame

Definition at line 647 of file MultiAppTransfer.C.

Referenced by acceptPointInOriginMesh(), MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource(), MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValuesWithMeshFunctions(), MultiAppGeneralFieldUserObjectTransfer::evaluateInterpValuesWithUserObjects(), MultiAppGeneralFieldFunctorTransfer::evaluateValues(), MultiAppProjectionTransfer::execute(), MultiAppGeneralFieldKDTreeTransferBase::getPointInSourceKDTreeFrame(), and MultiAppShapeEvaluationTransfer::transferVariable().

650 {
652  *_from_transforms[getGlobalSourceAppIndex(local_i_from)], p, phase);
653 }
Point mapBackWithoutCollapsing(MultiAppCoordTransform &transform, const Point &p, const std::string &phase) const
Shared implementation for getPointInSourceAppFrame / getPointInTargetAppFrame.
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms

◆ getPointInTargetAppFrame()

Point MultiAppTransfer::getPointInTargetAppFrame ( const Point &  p,
unsigned int  local_i_to,
const std::string &  phase 
) const
protectedinherited

Get the target app point from a point in the reference frame.

Parameters
pthe point in the reference frame
local_i_tothe local target problem into
phasethe phase of the transfer where this is being attempted in case we have to output an info message that the coordinate collapse is not being applied
Returns
the point in the target app frame

Definition at line 656 of file MultiAppTransfer.C.

Referenced by cacheIncomingInterpVals(), and examineLocalValueConflicts().

659 {
660  return mapBackWithoutCollapsing(*_to_transforms[getGlobalTargetAppIndex(local_i_to)], p, phase);
661 }
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
Point mapBackWithoutCollapsing(MultiAppCoordTransform &transform, const Point &p, const std::string &phase) const
Shared implementation for getPointInSourceAppFrame / getPointInTargetAppFrame.

◆ 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 430 of file MooseBase.h.

431 {
432  // Most important: accept new parameter
433  if (isParamSetByUser(new_name) && !isParamValid(old_name))
434  return getParam<T>(new_name);
435  // Second most: accept old parameter
436  if (isParamValid(old_name) && !isParamSetByUser(new_name))
437  return getParam<T>(old_name);
438  // Third most: accept default for new parameter
439  if (isParamValid(new_name) && !isParamValid(old_name))
440  return getParam<T>(new_name);
441  // Refuse: no default, no value passed
442  if (!isParamValid(old_name) && !isParamValid(new_name))
443  mooseError("parameter '" + new_name +
444  "' is being retrieved without being set.\nDid you misspell it?");
445  // Refuse: both old and new parameters set by user
446  else
447  mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
448  old_name + "'");
449 }
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:281
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209
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:215

◆ getRestartableData()

template<typename T , typename... Args>
const T & Restartable::getRestartableData ( const std::string &  data_name) const
protectedinherited

Declare a piece of data as "restartable" and initialize it Similar to declareRestartableData but returns a const reference to the object.

Forwarded arguments are not allowed in this case because we assume that the object is restarted and we won't need different constructors to initialize it.

NOTE: This returns a const reference! Make sure you store it in a const reference!

Parameters
data_nameThe name of the data (usually just use the same name as the member variable)

Definition at line 294 of file Restartable.h.

295 {
296  return declareRestartableDataHelper<T>(data_name, nullptr).get();
297 }

◆ getRestrictedFromBoundingBoxes()

std::vector< BoundingBox > MultiAppGeneralFieldTransfer::getRestrictedFromBoundingBoxes ( ) const
private

Get from bounding boxes for given domains and boundaries.

Definition at line 2067 of file MultiAppGeneralFieldTransfer.C.

Referenced by prepareToTransfer().

2068 {
2069  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
2070  const Real min_r = std::numeric_limits<Real>::lowest();
2071  const Real max_r = std::numeric_limits<Real>::max();
2072 
2073  for (const auto j : make_range(_from_meshes.size()))
2074  {
2075  Point min(max_r, max_r, max_r);
2076  Point max(min_r, min_r, min_r);
2077  bool at_least_one = false;
2078  const auto & from_mesh = _from_problems[j]->mesh(_displaced_source_mesh);
2079 
2080  for (const auto & elem : as_range(from_mesh.getMesh().local_elements_begin(),
2081  from_mesh.getMesh().local_elements_end()))
2082  {
2083  if (!_from_blocks.empty() && !inBlocks(_from_blocks, from_mesh, elem))
2084  continue;
2085 
2086  for (const auto & node : elem->node_ref_range())
2087  {
2088  if (!_from_boundaries.empty() && !onBoundaries(_from_boundaries, from_mesh, &node))
2089  continue;
2090 
2091  at_least_one = true;
2092  for (const auto i : make_range(LIBMESH_DIM))
2093  {
2094  min(i) = std::min(min(i), node(i));
2095  max(i) = std::max(max(i), node(i));
2096  }
2097  }
2098  }
2099 
2100  // For 2D RZ problems, we need to amend the bounding box to cover the whole XYZ projection
2101  // - The XYZ-Y axis is assumed aligned with the RZ-Z axis
2102  // - RZ systems also cover negative coordinates hence the use of the maximum R
2103  // NOTE: We will only support the case where there is only one coordinate system
2104  if ((from_mesh.getUniqueCoordSystem() == Moose::COORD_RZ) && (LIBMESH_DIM == 3))
2105  {
2106  min(0) = -max(0);
2107  min(2) = -max(0);
2108  max(2) = max(0);
2109  }
2110 
2111  BoundingBox bbox(min, max);
2112  if (!at_least_one)
2113  bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
2114  else
2115  {
2116  // Translate the bounding box to the from domain's position. We may have rotations so we
2117  // must be careful in constructing the new min and max (first and second)
2118  const auto from_global_num = getGlobalSourceAppIndex(j);
2119  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
2120  }
2121 
2122  // Cast the bounding box into a pair of points (so it can be put through
2123  // MPI communication).
2124  bb_points[j] = static_cast<std::pair<Point, Point>>(bbox);
2125  }
2126 
2127  // Serialize the bounding box points.
2128  _communicator.allgather(bb_points);
2129 
2130  // Recast the points back into bounding boxes and return.
2131  std::vector<BoundingBox> bboxes(bb_points.size());
2132  for (const auto i : make_range(bb_points.size()))
2133  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
2134 
2135  // TODO move up
2136  // Check for a user-set fixed bounding box size and modify the sizes as appropriate
2137  if (_fixed_bbox_size != std::vector<Real>(3, 0))
2138  for (const auto i : make_range(LIBMESH_DIM))
2139  if (!MooseUtils::absoluteFuzzyEqual(_fixed_bbox_size[i], 0))
2140  for (const auto j : make_range(bboxes.size()))
2141  {
2142  const auto current_width = (bboxes[j].second - bboxes[j].first)(i);
2143  bboxes[j].first(i) -= (_fixed_bbox_size[i] - current_width) / 2;
2144  bboxes[j].second(i) += (_fixed_bbox_size[i] - current_width) / 2;
2145  }
2146 
2147  return bboxes;
2148 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
static void transformBoundingBox(libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
Transform a bounding box according to the transformations in the provided coordinate transformation o...
const Parallel::Communicator & _communicator
std::vector< Real > _fixed_bbox_size
Set the bounding box sizes manually.
std::set< BoundaryID > _from_boundaries
Origin boundary(ies) restriction.
auto max(const L &left, const R &right)
std::vector< MooseMesh * > _from_meshes
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::vector< std::unique_ptr< MultiAppCoordTransform > > _from_transforms
IntRange< T > make_range(T beg, T end)
bool _displaced_source_mesh
True if displaced mesh is used for the source mesh, otherwise false.
std::set< SubdomainID > _from_blocks
Origin block(s) restriction.
auto min(const L &left, const R &right)
bool onBoundaries(const std::set< BoundaryID > &boundaries, const MooseMesh &mesh, const Node *node) const
std::vector< FEProblemBase * > _from_problems
bool inBlocks(const std::set< SubdomainID > &blocks, const Elem *elem) const

◆ 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.

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

71 {
72  try
73  {
74  return shared_from_this();
75  }
76  catch (std::bad_weak_ptr &)
77  {
78  mooseError(not_shared_error);
79  }
80 }
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:281

◆ 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 }
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:281

◆ getToMultiApp()

const std::shared_ptr<MultiApp> MultiAppTransfer::getToMultiApp ( ) const
inlineinherited

Get the MultiApp to transfer data to.

Definition at line 77 of file MultiAppTransfer.h.

Referenced by MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), MFEMMultiAppTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppReporterTransfer::executeFromMultiapp(), MultiAppReporterTransfer::executeToMultiapp(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), MultiAppCloneReporterTransfer::initialSetup(), MultiAppReporterTransfer::initialSetup(), MultiAppConservativeTransfer::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), initialSetup(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), and MultiAppConservativeTransfer::postExecute().

78  {
79  if (!_to_multi_app)
80  mooseError(
81  "A to_multiapp was requested but is unavailable. Check the to_multi_app parameter");
82  else
83  return _to_multi_app;
84  }
std::shared_ptr< MultiApp > _to_multi_app
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:281

◆ getToName()

std::string MultiAppTransfer::getToName ( ) const
inlineinherited

Get the name of thing being transferred to.

Returns
the name of the multiapp or "Parent"

Definition at line 102 of file MultiAppTransfer.h.

103  {
104  if (_to_multi_app)
105  return _to_multi_app->name();
106  else
107  return "Parent";
108  }
std::shared_ptr< MultiApp > _to_multi_app

◆ getToVariable()

MooseVariableFieldBase* MultiAppGeneralFieldTransfer::getToVariable ( unsigned int  var_index) const
inlineprotected

Return a pointer to a target variable.

Definition at line 60 of file MultiAppGeneralFieldTransfer.h.

Referenced by correctSolutionVectorValues().

61  {
62  return _to_variables[var_index];
63  }
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.

◆ getToVarName()

VariableName MultiAppGeneralFieldTransfer::getToVarName ( unsigned int  var_index)

Get the target variable name, with the suffix for array/vector variables.

Definition at line 2178 of file MultiAppGeneralFieldTransfer.C.

Referenced by correctSolutionVectorValues(), examineLocalValueConflicts(), examineReceivedValueConflicts(), extractOutgoingPoints(), outputValueConflicts(), and setSolutionVectorValues().

2179 {
2180  mooseAssert(var_index < _to_var_names.size(), "No target variable at this index");
2181  VariableName var_name = _to_var_names[var_index];
2182  if (_to_var_components.size())
2183  var_name += "_" + std::to_string(_to_var_components[var_index]);
2184  return var_name;
2185 }
const std::vector< unsigned int > _to_var_components
Target array/vector variable components.
const std::vector< AuxVariableName > _to_var_names
Name of variables transferring to.

◆ getToVarNames()

virtual std::vector<AuxVariableName> MultiAppConservativeTransfer::getToVarNames ( ) const
inlineoverrideprotectedvirtualinherited

Virtual function defining variables to transfer to.

Implements MultiAppFieldTransfer.

Definition at line 35 of file MultiAppConservativeTransfer.h.

35 { return _to_var_names; }
const std::vector< AuxVariableName > _to_var_names
Name of variables transferring to.

◆ getTransferVector()

NumericVector< Real > & MultiAppTransfer::getTransferVector ( unsigned int  i_local,
std::string  var_name 
)
protectedinherited

If we are transferring to a multiapp, return the appropriate solution vector.

Definition at line 605 of file MultiAppTransfer.C.

Referenced by MultiAppNearestNodeTransfer::execute(), and MultiAppShapeEvaluationTransfer::transferVariable().

606 {
607  mooseAssert(_to_multi_app, "getTransferVector only works for transfers to multiapps");
608 
609  return _to_multi_app->appTransferVector(_to_local2global_map[i_local], var_name);
610 }
std::vector< unsigned int > _to_local2global_map
Given local app index, returns global app index.
std::shared_ptr< MultiApp > _to_multi_app

◆ 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(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
bool hasBase() const

◆ hasFromMultiApp()

bool MultiAppTransfer::hasFromMultiApp ( ) const
inlineinherited

◆ hasToMultiApp()

bool MultiAppTransfer::hasToMultiApp ( ) const
inlineinherited

◆ haveParameter()

template<typename T >
bool MooseBase::haveParameter ( const std::string &  name) const
inlineinherited

Test if a parameter of the given name and type exists.

Parameters
nameThe name of the parameter to test

Definition at line 200 of file MooseBase.h.

201  {
202  return _pars.have_parameter<T>(name);
203  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.

◆ inBlocks() [1/4]

bool MultiAppGeneralFieldTransfer::inBlocks ( const std::set< SubdomainID > &  blocks,
const Elem *  elem 
) const
protected

◆ inBlocks() [2/4]

virtual bool MultiAppGeneralFieldTransfer::inBlocks ( const std::set< SubdomainID > &  blocks,
const MooseMesh mesh,
const Elem *  elem 
) const
protectedvirtual

◆ inBlocks() [3/4]

bool MultiAppGeneralFieldTransfer::inBlocks ( const std::set< SubdomainID > &  blocks,
const MooseMesh mesh,
const Node *  node 
) const
protected

◆ inBlocks() [4/4]

bool MultiAppGeneralFieldTransfer::inBlocks ( const std::set< SubdomainID > &  blocks,
const libMesh::PointLocatorBase *const  pl,
const Point &  pt 
) const
protected

◆ initialSetup()

void MultiAppGeneralFieldTransfer::initialSetup ( )
overridevirtual

Method called at the beginning of the simulation for checking integrity or doing one-time setup.

Reimplemented from MultiAppConservativeTransfer.

Reimplemented in MultiAppGeneralFieldFunctorTransfer, MultiAppGeneralFieldNearestLocationTransfer, and MultiAppGeneralFieldKDTreeTransferBase.

Definition at line 248 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldKDTreeTransferBase::initialSetup().

249 {
251 
252  // Use IDs for block and boundary restriction
253  // Loop over all source problems
254  for (const auto i_from : index_range(_from_problems))
255  {
256  const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
257  if (isParamValid("from_blocks"))
258  {
259  const auto & block_names = getParam<std::vector<SubdomainName>>("from_blocks");
260 
261  for (const auto & b : block_names)
262  if (!MooseMeshUtils::hasSubdomainName(from_moose_mesh.getMesh(), b))
263  paramError("from_blocks", "The block '", b, "' was not found in the mesh");
264 
265  if (!block_names.empty())
266  {
267  const auto ids = from_moose_mesh.getSubdomainIDs(block_names);
268  _from_blocks.insert(ids.begin(), ids.end());
269  }
270  }
271 
272  if (isParamValid("from_boundaries"))
273  {
274  const auto & boundary_names = getParam<std::vector<BoundaryName>>("from_boundaries");
275  for (const auto & bn : boundary_names)
276  if (!MooseMeshUtils::hasBoundaryName(from_moose_mesh.getMesh(), bn))
277  paramError("from_boundaries", "The boundary '", bn, "' was not found in the mesh");
278 
279  if (!boundary_names.empty())
280  {
281  const auto boundary_ids = from_moose_mesh.getBoundaryIDs(boundary_names);
282  _from_boundaries.insert(boundary_ids.begin(), boundary_ids.end());
283  }
284  }
285 
286  if (isParamValid("from_mesh_division"))
287  {
288  const auto & mesh_div_name = getParam<MeshDivisionName>("from_mesh_division");
289  _from_mesh_divisions.push_back(&_from_problems[i_from]->getMeshDivision(mesh_div_name));
290  // Check that the behavior set makes sense
291  if (_from_mesh_division_behavior == MeshDivisionTransferUse::RESTRICTION)
292  {
293  if (_from_mesh_divisions[i_from]->coversEntireMesh())
294  mooseInfo("'from_mesh_division_usage' is set to use a spatial restriction but the "
295  "'from_mesh_division' for source app of global index " +
296  std::to_string(getGlobalSourceAppIndex(i_from)) +
297  " covers the entire mesh. Do not expect any restriction from a mesh "
298  "division that covers the entire mesh");
299  }
300  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX &&
301  !isParamValid("to_mesh_division"))
302  paramError("to_mesh_division_usage",
303  "Source mesh division cannot match target mesh division if no target mesh "
304  "division is specified");
305  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
306  {
307  if (!hasToMultiApp())
308  paramError("from_mesh_division_usage",
309  "Cannot match source mesh division index to target subapp index if there is "
310  "only one target: the parent app (not a subapp)");
311  else if (getToMultiApp()->numGlobalApps() !=
312  _from_mesh_divisions[i_from]->getNumDivisions())
313  mooseWarning("Attempting to match target subapp index with the number of source mesh "
314  "divisions, which is " +
315  std::to_string(_from_mesh_divisions[i_from]->getNumDivisions()) +
316  " while there are " + std::to_string(getToMultiApp()->numGlobalApps()) +
317  " target subapps");
318  if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
319  // We do not support it because it would require sending the point + target app index +
320  // target app division index, and we only send the Point + one number
321  paramError("from_mesh_division_usage",
322  "We do not support using target subapp index for source division behavior and "
323  "matching the division index for the target mesh division behavior.");
324  }
325  else if (_from_mesh_division_behavior == "none")
326  paramError("from_mesh_division_usage", "User must specify a 'from_mesh_division_usage'");
327  }
328  else if (_from_mesh_division_behavior != "none")
329  paramError("from_mesh_division",
330  "'from_mesh_division' must be specified if the usage method is specified");
331  }
332 
333  // Loop over all target problems
334  for (const auto i_to : index_range(_to_problems))
335  {
336  const auto & to_moose_mesh = _to_problems[i_to]->mesh(_displaced_target_mesh);
337  if (isParamValid("to_blocks"))
338  {
339  const auto & block_names = getParam<std::vector<SubdomainName>>("to_blocks");
340  for (const auto & b : block_names)
341  if (!MooseMeshUtils::hasSubdomainName(to_moose_mesh.getMesh(), b))
342  paramError("to_blocks", "The block '", b, "' was not found in the mesh");
343 
344  if (!block_names.empty())
345  {
346  const auto ids = to_moose_mesh.getSubdomainIDs(block_names);
347  _to_blocks.insert(ids.begin(), ids.end());
348  }
349  }
350 
351  if (isParamValid("to_boundaries"))
352  {
353  const auto & boundary_names = getParam<std::vector<BoundaryName>>("to_boundaries");
354  for (const auto & bn : boundary_names)
355  if (!MooseMeshUtils::hasBoundaryName(to_moose_mesh.getMesh(), bn))
356  paramError("to_boundaries", "The boundary '", bn, "' was not found in the mesh");
357 
358  if (!boundary_names.empty())
359  {
360  const auto boundary_ids = to_moose_mesh.getBoundaryIDs(boundary_names);
361  _to_boundaries.insert(boundary_ids.begin(), boundary_ids.end());
362  }
363  }
364 
365  if (isParamValid("to_mesh_division"))
366  {
367  const auto & mesh_div_name = getParam<MeshDivisionName>("to_mesh_division");
368  _to_mesh_divisions.push_back(&_to_problems[i_to]->getMeshDivision(mesh_div_name));
369  // Check that the behavior set makes sense
370  if (_to_mesh_division_behavior == MeshDivisionTransferUse::RESTRICTION)
371  {
372  if (_to_mesh_divisions[i_to]->coversEntireMesh())
373  mooseInfo("'to_mesh_division_usage' is set to use a spatial restriction but the "
374  "'to_mesh_division' for target application of global index " +
375  std::to_string(getGlobalSourceAppIndex(i_to)) +
376  " covers the entire mesh. Do not expect any restriction from a mesh "
377  "division that covers the entire mesh");
378  }
379  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
380  {
381  if (!isParamValid("from_mesh_division"))
382  paramError("to_mesh_division_usage",
383  "Target mesh division cannot match source mesh division if no source mesh "
384  "division is specified");
385  else if ((*_from_mesh_divisions.begin())->getNumDivisions() !=
386  _to_mesh_divisions[i_to]->getNumDivisions())
387  mooseWarning("Source and target mesh divisions do not have the same number of bins. If "
388  "this is what you expect, please reach out to a MOOSE or app developer to "
389  "ensure appropriate use");
390  }
391  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
392  {
393  if (!hasFromMultiApp())
394  paramError(
395  "to_mesh_division_usage",
396  "Cannot match target mesh division index to source subapp index if there is only one "
397  "source: the parent app (not a subapp)");
398  else if (getFromMultiApp()->numGlobalApps() != _to_mesh_divisions[i_to]->getNumDivisions())
399  mooseWarning("Attempting to match source subapp index with the number of target mesh "
400  "divisions, which is " +
401  std::to_string(_to_mesh_divisions[i_to]->getNumDivisions()) +
402  " while there are " + std::to_string(getFromMultiApp()->numGlobalApps()) +
403  " source subapps");
404  if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
405  paramError(
406  "from_mesh_division_usage",
407  "We do not support using source subapp index for the target division behavior and "
408  "matching the division index for the source mesh division behavior.");
409  }
410  else if (_to_mesh_division_behavior == "none")
411  paramError("to_mesh_division_usage", "User must specify a 'to_mesh_division_usage'");
412  }
413  else if (_to_mesh_division_behavior != "none")
414  paramError("to_mesh_division",
415  "'to_mesh_division' must be specified if usage method '" +
416  Moose::stringify(_to_mesh_division_behavior) + "' is specified");
417  }
418 
419  // Check if components are set correctly if using an array variable
420  for (const auto i_from : index_range(_from_problems))
421  {
422  for (const auto var_index : make_range(_from_var_names.size()))
423  {
424  MooseVariableFieldBase & from_var =
425  _from_problems[i_from]->getVariable(0,
426  _from_var_names[var_index],
429  if (from_var.count() > 1 && _from_var_components.empty())
430  paramError("source_variable_components", "Component must be passed for an array variable");
431  if (_from_var_components.size() && from_var.count() < _from_var_components[var_index])
432  paramError("source_variable_components",
433  "Component passed is larger than size of variable");
434  }
435  }
436  for (const auto i_to : index_range(_to_problems))
437  {
438  for (const auto var_index : make_range(_to_var_names.size()))
439  {
440  MooseVariableFieldBase & to_var =
441  _to_problems[i_to]->getVariable(0,
442  _to_var_names[var_index],
445  if (to_var.count() > 1 && _to_var_components.empty())
446  paramError("target_variable_components", "Component must be passed for an array variable");
447  if (_to_var_components.size() && to_var.count() < _to_var_components[var_index])
448  paramError("target_variable_components",
449  "Component passed is larger than size of variable");
450  }
451  }
452 
453  // Cache some quantities to avoid having to get them on every transferred point
454  if (_to_problems.size())
455  {
456  _to_variables.resize(_to_var_names.size());
457  for (const auto i_var : index_range(_to_var_names))
458  _to_variables[i_var] = &_to_problems[0]->getVariable(
460  }
461 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:344
const std::shared_ptr< MultiApp > getFromMultiApp() const
Get the MultiApp to transfer data from.
bool hasBoundaryName(const MeshBase &input_mesh, const BoundaryName &name)
Whether a particular boundary name exists in the mesh.
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:467
unsigned int count() const
Get the number of components Note: For standard and vector variables, the number is one...
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
std::vector< FEProblemBase * > _to_problems
const std::shared_ptr< MultiApp > getToMultiApp() const
Get the MultiApp to transfer data to.
This class provides an interface for common operations on field variables of both FE and FV types wit...
std::vector< const MeshDivision * > _from_mesh_divisions
Division of the origin mesh.
std::vector< const MeshDivision * > _to_mesh_divisions
Division of the target mesh.
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
const std::vector< unsigned int > _from_var_components
Origin array/vector variable components.
std::set< BoundaryID > _from_boundaries
Origin boundary(ies) restriction.
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
std::set< SubdomainID > _to_blocks
Target block(s) restriction.
virtual void initialSetup() override
Method called at the beginning of the simulation for checking integrity or doing one-time setup...
void mooseWarning(Args &&... args) const
const std::vector< unsigned int > _to_var_components
Target array/vector variable components.
std::set< BoundaryID > _to_boundaries
Target boundary(ies) restriction.
const std::vector< AuxVariableName > _to_var_names
Name of variables transferring to.
unsigned int getGlobalSourceAppIndex(unsigned int i_from) const
Return the global app index from the local index in the "from-multiapp" transfer direction.
std::string stringify(const T &t)
conversion to string
Definition: Conversion.h:64
bool hasSubdomainName(const MeshBase &input_mesh, const SubdomainName &name)
Whether a particular subdomain name exists in the mesh.
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
IntRange< T > make_range(T beg, T end)
bool hasToMultiApp() const
Whether the transfer owns a non-null to_multi_app.
bool _displaced_source_mesh
True if displaced mesh is used for the source mesh, otherwise false.
std::set< SubdomainID > _from_blocks
Origin block(s) restriction.
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209
std::vector< FEProblemBase * > _from_problems
auto index_range(const T &sizable)
const MooseEnum & _from_mesh_division_behavior
How to use the origin mesh divisions to restrict the transfer.

◆ inMesh()

bool MultiAppGeneralFieldTransfer::inMesh ( const libMesh::PointLocatorBase *const  pl,
const Point pt 
) const
protected

Definition at line 1833 of file MultiAppGeneralFieldTransfer.C.

Referenced by acceptPointInOriginMesh(), and MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource().

1834 {
1835  // Note: we do not take advantage of a potential block restriction of the mesh here. This is
1836  // because we can avoid this routine by calling inBlocks() instead
1837  const Elem * elem = (*pl)(point);
1838  return (elem != nullptr);
1839 }

◆ 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.

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

63 { return parameters().isKokkosObject(); }
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
bool isKokkosObject() const
Returns whether this InputParameters belongs to a Kokkos object Checks whether MooseBase::kokkos_obje...

◆ 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 215 of file MooseBase.h.

Referenced by SetupDebugAction::act(), DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MFEMMesh::buildMesh(), MFEMDomainSubMesh::buildSubMesh(), MFEMBoundarySubMesh::buildSubMesh(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), FileMesh::FileMesh(), FullSolveMultiApp::FullSolveMultiApp(), OrientSurfaceMeshGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), MFEMVectorFESpace::getFECName(), MooseBase::getRenamedParam(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), PhysicsBase::initializePhysics(), ElementSubdomainModifierBase::initialSetup(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MortarConstraintBase::MortarConstraintBase(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldTransfer(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), SolutionInvalidityOutput::output(), Output::Output(), outputValueConflicts(), PetscExternalPartitioner::partition(), PolyLineMeshFollowingNodeSetGenerator::PolyLineMeshFollowingNodeSetGenerator(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::runInputFile(), MooseApp::runInputs(), MFEMSolverBase::setPreconditioner(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SmoothMeshGenerator::SmoothMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SurfaceSubdomainsFromAllNormalsGenerator::SurfaceSubdomainsFromAllNormalsGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

216  {
217  return _pars.isParamSetByUser(name);
218  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.

◆ 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 209 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), CopyNodalVarsAction::act(), AutoCheckpointAction::act(), SetupMeshAction::act(), SetupDebugAction::act(), ComposeTimeStepperAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), AddVariableAction::act(), CommonOutputAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), DiffusionPhysicsBase::addPostprocessors(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BSplineCurveGenerator::BSplineCurveGenerator(), TimedSubdomainModifier::buildFromFile(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentJunction::ComponentJunction(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenProblemSolve::EigenProblemSolve(), ElementGenerator::ElementGenerator(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), BSplineCurveGenerator::endDirection(), BSplineCurveGenerator::endPoint(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), AddMetaDataGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), OrientSurfaceMeshGenerator::generate(), RenumberBySubdomainGenerator::generate(), SubdomainPerElementGenerator::generate(), BlockDeletionGenerator::generate(), BSplineCurveGenerator::generate(), ConcentricCircleMeshGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), SideSetsFromNodeSetsGenerator::generate(), MeshExtruderGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYZDelaunayGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), ManifoldSubdomainGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), 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(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), EigenProblemSolve::initialSetup(), ParsedConvergence::initialSetup(), SolutionScalarAux::initialSetup(), PiecewiseTabularBase::initialSetup(), SolutionAux::initialSetup(), PIDTransientControl::initialSetup(), Console::initialSetup(), MooseParsedVectorFunction::initialSetup(), initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedFunction::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), PNGOutput::makePNG(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< Real >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), MultiSystemSolveObject::MultiSystemSolveObject(), 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(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusIIOrNemesis(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBase(), FileOutput::setFileBaseInternal(), SurfaceMeshGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), BSplineCurveGenerator::startDirection(), BSplineCurveGenerator::startPoint(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), PIDTransientControl::timestepSetup(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

209 { return _pars.isParamValid(name); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ jacobianSetup()

void SetupInterface::jacobianSetup ( )
virtualinherited

◆ locatePointReceivers()

void MultiAppGeneralFieldTransfer::locatePointReceivers ( const Point  point,
std::set< processor_id_type > &  processors 
)
private

Definition at line 602 of file MultiAppGeneralFieldTransfer.C.

Referenced by cacheOutgoingPointInfo().

604 {
605  // Check which processors have apps that may include or be near this point
606  // A point may be close enough to several problems, hosted on several processes
607  bool found = false;
608 
609  // Additional process-restriction techniques we could use (TODOs):
610  // - create a heuristic for using nearest-positions
611  // - from_mesh_divisions could be polled for which divisions they possess on each
612  // process, depending on the behavior chosen. This could limit potential senders.
613  // This should be done ahead of this function call, for all points at once
614 
615  // Determine the apps which will be receiving points (then sending values) using various
616  // heuristics
617  if (_use_nearest_app)
618  {
619  // Find the nearest position for the point
620  const bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
621  // The apps form the nearest positions here, this is the index of the nearest app
622  const auto nearest_index = _nearest_positions_obj->getNearestPositionIndex(point, initial);
623 
624  // Find the apps that are nearest to the same position
625  // Global search over all applications
626  for (processor_id_type i_proc = 0; i_proc < n_processors(); ++i_proc)
627  {
628  // We need i_from to correspond to the global app index
629  unsigned int from0 = _global_app_start_per_proc[i_proc];
630  for (unsigned int i_from = from0; i_from < from0 + _froms_per_proc[i_proc]; ++i_from)
631  {
632  if (_greedy_search || _search_value_conflicts || i_from == nearest_index)
633  {
634  processors.insert(i_proc);
635  found = true;
636  }
637  mooseAssert(i_from < getFromMultiApp()->numGlobalApps(), "We should not reach this");
638  }
639  }
640  mooseAssert((getFromMultiApp()->numGlobalApps() < n_processors() || processors.size() == 1) ||
642  "Should only be one source processor when using more processors than source apps");
643  }
644  else if (_use_bounding_boxes)
645  {
646  // We examine all (global) bounding boxes and find the minimum of the maximum distances within a
647  // bounding box from the point. This creates a sphere around the point of interest. Any app
648  // with a bounding box that intersects this sphere (with a bboxMinDistance <
649  // nearest_max_distance) will be considered a potential source
650  // NOTE: This is a heuristic. We could try others
651  // NOTE: from_bboxes are in the reference space, as is the point.
652  Real nearest_max_distance = std::numeric_limits<Real>::max();
653  for (const auto & bbox : _from_bboxes)
654  {
656  if (distance < nearest_max_distance)
657  nearest_max_distance = distance;
658  }
659 
660  unsigned int from0 = 0;
661  for (processor_id_type i_proc = 0; i_proc < n_processors();
662  from0 += _froms_per_proc[i_proc], ++i_proc)
663  // i_from here is a hybrid index based on the cumulative sum of the apps per processor
664  for (unsigned int i_from = from0; i_from < from0 + _froms_per_proc[i_proc]; ++i_from)
665  {
667  // We will not break here because we want to send a point to all possible source domains
668  if (_greedy_search || distance <= nearest_max_distance ||
669  _from_bboxes[i_from].contains_point(point))
670  {
671  processors.insert(i_proc);
672  found = true;
673  }
674  }
675  }
676  // Greedy search will contact every single processor. It's not scalable, but if there's valid data
677  // on any subapp on any process, it will find it
678  else if (_greedy_search)
679  {
680  found = true;
681  for (const auto i_proc : make_range(n_processors()))
682  processors.insert(i_proc);
683  }
684  // Since we indicated that we only wanted values from a subapp with the same global index as the
685  // target mesh division, we might as well only communicate with the process that owns this app
686  else if (!_to_mesh_divisions.empty() &&
687  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
688  {
689  // The target point could have a different index in each target mesh division. So on paper, we
690  // would need to check all of them.
691  auto saved_target_div = MooseMeshDivision::INVALID_DIVISION_INDEX;
692  for (const auto i_to : index_range(_to_meshes))
693  {
694  const auto target_div = _to_mesh_divisions[i_to]->divisionIndex(
695  _to_transforms[getGlobalTargetAppIndex(i_to)]->mapBack(point));
696  // If it's the same division index, do not redo the search
697  if (target_div == saved_target_div)
698  continue;
699  else
700  saved_target_div = target_div;
701 
702  // Look for the processors owning a source-app with an index equal to the target mesh division
703  for (const auto i_proc : make_range(n_processors()))
704  for (const auto i_from : make_range(_froms_per_proc[i_proc]))
705  if (target_div == _global_app_start_per_proc[i_proc] + i_from)
706  {
707  processors.insert(i_proc);
708  found = true;
709  }
710  }
711  }
712  else
713  mooseError("No algorithm were selected to find which processes may send value data "
714  "for a each target point. Please either specify using bounding boxes, "
715  "greedy search, or to_mesh_division-based parameters");
716 
717  // Error out if we could not find this point when ask us to do so
718  if (!found && _error_on_miss)
719  mooseError(
720  "Cannot find a source application to provide a value at point: ",
721  point,
722  " \n ",
723  "It must be that mismatched meshes, between the source and target application, are being "
724  "used.\nIf you are using the bounding boxes or nearest-app heuristics, or mesh-divisions, "
725  "please consider using the greedy_search to confirm. Then consider choosing a different "
726  "transfer type.\nThis check can be turned off by setting 'error_on_miss' to false. The "
727  "'extrapolation_constant' parameter will be used to set the local value at missed points.");
728 }
std::vector< BoundingBox > _from_bboxes
Bounding boxes for all source applications.
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
const std::shared_ptr< MultiApp > getFromMultiApp() const
Get the MultiApp to transfer data from.
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
std::vector< const MeshDivision * > _to_mesh_divisions
Division of the target mesh.
Real distance(const Point &p)
auto max(const L &left, const R &right)
Real bboxMinDistance(const Point &p, const BoundingBox &bbox) const
Compute minimum distance.
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
uint8_t processor_id_type
processor_id_type n_processors() const
Real bboxMaxDistance(const Point &p, const BoundingBox &bbox) const
Compute max distance.
unsigned int getNearestPositionIndex(const Point &target, bool initial) const
Find the nearest Position index for a given point.
Definition: Positions.C:96
const bool _use_bounding_boxes
Whether to use bounding boxes to determine the applications that may receive point requests then send...
std::vector< unsigned int > _froms_per_proc
Number of source/from applications per processor. This vector is indexed by processor id...
bool _error_on_miss
Error out when some points can not be located.
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
unsigned int INVALID_DIVISION_INDEX
Invalid subdomain id to return when outside the mesh division.
Definition: MeshDivision.h:28
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
IntRange< T > make_range(T beg, T end)
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:281
auto index_range(const T &sizable)
std::vector< MooseMesh * > _to_meshes
bool _greedy_search
Whether or not a greedy strategy will be used If true, all the partitions will be checked for a given...
std::vector< unsigned int > _global_app_start_per_proc
First app each processor owns, indexed by processor If no app on the processor, will have a -1 for th...
const bool _use_nearest_app
Whether to keep track of the distance from the requested point to the app position.
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:30

◆ messagePrefix()

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 266 of file MooseBase.h.

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

267  {
268  return messagePrefix(_pars, hit_prefix);
269  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ mooseDeprecated() [1/2]

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

Definition at line 87 of file SolutionInvalidInterface.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::advanceMultiApps(), MultiApp::appProblem(), ChangeOverTimestepPostprocessor::ChangeOverTimestepPostprocessor(), AddVariableAction::determineType(), EigenProblem::EigenProblem(), MooseMesh::elem(), UserForcingFunction::f(), FaceFaceConstraint::FaceFaceConstraint(), FunctionDT::FunctionDT(), RandomICBase::generateRandom(), MooseMesh::getBoundariesToElems(), Control::getExecuteOptions(), FEProblemBase::getNonlinearSystem(), FEProblemBase::hasPostprocessor(), MooseMesh::isTranslatedPeriodic(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalScalarKernel::NodalScalarKernel(), MooseMesh::node(), FixedPointSolve::numPicardIts(), RelationshipManager::operator>=(), PercentChangePostprocessor::PercentChangePostprocessor(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Residual::Residual(), MooseMesh::setBoundaryToNormalMap(), Exodus::setOutputDimension(), TagVectorAux::TagVectorAux(), UserForcingFunction::UserForcingFunction(), and VariableResidual::VariableResidual().

88  {
89  _si_moose_base.MooseBase::mooseDeprecated(std::forward<Args>(args)...);
90  flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": deprecation");
91  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseDeprecated() [2/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 327 of file MooseBase.h.

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

328  {
330  _console, false, true, true, messagePrefix(true), std::forward<Args>(args)...);
331  }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition: MooseError.h:252
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ 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 337 of file MooseBase.h.

338  {
340  _console, false, true, false, messagePrefix(true), std::forward<Args>(args)...);
341  }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, const bool show_trace, Args &&... args)
Definition: MooseError.h:252
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ mooseDocumentedError()

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

Definition at line 287 of file MooseBase.h.

Referenced by ArrayDGLowerDKernel::ArrayDGLowerDKernel(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayLowerDIntegratedBC::ArrayLowerDIntegratedBC(), DGLowerDKernel::DGLowerDKernel(), HFEMDirichletBC::HFEMDirichletBC(), LowerDIntegratedBC::LowerDIntegratedBC(), and ManifoldSubdomainGenerator::ManifoldSubdomainGenerator().

290  {
292  repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
293  /* with_prefix = */ true);
294  }
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
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition: MooseError.C:142

◆ 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 281 of file MooseBase.h.

Referenced by CopyMeshPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), acceptPointInOriginMesh(), AddICAction::act(), AddBoundsVectorsAction::act(), AddVectorPostprocessorAction::act(), AddFVICAction::act(), CheckIntegrityAction::act(), AddMeshGeneratorAction::act(), CheckFVBCAction::act(), CreateExecutionerAction::act(), InitProblemAction::act(), SetupMeshCompleteAction::act(), CreateProblemAction::act(), CreateProblemDefaultAction::act(), AdaptivityAction::act(), CombineComponentsMeshes::act(), SetupMeshAction::act(), SplitMeshAction::act(), AddTimeStepperAction::act(), ChainControlSetupAction::act(), DeprecatedBlockAction::act(), SetupDebugAction::act(), CSGOnlyAction::act(), SetupTimeStepperAction::act(), SetupPredictorAction::act(), CreateDisplacedProblemAction::act(), MaterialDerivativeTestAction::act(), SetAdaptivityOptionsAction::act(), MaterialOutputAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::act(), Action::Action(), FEProblemBase::adaptMesh(), ADArrayReaction::ADArrayReaction(), MooseVariableFV< Real >::adCurlSln(), MooseVariableFV< Real >::adCurlSlnNeighbor(), AddActionComponentAction::AddActionComponentAction(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), DiffusionCG::addBoundaryConditionsFromComponents(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), MooseApp::addCapabilityInternal(), FEProblemBase::addConstraint(), FEProblemBase::addDamper(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), DistributedRectilinearMeshGenerator::addElement(), MooseApp::addExecutor(), FEProblemBase::addFunction(), SubProblem::addFunctor(), FEProblemBase::addFVInitialCondition(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addInitialCondition(), PhysicsComponentInterface::addInitialConditionsFromComponents(), FEProblemBase::addInterfaceKernel(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblem::addLineSearch(), FEProblemBase::addLineSearch(), MFEMProblem::addMaterial(), LinearFVFluxKernel::addMatrixContribution(), ComponentJunction::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMEigenproblem::addMFEMSolver(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), Action::addRelationshipManager(), LinearFVFluxKernel::addRightHandSideContribution(), FEProblemBase::addScalarKernel(), WebServerControl::addServerAction(), MFEMEigenproblem::addVariable(), AddVariableAction::addVariable(), SubProblem::addVectorTag(), MooseLinearVariableFV< Real >::adError(), ADInterfaceKernelTempl< T >::ADInterfaceKernelTempl(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), NEML2ModelExecutor::advanceState(), AdvectiveFluxAux::AdvectiveFluxAux(), MooseVariableBase::allDofIndices(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayConstantIC::ArrayConstantIC(), ArrayDGKernel::ArrayDGKernel(), ArrayDiffusion::ArrayDiffusion(), ArrayFunctionIC::ArrayFunctionIC(), ArrayReaction::ArrayReaction(), ArrayTimeDerivative::ArrayTimeDerivative(), ArrayVariableValueVolumeHistogram::ArrayVariableValueVolumeHistogram(), MooseApp::attachRelationshipManagers(), Function::average(), Axisymmetric2D3DSolutionFunction::Axisymmetric2D3DSolutionFunction(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), BoundingValueElementDamper::BoundingValueElementDamper(), BoundingValueNodalDamper::BoundingValueNodalDamper(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), PiecewiseTabularInterface::buildFromFile(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularInterface::buildFromJSON(), TimedSubdomainModifier::buildFromParameters(), PiecewiseTabularInterface::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), MooseMesh::buildLowerDMesh(), TiledMesh::buildMesh(), GeneratedMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), ImageMeshGenerator::buildMesh3D(), ImageMesh::buildMesh3D(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildTypedMesh(), MooseMesh::cacheFaceInfoVariableOwnership(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), EigenExecutionerBase::chebyshev(), SubProblem::checkBlockMatProps(), PhysicsBase::checkBlockRestrictionIdentical(), ComponentBoundaryConditionInterface::checkBoundaryConditionsAllRequested(), SubProblem::checkBoundaryMatProps(), PhysicsBase::checkComponentType(), IterationCountConvergence::checkConvergence(), MooseMesh::checkCoordinateSystems(), DiffusionLHDGAssemblyHelper::checkCoupling(), FEProblemBase::checkDependMaterialsHelper(), FEProblemBase::checkDisplacementOrders(), FEProblemBase::checkDuplicatePostprocessorVariableNames(), DefaultConvergenceBase::checkDuplicateSetSharedExecutionerParams(), MooseMesh::checkDuplicateSubdomainNames(), FEProblemBase::checkExceptionAndStopSolve(), NEML2ModelExecutor::checkExecutionStage(), MaterialBase::checkExecutionStage(), MeshGenerator::checkGetMesh(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Steady::checkIntegrity(), EigenExecutionerBase::checkIntegrity(), Eigenvalue::checkIntegrity(), DefaultMultiAppFixedPointConvergence::checkIterationType(), DefaultNonlinearConvergence::checkIterationType(), DefaultSteadyStateConvergence::checkIterationType(), ExplicitTimeIntegrator::checkLinearConvergence(), MooseApp::checkMetaDataIntegrity(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), Moose::PeriodicBCHelper::checkPeriodicParams(), FEProblemBase::checkProblemIntegrity(), Sampler::checkReinitStatus(), MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::checkSiblingsTransferSupported(), MFEMSolverBase::checkSpectralEquivalence(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), FEProblemBase::checkUserObjectNameCollision(), FEProblemBase::checkUserObjects(), Moose::PetscSupport::checkUserProvidedPetscOption(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), DomainUserObject::checkVariable(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), LibmeshPartitioner::clone(), MooseMesh::clone(), CombinerGenerator::CombinerGenerator(), ComparisonPostprocessor::comparisonIsTrue(), MFEMComplexAuxKernel::complexAdd(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), ElementH1ErrorFunctionAux::compute(), NodalPatchRecovery::compute(), FEProblemBase::computeBounds(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), ArrayDGKernel::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighResidual(), BoundaryLinearFVFluxIntegral::computeFaceInfoIntegral(), InternalSideIntegralPostprocessor::computeFaceInfoIntegral(), SideIntegralPostprocessor::computeFaceInfoIntegral(), MooseVariableFieldBase::computeFaceValues(), TimeSequenceStepperBase::computeFailedDT(), IterationAdaptiveDT::computeFailedDT(), TimeStepper::computeFailedDT(), MooseMesh::computeFiniteVolumeCoords(), HistogramVectorPostprocessor::computeHistogram(), ArrayKernel::computeJacobian(), ArrayIntegratedBC::computeJacobian(), FVFluxKernel::computeJacobian(), NodalConstraint::computeJacobian(), FEProblemBase::computeJacobianTags(), LowerDIntegratedBC::computeLowerDOffDiagJacobian(), ArrayLowerDIntegratedBC::computeLowerDOffDiagJacobian(), EigenProblem::computeMatricesTags(), ArrayDGKernel::computeOffDiagElemNeighJacobian(), ArrayKernel::computeOffDiagJacobian(), ArrayIntegratedBC::computeOffDiagJacobian(), FVElementalKernel::computeOffDiagJacobian(), Moose::Kokkos::ResidualObject::computeOffDiagJacobian(), MortarScalarBase::computeOffDiagJacobianScalar(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), MaterialBase::computeProperties(), BoundaryLinearFVFluxIntegral::computeQpIntegral(), SideFVFluxBCIntegral::computeQpIntegral(), ScalarKernel::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), NodalEqualValueConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), NodeElemConstraint::computeQpJacobian(), ADArrayNodalKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), MassMatrix::computeQpResidual(), HDGKernel::computeQpResidual(), DiffusionLHDGDirichletBC::computeQpResidual(), DiffusionLHDGPrescribedGradientBC::computeQpResidual(), NodalEqualValueConstraint::computeQpResidual(), IPHDGBC::computeQpResidual(), KernelValue::computeQpResidual(), TorchScriptMaterial::computeQpValues(), InterfaceQpValueUserObject::computeRealValue(), ArrayKernel::computeResidual(), ArrayIntegratedBC::computeResidual(), FVFluxBC::computeResidual(), FVFluxKernel::computeResidual(), NodalConstraint::computeResidual(), FVFluxKernel::computeResidualAndJacobian(), ResidualObject::computeResidualAndJacobian(), FEProblemBase::computeResidualAndJacobian(), HDGKernel::computeResidualAndJacobianOnSide(), FEProblemBase::computeResidualInternal(), FEProblemBase::computeResidualTag(), FEProblemBase::computeResidualTags(), FEProblemBase::computeResidualType(), KernelScalarBase::computeScalarOffDiagJacobian(), ADKernelScalarBase::computeScalarQpResidual(), ADMortarScalarBase::computeScalarQpResidual(), MortarScalarBase::computeScalarQpResidual(), KernelScalarBase::computeScalarQpResidual(), TimeStepper::computeStep(), ActuallyExplicitEuler::computeTimeDerivatives(), ExplicitEuler::computeTimeDerivatives(), ImplicitEuler::computeTimeDerivatives(), BDF2::computeTimeDerivatives(), NewmarkBeta::computeTimeDerivatives(), CentralDifference::computeTimeDerivatives(), CrankNicolson::computeTimeDerivatives(), LStableDirk2::computeTimeDerivatives(), LStableDirk3::computeTimeDerivatives(), ImplicitMidpoint::computeTimeDerivatives(), ExplicitTVDRK2::computeTimeDerivatives(), AStableDirk4::computeTimeDerivatives(), LStableDirk4::computeTimeDerivatives(), ExplicitRK2::computeTimeDerivatives(), MultiAppGeometricInterpolationTransfer::computeTransformation(), BuildArrayVariableAux::computeValue(), TagVectorArrayVariableAux::computeValue(), NearestNodeValueAux::computeValue(), ProjectionAux::computeValue(), PenetrationAux::computeValue(), ConcentricCircleMesh::ConcentricCircleMesh(), ConditionalEnableControl::ConditionalEnableControl(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), CoupledForceNodalKernel::CoupledForceNodalKernel(), MultiApp::createApp(), MFEML2ZienkiewiczZhuIndicator::createEstimator(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), MooseVariableFV< Real >::curlPhi(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), SidesetInfoVectorPostprocessor::dataHelper(), ReporterTransferInterface::declareClone(), Moose::Kokkos::MaterialBase::declareKokkosPropertyInternal(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), DefaultSteadyStateConvergence::DefaultSteadyStateConvergence(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), BicubicSplineFunction::derivative(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseApp::determineLibtorchDeviceType(), FEProblemBase::determineSolverSystem(), DGKernel::DGKernel(), MeshDiagnosticsGenerator::diagnosticsLog(), DistributedPositions::DistributedPositions(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), MooseVariableFV< Real >::divPhi(), FunctorRelationshipManager::dofmap_reinit(), EigenProblem::doFreeNonlinearPowerIterations(), FEProblemBase::duplicateVariableCheck(), MooseApp::dynamicAllRegistration(), MooseApp::dynamicAppRegistration(), EigenProblem::EigenProblem(), EigenProblemSolve::EigenProblemSolve(), Eigenvalues::Eigenvalues(), ElementalVariableValue::ElementalVariableValue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementIntegerAux::ElementIntegerAux(), ElementMaterialSampler::ElementMaterialSampler(), ElementQualityAux::ElementQualityAux(), ElementUOAux::ElementUOAux(), ExtraIDIntegralVectorPostprocessor::elementValue(), DistributedRectilinearMeshGenerator::elemId(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), EigenKernel::enabled(), MooseApp::errorCheck(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), SideIntegralPostprocessor::errorNoFaceInfo(), SideIntegralFunctorPostprocessorTempl< false >::errorNoFaceInfo(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), FixedPointSolve::examineFixedPointConvergence(), examineReceivedValueConflicts(), RealToBoolChainControl::execute(), RestartableDataReporter::execute(), DiscreteElementUserObject::execute(), NodalValueSampler::execute(), PositionsFunctorValueSampler::execute(), MFEMMultiAppTransfer::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MFEMEigenvaluesPostprocessor::execute(), MultiAppPostprocessorTransfer::execute(), ElementQualityChecker::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), FindValueOnLine::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), InterfaceQpUserObjectBase::execute(), TransientBase::execute(), LeastSquaresFit::execute(), LeastSquaresFitHistory::execute(), VectorPostprocessorComparison::execute(), Eigenvalue::execute(), WebServerControl::execute(), TimeExtremeValue::execute(), NEML2Assembly::execute(), DomainUserObject::execute(), NEML2FEInterpolation::execute(), FEProblemBase::execute(), FEProblemBase::executeControls(), MooseApp::executeExecutioner(), MultiAppVectorPostprocessorTransfer::executeFromMultiapp(), MFEMProblem::executeMFEMObjects(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), Exodus::Exodus(), ExplicitSSPRungeKutta::ExplicitSSPRungeKutta(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::extractlibMeshNodePositions(), extractOutgoingPoints(), NEML2ModelExecutor::extractOutputs(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), NEML2ModelExecutor::fillInputs(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), VerifyElementUniqueID::finalize(), VerifyNodalUniqueID::finalize(), DiscreteElementUserObject::finalize(), ParsedVectorReporter::finalize(), ParsedVectorVectorRealReductionReporter::finalize(), ElementQualityChecker::finalize(), MemoryUsage::finalize(), PointSamplerBase::finalize(), NearestPointAverage::finalize(), DiscreteVariableResidualNorm::finalize(), NearestPointIntegralVariablePostprocessor::finalize(), NEML2Assembly::finalize(), MooseApp::finalizeRestore(), Transfer::find_sys(), MFEMCutTransitionSubMesh::findFaceNormal(), DiracKernelInfo::findPoint(), FixedPointSolve::findTransformedSystem(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), LinearFVBoundaryCondition::functorFaceArg(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVMassMatrix::FVMassMatrix(), FVMatAdvection::FVMatAdvection(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), GapValueAux::GapValueAux(), WorkBalance::gather(), ElementSubdomainModifierBase::gatherPatchElements(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), ElementOrderConversionGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), SideSetsFromNormalsGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MeshRepairGenerator::generate(), SideSetsFromPointsGenerator::generate(), SmoothMeshGenerator::generate(), StitchMeshGenerator::generate(), MeshDiagnosticsGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedGenerateNodeset::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), SideSetsFromAllNormalsGenerator::generate(), SideSetsFromBoundingBoxGenerator::generate(), StackGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), XYZDelaunayGenerator::generate(), MeshExtruderGenerator::generate(), AdvancedExtruderGenerator::generate(), CombinerGenerator::generate(), MeshCollectionGenerator::generate(), SpiralAnnularMeshGenerator::generate(), XYMeshLineCutter::generate(), Boundary2DDelaunayGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), MeshGenerator::generateCSG(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), MeshGenerator::generateInternalCSG(), CircularBoundaryCorrectionGenerator::generateRadialCorrectionFactor(), RandomICBase::generateRandom(), GenericConstantMaterialTempl< is_ad >::GenericConstantMaterialTempl(), GenericConstantVectorMaterialTempl< is_ad >::GenericConstantVectorMaterialTempl(), GenericFunctionMaterialTempl< is_ad >::GenericFunctionMaterialTempl(), GenericFunctionVectorMaterialTempl< is_ad >::GenericFunctionVectorMaterialTempl(), GenericFunctorGradientMaterialTempl< is_ad >::GenericFunctorGradientMaterialTempl(), GenericFunctorMaterialTempl< is_ad >::GenericFunctorMaterialTempl(), GenericFunctorTimeDerivativeMaterialTempl< is_ad >::GenericFunctorTimeDerivativeMaterialTempl(), GenericVectorFunctorMaterialTempl< is_ad >::GenericVectorFunctorMaterialTempl(), DisplacedProblem::getActualFieldVariable(), FEProblemBase::getActualFieldVariable(), DisplacedProblem::getArrayVariable(), FEProblemBase::getArrayVariable(), MooseMesh::getAxisymmetricRadialCoord(), NEML2BatchIndexGenerator::getBatchIndex(), MooseMesh::getBlockConnectedBlocks(), VariableOldValueBounds::getBound(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), WebServerControl::getClientInfo(), MooseMesh::getCoarseningMap(), NodalPatchRecoveryBase::getCoefficients(), MultiApp::getCommandLineArgs(), MooseVariableBase::getContinuity(), Control::getControllableParameterByName(), FEProblemBase::getConvergence(), MooseMesh::getCoordSystem(), PhysicsBase::getCoupledPhysics(), PropertyReadFile::getData(), DataFileInterface::getDataFilePath(), TransfiniteMeshGenerator::getDiscreteEdge(), FEProblemBase::getDistribution(), MooseVariableBase::getDofIndices(), VariableCondensationPreconditioner::getDofToCondense(), TransfiniteMeshGenerator::getEdge(), GhostingUserObject::getElementalValue(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), PropertyReadFile::getElementData(), MooseMesh::getElementIDIndex(), Material::getElementIDNeighbor(), Material::getElementIDNeighborByName(), MooseMesh::getElemIDMapping(), MooseMesh::getElemIDsOnBlocks(), MultiAppFieldTransfer::getEquationSystem(), WebServerControl::Response::getError(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MFEMVectorFESpace::getFECName(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVAdvectedInterpolationMethod(), FEProblemBase::getFVFaceInterpolationMethod(), FEProblemBase::getFVInterpolationMethod(), FEProblemBase::getFVMatsAndDependencies(), MooseMesh::getGeneralAxisymmetricCoordAxis(), MaterialPropertyInterface::getGenericMaterialPropertyByName(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), MaterialPropertyInterface::getKokkosBlockMaterialProperty(), FEProblemBase::getKokkosFunction(), FunctionInterface::getKokkosFunctionByName(), MaterialPropertyInterface::getKokkosMaterialPropertyByName(), FEProblemBase::getKokkosUserObject(), MFEMMultiAppTransfer::getlibMeshEquationSystem(), FEProblemBase::getLinearConvergenceNames(), SolutionUserObjectBase::getLocalVarIndex(), Material::getMaterialByName(), FEProblemBase::getMaterialData(), FEProblemBase::getMaterialPropertyStorageConsumers(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), FEProblemBase::getMaxQps(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MFEMProblem::getMFEMObject(), MFEMProblem::getMFEMVariableMesh(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), NEML2FEInterpolation::getMOOSEVariable(), MultiAppTransfer::getMultiApp(), FEProblemBase::getMultiAppFixedPointConvergenceName(), DistributedRectilinearMeshGenerator::getNeighbors(), Times::getNextTime(), MooseMesh::getNodeBlockIds(), PropertyReadFile::getNodeData(), MooseMesh::getNodeList(), FEProblemBase::getNonlinearConvergenceNames(), EigenProblem::getNonlinearEigenSystem(), FEProblemBase::getNonlinearSystem(), NEML2ModelExecutor::getOutput(), NEML2ModelExecutor::getOutputDerivative(), NEML2ModelExecutor::getOutputParameterDerivative(), MooseMesh::getPairedBoundaryMapping(), MaterialOutputAction::getParams(), ImageMeshGenerator::GetPixelInfo(), ImageMesh::GetPixelInfo(), PlaneIDMeshGenerator::getPlaneID(), Positions::getPosition(), Positions::getPositions(), FEProblemBase::getPositionsObject(), Positions::getPositionsVector2D(), Positions::getPositionsVector3D(), Positions::getPositionsVector4D(), FEProblemBase::getPostprocessorObjectByName(), PostprocessorInterface::getPostprocessorValueByNameInternal(), Times::getPreviousTime(), EqualValueBoundaryConstraint::getPrimaryNodeIDByCoord(), ComponentMaterialPropertyInterface::getPropertyValue(), InterfaceQpUserObjectBase::getQpValue(), MooseMesh::getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), FEProblemBase::getSampler(), DisplacedProblem::getScalarVariable(), FEProblemBase::getScalarVariable(), MooseObject::getSharedPtr(), InterfaceQpUserObjectBase::getSideAverageValue(), PhysicsBase::getSolverSystem(), DisplacedProblem::getStandardVariable(), FEProblemBase::getStandardVariable(), FEProblemBase::getSteadyStateConvergenceName(), MooseMesh::getSubdomainBoundaryIds(), TimedSubdomainModifier::getSubdomainIDAndCheck(), DisplacedProblem::getSystem(), FEProblemBase::getSystem(), FEProblemBase::getSystemBase(), Times::getTimeAtIndex(), FEProblemBase::getTimeFromStateArg(), TransientBase::getTimeIntegratorNames(), Times::getTimes(), MultiAppTransfer::getToMultiApp(), MultiAppTransfer::getToMultiAppInfo(), MooseMesh::getUniqueCoordSystem(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), UserObjectInterface::getUserObjectBaseByName(), UserObjectInterface::getUserObjectName(), NumRelationshipManagers::getValue(), VectorPostprocessorComponent::getValue(), Residual::getValue(), SideAverageValue::getValue(), JSONFileReader::getValue(), LineValueSampler::getValue(), FindValueOnLine::getValueAtPoint(), SubProblem::getVariableHelper(), AddPeriodicBCAction::getVariables(), JSONFileReader::getVector(), VectorPostprocessorInterface::getVectorPostprocessorName(), FEProblemBase::getVectorPostprocessorObjectByName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), DisplacedProblem::getVectorVariable(), FEProblemBase::getVectorVariable(), GhostingFromUOAux::GhostingFromUOAux(), EqualValueBoundaryConstraint::ghostPrimary(), MultiApp::globalAppToLocal(), MooseParsedVectorFunction::gradient(), Function::gradient(), MooseLinearVariableFV< Real >::gradientStateError(), FEProblemBase::handleException(), Terminator::handleMessage(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), HDGKernel::HDGKernel(), TransientBase::incrementStepOrReject(), NEML2Action::inferMOOSEIOType(), FixedPointIterationAdaptiveDT::init(), CrankNicolson::init(), CSVTimeSequenceStepper::init(), EigenExecutionerBase::init(), ExplicitTimeIntegrator::init(), TransientBase::init(), FEProblem::init(), AddAuxVariableAction::init(), IterationAdaptiveDT::init(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), FEProblemBase::init(), MultiApp::init(), FEProblemBase::initialAdaptMesh(), NestedDivision::initialize(), ReporterPositions::initialize(), DistributedPositions::initialize(), TransformedPositions::initialize(), ReporterTimes::initialize(), ElementGroupCentroidPositions::initialize(), FunctorPositions::initialize(), FunctorTimes::initialize(), ParsedDownSelectionPositions::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SteffensenSolve::initialSetup(), SolutionIC::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), ChainControlDataPostprocessor::initialSetup(), PiecewiseLinearBase::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), MultiAppConservativeTransfer::initialSetup(), FullSolveMultiApp::initialSetup(), PiecewiseLinear::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), CoarsenedPiecewiseLinear::initialSetup(), EigenProblemSolve::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVAdvection::initialSetup(), ExplicitTimeIntegrator::initialSetup(), SolutionAux::initialSetup(), LinearFVDiffusion::initialSetup(), ReferenceResidualConvergence::initialSetup(), NodalVariableValue::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), ElementSubdomainModifierBase::initialSetup(), Exodus::initialSetup(), CSV::initialSetup(), MooseParsedFunction::initialSetup(), AuxKernelBase::initialSetup(), NEML2FEInterpolation::initialSetup(), SolutionUserObjectBase::initialSetup(), FEProblemBase::initialSetup(), SubProblem::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initShowHideLists(), Function::integral(), InterfaceDiffusiveFluxIntegralTempl< is_ad >::InterfaceDiffusiveFluxIntegralTempl(), InterfaceIntegralVariableValuePostprocessor::InterfaceIntegralVariableValuePostprocessor(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), InterfaceTimeKernel::InterfaceTimeKernel(), InternalSideIndicatorBase::InternalSideIndicatorBase(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), EigenExecutionerBase::inversePowerIteration(), InversePowerMethod::InversePowerMethod(), Sampler::isAdaptiveSamplingCompleted(), MooseMesh::isBoundaryFullyExternalToSubdomains(), MooseVariableBase::isNodal(), IterationAdaptiveDT::IterationAdaptiveDT(), IterationCountConvergence::IterationCountConvergence(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), MooseApp::libNameToAppName(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationPostprocessor::LinearCombinationPostprocessor(), LinearNodalConstraint::LinearNodalConstraint(), LineMaterialSamplerBase< Real >::LineMaterialSamplerBase(), LineSearch::lineSearch(), LineValueSampler::LineValueSampler(), MooseApp::loadLibraryAndDependencies(), locatePointReceivers(), LowerBoundNodalKernel::LowerBoundNodalKernel(), MooseLinearVariableFV< Real >::lowerDError(), PNGOutput::makePNG(), ReporterPointMarker::markerSetup(), SubProblem::markFamilyPRefinement(), MassMatrix::MassMatrix(), Material::Material(), MaterialRealTensorValueAuxTempl< is_ad >::MaterialRealTensorValueAuxTempl(), MaterialRealVectorValueAuxTempl< T, is_ad, is_functor >::MaterialRealVectorValueAuxTempl(), MaterialStdVectorRealGradientAux::MaterialStdVectorRealGradientAux(), Distribution::median(), FunctorRelationshipManager::mesh_reinit(), NEML2ModelExecutor::meshChanged(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), MFEMComplexExteriorProductAux::MFEMComplexExteriorProductAux(), MFEMComplexInnerProductAux::MFEMComplexInnerProductAux(), MFEMCrossProductAux::MFEMCrossProductAux(), MFEMEigenproblem::MFEMEigenproblem(), MFEMInnerProductAux::MFEMInnerProductAux(), MFEMNDtoRTAux::MFEMNDtoRTAux(), MFEMValueSamplerBase::MFEMValueSamplerBase(), SetupMeshAction::modifyParamsForUseSplit(), MeshMetaDataInterface::mooseErrorInternal(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableConstMonomial::MooseVariableConstMonomial(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), MultiPostprocessorConvergence::MultiPostprocessorConvergence(), NearestNodeDistanceAux::NearestNodeDistanceAux(), FEProblemBase::needsPreviousNewtonIteration(), NewmarkBeta::NewmarkBeta(), NodalConstraint::NodalConstraint(), MooseVariableFV< Real >::nodalDofIndex(), MooseVariableFV< Real >::nodalDofIndexNeighbor(), MooseLinearVariableFV< Real >::nodalError(), MooseVariableFV< Real >::nodalMatrixTagValue(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalScalarKernel::NodalScalarKernel(), MooseVariableFV< Real >::nodalValueArray(), MooseVariableFV< Real >::nodalValueOldArray(), MooseVariableFV< Real >::nodalValueOlderArray(), NodalVariableValue::NodalVariableValue(), MooseVariableFV< Real >::nodalVectorTagValue(), DistributedRectilinearMeshGenerator::nodeId(), MooseVariableFV< Real >::numberOfDofsNeighbor(), NumDOFs::NumDOFs(), NumFailedTimeSteps::NumFailedTimeSteps(), DistributedRectilinearMeshGenerator::numNeighbors(), NumNonlinearIterations::NumNonlinearIterations(), NumVars::NumVars(), Output::onInterval(), FunctorRelationshipManager::operator()(), RelationshipManager::operator==(), ActionComponent::outerSurfaceArea(), ActionComponent::outerSurfaceBoundaries(), XDA::output(), SolutionHistory::output(), Exodus::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), AdvancedOutput::outputInput(), MooseApp::outputMachineReadableData(), AdvancedOutput::outputNodalVariables(), AdvancedOutput::outputPostprocessors(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), Nemesis::outputSetup(), Exodus::outputSetup(), AdvancedOutput::outputSystemInformation(), Console::outputVectorPostprocessors(), AdvancedOutput::outputVectorPostprocessors(), DistributedRectilinearMeshGenerator::paritionSquarely(), PiecewiseBilinear::parse(), ParsedConvergence::ParsedConvergence(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), MultiAppConservativeTransfer::performAdjustment(), ExplicitTimeIntegrator::performExplicitSolve(), PetscExternalPartitioner::PetscExternalPartitioner(), MooseVariableFV< Real >::phiLowerSize(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), EqualValueBoundaryConstraint::pickPrimaryNode(), PIDTransientControl::PIDTransientControl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseFunction::PiecewiseFunction(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseMulticonstant::PiecewiseMulticonstant(), PiecewiseMultiInterpolation::PiecewiseMultiInterpolation(), PiecewiseTabularBase::PiecewiseTabularBase(), PiecewiseTabularInterface::PiecewiseTabularInterface(), ProjectSideSetOntoLevelSetGenerator::pointPairLevelSetInterception(), CutMeshByLevelSetGeneratorBase::pointPairLevelSetInterception(), SolutionUserObjectBase::pointValueGradientWrapper(), SolutionUserObjectBase::pointValueWrapper(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessorByName(), LStableDirk2::postResidual(), LStableDirk3::postResidual(), ImplicitMidpoint::postResidual(), ExplicitTVDRK2::postResidual(), AStableDirk4::postResidual(), LStableDirk4::postResidual(), ExplicitRK2::postResidual(), EigenProblem::postScaleEigenVector(), VariableCondensationPreconditioner::preallocateCondensedJacobian(), ADKernelValueTempl< T >::precomputeQpJacobian(), FunctorKernel::precomputeQpResidual(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), ElementSubdomainModifierBase::prepareVariableForReinitialization(), FixedPointSolve::printFixedPointConvergenceReason(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::projectlibMeshNodalValues(), PseudoTimestep::PseudoTimestep(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusIIOrNemesis(), SolutionUserObjectBase::readXda(), CoarsenBlockGenerator::recursiveCoarsen(), MooseApp::recursivelyCreateExecutors(), FunctorRelationshipManager::redistribute(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MooseApp::registerRestartableData(), MooseApp::registerRestartableNameWithFilter(), Sampler::reinit(), RelativeSolutionDifferenceNorm::RelativeSolutionDifferenceNorm(), MFEMTransient::relativeSolutionDifferenceNorm(), MooseApp::removeRelationshipManager(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::restore(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), MooseApp::run(), MooseApp::runInputs(), PiecewiseMultiInterpolation::sample(), ScalarComponentIC::ScalarComponentIC(), MortarScalarBase::scalarVariable(), DistributedRectilinearMeshGenerator::scaleNodalPositions(), BicubicSplineFunction::secondDerivative(), MooseVariableFV< Real >::secondPhi(), MooseVariableFV< Real >::secondPhiFace(), MooseVariableFV< Real >::secondPhiFaceNeighbor(), MooseVariableFV< Real >::secondPhiNeighbor(), FunctorRelationshipManager::set_mesh(), MooseVariableBase::setActiveTags(), DistributedRectilinearMeshGenerator::setBoundaryNames(), MooseMesh::setCoordSystem(), FEProblemBase::setCoupling(), PiecewiseBase::setData(), FileOutput::setFileBaseInternal(), MooseMesh::setGeneralAxisymmetricCoordAxes(), FEProblemSolve::setInnerSolve(), ADArrayNodalKernel::setJacobian(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), FVPointValueConstraint::setMyElem(), FEProblemBase::setNonlocalCouplingMatrix(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Exodus::setOutputDimensionInExodusWriter(), MFEMSolverBase::setPreconditioner(), setSolutionVectorValues(), Split::setup(), TransientMultiApp::setupApp(), Moose::PeriodicBCHelper::setupAutoPeriodicBoundaries(), Moose::PeriodicBCHelper::setupManualPeriodicBoundaries(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), TimeSequenceStepperBase::setupSequence(), TransientBase::setupTimeIntegrator(), TimePeriodBase::setupTimes(), IntegratedBCBase::shouldApply(), PhysicsBase::shouldCreateIC(), PhysicsBase::shouldCreateTimeDerivative(), PhysicsBase::shouldCreateVariable(), SideAdvectiveFluxIntegralTempl< is_ad >::SideAdvectiveFluxIntegralTempl(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsFromNormalsGenerator::SideSetsFromNormalsGenerator(), SideSetsFromPointsGenerator::SideSetsFromPointsGenerator(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), MooseVariableBase::sizeMatrixTagData(), SmoothMeshGenerator::SmoothMeshGenerator(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), SolutionUserObjectBase::SolutionUserObjectBase(), MFEMSolverBase::solve(), ExplicitTVDRK2::solve(), ExplicitRK2::solve(), TimeIntegrator::solve(), FEProblemBase::solverSysNum(), FullSolveMultiApp::solveStep(), SpatialAverageBase::SpatialAverageBase(), UserObject::spatialPoints(), NearestPointAverage::spatialValue(), NearestPointIntegralVariablePostprocessor::spatialValue(), UserObject::spatialValue(), MeshDivisionFunctorReductionVectorPostprocessor::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), MeshRepairGenerator::splitNonConvexPolygons(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), MultiAppGeometricInterpolationTransfer::subdomainIDsNode(), Constraint::subdomainSetup(), NodalUserObject::subdomainSetup(), GeneralUserObject::subdomainSetup(), MaterialBase::subdomainSetup(), FEProblemBase::swapBackMaterialsNeighbor(), DisplacedProblem::systemBaseLinear(), Console::systemInfoFlags(), FEProblemBase::systemNumForVariable(), TerminateChainControl::terminate(), Terminator::Terminator(), CutMeshByLevelSetGeneratorBase::tet4ElemCutter(), ThreadedGeneralUserObject::threadJoin(), DiscreteElementUserObject::threadJoin(), GeneralUserObject::threadJoin(), Function::timeDerivative(), TimedSubdomainModifier::TimedSubdomainModifier(), TimeExtremeValue::TimeExtremeValue(), Function::timeIntegral(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), MooseLinearVariableFV< Real >::timeIntegratorError(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriodBase::TimePeriodBase(), VectorPostprocessorVisualizationAux::timestepSetup(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), MultiAppMFEMCopyTransfer::transferVariables(), MultiApplibMeshToMFEMShapeEvaluationTransfer::transferVariables(), MultiAppMFEMShapeEvaluationTransfer::transferVariables(), MultiAppMFEMTolibMeshShapeEvaluationTransfer::transferVariables(), TransformedPositions::TransformedPositions(), FEProblemBase::trustUserCouplingMatrix(), ParsedCurveGenerator::tSectionSpaceDefiner(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), FEProblemBase::uDotDotOldRequested(), MooseVariableScalar::uDotOld(), FEProblemBase::uDotOldRequested(), MooseBase::uniqueName(), Positions::unrollMultiDPositions(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), Checkpoint::updateCheckpointFiles(), NEML2FEInterpolation::updateDofMap(), NEML2FEInterpolation::updateGradPhi(), SolutionUserObjectBase::updateInterpolationBracketingTimeIndices(), FEProblemBase::updateMaxQps(), NEML2FEInterpolation::updatePhi(), MFEMHypreFGMRES::updateSolver(), MFEMCGSolver::updateSolver(), MFEMHyprePCG::updateSolver(), MFEMGMRESSolver::updateSolver(), MFEMHypreAMS::updateSolver(), MFEMHypreGMRES::updateSolver(), MFEMHypreADS::updateSolver(), MFEMMUMPS::updateSolver(), MFEMSuperLU::updateSolver(), UpperBoundNodalKernel::UpperBoundNodalKernel(), NearestPointAverage::userObjectValue(), NearestPointIntegralVariablePostprocessor::userObjectValue(), BoundingBoxIC::value(), PiecewiseConstantFromCSV::value(), IntegralPreservingFunctionIC::value(), Axisymmetric2D3DSolutionFunction::value(), Function::value(), ValueRangeMarker::ValueRangeMarker(), ValueThresholdMarker::ValueThresholdMarker(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VariableTimeIntegrationAux::VariableTimeIntegrationAux(), AddVariableAction::variableType(), VariableValueVolumeHistogram::VariableValueVolumeHistogram(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), VectorNodalBC::VectorNodalBC(), SubProblem::vectorTagName(), SubProblem::vectorTagType(), MooseParsedGradFunction::vectorValue(), MooseParsedFunction::vectorValue(), Function::vectorValue(), SubProblem::verifyVectorTags(), ActionComponent::volume(), VTKOutput::VTKOutput(), WebServerControl::WebServerControl(), MooseApp::writeRestartableMetaData(), DOFMapOutput::writeStreamToFile(), and Console::writeStreamToFile().

282  {
283  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
284  }
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

◆ mooseErrorNonPrefixed()

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

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

Definition at line 300 of file MooseBase.h.

301  {
302  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
303  }
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

◆ mooseInfo()

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

Definition at line 344 of file MooseBase.h.

Referenced by SetupRecoverFileBaseAction::act(), AStableDirk4::AStableDirk4(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MultiAppGeneralFieldKDTreeTransferBase::evaluateNearestNodeFromKDTrees(), PIDTransientControl::execute(), Executioner::Executioner(), ExplicitRK2::ExplicitRK2(), ExplicitTVDRK2::ExplicitTVDRK2(), FixedPointSolve::findTransformedSystem(), PolyLineMeshFollowingNodeSetGenerator::generate(), ManifoldSubdomainGenerator::generate(), DataFileInterface::getDataFilePath(), ImplicitMidpoint::ImplicitMidpoint(), ParsedDownSelectionPositions::initialize(), PropertyReadFile::initialize(), initialSetup(), InversePowerMethod::InversePowerMethod(), LStableDirk2::LStableDirk2(), LStableDirk3::LStableDirk3(), LStableDirk4::LStableDirk4(), PNGOutput::makeMeshFunc(), MultiAppTransfer::mapBackWithoutCollapsing(), NonlinearEigen::NonlinearEigen(), SolutionInvalidityOutput::output(), outputValueConflicts(), MooseBase::paramInfo(), ProjectionAux::ProjectionAux(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MFEMDataCollection::registerFields(), FEProblemBase::setRestartFile(), MooseApp::setupOptions(), SolutionUserObjectBase::SolutionUserObjectBase(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TransientBase::takeStep(), TimeIntegratedPostprocessor::TimeIntegratedPostprocessor(), and TransientBase::TransientBase().

345  {
346  moose::internal::mooseInfoStream(_console, messagePrefix(true), std::forward<Args>(args)...);
347  }
void mooseInfoStream(S &oss, Args &&... args)
Definition: MooseError.h:245
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ mooseWarning() [1/2]

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

Definition at line 73 of file SolutionInvalidInterface.h.

Referenced by CopyMeshPartitioner::_do_partition(), AddKernelAction::act(), MeshOnlyAction::act(), AddFunctionAction::act(), MaterialOutputAction::act(), CommonOutputAction::act(), MFEMProblem::addFunction(), MooseMesh::addPeriodicVariable(), BoundaryMarker::BoundaryMarker(), DistributedRectilinearMeshGenerator::buildCube(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), CartesianMeshGenerator::CartesianMeshGenerator(), CheckOutputAction::checkConsoleOutput(), MultiAppTransfer::checkMultiAppExecuteOn(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkPolygons(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), SampledOutput::cloneMesh(), closestToPosition(), VariableValueElementSubdomainModifier::computeSubdomainID(), GapValueAux::computeValue(), MultiApp::createApp(), DebugResidualAux::DebugResidualAux(), MeshDiagnosticsGenerator::diagnosticsLog(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), CartesianGridDivision::divisionIndex(), ElementMaterialSampler::ElementMaterialSampler(), Postprocessor::evaluateDotWarning(), MeshDivisionFunctorReductionVectorPostprocessor::execute(), ElementQualityChecker::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), SubdomainPerElementGenerator::generate(), RenumberBySubdomainGenerator::generate(), BSplineCurveGenerator::generate(), StitchMeshGenerator::generate(), SurfaceSubdomainsFromAllNormalsGenerator::generate(), ParsedGenerateSideset::generate(), SurfaceSubdomainsDelaunayRemesher::generate(), SurfaceMeshGeneratorBase::get2DElemNormal(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), MFEMVectorFESpace::getFECName(), PointSamplerBase::getLocalElemContainingPoint(), FEProblemBase::getMaterial(), LineValueSampler::getValue(), Terminator::handleMessage(), IndicatorMarker::IndicatorMarker(), ElementGroupCentroidPositions::initialize(), SphericalGridDivision::initialize(), CartesianGridDivision::initialize(), CylindricalGridDivision::initialize(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MFEMRefinementMarker::initialSetup(), BoundsBase::initialSetup(), ReferenceResidualConvergence::initialSetup(), initialSetup(), ElementSubdomainModifierBase::initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), LeastSquaresFit::LeastSquaresFit(), IterationAdaptiveDT::limitDTToPostprocessorValue(), PNGOutput::makePNG(), FEProblemBase::mesh(), MultiAppGeneralFieldTransfer(), NewmarkBeta::NewmarkBeta(), NodalPatchRecovery::NodalPatchRecovery(), NonlocalIntegratedBC::NonlocalIntegratedBC(), NonlocalKernel::NonlocalKernel(), Output::Output(), MaterialOutputAction::outputHelper(), outputValueConflicts(), PiecewiseConstantFromCSV::PiecewiseConstantFromCSV(), Executioner::problem(), PropertyReadFile::readData(), TestSourceStepper::rejectStep(), PhysicsBase::reportPotentiallyMissedParameters(), MaterialBase::resetQpProperties(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), MooseMesh::setCoordSystem(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), FEProblemBase::sizeZeroes(), TransientMultiApp::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), Tecplot::Tecplot(), TimeDerivativeAux::TimeDerivativeAux(), Checkpoint::updateCheckpointFiles(), SampledOutput::updateSample(), PiecewiseConstantFromCSV::value(), and VariableCondensationPreconditioner::VariableCondensationPreconditioner().

74  {
75  _si_moose_base.MooseBase::mooseWarning(std::forward<Args>(args)...);
76  flagSolutionWarningMultipleRegistration(_si_moose_base.name() + ": warning");
77  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseWarning() [2/2]

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

Emits a warning prefixed with object name and type.

Definition at line 309 of file MooseBase.h.

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

310  {
311  moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
312  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:197
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:266

◆ mooseWarningNonPrefixed() [1/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  }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ mooseWarningNonPrefixed() [2/2]

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

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

Definition at line 318 of file MooseBase.h.

319  {
320  moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
321  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:197
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ 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.

Referenced by AddElementalFieldAction::act(), CopyNodalVarsAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), CSGOnlyAction::act(), DeprecatedBlockAction::act(), SetupTimeIntegratorAction::act(), AddActionComponentAction::act(), SetupResidualDebugAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::act(), FEProblemBase::addAnyRedistributers(), Executioner::addAttributeReporter(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), PhysicsComponentInterface::addComponent(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), Registry::addDataFilePath(), Registry::addDataFilePathCapability(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MooseApp::addExecutor(), MooseApp::addExecutorParams(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), SubProblem::addFunctor(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FunctorMaterial::addFunctorProperty(), FunctorMaterial::addFunctorPropertyByBlocks(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), MFEMProblem::addIndicator(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), BoundaryIntegralValueConstraint::additionalROVariables(), DiffusionLHDGKernel::additionalROVariables(), IPHDGAssemblyHelper::additionalROVariables(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), MFEMProblem::addMarker(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), ComponentMeshTransformHelper::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMPreconditioner(), MFEMEigenproblem::addMFEMSolver(), MFEMProblem::addMFEMSolver(), Registry::addMissingDataFilePath(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), InitialConditionWarehouse::addObject(), FEProblemBase::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), InitialConditionBase::addPostprocessorDependencyHelper(), AuxKernelBase::addPostprocessorDependencyHelper(), UserObjectBase::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), WebServerControl::addServerActionsInternal(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), InitialConditionBase::addUserObjectDependencyHelper(), AuxKernelBase::addUserObjectDependencyHelper(), UserObjectBase::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), MFEMProblem::addVectorPostprocessor(), FEProblemBase::addVectorPostprocessor(), AuxKernelBase::addVectorPostprocessorDependencyHelper(), UserObjectBase::addVectorPostprocessorDependencyHelper(), MooseLinearVariableFV< Real >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), NEML2ModelExecutor::advanceState(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), Registry::appNameFromAppPath(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), Function::average(), MultiApp::backup(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), PiecewiseTabularInterface::buildFromFile(), PiecewiseTabularInterface::buildFromXY(), MooseMesh::buildNodeListFromSideList(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), ParsedConvergence::checkConvergence(), DefaultNonlinearConvergence::checkConvergence(), Registry::checkDataFilePathName(), FEProblemBase::checkDependMaterialsHelper(), TaggingInterface::checkForNans(), SamplerBase::checkForStandardFieldVariableType(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Moose::Kokkos::Material::checkMaterialProperty(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), FEProblemBase::checkUserObjectNameCollision(), DomainUserObject::checkVariable(), BlockRestrictable::checkVariable(), Coupleable::checkWritableVar(), 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(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), DebugResidualAux::DebugResidualAux(), MaterialBase::declareADProperty(), MFEMComplexVariable::declareCoefficients(), MFEMVariable::declareCoefficients(), Moose::Kokkos::MaterialBase::declareKokkosOnDemandProperty(), Moose::Kokkos::MaterialBase::declareKokkosProperty(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), Registry::determineDataFilePath(), 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(), SideValueSampler::execute(), RestartableDataReporter::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppUserObjectTransfer::execute(), WebServerControl::execute(), execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), NEML2ModelExecutor::fillInputs(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionArrayAux::FunctionArrayAux(), FunctionDT::FunctionDT(), FunctionIC::functionName(), FVFunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), GapValueAux::GapValueAux(), MooseServer::gatherDocumentSymbols(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), SideSetsFromNodeSetsGenerator::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), ManifoldSubdomainGenerator::generate(), SubdomainBoundingBoxGenerator::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(), Registry::getDataFilePath(), UserObjectBase::getDependObjects(), DistributionInterface::getDistribution(), FEProblemBase::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), MooseApp::getExecutor(), FEProblemBase::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVAdvectedInterpolationMethod(), FEProblemBase::getFVFaceInterpolationMethod(), FEProblemBase::getFVInterpolationMethod(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), AuxKernelTempl< Real >::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(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), AuxKernelTempl< Real >::getMaterialProperty(), Material::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), NodalPatchRecovery::getMaterialPropertyOld(), AuxKernelTempl< Real >::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOlder(), AuxKernelTempl< Real >::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(), NEML2FEInterpolation::getMOOSEVariable(), MultiAppTransfer::getMultiApp(), InterfaceMaterial::getNeighborADMaterialProperty(), InterfaceMaterial::getNeighborMaterialProperty(), InterfaceMaterial::getNeighborMaterialPropertyOld(), InterfaceMaterial::getNeighborMaterialPropertyOlder(), MooseServer::getObjectParameters(), Material::getOptionalADMaterialProperty(), Material::getOptionalMaterialProperty(), Material::getOptionalMaterialPropertyOld(), Material::getOptionalMaterialPropertyOlder(), OutputWarehouse::getOutput(), 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(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasDistribution(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), FEProblemBase::hasFVInterpolationMethod(), MooseApp::hasMeshGenerator(), MFEMProblem::hasMFEMObject(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), MooseBase::haveParameter(), NEML2Action::inferMOOSEIOType(), IterationAdaptiveDT::init(), AddVariableAction::init(), AdvancedOutput::init(), AdvancedOutput::initAvailableLists(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), JSONOutput::initialSetup(), SideFVFluxBCIntegral::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppProjectionTransfer::initialSetup(), MultiAppGeneralFieldFunctorTransfer::initialSetup(), NodalVariableValue::initialSetup(), Console::initialSetup(), AuxKernelBase::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< JvarMapKernelInterface< GenericKernelGrad< is_ad > > >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< Real >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), Material::Material(), MaterialDerivativeTestKernelBase< Real >::MaterialDerivativeTestKernelBase(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), NEML2ModelExecutor::meshChanged(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), OutputWarehouse::mooseConsole(), SolutionInvalidInterface::mooseDeprecated(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< Real >::MooseVariableInterface(), SolutionInvalidInterface::mooseWarning(), SolutionInvalidInterface::mooseWarningNonPrefixed(), MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NEML2PreKernel::NEML2PreKernel(), NodalDamper::NodalDamper(), MooseLinearVariableFV< Real >::nodalError(), NodalPatchRecoveryAuxBase::NodalPatchRecoveryAuxBase(), NodalValueSampler::NodalValueSampler(), Registry::objData(), MeshGenerator::Comparator::operator()(), ProgressOutput::output(), DOFMapOutput::output(), Output::Output(), AdvancedOutput::outputElementalVariables(), ConsoleUtils::outputExecutionInformation(), MaterialOutputAction::outputHelper(), AdvancedOutput::outputInput(), AdvancedOutput::outputNodalVariables(), Nemesis::outputPostprocessors(), Exodus::outputPostprocessors(), AdvancedOutput::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(), MooseApp::possiblyLoadRestartableMetaData(), MFEMExecutedObject::postprocessorDependencyKey(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), FEProblemBase::projectInitialConditionOnCustomRange(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), AppFactory::reg(), Registry::registerObjectsTo(), 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(), SurfaceMeshGeneratorBase::setup(), NodeSetsGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), TransientMultiApp::setupApp(), NEML2Action::setupOutputMappings(), FullSolveMultiApp::showStatusMessage(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), 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(), NEML2FEInterpolation::syncWithMainThread(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< Real >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), MultiAppMFEMCopyTransfer::transferVariables(), MultiAppMFEMShapeEvaluationTransfer::transferVariables(), TransientMultiApp::TransientMultiApp(), MooseServer::traverseParseTreeAndFillSymbols(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVFluxBC::uOnGhost(), FVFluxBC::uOnUSub(), UserObjectBase::UserObjectBase(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), MFEMExecutedObject::variableDependencyKey(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), MFEMExecutedObject::vectorPostprocessorDependencyKey(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), and MooseApp::writeRestartableMetaData().

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

◆ onBoundaries() [1/3]

bool MultiAppGeneralFieldTransfer::onBoundaries ( const std::set< BoundaryID > &  boundaries,
const MooseMesh mesh,
const Node *  node 
) const
protected

◆ onBoundaries() [2/3]

bool MultiAppGeneralFieldTransfer::onBoundaries ( const std::set< BoundaryID > &  boundaries,
const MooseMesh mesh,
const Elem *  elem 
) const
protected

◆ onBoundaries() [3/3]

bool MultiAppGeneralFieldTransfer::onBoundaries ( const std::set< BoundaryID > &  boundaries,
const std::set< SubdomainID > &  block_restriction,
const MooseMesh mesh,
const libMesh::PointLocatorBase *const  pl,
const Point &  pt 
) const
protected

◆ outputValueConflicts()

void MultiAppGeneralFieldTransfer::outputValueConflicts ( const unsigned int  var_index,
const DofobjectToInterpValVec dofobject_to_valsvec,
const InterpCaches distance_caches 
)
private

Report on conflicts between overlapping child apps, equidistant origin points etc.

Definition at line 1311 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1315 {
1316  // Remove potential conflicts that did not materialize, the value did not end up being used
1317  examineReceivedValueConflicts(var_index, dofobject_to_valsvec, distance_caches);
1318  examineLocalValueConflicts(var_index, dofobject_to_valsvec, distance_caches);
1319 
1320  // Output the conflicts from the selection of local values (evaluateInterpValues-type routines)
1321  // to send in response to value requests at target points
1322  const std::string rank_str = std::to_string(_communicator.rank());
1323  if (_local_conflicts.size())
1324  {
1325  unsigned int num_outputs = 0;
1326  std::string local_conflicts_string = "";
1327  std::string potential_reasons =
1328  "Are some points in target mesh equidistant from the sources "
1329  "(nodes/centroids/apps/positions, depending on transfer) in origin mesh(es)?\n";
1330  if (hasFromMultiApp() && _from_problems.size() > 1)
1331  potential_reasons += "Are multiple subapps overlapping?\n";
1332  for (const auto & conflict : _local_conflicts)
1333  {
1334  const unsigned int problem_id = std::get<0>(conflict);
1335  Point p = std::get<2>(conflict);
1336  num_outputs++;
1337 
1338  std::string origin_domain_message;
1340  {
1341  // NOTES:
1342  // - The origin app for a conflict may not be unique.
1343  // - The conflicts vectors only store the conflictual points, not the original one
1344  // The original value found with a given distance could be retrieved from the main
1345  // caches
1346  const auto app_id = _from_local2global_map[problem_id];
1347  origin_domain_message = "In source child app " + std::to_string(app_id) + " mesh,";
1348  }
1349  // We can't locate the source app when considering nearest positions, so we saved the data
1350  // in the reference space. So we return the conflict location in the target app (parent or
1351  // sibling) instead
1353  {
1354  if (_to_problems.size() == 1 || _skip_coordinate_collapsing)
1355  {
1356  p = (*_to_transforms[0])(p);
1357  origin_domain_message = "In target app mesh,";
1358  }
1359  else
1360  origin_domain_message = "In reference (post-coordinate collapse) mesh,";
1361  }
1362  else
1363  origin_domain_message = "In source parent app mesh,";
1364 
1365  if (num_outputs < _search_value_conflicts_max_log)
1366  local_conflicts_string += origin_domain_message + " point: (" + std::to_string(p(0)) +
1367  ", " + std::to_string(p(1)) + ", " + std::to_string(p(2)) +
1368  "), equi-distance: " + std::to_string(std::get<3>(conflict)) +
1369  "\n";
1370  else if (num_outputs == _search_value_conflicts_max_log)
1371  local_conflicts_string +=
1372  "Maximum output of the search for value conflicts has been reached. Further conflicts "
1373  "will not be output.\nIncrease 'search_value_conflicts_max_log' to output more.";
1374  }
1375  // Explicitly name source to give more context
1376  const std::string source_str = getDataSourceName(var_index);
1377 
1378  mooseWarning("On rank " + rank_str +
1379  ", multiple valid values from equidistant points were "
1380  "found in the origin mesh for source " +
1381  source_str + " for " + std::to_string(_local_conflicts.size()) +
1382  " target points.\n" + potential_reasons + "Conflicts detected at :\n" +
1383  local_conflicts_string);
1384  }
1385 
1386  // Output the conflicts discovered when receiving values from multiple origin problems
1387  if (_received_conflicts.size())
1388  {
1389  unsigned int num_outputs = 0;
1390  std::string received_conflicts_string = "";
1391  std::string potential_reasons =
1392  "Are some points in target mesh equidistant from the sources "
1393  "(nodes/centroids/apps/positions, depending on transfer) in origin mesh(es)?\n";
1394  if (hasToMultiApp() && _to_problems.size() > 1)
1395  potential_reasons += "Are multiple subapps overlapping?\n";
1396  for (const auto & conflict : _received_conflicts)
1397  {
1398  // Extract info for the potential overlap
1399  const unsigned int problem_id = std::get<0>(conflict);
1400  const Point p = std::get<2>(conflict);
1401  num_outputs++;
1402 
1403  std::string target_domain_message;
1404  if (hasToMultiApp())
1405  {
1406  const auto app_id = _to_local2global_map[problem_id];
1407  target_domain_message = "In target child app " + std::to_string(app_id) + " mesh,";
1408  }
1409  else
1410  target_domain_message = "In target parent app mesh,";
1411 
1412  if (num_outputs < _search_value_conflicts_max_log)
1413  received_conflicts_string += target_domain_message + " point: (" + std::to_string(p(0)) +
1414  ", " + std::to_string(p(1)) + ", " + std::to_string(p(2)) +
1415  "), equi-distance: " + std::to_string(std::get<3>(conflict)) +
1416  "\n";
1417  else if (num_outputs == _search_value_conflicts_max_log)
1418  received_conflicts_string +=
1419  "Maximum output of the search for value conflicts has been reached. Further conflicts "
1420  "will not be output.\nIncrease 'search_value_conflicts_max_log' to output more.";
1421  }
1422  mooseWarning("On rank " + rank_str +
1423  ", multiple valid values from equidistant points were "
1424  "received for target variable '" +
1425  getToVarName(var_index) + "' for " + std::to_string(_received_conflicts.size()) +
1426  " target points.\n" + potential_reasons + "Conflicts detected at :\n" +
1427  received_conflicts_string);
1428  }
1429 
1430  if (_local_conflicts.empty() && _received_conflicts.empty())
1431  {
1432  if (isParamSetByUser("search_value_conflict"))
1433  mooseInfo("Automated diagnosis did not detect floating point indetermination in transfer");
1434  else if (_to_problems.size() > 10 || _from_problems.size() > 10 || _communicator.size() > 10)
1435  mooseInfo(
1436  "Automated diagnosis did not detect any floating point indetermination in "
1437  "the transfer. You may consider turning it off using `search_value_conflicts=false` "
1438  "to improve performance/scalability.");
1439  }
1440 
1441  // Reset the conflicts vectors, to be used for checking conflicts when transferring the next
1442  // variable
1443  _local_conflicts.clear();
1444  _received_conflicts.clear();
1445 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:344
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
void examineReceivedValueConflicts(const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
Remove potential value conflicts that did not materialize because another source was closer Several e...
const bool _skip_coordinate_collapsing
Whether to skip coordinate collapsing (transformations of coordinates between applications using diff...
std::vector< FEProblemBase * > _to_problems
processor_id_type rank() const
const Parallel::Communicator & _communicator
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
std::vector< unsigned int > _to_local2global_map
Given local app index, returns global app index.
processor_id_type size() const
void mooseWarning(Args &&... args) const
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _local_conflicts
Keeps track of all local equidistant points to requested points, creating an indetermination in which...
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
Keeps track of all received conflicts.
void examineLocalValueConflicts(const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
Remove potential value conflicts that did not materialize because another source was closer Several e...
virtual std::string getDataSourceName(unsigned int var_index) const
Return a human-readable description of the data source (variable, functor, user object, etc.) used for conflict warning messages.
bool hasToMultiApp() const
Whether the transfer owns a non-null to_multi_app.
std::vector< unsigned int > _from_local2global_map
Given local app index, returns global app index.
const unsigned int _search_value_conflicts_max_log
How many conflicts are output to console.
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:215
std::vector< FEProblemBase * > _from_problems

◆ 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 467 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), SetupDebugAction::act(), CommonOutputAction::act(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), ComponentJunction::addMeshGenerators(), CylinderComponent::addMeshGenerators(), ReporterPointSource::addPoints(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADPenaltyPeriodicSegmentalConstraint::ADPenaltyPeriodicSegmentalConstraint(), ADPeriodicSegmentalConstraint::ADPeriodicSegmentalConstraint(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), AdvectiveFluxAux::AdvectiveFluxAux(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), ArrayBodyForce::ArrayBodyForce(), 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(), MFEMMesh::buildMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), checkComponent(), Moose::Kokkos::ParsedObjectBase::checkDuplicateSymbols(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MFEMMultiAppTransfer::checkValidTransferProblemTypes(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinedVectorPostprocessor::CombinedVectorPostprocessor(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentJunction::ComponentJunction(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionBCTempl< false >::ConservativeAdvectionBCTempl(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), correctSolutionVectorValues(), Coupleable::Coupleable(), CoupledForceTempl< is_ad >::CoupledForceTempl(), CoupledValueFunctionMaterialTempl< is_ad >::CoupledValueFunctionMaterialTempl(), MultiApp::createApp(), MeshGeneratorSystem::createMeshGenerator(), 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(), 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(), 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(), FunctorPositions::FunctorPositions(), FunctorVectorElementalAuxTempl< is_ad >::FunctorVectorElementalAuxTempl(), FVAdvection::FVAdvection(), FVFluxBC::FVFluxBC(), FVInterfaceKernel::FVInterfaceKernel(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), FVTwoVarContinuityConstraint::FVTwoVarContinuityConstraint(), Boundary2DDelaunayGenerator::General2DDelaunay(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), AddMetaDataGenerator::generate(), BlockToMeshConverterGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ExtraNodesetGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), RenumberBySubdomainGenerator::generate(), CoarsenBlockGenerator::generate(), BlockDeletionGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakMeshByBlockGenerator::generate(), ElementsToTetrahedronsConverter::generate(), FillBetweenCurvesGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), FillBetweenSidesetsGenerator::generate(), SideSetsFromNodeSetsGenerator::generate(), SubdomainsFromPartitionerGenerator::generate(), XYZDelaunayGenerator::generate(), AdvancedExtruderGenerator::generate(), BreakMeshByElementGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedExtraElementIDGenerator::generate(), CombinerGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), ProjectSideSetOntoLevelSetGenerator::generate(), StackGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), ParsedCurveGenerator::generate(), XYMeshLineCutter::generate(), CutMeshByLevelSetGeneratorBase::generate(), Boundary2DDelaunayGenerator::generate(), SurfaceSubdomainsDelaunayRemesher::generate(), ManifoldSubdomainGenerator::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::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(), Sampler::getNextLocalRow(), FEProblemSolve::getParamFromNonlinearSystemVectorParam(), PostprocessorInterface::getPostprocessorNameInternal(), PostprocessorInterface::getPostprocessorValueInternal(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), UserObjectInterface::getUserObjectBase(), UserObjectInterface::getUserObjectName(), AddPeriodicBCAction::getVariables(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), MultiApp::init(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), JSONOutput::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), BoundaryLinearFVFluxIntegral::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppGeneralFieldKDTreeTransferBase::initialSetup(), FullSolveMultiApp::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), HistogramVectorPostprocessor::initialSetup(), ReferenceResidualConvergence::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), initialSetup(), ElementSubdomainModifierBase::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(), LowerDIntegratedBC::LowerDIntegratedBC(), PNGOutput::makeMeshFunc(), MatCoupledForce::MatCoupledForce(), MaterialADConverterTempl< T >::MaterialADConverterTempl(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MatReactionTempl< false >::MatReactionTempl(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMComplexSumAux::MFEMComplexSumAux(), MFEMFunctorMaterial::MFEMFunctorMaterial(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MFEMMultiAppTransfer::MFEMMultiAppTransfer(), MFEMNDtoRTAux::MFEMNDtoRTAux(), MFEMSumAux::MFEMSumAux(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldFunctorTransfer::MultiAppGeneralFieldFunctorTransfer(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), 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(), NEML2PreKernel::NEML2PreKernel(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), OrientSurfaceMeshGenerator::OrientSurfaceMeshGenerator(), 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(), 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(), SurfaceMeshGeneratorBase::setup(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), CylinderComponent::setupComponent(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupInputMappings(), FEProblemSolve::setupMultiSystemFixedPointRelaxationFactors(), NEML2Action::setupParameterDerivativeMappings(), NEML2Action::setupParameterMappings(), SetupQuadratureAction::SetupQuadratureAction(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SurfaceSubdomainsDelaunayRemesher::SurfaceSubdomainsDelaunayRemesher(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), CylinderComponent::translation(), MeshTriangulationUtils::triangulateWithDelaunay(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), TimeSequenceStepperBase::updateSequence(), UserObjectBase::UserObjectBase(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

468 {
469  _pars.paramError(param, std::forward<Args>(args)...);
470 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
void paramError(const std::string &param, Args... args) const
Emits a parameter error prefixed with the parameter location and object information if available...

◆ 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.

Referenced by MeshOnlyAction::act(), SplitMeshAction::act(), SetupDebugAction::act(), CSGOnlyAction::act(), AddActionComponentAction::act(), CommonOutputAction::act(), Action::Action(), FEProblemBase::addAnyRedistributers(), MFEMProblem::addAuxKernel(), FEProblemBase::addAuxKernel(), FEProblemBase::addAuxScalarKernel(), MFEMProblem::addAuxVariable(), DisplacedProblem::addAuxVariable(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), FEProblemBase::addConstraint(), FEProblemBase::addConvergence(), FEProblemBase::addDamper(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), FEProblemBase::addDefaultMultiAppFixedPointConvergence(), ReferenceResidualProblem::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::addDefaultNonlinearConvergence(), AddDefaultConvergenceAction::addDefaultSteadyStateConvergence(), FEProblemBase::addDefaultSteadyStateConvergence(), FEProblemBase::addDGKernel(), FEProblemBase::addDiracKernel(), FEProblemBase::addDistribution(), MFEMProblem::addFESpace(), MFEMProblem::addFunction(), FEProblemBase::addFunction(), MFEMProblem::addFunctorMaterial(), FEProblemBase::addFunctorMaterial(), FEProblemBase::addFVBC(), FEProblemBase::addFVInitialCondition(), FEProblemBase::addFVInterfaceKernel(), FEProblemBase::addFVInterpolationMethod(), FEProblemBase::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), MFEMProblem::addImagComponentToBC(), MFEMProblem::addImagComponentToKernel(), MFEMProblem::addIndicator(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), MFEMProblem::addMarker(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMPreconditioner(), MFEMEigenproblem::addMFEMSolver(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), MFEMProblem::addRealComponentToBC(), MFEMProblem::addRealComponentToKernel(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), MFEMEigenproblem::addVariable(), MFEMProblem::addVariable(), DisplacedProblem::addVariable(), MFEMProblem::addVectorPostprocessor(), FEProblemBase::addVectorPostprocessor(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), Action::associateWithParameter(), AuxKernelBase::AuxKernelBase(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), 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(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MooseServer::parseDocumentForDiagnostics(), 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(), FEProblem::setInputParametersFEProblem(), FEProblemBase::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().

131 { return _pars; }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394

◆ 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 481 of file MooseBase.h.

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

482 {
483  mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
484 }
std::string paramMessage(const std::string &param, Args... args) const
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:344
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394

◆ paramWarning() [1/2]

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

◆ paramWarning() [2/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 474 of file MooseBase.h.

475 {
476  mooseWarning(_pars.paramMessage(param, std::forward<Args>(args)...));
477 }
std::string paramMessage(const std::string &param, Args... args) const
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:309

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 86 of file PerfGraphInterface.C.

Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), PerfGraphReporter::finalize(), and PerfGraphOutput::output().

87 {
88  return _pg_moose_app.perfGraph();
89 }
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition: MooseApp.h:178

◆ performAdjustment()

bool MultiAppConservativeTransfer::performAdjustment ( const PostprocessorValue from,
const PostprocessorValue to 
) const
protectedinherited

Definition at line 526 of file MultiAppConservativeTransfer.C.

Referenced by MultiAppConservativeTransfer::adjustTransferredSolution(), and MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint().

528 {
529  if (from * to > 0)
530  return true;
531  else if (_allow_skipped_adjustment)
532  return false;
533  else
534  mooseError("Adjustment postprocessors from: ",
535  from,
536  " to: ",
537  to,
538  " must both have the same sign and be different from 0");
539 }
bool _allow_skipped_adjustment
Whether the adjustment may be skipped when the postprocessor values are 0 / of different signs...
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:281

◆ possibleDirections()

static std::string Transfer::possibleDirections ( )
inlinestaticinherited

Used to construct InputParameters.

Definition at line 76 of file Transfer.h.

Referenced by Transfer::validParams().

76 { return "to_multiapp from_multiapp between_multiapp"; }

◆ postExecute()

void MultiAppGeneralFieldTransfer::postExecute ( )
overridevirtual

Add some extra work if necessary after execute().

For example, adjust the solution to preserve some physics quality of interest.

Reimplemented from MultiAppConservativeTransfer.

Definition at line 523 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

524 {
528 }
virtual void postExecute()
Add some extra work if necessary after execute().
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
bool _already_output_search_value_conflicts
Whether we already output the search value conflicts.

◆ prepareEvaluationOfInterpValues()

virtual void MultiAppGeneralFieldTransfer::prepareEvaluationOfInterpValues ( const unsigned int  var_index)
protectedpure virtual

◆ prepareToTransfer()

void MultiAppGeneralFieldTransfer::prepareToTransfer ( )
private

Initialize supporting attributes like bounding boxes, processor app indexes etc.

Definition at line 497 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

498 {
499  // Get the bounding boxes for the "from" domains.
500  // Clean up _from_bboxes from the previous transfer execution
501  _from_bboxes.clear();
502 
503  // NOTE: This ignores the app's bounding box inflation and padding
505 
506  // Expand bounding boxes. Some desired points might be excluded
507  // without an expansion
509 
510  // Figure out how many "from" domains each processor owns.
511  _froms_per_proc.clear();
513 
514  // Get the index for the first source app every processor owns
516 
517  // No need to keep searching for conflicts if the mesh has not changed
519  _search_value_conflicts = false;
520 }
std::vector< BoundingBox > _from_bboxes
Bounding boxes for all source applications.
std::vector< unsigned int > getGlobalStartAppPerProc() const
Get global index for the first app each processes owns Requires a global communication, must be called on every domain simultaneously.
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
std::vector< unsigned int > _froms_per_proc
Number of source/from applications per processor. This vector is indexed by processor id...
Real _bbox_factor
How much we should relax bounding boxes.
std::vector< unsigned int > getFromsPerProc()
Return the number of "from" domains that each processor owns.
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
std::vector< BoundingBox > getRestrictedFromBoundingBoxes() const
Get from bounding boxes for given domains and boundaries.
bool _already_output_search_value_conflicts
Whether we already output the search value conflicts.
bool _displaced_source_mesh
True if displaced mesh is used for the source mesh, otherwise false.
void extendBoundingBoxes(const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
Extends bounding boxes to avoid missing points.
std::vector< unsigned int > _global_app_start_per_proc
First app each processor owns, indexed by processor If no app on the processor, will have a -1 for th...

◆ 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 423 of file MooseBase.h.

Referenced by MFEMExecutedObject::getRequestedItems().

424 {
425  return haveParameter<T>(name) && isParamValid(name) ? &getParam<T>(name) : nullptr;
426 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209

◆ registerConflict()

void MultiAppGeneralFieldTransfer::registerConflict ( unsigned int  problem,
dof_id_type  dof_id,
Point  p,
Real  dist,
bool  local 
)
protected

Register a potential value conflict, e.g.

two or more equidistant source points for a single target point, with different values possible

Parameters
problemproblem ID for the point of interest. For local conflicts, use origin problem id, for received conflicts, use target id
dof_idid id of the DoF is transferring a DoF. If not, use -1
ppoint where the conflict happens
distdistance between the origin and the target
localif true, local conflict found when gathering data to send, if false, received value conflict found when receiving data from multiple source problems

Definition at line 1075 of file MultiAppGeneralFieldTransfer.C.

Referenced by cacheIncomingInterpVals(), MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValuesWithMeshFunctions(), MultiAppGeneralFieldUserObjectTransfer::evaluateInterpValuesWithUserObjects(), MultiAppGeneralFieldKDTreeTransferBase::evaluateNearestNodeFromKDTrees(), and MultiAppGeneralFieldFunctorTransfer::evaluateValues().

1077 {
1078  // NOTE We could be registering the same conflict several times, we could count them instead
1079  if (local)
1080  _local_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1081  else
1082  _received_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1083 }
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _local_conflicts
Keeps track of all local equidistant points to requested points, creating an indetermination in which...
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
Keeps track of all received conflicts.

◆ 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.
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
SolutionInvalidityRegistry & getSolutionInvalidityRegistry()
Get the global SolutionInvalidityRegistry singleton.
const MooseBase & _si_moose_base
The MooseBase that owns this interface.

◆ registerTimedSection() [1/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
Returns
The ID of the section - use when starting timing

Definition at line 61 of file PerfGraphInterface.C.

63 {
64  const auto timed_section_name = timedSectionName(section_name);
65  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
66  return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
67  else
68  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
69 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ registerTimedSection() [2/2]

PerfID PerfGraphInterface::registerTimedSection ( const std::string &  section_name,
const unsigned int  level,
const std::string &  live_message,
const bool  print_dots = true 
) const
protectedinherited

Call to register a named section for timing.

Parameters
section_nameThe name of the code section to be timed
levelThe importance of the timer - lower is more important (0 will always come out)
live_messageThe message to be printed to the screen during execution
print_dotsWhether or not progress dots should be printed for this section
Returns
The ID of the section - use when starting timing

Definition at line 72 of file PerfGraphInterface.C.

76 {
77  const auto timed_section_name = timedSectionName(section_name);
78  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
80  timedSectionName(section_name), level, live_message, print_dots);
81  else
82  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
83 }
PerfID registerSection(const std::string &section_name, const unsigned int level)
Call to register a named section for timing.
std::string timedSectionName(const std::string &section_name) const
PerfID sectionID(const std::string &section_name) const
Given a name return the PerfID The name of the section.
PerfGraphRegistry & getPerfGraphRegistry()
Get the global PerfGraphRegistry singleton.

◆ residualSetup()

void SetupInterface::residualSetup ( )
virtualinherited

◆ restartableName()

std::string Restartable::restartableName ( const std::string &  data_name) const
protectedinherited

Gets the name of a piece of restartable data given a data name, adding the system name and object name prefix.

This should only be used in this interface and in testing.

Definition at line 78 of file Restartable.C.

Referenced by Restartable::declareRecoverableData(), and Restartable::declareRestartableDataHelper().

79 {
80  return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
81 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:250
const std::string _restartable_system_name
The system name this object is in.
Definition: Restartable.h:237

◆ setCurrentDirection()

void Transfer::setCurrentDirection ( const int  direction)
inlineinherited

Set this Transfer to be executed in a given direction.

Definition at line 89 of file Transfer.h.

Referenced by FEProblemBase::execMultiAppTransfers().

90  {
93  }
MooseEnum _current_direction
Definition: Transfer.h:106
MooseEnum direction()
Definition: Transfer.h:84
MooseEnum _direction
Definition: Transfer.h:105

◆ setSolutionVectorValues()

void MultiAppGeneralFieldTransfer::setSolutionVectorValues ( const unsigned int  var_index,
const DofobjectToInterpValVec dofobject_to_valsvec,
const InterpCaches interp_caches 
)
private

Definition at line 1448 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1452 {
1453  // Get the variable name, with the accommodation for array/vector names
1454  const auto & var_name = getToVarName(var_index);
1455 
1456  for (const auto problem_id : index_range(_to_problems))
1457  {
1458  auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
1459 
1460  // libMesh EquationSystems
1461  // NOTE: we would expect to set variables from the displaced equation system here
1462  auto & es = getEquationSystem(*_to_problems[problem_id], false);
1463 
1464  // libMesh system
1465  System * to_sys = find_sys(es, var_name);
1466 
1467  // libMesh mesh
1468  const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
1469  auto var_num = to_sys->variable_number(var_name);
1470  auto sys_num = to_sys->number();
1471 
1472  auto & fe_type = _to_variables[var_index]->feType();
1473  bool is_nodal = _to_variables[var_index]->isNodal();
1474 
1475  if (fe_type.order > CONSTANT && !is_nodal)
1476  {
1477  // We may need to use existing data values in places where the
1478  // from app domain doesn't overlap
1479  MeshFunction to_func(es, *to_sys->current_local_solution, to_sys->get_dof_map(), var_num);
1480  to_func.init();
1481 
1483  interp_caches[problem_id], to_func, _default_extrapolation_value);
1484  libMesh::VectorSetAction<Number> setter(*to_sys->solution);
1485  const std::vector<unsigned int> varvec(1, var_num);
1486 
1489  Number,
1491  set_solution(*to_sys, f, nullptr, setter, varvec);
1492 
1493  // We dont look at boundary restriction, not supported for higher order target variables
1494  const auto & to_begin = _to_blocks.empty()
1495  ? to_mesh.active_local_elements_begin()
1496  : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
1497 
1498  const auto & to_end = _to_blocks.empty()
1499  ? to_mesh.active_local_elements_end()
1500  : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
1501 
1502  ConstElemRange active_local_elem_range(to_begin, to_end);
1503 
1504  set_solution.project(active_local_elem_range);
1505  }
1506  else
1507  {
1508  for (const auto & val_pair : dofobject_to_val)
1509  {
1510  const auto dof_object_id = val_pair.first;
1511 
1512  const DofObject * dof_object = nullptr;
1513  if (is_nodal)
1514  dof_object = to_mesh.node_ptr(dof_object_id);
1515  else
1516  dof_object = to_mesh.elem_ptr(dof_object_id);
1517 
1518  const auto dof = dof_object->dof_number(sys_num, var_num, 0);
1519  const auto val = val_pair.second.interp;
1520 
1521  // This will happen if meshes are mismatched
1523  {
1524  const auto target_location =
1525  hasToMultiApp()
1526  ? " on target app " + std::to_string(getGlobalTargetAppIndex(problem_id))
1527  : " on parent app";
1528  const auto info_msg = "\nThis check can be turned off by setting 'error_on_miss' to "
1529  "false. The 'extrapolation_constant' parameter will be used to set "
1530  "the local value at missed points.";
1531  if (is_nodal)
1532  mooseError("No source value for node ",
1533  dof_object_id,
1534  target_location,
1535  " could be located. Node details:\n",
1536  _to_meshes[problem_id]->nodePtr(dof_object_id)->get_info(),
1537  "\n",
1538  info_msg);
1539  else
1540  mooseError("No source value for element ",
1541  dof_object_id,
1542  target_location,
1543  " could be located. Element details:\n",
1544  _to_meshes[problem_id]->elemPtr(dof_object_id)->get_info(),
1545  "\n",
1546  info_msg);
1547  }
1548 
1549  // We should not put garbage into our solution vector
1550  // but it can be that we want to set it to a different value than what was already there
1551  // for example: the source app has been displaced and was sending an indicator of its
1552  // position
1554  {
1556  {
1557  // For nearest-valid-target, keep the out-of-mesh sentinel in the solution so
1558  // that correctSolutionVectorValues can reliably identify which DOFs still need
1559  // extrapolation. Writing _default_extrapolation_value here instead would make it
1560  // impossible to distinguish a legitimately-transferred value that happens to equal
1561  // the extrapolation constant from a DOF that never received data.
1562  const auto missing_value = _post_transfer_extrapolation == "nearest-valid-target"
1565  to_sys->solution->set(dof, missing_value);
1566  }
1567  continue;
1568  }
1569  to_sys->solution->set(dof, val);
1570  }
1571  }
1572 
1573  to_sys->solution->close();
1574  // Sync local solutions
1575  to_sys->update();
1576  }
1577 }
const MooseEnum _post_transfer_extrapolation
How to post treat after the transfer.
dof_id_type dof_number(const unsigned int s, const unsigned int var, const unsigned int comp) const
std::vector< FEProblemBase * > _to_problems
const Real _default_extrapolation_value
Value to use when no received data is valid for a target location.
VariableName getToVarName(unsigned int var_index)
Get the target variable name, with the suffix for array/vector variables.
unsigned int variable_number(std::string_view var) const
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.
bool _displaced_target_mesh
True if displaced mesh is used for the target mesh, otherwise false.
std::set< SubdomainID > _to_blocks
Target block(s) restriction.
unsigned int number() const
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem&#39;s equation system, displaced or not Be careful! If you transfer TO a displaced sy...
bool _error_on_miss
Error out when some points can not be located.
static libMesh::System * find_sys(libMesh::EquationSystems &es, const std::string &var_name)
Small helper function for finding the system containing the variable.
Definition: Transfer.C:91
std::unique_ptr< NumericVector< Number > > solution
virtual void init() override
virtual const Elem * elem_ptr(const dof_id_type i) const=0
virtual void update()
bool hasToMultiApp() const
Whether the transfer owns a non-null to_multi_app.
Value request response base class.
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:281
std::unique_ptr< NumericVector< Number > > current_local_solution
std::vector< MooseVariableFieldBase * > _to_variables
The target variables.
Real Number
virtual const Node * node_ptr(const dof_id_type i) const=0
const DofMap & get_dof_map() const
auto index_range(const T &sizable)
std::vector< MooseMesh * > _to_meshes

◆ subdomainSetup()

void SetupInterface::subdomainSetup ( )
virtualinherited

Gets called when the subdomain changes (i.e.

in a Jacobian or residual loop) and before this object is asked to do its job

Reimplemented in MaterialBase, Material, Moose::Kokkos::AuxKernel, Moose::Kokkos::MaterialBase, GeneralUserObject, NodalUserObject, Moose::Kokkos::UserObject, Constraint, and ThreadedGeneralUserObject.

Definition at line 68 of file SetupInterface.C.

69 {
70 }

◆ timedSectionName()

std::string PerfGraphInterface::timedSectionName ( const std::string &  section_name) const
protectedinherited
Returns
The name of the timed section with the name section_name.

Optionally adds a prefix if one is defined.

Definition at line 55 of file PerfGraphInterface.C.

Referenced by PerfGraphInterface::registerTimedSection().

56 {
57  return _prefix.empty() ? "" : (_prefix + "::") + section_name;
58 }
const std::string _prefix
A prefix to use for all sections.

◆ timestepSetup()

void SetupInterface::timestepSetup ( )
virtualinherited

◆ transferVariable()

void MultiAppGeneralFieldTransfer::transferVariable ( unsigned int  i)
private

Performs the transfer for the variable of index i.

Definition at line 531 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

532 {
533  mooseAssert(i < _var_size, "The variable of index " << i << " does not exist");
534 
535  // Find outgoing target points
536  // We need to know what points we need to send which processors
537  // One processor will receive many points from many processors
538  // One point may go to different processors
539  ProcessorToPointVec outgoing_points;
540  extractOutgoingPoints(i, outgoing_points);
541 
542  if (_from_var_names.size() || dynamic_cast<MultiAppGeneralFieldFunctorTransfer *>(this))
544  else
546 
547  // Fill values and app ids for incoming points
548  // We are responsible to compute values for these incoming points
549  auto gather_functor =
550  [this, &i](processor_id_type /*pid*/,
551  const std::vector<std::pair<Point, unsigned int>> & incoming_locations,
552  std::vector<std::pair<Real, Real>> & outgoing_vals)
553  {
554  outgoing_vals.resize(
555  incoming_locations.size(),
557  // Evaluate interpolation values for these incoming points
558  evaluateInterpValues(i, incoming_locations, outgoing_vals);
559  };
560 
561  DofobjectToInterpValVec dofobject_to_valsvec(_to_problems.size());
563  InterpCaches distance_caches(_to_problems.size(), getMaxToProblemsBBoxDimensions());
564 
565  // Copy data out to incoming_vals_ids
566  auto action_functor = [this, &i, &dofobject_to_valsvec, &interp_caches, &distance_caches](
567  processor_id_type pid,
568  const std::vector<std::pair<Point, unsigned int>> & my_outgoing_points,
569  const std::vector<std::pair<Real, Real>> & incoming_vals)
570  {
571  auto & pointInfoVec = _processor_to_pointInfoVec[pid];
572 
573  // Cache interpolation values for each dof object / points
575  i,
576  pointInfoVec,
577  my_outgoing_points,
578  incoming_vals,
579  dofobject_to_valsvec,
580  interp_caches,
581  distance_caches);
582  };
583 
584  // We assume incoming_vals_ids is ordered in the same way as outgoing_points
585  // Hopefully, pull_parallel_vector_data will not mess up this
586  const std::pair<Real, Real> * ex = nullptr;
587  libMesh::Parallel::pull_parallel_vector_data(
588  comm(), outgoing_points, gather_functor, action_functor, ex);
589 
590  // Check for conflicts and overlaps from the maps that were built during the transfer
592  outputValueConflicts(i, dofobject_to_valsvec, distance_caches);
593 
594  // Set cached values into solution vector
595  setSolutionVectorValues(i, dofobject_to_valsvec, interp_caches);
596 
597  // Modify solution vector values (notably extrapolation options in functor transfer)
598  correctSolutionVectorValues(i, dofobject_to_valsvec, interp_caches);
599 }
Transfers a functor (can be variable, function, functor material property, spatial UO...
virtual void evaluateInterpValues(const unsigned int var_index, const std::vector< std::pair< Point, unsigned int >> &incoming_points, std::vector< std::pair< Real, Real >> &outgoing_vals)=0
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
std::vector< FEProblemBase * > _to_problems
const Parallel::Communicator & comm() const
unsigned int _var_size
The number of variables to transfer.
void outputValueConflicts(const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &distance_caches)
Report on conflicts between overlapping child apps, equidistant origin points etc.
void extractOutgoingPoints(const unsigned int var_index, ProcessorToPointVec &outgoing_points)
std::unordered_map< processor_id_type, std::vector< std::pair< Point, unsigned int > > > ProcessorToPointVec
A map from pid to a set of points.
Point getMaxToProblemsBBoxDimensions() const
Obtains the max dimensions to scale all points in the mesh.
uint8_t processor_id_type
virtual void prepareEvaluationOfInterpValues(const unsigned int var_index)=0
std::vector< std::unordered_map< dof_id_type, InterpInfo > > DofobjectToInterpValVec
A vector, indexed by to-problem id, of maps from dof object to interpolation values.
bool _search_value_conflicts
Whether to look for conflicts between origin points, multiple valid values for a target point...
void correctSolutionVectorValues(const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
std::vector< InterpCache > InterpCaches
A vector of such caches, indexed by to_problem.
ProcessorToPointInfoVec _processor_to_pointInfoVec
A map from processor to pointInfo vector.
void setSolutionVectorValues(const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
void cacheIncomingInterpVals(processor_id_type pid, const unsigned int var_index, std::vector< PointInfo > &pointInfoVec, const std::vector< std::pair< Point, unsigned int >> &point_requests, const std::vector< std::pair< Real, Real >> &incoming_vals, DofobjectToInterpValVec &dofobject_to_valsvec, InterpCaches &interp_caches, InterpCaches &distance_caches)

◆ transformBoundingBox()

void MultiAppTransfer::transformBoundingBox ( libMesh::BoundingBox box,
const MultiAppCoordTransform transform 
)
staticprotectedinherited

Transform a bounding box according to the transformations in the provided coordinate transformation object.

Definition at line 460 of file MultiAppTransfer.C.

Referenced by MultiAppTransfer::getFromBoundingBoxes(), and getRestrictedFromBoundingBoxes().

461 {
462  MultiApp::transformBoundingBox(box, transform);
463 }
static void transformBoundingBox(libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
Transform a bounding box according to the transformations in the provided coordinate transformation o...
Definition: MultiApp.C:902

◆ 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.

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

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

◆ 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.

Referenced by MaterialPropertyStorage::addProperty(), FEProblemBase::checkUserObjectNameCollision(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< std::vector< T > >::finalize(), ReporterData::getReporterInfo(), and WebServerControl::outputMessage().

58 {
59  return type() + std::string(" \"") + name() + std::string("\"");
60 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93

◆ 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.

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

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 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:394
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.
static const std::string unique_name_param
The name of the parameter that contains the unique object name.
Definition: MooseBase.h:57
bool have_parameter(std::string_view name) const
A wrapper around the Parameters base class method.
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:281
A class for storing the names of MooseObject by tag and object name.

◆ 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 & name() const
Get the name of the class.
Definition: MooseBase.h:103
A class for storing an input parameter name.
const std::string & getBase() const
Definition: MooseBase.h:147

◆ validParams()

InputParameters MultiAppGeneralFieldTransfer::validParams ( )
static

Definition at line 40 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldKDTreeTransferBase::validParams(), MultiAppGeneralFieldShapeEvaluationTransfer::validParams(), and MultiAppGeneralFieldUserObjectTransfer::validParams().

41 {
43  // Expansion default to make a node in the target mesh overlapping with a node in the origin
44  // mesh always register as being inside the origin application bounding box. The contains_point
45  // bounding box checks uses exact comparisons
46  params.addRangeCheckedParam<Real>("bbox_factor",
47  1.00000001,
48  "bbox_factor>0",
49  "Factor to inflate or deflate the source app bounding boxes");
50  params.addRangeCheckedParam<std::vector<Real>>(
51  "fixed_bounding_box_size",
52  "fixed_bounding_box_size >= 0",
53  "Override source app bounding box size(s) for searches. App bounding boxes will still be "
54  "centered on the same coordinates. Only non-zero components passed will override.");
55  params.addParam<Real>(
56  "extrapolation_constant",
57  0,
58  "Constant to use when no source app can provide a valid value for a target location.");
59  MooseEnum extrap_options("none nearest-valid-target", "none");
60  params.addParam<MooseEnum>("post_transfer_extrapolation",
61  extrap_options,
62  "Post treatment to apply to the field after the transfer");
63 
64  // Block restrictions
65  params.addParam<std::vector<SubdomainName>>(
66  "from_blocks",
67  "Subdomain restriction to transfer from (defaults to all the origin app domain)");
68  params.addParam<std::vector<SubdomainName>>(
69  "to_blocks", "Subdomain restriction to transfer to, (defaults to all the target app domain)");
70 
71  // Boundary restrictions
72  params.addParam<std::vector<BoundaryName>>(
73  "from_boundaries",
74  "The boundary we are transferring from (if not specified, whole domain is used).");
75  params.addParam<std::vector<BoundaryName>>(
76  "to_boundaries",
77  "The boundary we are transferring to (if not specified, whole domain is used).");
78  MooseEnum nodes_or_sides("nodes sides", "sides");
79  params.addParam<MooseEnum>("elemental_boundary_restriction",
80  nodes_or_sides,
81  "Whether elemental variable boundary restriction is considered by "
82  "element side or element nodes");
83 
84  // Mesh division restriction
85  params.addParam<MeshDivisionName>("from_mesh_division",
86  "Mesh division object on the origin application");
87  params.addParam<MeshDivisionName>("to_mesh_division",
88  "Mesh division object on the target application");
89  MooseEnum mesh_division_uses("spatial_restriction matching_division matching_subapp_index none",
90  "none");
91  params.addParam<MooseEnum>("from_mesh_division_usage",
92  mesh_division_uses,
93  "How to use the source mesh division in the transfer. See object "
94  "documentation for description of each option");
95  params.addParam<MooseEnum>("to_mesh_division_usage",
96  mesh_division_uses,
97  "How to use the target mesh division in the transfer. See object "
98  "documentation for description of each option");
99 
100  // Array and vector variables
101  params.addParam<std::vector<unsigned int>>("source_variable_components",
102  std::vector<unsigned int>(),
103  "The source array or vector variable component(s).");
104  params.addParam<std::vector<unsigned int>>("target_variable_components",
105  std::vector<unsigned int>(),
106  "The target array or vector variable component(s).");
107 
108  // Search options
109  params.addParam<bool>(
110  "greedy_search",
111  false,
112  "Whether or not to send a point to all the domains. If true, all the processors will be "
113  "checked for a given point."
114  "The code will be slow if this flag is on but it will give a better solution.");
115  params.addParam<bool>(
116  "error_on_miss",
117  true,
118  "Whether or not to error in the case that a target point is not found in the source domain.");
119  params.addParam<bool>("use_bounding_boxes",
120  true,
121  "When set to false, bounding boxes will not be used to restrict the source "
122  "of the transfer. Either source applications must be set using the "
123  "from_mesh_division parameter, or a greedy search must be used.");
124  params.addParam<bool>(
125  "use_nearest_app",
126  false,
127  "When True, transfers from a child application will work by finding the nearest (using "
128  "the `position` + mesh centroid) sub-app and query that app for the value to transfer.");
129  params.addParam<PositionsName>(
130  "use_nearest_position",
131  "Name of the the Positions object (in main app) such that transfers to/from a child "
132  "application will work by finding the nearest position to a target and query only the "
133  "app / points closer to this position than to any other position for the value to transfer.");
134  params.addParam<bool>(
135  "from_app_must_contain_point",
136  false,
137  "Wether on not the origin mesh must contain the point to evaluate data at. If false, this "
138  "allows for interpolation between origin app meshes. Origin app bounding boxes are still "
139  "considered so you may want to increase them with 'fixed_bounding_box_size'");
140  params.addParam<bool>("search_value_conflicts",
141  false,
142  "Whether to look for potential conflicts between two valid and different "
143  "source values for any target point");
144  params.addParam<unsigned int>(
145  "value_conflicts_output",
146  10,
147  "Maximum number of conflicts to output if value-conflicts, from equidistant sources to a "
148  "given transfer target location, search is turned on");
149 
150  params.addParamNamesToGroup(
151  "to_blocks from_blocks to_boundaries from_boundaries elemental_boundary_restriction "
152  "from_mesh_division from_mesh_division_usage to_mesh_division to_mesh_division_usage",
153  "Transfer spatial restriction");
154  params.addParamNamesToGroup(
155  "greedy_search use_bounding_boxes use_nearest_app use_nearest_position "
156  "search_value_conflicts",
157  "Search algorithm");
158  params.addParamNamesToGroup("error_on_miss from_app_must_contain_point extrapolation_constant",
159  "Extrapolation behavior");
160  params.addParamNamesToGroup("bbox_factor fixed_bounding_box_size", "Source app bounding box");
161 
162  // We need a level of ghosting to move elemental value one layer out when using post transfer
163  // extrapolation. We need geometric for the element vertex average, and algebraic for the dof
164  // value NOTE: we need this on the target mesh!
165  params.addRelationshipManager(
166  "ElementSideNeighborLayers",
168  [](const InputParameters & obj_params, InputParameters & rm_params)
169  {
170  if (!obj_params.isParamValid("from_multi_app") &&
171  obj_params.get<MooseEnum>("post_transfer_extrapolation") == "nearest-valid-target")
172  rm_params.set<unsigned short>("layers") = 2;
173  rm_params.set<bool>("use_displaced_mesh") = obj_params.get<bool>("displaced_target_mesh");
174  });
175 
176  return params;
177 }
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.
T & set(const std::string &name, bool quiet_mode=false)
Returns a writable reference to the named parameters.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:54
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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 addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another, i.e.

◆ variableIntegrityCheck()

void MultiAppTransfer::variableIntegrityCheck ( const AuxVariableName &  var_name,
bool  is_from_multiapp 
) const
inherited

Utility to verify that the variable in the destination system exists.

Definition at line 197 of file MultiAppTransfer.C.

Referenced by MultiAppFieldTransfer::initialSetup(), and MultiAppVariableValueSampleTransfer::initialSetup().

199 {
200  bool variable_found = false;
201  bool has_an_app = false;
202 
203  // Check the from_multi_app for the variable
204  if (is_from_multiapp && _from_multi_app)
205  for (unsigned int i = 0; i < _from_multi_app->numGlobalApps(); i++)
206  if (_from_multi_app->hasLocalApp(i))
207  {
208  has_an_app = true;
209  if (_from_multi_app->appProblemBase(i).hasVariable(var_name))
210  variable_found = true;
211  }
212 
213  // Check the to_multi_app for the variable
214  if (!is_from_multiapp && _to_multi_app)
215  for (unsigned int i = 0; i < _to_multi_app->numGlobalApps(); i++)
216  if (_to_multi_app->hasLocalApp(i))
217  {
218  has_an_app = true;
219  if (_to_multi_app->appProblemBase(i).hasVariable(var_name))
220  variable_found = true;
221  }
222 
223  if (!variable_found && has_an_app)
224  mooseError("Cannot find variable ", var_name, " for ", name(), " Transfer");
225 }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
std::shared_ptr< MultiApp > _to_multi_app
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:281

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _already_output_search_value_conflicts

bool MultiAppGeneralFieldTransfer::_already_output_search_value_conflicts
protected

Whether we already output the search value conflicts.

Definition at line 288 of file MultiAppGeneralFieldTransfer.h.

Referenced by postExecute(), and prepareToTransfer().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 385 of file MooseBase.h.

◆ _bbox_factor

Real MultiAppGeneralFieldTransfer::_bbox_factor
private

How much we should relax bounding boxes.

Definition at line 367 of file MultiAppGeneralFieldTransfer.h.

Referenced by prepareToTransfer().

◆ _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(), MeshOnlyAction::act(), SetupDebugAction::act(), MaterialOutputAction::act(), Adaptivity::adaptMesh(), FEProblemBase::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::checkNonMatchingEdges(), MeshDiagnosticsGenerator::checkNonPlanarSides(), MeshDiagnosticsGenerator::checkPolygons(), FEProblemBase::checkProblemIntegrity(), ReferenceResidualConvergence::checkRelativeConvergence(), MeshDiagnosticsGenerator::checkSidesetsOrientation(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), IterationAdaptiveDT::computeAdaptiveDT(), TransientBase::computeConstrainedDT(), DefaultMultiAppFixedPointConvergence::computeCustomConvergencePostprocessor(), NonlinearSystemBase::computeDamping(), FixedPointIterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeDT(), IterationAdaptiveDT::computeFailedDT(), IterationAdaptiveDT::computeInitialDT(), IterationAdaptiveDT::computeInterpolationDT(), LinearSystem::computeLinearSystemTags(), FEProblemBase::computeLinearSystemTags(), NonlinearSystemBase::computeScaling(), Problem::console(), IterationAdaptiveDT::constrainStep(), TimeStepper::constrainStep(), MultiApp::createApp(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), MFEMSteady::execute(), MessageFromInput::execute(), SteadyBase::execute(), Eigenvalue::execute(), ActionWarehouse::executeActionsWithAction(), ActionWarehouse::executeAllActions(), MeshGeneratorSystem::executeMeshGenerators(), ElementQualityChecker::finalize(), SidesetAroundSubdomainUpdater::finalize(), FEProblemBase::finishMultiAppStep(), MeshRepairGenerator::fixOverlappingNodes(), SurfaceSubdomainsDelaunayRemesher::General2DDelaunay(), OrientSurfaceMeshGenerator::generate(), CoarsenBlockGenerator::generate(), PolyLineMeshFollowingNodeSetGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), 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(), ReferenceResidualConvergence::nonlinearConvergenceSetup(), ReporterDebugOutput::output(), PerfGraphOutput::output(), SolutionInvalidityOutput::output(), MaterialPropertyDebugOutput::output(), DOFMapOutput::output(), VariableResidualNormsDebugOutput::output(), Console::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(), ActionWarehouse::printActionDependencySets(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), SolutionInvalidity::printDebug(), EigenExecutionerBase::printEigenvalue(), SecantSolve::printFixedPointConvergenceHistory(), SteffensenSolve::printFixedPointConvergenceHistory(), PicardSolve::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(), EigenProblem::solve(), FEProblemSolve::solve(), FixedPointSolve::solve(), NonlinearSystem::solve(), LinearSystem::solve(), LStableDirk2::solve(), LStableDirk3::solve(), ImplicitMidpoint::solve(), ExplicitTVDRK2::solve(), AStableDirk4::solve(), LStableDirk4::solve(), ExplicitRK2::solve(), TransientMultiApp::solveStep(), FixedPointSolve::solveStep(), MeshRepairGenerator::splitNonConvexPolygons(), PerfGraphLivePrint::start(), WebServerControl::startServer(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), MFEMTransient::takeStep(), TransientBase::takeStep(), TerminateChainControl::terminate(), SubProblem::timestepSetup(), FEProblemBase::updateMeshXFEM(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _current_direction

MooseEnum Transfer::_current_direction
protectedinherited

Definition at line 106 of file Transfer.h.

Referenced by MultiAppConservativeTransfer::adjustTransferredSolution(), MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint(), Transfer::currentDirection(), MultiAppCloneReporterTransfer::execute(), MultiAppReporterTransfer::execute(), MFEMMultiAppTransfer::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppVectorPostprocessorTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppGeneralFieldUserObjectTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), MultiAppGeneralFieldFunctorTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppUserObjectTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppTransfer::getAppInfo(), MultiAppTransfer::getGlobalSourceAppIndex(), MultiAppTransfer::getGlobalTargetAppIndex(), MultiAppTransfer::getLocalSourceAppIndex(), MultiAppConservativeTransfer::initialSetup(), MultiAppFieldTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppConservativeTransfer::postExecute(), Transfer::setCurrentDirection(), Transfer::Transfer(), and MultiAppShapeEvaluationTransfer::transferVariable().

◆ _current_execute_flag

const ExecFlagType& SetupInterface::_current_execute_flag
protectedinherited

Reference to FEProblemBase.

Definition at line 86 of file SetupInterface.h.

Referenced by PseudoTimestep::execute().

◆ _default_extrapolation_value

const Real MultiAppGeneralFieldTransfer::_default_extrapolation_value
private

Value to use when no received data is valid for a target location.

Definition at line 364 of file MultiAppGeneralFieldTransfer.h.

Referenced by correctSolutionVectorValues(), and setSolutionVectorValues().

◆ _direction

MooseEnum Transfer::_direction
protectedinherited

The current direction that is being executed for this Transfer. _direction is to be deprecated for _current_direction

Definition at line 105 of file Transfer.h.

Referenced by Transfer::direction(), MultiAppTransfer::MultiAppTransfer(), Transfer::setCurrentDirection(), and Transfer::Transfer().

◆ _directions

MultiMooseEnum Transfer::_directions
protectedinherited

◆ _displaced_source_mesh

bool MultiAppTransfer::_displaced_source_mesh
protectedinherited

◆ _displaced_target_mesh

bool MultiAppTransfer::_displaced_target_mesh
protectedinherited

◆ _elemental_boundary_restriction_on_sides

const bool MultiAppGeneralFieldTransfer::_elemental_boundary_restriction_on_sides
protected

Whether elemental variable boundary restriction is considered by element side or element nodes.

Definition at line 270 of file MultiAppGeneralFieldTransfer.h.

◆ _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().

◆ _error_on_miss

bool MultiAppGeneralFieldTransfer::_error_on_miss
private

Error out when some points can not be located.

Definition at line 361 of file MultiAppGeneralFieldTransfer.h.

Referenced by locatePointReceivers(), and setSolutionVectorValues().

◆ _execute_enum

const ExecFlagEnum& SetupInterface::_execute_enum
protectedinherited

◆ _factory

Factory& ParallelParamObject::_factory
protectedinherited

◆ _fe_problem

FEProblemBase& Transfer::_fe_problem
protectedinherited

◆ _fixed_bbox_size

std::vector<Real> MultiAppGeneralFieldTransfer::_fixed_bbox_size
private

Set the bounding box sizes manually.

Definition at line 370 of file MultiAppGeneralFieldTransfer.h.

Referenced by getRestrictedFromBoundingBoxes().

◆ _from_bboxes

std::vector<BoundingBox> MultiAppGeneralFieldTransfer::_from_bboxes
private

Bounding boxes for all source applications.

The indexing of this vector is similar to 'processor_id * n_local_subapps + i_local_subapp', except the number of local subapps can be different on each processor. Use the _from_per_proc vector to find the start/end index for a given processor. See MultiAppGeneralFieldTransfer::locatePointReceivers() for an example

Definition at line 379 of file MultiAppGeneralFieldTransfer.h.

Referenced by extractLocalFromBoundingBoxes(), locatePointReceivers(), and prepareToTransfer().

◆ _from_blocks

std::set<SubdomainID> MultiAppGeneralFieldTransfer::_from_blocks
protected

◆ _from_boundaries

std::set<BoundaryID> MultiAppGeneralFieldTransfer::_from_boundaries
protected

◆ _from_es

std::vector<libMesh::EquationSystems *> MultiAppTransfer::_from_es
protectedinherited

Definition at line 156 of file MultiAppTransfer.h.

Referenced by MultiAppTransfer::getAppInfo().

◆ _from_local2global_map

std::vector<unsigned int> MultiAppTransfer::_from_local2global_map
protectedinherited

◆ _from_mesh_division_behavior

const MooseEnum& MultiAppGeneralFieldTransfer::_from_mesh_division_behavior
protected

◆ _from_mesh_divisions

std::vector<const MeshDivision *> MultiAppGeneralFieldTransfer::_from_mesh_divisions
protected

◆ _from_meshes

std::vector<MooseMesh *> MultiAppTransfer::_from_meshes
protectedinherited

◆ _from_point_locators

std::vector<std::unique_ptr<libMesh::PointLocatorBase> > MultiAppGeneralFieldTransfer::_from_point_locators
protected

Point locators, useful to examine point location with regards to domain restriction.

Definition at line 273 of file MultiAppGeneralFieldTransfer.h.

Referenced by acceptPointInOriginMesh(), MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource(), and getAppInfo().

◆ _from_positions

std::vector<Point> MultiAppTransfer::_from_positions
protectedinherited

◆ _from_postprocessors_to_be_preserved

std::vector<PostprocessorName> MultiAppConservativeTransfer::_from_postprocessors_to_be_preserved
protectedinherited

Postprocessor evaluates an adjuster for the source physics.

Definition at line 51 of file MultiAppConservativeTransfer.h.

Referenced by MultiAppConservativeTransfer::initialSetup(), and MultiAppConservativeTransfer::postExecute().

◆ _from_problems

std::vector<FEProblemBase *> MultiAppTransfer::_from_problems
protectedinherited

◆ _from_transforms

std::vector<std::unique_ptr<MultiAppCoordTransform> > MultiAppTransfer::_from_transforms
protectedinherited

◆ _from_var_components

const std::vector<unsigned int> MultiAppGeneralFieldTransfer::_from_var_components
protected

Origin array/vector variable components.

Definition at line 211 of file MultiAppGeneralFieldTransfer.h.

Referenced by getFromVarName(), initialSetup(), and MultiAppGeneralFieldTransfer().

◆ _from_var_name

VariableName MultiAppConservativeTransfer::_from_var_name
protectedinherited

This values are used if a derived class only supports one variable.

Definition at line 45 of file MultiAppConservativeTransfer.h.

Referenced by MultiAppNearestNodeTransfer::execute(), MultiAppProjectionTransfer::execute(), and MultiAppGeometricInterpolationTransfer::execute().

◆ _from_var_names

const std::vector<VariableName> MultiAppConservativeTransfer::_from_var_names
protectedinherited

◆ _froms_per_proc

std::vector<unsigned int> MultiAppGeneralFieldTransfer::_froms_per_proc
private

Number of source/from applications per processor. This vector is indexed by processor id.

Definition at line 373 of file MultiAppGeneralFieldTransfer.h.

Referenced by extractLocalFromBoundingBoxes(), locatePointReceivers(), and prepareToTransfer().

◆ _global_app_start_per_proc

std::vector<unsigned int> MultiAppGeneralFieldTransfer::_global_app_start_per_proc
protected

First app each processor owns, indexed by processor If no app on the processor, will have a -1 for the app start instead.

Definition at line 277 of file MultiAppGeneralFieldTransfer.h.

Referenced by locatePointReceivers(), and prepareToTransfer().

◆ _greedy_search

bool MultiAppGeneralFieldTransfer::_greedy_search
protected

Whether or not a greedy strategy will be used If true, all the partitions will be checked for a given outgoing point.

Definition at line 282 of file MultiAppGeneralFieldTransfer.h.

Referenced by locatePointReceivers().

◆ _local_conflicts

std::vector<std::tuple<unsigned int, dof_id_type, Point, Real> > MultiAppGeneralFieldTransfer::_local_conflicts
private

Keeps track of all local equidistant points to requested points, creating an indetermination in which values should be sent for that request We keep the origin problem ID, the dof ID, the point, and the distance origin-target If using nearest-positions the origin problem ID is not set.

Definition at line 388 of file MultiAppGeneralFieldTransfer.h.

Referenced by examineLocalValueConflicts(), outputValueConflicts(), and registerConflict().

◆ _multi_app

std::shared_ptr<MultiApp> MultiAppTransfer::_multi_app
protectedinherited

◆ _name

const std::string& MooseBase::_name
protectedinherited

The name of this class.

Definition at line 391 of file MooseBase.h.

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

◆ _nearest_positions_obj

const Positions* MultiAppGeneralFieldTransfer::_nearest_positions_obj
protected

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 394 of file MooseBase.h.

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

◆ _pg_moose_app

MooseApp& PerfGraphInterface::_pg_moose_app
protectedinherited

The MooseApp that owns the PerfGraph.

Definition at line 135 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _post_transfer_extrapolation

const MooseEnum MultiAppGeneralFieldTransfer::_post_transfer_extrapolation
protected

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 138 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _preserve_transfer

bool MultiAppConservativeTransfer::_preserve_transfer
protectedinherited

If this transfer is going to conserve the physics.

Definition at line 49 of file MultiAppConservativeTransfer.h.

Referenced by MultiAppConservativeTransfer::initialSetup(), and MultiAppConservativeTransfer::postExecute().

◆ _processor_to_pointInfoVec

ProcessorToPointInfoVec MultiAppGeneralFieldTransfer::_processor_to_pointInfoVec
private

A map from processor to pointInfo vector.

Definition at line 382 of file MultiAppGeneralFieldTransfer.h.

Referenced by cacheOutgoingPointInfo(), extractOutgoingPoints(), and transferVariable().

◆ _received_conflicts

std::vector<std::tuple<unsigned int, dof_id_type, Point, Real> > MultiAppGeneralFieldTransfer::_received_conflicts
private

Keeps track of all received conflicts.

Multiple problems (different subapps for example) are sending values for a target point that do not match and are equally valid/distant We keep the target problem ID, the point/dof ID, the point, and the origin-target distance. The distance indicates whether a potential conflict ended up materializing

Definition at line 394 of file MultiAppGeneralFieldTransfer.h.

Referenced by examineReceivedValueConflicts(), outputValueConflicts(), and registerConflict().

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 234 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp(), and Restartable::registerRestartableNameWithFilterOnApp().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 243 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _restartable_system_name

const std::string Restartable::_restartable_system_name
protectedinherited

The system name this object is in.

Definition at line 237 of file Restartable.h.

Referenced by Restartable::restartableName().

◆ _restartable_tid

const THREAD_ID Restartable::_restartable_tid
protectedinherited

The thread ID for this object.

Definition at line 240 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _search_value_conflicts

bool MultiAppGeneralFieldTransfer::_search_value_conflicts
protected

◆ _search_value_conflicts_max_log

const unsigned int MultiAppGeneralFieldTransfer::_search_value_conflicts_max_log
protected

How many conflicts are output to console.

Definition at line 291 of file MultiAppGeneralFieldTransfer.h.

Referenced by outputValueConflicts().

◆ _skip_coordinate_collapsing

const bool MultiAppTransfer::_skip_coordinate_collapsing
protectedinherited

Whether to skip coordinate collapsing (transformations of coordinates between applications using different frames of reference)

Definition at line 166 of file MultiAppTransfer.h.

Referenced by acceptPointInOriginMesh(), closestToPosition(), MultiAppGeneralFieldKDTreeTransferBase::evaluateNearestNodeFromKDTrees(), MultiAppTransfer::getAppInfo(), MultiAppTransfer::mapBackWithoutCollapsing(), and outputValueConflicts().

◆ _source_app_must_contain_point

bool MultiAppGeneralFieldTransfer::_source_app_must_contain_point
protected

Whether the source app mesh must actually contain the points for them to be considered or whether the bounding box is enough.

If false, we can interpolate between apps

Definition at line 235 of file MultiAppGeneralFieldTransfer.h.

Referenced by acceptPointInOriginMesh(), MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource(), MultiAppGeneralFieldKDTreeTransferBase::MultiAppGeneralFieldKDTreeTransferBase(), MultiAppGeneralFieldTransfer(), and MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer().

◆ _subproblem

SubProblem& Transfer::_subproblem
protectedinherited

Definition at line 96 of file Transfer.h.

◆ _sys

SystemBase& Transfer::_sys
protectedinherited

Definition at line 98 of file Transfer.h.

◆ _tid

THREAD_ID Transfer::_tid
protectedinherited

◆ _to_blocks

std::set<SubdomainID> MultiAppGeneralFieldTransfer::_to_blocks
protected

Target block(s) restriction.

Definition at line 241 of file MultiAppGeneralFieldTransfer.h.

Referenced by extractOutgoingPoints(), initialSetup(), and setSolutionVectorValues().

◆ _to_boundaries

std::set<BoundaryID> MultiAppGeneralFieldTransfer::_to_boundaries
protected

Target boundary(ies) restriction.

Definition at line 244 of file MultiAppGeneralFieldTransfer.h.

Referenced by extractOutgoingPoints(), and initialSetup().

◆ _to_es

std::vector<libMesh::EquationSystems *> MultiAppTransfer::_to_es
protectedinherited

◆ _to_local2global_map

std::vector<unsigned int> MultiAppTransfer::_to_local2global_map
protectedinherited

◆ _to_mesh_division_behavior

const MooseEnum& MultiAppGeneralFieldTransfer::_to_mesh_division_behavior
protected

◆ _to_mesh_divisions

std::vector<const MeshDivision *> MultiAppGeneralFieldTransfer::_to_mesh_divisions
protected

◆ _to_meshes

std::vector<MooseMesh *> MultiAppTransfer::_to_meshes
protectedinherited

◆ _to_positions

std::vector<Point> MultiAppTransfer::_to_positions
protectedinherited

◆ _to_postprocessors_to_be_preserved

std::vector<PostprocessorName> MultiAppConservativeTransfer::_to_postprocessors_to_be_preserved
protectedinherited

Postprocessor evaluates an adjuster for the target physics.

Definition at line 53 of file MultiAppConservativeTransfer.h.

Referenced by MultiAppConservativeTransfer::initialSetup(), and MultiAppConservativeTransfer::postExecute().

◆ _to_problems

std::vector<FEProblemBase *> MultiAppTransfer::_to_problems
protectedinherited

◆ _to_transforms

std::vector<std::unique_ptr<MultiAppCoordTransform> > MultiAppTransfer::_to_transforms
protectedinherited

◆ _to_var_components

const std::vector<unsigned int> MultiAppGeneralFieldTransfer::_to_var_components
protected

Target array/vector variable components.

Definition at line 214 of file MultiAppGeneralFieldTransfer.h.

Referenced by getToVarName(), initialSetup(), and MultiAppGeneralFieldTransfer().

◆ _to_var_name

AuxVariableName MultiAppConservativeTransfer::_to_var_name
protectedinherited

◆ _to_var_names

const std::vector<AuxVariableName> MultiAppConservativeTransfer::_to_var_names
protectedinherited

◆ _to_variables

std::vector<MooseVariableFieldBase *> MultiAppGeneralFieldTransfer::_to_variables
private

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _use_bounding_boxes

const bool MultiAppGeneralFieldTransfer::_use_bounding_boxes
protected

Whether to use bounding boxes to determine the applications that may receive point requests then send value data, and at other various checks.

Definition at line 218 of file MultiAppGeneralFieldTransfer.h.

Referenced by acceptPointInOriginMesh(), locatePointReceivers(), MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldShapeEvaluationTransfer::prepareEvaluationOfInterpValues(), and MultiAppGeneralFieldUserObjectTransfer::prepareEvaluationOfInterpValues().

◆ _use_nearest_app

const bool MultiAppGeneralFieldTransfer::_use_nearest_app
protected

◆ _var_size

unsigned int MultiAppGeneralFieldTransfer::_var_size
private

The number of variables to transfer.

Definition at line 358 of file MultiAppGeneralFieldTransfer.h.

Referenced by execute(), MultiAppGeneralFieldTransfer(), and transferVariable().

◆ app_param

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

◆ 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_param

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

◆ OutOfMeshValue

const Number Transfer::OutOfMeshValue = -999999
staticinherited

◆ 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: