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...
 
virtual 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...
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 Calls moose error with the message msg. More...
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 The unique parameter name of a valid parameter of this object for accessing parameter controls. More...
 
const InputParametersparameters () const
 Get the parameters of the object. More...
 
MooseObjectName uniqueName () const
 The unique name for accessing input parameters of this object in the InputParameterWarehouse. More...
 
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 &nm) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default. 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...
 
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 mooseError (Args &&... args) const
 Emits an error prefixed with object name and type. More...
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError(). More...
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 Emits a documented error with object name and type. 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
 
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. 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...
 

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
 

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 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 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...
 
const std::string _type
 The type of this class. More...
 
const std::string _name
 The name of this class. More...
 
const InputParameters_pars
 Parameters of this object, references the InputParameters stored in the InputParametersWarehouse. More...
 
Factory_factory
 The Factory associated with the MooseApp. More...
 
ActionFactory_action_factory
 Builds Actions. 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.
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 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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:434
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
const std::vector< unsigned int > _to_var_components
Target array/vector variable components.
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.
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
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:84
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 ...
bool isParamSetByUser(const std::string &nm) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
virtual void addReporter(const std::string &type, const std::string &name, InputParameters &parameters)
Add a Reporter object to the simulation.
bool _already_output_search_value_conflicts
Whether we already output the search value conflicts.
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.
const unsigned int _search_value_conflicts_max_log
How many conflicts are output to console.
const InputParameters & parameters() const
Get the parameters of the object.
const bool _elemental_boundary_restriction_on_sides
Whether elemental variable boundary restriction is considered by element side or element nodes...
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 1530 of file MultiAppGeneralFieldTransfer.C.

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

1535 {
1536  if (_use_bounding_boxes && !local_bboxes[i_from].contains_point(pt))
1537  return false;
1538  else
1539  {
1540  auto * pl = _from_point_locators[i_from].get();
1541  const auto from_global_num = getGlobalSourceAppIndex(i_from);
1542  const auto transformed_pt = _from_transforms[from_global_num]->mapBack(pt);
1543 
1544  // Check point against source block restriction
1545  if (!_from_blocks.empty() && !inBlocks(_from_blocks, pl, transformed_pt))
1546  return false;
1547 
1548  // Check point against source boundary restriction. Block restriction will speed up the search
1549  if (!_from_boundaries.empty() &&
1550  !onBoundaries(_from_boundaries, _from_blocks, *_from_meshes[i_from], pl, transformed_pt))
1551  return false;
1552 
1553  // Check point against the source mesh division
1554  if ((!_from_mesh_divisions.empty() || !_to_mesh_divisions.empty()) &&
1555  !acceptPointMeshDivision(transformed_pt, i_from, only_from_mesh_div))
1556  return false;
1557 
1558  // Get nearest position (often a subapp position) for the target point
1559  // We want values from the child app that is closest to the same position as the target
1560  Point nearest_position_source;
1562  {
1563  const bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1564  // The search for the nearest position is done in the reference frame
1565  const Point nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1566  nearest_position_source = _nearest_positions_obj->getNearestPosition(
1567  (*_from_transforms[from_global_num])(Point(0, 0, 0)), initial);
1568 
1570  _from_transforms[from_global_num]->hasNonTranslationTransformation())
1571  mooseError("Rotation and scaling currently unsupported with nearest positions transfer.");
1572 
1573  // Compute distance to nearest position and nearest position source
1574  const Real distance_to_position_nearest_source = (pt - nearest_position_source).norm();
1575  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1576 
1577  // Source (usually app position) is not closest to the same positions as the target, dont
1578  // send values. We check the distance instead of the positions because if they are the same
1579  // that means there's two equidistant positions and we would want to capture that as a "value
1580  // conflict"
1581  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_nearest_source,
1582  distance_to_nearest_position))
1583  return false;
1584 
1585  // Set the distance as the distance from the nearest position to the target point
1586  distance = distance_to_position_nearest_source;
1587  }
1588 
1589  // Check that the app actually contains the origin point
1590  // We dont need to check if we already found it in a block or a boundary
1591  if (_from_blocks.empty() && _from_boundaries.empty() && _source_app_must_contain_point &&
1592  !inMesh(pl, transformed_pt))
1593  return false;
1594  }
1595  return true;
1596 }
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:371
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
std::set< SubdomainID > _from_blocks
Origin block(s) restriction.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
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:28

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

Referenced by acceptPointInOriginMesh().

1719 {
1720  // This routine can also be called to examine if the to_mesh_division index matches the current
1721  // source subapp index
1722  unsigned int source_mesh_div = MooseMeshDivision::INVALID_DIVISION_INDEX - 1;
1723  if (!_from_mesh_divisions.empty())
1724  source_mesh_div = _from_mesh_divisions[i_local]->divisionIndex(pt);
1725 
1726  // If the point is not indexed in the source division
1727  if (!_from_mesh_divisions.empty() && source_mesh_div == MooseMeshDivision::INVALID_DIVISION_INDEX)
1728  return false;
1729  // If the point is not the at the same index in the target and the origin meshes, reject
1730  else if ((_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
1731  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX) &&
1732  source_mesh_div != only_from_this_mesh_div)
1733  return false;
1734  // If the point is at a certain division index that is not the same as the index of the subapp
1735  // we wanted the information to be from for that point, reject
1736  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1737  source_mesh_div != only_from_this_mesh_div)
1738  return false;
1739  else if (_to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX &&
1740  only_from_this_mesh_div != getGlobalSourceAppIndex(i_local))
1741  return false;
1742  else
1743  return true;
1744 }
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 58 of file MultiAppTransfer.C.

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

59 {
60  params.addRangeCheckedParam<Real>(
61  "bbox_factor",
62  1 + TOLERANCE,
63  "bbox_factor>0",
64  "Multiply bounding box width (in all directions) by the prescribed factor. Values less than "
65  "1 will shrink the bounding box; values greater than 1 will enlarge the bounding box. It is "
66  "generally not advised to ever shrink the bounding box. On the other hand it may be helpful "
67  "to enlarge the bounding box. Larger bounding boxes will lead to more accurate determination "
68  "of the closest node/element with the tradeoff of more communication.");
69 }
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.

Definition at line 72 of file MultiAppTransfer.C.

Referenced by MultiAppTransfer::validParams().

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

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

Referenced by locatePointReceivers().

1786 {
1787  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
1788 
1789  std::array<Point, 8> all_points;
1790  for (unsigned int x = 0; x < 2; x++)
1791  for (unsigned int y = 0; y < 2; y++)
1792  for (unsigned int z = 0; z < 2; z++)
1793  all_points[x + 2 * y + 4 * z] =
1794  Point(source_points[x](0), source_points[y](1), source_points[z](2));
1795 
1796  Real max_distance = 0.;
1797 
1798  for (unsigned int i = 0; i < 8; i++)
1799  {
1800  Real distance = (p - all_points[i]).norm();
1801  if (distance > max_distance)
1802  max_distance = distance;
1803  }
1804 
1805  return max_distance;
1806 }
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 1809 of file MultiAppGeneralFieldTransfer.C.

Referenced by locatePointReceivers().

1810 {
1811  std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
1812 
1813  std::array<Point, 8> all_points;
1814  for (unsigned int x = 0; x < 2; x++)
1815  for (unsigned int y = 0; y < 2; y++)
1816  for (unsigned int z = 0; z < 2; z++)
1817  all_points[x + 2 * y + 4 * z] =
1818  Point(source_points[x](0), source_points[y](1), source_points[z](2));
1819 
1820  Real min_distance = std::numeric_limits<Real>::max();
1821 
1822  for (unsigned int i = 0; i < 8; i++)
1823  {
1824  Real distance = (p - all_points[i]).norm();
1825  if (distance < min_distance)
1826  min_distance = distance;
1827  }
1828 
1829  return min_distance;
1830 }
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 885 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

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

Referenced by extractOutgoingPoints().

690 {
691  std::set<processor_id_type> processors;
692  // Find which processors will receive point data so they can send back value data
693  // The list can be larger than needed, depending on the heuristic / algorithm used to make
694  // the call on whether a processor (and the apps it runs) should be involved
695  processors.clear();
696  locatePointReceivers(point, processors);
697 
698  // We need to send this location data to these processors so they can send back values
699  for (const auto pid : processors)
700  {
701  // Select which from_mesh_division the source data must come from for this point
702  unsigned int required_source_division = 0;
703  if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
704  required_source_division = getGlobalTargetAppIndex(problem_id);
705  else if (_from_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
706  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_DIVISION_INDEX ||
707  _to_mesh_division_behavior == MeshDivisionTransferUse::MATCH_SUBAPP_INDEX)
708  required_source_division = _to_mesh_divisions[problem_id]->divisionIndex(
709  _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(point));
710 
711  // Skip if we already know we don't want the point
712  if (required_source_division == MooseMeshDivision::INVALID_DIVISION_INDEX)
713  continue;
714 
715  // Store outgoing information for every source process
716  outgoing_points[pid].push_back(std::pair<Point, unsigned int>(point, required_source_division));
717 
718  // Store point information locally for processing received data
719  // We can use these information when inserting values into the solution vector
720  PointInfo pointinfo;
721  pointinfo.problem_id = problem_id;
722  pointinfo.dof_object_id = dof_object_id;
723  _processor_to_pointInfoVec[pid].push_back(pointinfo);
724  }
725 }
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()

void MooseBase::callMooseError ( std::string  msg,
const bool  with_prefix 
) const
inherited

Calls moose error with the message msg.

Will prefix the message with the subapp name if one exists.

If with_prefix, then add the prefix from errorPrefix() to the error.

Definition at line 33 of file MooseBase.C.

Referenced by InputParameters::callMooseErrorHelper(), MooseBaseErrorInterface::mooseDocumentedError(), MooseBaseErrorInterface::mooseError(), MooseBaseErrorInterface::mooseErrorNonPrefixed(), and MooseBaseParameterInterface::paramError().

34 {
36  const std::string prefix = _app.isUltimateMaster() ? "" : _app.name();
37  if (with_prefix)
38  msg = errorPrefix("error") + msg;
39  moose::internal::mooseErrorRaw(msg, prefix);
40 }
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:847
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
MooseApp & _app
The MOOSE application this is associated with.
Definition: MooseBase.h:84
void mooseErrorRaw(std::string msg, const std::string prefix="")
Definition: MooseError.C:53
void mooseConsole()
Send current output buffer to Console output objects.
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2381

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

Referenced by MultiAppTransfer::MultiAppTransfer().

163 {
165  if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum())
166  mooseDoOnce(
167  mooseWarning("MultiAppTransfer execute_on flags do not match associated from_multi_app "
168  "execute_on flags"));
169 
171  if (getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
172  mooseDoOnce(
173  mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
174  "execute_on flags"));
175 
176  // In the case of siblings transfer, the check will be looser
178  if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum() &&
179  getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
180  mooseDoOnce(
181  mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
182  "and from_multi_app execute_on flags"));
183 }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
const ExecFlagEnum & getExecuteOnEnum() const
Return the execute on MultiMooseEnum for this object.
std::shared_ptr< MultiApp > _to_multi_app

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

Referenced by MultiAppDofCopyTransfer::transfer().

605 {
606  if (!fe_problem.hasVariable(var_name))
607  {
608  if (param_name.empty())
609  mooseError("The variable '", var_name, "' does not exist.");
610  else
611  paramError(param_name, "The variable '", var_name, "' does not exist.");
612  }
613 }
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 ...
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

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

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

1748 {
1749  mooseAssert(_nearest_positions_obj, "Should not be here without a positions object");
1751  paramError("skip_coordinate_collapsing", "Coordinate collapsing not implemented");
1752  bool initial = _fe_problem.getCurrentExecuteOnFlag() == EXEC_INITIAL;
1754  // Faster to just compare the index
1755  return pos_index == _nearest_positions_obj->getNearestPositionIndex(pt, initial);
1756  else
1757  {
1758  // Get the distance to the position and see if we are missing a value just because the position
1759  // is not officially the closest, but it is actually at the same distance
1760  const auto nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1761  const auto nearest_position_at_index = _nearest_positions_obj->getPosition(pos_index, initial);
1762  Real distance_to_position_at_index = (pt - nearest_position_at_index).norm();
1763  const Real distance_to_nearest_position = (pt - nearest_position).norm();
1764 
1765  if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_at_index,
1766  distance_to_nearest_position))
1767  return false;
1768  // Actually the same position (point)
1769  else if (nearest_position == nearest_position_at_index)
1770  return true;
1771  else
1772  {
1773  mooseWarning("Two equidistant positions ",
1774  nearest_position,
1775  " and ",
1776  nearest_position_at_index,
1777  " detected near point ",
1778  pt);
1779  return true;
1780  }
1781  }
1782 }
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:371
const bool _skip_coordinate_collapsing
Whether to skip coordinate collapsing (transformations of coordinates between applications using diff...
const ExecFlagType & getCurrentExecuteOnFlag() const
Return/set the current execution flag.
FEProblemBase & _fe_problem
Definition: Transfer.h:97
const Point & getPosition(unsigned int index, bool initial) const
Getter for a single position at a known index.
Definition: Positions.C:59
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
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...
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 ...
auto norm(const T &a) -> decltype(std::abs(a))
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:28

◆ connectControllableParams()

void MooseBaseParameterInterface::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 33 of file MooseBaseParameterInterface.C.

37 {
38  MooseObjectParameterName primary_name(uniqueName(), parameter);
39  const auto base_type = _factory.getValidParams(object_type).get<std::string>("_moose_base");
40  MooseObjectParameterName secondary_name(base_type, object_name, object_parameter);
42  primary_name, secondary_name);
43 
44  const auto & tags = _pars.get<std::vector<std::string>>("control_tags");
45  for (const auto & tag : tags)
46  {
47  if (!tag.empty())
48  {
49  // Only adds the parameter with the different control tags if the derived class
50  // properly registers the parameter to its own syntax
51  MooseObjectParameterName tagged_name(tag, _moose_base.name(), parameter);
53  tagged_name, secondary_name, /*error_on_empty=*/false);
54  }
55  }
56 }
void addControllableParameterConnection(const MooseObjectParameterName &primary, const MooseObjectParameterName &secondary, bool error_on_empty=true)
Method for linking control parameters of different names.
const MooseBase & _moose_base
The MooseBase object that inherits this class.
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:2839
InputParameters getValidParams(const std::string &name) const
Get valid parameters for the object.
Definition: Factory.C:68
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
MooseApp & getMooseApp() const
Get the MooseApp this class is associated with.
Definition: MooseBase.h:45
Factory & _factory
The Factory associated with the MooseApp.
MooseObjectName uniqueName() const
The unique name for accessing input parameters of this object in the InputParameterWarehouse.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
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 1965 of file MultiAppGeneralFieldTransfer.C.

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

1969 {
1970  // No conflict if we're not looking for them
1972  // Only consider conflicts if the values are valid and different
1973  if (current_value != GeneralFieldTransfer::BetterOutOfMeshValue &&
1975  !MooseUtils::absoluteFuzzyEqual(current_value, new_value))
1976  // Conflict only occurs if the origin points are equidistant
1977  if (MooseUtils::absoluteFuzzyEqual(current_distance, new_distance))
1978  return true;
1979  return false;
1980 }
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:371
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 40 of file MooseObject.h.

Referenced by EigenKernel::enabled().

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

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

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

662 {
663  // parent app is the source app, EXEC_TRANSFER is fine
664  if (!hasFromMultiApp())
665  return;
666  // Get the app and problem
667  const auto & app = getFromMultiApp();
668  if (!app->hasApp())
669  return;
670  const auto & problem = app->appProblemBase(app->firstLocalApp());
671  // Use the warehouse to find the object
672  std::vector<SetupInterface *> objects_with_exec_on;
673  problem.theWarehouse()
674  .query()
675  .template condition<AttribName>(object_name)
676  .template condition<AttribExecOns>(EXEC_TRANSFER)
677  .queryInto(objects_with_exec_on);
678  if (objects_with_exec_on.size())
679  mooseError("Object '" + object_name +
680  "' should not be executed on EXEC_TRANSFER, because this transfer has "
681  "indicated it does not support it.\nExecuting this object on TIMESTEP_END should be "
682  "sufficient to get updated values.");
683 }
const ExecFlagType EXEC_TRANSFER
Definition: Moose.C:51
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.

◆ errorPrefix()

std::string MooseBase::errorPrefix ( const std::string &  error_type) const
inherited
Returns
A prefix to be used in errors that contains the input file location associated with this object (if any) and the name and type of the object.

Definition at line 43 of file MooseBase.C.

Referenced by MooseBase::callMooseError(), MooseBaseErrorInterface::mooseDeprecated(), MooseBaseErrorInterface::mooseInfo(), MooseBaseErrorInterface::mooseWarning(), and MooseBaseParameterInterface::paramErrorMsg().

44 {
45  std::stringstream oss;
46  if (const auto node = _params.getHitNode())
47  if (!node->isRoot())
48  oss << node->fileLocation() << ":\n";
49  oss << "The following " << error_type << " occurred in the ";
50  if (const auto base_ptr = _params.getBase())
51  oss << *base_ptr;
52  else
53  oss << "object";
54  oss << " '" << name() << "' of type " << type() << ".\n\n";
55  return oss.str();
56 }
const hit::Node * getHitNode(const std::string &param) const
std::optional< std::string > getBase() const
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & _params
The object&#39;s parameteres.
Definition: MooseBase.h:94
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

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

Referenced by outputValueConflicts().

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

Referenced by outputValueConflicts().

1045 {
1046  const auto var_name = getToVarName(var_index);
1047  // We must check a posteriori because we could have two
1048  // equidistant points with different values from two different problems, but a third point from
1049  // another problem is actually closer, so there is no conflict because only that last one
1050  // matters We check here whether the potential conflicts actually were the nearest points Loop
1051  // over potential conflicts
1052  for (auto conflict_it = _received_conflicts.begin(); conflict_it != _received_conflicts.end();)
1053  {
1054  const auto potential_conflict = *conflict_it;
1055  bool overlap_found = false;
1056 
1057  // Extract info for the potential conflict
1058  const unsigned int problem_id = std::get<0>(potential_conflict);
1059  const dof_id_type dof_object_id = std::get<1>(potential_conflict);
1060  const Point p = std::get<2>(potential_conflict);
1061  const Real distance = std::get<3>(potential_conflict);
1062 
1063  // Extract target variable info
1064  auto & es = getEquationSystem(*_to_problems[problem_id], _displaced_target_mesh);
1065  System * to_sys = find_sys(es, var_name);
1066  auto var_num = to_sys->variable_number(var_name);
1067  auto & fe_type = to_sys->variable_type(var_num);
1068  bool is_nodal = _to_variables[var_index]->isNodal();
1069 
1070  // Higher order elemental
1071  if (fe_type.order > CONSTANT && !is_nodal)
1072  {
1073  auto cached_distance = distance_caches[problem_id].find(p);
1074  if (cached_distance == distance_caches[problem_id].end())
1075  mooseError("Conflict point was not found in the map of all origin-target distances");
1076  // Distance is still the distance when we detected a potential overlap
1077  if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1078  overlap_found = true;
1079  }
1080  // Nodal and const monomial variable
1082  dofobject_to_valsvec[problem_id].find(dof_object_id)->second.distance, distance))
1083  overlap_found = true;
1084 
1085  // Map will only keep the actual overlaps
1086  if (!overlap_found)
1087  _received_conflicts.erase(conflict_it);
1088  else
1089  ++conflict_it;
1090  }
1091 }
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:371
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.
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 438 of file MultiAppGeneralFieldTransfer.C.

Referenced by MultiAppGeneralFieldUserObjectTransfer::execute().

439 {
440  TIME_SECTION(
441  "MultiAppGeneralFieldTransfer::execute()_" + name(), 5, "Transfer execution " + name());
442  getAppInfo();
443 
444  // Set up bounding boxes, etc
446 
447  // loop over the vector of variables and make the transfer one by one
448  for (const auto i : make_range(_var_size))
449  transferVariable(i);
450 
451  postExecute();
452 }
unsigned int _var_size
The number of variables to transfer.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
virtual void getAppInfo() override
This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.)
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 455 of file MultiAppTransfer.C.

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

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

◆ extractLocalFromBoundingBoxes()

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

Definition at line 871 of file MultiAppGeneralFieldTransfer.C.

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

872 {
873  local_bboxes.resize(_froms_per_proc[processor_id()]);
874  // Find the index to the first of this processor's local bounding boxes.
875  unsigned int local_start = 0;
876  for (processor_id_type i_proc = 0; i_proc < n_processors() && i_proc != processor_id(); ++i_proc)
877  local_start += _froms_per_proc[i_proc];
878 
879  // Extract the local bounding boxes.
880  for (const auto i_from : make_range(_froms_per_proc[processor_id()]))
881  local_bboxes[i_from] = _from_bboxes[local_start + i_from];
882 }
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 728 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

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

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

Referenced by execute().

423 {
425 
426  // Create the point locators to locate evaluation points in the origin mesh(es)
427  _from_point_locators.resize(_from_problems.size());
428  for (const auto i_from : index_range(_from_problems))
429  {
430  const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
431  _from_point_locators[i_from] =
432  PointLocatorBase::build(TREE_LOCAL_ELEMENTS, from_moose_mesh.getMesh());
433  _from_point_locators[i_from]->enable_out_of_mesh_mode();
434  }
435 }
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)

◆ getCheckedPointerParam()

template<typename T >
T MooseBaseParameterInterface::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 286 of file MooseBaseParameterInterface.h.

288 {
289  return parameters().getCheckedPointerParam<T>(name, error_string);
290 }
std::string name(const ElemQuality q)
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 InputParameters & parameters() const
Get the parameters of the object.

◆ 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 }
void mooseDeprecated(Args &&... args) const
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
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
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  // Throw on error so that if getPath() fails, we can throw an error
50  // with the context of _parent.mooseError()
51  const auto throw_on_error_before = Moose::_throw_on_error;
53  std::optional<std::string> error;
54 
55  // This will search the data paths for this relative path
56  Moose::DataFileUtils::Path found_path;
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  Moose::_throw_on_error = throw_on_error_before;
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 }
Context context
Context for the file (where it came from)
Definition: DataFileUtils.h:48
void mooseInfo(Args &&... args) const
void mooseWarning(Args &&... args) const
Emits a warning prefixed with object name and type.
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
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
Definition: Moose.C:758
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.

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

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

486 {
487  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
488  for (unsigned int i = 0; i < _from_meshes.size(); i++)
489  {
490  // Get a bounding box around the mesh elements that are local to the current
491  // processor.
492  BoundingBox bbox = MeshTools::create_local_bounding_box(*_from_meshes[i]);
493 
494  // Translate the bounding box to the from domain's position. We may have rotations so we must
495  // be careful in constructing the new min and max (first and second)
496  const auto from_global_num = getGlobalSourceAppIndex(i);
497  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
498 
499  // Cast the bounding box into a pair of points (so it can be put through
500  // MPI communication).
501  bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
502  }
503 
504  // Serialize the bounding box points.
505  _communicator.allgather(bb_points);
506 
507  // Recast the points back into bounding boxes and return.
508  std::vector<BoundingBox> bboxes(bb_points.size());
509  for (unsigned int i = 0; i < bb_points.size(); i++)
510  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
511 
512  // possibly extend bounding boxes
514 
515  return bboxes;
516 }
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 519 of file MultiAppTransfer.C.

520 {
521  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
522  const Real min_r = std::numeric_limits<Real>::lowest();
523  const Real max_r = std::numeric_limits<Real>::max();
524 
525  for (unsigned int i = 0; i < _from_meshes.size(); i++)
526  {
527 
528  Point min(max_r, max_r, max_r);
529  Point max(min_r, min_r, min_r);
530  bool at_least_one = false;
531 
532  // TODO: Factor this into mesh_tools after adding new boundary bounding box routine.
533  const ConstBndNodeRange & bnd_nodes = *_from_meshes[i]->getBoundaryNodeRange();
534  for (const auto & bnode : bnd_nodes)
535  {
536  if (bnode->_bnd_id == boundary_id &&
537  bnode->_node->processor_id() == _from_meshes[i]->processor_id())
538  {
539  at_least_one = true;
540  const auto & node = *bnode->_node;
541  for (const auto i : make_range(Moose::dim))
542  {
543  min(i) = std::min(min(i), node(i));
544  max(i) = std::max(max(i), node(i));
545  }
546  }
547  }
548 
549  BoundingBox bbox(min, max);
550  if (!at_least_one)
551  bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
552  else
553  {
554  // Translate the bounding box to the from domain's position. We may have rotations so we must
555  // be careful in constructing the new min and max (first and second)
556  const auto from_global_num = getGlobalSourceAppIndex(i);
557  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
558  }
559 
560  // Cast the bounding box into a pair of points (so it can be put through
561  // MPI communication).
562  bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
563  }
564 
565  // Serialize the bounding box points.
566  _communicator.allgather(bb_points);
567 
568  // Recast the points back into bounding boxes and return.
569  std::vector<BoundingBox> bboxes(bb_points.size());
570  for (unsigned int i = 0; i < bb_points.size(); i++)
571  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
572 
573  // possibly extend bounding boxes
575 
576  return bboxes;
577 }
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:153
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.

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

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

581 {
582  std::vector<unsigned int> froms_per_proc;
583  if (_to_multi_app)
584  froms_per_proc.resize(n_processors(), 1);
585  if (_from_multi_app)
586  {
587  froms_per_proc.resize(n_processors());
588  _communicator.allgather(_from_multi_app->numLocalApps(), froms_per_proc);
589  }
590  return froms_per_proc;
591 }
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 1927 of file MultiAppGeneralFieldTransfer.C.

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

1928 {
1929  mooseAssert(var_index < _from_var_names.size(), "No source variable at this index");
1930  VariableName var_name = _from_var_names[var_index];
1931  if (_from_var_components.size())
1932  var_name += "_" + std::to_string(_from_var_components[var_index]);
1933  return var_name;
1934 }
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 1917 of file MultiAppGeneralFieldTransfer.C.

Referenced by prepareToTransfer().

1918 {
1919  std::vector<unsigned int> global_app_start_per_proc(1, -1);
1920  if (_from_local2global_map.size())
1921  global_app_start_per_proc[0] = _from_local2global_map[0];
1922  _communicator.allgather(global_app_start_per_proc, true);
1923  return global_app_start_per_proc;
1924 }
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 645 of file MultiAppTransfer.C.

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

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

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

654 {
656  ? 0
658 }
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 1947 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

1948 {
1949  Point max_dimension = {std::numeric_limits<Real>::min(),
1952 
1953  for (const auto & to_mesh : _to_meshes)
1954  {
1955  const auto bbox = to_mesh->getInflatedProcessorBoundingBox();
1956  for (const auto dim : make_range(LIBMESH_DIM))
1957  max_dimension(dim) = std::max(
1958  max_dimension(dim), std::max(std::abs(bbox.first(dim)), std::abs(bbox.second(dim))));
1959  }
1960 
1961  return max_dimension;
1962 }
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:153
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 45 of file MooseBase.h.

Referenced by ChainControlSetupAction::act(), AddDefaultConvergenceAction::addDefaultMultiAppFixedPointConvergence(), AddDefaultConvergenceAction::addDefaultNonlinearConvergence(), FEProblemBase::advanceState(), ParsedChainControl::buildFunction(), ReporterTransferInterface::checkHasReporterValue(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), Coupleable::checkWritableVar(), ComponentPhysicsInterface::ComponentPhysicsInterface(), MooseBaseParameterInterface::connectControllableParams(), 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(), and VectorPostprocessorInterface::vectorPostprocessorsAdded().

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

◆ 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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< MultiApp > _to_multi_app
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getParam() [1/2]

template<typename T >
const T & MooseBaseParameterInterface::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 215 of file MooseBaseParameterInterface.h.

Referenced by CreateDisplacedProblemAction::act(), AddPeriodicBCAction::act(), DiffusionPhysicsBase::addPostprocessors(), ADNodalKernel::ADNodalKernel(), ArrayParsedAux::ArrayParsedAux(), AddPeriodicBCAction::autoTranslationBoundaries(), BicubicSplineFunction::BicubicSplineFunction(), ComponentPhysicsInterface::ComponentPhysicsInterface(), FunctorAux::computeValue(), FEProblemBase::createTagSolutions(), CutMeshByLevelSetGenerator::CutMeshByLevelSetGenerator(), DebugResidualAux::DebugResidualAux(), AccumulateReporter::declareLateValues(), DerivativeParsedMaterialTempl< is_ad >::DerivativeParsedMaterialTempl(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), EigenKernel::EigenKernel(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), ParsedSubdomainGeneratorBase::functionInitialize(), FVInterfaceKernel::FVInterfaceKernel(), BoundaryLayerSubdomainGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), BlockDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), GeneratedMeshGenerator::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::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(), IterationAdaptiveDT::limitDTToPostprocessorValue(), MooseMesh::MooseMesh(), MooseStaticCondensationPreconditioner::MooseStaticCondensationPreconditioner(), MooseVariableBase::MooseVariableBase(), MultiSystemSolveObject::MultiSystemSolveObject(), NEML2ModelExecutor::NEML2ModelExecutor(), NestedDivision::NestedDivision(), ConsoleUtils::outputExecutionInformation(), 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(), SingleMatrixPreconditioner::SingleMatrixPreconditioner(), TimePeriod::TimePeriod(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), and VectorOfPostprocessors::VectorOfPostprocessors().

216 {
217  return InputParameters::getParamHelper(name, _pars, static_cast<T *>(0), &_moose_base);
218 }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
static const T & getParamHelper(const std::string &name, const InputParameters &pars, const T *the_type, const MooseBase *moose_base=nullptr)

◆ getParam() [2/2]

template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > MooseBaseParameterInterface::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 279 of file MooseBaseParameterInterface.h.

280 {
281  return _pars.get<T1, T2>(param1, param2);
282 }
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.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

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

Referenced by cacheIncomingInterpVals(), and examineLocalValueConflicts().

619 {
620  const auto & to_transform = _to_transforms[getGlobalTargetAppIndex(local_i_to)];
621  if (to_transform->hasCoordinateSystemTypeChange())
622  {
624  mooseInfo(phase + " cannot use the point in the target app frame due to the "
625  "non-uniqueness of the coordinate collapsing reverse mapping."
626  " Coordinate collapse is ignored for this operation");
627  to_transform->skipCoordinateCollapsing(true);
628  const auto target_point = to_transform->mapBack(p);
629  to_transform->skipCoordinateCollapsing(false);
630  return target_point;
631  }
632  else
633  return to_transform->mapBack(p);
634 }
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...
void mooseInfo(Args &&... args) const
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 & MooseBaseParameterInterface::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 229 of file MooseBaseParameterInterface.h.

231 {
232  // this enables having a default on the new parameter but bypassing it with the old one
233  // Most important: accept new parameter
234  if (isParamSetByUser(new_name) && !isParamValid(old_name))
235  return InputParameters::getParamHelper(new_name, _pars, static_cast<T *>(0), &_moose_base);
236  // Second most: accept old parameter
237  else if (isParamValid(old_name) && !isParamSetByUser(new_name))
238  return InputParameters::getParamHelper(old_name, _pars, static_cast<T *>(0), &_moose_base);
239  // Third most: accept default for new parameter
240  else if (isParamValid(new_name) && !isParamValid(old_name))
241  return InputParameters::getParamHelper(new_name, _pars, static_cast<T *>(0), &_moose_base);
242  // Refuse: no default, no value passed
243  else if (!isParamValid(old_name) && !isParamValid(new_name))
244  mooseError(_pars.blockFullpath() + ": parameter '" + new_name +
245  "' is being retrieved without being set.\n"
246  "Did you misspell it?");
247  // Refuse: both old and new parameters set by user
248  else
249  mooseError(_pars.blockFullpath() + ": parameter '" + new_name +
250  "' may not be provided alongside former parameter '" + old_name + "'");
251 }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:302
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
bool isParamSetByUser(const std::string &nm) const
Test if the supplied parameter is set by a user, as opposed to not set or set to default.
std::string blockFullpath() const
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
static const T & getParamHelper(const std::string &name, const InputParameters &pars, const T *the_type, const MooseBase *moose_base=nullptr)

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

Referenced by prepareToTransfer().

1834 {
1835  std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
1836  const Real min_r = std::numeric_limits<Real>::lowest();
1837  const Real max_r = std::numeric_limits<Real>::max();
1838 
1839  for (const auto j : make_range(_from_meshes.size()))
1840  {
1841  Point min(max_r, max_r, max_r);
1842  Point max(min_r, min_r, min_r);
1843  bool at_least_one = false;
1844  const auto & from_mesh = _from_problems[j]->mesh(_displaced_source_mesh);
1845 
1846  for (const auto & elem : as_range(from_mesh.getMesh().local_elements_begin(),
1847  from_mesh.getMesh().local_elements_end()))
1848  {
1849  if (!_from_blocks.empty() && !inBlocks(_from_blocks, from_mesh, elem))
1850  continue;
1851 
1852  for (const auto & node : elem->node_ref_range())
1853  {
1854  if (!_from_boundaries.empty() && !onBoundaries(_from_boundaries, from_mesh, &node))
1855  continue;
1856 
1857  at_least_one = true;
1858  for (const auto i : make_range(LIBMESH_DIM))
1859  {
1860  min(i) = std::min(min(i), node(i));
1861  max(i) = std::max(max(i), node(i));
1862  }
1863  }
1864  }
1865 
1866  // For 2D RZ problems, we need to amend the bounding box to cover the whole XYZ projection
1867  // - The XYZ-Y axis is assumed aligned with the RZ-Z axis
1868  // - RZ systems also cover negative coordinates hence the use of the maximum R
1869  // NOTE: We will only support the case where there is only one coordinate system
1870  if ((from_mesh.getUniqueCoordSystem() == Moose::COORD_RZ) && (LIBMESH_DIM == 3))
1871  {
1872  min(0) = -max(0);
1873  min(2) = -max(0);
1874  max(2) = max(0);
1875  }
1876 
1877  BoundingBox bbox(min, max);
1878  if (!at_least_one)
1879  bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
1880  else
1881  {
1882  // Translate the bounding box to the from domain's position. We may have rotations so we
1883  // must be careful in constructing the new min and max (first and second)
1884  const auto from_global_num = getGlobalSourceAppIndex(j);
1885  transformBoundingBox(bbox, *_from_transforms[from_global_num]);
1886  }
1887 
1888  // Cast the bounding box into a pair of points (so it can be put through
1889  // MPI communication).
1890  bb_points[j] = static_cast<std::pair<Point, Point>>(bbox);
1891  }
1892 
1893  // Serialize the bounding box points.
1894  _communicator.allgather(bb_points);
1895 
1896  // Recast the points back into bounding boxes and return.
1897  std::vector<BoundingBox> bboxes(bb_points.size());
1898  for (const auto i : make_range(bb_points.size()))
1899  bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
1900 
1901  // TODO move up
1902  // Check for a user-set fixed bounding box size and modify the sizes as appropriate
1903  if (_fixed_bbox_size != std::vector<Real>(3, 0))
1904  for (const auto i : make_range(LIBMESH_DIM))
1906  for (const auto j : make_range(bboxes.size()))
1907  {
1908  const auto current_width = (bboxes[j].second - bboxes[j].first)(i);
1909  bboxes[j].first(i) -= (_fixed_bbox_size[i] - current_width) / 2;
1910  bboxes[j].second(i) += (_fixed_bbox_size[i] - current_width) / 2;
1911  }
1912 
1913  return bboxes;
1914 }
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:371
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 68 of file MooseObject.C.

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

69 {
70  try
71  {
72  return shared_from_this();
73  }
74  catch (std::bad_weak_ptr &)
75  {
76  mooseError(not_shared_error);
77  }
78 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

◆ getSharedPtr() [2/2]

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

Definition at line 81 of file MooseObject.C.

82 {
83  try
84  {
85  return shared_from_this();
86  }
87  catch (std::bad_weak_ptr &)
88  {
89  mooseError(not_shared_error);
90  }
91 }
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

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

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

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

1938 {
1939  mooseAssert(var_index < _to_var_names.size(), "No target variable at this index");
1940  VariableName var_name = _to_var_names[var_index];
1941  if (_to_var_components.size())
1942  var_name += "_" + std::to_string(_to_var_components[var_index]);
1943  return var_name;
1944 }
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 594 of file MultiAppTransfer.C.

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

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

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

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

1600 {
1601  // Note: we do not take advantage of a potential block restriction of the mesh here. This is
1602  // because we can avoid this routine by calling inBlocks() instead
1603  const Elem * elem = (*pl)(point);
1604  return (elem != nullptr);
1605 }

◆ isParamSetByUser()

bool MooseBaseParameterInterface::isParamSetByUser ( const std::string &  nm) const
inlineinherited

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

Parameters
nmThe name of the parameter to test

Definition at line 128 of file MooseBaseParameterInterface.h.

Referenced by SetupDebugAction::act(), ADConservativeAdvectionBC::ADConservativeAdvectionBC(), DiffusionCG::addFEBCs(), DiffusionPhysicsBase::addInitialConditions(), MFEMMesh::buildMesh(), LibtorchNeuralNetControl::conditionalParameterError(), DiffusionPhysicsBase::DiffusionPhysicsBase(), ElementSubdomainModifierBase::ElementSubdomainModifierBase(), MooseBaseParameterInterface::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(), MFEMSolverBase::setPreconditioner(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), TimedSubdomainModifier::TimedSubdomainModifier(), and XYDelaunayGenerator::XYDelaunayGenerator().

128 { return _pars.isParamSetByUser(nm); }
bool isParamSetByUser(const std::string &name) const
Method returns true if the parameter was set by the user.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

◆ isParamValid()

bool MooseBaseParameterInterface::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 122 of file MooseBaseParameterInterface.h.

Referenced by HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), CopyNodalVarsAction::act(), SetupMeshAction::act(), SetupDebugAction::act(), ComposeTimeStepperAction::act(), AddVariableAction::act(), CreateDisplacedProblemAction::act(), SetAdaptivityOptionsAction::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(), TimedSubdomainModifier::buildFromFile(), PiecewiseTabularBase::buildFromFile(), PiecewiseTabularBase::buildFromJSON(), ParsedChainControl::buildFunction(), GeneratedMesh::buildMesh(), MooseMesh::buildTypedMesh(), CartesianGridDivision::CartesianGridDivision(), CartesianMeshGenerator::CartesianMeshGenerator(), LibmeshPartitioner::clone(), SampledOutput::cloneMesh(), CombinerGenerator::CombinerGenerator(), FunctorAux::computeValue(), ConservativeAdvectionTempl< is_ad >::ConservativeAdvectionTempl(), CopyMeshPartitioner::CopyMeshPartitioner(), CSVReaderVectorPostprocessor::CSVReaderVectorPostprocessor(), CutMeshByLevelSetGeneratorBase::CutMeshByLevelSetGeneratorBase(), ConstantReporter::declareConstantReporterValues(), DGKernelBase::DGKernelBase(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), DynamicObjectRegistrationAction::DynamicObjectRegistrationAction(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), PIDTransientControl::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), Exodus::Exodus(), ExtraIDIntegralReporter::ExtraIDIntegralReporter(), FEProblemBase::FEProblemBase(), FEProblemSolve::FEProblemSolve(), FieldSplitPreconditioner::FieldSplitPreconditioner(), FileOutput::FileOutput(), SpatialUserObjectVectorPostprocessor::fillPoints(), CombinerGenerator::fillPositions(), MultiApp::fillPositions(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), FunctionDT::FunctionDT(), FunctionValuePostprocessor::FunctionValuePostprocessor(), FVInterfaceKernel::FVInterfaceKernel(), FVMassMatrix::FVMassMatrix(), AddMetaDataGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), ElementGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::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(), MooseBaseParameterInterface::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(), 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(), MooseBaseParameterInterface::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(), SideDiffusiveFluxIntegralTempl< is_ad, Real >::SideDiffusiveFluxIntegralTempl(), SideSetsGeneratorBase::SideSetsGeneratorBase(), SolutionUserObjectBase::SolutionUserObjectBase(), FEProblemSolve::solve(), WebServerControl::startServer(), Terminator::Terminator(), TimeIntervalTimes::TimeIntervalTimes(), TimePeriod::TimePeriod(), MultiAppDofCopyTransfer::transfer(), TransformGenerator::TransformGenerator(), FunctorIC::value(), VariableCondensationPreconditioner::VariableCondensationPreconditioner(), VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl(), WebServerControl::WebServerControl(), XYDelaunayGenerator::XYDelaunayGenerator(), and XYZDelaunayGenerator::XYZDelaunayGenerator().

122 { return _pars.isParamValid(name); }
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
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 557 of file MultiAppGeneralFieldTransfer.C.

Referenced by cacheOutgoingPointInfo().

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

◆ mooseDeprecated()

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

Definition at line 91 of file MooseBaseErrorInterface.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(), FEProblemBase::getUserObjects(), FEProblemBase::hasPostprocessor(), 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(), and UserForcingFunction::UserForcingFunction().

92  {
94  _console, false, true, _moose_base.errorPrefix("deprecation"), std::forward<Args>(args)...);
95  }
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void mooseDeprecatedStream(S &oss, const bool expired, const bool print_title, Args &&... args)
Definition: MooseError.h:239
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseDocumentedError()

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

Emits a documented error with object name and type.

Documented errors are errors that have an issue associated with them.

The repository name repo_name links a named repository to a URL and should be registered at the application level with registerRepository(). See Moose.C for an example of the "moose" repository registration.

Parameters
repo_nameThe repository name where the issue resides
issue_numThe number of the issue
argsThe error message to be combined

Definition at line 61 of file MooseBaseErrorInterface.h.

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

64  {
65  std::ostringstream oss;
66  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
67  const auto msg = moose::internal::formatMooseDocumentedError(repo_name, issue_num, oss.str());
68  _moose_base.callMooseError(msg, /* with_prefix = */ true);
69  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33
std::string formatMooseDocumentedError(const std::string &repo_name, const unsigned int issue_num, const std::string &msg)
Formats a documented error.
Definition: MooseError.C:99

◆ mooseError()

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

Emits an error prefixed with object name and type.

Definition at line 29 of file MooseBaseErrorInterface.h.

Referenced by CopyMeshPartitioner::_do_partition(), HierarchicalGridPartitioner::_do_partition(), GridPartitioner::_do_partition(), PetscExternalPartitioner::_do_partition(), acceptPointInOriginMesh(), AddBoundsVectorsAction::act(), AddMeshGeneratorAction::act(), AddVectorPostprocessorAction::act(), AutoCheckpointAction::act(), CheckFVBCAction::act(), CreateExecutionerAction::act(), InitProblemAction::act(), SetupMeshCompleteAction::act(), CheckIntegrityAction::act(), AddFVICAction::act(), AddICAction::act(), CreateProblemDefaultAction::act(), CreateProblemAction::act(), CombineComponentsMeshes::act(), SetupMeshAction::act(), SplitMeshAction::act(), AdaptivityAction::act(), ChainControlSetupAction::act(), DeprecatedBlockAction::act(), SetupPredictorAction::act(), SetupTimeStepperAction::act(), AddTimeStepperAction::act(), CreateDisplacedProblemAction::act(), MaterialDerivativeTestAction::act(), SetAdaptivityOptionsAction::act(), MaterialOutputAction::act(), AddMFEMSubMeshAction::act(), CommonOutputAction::act(), AddPeriodicBCAction::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(), 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::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(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayConstantIC::ArrayConstantIC(), ArrayDGKernel::ArrayDGKernel(), ArrayDiffusion::ArrayDiffusion(), ArrayFunctionIC::ArrayFunctionIC(), ArrayReaction::ArrayReaction(), ArrayTimeDerivative::ArrayTimeDerivative(), AddPeriodicBCAction::autoTranslationBoundaries(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), Axisymmetric2D3DSolutionFunction::Axisymmetric2D3DSolutionFunction(), BatchMeshGeneratorAction::BatchMeshGeneratorAction(), BicubicSplineFunction::BicubicSplineFunction(), BlockDeletionGenerator::BlockDeletionGenerator(), 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(), ExplicitTimeIntegrator::checkLinearConvergence(), MeshDiagnosticsGenerator::checkNonConformalMeshFromAdaptivity(), MeshDiagnosticsGenerator::checkNonMatchingEdges(), PostprocessorInterface::checkParam(), FEProblemBase::checkProblemIntegrity(), Sampler::checkReinitStatus(), MultiAppGeneralFieldNearestLocationTransfer::checkRestrictionsForSource(), MultiAppPostprocessorToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppScalarToAuxScalarTransfer::checkSiblingsTransferSupported(), MultiAppPostprocessorTransfer::checkSiblingsTransferSupported(), MultiAppReporterTransfer::checkSiblingsTransferSupported(), MultiAppMFEMCopyTransfer::checkSiblingsTransferSupported(), MultiAppCopyTransfer::checkSiblingsTransferSupported(), MultiAppTransfer::checkSiblingsTransferSupported(), MaterialBase::checkStatefulSanity(), AddDefaultConvergenceAction::checkUnusedMultiAppFixedPointConvergenceParameters(), AddDefaultConvergenceAction::checkUnusedNonlinearConvergenceParameters(), 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(), ImplicitEuler::computeTimeDerivatives(), ActuallyExplicitEuler::computeTimeDerivatives(), ExplicitEuler::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(), ParsedConvergence::convertRealToBool(), CopyMeshPartitioner::CopyMeshPartitioner(), CoupledForceNodalKernel::CoupledForceNodalKernel(), MultiApp::createApp(), AddVariableAction::createInitialConditionAction(), Function::curl(), MooseVariableFV< Real >::curlPhi(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), SidesetInfoVectorPostprocessor::dataHelper(), DebugResidualAux::DebugResidualAux(), ReporterTransferInterface::declareClone(), MeshGenerator::declareMeshProperty(), ReporterTransferInterface::declareVectorClone(), FunctorRelationshipManager::delete_remote_elements(), MooseMesh::deleteRemoteElements(), BicubicSplineFunction::derivative(), DerivativeSumMaterialTempl< is_ad >::DerivativeSumMaterialTempl(), MooseMesh::detectPairedSidesets(), FEProblemBase::determineSolverSystem(), DGKernel::DGKernel(), MeshDiagnosticsGenerator::diagnosticsLog(), DistributedPositions::DistributedPositions(), Function::div(), FunctorBinnedValuesDivision::divisionIndex(), MooseVariableFV< Real >::divPhi(), FunctorRelationshipManager::dofmap_reinit(), EigenProblem::doFreeNonlinearPowerIterations(), FEProblemBase::duplicateVariableCheck(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), Eigenvalues::Eigenvalues(), ElementalVariableValue::ElementalVariableValue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementIntegerAux::ElementIntegerAux(), ElementMaterialSampler::ElementMaterialSampler(), ElementQualityAux::ElementQualityAux(), ElementSubdomainModifierBase::ElementSubdomainModifierBase(), ElementUOAux::ElementUOAux(), DistributedRectilinearMeshGenerator::elemId(), ProjectionAux::elemOnNodeVariableIsDefinedOn(), EigenKernel::enabled(), MooseMesh::errorIfDistributedMesh(), MultiAppTransfer::errorIfObjectExecutesOnTransferInSourceApp(), SideIntegralPostprocessor::errorNoFaceInfo(), SideIntegralFunctorPostprocessorTempl< false >::errorNoFaceInfo(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), FixedPointSolve::examineFixedPointConvergence(), examineReceivedValueConflicts(), RealToBoolChainControl::execute(), RestartableDataReporter::execute(), DiscreteElementUserObject::execute(), MultiAppPostprocessorToAuxScalarTransfer::execute(), NodalValueSampler::execute(), MultiAppScalarToAuxScalarTransfer::execute(), MultiAppPostprocessorInterpolationTransfer::execute(), MultiAppPostprocessorTransfer::execute(), ElementQualityChecker::execute(), PositionsFunctorValueSampler::execute(), GreaterThanLessThanPostprocessor::execute(), PointValue::execute(), MultiAppVariableValueSampleTransfer::execute(), MultiAppVariableValueSamplePostprocessorTransfer::execute(), FindValueOnLine::execute(), MultiAppNearestNodeTransfer::execute(), MultiAppCopyTransfer::execute(), MultiAppMFEMCopyTransfer::execute(), WebServerControl::execute(), MultiAppGeometricInterpolationTransfer::execute(), MultiAppUserObjectTransfer::execute(), InterfaceQpUserObjectBase::execute(), LeastSquaresFit::execute(), VectorPostprocessorComparison::execute(), LeastSquaresFitHistory::execute(), TimeExtremeValue::execute(), Eigenvalue::execute(), DomainUserObject::execute(), FEProblemBase::execute(), FEProblemBase::executeControls(), 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(), VerifyElementUniqueID::finalize(), VerifyNodalUniqueID::finalize(), DiscreteElementUserObject::finalize(), ElementQualityChecker::finalize(), MemoryUsage::finalize(), PointSamplerBase::finalize(), NearestPointAverage::finalize(), NearestPointIntegralVariablePostprocessor::finalize(), 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(), ElementOrderConversionGenerator::generate(), BlockToMeshConverterGenerator::generate(), ExtraNodesetGenerator::generate(), FileMeshGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), MoveNodeGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), SideSetsFromNormalsGenerator::generate(), SmoothMeshGenerator::generate(), SubdomainPerElementGenerator::generate(), TiledMeshGenerator::generate(), CoarsenBlockGenerator::generate(), MeshRepairGenerator::generate(), BreakMeshByBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), MeshDiagnosticsGenerator::generate(), SideSetsFromPointsGenerator::generate(), AdvancedExtruderGenerator::generate(), AllSideSetsByNormalsGenerator::generate(), ParsedGenerateNodeset::generate(), MeshCollectionGenerator::generate(), CombinerGenerator::generate(), SideSetsFromBoundingBoxGenerator::generate(), StackGenerator::generate(), StitchedMeshGenerator::generate(), XYZDelaunayGenerator::generate(), MeshExtruderGenerator::generate(), CutMeshByLevelSetGeneratorBase::generate(), SpiralAnnularMeshGenerator::generate(), XYDelaunayGenerator::generate(), XYMeshLineCutter::generate(), PatternedMeshGenerator::generate(), SubdomainBoundingBoxGenerator::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(), NEML2BatchIndexGenerator::getBatchIndex(), MooseMesh::getBlockConnectedBlocks(), VariableOldValueBounds::getBound(), MooseMesh::getBoundaryID(), MultiApp::getBoundingBox(), ChainControl::getChainControlDataByName(), MooseMesh::getCoarseningMap(), 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(), 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(), GeneratedMesh::getMinInDimension(), AnnularMesh::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(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), FEProblemBase::getSampler(), WebServerControl::getScalarJSONValue(), DisplacedProblem::getScalarVariable(), FEProblemBase::getScalarVariable(), MooseObject::getSharedPtr(), InterfaceQpUserObjectBase::getSideAverageValue(), PhysicsBase::getSolverSystem(), DisplacedProblem::getStandardVariable(), FEProblemBase::getStandardVariable(), MooseMesh::getSubdomainBoundaryIds(), TimedSubdomainModifier::getSubdomainIDAndCheck(), DisplacedProblem::getSystem(), FEProblemBase::getSystem(), 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(), TransientBase::init(), ExplicitTimeIntegrator::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(), PiecewiseLinearBase::initialSetup(), ChainControlDataPostprocessor::initialSetup(), MultiAppConservativeTransfer::initialSetup(), IntegralPreservingFunctionIC::initialSetup(), PiecewiseLinear::initialSetup(), FullSolveMultiApp::initialSetup(), CoarsenedPiecewiseLinear::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), LinearFVDiffusion::initialSetup(), LinearFVAdvection::initialSetup(), SolutionScalarAux::initialSetup(), LinearFVAnisotropicDiffusion::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), SolutionAux::initialSetup(), ExplicitTimeIntegrator::initialSetup(), ReferenceResidualConvergence::initialSetup(), NodalVariableValue::initialSetup(), Axisymmetric2D3DSolutionFunction::initialSetup(), Exodus::initialSetup(), CSV::initialSetup(), MooseParsedFunction::initialSetup(), SolutionUserObjectBase::initialSetup(), FEProblemBase::initialSetup(), SubProblem::initialSetup(), AdvancedOutput::initOutputList(), MFEMProblem::initProblemOperator(), 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(), LibtorchNeuralNetControl::LibtorchNeuralNetControl(), LinearCombinationPostprocessor::LinearCombinationPostprocessor(), LinearNodalConstraint::LinearNodalConstraint(), LineMaterialSamplerBase< Real >::LineMaterialSamplerBase(), LineSearch::lineSearch(), LineValueSampler::LineValueSampler(), 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(), NearestNodeValueAux::NearestNodeValueAux(), FEProblemBase::needsPreviousNewtonIteration(), NewmarkBeta::NewmarkBeta(), NodalConstraint::NodalConstraint(), MooseVariableFV< Real >::nodalDofIndex(), MooseVariableFV< Real >::nodalDofIndexNeighbor(), MooseLinearVariableFV< Real >::nodalError(), MooseVariableFV< Real >::nodalMatrixTagValue(), NodalPatchRecoveryBase::nodalPatchRecovery(), 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(), 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(), Predictor::Predictor(), TransientBase::preExecute(), MooseMesh::prepare(), MooseMesh::prepared(), FixedPointSolve::printFixedPointConvergenceReason(), PseudoTimestep::PseudoTimestep(), MultiApp::readCommandLineArguments(), PropertyReadFile::readData(), SolutionUserObjectBase::readExodusII(), SolutionUserObjectBase::readXda(), CoarsenBlockGenerator::recursiveCoarsen(), FunctorRelationshipManager::redistribute(), ReferenceResidualConvergence::ReferenceResidualConvergence(), Sampler::reinit(), RelativeSolutionDifferenceNorm::RelativeSolutionDifferenceNorm(), PhysicsBase::reportPotentiallyMissedParameters(), RinglebMesh::RinglebMesh(), RinglebMeshGenerator::RinglebMeshGenerator(), 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(), FVPointValueConstraint::setMyElem(), FEProblemBase::setNonlocalCouplingMatrix(), Sampler::setNumberOfCols(), Sampler::setNumberOfRandomSeeds(), Sampler::setNumberOfRows(), Exodus::setOutputDimensionInExodusWriter(), AddPeriodicBCAction::setPeriodicVars(), MFEMSolverBase::setPreconditioner(), setSolutionVectorValues(), Split::setup(), TransientMultiApp::setupApp(), SetupMeshAction::setupMesh(), 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(), SolutionTimeAdaptiveDT::SolutionTimeAdaptiveDT(), SolutionUserObjectBase::SolutionUserObjectBase(), TimeIntegrator::solve(), FEProblemBase::solverSysNum(), FullSolveMultiApp::solveStep(), SpatialAverageBase::SpatialAverageBase(), UserObject::spatialPoints(), NearestPointAverage::spatialValue(), NearestPointIntegralVariablePostprocessor::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(), MultiAppDofCopyTransfer::transfer(), MultiAppMFEMCopyTransfer::transfer(), MultiAppShapeEvaluationTransfer::transferVariable(), TransformedPositions::TransformedPositions(), FEProblemBase::trustUserCouplingMatrix(), MooseVariableScalar::uDot(), MooseVariableScalar::uDotDot(), MooseVariableScalar::uDotDotOld(), FEProblemBase::uDotDotOldRequested(), MooseVariableScalar::uDotOld(), FEProblemBase::uDotOldRequested(), Positions::unrollMultiDPositions(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), Checkpoint::updateCheckpointFiles(), EqualValueBoundaryConstraint::updateConstrainedNodes(), SolutionUserObjectBase::updateExodusBracketingTimeIndices(), FEProblemBase::updateMaxQps(), MFEMHypreAMS::updateSolver(), MFEMHypreADS::updateSolver(), MFEMGMRESSolver::updateSolver(), MFEMCGSolver::updateSolver(), MFEMHyprePCG::updateSolver(), MFEMHypreFGMRES::updateSolver(), MFEMHypreGMRES::updateSolver(), MFEMSuperLU::updateSolver(), UpperBoundNodalKernel::UpperBoundNodalKernel(), NearestPointIntegralVariablePostprocessor::userObjectValue(), NearestPointAverage::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(), DOFMapOutput::writeStreamToFile(), and Console::writeStreamToFile().

30  {
31  std::ostringstream oss;
32  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
33  _moose_base.callMooseError(oss.str(), /* with_prefix = */ true);
34  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ mooseErrorNonPrefixed()

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

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

Definition at line 40 of file MooseBaseErrorInterface.h.

41  {
42  std::ostringstream oss;
43  moose::internal::mooseStreamAll(oss, std::forward<Args>(args)...);
44  _moose_base.callMooseError(oss.str(), /* with_prefix = */ false);
45  }
void mooseStreamAll(std::ostringstream &ss)
All of the following are not meant to be called directly - they are called by the normal macros (moos...
Definition: MooseError.C:94
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ mooseInfo()

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

Definition at line 98 of file MooseBaseErrorInterface.h.

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

99  {
101  _console, _moose_base.errorPrefix("information"), std::forward<Args>(args)...);
102  }
void mooseInfoStream(S &oss, Args &&... args)
Definition: MooseError.h:232
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseWarning()

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

Emits a warning prefixed with object name and type.

Definition at line 75 of file MooseBaseErrorInterface.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(), CylindricalGridDivision::divisionIndex(), SphericalGridDivision::divisionIndex(), CartesianGridDivision::divisionIndex(), ElementMaterialSampler::ElementMaterialSampler(), Postprocessor::evaluateDotWarning(), MeshDivisionFunctorReductionVectorPostprocessor::execute(), ElementQualityChecker::finalize(), FiniteDifferencePreconditioner::FiniteDifferencePreconditioner(), FixedPointSolve::FixedPointSolve(), SubdomainPerElementGenerator::generate(), StitchedMeshGenerator::generate(), ParsedGenerateSideset::generate(), MultiAppTransfer::getAppInfo(), FunctorBinnedValuesDivision::getBinIndex(), DataFileInterface::getDataFilePath(), PointSamplerBase::getLocalElemContainingPoint(), FEProblemBase::getMaterial(), LineValueSampler::getValue(), Terminator::handleMessage(), IndicatorMarker::IndicatorMarker(), SphericalGridDivision::initialize(), CylindricalGridDivision::initialize(), ElementGroupCentroidPositions::initialize(), CartesianGridDivision::initialize(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), BoundsBase::initialSetup(), ReferenceResidualConvergence::initialSetup(), initialSetup(), FEProblemBase::initialSetup(), AdvancedOutput::initPostprocessorOrVectorPostprocessorLists(), MaterialBase::initStatefulProperties(), LeastSquaresFit::LeastSquaresFit(), IterationAdaptiveDT::limitDTToPostprocessorValue(), FEProblemBase::mesh(), MultiAppGeneralFieldTransfer(), NewmarkBeta::NewmarkBeta(), NodalPatchRecovery::NodalPatchRecovery(), NonlocalIntegratedBC::NonlocalIntegratedBC(), NonlocalKernel::NonlocalKernel(), Output::Output(), outputValueConflicts(), 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().

76  {
78  _console, _moose_base.errorPrefix("warning"), std::forward<Args>(args)...);
79  }
std::string errorPrefix(const std::string &error_type) const
Definition: MooseBase.C:43
void mooseWarningStream(S &oss, Args &&... args)
Definition: MooseError.h:184
const MooseBase & _moose_base
The MooseBase class deriving from this interface.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.

◆ mooseWarningNonPrefixed()

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

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

Definition at line 85 of file MooseBaseErrorInterface.h.

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

◆ name()

virtual const std::string& MooseBase::name ( ) const
inlinevirtualinherited

Get the name of the class.

Returns
The name of the class

Reimplemented in MooseVariableBase.

Definition at line 57 of file MooseBase.h.

Referenced by AddElementalFieldAction::act(), CopyNodalVarsAction::act(), AdaptivityAction::act(), AddTimeStepperAction::act(), DeprecatedBlockAction::act(), SetupTimeIntegratorAction::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(), 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(), 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(), Output::advancedExecuteOn(), AdvancedExtruderGenerator::AdvancedExtruderGenerator(), MooseApp::appBinaryName(), MooseApp::appendMeshGenerator(), Registry::appNameFromAppPath(), MultiApp::appPostprocessorValue(), MultiApp::appProblem(), MultiApp::appProblemBase(), MultiApp::appUserObjectBase(), ArrayDGKernel::ArrayDGKernel(), PhysicsBase::assignBlocks(), AStableDirk4::AStableDirk4(), AuxKernelTempl< Real >::AuxKernelTempl(), Function::average(), MultiApp::backup(), CoarsenedPiecewiseLinear::buildCoarsenedGrid(), MFEMFESpace::buildFEC(), PiecewiseTabularBase::buildFromFile(), MultiAppVariableValueSamplePostprocessorTransfer::cacheElemToPostprocessorData(), MooseBase::callMooseError(), ChangeOverFixedPointPostprocessor::ChangeOverFixedPointPostprocessor(), ChangeOverTimePostprocessor::ChangeOverTimePostprocessor(), PhysicsBase::checkBlockRestrictionIdentical(), PhysicsBase::checkComponentType(), DefaultNonlinearConvergence::checkConvergence(), ParsedConvergence::checkConvergence(), FEProblemBase::checkDependMaterialsHelper(), ReporterTransferInterface::checkHasReporterValue(), FEProblemBase::checkICRestartError(), Material::checkMaterialProperty(), MooseApp::checkMetaDataIntegrity(), Damper::checkMinDamping(), Checkpoint::checkpointInfo(), Coupleable::checkWritableVar(), CompositeFunction::CompositeFunction(), MaterialBase::computeProperties(), FEProblemBase::computeUserObjectByName(), VectorPostprocessorVisualizationAux::computeValue(), MooseBaseParameterInterface::connectControllableParams(), ConstantPostprocessor::ConstantPostprocessor(), CommonOutputAction::create(), MultiApp::createApp(), MooseApp::createExecutors(), MeshGeneratorSystem::createMeshGeneratorOrder(), MooseApp::createRecoverablePerfGraph(), CutMeshByPlaneGenerator::CutMeshByPlaneGenerator(), 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(), MooseBase::errorPrefix(), SolutionUserObjectBase::evalMeshFunction(), SolutionUserObjectBase::evalMeshFunctionGradient(), SolutionUserObjectBase::evalMultiValuedMeshFunction(), SolutionUserObjectBase::evalMultiValuedMeshFunctionGradient(), RestartableDataReporter::execute(), PointValue::execute(), MultiAppNearestNodeTransfer::execute(), WebServerControl::execute(), execute(), ActionWarehouse::executeActionsWithAction(), Exodus::Exodus(), ExtraIDIntegralVectorPostprocessor::ExtraIDIntegralVectorPostprocessor(), FEProblemBase::FEProblemBase(), MultiApp::fillPositions(), PointSamplerBase::finalize(), ChainControl::fullControlDataName(), FunctionDT::FunctionDT(), FunctionIC::functionName(), FVFunctionIC::functionName(), FunctorPositions::FunctorPositions(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), FVOneVarDiffusionInterface::FVOneVarDiffusionInterface(), MooseServer::gatherDocumentSymbols(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), BreakMeshByBlockGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), ParsedExtraElementIDGenerator::generate(), StitchedMeshGenerator::generate(), XYDelaunayGenerator::generate(), SubdomainBoundingBoxGenerator::generate(), MeshGenerator::generateInternal(), InterfaceMaterial::getADMaterialProperty(), Material::getADMaterialProperty(), MultiAppTransfer::getAppInfo(), MultiApp::getBoundingBox(), 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(), 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(), MooseApp::getParam(), FEProblemBase::getPositionsObject(), FEProblemBase::getPostprocessorValueByName(), ComponentMaterialPropertyInterface::getPropertyValue(), ReporterData::getReporterInfo(), MooseApp::getRestartableDataMap(), MooseApp::getRestartableDataMapName(), MooseApp::getRestartableMetaData(), FEProblemBase::getSampler(), MFEMGeneralUserObject::getScalarCoefficient(), TransientBase::getTimeStepperName(), ProjectedStatefulMaterialStorageAction::getTypeEnum(), FEProblemBase::getUserObject(), FEProblemBase::getUserObjectBase(), MFEMGeneralUserObject::getVectorCoefficient(), 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(), 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(), MeshGenerator::isChildMeshGenerator(), MeshGenerator::isNullMeshName(), MooseApp::isParamValid(), MeshGenerator::isParentMeshGenerator(), LinearCombinationFunction::LinearCombinationFunction(), FEProblemBase::logAdd(), Marker::Marker(), MaterialBase::markMatPropRequested(), MatDiffusionBase< Real >::MatDiffusionBase(), Material::Material(), MaterialDerivativeTestKernelBase< Real >::MaterialDerivativeTestKernelBase(), Distribution::median(), MemoryUsageReporter::MemoryUsageReporter(), MeshGenerator::meshPropertyPrefix(), MooseApp::MooseApp(), OutputWarehouse::mooseConsole(), MooseVariableInterface< Real >::MooseVariableInterface(), MultiAppGeneralFieldTransfer(), MultiAppUserObjectTransfer::MultiAppUserObjectTransfer(), 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(), MooseServer::parseDocumentForDiagnostics(), ParsedODEKernel::ParsedODEKernel(), ComponentPhysicsInterface::physicsExists(), PiecewiseBilinear::PiecewiseBilinear(), PiecewiseByBlockFunctorMaterialTempl< T >::PiecewiseByBlockFunctorMaterialTempl(), MooseApp::possiblyLoadRestartableMetaData(), PhysicsBase::prefix(), MooseMesh::prepare(), BlockRestrictionDebugOutput::printBlockRestrictionMap(), PerfGraphLivePrint::printStats(), MultiApp::readCommandLineArguments(), Receiver::Receiver(), Executor::Result::record(), AppFactory::reg(), Registry::registerObjectsTo(), FEProblemBase::registerRandomInterface(), MooseApp::registerRestartableDataMapName(), MooseApp::registerRestartableNameWithFilter(), GlobalParamsAction::remove(), MaterialBase::resetQpProperties(), MultiApp::restore(), ScalarComponentIC::ScalarComponentIC(), MultiApp::setAppOutputFileBase(), MooseMesh::setBoundaryName(), Control::setControllableValue(), Control::setControllableValueByName(), GlobalParamsAction::setDoubleIndexParam(), OutputWarehouse::setFileNumbers(), GlobalParamsAction::setParam(), FEProblemBase::setPostprocessorValueByName(), FEProblemBase::setResidualObjectParamsAndLog(), GlobalParamsAction::setScalarParam(), MooseMesh::setSubdomainName(), GlobalParamsAction::setTripleIndexParam(), NodeSetsGeneratorBase::setup(), Split::setup(), SideSetsGeneratorBase::setup(), TransientMultiApp::setupApp(), GlobalParamsAction::setVectorParam(), 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(), MaterialBase::subdomainSetup(), TaggingInterface::TaggingInterface(), VectorPostprocessorVisualizationAux::timestepSetup(), to_json(), MultiAppDofCopyTransfer::transfer(), TransientMultiApp::TransientMultiApp(), MooseServer::traverseParseTreeAndFillSymbols(), MooseBase::typeAndName(), MooseBaseParameterInterface::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().

57 { return _name; }
const std::string _name
The name of this class.
Definition: MooseBase.h:90

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

Referenced by transferVariable().

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

◆ paramError()

template<typename... Args>
void MooseBaseParameterInterface::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 255 of file MooseBaseParameterInterface.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(), ConstantReporter::declareConstantReporterValues(), AccumulateReporter::declareLateValues(), DefaultMultiAppFixedPointConvergence::DefaultMultiAppFixedPointConvergence(), DGKernel::DGKernel(), DGKernelBase::DGKernelBase(), DGLowerDKernel::DGLowerDKernel(), DiffusionFluxAux::DiffusionFluxAux(), DomainUserObject::DomainUserObject(), EigenProblem::EigenProblem(), Eigenvalue::Eigenvalue(), ElementGroupCentroidPositions::ElementGroupCentroidPositions(), ElementLengthAux::ElementLengthAux(), ElementLpNormAux::ElementLpNormAux(), ElementValueSampler::ElementValueSampler(), ElementVectorL2Error::ElementVectorL2Error(), EqualValueEmbeddedConstraintTempl< is_ad >::EqualValueEmbeddedConstraintTempl(), ReporterPointSource::errorCheck(), ExamplePatchMeshGenerator::ExamplePatchMeshGenerator(), MultiAppNearestNodeTransfer::execute(), MultiAppUserObjectTransfer::execute(), ExtraElementIDAux::ExtraElementIDAux(), ExtraElementIntegerDivision::ExtraElementIntegerDivision(), 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(), BoundaryDeletionGenerator::generate(), UniqueExtraIDMeshGenerator::generate(), AddMetaDataGenerator::generate(), BlockToMeshConverterGenerator::generate(), ExtraNodesetGenerator::generate(), FillBetweenCurvesGenerator::generate(), FillBetweenSidesetsGenerator::generate(), LowerDBlockFromSidesetGenerator::generate(), BreakBoundaryOnSubdomainGenerator::generate(), PlaneIDMeshGenerator::generate(), RenameBlockGenerator::generate(), RenameBoundaryGenerator::generate(), ElementsToTetrahedronsConverter::generate(), BlockDeletionGenerator::generate(), BreakMeshByBlockGenerator::generate(), CoarsenBlockGenerator::generate(), FlipSidesetGenerator::generate(), GeneratedMeshGenerator::generate(), ParsedSubdomainGeneratorBase::generate(), RefineBlockGenerator::generate(), RefineSidesetGenerator::generate(), AdvancedExtruderGenerator::generate(), BreakMeshByElementGenerator::generate(), CircularBoundaryCorrectionGenerator::generate(), CombinerGenerator::generate(), MeshCollectionGenerator::generate(), MeshExtruderGenerator::generate(), ParsedCurveGenerator::generate(), ParsedExtraElementIDGenerator::generate(), StackGenerator::generate(), StitchedMeshGenerator::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(), ElementSubdomainModifierBase::initialSetup(), MultiAppVariableValueSamplePostprocessorTransfer::initialSetup(), MultiAppGeneralFieldNearestLocationTransfer::initialSetup(), MultiAppDofCopyTransfer::initialSetup(), HistogramVectorPostprocessor::initialSetup(), ReferenceResidualConvergence::initialSetup(), PiecewiseConstantFromCSV::initialSetup(), LibtorchControlValuePostprocessor::initialSetup(), 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(), 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(), SecondTimeDerivativeAux::SecondTimeDerivativeAux(), FEProblemBase::setLinearConvergenceNames(), FEProblemBase::setNonlinearConvergenceNames(), MooseMesh::setPartitioner(), NodeSetsGeneratorBase::setup(), SideSetsGeneratorBase::setup(), NEML2Action::setupDerivativeMappings(), NEML2Action::setupParameterDerivativeMappings(), TimeSequenceStepperBase::setupSequence(), SidesetAroundSubdomainUpdater::SidesetAroundSubdomainUpdater(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), SingleRankPartitioner::SingleRankPartitioner(), SphericalGridDivision::SphericalGridDivision(), SymmetryTransformGenerator::SymmetryTransformGenerator(), Terminator::Terminator(), TimeDerivativeAux::TimeDerivativeAux(), Transfer::Transfer(), TransformGenerator::TransformGenerator(), TransientMultiApp::TransientMultiApp(), ParsedCurveGenerator::tSectionSpaceDefiner(), UniqueExtraIDMeshGenerator::UniqueExtraIDMeshGenerator(), 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().

256 {
257  Moose::show_trace = false;
258  _moose_base.callMooseError(paramErrorMsg(param, std::forward<Args>(args)...),
259  /* with_prefix = */ false);
260  Moose::show_trace = true;
261 }
bool show_trace
Set to true (the default) to print the stack trace with error and warning messages - false to omit it...
Definition: Moose.C:761
const MooseBase & _moose_base
The MooseBase object that inherits this class.
std::string paramErrorMsg(const std::string &param, Args... args) const
void callMooseError(std::string msg, const bool with_prefix) const
Calls moose error with the message msg.
Definition: MooseBase.C:33

◆ parameters()

const InputParameters& MooseBaseParameterInterface::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 62 of file MooseBaseParameterInterface.h.

Referenced by 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(), 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(), 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(), FEProblem::FEProblem(), FEProblemBase::FEProblemBase(), FixedPointSolve::FixedPointSolve(), FunctorSmootherTempl< T >::FunctorSmootherTempl(), GapValueAux::GapValueAux(), ParsedSubdomainGeneratorBase::generate(), MooseBaseParameterInterface::getCheckedPointerParam(), ActionWarehouse::getCurrentActionName(), ExecutorInterface::getExecutor(), Material::getMaterial(), ReporterInterface::getReporterName(), Reporter::getReporterValueName(), UserObjectInterface::getUserObjectName(), VectorPostprocessorInterface::getVectorPostprocessorName(), GhostingUserObject::GhostingUserObject(), 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(), OverlayMeshGenerator::OverlayMeshGenerator(), 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(), SideSetsFromBoundingBoxGenerator::SideSetsFromBoundingBoxGenerator(), Moose::PetscSupport::storePetscOptions(), DumpObjectsProblem::stringifyParameters(), TaggingInterface::TaggingInterface(), Transfer::Transfer(), TransientBase::TransientBase(), VectorBodyForce::VectorBodyForce(), VectorFunctionDirichletBC::VectorFunctionDirichletBC(), VectorFunctionIC::VectorFunctionIC(), and VectorMagnitudeFunctorMaterialTempl< is_ad >::VectorMagnitudeFunctorMaterialTempl().

62 { return _pars; }
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

◆ paramInfo()

template<typename... Args>
void MooseBaseParameterInterface::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 272 of file MooseBaseParameterInterface.h.

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

273 {
274  mooseInfo(paramErrorMsg(param, std::forward<Args>(args)...));
275 }
void mooseInfo(Args &&... args)
Emit an informational message with the given stringified, concatenated args.
Definition: MooseError.h:369
std::string paramErrorMsg(const std::string &param, Args... args) const

◆ paramWarning()

template<typename... Args>
void MooseBaseParameterInterface::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 265 of file MooseBaseParameterInterface.h.

Referenced by GridPartitioner::_do_partition(), 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().

266 {
267  mooseWarning(paramErrorMsg(param, std::forward<Args>(args)...));
268 }
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition: MooseError.h:336
std::string paramErrorMsg(const std::string &param, Args... args) const

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

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

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

Referenced by execute().

482 {
486 }
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 455 of file MultiAppGeneralFieldTransfer.C.

Referenced by execute().

456 {
457  // Get the bounding boxes for the "from" domains.
458  // Clean up _from_bboxes from the previous transfer execution
459  _from_bboxes.clear();
460 
461  // NOTE: This ignores the app's bounding box inflation and padding
463 
464  // Expand bounding boxes. Some desired points might be excluded
465  // without an expansion
467 
468  // Figure out how many "from" domains each processor owns.
469  _froms_per_proc.clear();
471 
472  // Get the index for the first source app every processor owns
474 
475  // No need to keep searching for conflicts if the mesh has not changed
477  _search_value_conflicts = false;
478 }
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 * MooseBaseParameterInterface::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 222 of file MooseBaseParameterInterface.h.

223 {
224  return isParamValid(name) ? &getParam<T>(name) : nullptr;
225 }
std::string name(const ElemQuality q)
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.

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

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

1032 {
1033  // NOTE We could be registering the same conflict several times, we could count them instead
1034  if (local)
1035  _local_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1036  else
1037  _received_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1038 }
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 1407 of file MultiAppGeneralFieldTransfer.C.

Referenced by transferVariable().

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

Referenced by execute().

490 {
491  mooseAssert(i < _var_size, "The variable of index " << i << " does not exist");
492 
493  // Find outgoing target points
494  // We need to know what points we need to send which processors
495  // One processor will receive many points from many processors
496  // One point may go to different processors
497  ProcessorToPointVec outgoing_points;
498  extractOutgoingPoints(i, outgoing_points);
499 
500  if (_from_var_names.size())
502  else
504 
505  // Fill values and app ids for incoming points
506  // We are responsible to compute values for these incoming points
507  auto gather_functor =
508  [this](processor_id_type /*pid*/,
509  const std::vector<std::pair<Point, unsigned int>> & incoming_locations,
510  std::vector<std::pair<Real, Real>> & outgoing_vals)
511  {
512  outgoing_vals.resize(
513  incoming_locations.size(),
515  // Evaluate interpolation values for these incoming points
516  evaluateInterpValues(incoming_locations, outgoing_vals);
517  };
518 
519  DofobjectToInterpValVec dofobject_to_valsvec(_to_problems.size());
521  InterpCaches distance_caches(_to_problems.size(), getMaxToProblemsBBoxDimensions());
522 
523  // Copy data out to incoming_vals_ids
524  auto action_functor = [this, &i, &dofobject_to_valsvec, &interp_caches, &distance_caches](
525  processor_id_type pid,
526  const std::vector<std::pair<Point, unsigned int>> & my_outgoing_points,
527  const std::vector<std::pair<Real, Real>> & incoming_vals)
528  {
529  auto & pointInfoVec = _processor_to_pointInfoVec[pid];
530 
531  // Cache interpolation values for each dof object / points
533  i,
534  pointInfoVec,
535  my_outgoing_points,
536  incoming_vals,
537  dofobject_to_valsvec,
538  interp_caches,
539  distance_caches);
540  };
541 
542  // We assume incoming_vals_ids is ordered in the same way as outgoing_points
543  // Hopefully, pull_parallel_vector_data will not mess up this
544  const std::pair<Real, Real> * ex = nullptr;
545  libMesh::Parallel::pull_parallel_vector_data(
546  comm(), outgoing_points, gather_functor, action_functor, ex);
547 
548  // Check for conflicts and overlaps from the maps that were built during the transfer
550  outputValueConflicts(i, dofobject_to_valsvec, distance_caches);
551 
552  // Set cached values into solution vector
553  setSolutionVectorValues(i, dofobject_to_valsvec, interp_caches);
554 }
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 449 of file MultiAppTransfer.C.

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

450 {
451  MultiApp::transformBoundingBox(box, transform);
452 }
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:871

◆ 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 51 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(), 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(), ArrayDGDiffusion::computeQpJacobian(), InterfaceReaction::computeQpJacobian(), CoupledTiedValueConstraint::computeQpJacobian(), TiedValueConstraint::computeQpJacobian(), DGDiffusion::computeQpJacobian(), LinearNodalConstraint::computeQpJacobian(), EqualValueBoundaryConstraint::computeQpJacobian(), CoupledTiedValueConstraint::computeQpOffDiagJacobian(), HFEMTestJump::computeQpOffDiagJacobian(), HFEMTrialJump::computeQpOffDiagJacobian(), ArrayDGKernel::computeQpOffDiagJacobian(), HFEMDiffusion::computeQpResidual(), ArrayHFEMDiffusion::computeQpResidual(), DGConvection::computeQpResidual(), ScalarKernel::computeQpResidual(), InterfaceDiffusion::computeQpResidual(), ADMatInterfaceReaction::computeQpResidual(), InterfaceReaction::computeQpResidual(), ADDGAdvection::computeQpResidual(), ArrayDGDiffusion::computeQpResidual(), CoupledTiedValueConstraint::computeQpResidual(), TiedValueConstraint::computeQpResidual(), LinearNodalConstraint::computeQpResidual(), ADDGDiffusion::computeQpResidual(), DGDiffusion::computeQpResidual(), HFEMTrialJump::computeQpResidual(), EqualValueBoundaryConstraint::computeQpResidual(), HFEMTestJump::computeQpResidual(), FEProblemBase::computeSystems(), FEProblemBase::computeUserObjectByName(), FEProblemBase::computeUserObjects(), FEProblemBase::computeUserObjectsInternal(), DisplacedProblem::createQRules(), FEProblemBase::createQRules(), MooseApp::createRecoverablePerfGraph(), DumpObjectsProblem::deduceNecessaryParameters(), DumpObjectsProblem::dumpObjectHelper(), FEProblemBase::duplicateVariableCheck(), MooseBase::errorPrefix(), FEProblemBase::execMultiApps(), FEProblemBase::execMultiAppTransfers(), FEProblemBase::execTransfers(), WebServerControl::execute(), SteadyBase::execute(), ActionWarehouse::executeActionsWithAction(), FEProblemBase::finishMultiAppStep(), FVScalarLagrangeMultiplierInterface::FVScalarLagrangeMultiplierInterface(), MooseServer::gatherDocumentReferencesLocations(), LowerDBlockFromSidesetGenerator::generate(), SubdomainPerElementGenerator::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(), LinearFVAdvection::initialSetup(), LinearFVDiffusion::initialSetup(), ArrayDGDiffusion::initQpResidual(), AdvancedOutput::initShowHideLists(), RelationshipManager::isType(), FEProblemBase::logAdd(), MaterialFunctorConverterTempl< T >::MaterialFunctorConverterTempl(), MFEMProblem::mesh(), MooseApp::MooseApp(), 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(), WebServerControl::startServer(), MooseBase::typeAndName(), ScalarKernelBase::uOld(), AuxScalarKernel::uOld(), DisplacedProblem::updateGeomSearch(), FEProblemBase::updateGeomSearch(), UserObjectInterface::userObjectType(), and AdvancedOutput::wantOutput().

51 { return _type; }
const std::string _type
The type of this class.
Definition: MooseBase.h:87

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

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

28 {
29  return type() + std::string(" \"") + name() + std::string("\"");
30 }
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:51

◆ uniqueName()

MooseObjectName MooseBaseParameterInterface::uniqueName ( ) const
inlineinherited

The unique name for accessing input parameters of this object in the InputParameterWarehouse.

Definition at line 67 of file MooseBaseParameterInterface.h.

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

68  {
69  return MooseObjectName(_pars.get<std::string>("_unique_name"));
70  }
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.
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
A class for storing the names of MooseObject by tag and object name.

◆ uniqueParameterName()

MooseObjectParameterName MooseBaseParameterInterface::uniqueParameterName ( const std::string &  parameter_name) const
inlineinherited

The unique parameter name of a valid parameter of this object for accessing parameter controls.

Definition at line 52 of file MooseBaseParameterInterface.h.

53  {
55  _pars.get<std::string>("_moose_base"), _moose_base.name(), parameter_name);
56  }
const MooseBase & _moose_base
The MooseBase object that inherits this class.
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.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
const InputParameters & _pars
Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.
A class for storing an input parameter name.

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

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

188 {
189  bool variable_found = false;
190  bool has_an_app = false;
191 
192  // Check the from_multi_app for the variable
193  if (is_from_multiapp && _from_multi_app)
194  for (unsigned int i = 0; i < _from_multi_app->numGlobalApps(); i++)
195  if (_from_multi_app->hasLocalApp(i))
196  {
197  has_an_app = true;
198  if (_from_multi_app->appProblemBase(i).hasVariable(var_name))
199  variable_found = true;
200  }
201 
202  // Check the to_multi_app for the variable
203  if (!is_from_multiapp && _to_multi_app)
204  for (unsigned int i = 0; i < _to_multi_app->numGlobalApps(); i++)
205  if (_to_multi_app->hasLocalApp(i))
206  {
207  has_an_app = true;
208  if (_to_multi_app->appProblemBase(i).hasVariable(var_name))
209  variable_found = true;
210  }
211 
212  if (!variable_found && has_an_app)
213  mooseError("Cannot find variable ", var_name, " for ", name(), " Transfer");
214 }
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
virtual const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:57
std::shared_ptr< MultiApp > _to_multi_app
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type.

Member Data Documentation

◆ _action_factory

ActionFactory& MooseBaseParameterInterface::_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 84 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(), 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(), 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(), MooseBaseErrorInterface::mooseDeprecated(), MooseBaseErrorInterface::mooseInfo(), MooseBaseErrorInterface::mooseWarning(), MooseBaseErrorInterface::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(), FEProblemSolve::solve(), FixedPointSolve::solve(), EigenProblem::solve(), NonlinearSystem::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(), 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 51 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& MooseBaseParameterInterface::_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 142 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 90 of file MooseBase.h.

Referenced by AddBCAction::act(), AddConstraintAction::act(), AddPostprocessorAction::act(), AddKernelAction::act(), AddMeshGeneratorAction::act(), AddDamperAction::act(), ReadExecutorParamsAction::act(), AddFVInterfaceKernelAction::act(), AddInitialConditionAction::act(), AddVectorPostprocessorAction::act(), AddNodalKernelAction::act(), AddMultiAppAction::act(), AddTransferAction::act(), AddDiracKernelAction::act(), AddDGKernelAction::act(), AddUserObjectAction::act(), AddFVInitialConditionAction::act(), PartitionerAction::act(), AddFunctorMaterialAction::act(), AddInterfaceKernelAction::act(), AddMarkerAction::act(), AddScalarKernelAction::act(), AddIndicatorAction::act(), AddMaterialAction::act(), AddPositionsAction::act(), AddReporterAction::act(), AddTimesAction::act(), AddFieldSplitAction::act(), AddFVKernelAction::act(), AddFVBCAction::act(), AddDistributionAction::act(), SetupPreconditionerAction::act(), SetupTimeIntegratorAction::act(), AddFunctionAction::act(), AddConvergenceAction::act(), AddMeshDivisionAction::act(), AddHDGKernelAction::act(), AddTimeStepperAction::act(), AddOutputAction::act(), AddLinearFVBCAction::act(), AddLinearFVKernelAction::act(), AddCorrectorAction::act(), AddMeshModifiersAction::act(), AddSamplerAction::act(), AddControlAction::act(), AddMFEMFESpaceAction::act(), AddMFEMPreconditionerAction::act(), AddMFEMSolverAction::act(), AddMFEMSubMeshAction::act(), AddPeriodicBCAction::act(), ADPiecewiseLinearInterpolationMaterial::ADPiecewiseLinearInterpolationMaterial(), 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(), 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& MooseBaseParameterInterface::_pars
protectedinherited

Parameters of this object, references the InputParameters stored in the InputParametersWarehouse.

Definition at line 173 of file MooseBaseParameterInterface.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(), MooseBaseParameterInterface::connectControllableParams(), Console::Console(), MaterialBase::declareADProperty(), MaterialBase::declareProperty(), FEProblemSolve::FEProblemSolve(), FunctionMaterialBase< is_ad >::FunctionMaterialBase(), FileMeshGenerator::generate(), MaterialBase::getGenericZeroMaterialProperty(), MeshGenerator::getMeshGeneratorNameFromParam(), MeshGenerator::getMeshGeneratorNamesFromParam(), MooseBaseParameterInterface::getParam(), MooseBaseParameterInterface::getRenamedParam(), MeshGenerator::hasGenerateData(), AddVariableAction::init(), AdvancedOutput::initExecutionTypes(), Console::initialSetup(), MooseBaseParameterInterface::isParamSetByUser(), MooseBaseParameterInterface::isParamValid(), MultiApp::keepSolutionDuringRestore(), MooseBaseParameterInterface::MooseBaseParameterInterface(), MooseBaseParameterInterface::paramErrorMsg(), GlobalParamsAction::parameters(), MooseBaseParameterInterface::parameters(), MooseMesh::prepare(), Eigenvalue::prepareSolverOptions(), MooseMesh::setCoordSystem(), MooseMesh::setPartitionerHelper(), SetupMeshAction::setupMesh(), TransientBase::setupTimeIntegrator(), MooseBaseParameterInterface::uniqueName(), and MooseBaseParameterInterface::uniqueParameterName().

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

◆ OutOfMeshValue

const Number Transfer::OutOfMeshValue = -999999
staticinherited

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