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)
 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
 
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...
 
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 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 mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning(). More...
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr) 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)
 External method for calling moose error with added object context. More...
 

Public Attributes

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

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...
 
virtual void prepareEvaluationOfInterpValues (const unsigned int var_index)=0
 
virtual void evaluateInterpValues (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 We use the fact that global app indexes are consecutive on a given rank. 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...
 
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<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 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 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 328 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 333 of file MultiAppGeneralFieldTransfer.h.

◆ InterpCaches

A vector of such caches, indexed by to_problem.

Definition at line 336 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 325 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 307 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 246 of file MultiAppGeneralFieldTransfer.h.

Constructor & Destructor Documentation

◆ MultiAppGeneralFieldTransfer()

MultiAppGeneralFieldTransfer::MultiAppGeneralFieldTransfer ( const InputParameters parameters)

Definition at line 159 of file MultiAppGeneralFieldTransfer.C.

161  _from_var_components(getParam<std::vector<unsigned int>>("source_variable_components")),
162  _to_var_components(getParam<std::vector<unsigned int>>("target_variable_components")),
163  _use_bounding_boxes(getParam<bool>("use_bounding_boxes")),
164  _use_nearest_app(getParam<bool>("use_nearest_app")),
166  isParamValid("use_nearest_position")
167  ? &_fe_problem.getPositionsObject(getParam<PositionsName>("use_nearest_position"))
168  : nullptr),
169  _source_app_must_contain_point(getParam<bool>("from_app_must_contain_point")),
170  _from_mesh_division_behavior(getParam<MooseEnum>("from_mesh_division_usage")),
171  _to_mesh_division_behavior(getParam<MooseEnum>("to_mesh_division_usage")),
173  getParam<MooseEnum>("elemental_boundary_restriction") == "sides"),
174  _greedy_search(getParam<bool>("greedy_search")),
175  _search_value_conflicts(getParam<bool>("search_value_conflicts")),
177  _search_value_conflicts_max_log(getParam<unsigned int>("value_conflicts_output")),
178  _error_on_miss(getParam<bool>("error_on_miss")),
179  _default_extrapolation_value(getParam<Real>("extrapolation_constant")),
180  _bbox_factor(getParam<Real>("bbox_factor")),
181  _fixed_bbox_size(isParamValid("fixed_bounding_box_size")
182  ? getParam<std::vector<Real>>("fixed_bounding_box_size")
183  : std::vector<Real>(3, 0))
184 {
185  _var_size = _to_var_names.size();
186  if (_to_var_names.size() != _from_var_names.size() && !parameters.isPrivate("source_variable"))
187  paramError("variable", "The number of variables to transfer to and from should be equal");
188 
189  // Check the parameters of the components of the array / vector variable
190  if (_from_var_names.size() != _from_var_components.size() && _from_var_components.size() > 0)
191  paramError("source_variable_components",
192  "This parameter must be equal to the number of source variables");
193  if (_to_var_names.size() != _to_var_components.size() && _to_var_components.size() > 0)
194  paramError("target_variable_components",
195  "This parameter must be equal to the number of target variables");
196 
197  // Make simple 'use_nearest_app' parameter rely on Positions
198  if (_use_nearest_app)
199  {
201  paramError("use_nearest_app", "Cannot use nearest-app and nearest-position together");
202  if (!hasFromMultiApp())
203  paramError("use_nearest_app",
204  "Should have a 'from_multiapp' when using the nearest-app informed search");
205  auto pos_params = _app.getFactory().getValidParams("MultiAppPositions");
206  pos_params.set<std::vector<MultiAppName>>("multiapps") = {getFromMultiApp()->name()};
207  _fe_problem.addReporter("MultiAppPositions", "_created_for_" + name(), pos_params);
209  }
210 
211  // Dont let users get wrecked by bounding boxes if it looks like they are trying to extrapolate
213  (_nearest_positions_obj || isParamSetByUser("from_app_must_contain_point")))
214  if (!isParamSetByUser("bbox_factor") && !isParamSetByUser("fixed_bounding_box_size"))
215  mooseWarning(
216  "Extrapolation (nearest-source options, outside-app source) parameters have "
217  "been passed, but no subapp bounding box expansion parameters have been passed.");
218 
219  if (!_use_bounding_boxes &&
220  (isParamValid("fixed_bounding_box_size") || isParamSetByUser("bbox_factor")))
221  paramError("use_bounding_boxes",
222  "Cannot pass additional bounding box parameters (sizes, expansion, etc) if we are "
223  "not using bounding boxes");
224 }
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:435
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:384
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:127
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:394
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:99
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:353
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.
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295
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:195
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:201
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 1551 of file MultiAppGeneralFieldTransfer.C.

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

1556 {
1557  if (_use_bounding_boxes && !local_bboxes[i_from].contains_point(pt))
1558  return false;
1559  else
1560  {
1561  auto * pl = _from_point_locators[i_from].get();
1562  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1563  const auto transformed_pt = _from_transforms[from_global_num]->mapBack(pt);
1564 
1565  // Check point against source block restriction
1566  if (!_from_blocks.empty() && !inBlocks(_from_blocks, pl, transformed_pt))
1567  return false;
1568 
1569  // Check point against source boundary restriction. Block restriction will speed up the search
1570  if (!_from_boundaries.empty() &&
1571  !onBoundaries(_from_boundaries, _from_blocks, *_from_meshes[i_from], pl, transformed_pt))
1572  return false;
1573 
1574  // Check point against the source mesh division
1575  if ((!_from_mesh_divisions.empty() || !_to_mesh_divisions.empty()) &&
1576  !acceptPointMeshDivision(transformed_pt, i_from, only_from_mesh_div))
1577  return false;
1578 
1579  // Get nearest position (often a subapp position) for the target point
1580  // We want values from the child app that is closest to the same position as the target
1581  Point nearest_position_source;
1583  {
1584  const bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1585  // The search for the nearest position is done in the reference frame
1586  const Point nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1587  nearest_position_source = _nearest_positions_obj->getNearestPosition(
1588  (*_from_transforms[from_global_num])(Point(0, 0, 0)), initial);
1589 
1591  _from_transforms[from_global_num]->hasNonTranslationTransformation())
1592  mooseError("Rotation and scaling currently unsupported with nearest positions transfer.");
1593 
1594  // Compute distance to nearest position and nearest position source
1595  const Real distance_to_position_nearest_source = (pt - nearest_position_source).norm();
1596  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1597 
1598  // Source (usually app position) is not closest to the same positions as the target, dont
1599  // send values. We check the distance instead of the positions because if they are the same
1600  // that means there's two equidistant positions and we would want to capture that as a "value
1601  // conflict"
1602  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_nearest_source,
1603  distance_to_nearest_position))
1604  return false;
1605 
1606  // Set the distance as the distance from the nearest position to the target point
1607  distance = distance_to_position_nearest_source;
1608  }
1609 
1610  // Check that the app actually contains the origin point
1611  // We dont need to check if we already found it in a block or a boundary
1612  if (_from_blocks.empty() && _from_boundaries.empty() && _source_app_must_contain_point &&
1613  !inMesh(pl, transformed_pt))
1614  return false;
1615  }
1616  return true;
1617 }
const Point & getNearestPosition(const Point &target, bool initial) const
Find the nearest Position for a given point.
Definition: Positions.C:88
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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...
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.
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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:267
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 1738 of file MultiAppGeneralFieldTransfer.C.

Referenced by acceptPointInOriginMesh().

1740 {
1741  // This routine can also be called to examine if the to_mesh_division index matches the current
1742  // source subapp index
1743  unsigned int source_mesh_div = MooseMeshDivision::INVALID_DIVISION_INDEX - 1;
1744  if (!_from_mesh_divisions.empty())
1745  source_mesh_div = _from_mesh_divisions[i_local]->divisionIndex(pt);
1746 
1747  // If the point is not indexed in the source division
1748  if (!_from_mesh_divisions.empty() && source_mesh_div == MooseMeshDivision::INVALID_DIVISION_INDEX)
1749  return false;
1750  // If the point is not the at the same index in the target and the origin meshes, reject
1751  else if ((_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
1752  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX) &&
1753  source_mesh_div != only_from_this_mesh_div)
1754  return false;
1755  // If the point is at a certain division index that is not the same as the index of the subapp
1756  // we wanted the information to be from for that point, reject
1757  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1758  source_mesh_div != only_from_this_mesh_div)
1759  return false;
1760  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1761  only_from_this_mesh_div != getGlobalSourceAppIndex(i_local))
1762  return false;
1763  else
1764  return true;
1765 }
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(), MultiAppPostprocessorTransfer::validParams(), MultiAppGeneralFieldUserObjectTransfer::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 1806 of file MultiAppGeneralFieldTransfer.C.

Referenced by locatePointReceivers().

1807 {
1808  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
1809 
1810  std::array<Point, 8> all_points;
1811  for (unsigned int x = 0; x < 2; x++)
1812  for (unsigned int y = 0; y < 2; y++)
1813  for (unsigned int z = 0; z < 2; z++)
1814  all_points[x + 2 * y + 4 * z] =
1815  Point(source_points[x](0), source_points[y](1), source_points[z](2));
1816 
1817  Real max_distance = 0.;
1818 
1819  for (unsigned int i = 0; i < 8; i++)
1820  {
1821  Real distance = (p - all_points[i]).norm();
1822  if (distance > max_distance)
1823  max_distance = distance;
1824  }
1825 
1826  return max_distance;
1827 }
Real distance(const Point &p)
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ 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 1830 of file MultiAppGeneralFieldTransfer.C.

Referenced by locatePointReceivers().

1831 {
1832  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
1833 
1834  std::array<Point, 8> all_points;
1835  for (unsigned int x = 0; x < 2; x++)
1836  for (unsigned int y = 0; y < 2; y++)
1837  for (unsigned int z = 0; z < 2; z++)
1838  all_points[x + 2 * y + 4 * z] =
1839  Point(source_points[x](0), source_points[y](1), source_points[z](2));
1840 
1841  Real min_distance = std::numeric_limits<Real>::max();
1842 
1843  for (unsigned int i = 0; i < 8; i++)
1844  {
1845  Real distance = (p - all_points[i]).norm();
1846  if (distance < min_distance)
1847  min_distance = distance;
1848  }
1849 
1850  return min_distance;
1851 }
Real distance(const Point &p)
auto max(const L &left, const R &right)
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

◆ 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 906 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

915 {
916  mooseAssert(pointInfoVec.size() == incoming_vals.size(),
917  "Number of dof objects does not equal to the number of incoming values");
918 
919  dof_id_type val_offset = 0;
920  for (const auto & pointinfo : pointInfoVec)
921  {
922  // Retrieve target information from cached point infos
923  const auto problem_id = pointinfo.problem_id;
924  const auto dof_object_id = pointinfo.dof_object_id;
925 
926  auto & fe_type = _to_variables[var_index]->feType();
927  bool is_nodal = _to_variables[var_index]->isNodal();
928 
929  // In the higher order elemental variable case, we receive point values, not nodal or
930  // elemental. We use an InterpCache to store the values. The distance_cache is necessary to
931  // choose between multiple origin problems sending values. This code could be unified with the
932  // lower order order case by using the dofobject_to_valsvec
933  if (fe_type.order > CONSTANT && !is_nodal)
934  {
935  // Cache solution on target mesh in its local frame of reference
936  InterpCache & value_cache = interp_caches[problem_id];
937  InterpCache & distance_cache = distance_caches[problem_id];
938  Point p = _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(
939  point_requests[val_offset].first);
940  const Number val = incoming_vals[val_offset].first;
941 
942  // Initialize distance to be able to compare
943  if (!distance_cache.hasKey(p))
944  distance_cache[p] = std::numeric_limits<Real>::max();
945 
946  // We should only have one closest value for each variable at any given point.
947  // While there are shared Qps, on vertices for higher order variables usually,
948  // the generic projector only queries each point once
950  value_cache.hasKey(p) != 0 && !MooseUtils::absoluteFuzzyEqual(value_cache[p], val) &&
951  MooseUtils::absoluteFuzzyEqual(distance_cache[p], incoming_vals[val_offset].second))
952  registerConflict(problem_id, dof_object_id, p, incoming_vals[val_offset].second, false);
953 
954  // if we use the nearest app, even if the value is bad we want to save the distance because
955  // it's the distance to the app, if that's the closest app then so be it with the bad value
957  MooseUtils::absoluteFuzzyGreaterThan(distance_cache[p], incoming_vals[val_offset].second))
958  {
959  // NOTE: We store the distance as well as the value. We really only need the
960  // value to construct the variable, but the distance is used to make decisions in nearest
961  // node schemes on which value to use
962  value_cache[p] = val;
963  distance_cache[p] = incoming_vals[val_offset].second;
964  }
965  }
966  else
967  {
968  // Using the dof object pointer, so we can handle
969  // both element and node using the same code
970 #ifndef NDEBUG
971  auto var_num = _to_variables[var_index]->number();
972  auto & to_sys = _to_variables[var_index]->sys();
973 
974  const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
975  const DofObject * dof_object_ptr = nullptr;
976  const auto sys_num = to_sys.number();
977  // It is a node
978  if (is_nodal)
979  dof_object_ptr = to_mesh.node_ptr(dof_object_id);
980  // It is an element
981  else
982  dof_object_ptr = to_mesh.elem_ptr(dof_object_id);
983 
984  // We should only be supporting nodal and constant elemental
985  // variables in this code path; if we see multiple DoFs on one
986  // object we should have been using GenericProjector
987  mooseAssert(dof_object_ptr->n_dofs(sys_num, var_num) == 1,
988  "Unexpectedly found " << dof_object_ptr->n_dofs(sys_num, var_num)
989  << "dofs instead of 1");
990 #endif
991 
992  auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
993 
994  // Check if we visited this dof object earlier
995  auto values_ptr = dofobject_to_val.find(dof_object_id);
996  // We did not visit this
997  if (values_ptr == dofobject_to_val.end())
998  {
999  // Values for this dof object
1000  auto & val = dofobject_to_val[dof_object_id];
1001  // Interpolation value
1002  val.interp = incoming_vals[val_offset].first;
1003  // Where this value came from
1004  val.pid = pid;
1005  // Distance
1006  val.distance = incoming_vals[val_offset].second;
1007  }
1008  else
1009  {
1010  auto & val = values_ptr->second;
1011 
1012  // Look for value conflicts
1013  if (detectConflict(val.interp,
1014  incoming_vals[val_offset].first,
1015  val.distance,
1016  incoming_vals[val_offset].second))
1017  {
1018  // Keep track of distance and value
1019  const Point p =
1020  getPointInTargetAppFrame(point_requests[val_offset].first,
1021  problem_id,
1022  "Registration of received equi-distant value conflict");
1023  registerConflict(problem_id, dof_object_id, p, incoming_vals[val_offset].second, false);
1024  }
1025 
1026  // We adopt values that are, in order of priority
1027  // - valid (or from nearest app)
1028  // - closest distance
1029  // - the smallest rank with the same distance
1030  // It is debatable whether we want invalid values from the nearest app. It could just be
1031  // that the app position was closer but the extent of another child app was large enough
1032  if ((!GeneralFieldTransfer::isBetterOutOfMeshValue(incoming_vals[val_offset].first) ||
1033  _use_nearest_app) &&
1034  (MooseUtils::absoluteFuzzyGreaterThan(val.distance, incoming_vals[val_offset].second) ||
1035  ((val.pid > pid) &&
1036  MooseUtils::absoluteFuzzyEqual(val.distance, incoming_vals[val_offset].second))))
1037  {
1038  val.interp = incoming_vals[val_offset].first;
1039  val.pid = pid;
1040  val.distance = incoming_vals[val_offset].second;
1041  }
1042  }
1043  }
1044 
1045  // Move it to next position
1046  val_offset++;
1047  }
1048 }
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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
bool absoluteFuzzyGreaterThan(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether a variable is greater than another variable within an absolute tolerance...
Definition: MooseUtils.h:428
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 707 of file MultiAppGeneralFieldTransfer.C.

Referenced by extractOutgoingPoints().

711 {
712  std::set<processor_id_type> processors;
713  // Find which processors will receive point data so they can send back value data
714  // The list can be larger than needed, depending on the heuristic / algorithm used to make
715  // the call on whether a processor (and the apps it runs) should be involved
716  processors.clear();
717  locatePointReceivers(point, processors);
718 
719  // We need to send this location data to these processors so they can send back values
720  for (const auto pid : processors)
721  {
722  // Select which from_mesh_division the source data must come from for this point
723  unsigned int required_source_division = 0;
724  if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
725  required_source_division = getGlobalTargetAppIndex(problem_id);
726  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
727  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
728  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
729  required_source_division = _to_mesh_divisions[problem_id]->divisionIndex(
730  _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(point));
731 
732  // Skip if we already know we don't want the point
733  if (required_source_division == MooseMeshDivision::INVALID_DIVISION_INDEX)
734  continue;
735 
736  // Store outgoing information for every source process
737  outgoing_points[pid].push_back(std::pair<Point, unsigned int>(point, required_source_division));
738 
739  // Store point information locally for processing received data
740  // We can use these information when inserting values into the solution vector
741  PointInfo pointinfo;
742  pointinfo.problem_id = problem_id;
743  pointinfo.dof_object_id = dof_object_id;
744  _processor_to_pointInfoVec[pid].push_back(pointinfo);
745  }
746 }
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
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

Definition at line 102 of file MooseBase.C.

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

105 {
106  callMooseError(&_app, _pars, msg, with_prefix, node);
107 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:102
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:353

◆ callMooseError() [2/2]

void MooseBase::callMooseError ( MooseApp *const  app,
const InputParameters params,
std::string  msg,
const bool  with_prefix,
const hit::Node *  node 
)
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

Definition at line 110 of file MooseBase.C.

115 {
116  if (!node)
117  node = MooseBase::getHitNode(params);
118 
119  std::string multiapp_prefix = "";
120  if (app)
121  {
122  if (!app->isUltimateMaster())
123  multiapp_prefix = app->name();
125  }
126 
127  if (with_prefix)
128  // False here because the hit context will get processed by the node
129  msg = messagePrefix(params, false) + msg;
130 
131  moose::internal::mooseErrorRaw(msg, multiapp_prefix, node);
132 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:813
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
void mooseErrorRaw(std::string msg, const std::string &prefix="", const hit::Node *node=nullptr)
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:132
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2442
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:252

◆ 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.
const ExecFlagEnum & getExecuteOnEnum() const
Return the execute on MultiMooseEnum for this object.
std::shared_ptr< MultiApp > _to_multi_app
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295

◆ 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 672 of file MultiAppTransfer.C.

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

673 {
674  // Source app is not the parent, most execution schedules are fine since the transfer occurs after
675  // the app has run NOTE: not true for siblings transfer
676  if (hasFromMultiApp())
677  return;
678  // Get user object from parent. We don't know the type
679  const auto & uo = _fe_problem.getUserObject<UserObject>(object_name);
680  // If we are executing on transfers, every additional schedule is not a problem
681  if (uo.getExecuteOnEnum().contains(EXEC_TRANSFER))
682  return;
683  // If we are transferring on the same schedule as we are executing, we are lagging. Is it on
684  // purpose? We don't know, so we will give a warning unless silenced.
685  // The derived-classes offer the parameter to silence this warning
686  // Note: UOs execute before transfers on INITIAL so it's not a problem at this time
687  if (uo.getExecuteOnEnum().contains(_fe_problem.getCurrentExecuteOnFlag()) &&
689  if (!isParamValid("warn_source_object_execution_schedule") ||
690  getParam<bool>("warn_source_object_execution_schedule"))
691  uo.paramWarning("execute_on",
692  "This UserObject-derived class is being executed on '" +
694  "' and also providing values for the '" + name() +
695  "' transfer, on that same execution schedule. Because user objects are "
696  "executed after transfers are, this means the values provided by this "
697  "user object are lagged. If you are ok with this, then set the "
698  "'warn_source_object_execution_schedule' parameter to false in this "
699  "Transfer. If not, then execute '" +
700  uo.name() +
701  "' on TRANSFER by adding it to the 'execute_on' vector parameter.");
702 }
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:99
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:195
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...
Definition: MooseBase.h:442
Base class for user-specific data.
Definition: UserObject.h:40
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:435
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:267

◆ 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 1768 of file MultiAppGeneralFieldTransfer.C.

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

1769 {
1770  mooseAssert(_nearest_positions_obj, "Should not be here without a positions object");
1772  paramError("skip_coordinate_collapsing", "Coordinate collapsing not implemented");
1773  bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1775  // Faster to just compare the index
1776  return pos_index == _nearest_positions_obj->getNearestPositionIndex(pt, initial);
1777  else
1778  {
1779  // Get the distance to the position and see if we are missing a value just because the position
1780  // is not officially the closest, but it is actually at the same distance
1781  const auto nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1782  const auto nearest_position_at_index = _nearest_positions_obj->getPosition(pos_index, initial);
1783  Real distance_to_position_at_index = (pt - nearest_position_at_index).norm();
1784  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1785 
1786  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_at_index,
1787  distance_to_nearest_position))
1788  return false;
1789  // Actually the same position (point)
1790  else if (nearest_position == nearest_position_at_index)
1791  return true;
1792  else
1793  {
1794  mooseWarning("Two equidistant positions ",
1795  nearest_position,
1796  " and ",
1797  nearest_position_at_index,
1798  " detected near point ",
1799  pt);
1800  return true;
1801  }
1802  }
1803 }
const Point & getNearestPosition(const Point &target, bool initial) const
Find the nearest Position for a given point.
Definition: Positions.C:88
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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:435
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
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...
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295
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 74 of file MooseBase.C.

78 {
79  auto & factory = _app.getFactory();
80  auto & ip_warehouse = _app.getInputParameterWarehouse();
81 
82  MooseObjectParameterName primary_name(uniqueName(), parameter);
83  const auto base_type = factory.getValidParams(object_type).getBase();
84  MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
85  ip_warehouse.addControllableParameterConnection(primary_name, secondary_name);
86 
87  const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
88  for (const auto & tag : tags)
89  {
90  if (!tag.empty())
91  {
92  // Only adds the parameter with the different control tags if the derived class
93  // properly registers the parameter to its own syntax
94  MooseObjectParameterName tagged_name(tag, name(), parameter);
95  ip_warehouse.addControllableParameterConnection(
96  tagged_name, secondary_name, /*error_on_empty=*/false);
97  }
98  }
99 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
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:2900
MooseObjectName uniqueName() const
Definition: MooseBase.C:66
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:394
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:353
A class for storing an input parameter name.

◆ 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 61 of file SetupInterface.h.

61 {}

◆ 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 276 of file Restartable.h.

279 {
280  auto & data_ptr =
281  declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...);
282  return Restartable::ManagedValue<T>(data_ptr);
283 }
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 351 of file Restartable.h.

352 {
353  const auto full_name = restartableName(data_name);
354 
356 
357  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
358 }
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:66
void registerRestartableNameWithFilterOnApp(const std::string &name, Moose::RESTARTABLE_FILTER filter)
Helper function for actually registering the restartable data.
Definition: Restartable.C:59

◆ 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 269 of file Restartable.h.

270 {
271  return declareRestartableDataWithContext<T>(data_name, nullptr, std::forward<Args>(args)...);
272 }

◆ 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 294 of file Restartable.h.

297 {
298  return declareRestartableDataHelper<T>(data_name, context, std::forward<Args>(args)...).set();
299 }

◆ 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 323 of file Restartable.h.

326 {
327  return declareRestartableDataWithObjectNameWithContext<T>(
328  data_name, object_name, nullptr, std::forward<Args>(args)...);
329 }

◆ 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 333 of file Restartable.h.

337 {
338  std::string old_name = _restartable_name;
339 
340  _restartable_name = object_name;
341 
342  T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
343 
344  _restartable_name = old_name;
345 
346  return value;
347 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:243
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 1986 of file MultiAppGeneralFieldTransfer.C.

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

1990 {
1991  // No conflict if we're not looking for them
1993  // Only consider conflicts if the values are valid and different
1994  if (current_value != GeneralFieldTransfer::BetterOutOfMeshValue &&
1996  !MooseUtils::absoluteFuzzyEqual(current_value, new_value))
1997  // Conflict only occurs if the origin points are equidistant
1998  if (MooseUtils::absoluteFuzzyEqual(current_distance, new_distance))
1999  return true;
2000  return false;
2001 }
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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 39 of file MooseObject.h.

Referenced by EigenKernel::enabled().

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

◆ 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 705 of file MultiAppTransfer.C.

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

706 {
707  // parent app is the source app, EXEC_TRANSFER is fine
708  if (!hasFromMultiApp())
709  return;
710  // Get the app and problem
711  const auto & app = getFromMultiApp();
712  if (!app->hasApp())
713  return;
714  const auto & problem = app->appProblemBase(app->firstLocalApp());
715  // Use the warehouse to find the object
716  std::vector<SetupInterface *> objects_with_exec_on;
717  problem.theWarehouse()
718  .query()
719  .template condition<AttribName>(object_name)
720  .template condition<AttribExecOns>(EXEC_TRANSFER)
721  .queryInto(objects_with_exec_on);
722  if (objects_with_exec_on.size())
723  mooseError("Object '" + object_name +
724  "' should not be executed on EXEC_TRANSFER, because this transfer has "
725  "indicated it does not support it.\nExecuting this object on TIMESTEP_END should be "
726  "sufficient to get updated values.");
727 }
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:267

◆ errorPrefix()

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

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

Definition at line 260 of file MooseBase.h.

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

◆ evaluateInterpValues()

virtual void MultiAppGeneralFieldTransfer::evaluateInterpValues ( 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 1115 of file MultiAppGeneralFieldTransfer.C.

Referenced by outputValueConflicts().

1119 {
1120  const auto var_name = getToVarName(var_index);
1121  // We must check a posteriori because we could have:
1122  // - two equidistant points with different values from two different problems
1123  // - two (or more) equidistant points with different values from the same problem
1124  // but a third point/value couple from another problem is actually closer, so there is no
1125  // conflict because only that last one matters. We check here whether the potential conflicts
1126  // actually were the nearest points. We use several global reductions. If there are not too many
1127  // potential conflicts (and there should not be in a well-posed problem) it should be manageably
1128  // expensive
1129 
1130  // Move relevant conflict info (location, distance) to a smaller data structure
1131  std::vector<std::tuple<Point, Real>> potential_conflicts;
1132  potential_conflicts.reserve(_local_conflicts.size());
1133 
1134  // Loop over potential conflicts to broadcast all the conflicts
1135  for (auto conflict_it = _local_conflicts.begin(); conflict_it != _local_conflicts.end();
1136  ++conflict_it)
1137  {
1138  // Extract info for the potential conflict
1139  const auto potential_conflict = *conflict_it;
1140  const unsigned int i_from = std::get<0>(potential_conflict);
1141  Point p = std::get<2>(potential_conflict);
1142  const Real distance = std::get<3>(potential_conflict);
1143  // If not using nearest-positions: potential conflict was saved in the source frame
1144  // If using nearest-positions: potential conflict was saved in the reference frame
1146  {
1147  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1148  p = (*_from_transforms[from_global_num])(p);
1149  }
1150 
1151  // Send data in the global frame of reference
1152  potential_conflicts.push_back(std::make_tuple(p, distance));
1153  }
1154  _communicator.allgather(potential_conflicts, false);
1155  // conflicts could have been reported multiple times within a tolerance
1156  std::sort(potential_conflicts.begin(), potential_conflicts.end());
1157  potential_conflicts.erase(unique(potential_conflicts.begin(),
1158  potential_conflicts.end(),
1159  [](auto l, auto r)
1160  {
1161  return std::get<0>(l).absolute_fuzzy_equals(std::get<0>(r)) &&
1162  std::abs(std::get<1>(l) - std::get<1>(r)) < TOLERANCE;
1163  }),
1164  potential_conflicts.end());
1165 
1166  std::vector<std::tuple<Point, Real>> real_conflicts;
1167  real_conflicts.reserve(potential_conflicts.size());
1168 
1169  // For each potential conflict, we need to identify what problem asked for that value
1170  for (auto conflict_it = potential_conflicts.begin(); conflict_it != potential_conflicts.end();
1171  ++conflict_it)
1172  {
1173  // Extract info for the potential conflict
1174  auto potential_conflict = *conflict_it;
1175  const Point p = std::get<0>(potential_conflict);
1176  const Real distance = std::get<1>(potential_conflict);
1177 
1178  // Check all the problems to try to find this requested point in the data structures filled
1179  // with the received information
1180  bool target_found = false;
1181  bool conflict_real = false;
1182  for (const auto i_to : index_range(_to_problems))
1183  {
1184  // Extract variable info
1186  System * to_sys = find_sys(es, var_name);
1187  auto var_num = to_sys->variable_number(var_name);
1188  auto & fe_type = to_sys->variable_type(var_num);
1189  bool is_nodal = _to_variables[var_index]->isNodal();
1190 
1191  // Move to the local frame of reference for the target problem
1192  Point local_p =
1193  getPointInTargetAppFrame(p, i_to, "Resolution of local value conflicts detected");
1194 
1195  // Higher order elemental
1196  if (fe_type.order > CONSTANT && !is_nodal)
1197  {
1198  // distance_caches finds use a binned floating point search
1199  auto cached_distance = distance_caches[i_to].find(local_p);
1200  if (cached_distance != distance_caches[i_to].end())
1201  {
1202  target_found = true;
1203  // Distance between source & target is still the distance we found in the sending
1204  // process when we detected a potential overlap while gathering values to send
1205  if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1206  conflict_real = true;
1207  }
1208  }
1209  // Nodal-value-dof-only and const monomial variable
1210  else
1211  {
1212  // Find the dof id for the variable to be set
1214  auto pl = _to_problems[i_to]->mesh().getPointLocator();
1215  pl->enable_out_of_mesh_mode();
1216  if (is_nodal)
1217  {
1218  auto node = pl->locate_node(local_p);
1219  if (node)
1220  // this is not the dof_id for the variable, but the dof_object_id
1221  dof_object_id = node->id();
1222  }
1223  else
1224  {
1225  auto elem = (*pl)(local_p);
1226  if (elem)
1227  dof_object_id = elem->id();
1228  }
1229  pl->disable_out_of_mesh_mode();
1230 
1231  // point isn't even in mesh
1232  if (dof_object_id == std::numeric_limits<dof_id_type>::max())
1233  continue;
1234 
1235  // this dof was not requested by this problem on this process
1236  if (dofobject_to_valsvec[i_to].find(dof_object_id) == dofobject_to_valsvec[i_to].end())
1237  continue;
1238 
1239  target_found = true;
1240  // Check the saved distance in the vector of saved results. If the same, then the local
1241  // conflict we detected with that distance is still an issue after receiving all values
1243  dofobject_to_valsvec[i_to].find(dof_object_id)->second.distance, distance))
1244  conflict_real = true;
1245  }
1246  }
1247  // Only keep the actual conflicts / overlaps
1248  if (target_found && conflict_real)
1249  real_conflicts.push_back(potential_conflict);
1250  }
1251 
1252  // Communicate real conflicts to all so they can be checked by every process
1253  _communicator.allgather(real_conflicts, false);
1254 
1255  // Delete potential conflicts that were resolved
1256  // Each local list of conflicts will now be updated. It's important to keep conflict lists local
1257  // so we can give more context like the sending processor id (the domain of which can be
1258  // inspected by the user)
1259  for (auto conflict_it = _local_conflicts.begin(); conflict_it != _local_conflicts.end();)
1260  {
1261  // Extract info for the potential conflict
1262  const auto potential_conflict = *conflict_it;
1263  const unsigned int i_from = std::get<0>(potential_conflict);
1264  Point p = std::get<2>(potential_conflict);
1265  const Real distance = std::get<3>(potential_conflict);
1267  {
1268  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1269  p = (*_from_transforms[from_global_num])(p);
1270  }
1271 
1272  // If not in the vector of real conflicts, was not real so delete it
1273  if (std::find_if(real_conflicts.begin(),
1274  real_conflicts.end(),
1275  [p, distance](const auto & item)
1276  {
1277  return std::get<0>(item).absolute_fuzzy_equals(p) &&
1278  std::abs(std::get<1>(item) - distance) < TOLERANCE;
1279  }) == real_conflicts.end())
1280  _local_conflicts.erase(conflict_it);
1281  else
1282  ++conflict_it;
1283  }
1284 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:42
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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 1062 of file MultiAppGeneralFieldTransfer.C.

Referenced by outputValueConflicts().

1066 {
1067  const auto var_name = getToVarName(var_index);
1068  // We must check a posteriori because we could have two
1069  // equidistant points with different values from two different problems, but a third point from
1070  // another problem is actually closer, so there is no conflict because only that last one
1071  // matters We check here whether the potential conflicts actually were the nearest points Loop
1072  // over potential conflicts
1073  for (auto conflict_it = _received_conflicts.begin(); conflict_it != _received_conflicts.end();)
1074  {
1075  const auto potential_conflict = *conflict_it;
1076  bool overlap_found = false;
1077 
1078  // Extract info for the potential conflict
1079  const unsigned int problem_id = std::get<0>(potential_conflict);
1080  const dof_id_type dof_object_id = std::get<1>(potential_conflict);
1081  const Point p = std::get<2>(potential_conflict);
1082  const Real distance = std::get<3>(potential_conflict);
1083 
1084  // Extract target variable info
1085  auto & es = getEquationSystem(*_to_problems[problem_id], _displaced_target_mesh);
1086  System * to_sys = find_sys(es, var_name);
1087  auto var_num = to_sys->variable_number(var_name);
1088  auto & fe_type = to_sys->variable_type(var_num);
1089  bool is_nodal = _to_variables[var_index]->isNodal();
1090 
1091  // Higher order elemental
1092  if (fe_type.order > CONSTANT && !is_nodal)
1093  {
1094  auto cached_distance = distance_caches[problem_id].find(p);
1095  if (cached_distance == distance_caches[problem_id].end())
1096  mooseError("Conflict point was not found in the map of all origin-target distances");
1097  // Distance is still the distance when we detected a potential overlap
1098  if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1099  overlap_found = true;
1100  }
1101  // Nodal and const monomial variable
1103  dofobject_to_valsvec[problem_id].find(dof_object_id)->second.distance, distance))
1104  overlap_found = true;
1105 
1106  // Map will only keep the actual overlaps
1107  if (!overlap_found)
1108  _received_conflicts.erase(conflict_it);
1109  else
1110  ++conflict_it;
1111  }
1112 }
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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:267
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 MultiAppGeneralFieldUserObjectTransfer.

Definition at line 459 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldUserObjectTransfer::execute().

460 {
461  TIME_SECTION(
462  "MultiAppGeneralFieldTransfer::execute()_" + name(), 5, "Transfer execution " + name());
463  getAppInfo();
464 
465  // Set up bounding boxes, etc
467 
468  // loop over the vector of variables and make the transfer one by one
469  for (const auto i : make_range(_var_size))
470  transferVariable(i);
471 
472  postExecute();
473 }
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:99
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 892 of file MultiAppGeneralFieldTransfer.C.

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

893 {
894  local_bboxes.resize(_froms_per_proc[processor_id()]);
895  // Find the index to the first of this processor's local bounding boxes.
896  unsigned int local_start = 0;
897  for (processor_id_type i_proc = 0; i_proc < n_processors() && i_proc != processor_id(); ++i_proc)
898  local_start += _froms_per_proc[i_proc];
899 
900  // Extract the local bounding boxes.
901  for (const auto i_from : make_range(_froms_per_proc[processor_id()]))
902  local_bboxes[i_from] = _from_bboxes[local_start + i_from];
903 }
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 749 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

751 {
752  // Get the variable name, with the accommodation for array/vector names
753  const auto & var_name = getToVarName(var_index);
754 
755  // Clean up the map from processor to pointInfo vector
756  // This map should be consistent with outgoing_points
758 
759  // Loop over all problems
760  for (const auto i_to : index_range(_to_problems))
761  {
762  const auto global_i_to = getGlobalTargetAppIndex(i_to);
763 
764  // libMesh EquationSystems
766  // libMesh system that has this variable
767  System * to_sys = find_sys(es, var_name);
768  auto sys_num = to_sys->number();
769  auto var_num = _to_variables[var_index]->number();
770  auto & fe_type = _to_variables[var_index]->feType();
771  bool is_nodal = _to_variables[var_index]->isNodal();
772 
773  // Moose mesh
774  const auto & to_moose_mesh = _to_problems[i_to]->mesh(_displaced_target_mesh);
775  const auto & to_mesh = to_moose_mesh.getMesh();
776 
777  // We support more general variables via libMesh GenericProjector
778  if (fe_type.order > CONSTANT && !is_nodal)
779  {
783  const std::vector<unsigned int> varvec(1, var_num);
784 
787  Number,
789  request_gather(*to_sys, f, &g, nullsetter, varvec);
790 
791  // Defining only boundary values will not be enough to describe the variable, disallow it
792  if (_to_boundaries.size() && (_to_variables[var_index]->getContinuity() == DISCONTINUOUS))
793  mooseError("Higher order discontinuous elemental variables are not supported for "
794  "target-boundary "
795  "restricted transfers");
796 
797  // Not implemented as the target mesh division could similarly be cutting elements in an
798  // arbitrary way with not enough requested points to describe the target variable
799  if (!_to_mesh_divisions.empty() && !_to_mesh_divisions[i_to]->coversEntireMesh())
800  mooseError("Higher order variable support not implemented for target mesh division "
801  "unless the mesh is fully covered / indexed in the mesh division. This must be "
802  "set programmatically in the MeshDivision object used.");
803 
804  // We dont look at boundary restriction, not supported for higher order target variables
805  // Same for mesh divisions
806  const auto & to_begin = _to_blocks.empty()
807  ? to_mesh.active_local_elements_begin()
808  : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
809 
810  const auto & to_end = _to_blocks.empty()
811  ? to_mesh.active_local_elements_end()
812  : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
813 
814  ConstElemRange to_elem_range(to_begin, to_end);
815 
816  request_gather.project(to_elem_range);
817 
818  dof_id_type point_id = 0;
819  for (const Point & p : f.points_requested())
820  // using the point number as a "dof_object_id" will serve to identify the point if we ever
821  // rework interp/distance_cache into the dof_id_to_value maps
823  (*_to_transforms[global_i_to])(p), point_id++, i_to, outgoing_points);
824 
825  // This is going to require more complicated transfer work
826  if (!g.points_requested().empty())
827  mooseError("We don't currently support variables with gradient degrees of freedom");
828  }
829  else if (is_nodal)
830  {
831  for (const auto & node : to_mesh.local_node_ptr_range())
832  {
833  // Skip this node if the variable has no dofs at it.
834  if (node->n_dofs(sys_num, var_num) < 1)
835  continue;
836 
837  // Skip if it is a block restricted transfer and current node does not have
838  // specified blocks
839  if (!_to_blocks.empty() && !inBlocks(_to_blocks, to_moose_mesh, node))
840  continue;
841 
842  if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, node))
843  continue;
844 
845  // Skip if the node does not meet the target mesh division behavior
846  // We cannot know from which app the data will come from so we cannot know
847  // the source mesh division index and the source app global index
848  if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*node) ==
850  continue;
851 
852  // Cache point information
853  // We will use this information later for setting values back to solution vectors
855  (*_to_transforms[global_i_to])(*node), node->id(), i_to, outgoing_points);
856  }
857  }
858  else // Elemental, constant monomial
859  {
860  for (const auto & elem :
861  as_range(to_mesh.local_elements_begin(), to_mesh.local_elements_end()))
862  {
863  // Skip this element if the variable has no dofs at it.
864  if (elem->n_dofs(sys_num, var_num) < 1)
865  continue;
866 
867  // Skip if the element is not inside the block restriction
868  if (!_to_blocks.empty() && !inBlocks(_to_blocks, elem))
869  continue;
870 
871  // Skip if the element does not have a side on the boundary
872  if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, elem))
873  continue;
874 
875  // Skip if the element is not indexed within the mesh division
876  if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*elem) ==
878  continue;
879 
880  // Cache point information
881  // We will use this information later for setting values back to solution vectors
882  cacheOutgoingPointInfo((*_to_transforms[global_i_to])(elem->vertex_average()),
883  elem->id(),
884  i_to,
885  outgoing_points);
886  } // for
887  } // else
888  } // for
889 }
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:267
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 examineLocalValueConflicts(), examineReceivedValueConflicts(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), extractOutgoingPoints(), setSolutionVectorValues(), and MultiAppShapeEvaluationTransfer::transferVariable().

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

◆ 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 443 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

444 {
446 
447  // Create the point locators to locate evaluation points in the origin mesh(es)
448  _from_point_locators.resize(_from_problems.size());
449  for (const auto i_from : index_range(_from_problems))
450  {
451  const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
452  _from_point_locators[i_from] =
453  PointLocatorBase::build(TREE_LOCAL_ELEMENTS, from_moose_mesh.getMesh());
454  _from_point_locators[i_from]->enable_out_of_mesh_mode();
455  }
456 }
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 143 of file MooseBase.h.

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

143 { return _pars.getBase(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
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 428 of file MooseBase.h.

429 {
430  return _pars.getCheckedPointerParam<T>(name, error_string);
431 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
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:99

◆ 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:384
void mooseDeprecated(Args &&... args) const
Definition: MooseBase.h:310
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
Definition: MooseBase.h:310
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:317
Context context
Context for the file (where it came from)
Definition: DataFileUtils.h:48
Representation of a data file path.
Definition: DataFileUtils.h:36
Path getPath(std::string path, const std::optional< std::string > &base=std::optional< std::string >())
Get the data path for a given path, searching the registered data.
Definition: DataFileUtils.C:22
std::optional< std::string > data_name
The name of the data registry the file came from (with context == DATA)
Definition: DataFileUtils.h:50
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition: Moose.h:294
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295
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:267
const ParallelParamObject & _parent

◆ 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(), 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:267

◆ 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:159
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 63 of file MultiAppTransfer.h.

Referenced by MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppMFEMCopyTransfer::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(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppConservativeTransfer::postExecute(), and MultiAppVariableValueSamplePostprocessorTransfer::setupPostprocessorCommunication().

64  {
65  if (!_from_multi_app)
66  mooseError(
67  "A from_multiapp was requested but is unavailable. Check the from_multi_app parameter");
68  else
69  return _from_multi_app;
70  }
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:267

◆ 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 86 of file MultiAppTransfer.h.

87  {
88  if (_from_multi_app)
89  return _from_multi_app->name();
90  else
91  return "Parent";
92  }
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)

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

Definition at line 1948 of file MultiAppGeneralFieldTransfer.C.

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

1949 {
1950  mooseAssert(var_index < _from_var_names.size(), "No source variable at this index");
1951  VariableName var_name = _from_var_names[var_index];
1952  if (_from_var_components.size())
1953  var_name += "_" + std::to_string(_from_var_components[var_index]);
1954  return var_name;
1955 }
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 1938 of file MultiAppGeneralFieldTransfer.C.

Referenced by prepareToTransfer().

1939 {
1940  std::vector<unsigned int> global_app_start_per_proc(1, -1);
1941  if (_from_local2global_map.size())
1942  global_app_start_per_proc[0] = _from_local2global_map[0];
1943  _communicator.allgather(global_app_start_per_proc, true);
1944  return global_app_start_per_proc;
1945 }
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 656 of file MultiAppTransfer.C.

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

657 {
658  mooseAssert(_current_direction == FROM_MULTIAPP || i_to < _to_local2global_map.size(),
659  "Out of bounds local to-app index");
661 }
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 132 of file MooseBase.h.

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

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

◆ 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 664 of file MultiAppTransfer.C.

665 {
667  ? 0
669 }
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 1968 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1969 {
1970  Point max_dimension = {std::numeric_limits<Real>::min(),
1973 
1974  for (const auto & to_mesh : _to_meshes)
1975  {
1976  const auto bbox = to_mesh->getInflatedProcessorBoundingBox();
1977  for (const auto dim : make_range(LIBMESH_DIM))
1978  max_dimension(dim) = std::max(
1979  max_dimension(dim), std::max(std::abs(bbox.first(dim)), std::abs(bbox.second(dim))));
1980  }
1981 
1982  return max_dimension;
1983 }
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition: EigenADReal.h:42
static constexpr std::size_t dim
This is the dimension of all vector and tensor datastructures used in MOOSE.
Definition: Moose.h:159
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 83 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(), MortarData::createMortarInterface(), EigenProblem::doFreeNonlinearPowerIterations(), Terminator::execute(), FEProblemSolve::FEProblemSolve(), SolutionInvalidInterface::flagInvalidSolutionInternal(), ChainControl::getChainControlDataSystem(), DefaultConvergenceBase::getSharedExecutionerParam(), 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().

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

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

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

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

385 {
386  return InputParameters::getParamHelper<T>(name, _pars);
387 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99

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

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

◆ 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 627 of file MultiAppTransfer.C.

Referenced by cacheIncomingInterpVals(), and examineLocalValueConflicts().

630 {
631  const auto & to_transform = _to_transforms[getGlobalTargetAppIndex(local_i_to)];
632  if (to_transform->hasCoordinateSystemTypeChange())
633  {
635  mooseInfo(phase + " cannot use the point in the target app frame due to the "
636  "non-uniqueness of the coordinate collapsing reverse mapping."
637  " Coordinate collapse is ignored for this operation");
638  to_transform->skipCoordinateCollapsing(true);
639  const auto target_point = to_transform->mapBack(p);
640  to_transform->skipCoordinateCollapsing(false);
641  return target_point;
642  }
643  else
644  return to_transform->mapBack(p);
645 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:317
std::vector< std::unique_ptr< MultiAppCoordTransform > > _to_transforms
const bool _skip_coordinate_collapsing
Whether to skip coordinate collapsing (transformations of coordinates between applications using diff...
unsigned int getGlobalTargetAppIndex(unsigned int i_to) const
Return the global app index from the local index in the "to-multiapp" transfer direction.

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

399 {
400  // Most important: accept new parameter
401  if (isParamSetByUser(new_name) && !isParamValid(old_name))
402  return getParam<T>(new_name);
403  // Second most: accept old parameter
404  if (isParamValid(old_name) && !isParamSetByUser(new_name))
405  return getParam<T>(old_name);
406  // Third most: accept default for new parameter
407  if (isParamValid(new_name) && !isParamValid(old_name))
408  return getParam<T>(new_name);
409  // Refuse: no default, no value passed
410  if (!isParamValid(old_name) && !isParamValid(new_name))
411  mooseError("parameter '" + new_name +
412  "' is being retrieved without being set.\nDid you misspell it?");
413  // Refuse: both old and new parameters set by user
414  else
415  mooseError("Parameter '" + new_name + "' may not be provided alongside former parameter '" +
416  old_name + "'");
417 }
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:267
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:195
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:201

◆ 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 287 of file Restartable.h.

288 {
289  return declareRestartableDataHelper<T>(data_name, nullptr).get();
290 }

◆ getRestrictedFromBoundingBoxes()

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

Get from bounding boxes for given domains and boundaries.

Definition at line 1854 of file MultiAppGeneralFieldTransfer.C.

Referenced by prepareToTransfer().

1855 {
1856  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
1857  const Real min_r = std::numeric_limits<Real>::lowest();
1858  const Real max_r = std::numeric_limits<Real>::max();
1859 
1860  for (const auto j : make_range(_from_meshes.size()))
1861  {
1862  Point min(max_r, max_r, max_r);
1863  Point max(min_r, min_r, min_r);
1864  bool at_least_one = false;
1865  const auto & from_mesh = _from_problems[j]->mesh(_displaced_source_mesh);
1866 
1867  for (const auto & elem : as_range(from_mesh.getMesh().local_elements_begin(),
1868  from_mesh.getMesh().local_elements_end()))
1869  {
1870  if (!_from_blocks.empty() && !inBlocks(_from_blocks, from_mesh, elem))
1871  continue;
1872 
1873  for (const auto & node : elem->node_ref_range())
1874  {
1875  if (!_from_boundaries.empty() && !onBoundaries(_from_boundaries, from_mesh, &node))
1876  continue;
1877 
1878  at_least_one = true;
1879  for (const auto i : make_range(LIBMESH_DIM))
1880  {
1881  min(i) = std::min(min(i), node(i));
1882  max(i) = std::max(max(i), node(i));
1883  }
1884  }
1885  }
1886 
1887  // For 2D RZ problems, we need to amend the bounding box to cover the whole XYZ projection
1888  // - The XYZ-Y axis is assumed aligned with the RZ-Z axis
1889  // - RZ systems also cover negative coordinates hence the use of the maximum R
1890  // NOTE: We will only support the case where there is only one coordinate system
1891  if ((from_mesh.getUniqueCoordSystem() == Moose::COORD_RZ) && (LIBMESH_DIM == 3))
1892  {
1893  min(0) = -max(0);
1894  min(2) = -max(0);
1895  max(2) = max(0);
1896  }
1897 
1898  BoundingBox bbox(min, max);
1899  if (!at_least_one)
1900  bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
1901  else
1902  {
1903  // Translate the bounding box to the from domain's position. We may have rotations so we
1904  // must be careful in constructing the new min and max (first and second)
1905  const auto from_global_num = getGlobalSourceAppIndex(j);
1906  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
1907  }
1908 
1909  // Cast the bounding box into a pair of points (so it can be put through
1910  // MPI communication).
1911  bb_points[j] = static_cast<std::pair<Point, Point>>(bbox);
1912  }
1913 
1914  // Serialize the bounding box points.
1915  _communicator.allgather(bb_points);
1916 
1917  // Recast the points back into bounding boxes and return.
1918  std::vector<BoundingBox> bboxes(bb_points.size());
1919  for (const auto i : make_range(bb_points.size()))
1920  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
1921 
1922  // TODO move up
1923  // Check for a user-set fixed bounding box size and modify the sizes as appropriate
1924  if (_fixed_bbox_size != std::vector<Real>(3, 0))
1925  for (const auto i : make_range(LIBMESH_DIM))
1927  for (const auto j : make_range(bboxes.size()))
1928  {
1929  const auto current_width = (bboxes[j].second - bboxes[j].first)(i);
1930  bboxes[j].first(i) -= (_fixed_bbox_size[i] - current_width) / 2;
1931  bboxes[j].second(i) += (_fixed_bbox_size[i] - current_width) / 2;
1932  }
1933 
1934  return bboxes;
1935 }
void allgather(const T &send_data, std::vector< T, A > &recv_data) const
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
Function to check whether two variables are equal within an absolute tolerance.
Definition: MooseUtils.h:380
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 61 of file MooseObject.C.

Referenced by MFEMProblem::addBoundaryCondition(), MFEMProblem::addKernel(), and MFEMProblem::addMFEMSolver().

62 {
63  try
64  {
65  return shared_from_this();
66  }
67  catch (std::bad_weak_ptr &)
68  {
69  mooseError(not_shared_error);
70  }
71 }
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:267

◆ getSharedPtr() [2/2]

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

Definition at line 74 of file MooseObject.C.

75 {
76  try
77  {
78  return shared_from_this();
79  }
80  catch (std::bad_weak_ptr &)
81  {
82  mooseError(not_shared_error);
83  }
84 }
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:267

◆ getToMultiApp()

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

Get the MultiApp to transfer data to.

Definition at line 73 of file MultiAppTransfer.h.

Referenced by MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorToAuxScalarTransfer::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorTransfer::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), MultiAppMFEMCopyTransfer::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(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), and MultiAppConservativeTransfer::postExecute().

74  {
75  if (!_to_multi_app)
76  mooseError(
77  "A to_multiapp was requested but is unavailable. Check the to_multi_app parameter");
78  else
79  return _to_multi_app;
80  }
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:267

◆ 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 98 of file MultiAppTransfer.h.

99  {
100  if (_to_multi_app)
101  return _to_multi_app->name();
102  else
103  return "Parent";
104  }
std::shared_ptr< MultiApp > _to_multi_app

◆ getToVarName()

VariableName MultiAppGeneralFieldTransfer::getToVarName ( unsigned int  var_index)

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

Definition at line 1958 of file MultiAppGeneralFieldTransfer.C.

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

1959 {
1960  mooseAssert(var_index < _to_var_names.size(), "No target variable at this index");
1961  VariableName var_name = _to_var_names[var_index];
1962  if (_to_var_components.size())
1963  var_name += "_" + std::to_string(_to_var_components[var_index]);
1964  return var_name;
1965 }
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 138 of file MooseBase.h.

138 { return _pars.hasBase(); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
bool hasBase() const

◆ hasFromMultiApp()

bool MultiAppTransfer::hasFromMultiApp ( ) const
inlineinherited

◆ hasToMultiApp()

bool MultiAppTransfer::hasToMultiApp ( ) const
inlineinherited

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

Definition at line 227 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldNearestLocationTransfer::initialSetup().

228 {
230 
231  // Use IDs for block and boundary restriction
232  // Loop over all source problems
233  for (const auto i_from : index_range(_from_problems))
234  {
235  const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
236  if (isParamValid("from_blocks"))
237  {
238  const auto & block_names = getParam<std::vector<SubdomainName>>("from_blocks");
239 
240  for (const auto & b : block_names)
241  if (!MooseMeshUtils::hasSubdomainName(from_moose_mesh.getMesh(), b))
242  paramError("from_blocks", "The block '", b, "' was not found in the mesh");
243 
244  if (!block_names.empty())
245  {
246  const auto ids = from_moose_mesh.getSubdomainIDs(block_names);
247  _from_blocks.insert(ids.begin(), ids.end());
248  }
249  }
250 
251  if (isParamValid("from_boundaries"))
252  {
253  const auto & boundary_names = getParam<std::vector<BoundaryName>>("from_boundaries");
254  for (const auto & bn : boundary_names)
255  if (!MooseMeshUtils::hasBoundaryName(from_moose_mesh.getMesh(), bn))
256  paramError("from_boundaries", "The boundary '", bn, "' was not found in the mesh");
257 
258  if (!boundary_names.empty())
259  {
260  const auto boundary_ids = from_moose_mesh.getBoundaryIDs(boundary_names);
261  _from_boundaries.insert(boundary_ids.begin(), boundary_ids.end());
262  }
263  }
264 
265  if (isParamValid("from_mesh_division"))
266  {
267  const auto & mesh_div_name = getParam<MeshDivisionName>("from_mesh_division");
268  _from_mesh_divisions.push_back(&_from_problems[i_from]->getMeshDivision(mesh_div_name));
269  // Check that the behavior set makes sense
270  if (_from_mesh_division_behavior == MeshDivisionTransferUse::RESTRICTION)
271  {
272  if (_from_mesh_divisions[i_from]->coversEntireMesh())
273  mooseInfo("'from_mesh_division_usage' is set to use a spatial restriction but the "
274  "'from_mesh_division' for source app of global index " +
275  std::to_string(getGlobalSourceAppIndex(i_from)) +
276  " covers the entire mesh. Do not expect any restriction from a mesh "
277  "division that covers the entire mesh");
278  }
279  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX &&
280  !isParamValid("to_mesh_division"))
281  paramError("to_mesh_division_usage",
282  "Source mesh division cannot match target mesh division if no target mesh "
283  "division is specified");
284  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
285  {
286  if (!hasToMultiApp())
287  paramError("from_mesh_division_usage",
288  "Cannot match source mesh division index to target subapp index if there is "
289  "only one target: the parent app (not a subapp)");
290  else if (getToMultiApp()->numGlobalApps() !=
291  _from_mesh_divisions[i_from]->getNumDivisions())
292  mooseWarning("Attempting to match target subapp index with the number of source mesh "
293  "divisions, which is " +
294  std::to_string(_from_mesh_divisions[i_from]->getNumDivisions()) +
295  " while there are " + std::to_string(getToMultiApp()->numGlobalApps()) +
296  " target subapps");
297  if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
298  // We do not support it because it would require sending the point + target app index +
299  // target app division index, and we only send the Point + one number
300  paramError("from_mesh_division_usage",
301  "We do not support using target subapp index for source division behavior and "
302  "matching the division index for the target mesh division behavior.");
303  }
304  else if (_from_mesh_division_behavior == "none")
305  paramError("from_mesh_division_usage", "User must specify a 'from_mesh_division_usage'");
306  }
307  else if (_from_mesh_division_behavior != "none")
308  paramError("from_mesh_division",
309  "'from_mesh_division' must be specified if the usage method is specified");
310  }
311 
312  // Loop over all target problems
313  for (const auto i_to : index_range(_to_problems))
314  {
315  const auto & to_moose_mesh = _to_problems[i_to]->mesh(_displaced_target_mesh);
316  if (isParamValid("to_blocks"))
317  {
318  const auto & block_names = getParam<std::vector<SubdomainName>>("to_blocks");
319  for (const auto & b : block_names)
320  if (!MooseMeshUtils::hasSubdomainName(to_moose_mesh.getMesh(), b))
321  paramError("to_blocks", "The block '", b, "' was not found in the mesh");
322 
323  if (!block_names.empty())
324  {
325  const auto ids = to_moose_mesh.getSubdomainIDs(block_names);
326  _to_blocks.insert(ids.begin(), ids.end());
327  }
328  }
329 
330  if (isParamValid("to_boundaries"))
331  {
332  const auto & boundary_names = getParam<std::vector<BoundaryName>>("to_boundaries");
333  for (const auto & bn : boundary_names)
334  if (!MooseMeshUtils::hasBoundaryName(to_moose_mesh.getMesh(), bn))
335  paramError("to_boundaries", "The boundary '", bn, "' was not found in the mesh");
336 
337  if (!boundary_names.empty())
338  {
339  const auto boundary_ids = to_moose_mesh.getBoundaryIDs(boundary_names);
340  _to_boundaries.insert(boundary_ids.begin(), boundary_ids.end());
341  }
342  }
343 
344  if (isParamValid("to_mesh_division"))
345  {
346  const auto & mesh_div_name = getParam<MeshDivisionName>("to_mesh_division");
347  _to_mesh_divisions.push_back(&_to_problems[i_to]->getMeshDivision(mesh_div_name));
348  // Check that the behavior set makes sense
349  if (_to_mesh_division_behavior == MeshDivisionTransferUse::RESTRICTION)
350  {
351  if (_to_mesh_divisions[i_to]->coversEntireMesh())
352  mooseInfo("'to_mesh_division_usage' is set to use a spatial restriction but the "
353  "'to_mesh_division' for target application of global index " +
354  std::to_string(getGlobalSourceAppIndex(i_to)) +
355  " covers the entire mesh. Do not expect any restriction from a mesh "
356  "division that covers the entire mesh");
357  }
358  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
359  {
360  if (!isParamValid("from_mesh_division"))
361  paramError("to_mesh_division_usage",
362  "Target mesh division cannot match source mesh division if no source mesh "
363  "division is specified");
364  else if ((*_from_mesh_divisions.begin())->getNumDivisions() !=
365  _to_mesh_divisions[i_to]->getNumDivisions())
366  mooseWarning("Source and target mesh divisions do not have the same number of bins. If "
367  "this is what you expect, please reach out to a MOOSE or app developer to "
368  "ensure appropriate use");
369  }
370  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
371  {
372  if (!hasFromMultiApp())
373  paramError(
374  "to_mesh_division_usage",
375  "Cannot match target mesh division index to source subapp index if there is only one "
376  "source: the parent app (not a subapp)");
377  else if (getFromMultiApp()->numGlobalApps() != _to_mesh_divisions[i_to]->getNumDivisions())
378  mooseWarning("Attempting to match source subapp index with the number of target mesh "
379  "divisions, which is " +
380  std::to_string(_to_mesh_divisions[i_to]->getNumDivisions()) +
381  " while there are " + std::to_string(getFromMultiApp()->numGlobalApps()) +
382  " source subapps");
383  if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX)
384  paramError(
385  "from_mesh_division_usage",
386  "We do not support using source subapp index for the target division behavior and "
387  "matching the division index for the source mesh division behavior.");
388  }
389  else if (_to_mesh_division_behavior == "none")
390  paramError("to_mesh_division_usage", "User must specify a 'to_mesh_division_usage'");
391  }
392  else if (_to_mesh_division_behavior != "none")
393  paramError("to_mesh_division",
394  "'to_mesh_division' must be specified if usage method '" +
395  Moose::stringify(_to_mesh_division_behavior) + "' is specified");
396  }
397 
398  // Check if components are set correctly if using an array variable
399  for (const auto i_from : index_range(_from_problems))
400  {
401  for (const auto var_index : make_range(_from_var_names.size()))
402  {
403  MooseVariableFieldBase & from_var =
404  _from_problems[i_from]->getVariable(0,
405  _from_var_names[var_index],
408  if (from_var.count() > 1 && _from_var_components.empty())
409  paramError("source_variable_components", "Component must be passed for an array variable");
410  if (_from_var_components.size() && from_var.count() < _from_var_components[var_index])
411  paramError("source_variable_components",
412  "Component passed is larger than size of variable");
413  }
414  }
415  for (const auto i_to : index_range(_to_problems))
416  {
417  for (const auto var_index : make_range(_to_var_names.size()))
418  {
419  MooseVariableFieldBase & to_var =
420  _to_problems[i_to]->getVariable(0,
421  _to_var_names[var_index],
424  if (to_var.count() > 1 && _to_var_components.empty())
425  paramError("target_variable_components", "Component must be passed for an array variable");
426  if (_to_var_components.size() && to_var.count() < _to_var_components[var_index])
427  paramError("target_variable_components",
428  "Component passed is larger than size of variable");
429  }
430  }
431 
432  // Cache some quantities to avoid having to get them on every transferred point
433  if (_to_problems.size())
434  {
435  _to_variables.resize(_to_var_names.size());
436  for (const auto i_var : index_range(_to_var_names))
437  _to_variables[i_var] = &_to_problems[0]->getVariable(
439  }
440 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:317
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:435
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...
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.
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295
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:195
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 1620 of file MultiAppGeneralFieldTransfer.C.

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

1621 {
1622  // Note: we do not take advantage of a potential block restriction of the mesh here. This is
1623  // because we can avoid this routine by calling inBlocks() instead
1624  const Elem * elem = (*pl)(point);
1625  return (elem != nullptr);
1626 }

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

Referenced by SetupDebugAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), MFEMMesh::buildMesh(), MFEMDomainSubMesh::buildSubMesh(), LibtorchNeuralNetControl::conditionalParameterError(), MooseApp::copyInputs(), DiffusionPhysicsBase::DiffusionPhysicsBase(), MooseApp::errorCheck(), MooseBase::getRenamedParam(), DefaultConvergenceBase::getSharedExecutionerParam(), AddVariableAction::init(), PhysicsBase::initializePhysics(), ElementSubdomainModifierBase::initialSetup(), MatrixSymmetryCheck::MatrixSymmetryCheck(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MultiAppGeneralFieldTransfer(), SolutionInvalidityOutput::output(), Output::Output(), outputValueConflicts(), PetscExternalPartitioner::partition(), PiecewiseTabularBase::PiecewiseTabularBase(), MooseMesh::prepare(), SolutionUserObjectBase::readXda(), PhysicsBase::reportPotentiallyMissedParameters(), MooseApp::runInputFile(), MooseApp::runInputs(), MFEMSolverBase::setPreconditioner(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), TagVectorAux::TagVectorAux(), TimedSubdomainModifier::TimedSubdomainModifier(), and XYDelaunayGenerator::XYDelaunayGenerator().

202  {
203  return _pars.isParamSetByUser(name);
204  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
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 195 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), CopyNodalVarsAction::act(), SetupMeshAction::act(), SetupDebugAction::act(), ComposeTimeStepperAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::act(), AddVariableAction::act(), CommonOutputAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVBCs(), DiffusionFV::addFVKernels(), DiffusionPhysicsBase::addInitialConditions(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), DiffusionPhysicsBase::addPostprocessors(), AdvectiveFluxAux::AdvectiveFluxAux(), ArrayHFEMDirichletBC::ArrayHFEMDirichletBC(), ArrayVarReductionAux::ArrayVarReductionAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromJSON(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinerGenerator::CombinerGenerator(), FunctorAux::computeValue(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), FEProblemSolve::convergenceSetup(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValue(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), 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(), FileMeshGenerator::generate(), AddMetaDataGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), BlockDeletionGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), MeshExtruderGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYZDelaunayGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), SubdomainBoundingBoxGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), PropertyReadFile::getFileNames(), MultiAppNearestNodeTransfer::getLocalEntitiesAndComponents(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBase::getRenamedParam(), MultiAppNearestNodeTransfer::getTargetLocalNodes(), Terminator::handleMessage(), HFEMDirichletBC::HFEMDirichletBC(), EigenExecutionerBase::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AdvancedOutput::initExecutionTypes(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), MultiAppVariableValueSampleTransfer::initialSetup(), PiecewiseTabularBase::initialSetup(), ParsedConvergence::initialSetup(), SolutionScalarAux::initialSetup(), SolutionAux::initialSetup(), Console::initialSetup(), MooseParsedVectorFunction::initialSetup(), initialSetup(), MooseParsedGradFunction::initialSetup(), MooseParsedFunction::initialSetup(), SampledOutput::initSample(), IterationAdaptiveDT::IterationAdaptiveDT(), LeastSquaresFit::LeastSquaresFit(), LibmeshPartitioner::LibmeshPartitioner(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MassMatrix::MassMatrix(), MatCoupledForce::MatCoupledForce(), MatDiffusionBase< Real >::MatDiffusionBase(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMProblemSolve::MFEMProblemSolve(), MooseMesh::MooseMesh(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableFV< Real >::MooseVariableFV(), MortarConstraintBase::MortarConstraintBase(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer(), MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppPostprocessorInterpolationTransfer::MultiAppPostprocessorInterpolationTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppReporterTransfer::MultiAppReporterTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSampleTransfer::MultiAppVariableValueSampleTransfer(), MultiSystemSolveObject::MultiSystemSolveObject(), NodeSetsGeneratorBase::NodeSetsGeneratorBase(), EigenExecutionerBase::normalizeSolution(), Output::Output(), outputValueConflicts(), ParsedCurveGenerator::ParsedCurveGenerator(), PetscOutput::PetscOutput(), PhysicsBasedPreconditioner::PhysicsBasedPreconditioner(), PIDTransientControl::PIDTransientControl(), PiecewiseTabularBase::PiecewiseTabularBase(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), MooseMesh::prepare(), MooseBase::queryParam(), MultiApp::readCommandLineArguments(), SolutionUserObjectBase::readExodusII(), ReferenceResidualInterface::ReferenceResidualInterface(), RenameBlockGenerator::RenameBlockGenerator(), ReporterPointSource::ReporterPointSource(), PhysicsBase::reportPotentiallyMissedParameters(), ParsedSubdomainMeshGenerator::setBlockName(), MooseMesh::setCoordSystem(), FileOutput::setFileBase(), FileOutput::setFileBaseInternal(), Split::setup(), SideSetsGeneratorBase::setup(), SetupMeshAction::setupMesh(), MooseApp::setupOptions(), Output::setWallTimeIntervalFromCommandLineParam(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), WebServerControl::startServer(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), TransientBase::TransientBase(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

195 { return _pars.isParamValid(name); }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
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 578 of file MultiAppGeneralFieldTransfer.C.

Referenced by cacheOutgoingPointInfo().

580 {
581  // Check which processors have apps that may include or be near this point
582  // A point may be close enough to several problems, hosted on several processes
583  bool found = false;
584 
585  // Additional process-restriction techniques we could use (TODOs):
586  // - create a heuristic for using nearest-positions
587  // - from_mesh_divisions could be polled for which divisions they possess on each
588  // process, depending on the behavior chosen. This could limit potential senders.
589  // This should be done ahead of this function call, for all points at once
590 
591  // Determine the apps which will be receiving points (then sending values) using various
592  // heuristics
593  if (_use_nearest_app)
594  {
595  // Find the nearest position for the point
596  const bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
597  // The apps form the nearest positions here, this is the index of the nearest app
598  const auto nearest_index = _nearest_positions_obj->getNearestPositionIndex(point, initial);
599 
600  // Find the apps that are nearest to the same position
601  // Global search over all applications
602  for (processor_id_type i_proc = 0; i_proc < n_processors(); ++i_proc)
603  {
604  // We need i_from to correspond to the global app index
605  unsigned int from0 = _global_app_start_per_proc[i_proc];
606  for (unsigned int i_from = from0; i_from < from0 + _froms_per_proc[i_proc]; ++i_from)
607  {
608  if (_greedy_search || _search_value_conflicts || i_from == nearest_index)
609  {
610  processors.insert(i_proc);
611  found = true;
612  }
613  mooseAssert(i_from < getFromMultiApp()->numGlobalApps(), "We should not reach this");
614  }
615  }
616  mooseAssert((getFromMultiApp()->numGlobalApps() < n_processors() || processors.size() == 1) ||
618  "Should only be one source processor when using more processors than source apps");
619  }
620  else if (_use_bounding_boxes)
621  {
622  // We examine all (global) bounding boxes and find the minimum of the maximum distances within a
623  // bounding box from the point. This creates a sphere around the point of interest. Any app
624  // with a bounding box that intersects this sphere (with a bboxMinDistance <
625  // nearest_max_distance) will be considered a potential source
626  // NOTE: This is a heuristic. We could try others
627  // NOTE: from_bboxes are in the reference space, as is the point.
628  Real nearest_max_distance = std::numeric_limits<Real>::max();
629  for (const auto & bbox : _from_bboxes)
630  {
632  if (distance < nearest_max_distance)
633  nearest_max_distance = distance;
634  }
635 
636  unsigned int from0 = 0;
637  for (processor_id_type i_proc = 0; i_proc < n_processors();
638  from0 += _froms_per_proc[i_proc], ++i_proc)
639  // i_from here is a hybrid index based on the cumulative sum of the apps per processor
640  for (unsigned int i_from = from0; i_from < from0 + _froms_per_proc[i_proc]; ++i_from)
641  {
643  // We will not break here because we want to send a point to all possible source domains
644  if (_greedy_search || distance <= nearest_max_distance ||
645  _from_bboxes[i_from].contains_point(point))
646  {
647  processors.insert(i_proc);
648  found = true;
649  }
650  }
651  }
652  // Greedy search will contact every single processor. It's not scalable, but if there's valid data
653  // on any subapp on any process, it will find it
654  else if (_greedy_search)
655  {
656  found = true;
657  for (const auto i_proc : make_range(n_processors()))
658  processors.insert(i_proc);
659  }
660  // Since we indicated that we only wanted values from a subapp with the same global index as the
661  // target mesh division, we might as well only communicate with the process that owns this app
662  else if (!_to_mesh_divisions.empty() &&
663  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
664  {
665  // The target point could have a different index in each target mesh division. So on paper, we
666  // would need to check all of them.
667  auto saved_target_div = MooseMeshDivision::INVALID_DIVISION_INDEX;
668  for (const auto i_to : index_range(_to_meshes))
669  {
670  const auto target_div = _to_mesh_divisions[i_to]->divisionIndex(
671  _to_transforms[getGlobalTargetAppIndex(i_to)]->mapBack(point));
672  // If it's the same division index, do not redo the search
673  if (target_div == saved_target_div)
674  continue;
675  else
676  saved_target_div = target_div;
677 
678  // Look for the processors owning a source-app with an index equal to the target mesh division
679  for (const auto i_proc : make_range(n_processors()))
680  for (const auto i_from : make_range(_froms_per_proc[i_proc]))
681  if (target_div == _global_app_start_per_proc[i_proc] + i_from)
682  {
683  processors.insert(i_proc);
684  found = true;
685  }
686  }
687  }
688  else
689  mooseError("No algorithm were selected to find which processes may send value data "
690  "for a each target point. Please either specify using bounding boxes, "
691  "greedy search, or to_mesh_division-based parameters");
692 
693  // Error out if we could not find this point when ask us to do so
694  if (!found && _error_on_miss)
695  mooseError(
696  "Cannot find a source application to provide a value at point: ",
697  point,
698  " \n ",
699  "It must be that mismatched meshes, between the source and target application, are being "
700  "used.\nIf you are using the bounding boxes or nearest-app heuristics, or mesh-divisions, "
701  "please consider using the greedy_search to confirm. Then consider choosing a different "
702  "transfer type.\nThis check can be turned off by setting 'error_on_miss' to false. The "
703  "'extrapolation_constant' parameter will be used to set the local value at missed points.");
704 }
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:267
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 252 of file MooseBase.h.

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

253  {
254  return messagePrefix(_pars, hit_prefix);
255  }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
std::string messagePrefix(const bool hit_prefix=true) const
Definition: MooseBase.h:252

◆ mooseDeprecated()

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

Definition at line 310 of file MooseBase.h.

Referenced by FEProblemBase::addAuxArrayVariable(), FEProblemBase::addAuxScalarVariable(), FEProblemBase::addAuxVariable(), FEProblemBase::advanceMultiApps(), MultiApp::appProblem(), MooseMesh::buildSideList(), ChangeOverTimestepPostprocessor::ChangeOverTimestepPostprocessor(), AddVariableAction::determineType(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), MooseMesh::elem(), UserForcingFunction::f(), FaceFaceConstraint::FaceFaceConstraint(), FunctionDT::FunctionDT(), RandomICBase::generateRandom(), MooseMesh::getBoundariesToElems(), DataFileInterface::getDataFileName(), DataFileInterface::getDataFileNameByName(), Control::getExecuteOptions(), FEProblemBase::getNonlinearSystem(), MooseApp::getRecoverFileBase(), FEProblemBase::getUserObjects(), FEProblemBase::hasPostprocessor(), MooseApp::hasRecoverFileBase(), MatDiffusionBase< Real >::MatDiffusionBase(), MultiAppNearestNodeTransfer::MultiAppNearestNodeTransfer(), MultiAppShapeEvaluationTransfer::MultiAppShapeEvaluationTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), NodalScalarKernel::NodalScalarKernel(), MooseMesh::node(), FixedPointSolve::numPicardIts(), RelationshipManager::operator>=(), PercentChangePostprocessor::PercentChangePostprocessor(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Residual::Residual(), MooseMesh::setBoundaryToNormalMap(), Exodus::setOutputDimension(), MooseApp::setupOptions(), TagVectorAux::TagVectorAux(), UserForcingFunction::UserForcingFunction(), and VariableResidual::VariableResidual().

311  {
313  _console, false, true, messagePrefix(true), std::forward<Args>(args)...);
314  }
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, Args &&... args)
Definition: MooseError.h:265
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:252

◆ mooseDocumentedError()

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

Definition at line 273 of file MooseBase.h.

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

276  {
278  repo_name, issue_num, argumentsToString(std::forward<Args>(args)...)),
279  /* with_prefix = */ true);
280  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:102
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition: MooseError.C:128

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

Referenced by CopyMeshPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), acceptPointInOriginMesh(), AddBoundsVectorsAction::act(), AddFVICAction::act(), AutoCheckpointAction::act(), CreateExecutionerAction::act(), CheckFVBCAction::act(), InitProblemAction::act(), SetupMeshCompleteAction::act(), AddVectorPostprocessorAction::act(), AddICAction::act(), AddMeshGeneratorAction::act(), CheckIntegrityAction::act(), CreateProblemDefaultAction::act(), CreateProblemAction::act(), CombineComponentsMeshes::act(), SetupMeshAction::act(), SplitMeshAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), ChainControlSetupAction::act(), DeprecatedBlockAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), CreateDisplacedProblemAction::act(), MaterialDerivativeTestAction::act(), SetAdaptivityOptionsAction::act(), MaterialOutputAction::act(), AddMFEMSubMeshAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), Action::Action(), FEProblemBase::adaptMesh(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), MooseVariableFV< Real >::adCurlSln(), MooseVariableFV< Real >::adCurlSlnNeighbor(), AddActionComponentAction::AddActionComponentAction(), MFEMProblem::addBoundaryCondition(), FEProblemBase::addBoundaryCondition(), DiffusionCG::addBoundaryConditionsFromComponents(), PhysicsComponentInterface::addBoundaryConditionsFromComponents(), 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(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), SubProblem::addPiecewiseByBlockLambdaFunctor(), DiracKernelBase::addPoint(), DistributedRectilinearMeshGenerator::addPoint(), DiracKernelBase::addPointWithValidId(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), MooseMesh::addQuadratureNode(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addScalarKernel(), AddVariableAction::addVariable(), FEProblemBase::addVectorPostprocessor(), SubProblem::addVectorTag(), MooseLinearVariableFV< Real >::adError(), ADInterfaceKernelTempl< T >::ADInterfaceKernelTempl(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), MooseVariableScalar::adUDot(), Output::advancedExecuteOn(), AdvectiveFluxAux::AdvectiveFluxAux(), MooseVariableBase::allDofIndices(), NEML2ModelExecutor::applyPredictor(), MooseApp::appNameToLibName(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayConstantIC::ArrayConstantIC(), ArrayDGKernel::ArrayDGKernel(), ArrayDiffusion::ArrayDiffusion(), ArrayFunctionIC::ArrayFunctionIC(), ArrayReaction::ArrayReaction(), ArrayTimeDerivative::ArrayTimeDerivative(), MooseApp::attachRelationshipManagers(), AddPeriodicBCAction::autoTranslationBoundaries(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), Axisymmetric2D3DSolutionFunction::Axisymmetric2D3DSolutionFunction(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), BoundingValueElementDamper::BoundingValueElementDamper(), BoundingValueNodalDamper::BoundingValueNodalDamper(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), MooseMesh::buildCoarseningMap(), MultiApp::buildComm(), DistributedRectilinearMeshGenerator::buildCube(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromJSON(), TimedSubdomainModifier::buildFromParameters(), PiecewiseTabularBase::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), MooseMesh::buildLowerDMesh(), TiledMesh::buildMesh(), GeneratedMesh::buildMesh(), SpiralAnnularMesh::buildMesh(), MeshGeneratorMesh::buildMesh(), ImageMeshGenerator::buildMesh3D(), ImageMesh::buildMesh3D(), MooseMesh::buildRefinementMap(), MaterialBase::buildRequiredMaterials(), MooseMesh::buildSideList(), 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(), FEProblemBase::checkProblemIntegrity(), Sampler::checkReinitStatus(), MooseApp::checkReservedCapability(), MultiAppGeneralFieldNearestLocationTransfer::checkRestrictionsForSource(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::checkSiblingsTransferSupported(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), FEProblemBase::checkUserObjects(), Moose::PetscSupport::checkUserProvidedPetscOption(), DomainUserObject::checkVariable(), MultiAppTransfer::checkVariable(), MeshDiagnosticsGenerator::checkWatertightNodesets(), MeshDiagnosticsGenerator::checkWatertightSidesets(), LibmeshPartitioner::clone(), MooseMesh::clone(), CombinerGenerator::CombinerGenerator(), ComparisonPostprocessor::comparisonIsTrue(), MooseVariableFieldBase::componentName(), CompositeFunction::CompositeFunction(), ElementH1ErrorFunctionAux::compute(), NodalPatchRecovery::compute(), FEProblemBase::computeBounds(), VariableCondensationPreconditioner::computeDInverseDiag(), CompositionDT::computeDT(), ArrayDGKernel::computeElemNeighJacobian(), ArrayDGKernel::computeElemNeighResidual(), 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(), MortarScalarBase::computeOffDiagJacobianScalar(), DGLowerDKernel::computeOffDiagLowerDJacobian(), ArrayDGLowerDKernel::computeOffDiagLowerDJacobian(), MaterialBase::computeProperties(), SideFVFluxBCIntegral::computeQpIntegral(), ScalarKernel::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), NodalEqualValueConstraint::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), NodeElemConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), ScalarKernel::computeQpResidual(), MassMatrix::computeQpResidual(), HDGKernel::computeQpResidual(), DiffusionLHDGDirichletBC::computeQpResidual(), NodalEqualValueConstraint::computeQpResidual(), DiffusionLHDGPrescribedGradientBC::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(), TimeStepper::constrainStep(), LibtorchNeuralNetControl::controlNeuralNet(), TransientBase::convergedToSteadyState(), ParsedConvergence::convertRealToBool(), MooseApp::copyInputs(), CopyMeshPartitioner::CopyMeshPartitioner(), CoupledForceNodalKernel::CoupledForceNodalKernel(), MultiApp::createApp(), MooseApp::createExecutors(), AddVariableAction::createInitialConditionAction(), MooseApp::createRMFromTemplateAndInit(), Function::curl(), MooseVariableFV< Real >::curlPhi(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), SidesetInfoVectorPostprocessor::dataHelper(), ReporterTransferInterface::declareClone(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), DefaultSteadyStateConvergence::DefaultSteadyStateConvergence(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), BicubicSplineFunction::derivative(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), 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(), Eigenvalue::Eigenvalue(), 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(), DiscreteElementUserObject::execute(), RestartableDataReporter::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), NodalValueSampler::execute(), PositionsFunctorValueSampler::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), ElementQualityChecker::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), FindValueOnLine::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppMFEMCopyTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppUserObjectTransfer::execute(), InterfaceQpUserObjectBase::execute(), WebServerControl::execute(), TransientBase::execute(), LeastSquaresFit::execute(), VectorPostprocessorComparison::execute(), LeastSquaresFitHistory::execute(), Eigenvalue::execute(), TimeExtremeValue::execute(), DomainUserObject::execute(), FEProblemBase::execute(), FEProblemBase::executeControls(), MooseApp::executeExecutioner(), MultiAppVectorPostprocessorTransfer::executeFromMultiapp(), MultiAppVectorPostprocessorTransfer::executeToMultiapp(), Exodus::Exodus(), ExplicitSSPRungeKutta::ExplicitSSPRungeKutta(), extractOutgoingPoints(), NEML2ModelExecutor::extractOutputs(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemSolve::FEProblemSolve(), FileOutput::FileOutput(), NEML2ModelExecutor::fillInputs(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), MultiAppGeometricInterpolationTransfer::fillSourceInterpolationPoints(), VerifyNodalUniqueID::finalize(), VerifyElementUniqueID::finalize(), DiscreteElementUserObject::finalize(), ElementQualityChecker::finalize(), MemoryUsage::finalize(), PointSamplerBase::finalize(), DiscreteVariableResidualNorm::finalize(), NearestPointAverage::finalize(), NearestPointIntegralVariablePostprocessor::finalize(), MooseApp::finalizeRestore(), Transfer::find_sys(), BreakMeshByBlockGeneratorBase::findFreeBoundaryId(), FunctionDT::FunctionDT(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FunctionScalarAux::FunctionScalarAux(), FunctionScalarIC::FunctionScalarIC(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVInitialConditionTempl< T >::FVInitialConditionTempl(), FVMassMatrix::FVMassMatrix(), FVMatAdvection::FVMatAdvection(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), GapValueAux::GapValueAux(), WorkBalance::gather(), ElementSubdomainModifierBase::gatherPatchElements(), Boundary2DDelaunayGenerator::General2DDelaunay(), ElementOrderConversionGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), SideSetsFromNormalsGenerator::generate(), SmoothMeshGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), SideSetsFromPointsGenerator::generate(), StitchMeshGenerator::generate(), GeneratedMeshGenerator::generate(), FlipSidesetGenerator::generate(), MeshDiagnosticsGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), MeshRepairGenerator::generate(), SideSetsFromBoundingBoxGenerator::generate(), StackGenerator::generate(), XYZDelaunayGenerator::generate(), MeshCollectionGenerator::generate(), CombinerGenerator::generate(), AdvancedExtruderGenerator::generate(), AllSideSetsByNormalsGenerator::generate(), MeshExtruderGenerator::generate(), ParsedGenerateNodeset::generate(), SpiralAnnularMeshGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), CutMeshByLevelSetGeneratorBase::generate(), SubdomainBoundingBoxGenerator::generate(), PatternedMeshGenerator::generate(), DistributedRectilinearMeshGenerator::generate(), BoundingBoxNodeSetGenerator::generate(), MeshGenerator::generateData(), GeneratedMesh::GeneratedMesh(), GeneratedMeshGenerator::GeneratedMeshGenerator(), MeshGenerator::generateInternal(), 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(), MFEMFESpace::getBasis(), NEML2BatchIndexGenerator::getBatchIndex(), MooseMesh::getBlockConnectedBlocks(), VariableOldValueBounds::getBound(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), 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(), MultiApp::getExecutioner(), MooseApp::getExecutor(), MFEMVectorFESpace::getFECName(), MultiAppTransfer::getFromMultiApp(), MultiAppTransfer::getFromMultiAppInfo(), FEProblemBase::getFunction(), SubProblem::getFunctor(), FEProblemBase::getFVMatsAndDependencies(), MooseMesh::getGeneralAxisymmetricCoordAxis(), DistributedRectilinearMeshGenerator::getGhostNeighbors(), DistributedRectilinearMeshGenerator::getIndices(), FEProblemBase::getLinearConvergenceNames(), SolutionUserObjectBase::getLocalVarIndex(), Material::getMaterialByName(), FEProblemBase::getMaterialData(), SubProblem::getMatrixTagID(), AnnularMesh::getMaxInDimension(), GeneratedMesh::getMaxInDimension(), FEProblemBase::getMaxQps(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), AnnularMesh::getMinInDimension(), GeneratedMesh::getMinInDimension(), 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(), PostprocessorInterface::getPostprocessorValueByNameInternal(), Times::getPreviousTime(), ComponentMaterialPropertyInterface::getPropertyValue(), InterfaceQpUserObjectBase::getQpValue(), MooseMesh::getRefinementMap(), MooseBase::getRenamedParam(), ReporterInterface::getReporterContextBaseByName(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), MooseApp::getRMClone(), FEProblemBase::getSampler(), WebServerControl::getScalarJSONValue(), 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(), JSONFileReader::getVector(), VectorPostprocessorInterface::getVectorPostprocessorName(), SubProblem::getVectorTag(), SubProblem::getVectorTagID(), DisplacedProblem::getVectorVariable(), FEProblemBase::getVectorVariable(), GhostingFromUOAux::GhostingFromUOAux(), MultiApp::globalAppToLocal(), MooseParsedVectorFunction::gradient(), Function::gradient(), FEProblemBase::handleException(), Terminator::handleMessage(), MooseVariableBase::hasDoFsOnNodes(), PostprocessorInterface::hasPostprocessor(), PostprocessorInterface::hasPostprocessorByName(), ReporterInterface::hasReporterValue(), ReporterInterface::hasReporterValueByName(), VectorPostprocessorInterface::hasVectorPostprocessor(), VectorPostprocessorInterface::hasVectorPostprocessorByName(), HDGKernel::HDGKernel(), TransientBase::incrementStepOrReject(), FixedPointIterationAdaptiveDT::init(), CrankNicolson::init(), CSVTimeSequenceStepper::init(), EigenExecutionerBase::init(), ExplicitTimeIntegrator::init(), TransientBase::init(), FEProblem::init(), AddAuxVariableAction::init(), IterationAdaptiveDT::init(), Eigenvalue::init(), AddVariableAction::init(), MooseMesh::init(), Sampler::init(), FEProblemBase::init(), MultiApp::init(), FEProblemBase::initialAdaptMesh(), NestedDivision::initialize(), DistributedPositions::initialize(), ReporterPositions::initialize(), TransformedPositions::initialize(), ElementGroupCentroidPositions::initialize(), FunctorPositions::initialize(), ReporterTimes::initialize(), FunctorTimes::initialize(), ParsedDownSelectionPositions::initialize(), ParsedConvergence::initializeConstantSymbol(), PhysicsBase::initializePhysics(), SteffensenSolve::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), ChainControlDataPostprocessor::initialSetup(), MultiAppConservativeTransfer::initialSetup(), PiecewiseLinearBase::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), FullSolveMultiApp::initialSetup(), PiecewiseLinear::initialSetup(), CoarsenedPiecewiseLinear::initialSetup(), LinearFVDiffusion::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), LinearFVAdvection::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), SolutionAux::initialSetup(), ExplicitTimeIntegrator::initialSetup(), ReferenceResidualConvergence::initialSetup(), NodalVariableValue::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), ElementSubdomainModifierBase::initialSetup(), Exodus::initialSetup(), CSV::initialSetup(), MooseParsedFunction::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(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshExtruderGenerator::MeshExtruderGenerator(), MeshRepairGenerator::MeshRepairGenerator(), SetupMeshAction::modifyParamsForUseSplit(), MeshMetaDataInterface::mooseErrorInternal(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), MooseMesh::MooseMesh(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MooseVariableConstMonomial::MooseVariableConstMonomial(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), MultiAppPostprocessorTransfer::MultiAppPostprocessorTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), 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(), 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(), PIDTransientControl::PIDTransientControl(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), PiecewiseMulticonstant::PiecewiseMulticonstant(), PiecewiseMultiInterpolation::PiecewiseMultiInterpolation(), PiecewiseTabularBase::PiecewiseTabularBase(), 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(), PseudoTimestep::PseudoTimestep(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusII(), 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(), MeshGenerator::setMeshProperty(), MooseApp::setMFEMDevice(), FVPointValueConstraint::setMyElem(), FEProblemBase::setNonlocalCouplingMatrix(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Exodus::setOutputDimensionInExodusWriter(), AddPeriodicBCAction::setPeriodicVars(), MFEMSolverBase::setPreconditioner(), setSolutionVectorValues(), Split::setup(), TransientMultiApp::setupApp(), 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(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), SolutionUserObjectBase::SolutionUserObjectBase(), ExplicitTVDRK2::solve(), ExplicitRK2::solve(), TimeIntegrator::solve(), FEProblemBase::solverSysNum(), FullSolveMultiApp::solveStep(), SpatialAverageBase::SpatialAverageBase(), UserObject::spatialPoints(), NearestPointIntegralVariablePostprocessor::spatialValue(), NearestPointAverage::spatialValue(), MeshDivisionFunctorReductionVectorPostprocessor::spatialValue(), UserObject::spatialValue(), SpiralAnnularMesh::SpiralAnnularMesh(), SpiralAnnularMeshGenerator::SpiralAnnularMeshGenerator(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), WebServerControl::stringifyJSONType(), 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(), MooseLinearVariableFV< Real >::timeIntegratorError(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriodBase::TimePeriodBase(), VectorPostprocessorVisualizationAux::timestepSetup(), WebServerControl::toMiniJson(), MultiAppDofCopyTransfer::transfer(), MultiAppMFEMCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransformedPositions::TransformedPositions(), FEProblemBase::trustUserCouplingMatrix(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), FEProblemBase::uDotDotOldRequested(), MooseVariableScalar::uDotOld(), FEProblemBase::uDotOldRequested(), MooseBase::uniqueName(), Positions::unrollMultiDPositions(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), Checkpoint::updateCheckpointFiles(), EqualValueBoundaryConstraint::updateConstrainedNodes(), SolutionUserObjectBase::updateExodusBracketingTimeIndices(), FEProblemBase::updateMaxQps(), MFEMHypreADS::updateSolver(), MFEMHypreAMS::updateSolver(), MFEMOperatorJacobiSmoother::updateSolver(), MFEMHypreBoomerAMG::updateSolver(), MFEMGMRESSolver::updateSolver(), MFEMCGSolver::updateSolver(), MFEMHypreFGMRES::updateSolver(), MFEMHyprePCG::updateSolver(), MFEMHypreGMRES::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().

268  {
269  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ true);
270  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:102

◆ mooseErrorNonPrefixed()

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

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

Definition at line 286 of file MooseBase.h.

287  {
288  callMooseError(argumentsToString(std::forward<Args>(args)...), /* with_prefix = */ false);
289  }
void callMooseError(std::string msg, const bool with_prefix, const hit::Node *node=nullptr) const
External method for calling moose error with added object context.
Definition: MooseBase.C:102

◆ mooseInfo()

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

Definition at line 317 of file MooseBase.h.

Referenced by SetupRecoverFileBaseAction::act(), AStableDirk4::AStableDirk4(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MultiAppGeneralFieldNearestLocationTransfer::evaluateInterpValuesNearestNode(), PIDTransientControl::execute(), Executioner::Executioner(), ExplicitRK2::ExplicitRK2(), ExplicitTVDRK2::ExplicitTVDRK2(), DataFileInterface::getDataFilePath(), MFEMScalarFESpace::getFECName(), MultiAppTransfer::getPointInTargetAppFrame(), ImplicitMidpoint::ImplicitMidpoint(), ParsedDownSelectionPositions::initialize(), PropertyReadFile::initialize(), initialSetup(), InversePowerMethod::InversePowerMethod(), LStableDirk2::LStableDirk2(), LStableDirk3::LStableDirk3(), LStableDirk4::LStableDirk4(), PNGOutput::makeMeshFunc(), NonlinearEigen::NonlinearEigen(), SolutionInvalidityOutput::output(), outputValueConflicts(), MooseBase::paramInfo(), ProjectionAux::ProjectionAux(), ReferenceResidualConvergence::ReferenceResidualConvergence(), MFEMDataCollection::registerFields(), FEProblemBase::setRestartFile(), MooseApp::setupOptions(), SolutionUserObjectBase::SolutionUserObjectBase(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TransientBase::takeStep(), and TransientBase::TransientBase().

318  {
319  moose::internal::mooseInfoStream(_console, messagePrefix(true), std::forward<Args>(args)...);
320  }
void mooseInfoStream(S &oss, Args &&... args)
Definition: MooseError.h:258
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:252

◆ mooseWarning()

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

Emits a warning prefixed with object name and type.

Definition at line 295 of file MooseBase.h.

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

296  {
297  moose::internal::mooseWarningStream(_console, messagePrefix(true), std::forward<Args>(args)...);
298  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:210
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:252

◆ mooseWarningNonPrefixed()

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

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

Definition at line 304 of file MooseBase.h.

305  {
306  moose::internal::mooseWarningStream(_console, std::forward<Args>(args)...);
307  }
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:210
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 99 of file MooseBase.h.

Referenced by AddElementalFieldAction::act(), CopyNodalVarsAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), DeprecatedBlockAction::act(), SetupTimeIntegratorAction::act(), SetupResidualDebugAction::act(), AddActionComponentAction::act(), DisplayGhostingAction::act(), MaterialOutputAction::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(), 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::addFVKernel(), ADDGKernel::ADDGKernel(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), DiffusionLHDGKernel::additionalROVariables(), IPHDGAssemblyHelper::additionalROVariables(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), ComponentMaterialPropertyInterface::addMaterials(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), ComponentMeshTransformHelper::addMeshGenerators(), CylinderComponent::addMeshGenerators(), MeshGenerator::addMeshSubgenerator(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), InitialConditionWarehouse::addObject(), FEProblemBase::addObject(), ComponentPhysicsInterface::addPhysics(), SubProblem::addPiecewiseByBlockLambdaFunctor(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), InitialConditionBase::addPostprocessorDependencyHelper(), UserObject::addPostprocessorDependencyHelper(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), Action::addRelationshipManager(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), InitialConditionBase::addUserObjectDependencyHelper(), UserObject::addUserObjectDependencyHelper(), AuxKernelTempl< Real >::addUserObjectDependencyHelper(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), UserObject::addVectorPostprocessorDependencyHelper(), MooseLinearVariableFV< Real >::adError(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MooseVariableBase::allDofIndices(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), Registry::appNameFromAppPath(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), ArrayParsedAux::ArrayParsedAux(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), MultiApp::backup(), Boundary2DDelaunayGenerator::Boundary2DDelaunayGenerator(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), MFEMFESpace::buildFEC(), PiecewiseTabularBase::buildFromFile(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), ParsedConvergence::checkConvergence(), DefaultNonlinearConvergence::checkConvergence(), FEProblemBase::checkDependMaterialsHelper(), SamplerBase::checkForStandardFieldVariableType(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), Checkpoint::checkpointInfo(), 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(), MeshGenerator::declareMeshesForSubByName(), MeshGenerator::declareNullMeshName(), MaterialBase::declareProperty(), DOFMapOutput::demangle(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), Registry::determineDataFilePath(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DomainUserObject::DomainUserObject(), DumpObjectsProblem::dumpObjectHelper(), 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(), 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(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), StitchBoundaryMeshGenerator::generate(), StitchMeshGenerator::generate(), ParsedExtraElementIDGenerator::generate(), XYDelaunayGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), MeshGenerator::generateInternal(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MultiApp::getBoundingBox(), MooseBase::getCheckedPointerParam(), MooseApp::getCheckpointDirectories(), Control::getControllableParameterByName(), Control::getControllableValue(), Control::getControllableValueByName(), FEProblemBase::getConvergence(), Registry::getDataFilePath(), UserObject::getDependObjects(), DistributionInterface::getDistribution(), FEProblemBase::getDistribution(), DistributionInterface::getDistributionByName(), ElementUOProvider::getElementalValueLong(), ElementUOProvider::getElementalValueReal(), MultiApp::getExecutioner(), MooseApp::getExecutor(), FEProblemBase::getExecutor(), OutputWarehouse::getFileNumbers(), FEProblemBase::getFunction(), SubProblem::getFunctor(), NodalPatchRecovery::getGenericMaterialProperty(), InterfaceMaterial::getGenericMaterialProperty(), Material::getGenericMaterialProperty(), AuxKernelTempl< Real >::getGenericMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialProperty(), InterfaceMaterial::getGenericNeighborMaterialPropertyByName(), Material::getGenericOptionalMaterialProperty(), MaterialBase::getGenericZeroMaterialProperty(), MFEMProblem::getGridFunction(), SolutionUserObjectBase::getLocalVarIndex(), Marker::getMarkerValue(), Material::getMaterial(), FEProblemBase::getMaterial(), Material::getMaterialByName(), NodalPatchRecovery::getMaterialProperty(), InterfaceMaterial::getMaterialProperty(), Material::getMaterialProperty(), AuxKernelTempl< Real >::getMaterialProperty(), SubProblem::getMaterialPropertyBlockNames(), SubProblem::getMaterialPropertyBoundaryNames(), NodalPatchRecovery::getMaterialPropertyOld(), InterfaceMaterial::getMaterialPropertyOld(), Material::getMaterialPropertyOld(), AuxKernelTempl< Real >::getMaterialPropertyOld(), NodalPatchRecovery::getMaterialPropertyOlder(), InterfaceMaterial::getMaterialPropertyOlder(), Material::getMaterialPropertyOlder(), AuxKernelTempl< Real >::getMaterialPropertyOlder(), MFEMGeneralUserObject::getMatrixCoefficient(), MFEMGeneralUserObject::getMatrixCoefficientByName(), MeshGenerator::getMesh(), FEProblemBase::getMeshDivision(), MeshGenerator::getMeshesByName(), MooseApp::getMeshGenerator(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), ActionWarehouse::getMooseAppName(), 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(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMGeneralUserObject::getScalarCoefficient(), MFEMGeneralUserObject::getScalarCoefficientByName(), TimedSubdomainModifier::getSubdomainIDAndCheck(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMGeneralUserObject::getVectorCoefficient(), MFEMGeneralUserObject::getVectorCoefficientByName(), Terminator::handleMessage(), Control::hasControllableParameterByName(), FEProblemBase::hasConvergence(), FEProblemBase::hasFunction(), SubProblem::hasFunctor(), SubProblem::hasFunctorWithType(), MooseApp::hasMeshGenerator(), AdvancedOutput::hasOutputHelper(), FEProblemBase::hasPostprocessor(), FEProblemBase::hasPostprocessorValueByName(), MooseApp::hasRelationshipManager(), MooseApp::hasRestartableDataMap(), MooseApp::hasRestartableMetaData(), FEProblemBase::hasUserObject(), IterationAdaptiveDT::init(), AddVariableAction::init(), AdvancedOutput::init(), AdvancedOutput::initExecutionTypes(), AttribName::initFrom(), NestedDivision::initialize(), TransformedPositions::initialize(), BoundaryRestrictable::initializeBoundaryRestrictable(), JSONOutput::initialSetup(), SideFVFluxBCIntegral::initialSetup(), SolutionScalarAux::initialSetup(), MultiAppProjectionTransfer::initialSetup(), NodalVariableValue::initialSetup(), Console::initialSetup(), SolutionUserObjectBase::initialSetup(), AdvancedOutput::initOutputList(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), Function::integral(), InterfaceKernelTempl< T >::InterfaceKernelTempl(), MultiAppGeometricInterpolationTransfer::interpolateTargetPoints(), MeshGenerator::isChildMeshGenerator(), DerivativeMaterialInterface< MortarScalarBase >::isNotObjectVariable(), MeshGenerator::isNullMeshName(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), MooseLinearVariableFV< Real >::lowerDError(), Marker::Marker(), MaterialBase::markMatPropRequested(), MatDiffusionBase< Real >::MatDiffusionBase(), Material::Material(), MaterialDerivativeTestKernelBase< Real >::MaterialDerivativeTestKernelBase(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), MeshGenerator::meshPropertyPrefix(), MooseBase::messagePrefix(), OutputWarehouse::mooseConsole(), MooseVariableBase::MooseVariableBase(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), 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(), Exodus::outputPostprocessors(), AdvancedOutput::outputPostprocessors(), TableOutput::outputReporter(), AdvancedOutput::outputReporters(), AdvancedOutput::outputScalarVariables(), AdvancedOutput::outputSystemInformation(), AdvancedOutput::outputVectorPostprocessors(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), MooseApp::possiblyLoadRestartableMetaData(), 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(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), OutputWarehouse::setFileNumbers(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), MooseMesh::setSubdomainName(), NodeSetsGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), TransientMultiApp::setupApp(), FullSolveMultiApp::showStatusMessage(), SideSetExtruderGenerator::SideSetExtruderGenerator(), TransientMultiApp::solveStep(), UserObject::spatialValue(), WebServerControl::startServer(), StitchedMesh::StitchedMesh(), SubProblem::storeBoundaryDelayedCheckMatProp(), SubProblem::storeBoundaryMatPropName(), MaterialBase::storeBoundaryZeroMatProp(), SubProblem::storeBoundaryZeroMatProp(), SubProblem::storeSubdomainDelayedCheckMatProp(), SubProblem::storeSubdomainMatPropName(), MaterialBase::storeSubdomainZeroMatProp(), SubProblem::storeSubdomainZeroMatProp(), ConstraintWarehouse::subdomainsCovered(), MaterialBase::subdomainSetup(), TaggingInterface::TaggingInterface(), MooseLinearVariableFV< Real >::timeIntegratorError(), VectorPostprocessorVisualizationAux::timestepSetup(), ElementSubdomainModifierBase::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransientMultiApp::TransientMultiApp(), MooseServer::traverseParseTreeAndFillSymbols(), MooseBase::typeAndName(), MooseBase::uniqueParameterName(), FVFluxBC::uOnGhost(), FVFluxBC::uOnUSub(), UserObject::UserObject(), UserObjectInterface::userObjectName(), ParsedAux::validateGenericVectorNames(), PhysicsBase::variableExists(), MultiAppTransfer::variableIntegrityCheck(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), Convergence::verboseOutput(), AdvancedOutput::wantOutput(), Coupleable::writableCoupledValue(), Coupleable::writableVariable(), Console::write(), and MooseApp::writeRestartableMetaData().

100  {
101  mooseAssert(_name.size(), "Empty name");
102  return _name;
103  }
const std::string & _name
The name of this class.
Definition: MooseBase.h:359

◆ 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 1287 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1291 {
1292  // Remove potential conflicts that did not materialize, the value did not end up being used
1293  examineReceivedValueConflicts(var_index, dofobject_to_valsvec, distance_caches);
1294  examineLocalValueConflicts(var_index, dofobject_to_valsvec, distance_caches);
1295 
1296  // Output the conflicts from the selection of local values (evaluateInterpValues-type routines)
1297  // to send in response to value requests at target points
1298  const std::string rank_str = std::to_string(_communicator.rank());
1299  if (_local_conflicts.size())
1300  {
1301  unsigned int num_outputs = 0;
1302  std::string local_conflicts_string = "";
1303  std::string potential_reasons =
1304  "Are some points in target mesh equidistant from the sources "
1305  "(nodes/centroids/apps/positions, depending on transfer) in origin mesh(es)?\n";
1306  if (hasFromMultiApp() && _from_problems.size() > 1)
1307  potential_reasons += "Are multiple subapps overlapping?\n";
1308  for (const auto & conflict : _local_conflicts)
1309  {
1310  const unsigned int problem_id = std::get<0>(conflict);
1311  Point p = std::get<2>(conflict);
1312  num_outputs++;
1313 
1314  std::string origin_domain_message;
1316  {
1317  // NOTES:
1318  // - The origin app for a conflict may not be unique.
1319  // - The conflicts vectors only store the conflictual points, not the original one
1320  // The original value found with a given distance could be retrieved from the main
1321  // caches
1322  const auto app_id = _from_local2global_map[problem_id];
1323  origin_domain_message = "In source child app " + std::to_string(app_id) + " mesh,";
1324  }
1325  // We can't locate the source app when considering nearest positions, so we saved the data
1326  // in the reference space. So we return the conflict location in the target app (parent or
1327  // sibling) instead
1329  {
1330  if (_to_problems.size() == 1 || _skip_coordinate_collapsing)
1331  {
1332  p = (*_to_transforms[0])(p);
1333  origin_domain_message = "In target app mesh,";
1334  }
1335  else
1336  origin_domain_message = "In reference (post-coordinate collapse) mesh,";
1337  }
1338  else
1339  origin_domain_message = "In source parent app mesh,";
1340 
1341  if (num_outputs < _search_value_conflicts_max_log)
1342  local_conflicts_string += origin_domain_message + " point: (" + std::to_string(p(0)) +
1343  ", " + std::to_string(p(1)) + ", " + std::to_string(p(2)) +
1344  "), equi-distance: " + std::to_string(std::get<3>(conflict)) +
1345  "\n";
1346  else if (num_outputs == _search_value_conflicts_max_log)
1347  local_conflicts_string +=
1348  "Maximum output of the search for value conflicts has been reached. Further conflicts "
1349  "will not be output.\nIncrease 'search_value_conflicts_max_log' to output more.";
1350  }
1351  // Explicitly name source to give more context
1352  std::string source_str = "unknown";
1353  if (_from_var_names.size())
1354  source_str = "variable '" + getFromVarName(var_index) + "'";
1355  else if (isParamValid("source_user_object"))
1356  source_str = "user object '" + getParam<UserObjectName>("source_user_object") + "'";
1357 
1358  mooseWarning("On rank " + rank_str +
1359  ", multiple valid values from equidistant points were "
1360  "found in the origin mesh for source " +
1361  source_str + " for " + std::to_string(_local_conflicts.size()) +
1362  " target points.\n" + potential_reasons + "Conflicts detected at :\n" +
1363  local_conflicts_string);
1364  }
1365 
1366  // Output the conflicts discovered when receiving values from multiple origin problems
1367  if (_received_conflicts.size())
1368  {
1369  unsigned int num_outputs = 0;
1370  std::string received_conflicts_string = "";
1371  std::string potential_reasons =
1372  "Are some points in target mesh equidistant from the sources "
1373  "(nodes/centroids/apps/positions, depending on transfer) in origin mesh(es)?\n";
1374  if (hasToMultiApp() && _to_problems.size() > 1)
1375  potential_reasons += "Are multiple subapps overlapping?\n";
1376  for (const auto & conflict : _received_conflicts)
1377  {
1378  // Extract info for the potential overlap
1379  const unsigned int problem_id = std::get<0>(conflict);
1380  const Point p = std::get<2>(conflict);
1381  num_outputs++;
1382 
1383  std::string target_domain_message;
1384  if (hasToMultiApp())
1385  {
1386  const auto app_id = _to_local2global_map[problem_id];
1387  target_domain_message = "In target child app " + std::to_string(app_id) + " mesh,";
1388  }
1389  else
1390  target_domain_message = "In target parent app mesh,";
1391 
1392  if (num_outputs < _search_value_conflicts_max_log)
1393  received_conflicts_string += target_domain_message + " point: (" + std::to_string(p(0)) +
1394  ", " + std::to_string(p(1)) + ", " + std::to_string(p(2)) +
1395  "), equi-distance: " + std::to_string(std::get<3>(conflict)) +
1396  "\n";
1397  else if (num_outputs == _search_value_conflicts_max_log)
1398  received_conflicts_string +=
1399  "Maximum output of the search for value conflicts has been reached. Further conflicts "
1400  "will not be output.\nIncrease 'search_value_conflicts_max_log' to output more.";
1401  }
1402  mooseWarning("On rank " + rank_str +
1403  ", multiple valid values from equidistant points were "
1404  "received for target variable '" +
1405  getToVarName(var_index) + "' for " + std::to_string(_received_conflicts.size()) +
1406  " target points.\n" + potential_reasons + "Conflicts detected at :\n" +
1407  received_conflicts_string);
1408  }
1409 
1410  if (_local_conflicts.empty() && _received_conflicts.empty())
1411  {
1412  if (isParamSetByUser("search_value_conflict"))
1413  mooseInfo("Automated diagnosis did not detect floating point indetermination in transfer");
1414  else if (_to_problems.size() > 10 || _from_problems.size() > 10 || _communicator.size() > 10)
1415  mooseInfo(
1416  "Automated diagnosis did not detect any floating point indetermination in "
1417  "the transfer. You may consider turning it off using `search_value_conflicts=false` "
1418  "to improve performance/scalability.");
1419  }
1420 
1421  // Reset the conflicts vectors, to be used for checking conflicts when transferring the next
1422  // variable
1423  _local_conflicts.clear();
1424  _received_conflicts.clear();
1425 }
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:317
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...
VariableName getFromVarName(unsigned int var_index)
Get the source variable name, with the suffix for array/vector variables.
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
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
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...
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Definition: MooseBase.h:295
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 isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:195
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:201
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 435 of file MooseBase.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), AutoCheckpointAction::act(), SetupDebugAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEKernels(), DiffusionFV::addFVKernels(), NEML2ModelExecutor::addGatheredParameter(), NEML2ModelExecutor::addGatheredVariable(), ADDGKernel::ADDGKernel(), CylinderComponent::addMeshGenerators(), AddPeriodicBCAction::AddPeriodicBCAction(), ReporterPointSource::addPoints(), ADIntegratedBCTempl< T >::ADIntegratedBCTempl(), ADKernelTempl< T >::ADKernelTempl(), ADNodalKernel::ADNodalKernel(), 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(), ArrayVacuumBC::ArrayVacuumBC(), ArrayVarReductionAux::ArrayVarReductionAux(), ParsedSubdomainIDsGenerator::assignElemSubdomainID(), AuxKernelTempl< Real >::AuxKernelTempl(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BlockDeletionGenerator::BlockDeletionGenerator(), BlockWeightedPartitioner::BlockWeightedPartitioner(), BoundsBase::BoundsBase(), BreakMeshByBlockGenerator::BreakMeshByBlockGenerator(), BuildArrayVariableAux::BuildArrayVariableAux(), PiecewiseTabularBase::buildFromFile(), MFEMMesh::buildMesh(), CartesianGridDivision::CartesianGridDivision(), checkComponent(), MeshGenerator::checkGetMesh(), ComponentInitialConditionInterface::checkInitialConditionsAllRequested(), BatchMeshGeneratorAction::checkInputParameterType(), PhysicsBase::checkIntegrityEarly(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), Coupleable::checkVar(), MultiAppTransfer::checkVariable(), CircularBoundaryCorrectionGenerator::CircularBoundaryCorrectionGenerator(), CircularBoundaryCorrectionGenerator::circularCenterCalculator(), closestToPosition(), CoarsenBlockGenerator::CoarsenBlockGenerator(), CombinerGenerator::CombinerGenerator(), ComponentInitialConditionInterface::ComponentInitialConditionInterface(), ComponentMaterialPropertyInterface::ComponentMaterialPropertyInterface(), CompositionDT::CompositionDT(), FunctorAux::computeValue(), ConcentricCircleMeshGenerator::ConcentricCircleMeshGenerator(), LibtorchNeuralNetControl::conditionalParameterError(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), ConstantVectorPostprocessor::ConstantVectorPostprocessor(), ContainsPointAux::ContainsPointAux(), CopyValueAux::CopyValueAux(), 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(), Eigenvalue::Eigenvalue(), ElementAdaptivityLevelAux::ElementAdaptivityLevelAux(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), 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(), ReporterPointSource::fillPoint(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), InternalSideIndicatorBase::finalize(), 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(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), AddMetaDataGenerator::generate(), BlockToMeshConverterGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementsToTetrahedronsConverter::generate(), ExtraNodesetGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BlockDeletionGenerator::generate(), Boundary2DDelaunayGenerator::generate(), BoundaryElementConversionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), AdvancedExtruderGenerator::generate(), CombinerGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), StackGenerator::generate(), XYZDelaunayGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), GeneratedMeshGenerator::GeneratedMeshGenerator(), 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(), HFEMDirichletBC::HFEMDirichletBC(), AddVariableAction::init(), MultiApp::init(), DistributedPositions::initialize(), BlockWeightedPartitioner::initialize(), BlockRestrictable::initializeBlockRestrictable(), BoundaryRestrictable::initializeBoundaryRestrictable(), PhysicsBase::initializePhysics(), JSONOutput::initialSetup(), MultiAppCloneReporterTransfer::initialSetup(), SolutionIC::initialSetup(), SideFVFluxBCIntegral::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::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(), MatrixSymmetryCheck::MatrixSymmetryCheck(), PatternedMeshGenerator::mergeSubdomainNameMaps(), MeshCollectionGenerator::MeshCollectionGenerator(), MeshDiagnosticsGenerator::MeshDiagnosticsGenerator(), MeshDivisionAux::MeshDivisionAux(), MeshGenerator::MeshGenerator(), MeshGeneratorComponent::MeshGeneratorComponent(), MFEMGenericFunctorMaterial::MFEMGenericFunctorMaterial(), MFEMGenericFunctorVectorMaterial::MFEMGenericFunctorVectorMaterial(), MooseLinearVariableFV< Real >::MooseLinearVariableFV(), UserObjectInterface::mooseObjectError(), MoosePreconditioner::MoosePreconditioner(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MortarConstraintBase::MortarConstraintBase(), MortarNodalAuxKernelTempl< ComputeValueType >::MortarNodalAuxKernelTempl(), MultiApp::moveApp(), MoveNodeGenerator::MoveNodeGenerator(), MultiApp::MultiApp(), MultiAppCloneReporterTransfer::MultiAppCloneReporterTransfer(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), 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(), NestedDivision::NestedDivision(), NodalBC::NodalBC(), NodalEqualValueConstraint::NodalEqualValueConstraint(), NodalKernel::NodalKernel(), NodalPatchRecoveryAux::NodalPatchRecoveryAux(), NodalValueSampler::NodalValueSampler(), Output::Output(), ParsedCurveGenerator::ParsedCurveGenerator(), ParsedFunctorMaterialTempl< is_ad >::ParsedFunctorMaterialTempl(), ParsedPostprocessor::ParsedPostprocessor(), PatternedMeshGenerator::PatternedMeshGenerator(), PenaltyPeriodicSegmentalConstraint::PenaltyPeriodicSegmentalConstraint(), PeriodicSegmentalConstraint::PeriodicSegmentalConstraint(), PIDTransientControl::PIDTransientControl(), PlaneDeletionGenerator::PlaneDeletionGenerator(), PlaneIDMeshGenerator::PlaneIDMeshGenerator(), PointwiseRenormalizeVector::PointwiseRenormalizeVector(), PolyLineMeshGenerator::PolyLineMeshGenerator(), ReporterInterface::possiblyCheckHasReporter(), VectorPostprocessorInterface::possiblyCheckHasVectorPostprocessor(), LibmeshPartitioner::prepareBlocksForSubdomainPartitioner(), ProjectedMaterialPropertyNodalPatchRecoveryAux::ProjectedMaterialPropertyNodalPatchRecoveryAux(), ProjectionAux::ProjectionAux(), PropertyReadFile::PropertyReadFile(), RandomIC::RandomIC(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readXda(), ReferenceResidualConvergence::ReferenceResidualConvergence(), RefineBlockGenerator::RefineBlockGenerator(), RefineSidesetGenerator::RefineSidesetGenerator(), RenameBlockGenerator::RenameBlockGenerator(), RenameBoundaryGenerator::RenameBoundaryGenerator(), ReporterPointSource::ReporterPointSource(), FEProblemBase::restoreSolutions(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupParameterDerivativeMappings(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SideValueSampler::SideValueSampler(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), StitchBoundaryMeshGenerator::StitchBoundaryMeshGenerator(), StitchMeshGenerator::StitchMeshGenerator(), SymmetryTransformGenerator::SymmetryTransformGenerator(), TagVectorAux::TagVectorAux(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), TimeSequenceStepperBase::updateSequence(), UserObject::UserObject(), Checkpoint::validateExecuteOn(), ParsedAux::validateGenericVectorNames(), ParsedMaterialBase::validateVectorNames(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), VolumeAux::VolumeAux(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), XYMeshLineCutter::XYMeshLineCutter(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

436 {
437  _pars.paramError(param, std::forward<Args>(args)...);
438 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
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 127 of file MooseBase.h.

Referenced by MeshOnlyAction::act(), SplitMeshAction::act(), SetupDebugAction::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::addFVKernel(), MFEMProblem::addGridFunction(), FEProblemBase::addHDGKernel(), FEProblemBase::addIndicator(), MFEMProblem::addInitialCondition(), FEProblemBase::addInitialCondition(), DiffusionPhysicsBase::addInitialConditions(), FEProblemBase::addInterfaceKernel(), FEProblemBase::addInterfaceMaterial(), MFEMProblem::addKernel(), FEProblemBase::addKernel(), FEProblemBase::addLinearFVBC(), FEProblemBase::addLinearFVKernel(), FEProblem::addLineSearch(), FEProblemBase::addMarker(), FEProblemBase::addMaterial(), FEProblemBase::addMaterialHelper(), FEProblemBase::addMeshDivision(), MFEMProblem::addMFEMFESpaceFromMOOSEVariable(), MFEMProblem::addMFEMPreconditioner(), MFEMProblem::addMFEMSolver(), FEProblemBase::addMultiApp(), FEProblemBase::addNodalKernel(), FEProblemBase::addObject(), FEProblemBase::addObjectParamsHelper(), FEProblemBase::addOutput(), MFEMProblem::addPostprocessor(), FEProblemBase::addPostprocessor(), FEProblemBase::addPredictor(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addScalarKernel(), MFEMProblem::addSubMesh(), FEProblemBase::addTimeIntegrator(), MFEMProblem::addTransfer(), FEProblemBase::addTransfer(), FEProblemBase::addUserObject(), MFEMProblem::addVariable(), DisplacedProblem::addVariable(), FEProblemBase::addVectorPostprocessor(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), AdvancedOutput::AdvancedOutput(), ADVectorFunctionDirichletBC::ADVectorFunctionDirichletBC(), AnnularMesh::AnnularMesh(), AnnularMeshGenerator::AnnularMeshGenerator(), Action::associateWithParameter(), AuxKernelTempl< Real >::AuxKernelTempl(), AuxScalarKernel::AuxScalarKernel(), BoundsBase::BoundsBase(), MooseMesh::buildTypedMesh(), PostprocessorInterface::checkParam(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedSteadyStateConvergenceParameters(), SampledOutput::cloneMesh(), LibtorchNeuralNetControl::conditionalParameterError(), Console::Console(), CommonOutputAction::create(), MultiApp::createApp(), Postprocessor::declareValue(), DumpObjectsProblem::deduceNecessaryParameters(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DumpObjectsProblem::dumpObjectHelper(), DumpObjectsProblem::DumpObjectsProblem(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), 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(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), 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(), isValid(), IterationAdaptiveDT::IterationAdaptiveDT(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), MFEMCGSolver::MFEMCGSolver(), MFEMGMRESSolver::MFEMGMRESSolver(), MFEMHypreADS::MFEMHypreADS(), MFEMHypreAMS::MFEMHypreAMS(), MFEMHypreBoomerAMG::MFEMHypreBoomerAMG(), MFEMHypreFGMRES::MFEMHypreFGMRES(), MFEMHypreGMRES::MFEMHypreGMRES(), MFEMHyprePCG::MFEMHyprePCG(), MFEMOperatorJacobiSmoother::MFEMOperatorJacobiSmoother(), MFEMSuperLU::MFEMSuperLU(), MooseObject::MooseObject(), UserObjectInterface::mooseObjectError(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiApp::MultiApp(), MultiAppGeneralFieldTransfer(), MultiAppGeneralFieldUserObjectTransfer::MultiAppGeneralFieldUserObjectTransfer(), MultiAppTransfer::MultiAppTransfer(), MultiAppVariableValueSamplePostprocessorTransfer::MultiAppVariableValueSamplePostprocessorTransfer(), NodeFaceConstraint::NodeFaceConstraint(), ConsoleUtils::outputLegacyInformation(), OverlayMeshGenerator::OverlayMeshGenerator(), MooseServer::parseDocumentForDiagnostics(), PenetrationAux::PenetrationAux(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseLinearInterpolationMaterial::PiecewiseLinearInterpolationMaterial(), NEML2Action::printSummary(), ProjectedStatefulMaterialStorageAction::processProperty(), PropertyReadFile::PropertyReadFile(), PseudoTimestep::PseudoTimestep(), RandomIC::RandomIC(), ReferenceResidualConvergence::ReferenceResidualConvergence(), InputParameterWarehouse::removeInputParameters(), 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(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), and MooseApp::~MooseApp().

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

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

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

450 {
451  mooseInfo(_pars.paramMessage(param, std::forward<Args>(args)...));
452 }
std::string paramMessage(const std::string &param, Args... args) const
void mooseInfo(Args &&... args) const
Definition: MooseBase.h:317
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362

◆ paramWarning()

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

Referenced by GridPartitioner::_do_partition(), MultiAppTransfer::checkParentAppUserObjectExecuteOn(), EigenProblem::checkProblemIntegrity(), CombinerGenerator::copyIntoMesh(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), MultiAppNearestNodeTransfer::execute(), FEProblemSolve::FEProblemSolve(), UniqueExtraIDMeshGenerator::generate(), PlaneIDMeshGenerator::generate(), Terminator::initialSetup(), SampledOutput::initSample(), MooseMesh::MooseMesh(), FEProblemBase::setPreserveMatrixSparsityPattern(), and Terminator::Terminator().

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

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 78 of file PerfGraphInterface.C.

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

79 {
80  return _pg_moose_app.perfGraph();
81 }
MooseApp & _pg_moose_app
The MooseApp that owns the PerfGraph.
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition: MooseApp.h:166

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

◆ 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 502 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

503 {
507 }
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 476 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

477 {
478  // Get the bounding boxes for the "from" domains.
479  // Clean up _from_bboxes from the previous transfer execution
480  _from_bboxes.clear();
481 
482  // NOTE: This ignores the app's bounding box inflation and padding
484 
485  // Expand bounding boxes. Some desired points might be excluded
486  // without an expansion
488 
489  // Figure out how many "from" domains each processor owns.
490  _froms_per_proc.clear();
492 
493  // Get the index for the first source app every processor owns
495 
496  // No need to keep searching for conflicts if the mesh has not changed
498  _search_value_conflicts = false;
499 }
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 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 391 of file MooseBase.h.

392 {
393  return isParamValid(name) ? &getParam<T>(name) : nullptr;
394 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:195

◆ 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 1051 of file MultiAppGeneralFieldTransfer.C.

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

1053 {
1054  // NOTE We could be registering the same conflict several times, we could count them instead
1055  if (local)
1056  _local_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1057  else
1058  _received_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1059 }
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.

◆ 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 53 of file PerfGraphInterface.C.

55 {
56  const auto timed_section_name = timedSectionName(section_name);
57  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
58  return moose::internal::getPerfGraphRegistry().registerSection(timed_section_name, level);
59  else
60  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
61 }
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 64 of file PerfGraphInterface.C.

68 {
69  const auto timed_section_name = timedSectionName(section_name);
70  if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
72  timedSectionName(section_name), level, live_message, print_dots);
73  else
74  return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
75 }
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 66 of file Restartable.C.

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

67 {
68  return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
69 }
std::string _restartable_name
The name of the object.
Definition: Restartable.h:243
const std::string _restartable_system_name
The system name this object is in.
Definition: Restartable.h:230

◆ 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 1428 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1432 {
1433  // Get the variable name, with the accommodation for array/vector names
1434  const auto & var_name = getToVarName(var_index);
1435 
1436  for (const auto problem_id : index_range(_to_problems))
1437  {
1438  auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
1439 
1440  // libMesh EquationSystems
1441  // NOTE: we would expect to set variables from the displaced equation system here
1442  auto & es = getEquationSystem(*_to_problems[problem_id], false);
1443 
1444  // libMesh system
1445  System * to_sys = find_sys(es, var_name);
1446 
1447  // libMesh mesh
1448  const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
1449  auto var_num = to_sys->variable_number(var_name);
1450  auto sys_num = to_sys->number();
1451 
1452  auto & fe_type = _to_variables[var_index]->feType();
1453  bool is_nodal = _to_variables[var_index]->isNodal();
1454 
1455  if (fe_type.order > CONSTANT && !is_nodal)
1456  {
1457  // We may need to use existing data values in places where the
1458  // from app domain doesn't overlap
1459  MeshFunction to_func(es, *to_sys->current_local_solution, to_sys->get_dof_map(), var_num);
1460  to_func.init();
1461 
1463  interp_caches[problem_id], to_func, _default_extrapolation_value);
1464  libMesh::VectorSetAction<Number> setter(*to_sys->solution);
1465  const std::vector<unsigned int> varvec(1, var_num);
1466 
1469  Number,
1471  set_solution(*to_sys, f, nullptr, setter, varvec);
1472 
1473  // We dont look at boundary restriction, not supported for higher order target variables
1474  const auto & to_begin = _to_blocks.empty()
1475  ? to_mesh.active_local_elements_begin()
1476  : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
1477 
1478  const auto & to_end = _to_blocks.empty()
1479  ? to_mesh.active_local_elements_end()
1480  : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
1481 
1482  ConstElemRange active_local_elem_range(to_begin, to_end);
1483 
1484  set_solution.project(active_local_elem_range);
1485  }
1486  else
1487  {
1488  for (const auto & val_pair : dofobject_to_val)
1489  {
1490  const auto dof_object_id = val_pair.first;
1491 
1492  const DofObject * dof_object = nullptr;
1493  if (is_nodal)
1494  dof_object = to_mesh.node_ptr(dof_object_id);
1495  else
1496  dof_object = to_mesh.elem_ptr(dof_object_id);
1497 
1498  const auto dof = dof_object->dof_number(sys_num, var_num, 0);
1499  const auto val = val_pair.second.interp;
1500 
1501  // This will happen if meshes are mismatched
1503  {
1504  const auto target_location =
1505  hasToMultiApp()
1506  ? " on target app " + std::to_string(getGlobalTargetAppIndex(problem_id))
1507  : " on parent app";
1508  const auto info_msg = "\nThis check can be turned off by setting 'error_on_miss' to "
1509  "false. The 'extrapolation_constant' parameter will be used to set "
1510  "the local value at missed points.";
1511  if (is_nodal)
1512  mooseError("No source value for node ",
1513  dof_object_id,
1514  target_location,
1515  " could be located. Node details:\n",
1516  _to_meshes[problem_id]->nodePtr(dof_object_id)->get_info(),
1517  "\n",
1518  info_msg);
1519  else
1520  mooseError("No source value for element ",
1521  dof_object_id,
1522  target_location,
1523  " could be located. Element details:\n",
1524  _to_meshes[problem_id]->elemPtr(dof_object_id)->get_info(),
1525  "\n",
1526  info_msg);
1527  }
1528 
1529  // We should not put garbage into our solution vector
1530  // but it can be that we want to set it to a different value than what was already there
1531  // for example: the source app has been displaced and was sending an indicator of its
1532  // position
1534  {
1536  to_sys->solution->set(dof, _default_extrapolation_value);
1537  continue;
1538  }
1539 
1540  to_sys->solution->set(dof, val);
1541  }
1542  }
1543 
1544  to_sys->solution->close();
1545  // Sync local solutions
1546  to_sys->update();
1547  }
1548 }
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:267
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, GeneralUserObject, NodalUserObject, Constraint, and ThreadedGeneralUserObject.

Definition at line 61 of file SetupInterface.C.

62 {
63 }

◆ 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 47 of file PerfGraphInterface.C.

Referenced by PerfGraphInterface::registerTimedSection().

48 {
49  return _prefix.empty() ? "" : (_prefix + "::") + section_name;
50 }
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 510 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

511 {
512  mooseAssert(i < _var_size, "The variable of index " << i << " does not exist");
513 
514  // Find outgoing target points
515  // We need to know what points we need to send which processors
516  // One processor will receive many points from many processors
517  // One point may go to different processors
518  ProcessorToPointVec outgoing_points;
519  extractOutgoingPoints(i, outgoing_points);
520 
521  if (_from_var_names.size())
523  else
525 
526  // Fill values and app ids for incoming points
527  // We are responsible to compute values for these incoming points
528  auto gather_functor =
529  [this](processor_id_type /*pid*/,
530  const std::vector<std::pair<Point, unsigned int>> & incoming_locations,
531  std::vector<std::pair<Real, Real>> & outgoing_vals)
532  {
533  outgoing_vals.resize(
534  incoming_locations.size(),
536  // Evaluate interpolation values for these incoming points
537  evaluateInterpValues(incoming_locations, outgoing_vals);
538  };
539 
540  DofobjectToInterpValVec dofobject_to_valsvec(_to_problems.size());
542  InterpCaches distance_caches(_to_problems.size(), getMaxToProblemsBBoxDimensions());
543 
544  // Copy data out to incoming_vals_ids
545  auto action_functor = [this, &i, &dofobject_to_valsvec, &interp_caches, &distance_caches](
546  processor_id_type pid,
547  const std::vector<std::pair<Point, unsigned int>> & my_outgoing_points,
548  const std::vector<std::pair<Real, Real>> & incoming_vals)
549  {
550  auto & pointInfoVec = _processor_to_pointInfoVec[pid];
551 
552  // Cache interpolation values for each dof object / points
554  i,
555  pointInfoVec,
556  my_outgoing_points,
557  incoming_vals,
558  dofobject_to_valsvec,
559  interp_caches,
560  distance_caches);
561  };
562 
563  // We assume incoming_vals_ids is ordered in the same way as outgoing_points
564  // Hopefully, pull_parallel_vector_data will not mess up this
565  const std::pair<Real, Real> * ex = nullptr;
566  libMesh::Parallel::pull_parallel_vector_data(
567  comm(), outgoing_points, gather_functor, action_functor, ex);
568 
569  // Check for conflicts and overlaps from the maps that were built during the transfer
571  outputValueConflicts(i, dofobject_to_valsvec, distance_caches);
572 
573  // Set cached values into solution vector
574  setSolutionVectorValues(i, dofobject_to_valsvec, interp_caches);
575 }
virtual void evaluateInterpValues(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...
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 89 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::addFunction(), FEProblemBase::addFunction(), FEProblemBase::addMeshDivision(), MooseApp::addMeshGenerator(), MeshGenerator::addMeshSubgenerator(), FEProblemBase::addObject(), MFEMProblem::addPostprocessor(), FEProblemBase::addPredictor(), CreateDisplacedProblemAction::addProxyRelationshipManagers(), FEProblemBase::addReporter(), FEProblemBase::addSampler(), FEProblemBase::addTimeIntegrator(), MooseServer::addValuesToList(), DisplacedProblem::addVectorTag(), SubProblem::addVectorTag(), FEProblemBase::advanceMultiApps(), MooseApp::appendMeshGenerator(), AuxKernelTempl< Real >::AuxKernelTempl(), FEProblemBase::backupMultiApps(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BoundaryPreservedMarker::BoundaryPreservedMarker(), DistributedRectilinearMeshGenerator::buildCube(), MooseMesh::buildHRefinementAndCoarseningMaps(), MooseMesh::buildLowerDMesh(), MooseMesh::buildPRefinementAndCoarseningMaps(), PhysicsBase::checkComponentType(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), ActionComponent::checkRequiredTasks(), PhysicsBase::checkRequiredTasks(), 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(), HFEMDirichletBC::computeLowerDQpJacobian(), HFEMDiffusion::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(), InterfaceReaction::computeQpJacobian(), ArrayDGDiffusion::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGDiffusion::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::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(), LinearNodalConstraint::computeQpResidual(), DGDiffusion::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(), WebServerControl::execute(), SteadyBase::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), MooseServer::gatherDocumentReferencesLocations(), Boundary2DDelaunayGenerator::General2DDelaunay(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::generate(), Boundary2DDelaunayGenerator::generate(), PatternedMeshGenerator::generate(), MeshGenerator::generateInternal(), MultiAppTransfer::getAppInfo(), TransfiniteMeshGenerator::getEdge(), ElementGenerator::getElemType(), MooseServer::getInputLookupDefinitionNodes(), FEProblemBase::getMaterial(), FEProblemBase::getMaterialData(), MaterialOutputAction::getParams(), ReporterData::getReporterInfo(), FEProblemBase::getTransfers(), DisplacedProblem::getVectorTags(), SubProblem::getVectorTags(), CommonOutputAction::hasConsole(), FEProblemBase::hasMultiApps(), AdvancedOutput::hasOutput(), FEProblemBase::incrementMultiAppTStep(), AdvancedOutput::initAvailableLists(), FunctorPositions::initialize(), FunctorTimes::initialize(), MultiAppConservativeTransfer::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), LinearFVDiffusion::initialSetup(), LinearFVAdvection::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MFEMProblem::mesh(), MooseObject::MooseObject(), MultiAppMFEMCopyTransfer::MultiAppMFEMCopyTransfer(), 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(), WebServerControl::startServer(), Reporter::store(), MooseBase::typeAndName(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

90  {
91  mooseAssert(_type.size(), "Empty type");
92  return _type;
93  }
const std::string & _type
The type of this class.
Definition: MooseBase.h:356

◆ 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 54 of file MooseBase.C.

Referenced by FEProblemBase::addPostprocessor(), MaterialPropertyStorage::addProperty(), FEProblemBase::addReporter(), FEProblemBase::addVectorPostprocessor(), MeshGeneratorSystem::dataDrivenError(), ReporterContext< std::vector< T > >::finalize(), and ReporterData::getReporterInfo().

55 {
56  return type() + std::string(" \"") + name() + std::string("\"");
57 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:89

◆ uniqueName()

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

Definition at line 66 of file MooseBase.C.

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

67 {
68  if (!_pars.have_parameter<std::string>(unique_name_param))
69  mooseError("uniqueName(): Object does not have a unique name");
70  return MooseObjectName(_pars.get<std::string>(unique_name_param));
71 }
const InputParameters & _pars
The object&#39;s parameters.
Definition: MooseBase.h:362
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:267
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 60 of file MooseBase.C.

61 {
62  return MooseObjectParameterName(getBase(), name(), parameter_name);
63 }
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:99
A class for storing an input parameter name.
const std::string & getBase() const
Definition: MooseBase.h:143

◆ validParams()

InputParameters MultiAppGeneralFieldTransfer::validParams ( )
static

Definition at line 39 of file MultiAppGeneralFieldTransfer.C.

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

40 {
42  // Expansion default to make a node in the target mesh overlapping with a node in the origin
43  // mesh always register as being inside the origin application bounding box. The contains_point
44  // bounding box checks uses exact comparisons
45  params.addRangeCheckedParam<Real>("bbox_factor",
46  1.00000001,
47  "bbox_factor>0",
48  "Factor to inflate or deflate the source app bounding boxes");
49  params.addRangeCheckedParam<std::vector<Real>>(
50  "fixed_bounding_box_size",
51  "fixed_bounding_box_size >= 0",
52  "Override source app bounding box size(s) for searches. App bounding boxes will still be "
53  "centered on the same coordinates. Only non-zero components passed will override.");
54  params.addParam<Real>(
55  "extrapolation_constant",
56  0,
57  "Constant to use when no source app can provide a valid value for a target location.");
58 
59  // Block restrictions
60  params.addParam<std::vector<SubdomainName>>(
61  "from_blocks",
62  "Subdomain restriction to transfer from (defaults to all the origin app domain)");
63  params.addParam<std::vector<SubdomainName>>(
64  "to_blocks", "Subdomain restriction to transfer to, (defaults to all the target app domain)");
65 
66  // Boundary restrictions
67  params.addParam<std::vector<BoundaryName>>(
68  "from_boundaries",
69  "The boundary we are transferring from (if not specified, whole domain is used).");
70  params.addParam<std::vector<BoundaryName>>(
71  "to_boundaries",
72  "The boundary we are transferring to (if not specified, whole domain is used).");
73  MooseEnum nodes_or_sides("nodes sides", "sides");
74  params.addParam<MooseEnum>("elemental_boundary_restriction",
75  nodes_or_sides,
76  "Whether elemental variable boundary restriction is considered by "
77  "element side or element nodes");
78 
79  // Mesh division restriction
80  params.addParam<MeshDivisionName>("from_mesh_division",
81  "Mesh division object on the origin application");
82  params.addParam<MeshDivisionName>("to_mesh_division",
83  "Mesh division object on the target application");
84  MooseEnum mesh_division_uses("spatial_restriction matching_division matching_subapp_index none",
85  "none");
86  params.addParam<MooseEnum>("from_mesh_division_usage",
87  mesh_division_uses,
88  "How to use the source mesh division in the transfer. See object "
89  "documentation for description of each option");
90  params.addParam<MooseEnum>("to_mesh_division_usage",
91  mesh_division_uses,
92  "How to use the target mesh division in the transfer. See object "
93  "documentation for description of each option");
94 
95  // Array and vector variables
96  params.addParam<std::vector<unsigned int>>("source_variable_components",
97  std::vector<unsigned int>(),
98  "The source array or vector variable component(s).");
99  params.addParam<std::vector<unsigned int>>("target_variable_components",
100  std::vector<unsigned int>(),
101  "The target array or vector variable component(s).");
102 
103  // Search options
104  params.addParam<bool>(
105  "greedy_search",
106  false,
107  "Whether or not to send a point to all the domains. If true, all the processors will be "
108  "checked for a given point."
109  "The code will be slow if this flag is on but it will give a better solution.");
110  params.addParam<bool>(
111  "error_on_miss",
112  true,
113  "Whether or not to error in the case that a target point is not found in the source domain.");
114  params.addParam<bool>("use_bounding_boxes",
115  true,
116  "When set to false, bounding boxes will not be used to restrict the source "
117  "of the transfer. Either source applications must be set using the "
118  "from_mesh_division parameter, or a greedy search must be used.");
119  params.addParam<bool>(
120  "use_nearest_app",
121  false,
122  "When True, transfers from a child application will work by finding the nearest (using "
123  "the `position` + mesh centroid) sub-app and query that app for the value to transfer.");
124  params.addParam<PositionsName>(
125  "use_nearest_position",
126  "Name of the the Positions object (in main app) such that transfers to/from a child "
127  "application will work by finding the nearest position to a target and query only the "
128  "app / points closer to this position than to any other position for the value to transfer.");
129  params.addParam<bool>(
130  "from_app_must_contain_point",
131  false,
132  "Wether on not the origin mesh must contain the point to evaluate data at. If false, this "
133  "allows for interpolation between origin app meshes. Origin app bounding boxes are still "
134  "considered so you may want to increase them with 'fixed_bounding_box_size'");
135  params.addParam<bool>("search_value_conflicts",
136  false,
137  "Whether to look for potential conflicts between two valid and different "
138  "source values for any target point");
139  params.addParam<unsigned int>(
140  "value_conflicts_output",
141  10,
142  "Maximum number of conflicts to output if value-conflicts, from equidistant sources to a "
143  "given transfer target location, search is turned on");
144 
145  params.addParamNamesToGroup(
146  "to_blocks from_blocks to_boundaries from_boundaries elemental_boundary_restriction "
147  "from_mesh_division from_mesh_division_usage to_mesh_division to_mesh_division_usage",
148  "Transfer spatial restriction");
149  params.addParamNamesToGroup(
150  "greedy_search use_bounding_boxes use_nearest_app use_nearest_position "
151  "search_value_conflicts",
152  "Search algorithm");
153  params.addParamNamesToGroup("error_on_miss from_app_must_contain_point extrapolation_constant",
154  "Extrapolation behavior");
155  params.addParamNamesToGroup("bbox_factor fixed_bounding_box_size", "Source app bounding box");
156  return params;
157 }
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:33
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)

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

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 272 of file MultiAppGeneralFieldTransfer.h.

Referenced by postExecute(), and prepareToTransfer().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 353 of file MooseBase.h.

◆ _bbox_factor

Real MultiAppGeneralFieldTransfer::_bbox_factor
private

How much we should relax bounding boxes.

Definition at line 348 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(), 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(), CoarsenBlockGenerator::generate(), MeshGenerator::generateInternal(), VariableCondensationPreconditioner::getDofToCondense(), InversePowerMethod::init(), NonlinearEigen::init(), FEProblemBase::initialAdaptMesh(), DefaultMultiAppFixedPointConvergence::initialize(), EigenExecutionerBase::inversePowerIteration(), FEProblemBase::joinAndFinalize(), TransientBase::keepGoing(), IterationAdaptiveDT::limitDTByFunction(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::logAdd(), EigenExecutionerBase::makeBXConsistent(), Console::meshChanged(), MooseBase::mooseDeprecated(), 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(), 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(), NonlinearSystem::solve(), FixedPointSolve::solve(), LinearSystem::solve(), LStableDirk2::solve(), LStableDirk3::solve(), ImplicitMidpoint::solve(), ExplicitTVDRK2::solve(), LStableDirk4::solve(), AStableDirk4::solve(), ExplicitRK2::solve(), TransientMultiApp::solveStep(), FixedPointSolve::solveStep(), PerfGraphLivePrint::start(), AB2PredictorCorrector::step(), NonlinearEigen::takeStep(), MFEMTransient::takeStep(), TransientBase::takeStep(), TerminateChainControl::terminate(), Convergence::verboseOutput(), Console::writeTimestepInformation(), Console::writeVariableNorms(), and FEProblemBase::~FEProblemBase().

◆ _current_direction

MooseEnum Transfer::_current_direction
protectedinherited

◆ _current_execute_flag

const ExecFlagType& SetupInterface::_current_execute_flag
protectedinherited

Reference to FEProblemBase.

Definition at line 78 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 345 of file MultiAppGeneralFieldTransfer.h.

Referenced by 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 254 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 50 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 342 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 351 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 360 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 148 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 257 of file MultiAppGeneralFieldTransfer.h.

Referenced by acceptPointInOriginMesh(), MultiAppGeneralFieldNearestLocationTransfer::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 195 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 354 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 261 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 266 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 369 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 359 of file MooseBase.h.

Referenced by AddBCAction::act(), AddConstraintAction::act(), AddKernelAction::act(), AddDamperAction::act(), AddDiracKernelAction::act(), PartitionerAction::act(), AddMaterialAction::act(), AddFVInitialConditionAction::act(), AddDGKernelAction::act(), AddIndicatorAction::act(), AddUserObjectAction::act(), ReadExecutorParamsAction::act(), AddMarkerAction::act(), AddMeshGeneratorAction::act(), AddMultiAppAction::act(), AddNodalKernelAction::act(), AddFVInterfaceKernelAction::act(), AddPostprocessorAction::act(), AddScalarKernelAction::act(), AddInitialConditionAction::act(), AddTransferAction::act(), AddInterfaceKernelAction::act(), AddVectorPostprocessorAction::act(), AddFunctorMaterialAction::act(), AddPositionsAction::act(), AddReporterAction::act(), AddTimesAction::act(), AddFieldSplitAction::act(), AddFVKernelAction::act(), AddFVBCAction::act(), AddMeshDivisionAction::act(), AddHDGKernelAction::act(), AddTimeStepperAction::act(), AddDistributionAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddFunctionAction::act(), AddConvergenceAction::act(), AddOutputAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddMeshModifiersAction::act(), AddCorrectorAction::act(), AddSamplerAction::act(), AddControlAction::act(), AddMFEMFESpaceAction::act(), AddMFEMSubMeshAction::act(), AddMFEMPreconditionerAction::act(), AddMFEMSolverAction::act(), AddPeriodicBCAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromXY(), PiecewiseLinearBase::buildInterpolation(), CombinerGenerator::CombinerGenerator(), Executor::Executor(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), QuadraturePointMultiApp::fillPositions(), CentroidMultiApp::fillPositions(), MultiApp::fillPositions(), FunctionDT::FunctionDT(), FillBetweenPointVectorsGenerator::generate(), FillBetweenSidesetsGenerator::generate(), FillBetweenCurvesGenerator::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 362 of file MooseBase.h.

Referenced by AddFVICAction::act(), AddICAction::act(), CreateProblemDefaultAction::act(), CreateProblemAction::act(), SetupMeshAction::act(), ComposeTimeStepperAction::act(), SetupDebugAction::act(), AddAuxKernelAction::act(), AddPeriodicBCAction::act(), CommonOutputAction::act(), FunctorMaterial::addFunctorPropertyByBlocks(), BreakMeshByBlockGeneratorBase::BreakMeshByBlockGeneratorBase(), PiecewiseTabularBase::buildFromFile(), PNGOutput::calculateRescalingValues(), MooseBase::callMooseError(), MooseBase::connectControllableParams(), Console::Console(), MooseApp::copyInputs(), MaterialBase::declareADProperty(), 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::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), Console::initialSetup(), MooseBase::isParamSetByUser(), MooseBase::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBase::messagePrefix(), MooseBase::MooseBase(), MooseApp::outputMachineReadableData(), MooseBase::paramError(), MooseBase::parameters(), MooseBase::paramInfo(), MooseBase::paramWarning(), MooseMesh::prepare(), Eigenvalue::prepareSolverOptions(), 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 124 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 127 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 363 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 375 of file MultiAppGeneralFieldTransfer.h.

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

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 227 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 236 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 230 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 233 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 275 of file MultiAppGeneralFieldTransfer.h.

Referenced by outputValueConflicts().

◆ _skip_coordinate_collapsing

const bool MultiAppTransfer::_skip_coordinate_collapsing
protectedinherited

◆ _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 219 of file MultiAppGeneralFieldTransfer.h.

Referenced by acceptPointInOriginMesh(), MultiAppGeneralFieldNearestLocationTransfer::checkRestrictionsForSource(), MultiAppGeneralFieldNearestLocationTransfer::MultiAppGeneralFieldNearestLocationTransfer(), 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 225 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 228 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 198 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 202 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 339 of file MultiAppGeneralFieldTransfer.h.

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

◆ app_param

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

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


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