https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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 | Static Private Member Functions | Private Attributes | List of all members
MultiAppGeneralFieldShapeEvaluationTransfer Class Reference

Evaluates origin shape functions to compute the target variables. More...

#include <MultiAppGeneralFieldShapeEvaluationTransfer.h>

Inheritance diagram for MultiAppGeneralFieldShapeEvaluationTransfer:
[legend]

Public Types

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

Public Member Functions

 MultiAppGeneralFieldShapeEvaluationTransfer (const InputParameters &parameters)
 
virtual void initialSetup () override
 Method called at the beginning of the simulation for checking integrity or doing one-time setup.
 
virtual void getAppInfo () override
 This method will fill information into the convenience member variables (_to_problems, _from_meshes, etc.)
 
virtual void execute () override
 Execute the transfer.
 
virtual void postExecute () override
 Add some extra work if necessary after execute().
 
VariableName getFromVarName (unsigned int var_index) const
 Get the source variable name, with the suffix for array/vector variables.
 
VariableName getToVarName (unsigned int var_index)
 Get the target variable name, with the suffix for array/vector variables.
 
void variableIntegrityCheck (const AuxVariableName &var_name, bool is_from_multiapp) const
 Utility to verify that the variable in the destination system exists.
 
const std::shared_ptr< MultiAppgetMultiApp () const
 Use this getter to obtain the MultiApp for transfers with a single direction.
 
const std::shared_ptr< MultiAppgetFromMultiApp () const
 Get the MultiApp to transfer data from.
 
const std::shared_ptr< MultiAppgetToMultiApp () const
 Get the MultiApp to transfer data to.
 
std::string getFromName () const
 Get the name of thing being transferred from.
 
std::string getToName () const
 Get the name of thing being transferred to.
 
bool hasFromMultiApp () const
 Whether the transfer owns a non-null from_multi_app.
 
bool hasToMultiApp () const
 Whether the transfer owns a non-null to_multi_app.
 
const MultiMooseEnumdirections ()
 The directions this Transfer should be executed on.
 
void setCurrentDirection (const int direction)
 Set this Transfer to be executed in a given direction.
 
bool executeAfterSiblingSourceApp () const
 Whether the transfer should be executed after its source application.
 
virtual bool enabled () const
 Return the enabled status of the object.
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 Get another shared pointer to this object that has the same ownership group.
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 Get whether this object is a Kokkos functor The parameter MooseBase::kokkos_object_param is set by the Kokkos base classes.
 
MooseAppgetMooseApp () const
 Get the MooseApp this class is associated with.
 
const std::string & type () const
 Get the type of this class.
 
const std::string & name () const
 Get the name of the class.
 
std::string typeAndName () const
 Get the class's combined type and name; useful in error handling.
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 Get the parameters of the object.
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
template<typename T >
const T & getParam (const std::string &name) const
 Retrieve a parameter for the object.
 
template<typename T1 , typename T2 >
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 Retrieve two parameters and provide pair of parameters for the object.
 
template<typename T >
const T * queryParam (const std::string &name) const
 Query a parameter for the object.
 
template<typename T >
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 Retrieve a renamed parameter for the object.
 
template<typename T >
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 Verifies that the requested parameter exists and is not NULL and returns it to the caller.
 
bool isParamValid (const std::string &name) const
 Test if the supplied parameter is valid.
 
bool isParamSetByUser (const std::string &name) const
 Test if the supplied parameter is set by a user, as opposed to not set or set to default.
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 Connect controllable parameter of this action with the controllable parameters of the objects added by this action.
 
template<typename... Args>
void paramError (const std::string &param, Args... args) const
 Emits an error prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 Emits a warning prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
template<typename... Args>
void paramWarning (const std::string &param, Args... args) const
 
template<typename... Args>
void paramInfo (const std::string &param, Args... args) const
 Emits an informational message prefixed with the file and line number of the given param (from the input file) along with the full parameter path+name followed by the given args as the message.
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 Deprecated message prefix; the error type is no longer used.
 
template<typename... Args>
void mooseError (Args &&... args) const
 Emits an error prefixed with object name and type and optionally a file path to the top-level block parameter if available.
 
template<typename... Args>
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
template<typename... Args>
void mooseErrorNonPrefixed (Args &&... args) const
 Emits an error without the prefixing included in mooseError().
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 Emits a warning prefixed with object name and type.
 
template<typename... Args>
void mooseWarning (Args &&... args) const
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 Emits a warning without the prefixing included in mooseWarning().
 
template<typename... Args>
void mooseWarningNonPrefixed (Args &&... args) const
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and a stack trace.
 
template<typename... Args>
void mooseDeprecated (Args &&... args) const
 
template<typename... Args>
void mooseDeprecatedNoTrace (Args &&... args) const
 Emits a deprecation warning prefixed with the object name and type, and no stack trace.
 
template<typename... Args>
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 External method for calling moose error with added object context.
 
const Parallel::Communicatorcomm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
std::string getDataFileName (const std::string &param) const
 Deprecated method.
 
std::string getDataFileNameByName (const std::string &relative_path) const
 Deprecated method.
 
std::string getDataFilePath (const std::string &relative_path) const
 Returns the path of a data file for a given relative file path.
 
virtual void timestepSetup ()
 Gets called at the beginning of the timestep before this object is asked to do its job.
 
virtual void jacobianSetup ()
 Gets called just before the Jacobian is computed and before this object is asked to do its job.
 
virtual void residualSetup ()
 Gets called just before the residual is computed and before this object is asked to do its job.
 
virtual void subdomainSetup ()
 Gets called when the subdomain changes (i.e.
 
virtual void customSetup (const ExecFlagType &)
 Gets called in FEProblemBase::execute() for execute flags other than initial, timestep_begin, nonlinear, linear and subdomain.
 
const ExecFlagEnumgetExecuteOnEnum () const
 Return the execute on MultiMooseEnum for this object.
 
PerfGraphperfGraph ()
 Get the PerfGraph.
 
MooseEnum direction ()
 
MooseEnum currentDirection ()
 

Static Public Member Functions

static InputParameters validParams ()
 
static void addSkipCoordCollapsingParam (InputParameters &params)
 Add the option to skip coordinate collapsing in coordinate transformation operations Note: this is used by Actions creating transfers as well.
 
static libMesh::Systemfind_sys (libMesh::EquationSystems &es, const std::string &var_name)
 Small helper function for finding the system containing the variable.
 
static std::string possibleDirections ()
 Used to construct InputParameters.
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 External method for calling moose error with added object context.
 

Public Attributes

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

Static Public Attributes

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

Protected Types

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

Protected Member Functions

virtual void prepareEvaluationOfInterpValues (const unsigned int var_index) override
 
virtual void evaluateInterpValues (const unsigned int, const std::vector< std::pair< Point, unsigned int > > &incoming_points, std::vector< std::pair< Real, Real > > &outgoing_vals) override
 
virtual void checkSiblingsTransferSupported () const override
 Siblings transfers fully supported.
 
MooseVariableFieldBasegetToVariable (unsigned int var_index) const
 Return a pointer to a target variable.
 
virtual std::string getDataSourceName (unsigned int var_index) const
 Return a human-readable description of the data source (variable, functor, user object, etc.) used for conflict warning messages.
 
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.
 
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.
 
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.
 
void registerConflict (unsigned int problem, dof_id_type dof_id, Point p, Real dist, bool local)
 Register a potential value conflict, e.g.
 
virtual std::vector< VariableName > getFromVarNames () const override
 Virtual function defining variables to be transferred.
 
virtual std::vector< AuxVariableName > getToVarNames () const override
 Virtual function defining variables to transfer to.
 
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.
 
std::vector< unsigned intgetFromsPerProc ()
 Return the number of "from" domains that each processor owns.
 
libMesh::NumericVector< Real > & getTransferVector (unsigned int i_local, std::string var_name)
 If we are transferring to a multiapp, return the appropriate solution vector.
 
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 getGlobalTargetAppIndex (unsigned int i_to) const
 Return the global app index from the local index in the "to-multiapp" transfer direction.
 
unsigned int getLocalSourceAppIndex (unsigned int i_from) const
 Return the local app index from the global index in the "from-multiapp" transfer direction.
 
void checkParentAppUserObjectExecuteOn (const std::string &object_name) const
 Checks the execute_on flags for user object transfers with user objects on the source app which is also the parent app.
 
void errorIfObjectExecutesOnTransferInSourceApp (const std::string &object_name) const
 Error if executing this MooseObject on EXEC_TRANSFER in a source multiapp (from_multiapp, e.g.
 
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.
 
Point getPointInSourceAppFrame (const Point &p, unsigned int local_i_from, const std::string &phase) const
 Get the source app point from a point in the reference frame.
 
void checkMultiAppExecuteOn ()
 Helper method for checking the 'check_multiapp_execute_on' flag.
 
void checkVariable (const FEProblemBase &fe_problem, const VariableName &var_name, const std::string &param_name="") const
 Helper for checking a problem for a variable.
 
void extendBoundingBoxes (const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
 Extends bounding boxes to avoid missing points.
 
template<bool warning>
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 Set solution invalid mark for the given solution ID.
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
template<typename T , typename... Args>
T & declareRestartableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "restartable" and initialize it.
 
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.
 
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.
 
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.
 
template<typename T , typename... Args>
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 Declare a piece of data as "recoverable" and initialize it.
 
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".
 
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".
 
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.
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 Call to register a named section for timing.
 
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.
 
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.
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes (BoundaryID boundary_id)
 

Static Protected Member Functions

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

Protected Attributes

const std::vector< unsigned int_from_var_components
 Origin array/vector variable components.
 
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 value data, and at other various checks.
 
const bool _use_nearest_app
 Whether to keep track of the distance from the requested point to the app position.
 
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.
 
std::set< SubdomainID_from_blocks
 Origin block(s) restriction.
 
std::set< SubdomainID_to_blocks
 Target block(s) restriction.
 
std::set< BoundaryID_to_boundaries
 Target boundary(ies) restriction.
 
std::set< BoundaryID_from_boundaries
 Origin boundary(ies) restriction.
 
std::vector< const MeshDivision * > _from_mesh_divisions
 Division of the origin mesh.
 
std::vector< const MeshDivision * > _to_mesh_divisions
 Division of the target mesh.
 
const MooseEnum_from_mesh_division_behavior
 How to use the origin mesh divisions to restrict the transfer.
 
const MooseEnum_to_mesh_division_behavior
 How to use the target mesh divisions to restrict the transfer.
 
const bool _elemental_boundary_restriction_on_sides
 Whether elemental variable boundary restriction is considered by element side or element nodes.
 
std::vector< std::unique_ptr< libMesh::PointLocatorBase > > _from_point_locators
 Point locators, useful to examine point location with regards to domain restriction.
 
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.
 
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.
 
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.
 
const unsigned int _search_value_conflicts_max_log
 How many conflicts are output to console.
 
const MooseEnum _post_transfer_extrapolation
 How to post treat after the transfer.
 
const std::vector< VariableName > _from_var_names
 Name of variables transferring from.
 
const std::vector< AuxVariableName > _to_var_names
 Name of variables transferring to.
 
VariableName _from_var_name
 This values are used if a derived class only supports one variable.
 
AuxVariableName _to_var_name
 
bool _preserve_transfer
 If this transfer is going to conserve the physics.
 
std::vector< PostprocessorName > _from_postprocessors_to_be_preserved
 Postprocessor evaluates an adjuster for the source physics.
 
std::vector< PostprocessorName > _to_postprocessors_to_be_preserved
 Postprocessor evaluates an adjuster for the target physics.
 
std::shared_ptr< MultiApp_multi_app
 Deprecated class attribute for compatibility with the apps.
 
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)
 
bool _displaced_source_mesh
 True if displaced mesh is used for the source mesh, otherwise false.
 
bool _displaced_target_mesh
 True if displaced mesh is used for the target mesh, otherwise false.
 
std::vector< unsigned int_to_local2global_map
 Given local app index, returns global app index.
 
std::vector< unsigned int_from_local2global_map
 Given local app index, returns global app index.
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
SystemBase_sys
 
THREAD_ID _tid
 
MultiMooseEnum _directions
 The directions this Transfer is to be executed on.
 
const bool _exec_after_source_app_exec
 Whether a transfer executing on BETWEEN_MULTIAPPS and on the same execute_on flag should execute before or after that application For FROM and TO_MULTIAPP this is is true and we refuse setting it to false.
 
const bool & _enabled
 Reference to the "enable" InputParameters, used by Controls for toggling on/off MooseObjects.
 
MooseApp_app
 The MOOSE application this is associated with.
 
Factory_factory
 The Factory associated with the MooseApp.
 
ActionFactory_action_factory
 Builds Actions.
 
const std::string & _type
 The type of this class.
 
const std::string & _name
 The name of this class.
 
const InputParameters_pars
 The object's parameters.
 
const Parallel::Communicator_communicator
 
const ExecFlagEnum_execute_enum
 Execute settings for this object.
 
const ExecFlagType_current_execute_flag
 Reference to FEProblemBase.
 
MooseApp_restartable_app
 Reference to the application.
 
const std::string _restartable_system_name
 The system name this object is in.
 
const THREAD_ID _restartable_tid
 The thread ID for this object.
 
const bool _restartable_read_only
 Flag for toggling read only status (see ReporterData)
 
MooseApp_pg_moose_app
 The MooseApp that owns the PerfGraph.
 
const std::string _prefix
 A prefix to use for all sections.
 
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.
 
typedef std::unordered_map< processor_id_type, std::vector< PointInfo > > ProcessorToPointInfoVec
 A map from pid to a set of point info.
 
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.
 
typedef PointIndexedMap InterpCache
 A map from Point to interpolation values NOTE: this is not an asynchronous cache.
 
typedef std::vector< InterpCacheInterpCaches
 A vector of such caches, indexed by to_problem.
 

Private Member Functions

bool usesMooseAppCoordTransform () const override
 Whether this transfer handles non-translation-based transformations, e.g.
 
void buildMeshFunctions (const unsigned int var_index, std::vector< libMesh::MeshFunction > &local_meshfuns)
 
void evaluateInterpValuesWithMeshFunctions (const std::vector< BoundingBox > &local_bboxes, std::vector< libMesh::MeshFunction > &local_meshfuns, const std::vector< std::pair< Point, unsigned int > > &incoming_points, std::vector< std::pair< Real, Real > > &outgoing_vals)
 
void prepareToTransfer ()
 Initialize supporting attributes like bounding boxes, processor app indexes etc.
 
void transferVariable (unsigned int i)
 Performs the transfer for the variable of index i.
 
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.
 
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.
 
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 setSolutionVectorValues (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
 
void correctSolutionVectorValues (const unsigned int var_index, const DofobjectToInterpValVec &dofobject_to_valsvec, const InterpCaches &interp_caches)
 
void cacheOutgoingPointInfo (const Point point, const dof_id_type dof_object_id, const unsigned int problem_id, ProcessorToPointVec &outgoing_points)
 
Real bboxMinDistance (const Point &p, const BoundingBox &bbox) const
 Compute minimum distance.
 
Real bboxMaxDistance (const Point &p, const BoundingBox &bbox) const
 Compute max distance.
 
Point getMaxToProblemsBBoxDimensions () const
 Obtains the max dimensions to scale all points in the mesh.
 
std::vector< BoundingBox > getRestrictedFromBoundingBoxes () const
 Get from bounding boxes for given domains and boundaries.
 
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.
 
void adjustTransferredSolution (FEProblemBase *from_problem, PostprocessorName &from_postprocessor, FEProblemBase &to_problem, PostprocessorName &to_postprocessor)
 
void adjustTransferredSolutionNearestPoint (unsigned int i, FEProblemBase *from_problem, PostprocessorName &from_postprocessor, FEProblemBase &to_problem, PostprocessorName &to_postprocessor)
 
Point mapBackWithoutCollapsing (MultiAppCoordTransform &transform, const Point &p, const std::string &phase) const
 Shared implementation for getPointInSourceAppFrame / getPointInTargetAppFrame.
 
void getFromMultiAppInfo ()
 
void getToMultiAppInfo ()
 
RestartableDataValueregisterRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 Helper function for actually registering the restartable data.
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 Helper function for actually registering the restartable data.
 
template<typename T , typename... Args>
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 Helper function for declaring restartable data.
 

Static Private Member Functions

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

Private Attributes

std::vector< libMesh::BoundingBox_local_bboxes
 
std::vector< libMesh::MeshFunction_local_meshfuns
 
std::vector< MooseVariableFieldBase * > _to_variables
 The target variables.
 
unsigned int _var_size
 The number of variables to transfer.
 
bool _error_on_miss
 Error out when some points can not be located.
 
const Real _default_extrapolation_value
 Value to use when no received data is valid for a target location.
 
Real _bbox_factor
 How much we should relax bounding boxes.
 
std::vector< Real > _fixed_bbox_size
 Set the bounding box sizes manually.
 
std::vector< unsigned int_froms_per_proc
 Number of source/from applications per processor. This vector is indexed by processor id.
 
std::vector< BoundingBox > _from_bboxes
 Bounding boxes for all source applications.
 
ProcessorToPointInfoVec _processor_to_pointInfoVec
 A map from processor to pointInfo vector.
 
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.
 
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
 Keeps track of all received conflicts.
 
bool _use_nearestpoint_pps
 Whether to use a nearest point UserObject to obtain the conservation factor.
 
bool _allow_skipped_adjustment
 Whether the adjustment may be skipped when the postprocessor values are 0 / of different signs.
 
std::shared_ptr< MultiApp_from_multi_app
 The MultiApps this Transfer is transferring data to or from.
 
std::shared_ptr< MultiApp_to_multi_app
 
std::unique_ptr< MooseAppCoordTransform_from_moose_app_transform
 The moose coordinate transformation object describing rotations, scaling, and coordinate system of the from application.
 
std::unique_ptr< MooseAppCoordTransform_to_moose_app_transform
 The moose coordinate transformation object describing rotations, scaling, and coordinate system of the to application.
 
const ParallelParamObject_parent
 
const MooseBase_si_moose_base
 The MooseBase that owns this interface.
 
const FEProblemBase_si_problem
 A pointer to FEProblem base.
 
ExecFlagEnum _empty_execute_enum
 Empty ExecFlagEnum for the case when the "execute_on" parameter is not included.
 
const RestartableDataMapName _metaname
 Restartable metadata name.
 
std::string _restartable_name
 The name of the object.
 

Detailed Description

Evaluates origin shape functions to compute the target variables.

Definition at line 19 of file MultiAppGeneralFieldShapeEvaluationTransfer.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
privateinherited

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

Definition at line 347 of file MultiAppGeneralFieldTransfer.h.

◆ InterpCache

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

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

Definition at line 352 of file MultiAppGeneralFieldTransfer.h.

◆ InterpCaches

typedef std::vector<InterpCache> MultiAppGeneralFieldTransfer::InterpCaches
privateinherited

A vector of such caches, indexed by to_problem.

Definition at line 355 of file MultiAppGeneralFieldTransfer.h.

◆ ProcessorToPointInfoVec

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

A map from pid to a set of point info.

Definition at line 344 of file MultiAppGeneralFieldTransfer.h.

◆ ProcessorToPointVec

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

A map from pid to a set of points.

Definition at line 326 of file MultiAppGeneralFieldTransfer.h.

Member Enumeration Documentation

◆ DIRECTION

enum Transfer::DIRECTION
inherited
Enumerator
TO_MULTIAPP 
FROM_MULTIAPP 
BETWEEN_MULTIAPP 

Definition at line 68 of file Transfer.h.

69 {
73 };
@ FROM_MULTIAPP
Definition Transfer.h:71
@ TO_MULTIAPP
Definition Transfer.h:70
@ BETWEEN_MULTIAPP
Definition Transfer.h:72

◆ MeshDivisionTransferUse

Matching enum for the mesh division behaviors.

Enumerator
RESTRICTION 
MATCH_DIVISION_INDEX 
MATCH_SUBAPP_INDEX 

Definition at line 262 of file MultiAppGeneralFieldTransfer.h.

Constructor & Destructor Documentation

◆ MultiAppGeneralFieldShapeEvaluationTransfer()

MultiAppGeneralFieldShapeEvaluationTransfer::MultiAppGeneralFieldShapeEvaluationTransfer ( const InputParameters parameters)

Definition at line 42 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

45{
46 // Nearest point isn't well defined for sending app-based data from main app to a multiapp
47 if (_nearest_positions_obj && isParamValid("to_multi_app") && !isParamValid("from_multi_app"))
48 paramError("use_nearest_position",
49 "Cannot use nearest-position algorithm when sending from the main application");
50
51 // There's not much use for matching cell divisions when the locations have to match exactly
52 // to get a valid source variable value anyway
55 paramError("from_mesh_division_usage",
56 "Matching division index is disabled for shape evaluation transfers");
57}
const InputParameters & parameters() const
Get the parameters of the object.
Definition MooseBase.h:131
void paramError(const std::string &param, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
Definition MooseBase.h:457
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition MooseBase.h:199
It is a general field transfer.
const MooseEnum & _from_mesh_division_behavior
How to use the origin mesh divisions to restrict the transfer.
const MooseEnum & _to_mesh_division_behavior
How to use the target mesh divisions to restrict the transfer.

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
protectedinherited

Definition at line 1579 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ acceptPointMeshDivision()

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

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

1952{
1953 // This routine can also be called to examine if the to_mesh_division index matches the current
1954 // source subapp index
1955 unsigned int source_mesh_div = MooseMeshDivision::INVALID_DIVISION_INDEX - 1;
1956 if (!_from_mesh_divisions.empty())
1957 source_mesh_div = _from_mesh_divisions[i_local]->divisionIndex(pt);
1958
1959 // If the point is not indexed in the source division
1960 if (!_from_mesh_divisions.empty() && source_mesh_div == MooseMeshDivision::INVALID_DIVISION_INDEX)
1961 return false;
1962 // If the point is not the at the same index in the target and the origin meshes, reject
1965 source_mesh_div != only_from_this_mesh_div)
1966 return false;
1967 // If the point is at a certain division index that is not the same as the index of the subapp
1968 // we wanted the information to be from for that point, reject
1970 source_mesh_div != only_from_this_mesh_div)
1971 return false;
1973 only_from_this_mesh_div != getGlobalSourceAppIndex(i_local))
1974 return false;
1975 else
1976 return true;
1977}
unsigned int INVALID_DIVISION_INDEX
Invalid subdomain id to return when outside the mesh division.

Referenced by MultiAppGeneralFieldTransfer::acceptPointInOriginMesh().

◆ addBBoxFactorParam()

void MultiAppTransfer::addBBoxFactorParam ( InputParameters params)
staticprotectedinherited

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

Definition at line 59 of file MultiAppTransfer.C.

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

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

◆ addSkipCoordCollapsingParam()

void MultiAppTransfer::addSkipCoordCollapsingParam ( InputParameters params)
staticinherited

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

Definition at line 73 of file MultiAppTransfer.C.

74{
75 params.addParam<bool>(
76 "skip_coordinate_collapsing",
77 true,
78 "Whether to skip coordinate collapsing (translation and rotation are still performed, only "
79 "XYZ, RZ etc collapsing is skipped) when performing mapping and inverse "
80 "mapping coordinate transformation operations. This parameter should only "
81 "be set by users who really know what they're doing.");
82 params.addParamNamesToGroup("skip_coordinate_collapsing", "Advanced");
83}
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
This method takes a space delimited list of parameter names and adds them to the specified group name...
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.

Referenced by MultiAppTransfer::validParams().

◆ addUserObjectExecutionCheckParam()

void MultiAppTransfer::addUserObjectExecutionCheckParam ( InputParameters params)
staticprotectedinherited

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

Definition at line 86 of file MultiAppTransfer.C.

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

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

◆ adjustTransferredSolution()

void MultiAppConservativeTransfer::adjustTransferredSolution ( FEProblemBase from_problem,
PostprocessorName &  from_postprocessor,
FEProblemBase to_problem,
PostprocessorName &  to_postprocessor 
)
privateinherited

Definition at line 398 of file MultiAppConservativeTransfer.C.

402{
403 PostprocessorValue from_adjuster = 0;
404 if (from_problem)
405 from_adjuster = from_problem->getPostprocessorValueByName(from_postprocessor);
406 else
407 from_adjuster = 0;
408
409 /* Everyone on the parent side should know this value; use it to scale the solution */
411 {
412 /* In this case, only one subapp has value, and other subapps' must be zero.
413 * We should see the maximum value.
414 */
415 PostprocessorValue from_adjuster_tmp = from_adjuster;
416 comm().max(from_adjuster);
417
418 /* We may have a negative value, and let us try it again */
419 if (MooseUtils::absoluteFuzzyLessEqual(from_adjuster, 0.))
420 {
421 comm().min(from_adjuster_tmp);
422 from_adjuster = from_adjuster_tmp;
423 }
424 }
425
426 // Compute to-postprocessor to have the adjuster
427 to_problem.computeUserObjectByName(EXEC_TRANSFER, Moose::POST_AUX, to_postprocessor);
428
429 // Now we should have the right adjuster based on the transferred solution
430 const auto to_adjuster = to_problem.getPostprocessorValueByName(to_postprocessor);
431
432 // decide if the adjustment should be performed
433 if (!performAdjustment(from_adjuster, to_adjuster))
434 return;
435
436 auto & to_var = to_problem.getVariable(
438 auto & to_sys = to_var.sys().system();
439 auto var_num = to_sys.variable_number(_to_var_name);
440 auto sys_num = to_sys.number();
441 auto * pps =
442 dynamic_cast<const BlockRestrictable *>(&(to_problem.getUserObjectBase(to_postprocessor)));
443 auto & to_solution = to_var.sys().solution();
444 auto & to_mesh = to_problem.mesh().getMesh();
445 auto & moose_mesh = to_problem.mesh();
446 bool is_nodal = to_sys.variable_type(var_num).family == LAGRANGE;
447 if (is_nodal)
448 {
449 for (const auto & node : to_mesh.local_node_ptr_range())
450 {
451 // Skip this node if the variable has no dofs at it.
452 if (node->n_dofs(sys_num, var_num) < 1)
453 continue;
454
455 bool scale_current_node = false;
456 /* If we care about block IDs */
457 if (pps)
458 {
459 auto & blockids = pps->blockIDs();
460 auto & node_to_elem_map = moose_mesh.nodeToElemMap();
461 auto neighbor_elements = node_to_elem_map.find(node->id());
462 for (auto element : neighbor_elements->second)
463 {
464 auto & elem = to_mesh.elem_ref(element);
465 if (blockids.find(elem.subdomain_id()) != blockids.end())
466 {
467 scale_current_node = true;
468 break;
469 }
470 }
471 }
472 else
473 {
474 scale_current_node = true;
475 }
476 /* Need to scale this node */
477 if (scale_current_node)
478 {
479 dof_id_type dof = node->dof_number(sys_num, var_num, 0);
480 to_solution.set(dof, (from_adjuster / to_adjuster) * to_solution(dof));
481 }
482 }
483 }
484 else
485 {
486 for (auto & elem : as_range(to_mesh.local_elements_begin(), to_mesh.local_elements_end()))
487 {
488 // Skip this element if the variable has no dofs at it.
489 if (elem->n_dofs(sys_num, var_num) < 1)
490 continue;
491
492 bool scale_current_element = false;
493 if (pps)
494 {
495 auto & blockids = pps->blockIDs();
496 if (blockids.find(elem->subdomain_id()) != blockids.end())
497 {
498 scale_current_element = true;
499 }
500 }
501 else
502 {
503 scale_current_element = true;
504 }
505 if (scale_current_element)
506 {
507 unsigned int n_comp = elem->n_comp(sys_num, var_num);
508
509 for (unsigned int offset = 0; offset < n_comp; offset++)
510 {
511 dof_id_type dof = elem->dof_number(sys_num, var_num, offset);
512 to_solution.set(dof, (from_adjuster / to_adjuster) * to_solution(dof));
513 }
514 }
515 }
516 }
517
518 to_solution.close();
519 to_sys.update();
520
521 // Compute again so that the post-processor has the value with the updated solution
522 to_problem.computeUserObjectByName(EXEC_TRANSFER, Moose::POST_AUX, to_postprocessor);
523}
Real PostprocessorValue
various MOOSE typedefs
Definition MooseTypes.h:230
const ExecFlagType EXEC_TRANSFER
Definition Moose.C:58
An interface that restricts an object to subdomains via the 'blocks' input parameter.
const PostprocessorValue & getPostprocessorValueByName(const PostprocessorName &name, std::size_t t_index=0) const
Get a read-only reference to the value associated with a Postprocessor that exists.
virtual void computeUserObjectByName(const ExecFlagType &type, const Moose::AuxGroup &group, const std::string &name)
Compute an user object with the given name.
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const override
Returns the variable reference for requested variable which must be of the expected_var_type (Nonline...
virtual MooseMesh & mesh() override
const UserObject & getUserObjectBase(const std::string &name, const THREAD_ID tid=0) const
Get the user object by its name.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
Definition MooseMesh.C:3557
SystemBase & sys()
Get the system this variable is part of.
bool performAdjustment(const PostprocessorValue &from, const PostprocessorValue &to) const
virtual libMesh::System & system()=0
Get the reference to the libMesh system.
void max(const T &r, T &o, Request &req) const
void min(const T &r, T &o, Request &req) const
MooseEnum _current_direction
Definition Transfer.h:109
const Parallel::Communicator & comm() const
unsigned int variable_number(std::string_view var) const
@ VAR_FIELD_STANDARD
Definition MooseTypes.h:777
@ POST_AUX
Definition MooseTypes.h:761
@ VAR_ANY
Definition MooseTypes.h:772
SimpleRange< IndexType > as_range(const std::pair< IndexType, IndexType > &p)
uint8_t dof_id_type

Referenced by MultiAppConservativeTransfer::postExecute().

◆ adjustTransferredSolutionNearestPoint()

void MultiAppConservativeTransfer::adjustTransferredSolutionNearestPoint ( unsigned int  i,
FEProblemBase from_problem,
PostprocessorName &  from_postprocessor,
FEProblemBase to_problem,
PostprocessorName &  to_postprocessor 
)
privateinherited

Definition at line 280 of file MultiAppConservativeTransfer.C.

286{
287 PostprocessorValue from_adjuster = 0;
288 if (from_problem && _current_direction == FROM_MULTIAPP)
289 from_adjuster = from_problem->getPostprocessorValueByName(from_postprocessor);
290 else
291 from_adjuster = 0;
292
293 /* Everyone on the parent application side should know this value; use it to scale the solution */
295 {
296 /* In this case, only one subapp has value, and other subapps' must be zero.
297 * We should see the maximum value.
298 */
299 PostprocessorValue from_adjuster_tmp = from_adjuster;
300 comm().max(from_adjuster);
301
302 /* We may have a negative value */
303 if (MooseUtils::absoluteFuzzyLessEqual(from_adjuster, 0.))
304 {
305 comm().min(from_adjuster_tmp);
306 from_adjuster = from_adjuster_tmp;
307 }
308 }
309
310 PostprocessorValue to_adjuster = 0;
311 // Compute to-postprocessor to have the adjuster
313 {
314 to_problem.computeUserObjectByName(EXEC_TRANSFER, Moose::POST_AUX, to_postprocessor);
315 to_adjuster = to_problem.getPostprocessorValueByName(to_postprocessor);
316 }
317
318 auto & to_var = to_problem.getVariable(
320 auto & to_sys = to_var.sys().system();
321 auto var_num = to_sys.variable_number(_to_var_name);
322 auto sys_num = to_sys.number();
323 auto & pps = cast_ref<const NearestPointIntegralVariablePostprocessor &>(
324 _current_direction == FROM_MULTIAPP ? (to_problem.getUserObjectBase(to_postprocessor))
325 : (from_problem->getUserObjectBase(from_postprocessor)));
326 auto & to_solution = to_var.sys().solution();
327 auto & to_mesh = to_problem.mesh().getMesh();
328 bool is_nodal = to_sys.variable_type(var_num).family == LAGRANGE;
329 if (is_nodal)
330 {
331 for (const auto & node : to_mesh.local_node_ptr_range())
332 {
333 // Skip this node if the variable has no dofs at it.
334 if (node->n_dofs(sys_num, var_num) < 1)
335 continue;
336
337 Real scale = 1;
339 {
340 auto ii = pps.nearestPointIndex(*node);
341 if (ii != i || !performAdjustment(from_adjuster, pps.userObjectValue(i)))
342 continue;
343
344 scale = from_adjuster / pps.userObjectValue(i);
345 }
346 else
347 {
348 if (!performAdjustment(pps.userObjectValue(i), to_adjuster))
349 continue;
350
351 scale = pps.userObjectValue(i) / to_adjuster;
352 }
353
354 /* Need to scale this node */
355 dof_id_type dof = node->dof_number(sys_num, var_num, 0);
356 to_solution.set(dof, scale * to_solution(dof));
357 }
358 }
359 else
360 {
361 for (auto & elem : as_range(to_mesh.local_elements_begin(), to_mesh.local_elements_end()))
362 {
363 // Skip this element if the variable has no dofs at it.
364 if (elem->n_dofs(sys_num, var_num) < 1)
365 continue;
366
367 Real scale = 1;
369 {
370 unsigned int ii = pps.nearestPointIndex(elem->vertex_average());
371 if (ii != i || !performAdjustment(from_adjuster, pps.userObjectValue(i)))
372 continue;
373
374 scale = from_adjuster / pps.userObjectValue(i);
375 }
376 else
377 {
378 if (!performAdjustment(pps.userObjectValue(i), to_adjuster))
379 continue;
380
381 scale = pps.userObjectValue(i) / to_adjuster;
382 }
383
384 dof_id_type dof = elem->dof_number(sys_num, var_num, 0);
385 to_solution.set(dof, scale * to_solution(dof));
386 }
387 }
388
389 to_solution.close();
390 to_sys.update();
391
392 // Compute the to-postprocessor again so that it has the right value with the updated solution
394 to_problem.computeUserObjectByName(EXEC_TRANSFER, Moose::POST_AUX, to_postprocessor);
395}
Real scale
Definition MortarUtils.C:62

Referenced by MultiAppConservativeTransfer::postExecute().

◆ bboxMaxDistance()

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

Compute max distance.

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

Definition at line 2018 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::locatePointReceivers().

◆ bboxMinDistance()

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

Compute minimum distance.

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

Definition at line 2042 of file MultiAppGeneralFieldTransfer.C.

2043{
2044 std::array<Point, 2> source_points = {{bbox.first, bbox.second}};
2045
2046 std::array<Point, 8> all_points;
2047 for (unsigned int x = 0; x < 2; x++)
2048 for (unsigned int y = 0; y < 2; y++)
2049 for (unsigned int z = 0; z < 2; z++)
2050 all_points[x + 2 * y + 4 * z] =
2051 Point(source_points[x](0), source_points[y](1), source_points[z](2));
2052
2053 Real min_distance = std::numeric_limits<Real>::max();
2054
2055 for (unsigned int i = 0; i < 8; i++)
2056 {
2057 Real distance = (p - all_points[i]).norm();
2058 if (distance < min_distance)
2059 min_distance = distance;
2060 }
2061
2062 return min_distance;
2063}

Referenced by MultiAppGeneralFieldTransfer::locatePointReceivers().

◆ buildMeshFunctions()

void MultiAppGeneralFieldShapeEvaluationTransfer::buildMeshFunctions ( const unsigned int  var_index,
std::vector< libMesh::MeshFunction > &  local_meshfuns 
)
private

Definition at line 72 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

74{
75 local_meshfuns.reserve(_from_problems.size());
76
77 // Construct a local mesh function for each origin problem
78 for (unsigned int i_from = 0; i_from < _from_problems.size(); ++i_from)
79 {
80 FEProblemBase & from_problem = *_from_problems[i_from];
81 MooseVariableFieldBase & from_var =
82 from_problem.getVariable(0,
83 _from_var_names[var_index],
86
87 System & from_sys = from_var.sys().system();
88 unsigned int from_var_num = from_sys.variable_number(getFromVarName(var_index));
89
90 local_meshfuns.emplace_back(getEquationSystem(from_problem, _displaced_source_mesh),
91 *from_sys.current_local_solution,
92 from_sys.get_dof_map(),
93 from_var_num);
94 local_meshfuns.back().init();
95 local_meshfuns.back().enable_out_of_mesh_mode(GeneralFieldTransfer::OutOfMeshValue);
96 }
97}
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
This class provides an interface for common operations on field variables of both FE and FV types wit...
const std::vector< VariableName > _from_var_names
Name of variables transferring from.
libMesh::EquationSystems & getEquationSystem(FEProblemBase &problem, bool use_displaced) const
Returns the Problem's equation system, displaced or not Be careful! If you transfer TO a displaced sy...
VariableName getFromVarName(unsigned int var_index) const
Get the source variable name, with the suffix for array/vector variables.
bool _displaced_source_mesh
True if displaced mesh is used for the source mesh, otherwise false.
std::vector< FEProblemBase * > _from_problems
@ VAR_FIELD_ANY
Definition MooseTypes.h:781

Referenced by prepareEvaluationOfInterpValues().

◆ 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 
)
privateinherited

Definition at line 928 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ cacheOutgoingPointInfo()

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

Definition at line 729 of file MultiAppGeneralFieldTransfer.C.

733{
734 std::set<processor_id_type> processors;
735 // Find which processors will receive point data so they can send back value data
736 // The list can be larger than needed, depending on the heuristic / algorithm used to make
737 // the call on whether a processor (and the apps it runs) should be involved
738 processors.clear();
739 locatePointReceivers(point, processors);
740
741 // We need to send this location data to these processors so they can send back values
742 for (const auto pid : processors)
743 {
744 // Select which from_mesh_division the source data must come from for this point
745 unsigned int required_source_division = 0;
747 required_source_division = getGlobalTargetAppIndex(problem_id);
751 required_source_division = _to_mesh_divisions[problem_id]->divisionIndex(
752 _to_transforms[getGlobalTargetAppIndex(problem_id)]->mapBack(point));
753
754 // Skip if we already know we don't want the point
755 if (required_source_division == MooseMeshDivision::INVALID_DIVISION_INDEX)
756 continue;
757
758 // Store outgoing information for every source process
759 outgoing_points[pid].push_back(std::pair<Point, unsigned int>(point, required_source_division));
760
761 // Store point information locally for processing received data
762 // We can use these information when inserting values into the solution vector
763 PointInfo pointinfo;
764 pointinfo.problem_id = problem_id;
765 pointinfo.dof_object_id = dof_object_id;
766 _processor_to_pointInfoVec[pid].push_back(pointinfo);
767 }
768}
void locatePointReceivers(const Point point, std::set< processor_id_type > &processors)
ProcessorToPointInfoVec _processor_to_pointInfoVec
A map from processor to pointInfo vector.

Referenced by MultiAppGeneralFieldTransfer::extractOutgoingPoints().

◆ callMooseError() [1/2]

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

External method for calling moose error with added object context.

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

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

Definition at line 114 of file MooseBase.C.

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

◆ callMooseError() [2/2]

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

External method for calling moose error with added object context.

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

Definition at line 105 of file MooseBase.C.

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

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

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

218{
220 if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum())
221 mooseDoOnce(
222 mooseWarning("MultiAppTransfer execute_on flags do not match associated from_multi_app "
223 "execute_on flags"));
224
226 if (getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
227 mooseDoOnce(
228 mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
229 "execute_on flags"));
230
231 // In the case of siblings transfer, the check will be looser
233 if (getExecuteOnEnum() != _from_multi_app->getExecuteOnEnum() &&
234 getExecuteOnEnum() != _to_multi_app->getExecuteOnEnum())
235 mooseDoOnce(
236 mooseWarning("MultiAppTransfer execute_on flags do not match associated to_multi_app "
237 "and from_multi_app execute_on flags"));
238}
std::shared_ptr< MultiApp > _from_multi_app
The MultiApps this Transfer is transferring data to or from.
std::shared_ptr< MultiApp > _to_multi_app
const ExecFlagEnum & getExecuteOnEnum() const
Return the execute on MultiMooseEnum for this object.
void mooseWarning(Args &&... args) const

Referenced by MultiAppTransfer::MultiAppTransfer().

◆ checkParentAppUserObjectExecuteOn()

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

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

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

Definition at line 732 of file MultiAppTransfer.C.

733{
734 // Source app is not the parent, most execution schedules are fine since the transfer occurs after
735 // the app has run NOTE: not true for siblings transfer
736 if (hasFromMultiApp())
737 return;
738 // Get user object from parent. We don't know the type
739 const auto & uo = _fe_problem.getUserObject<UserObject>(object_name);
740 // If we are executing on transfers, every additional schedule is not a problem
741 if (uo.getExecuteOnEnum().contains(EXEC_TRANSFER))
742 return;
743 // If we are transferring on the same schedule as we are executing, we are lagging. Is it on
744 // purpose? We don't know, so we will give a warning unless silenced.
745 // The derived-classes offer the parameter to silence this warning
746 // Note: UOs execute before transfers on INITIAL so it's not a problem at this time
747 if (uo.getExecuteOnEnum().contains(_fe_problem.getCurrentExecuteOnFlag()) &&
749 if (!isParamValid("warn_source_object_execution_schedule") ||
750 getParam<bool>("warn_source_object_execution_schedule"))
751 uo.paramWarning("execute_on",
752 "This UserObject-derived class is being executed on '" +
754 "' and also providing values for the '" + name() +
755 "' transfer, on that same execution schedule. Because user objects are "
756 "executed after transfers are, this means the values provided by this "
757 "user object are lagged. If you are ok with this, then set the "
758 "'warn_source_object_execution_schedule' parameter to false in this "
759 "Transfer. If not, then execute '" +
760 uo.name() +
761 "' on TRANSFER by adding it to the 'execute_on' vector parameter.");
762}
T & getUserObject(const std::string &name, unsigned int tid=0) const
Get the user object by its name.
bool hasFromMultiApp() const
Whether the transfer owns a non-null from_multi_app.
void paramWarning(const std::string &param, Args... args) const
Base class for user-specific data.
Definition UserObject.h:20
std::string stringify(const T &t)
conversion to string
Definition Conversion.h:64

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

◆ checkSiblingsTransferSupported()

virtual void MultiAppGeneralFieldTransfer::checkSiblingsTransferSupported ( ) const
inlineoverrideprotectedvirtualinherited

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

660{
661 if (!fe_problem.hasVariable(var_name))
662 {
663 if (param_name.empty())
664 mooseError("The variable '", var_name, "' does not exist.");
665 else
666 paramError(param_name, "The variable '", var_name, "' does not exist.");
667 }
668}
virtual bool hasVariable(const std::string &var_name) const override
Whether or not this problem has the variable.
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
Definition MooseBase.h:271

Referenced by MultiAppDofCopyTransfer::transfer().

◆ closestToPosition()

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

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

1981{
1982 mooseAssert(_nearest_positions_obj, "Should not be here without a positions object");
1984 paramError("skip_coordinate_collapsing", "Coordinate collapsing not implemented");
1987 // Faster to just compare the index
1988 return pos_index == _nearest_positions_obj->getNearestPositionIndex(pt, initial);
1989 else
1990 {
1991 // Get the distance to the position and see if we are missing a value just because the position
1992 // is not officially the closest, but it is actually at the same distance
1993 const auto nearest_position = _nearest_positions_obj->getNearestPosition(pt, initial);
1994 const auto nearest_position_at_index = _nearest_positions_obj->getPosition(pos_index, initial);
1995 Real distance_to_position_at_index = (pt - nearest_position_at_index).norm();
1996 const Real distance_to_nearest_position = (pt - nearest_position).norm();
1997
1998 if (!MooseUtils::absoluteFuzzyEqual(distance_to_position_at_index,
1999 distance_to_nearest_position))
2000 return false;
2001 // Actually the same position (point)
2002 else if (nearest_position == nearest_position_at_index)
2003 return true;
2004 else
2005 {
2006 mooseWarning("Two equidistant positions ",
2007 nearest_position,
2008 " and ",
2009 nearest_position_at_index,
2010 " detected near point ",
2011 pt);
2012 return true;
2013 }
2014 }
2015}
void mooseWarning(Args &&... args)
Emit a warning message with the given stringified, concatenated args.
Definition MooseError.h:345
const Point & getPosition(unsigned int index, bool initial) const
Getter for a single position at a known index.
Definition Positions.C:59
unsigned int getNearestPositionIndex(const Point &target, bool initial) const
Find the nearest Position index for a given point.
Definition Positions.C:96

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

◆ connectControllableParams()

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

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

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

Definition at line 77 of file MooseBase.C.

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

◆ correctSolutionVectorValues()

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

Definition at line 1649 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ currentDirection()

MooseEnum Transfer::currentDirection ( )
inlineinherited

Definition at line 85 of file Transfer.h.

85{ return _current_direction; }

◆ customSetup()

virtual void SetupInterface::customSetup ( const ExecFlagType )
inlinevirtualinherited

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

Reimplemented in Function.

Definition at line 69 of file SetupInterface.h.

69{}

◆ declareManagedRestartableDataWithContext()

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

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

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

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

See delcareRestartableData and declareRestartableDataWithContext for more information.

Definition at line 283 of file Restartable.h.

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

◆ declareRecoverableData()

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

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

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

Note - this data will NOT be restored on Restart!

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

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

Definition at line 358 of file Restartable.h.

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

◆ declareRestartableData()

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

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

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

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

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

Definition at line 276 of file Restartable.h.

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

◆ declareRestartableDataHelper()

template<typename T , typename... Args>
RestartableData< T > & Restartable::declareRestartableDataHelper ( const std::string &  data_name,
void *  context,
Args &&...  args 
) const
privateinherited

Helper function for declaring restartable data.

We use this function to reduce code duplication when returning const/nonconst references to the data.

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

313{
314 const auto full_name = restartableName(data_name);
315
316 // Here we will create the RestartableData even though we may not use this instance.
317 // If it's already in use, the App will return a reference to the existing instance and we'll
318 // return that one instead. We might refactor this to have the app create the RestartableData
319 // at a later date.
320 auto data_ptr =
321 std::make_unique<RestartableData<T>>(full_name, context, std::forward<Args>(args)...);
322 auto & restartable_data_ref = cast_ref<RestartableData<T> &>(
323 registerRestartableDataOnApp(std::move(data_ptr), _restartable_tid));
324
325 return restartable_data_ref;
326}
const THREAD_ID _restartable_tid
The thread ID for this object.
RestartableDataValue & registerRestartableDataOnApp(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
Helper function for actually registering the restartable data.
Definition Restartable.C:63

◆ declareRestartableDataWithContext()

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

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

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

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

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

Definition at line 301 of file Restartable.h.

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

◆ declareRestartableDataWithObjectName()

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

Declare a piece of data as "restartable".

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

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

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

Definition at line 330 of file Restartable.h.

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

◆ declareRestartableDataWithObjectNameWithContext()

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

Declare a piece of data as "restartable".

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

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

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

Definition at line 340 of file Restartable.h.

344{
345 std::string old_name = _restartable_name;
346
347 _restartable_name = object_name;
348
349 T & value = declareRestartableDataWithContext<T>(data_name, context, std::forward<Args>(args)...);
350
351 _restartable_name = old_name;
352
353 return value;
354}
std::string _restartable_name
The name of the object.
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
protectedinherited

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

2209{
2210 // No conflict if we're not looking for them
2212 // Only consider conflicts if the values are valid and different
2213 if (current_value != GeneralFieldTransfer::OutOfMeshValue &&
2215 !MooseUtils::absoluteFuzzyEqual(current_value, new_value))
2216 // Conflict only occurs if the origin points are equidistant
2217 if (MooseUtils::absoluteFuzzyEqual(current_distance, new_distance))
2218 return true;
2219 return false;
2220}

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

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

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

Referenced by Transfer::setCurrentDirection().

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

◆ enabled()

virtual bool MooseObject::enabled ( ) const
inlinevirtualinherited

Return the enabled status of the object.

Reimplemented in EigenKernel.

Definition at line 49 of file MooseObject.h.

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

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

◆ 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 \emph 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 765 of file MultiAppTransfer.C.

766{
767 // parent app is the source app, EXEC_TRANSFER is fine
768 if (!hasFromMultiApp())
769 return;
770 // Get the app and problem
771 const auto & app = getFromMultiApp();
772 if (!app->hasApp())
773 return;
774 const auto & problem = app->appProblemBase(app->firstLocalApp());
775 // Use the warehouse to find the object
776 std::vector<SetupInterface *> objects_with_exec_on;
777 problem.theWarehouse()
778 .query()
779 .template condition<AttribName>(object_name)
780 .template condition<AttribExecOns>(EXEC_TRANSFER)
781 .queryInto(objects_with_exec_on);
782 if (objects_with_exec_on.size())
783 mooseError("Object '" + object_name +
784 "' should not be executed on EXEC_TRANSFER, because this transfer has "
785 "indicated it does not support it.\nExecuting this object on TIMESTEP_END should be "
786 "sufficient to get updated values.");
787}
const std::shared_ptr< MultiApp > getFromMultiApp() const
Get the MultiApp to transfer data from.

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

◆ errorPrefix()

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

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

Definition at line 264 of file MooseBase.h.

264{ return messagePrefix(); }

◆ evaluateInterpValues()

void MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValues ( const unsigned int  ,
const std::vector< std::pair< Point, unsigned int > > &  incoming_points,
std::vector< std::pair< Real, Real > > &  outgoing_vals 
)
overrideprotectedvirtual

Implements MultiAppGeneralFieldTransfer.

Definition at line 100 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

104{
106 _local_bboxes, _local_meshfuns, incoming_points, outgoing_vals);
107}
void evaluateInterpValuesWithMeshFunctions(const std::vector< BoundingBox > &local_bboxes, std::vector< libMesh::MeshFunction > &local_meshfuns, const std::vector< std::pair< Point, unsigned int > > &incoming_points, std::vector< std::pair< Real, Real > > &outgoing_vals)

◆ evaluateInterpValuesWithMeshFunctions()

void MultiAppGeneralFieldShapeEvaluationTransfer::evaluateInterpValuesWithMeshFunctions ( const std::vector< BoundingBox > &  local_bboxes,
std::vector< libMesh::MeshFunction > &  local_meshfuns,
const std::vector< std::pair< Point, unsigned int > > &  incoming_points,
std::vector< std::pair< Real, Real > > &  outgoing_vals 
)
private

Definition at line 110 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

115{
116 dof_id_type i_pt = 0;
117 for (auto & [pt, mesh_div] : incoming_points)
118 {
119 bool point_found = false;
120 outgoing_vals[i_pt].second = GeneralFieldTransfer::OutOfMeshValue;
121
122 // Loop on all local origin problems until:
123 // - we've found the point in an app and the value at that point is valid
124 // - or if looking for conflicts between apps, we must check them all
125 // - or if looking for the nearest app, we also check them all
126 for (MooseIndex(_from_problems.size()) i_from = 0;
127 i_from < _from_problems.size() &&
129 ++i_from)
130 {
131 // Check spatial restrictions
132 Real distance = 0;
133 if (!acceptPointInOriginMesh(i_from, local_bboxes, pt, mesh_div, distance))
134 continue;
135 else
136 {
137 // Use mesh function to compute interpolation values
138 const auto local_pt = getPointInSourceAppFrame(pt, i_from, "Shape function evaluation");
139 auto val = (local_meshfuns[i_from])(local_pt);
140
141 // Look for overlaps. The check is not active outside of overlap search because in that
142 // case we accept the first value from the lowest ranked process
143 // NOTE: There is no guarantee this will be the final value used among all problems
144 // but for shape evaluation we really do expect only one value to even be valid
145 if (detectConflict(val, outgoing_vals[i_pt].first, distance, outgoing_vals[i_pt].second))
146 {
147 // In the nearest-position/app mode, we save conflicts in the reference frame
149 registerConflict(i_from, 0, pt, distance, true);
150 else
151 registerConflict(i_from, 0, local_pt, distance, true);
152 }
153
154 // No need to consider decision factors if value is invalid
156 continue;
157 else
158 point_found = true;
159
160 // Assign value and the distance from the target point to the origin data
161 // distance only matters if multiple applications are providing a valid value
162 // which would mean they overlap in the reference space. The distance can help
163 // lift the indetermination on which value to select
164 if (distance < outgoing_vals[i_pt].second)
165 {
166 outgoing_vals[i_pt].first = val;
167 outgoing_vals[i_pt].second = distance;
168 }
169 }
170 }
171
172 if (!point_found)
173 outgoing_vals[i_pt] = {GeneralFieldTransfer::OutOfMeshValue,
175
176 // Move to next point
177 i_pt++;
178 }
179}
bool acceptPointInOriginMesh(unsigned int i_from, const std::vector< BoundingBox > &local_bboxes, const Point &pt, const unsigned int mesh_div, Real &distance) const

Referenced by evaluateInterpValues().

◆ examineLocalValueConflicts()

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

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

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

Referenced by MultiAppGeneralFieldTransfer::outputValueConflicts().

◆ examineReceivedValueConflicts()

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

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

1088{
1089 const auto var_name = getToVarName(var_index);
1090 // We must check a posteriori because we could have two
1091 // equidistant points with different values from two different problems, but a third point from
1092 // another problem is actually closer, so there is no conflict because only that last one
1093 // matters We check here whether the potential conflicts actually were the nearest points Loop
1094 // over potential conflicts
1095 for (auto conflict_it = _received_conflicts.begin(); conflict_it != _received_conflicts.end();)
1096 {
1097 const auto potential_conflict = *conflict_it;
1098 bool overlap_found = false;
1099
1100 // Extract info for the potential conflict
1101 const unsigned int problem_id = std::get<0>(potential_conflict);
1102 const dof_id_type dof_object_id = std::get<1>(potential_conflict);
1103 const Point p = std::get<2>(potential_conflict);
1104 const Real distance = std::get<3>(potential_conflict);
1105
1106 // Extract target variable info
1107 auto & es = getEquationSystem(*_to_problems[problem_id], _displaced_target_mesh);
1108 System * to_sys = find_sys(es, var_name);
1109 auto var_num = to_sys->variable_number(var_name);
1110 auto & fe_type = to_sys->variable_type(var_num);
1111 bool is_nodal = _to_variables[var_index]->isNodal();
1112
1113 // Higher order elemental
1114 if (fe_type.order > CONSTANT && !is_nodal)
1115 {
1116 auto cached_distance = distance_caches[problem_id].find(p);
1117 if (cached_distance == distance_caches[problem_id].end())
1118 mooseError("Conflict point was not found in the map of all origin-target distances");
1119 // Distance is still the distance when we detected a potential overlap
1120 if (MooseUtils::absoluteFuzzyEqual(cached_distance->second, distance))
1121 overlap_found = true;
1122 }
1123 // Nodal and const monomial variable
1124 else if (MooseUtils::absoluteFuzzyEqual(
1125 dofobject_to_valsvec[problem_id].find(dof_object_id)->second.distance, distance))
1126 overlap_found = true;
1127
1128 // Map will only keep the actual overlaps
1129 if (!overlap_found)
1130 _received_conflicts.erase(conflict_it);
1131 else
1132 ++conflict_it;
1133 }
1134}
std::vector< std::tuple< unsigned int, dof_id_type, Point, Real > > _received_conflicts
Keeps track of all received conflicts.

Referenced by MultiAppGeneralFieldTransfer::outputValueConflicts().

◆ execute()

void MultiAppGeneralFieldTransfer::execute ( )
overridevirtualinherited

Execute the transfer.

Implements Transfer.

Reimplemented in MultiAppGeneralFieldFunctorTransfer, and MultiAppGeneralFieldUserObjectTransfer.

Definition at line 478 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ executeAfterSiblingSourceApp()

bool Transfer::executeAfterSiblingSourceApp ( ) const
inlineinherited

Whether the transfer should be executed after its source application.

Definition at line 96 of file Transfer.h.

const bool _exec_after_source_app_exec
Whether a transfer executing on BETWEEN_MULTIAPPS and on the same execute_on flag should execute befo...
Definition Transfer.h:118

◆ extendBoundingBoxes()

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

Extends bounding boxes to avoid missing points.

Definition at line 510 of file MultiAppTransfer.C.

511{
512 const auto extension_factor = factor - 1;
513
514 // Extend (or contract if the extension factor is negative) bounding boxes along all the
515 // directions by the same length. Greater than zero values of this member may be necessary because
516 // the nearest bounding box does not necessarily give you the closest node/element. It will depend
517 // on the partition and geometry. A node/element will more likely find its nearest source
518 // element/node by extending bounding boxes. If each of the bounding boxes covers the entire
519 // domain, a node/element will be able to find its nearest source element/node for sure, but at
520 // the same time, more communication will be involved and can be expensive.
521 for (auto & box : bboxes)
522 {
523 // libmesh set an invalid bounding box using this code
524 // for (unsigned int i=0; i<LIBMESH_DIM; i++)
525 // {
526 // this->first(i) = std::numeric_limits<Real>::max();
527 // this->second(i) = -std::numeric_limits<Real>::max();
528 // }
529 // If it is an invalid box, we should skip it
530 if (box.first(0) == std::numeric_limits<Real>::max())
531 continue;
532
533 auto width = box.second - box.first;
534 box.second += width * extension_factor;
535 box.first -= width * extension_factor;
536 }
537}

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

◆ extractLocalFromBoundingBoxes()

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

Definition at line 914 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ extractOutgoingPoints()

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

Definition at line 771 of file MultiAppGeneralFieldTransfer.C.

773{
774 // Get the variable name, with the accommodation for array/vector names
775 const auto & var_name = getToVarName(var_index);
776
777 // Clean up the map from processor to pointInfo vector
778 // This map should be consistent with outgoing_points
780
781 // Loop over all problems
782 for (const auto i_to : index_range(_to_problems))
783 {
784 const auto global_i_to = getGlobalTargetAppIndex(i_to);
785
786 // libMesh EquationSystems
788 // libMesh system that has this variable
789 System * to_sys = find_sys(es, var_name);
790 auto sys_num = to_sys->number();
791 auto var_num = _to_variables[var_index]->number();
792 auto & fe_type = _to_variables[var_index]->feType();
793 bool is_nodal = _to_variables[var_index]->isNodal();
794
795 // Moose mesh
796 const auto & to_moose_mesh = _to_problems[i_to]->mesh(_displaced_target_mesh);
797 const auto & to_mesh = to_moose_mesh.getMesh();
798
799 // We support more general variables via libMesh GenericProjector
800 if (fe_type.order > CONSTANT && !is_nodal)
801 {
805 const std::vector<unsigned int> varvec(1, var_num);
806
809 Number,
811 request_gather(*to_sys, f, &g, nullsetter, varvec);
812
813 // Defining only boundary values will not be enough to describe the variable, disallow it
814 if (_to_boundaries.size() && (_to_variables[var_index]->getContinuity() == DISCONTINUOUS))
815 mooseError("Higher order discontinuous elemental variables are not supported for "
816 "target-boundary "
817 "restricted transfers");
818
819 // Not implemented as the target mesh division could similarly be cutting elements in an
820 // arbitrary way with not enough requested points to describe the target variable
821 if (!_to_mesh_divisions.empty() && !_to_mesh_divisions[i_to]->coversEntireMesh())
822 mooseError("Higher order variable support not implemented for target mesh division "
823 "unless the mesh is fully covered / indexed in the mesh division. This must be "
824 "set programmatically in the MeshDivision object used.");
825
826 // We dont look at boundary restriction, not supported for higher order target variables
827 // Same for mesh divisions
828 const auto & to_begin = _to_blocks.empty()
829 ? to_mesh.active_local_elements_begin()
830 : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
831
832 const auto & to_end = _to_blocks.empty()
833 ? to_mesh.active_local_elements_end()
834 : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
835
836 ConstElemRange to_elem_range(to_begin, to_end);
837
838 request_gather.project(to_elem_range);
839
840 dof_id_type point_id = 0;
841 for (const Point & p : f.points_requested())
842 // using the point number as a "dof_object_id" will serve to identify the point if we ever
843 // rework interp/distance_cache into the dof_id_to_value maps
845 (*_to_transforms[global_i_to])(p), point_id++, i_to, outgoing_points);
846
847 // This is going to require more complicated transfer work
848 if (!g.points_requested().empty())
849 mooseError("We don't currently support variables with gradient degrees of freedom");
850 }
851 else if (is_nodal)
852 {
853 for (const auto & node : to_mesh.local_node_ptr_range())
854 {
855 // Skip this node if the variable has no dofs at it.
856 if (node->n_dofs(sys_num, var_num) < 1)
857 continue;
858
859 // Skip if it is a block restricted transfer and current node does not have
860 // specified blocks
861 if (!_to_blocks.empty() && !inBlocks(_to_blocks, to_moose_mesh, node))
862 continue;
863
864 if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, node))
865 continue;
866
867 // Skip if the node does not meet the target mesh division behavior
868 // We cannot know from which app the data will come from so we cannot know
869 // the source mesh division index and the source app global index
870 if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*node) ==
872 continue;
873
874 // Cache point information
875 // We will use this information later for setting values back to solution vectors
877 (*_to_transforms[global_i_to])(*node), node->id(), i_to, outgoing_points);
878 }
879 }
880 else // Elemental, constant monomial
881 {
882 for (const auto & elem :
883 as_range(to_mesh.local_elements_begin(), to_mesh.local_elements_end()))
884 {
885 // Skip this element if the variable has no dofs at it.
886 if (elem->n_dofs(sys_num, var_num) < 1)
887 continue;
888
889 // Skip if the element is not inside the block restriction
890 if (!_to_blocks.empty() && !inBlocks(_to_blocks, elem))
891 continue;
892
893 // Skip if the element does not have a side on the boundary
894 if (!_to_boundaries.empty() && !onBoundaries(_to_boundaries, to_moose_mesh, elem))
895 continue;
896
897 // Skip if the element is not indexed within the mesh division
898 if (!_to_mesh_divisions.empty() && _to_mesh_divisions[i_to]->divisionIndex(*elem) ==
900 continue;
901
902 // Cache point information
903 // We will use this information later for setting values back to solution vectors
904 cacheOutgoingPointInfo((*_to_transforms[global_i_to])(elem->vertex_average()),
905 elem->id(),
906 i_to,
907 outgoing_points);
908 } // for
909 } // else
910 } // for
911}
std::set< BoundaryID > _to_boundaries
Target boundary(ies) restriction.
void cacheOutgoingPointInfo(const Point point, const dof_id_type dof_object_id, const unsigned int problem_id, ProcessorToPointVec &outgoing_points)
std::set< SubdomainID > _to_blocks
Target block(s) restriction.
StoredRange< MeshBase::const_element_iterator, const Elem * > ConstElemRange

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ 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 99 of file Transfer.C.

100{
101 // Find the system this variable is from
102 for (unsigned int i = 0; i < es.n_systems(); i++)
103 if (es.get_system(i).has_variable(var_name))
104 return &es.get_system(i);
105
106 ::mooseError("Unable to find variable " + var_name + " in any system.");
107
108 // Unreachable
109 return &es.get_system(0);
110}
unsigned int n_systems() const
const T_sys & get_system(std::string_view name) const

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

◆ flagInvalidSolutionInternal()

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

Set solution invalid mark for the given solution ID.

Definition at line 41 of file SolutionInvalidInterface.C.

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

◆ getAppInfo()

void MultiAppGeneralFieldTransfer::getAppInfo ( )
overridevirtualinherited

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

Reimplemented from MultiAppTransfer.

Definition at line 462 of file MultiAppGeneralFieldTransfer.C.

463{
465
466 // Create the point locators to locate evaluation points in the origin mesh(es)
468 for (const auto i_from : index_range(_from_problems))
469 {
470 const auto & from_moose_mesh = _from_problems[i_from]->mesh(_displaced_source_mesh);
471 _from_point_locators[i_from] =
472 PointLocatorBase::build(TREE_LOCAL_ELEMENTS, from_moose_mesh.getMesh());
473 _from_point_locators[i_from]->enable_out_of_mesh_mode();
474 }
475}
virtual void getAppInfo()
This method will fill information into the convenience member variables (_to_problems,...

Referenced by MultiAppGeneralFieldTransfer::execute().

◆ getBase()

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

Definition at line 147 of file MooseBase.h.

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

Referenced by MooseBase::uniqueParameterName().

◆ getCheckedPointerParam()

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

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

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

Definition at line 450 of file MooseBase.h.

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

◆ getDataFileName()

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

Deprecated method.

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

Definition at line 21 of file DataFileInterface.C.

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

◆ getDataFileNameByName()

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

Deprecated method.

Use getDataFilePath() instead.

Definition at line 31 of file DataFileInterface.C.

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

◆ getDataFilePath()

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

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

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

Definition at line 40 of file DataFileInterface.C.

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

Referenced by DataFileInterface::getDataFileNameByName().

◆ getDataSourceName()

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

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

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

Parameters
var_indexindex of the variable/functor being transferred

Reimplemented in MultiAppGeneralFieldFunctorTransfer, and MultiAppGeneralFieldUserObjectTransfer.

Definition at line 2160 of file MultiAppGeneralFieldTransfer.C.

2161{
2162 mooseAssert(var_index < _from_var_names.size(), "No source variable at this index");
2163 return "variable '" + getFromVarName(var_index) + "'";
2164}

Referenced by MultiAppGeneralFieldTransfer::outputValueConflicts().

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

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

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

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

541{
542 std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
543 for (unsigned int i = 0; i < _from_meshes.size(); i++)
544 {
545 // Get a bounding box around the mesh elements that are local to the current
546 // processor.
548
549 // Translate the bounding box to the from domain's position. We may have rotations so we must
550 // be careful in constructing the new min and max (first and second)
551 const auto from_global_num = getGlobalSourceAppIndex(i);
552 transformBoundingBox(bbox, *_from_transforms[from_global_num]);
553
554 // Cast the bounding box into a pair of points (so it can be put through
555 // MPI communication).
556 bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
557 }
558
559 // Serialize the bounding box points.
560 _communicator.allgather(bb_points);
561
562 // Recast the points back into bounding boxes and return.
563 std::vector<BoundingBox> bboxes(bb_points.size());
564 for (unsigned int i = 0; i < bb_points.size(); i++)
565 bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
566
567 // possibly extend bounding boxes
569
570 return bboxes;
571}
static void transformBoundingBox(libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
Transform a bounding box according to the transformations in the provided coordinate transformation o...
void extendBoundingBoxes(const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
Extends bounding boxes to avoid missing points.
Real _bbox_factor
Extend (or contract) bounding box by a factor in all directions Greater than one values of this membe...
libMesh::BoundingBox create_local_bounding_box(const MeshBase &mesh)

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

◆ getFromBoundingBoxes() [2/2]

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

Definition at line 574 of file MultiAppTransfer.C.

575{
576 std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
577 const Real min_r = std::numeric_limits<Real>::lowest();
578 const Real max_r = std::numeric_limits<Real>::max();
579
580 for (unsigned int i = 0; i < _from_meshes.size(); i++)
581 {
582
583 Point min(max_r, max_r, max_r);
584 Point max(min_r, min_r, min_r);
585 bool at_least_one = false;
586
587 // TODO: Factor this into mesh_tools after adding new boundary bounding box routine.
588 const ConstBndNodeRange & bnd_nodes = *_from_meshes[i]->getBoundaryNodeRange();
589 for (const auto & bnode : bnd_nodes)
590 {
591 if (bnode->_bnd_id == boundary_id &&
592 bnode->_node->processor_id() == _from_meshes[i]->processor_id())
593 {
594 at_least_one = true;
595 const auto & node = *bnode->_node;
596 for (const auto i : make_range(Moose::dim))
597 {
598 min(i) = std::min(min(i), node(i));
599 max(i) = std::max(max(i), node(i));
600 }
601 }
602 }
603
604 BoundingBox bbox(min, max);
605 if (!at_least_one)
606 bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
607 else
608 {
609 // Translate the bounding box to the from domain's position. We may have rotations so we must
610 // be careful in constructing the new min and max (first and second)
611 const auto from_global_num = getGlobalSourceAppIndex(i);
612 transformBoundingBox(bbox, *_from_transforms[from_global_num]);
613 }
614
615 // Cast the bounding box into a pair of points (so it can be put through
616 // MPI communication).
617 bb_points[i] = static_cast<std::pair<Point, Point>>(bbox);
618 }
619
620 // Serialize the bounding box points.
621 _communicator.allgather(bb_points);
622
623 // Recast the points back into bounding boxes and return.
624 std::vector<BoundingBox> bboxes(bb_points.size());
625 for (unsigned int i = 0; i < bb_points.size(); i++)
626 bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
627
628 // possibly extend bounding boxes
630
631 return bboxes;
632}
unsigned int dim
auto max(const L &left, const R &right)
auto min(const L &left, const R &right)
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...

◆ getFromMultiApp()

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

Get the MultiApp to transfer data from.

Definition at line 65 of file MultiAppTransfer.h.

66 {
67 if (!_from_multi_app)
69 "A from_multiapp was requested but is unavailable. Check the from_multi_app parameter");
70 else
71 return _from_multi_app;
72 }

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

◆ getFromMultiAppInfo()

void MultiAppTransfer::getFromMultiAppInfo ( )
privateinherited

Definition at line 495 of file MultiAppTransfer.C.

496{
497 if (!_from_multi_app)
498 mooseError("There is no from_multiapp to get info from");
499
501}
std::vector< Point > _from_positions
std::vector< unsigned int > _from_local2global_map
Given local app index, returns global app index.

Referenced by MultiAppTransfer::getAppInfo().

◆ getFromName()

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

Get the name of thing being transferred from.

Returns
the name of the multiapp or "Parent"

Definition at line 90 of file MultiAppTransfer.h.

91 {
93 return _from_multi_app->name();
94 else
95 return "Parent";
96 }

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

636{
637 std::vector<unsigned int> froms_per_proc;
638 if (_to_multi_app)
639 froms_per_proc.resize(n_processors(), 1);
640 if (_from_multi_app)
641 {
642 froms_per_proc.resize(n_processors());
643 _communicator.allgather(_from_multi_app->numLocalApps(), froms_per_proc);
644 }
645 return froms_per_proc;
646}

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

◆ getFromVarName()

VariableName MultiAppGeneralFieldTransfer::getFromVarName ( unsigned int  var_index) const
inherited

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

Definition at line 2167 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ 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; }

◆ getGlobalSourceAppIndex()

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

◆ getGlobalStartAppPerProc()

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

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

Definition at line 2150 of file MultiAppGeneralFieldTransfer.C.

2151{
2152 std::vector<unsigned int> global_app_start_per_proc(1, -1);
2153 if (_from_local2global_map.size())
2154 global_app_start_per_proc[0] = _from_local2global_map[0];
2155 _communicator.allgather(global_app_start_per_proc, true);
2156 return global_app_start_per_proc;
2157}

Referenced by MultiAppGeneralFieldTransfer::prepareToTransfer().

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

717{
718 mooseAssert(_current_direction == FROM_MULTIAPP || i_to < _to_local2global_map.size(),
719 "Out of bounds local to-app index");
721}
std::vector< unsigned int > _to_local2global_map
Given local app index, returns global app index.

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

◆ getHitNode() [1/2]

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

Definition at line 136 of file MooseBase.h.

136{ return getHitNode(_pars); }

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

◆ getHitNode() [2/2]

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

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

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

Definition at line 167 of file MooseBase.C.

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

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

725{
727 ? 0
729}

◆ getMaxToProblemsBBoxDimensions()

Point MultiAppGeneralFieldTransfer::getMaxToProblemsBBoxDimensions ( ) const
privateinherited

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

2188{
2189 Point max_dimension = {std::numeric_limits<Real>::min(),
2190 std::numeric_limits<Real>::min(),
2191 std::numeric_limits<Real>::min()};
2192
2193 for (const auto & to_mesh : _to_meshes)
2194 {
2195 const auto bbox = to_mesh->getInflatedProcessorBoundingBox();
2196 for (const auto dim : make_range(Moose::dim))
2197 max_dimension(dim) = std::max(
2198 max_dimension(dim), std::max(std::abs(bbox.first(dim)), std::abs(bbox.second(dim))));
2199 }
2200
2201 return max_dimension;
2202}
std::vector< MooseMesh * > _to_meshes
MetaPhysicL::DualNumber< V, D, asd > abs(const MetaPhysicL::DualNumber< V, D, asd > &a)
Definition EigenADReal.h:50

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ getMooseApp()

MooseApp & MooseBase::getMooseApp ( ) const
inlineinherited

Get the MooseApp this class is associated with.

Definition at line 87 of file MooseBase.h.

87{ return _app; }

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

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

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 > _multi_app
Deprecated class attribute for compatibility with the apps.

Referenced by MultiAppCloneReporterTransfer::initialSetup().

◆ getParam() [1/2]

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

Retrieve a parameter for the object.

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

Definition at line 406 of file MooseBase.h.

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

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

◆ getParam() [2/2]

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

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

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

Definition at line 443 of file MooseBase.h.

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

◆ getPointInSourceAppFrame()

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

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

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

Definition at line 691 of file MultiAppTransfer.C.

694{
696 *_from_transforms[getGlobalSourceAppIndex(local_i_from)], p, phase);
697}
Point mapBackWithoutCollapsing(MultiAppCoordTransform &transform, const Point &p, const std::string &phase) const
Shared implementation for getPointInSourceAppFrame / getPointInTargetAppFrame.

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

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

703{
705}

Referenced by MultiAppGeneralFieldTransfer::cacheIncomingInterpVals(), and MultiAppGeneralFieldTransfer::examineLocalValueConflicts().

◆ getRenamedParam()

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

Retrieve a renamed parameter for the object.

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

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

Definition at line 420 of file MooseBase.h.

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

◆ getRestartableData()

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

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

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

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

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

Definition at line 294 of file Restartable.h.

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

◆ getRestrictedFromBoundingBoxes()

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

Get from bounding boxes for given domains and boundaries.

Definition at line 2066 of file MultiAppGeneralFieldTransfer.C.

2067{
2068 std::vector<std::pair<Point, Point>> bb_points(_from_meshes.size());
2069 const Real min_r = std::numeric_limits<Real>::lowest();
2070 const Real max_r = std::numeric_limits<Real>::max();
2071
2072 for (const auto j : make_range(_from_meshes.size()))
2073 {
2074 Point min(max_r, max_r, max_r);
2075 Point max(min_r, min_r, min_r);
2076 bool at_least_one = false;
2077 const auto & from_mesh = _from_problems[j]->mesh(_displaced_source_mesh);
2078
2079 for (const auto & elem : as_range(from_mesh.getMesh().local_elements_begin(),
2080 from_mesh.getMesh().local_elements_end()))
2081 {
2082 if (!_from_blocks.empty() && !inBlocks(_from_blocks, from_mesh, elem))
2083 continue;
2084
2085 for (const auto & node : elem->node_ref_range())
2086 {
2087 if (!_from_boundaries.empty() && !onBoundaries(_from_boundaries, from_mesh, &node))
2088 continue;
2089
2090 at_least_one = true;
2091 for (const auto i : make_range(Moose::dim))
2092 {
2093 min(i) = std::min(min(i), node(i));
2094 max(i) = std::max(max(i), node(i));
2095 }
2096 }
2097 }
2098
2099 // For 2D RZ problems, we need to amend the bounding box to cover the whole XYZ projection
2100 // - The XYZ-Y axis is assumed aligned with the RZ-Z axis
2101 // - RZ systems also cover negative coordinates hence the use of the maximum R
2102 // NOTE: We will only support the case where there is only one coordinate system
2103 if ((from_mesh.getUniqueCoordSystem() == Moose::COORD_RZ) && (LIBMESH_DIM == 3))
2104 {
2105 min(0) = -max(0);
2106 min(2) = -max(0);
2107 max(2) = max(0);
2108 }
2109
2110 BoundingBox bbox(min, max);
2111 if (!at_least_one)
2112 bbox.min() = max; // If we didn't hit any nodes, this will be _the_ minimum bbox
2113 else
2114 {
2115 // Translate the bounding box to the from domain's position. We may have rotations so we
2116 // must be careful in constructing the new min and max (first and second)
2117 const auto from_global_num = getGlobalSourceAppIndex(j);
2118 transformBoundingBox(bbox, *_from_transforms[from_global_num]);
2119 }
2120
2121 // Cast the bounding box into a pair of points (so it can be put through
2122 // MPI communication).
2123 bb_points[j] = static_cast<std::pair<Point, Point>>(bbox);
2124 }
2125
2126 // Serialize the bounding box points.
2127 _communicator.allgather(bb_points);
2128
2129 // Recast the points back into bounding boxes and return.
2130 std::vector<BoundingBox> bboxes(bb_points.size());
2131 for (const auto i : make_range(bb_points.size()))
2132 bboxes[i] = static_cast<BoundingBox>(bb_points[i]);
2133
2134 // TODO move up
2135 // Check for a user-set fixed bounding box size and modify the sizes as appropriate
2136 if (_fixed_bbox_size != std::vector<Real>(3, 0))
2137 for (const auto i : make_range(Moose::dim))
2138 if (!MooseUtils::absoluteFuzzyEqual(_fixed_bbox_size[i], 0))
2139 for (const auto j : make_range(bboxes.size()))
2140 {
2141 const auto current_width = (bboxes[j].second - bboxes[j].first)(i);
2142 bboxes[j].first(i) -= (_fixed_bbox_size[i] - current_width) / 2;
2143 bboxes[j].second(i) += (_fixed_bbox_size[i] - current_width) / 2;
2144 }
2145
2146 return bboxes;
2147}
for(PetscInt i=0;i< nvars;++i)
if(!dmm->_nl) SETERRQ(PETSC_COMM_WORLD
std::vector< Real > _fixed_bbox_size
Set the bounding box sizes manually.
@ COORD_RZ
Definition MooseTypes.h:866

Referenced by MultiAppGeneralFieldTransfer::prepareToTransfer().

◆ getSharedPtr() [1/2]

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

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

Wrapper around shared_from_this().

Definition at line 70 of file MooseObject.C.

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

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

◆ getSharedPtr() [2/2]

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

Definition at line 83 of file MooseObject.C.

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

◆ getToMultiApp()

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

Get the MultiApp to transfer data to.

Definition at line 77 of file MultiAppTransfer.h.

78 {
79 if (!_to_multi_app)
81 "A to_multiapp was requested but is unavailable. Check the to_multi_app parameter");
82 else
83 return _to_multi_app;
84 }

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

◆ getToMultiAppInfo()

void MultiAppTransfer::getToMultiAppInfo ( )
privateinherited

Definition at line 486 of file MultiAppTransfer.C.

487{
488 if (!_to_multi_app)
489 mooseError("There is no to_multiapp to get info from");
490
492}
std::vector< Point > _to_positions

Referenced by MultiAppTransfer::getAppInfo().

◆ getToName()

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

Get the name of thing being transferred to.

Returns
the name of the multiapp or "Parent"

Definition at line 102 of file MultiAppTransfer.h.

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

◆ getToVariable()

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

Return a pointer to a target variable.

Definition at line 60 of file MultiAppGeneralFieldTransfer.h.

61 {
62 return _to_variables[var_index];
63 }

Referenced by MultiAppGeneralFieldTransfer::correctSolutionVectorValues().

◆ getToVarName()

VariableName MultiAppGeneralFieldTransfer::getToVarName ( unsigned int  var_index)
inherited

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

Definition at line 2177 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ 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; }

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

650{
651 mooseAssert(_to_multi_app, "getTransferVector only works for transfers to multiapps");
652
653 return _to_multi_app->appTransferVector(_to_local2global_map[i_local], var_name);
654}

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

◆ hasBase()

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

Definition at line 142 of file MooseBase.h.

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

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

◆ inBlocks() [2/4]

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

◆ inBlocks() [3/4]

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

Reimplemented in MultiAppGeneralFieldKDTreeTransferBase, and MultiAppGeneralFieldKDTreeTransferBase.

Definition at line 1848 of file MultiAppGeneralFieldTransfer.C.

1851{
1852 return inBlocks(blocks, elem);
1853}

◆ inBlocks() [4/4]

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

Definition at line 1856 of file MultiAppGeneralFieldTransfer.C.

1859{
1860 const auto & node_blocks = mesh.getNodeBlockIds(*node);
1861 std::set<SubdomainID> u;
1862 std::set_intersection(blocks.begin(),
1863 blocks.end(),
1864 node_blocks.begin(),
1865 node_blocks.end(),
1866 std::inserter(u, u.begin()));
1867 return !u.empty();
1868}
MeshBase & mesh

◆ initialSetup()

void MultiAppGeneralFieldTransfer::initialSetup ( )
overridevirtualinherited

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

Reimplemented from MultiAppConservativeTransfer.

Reimplemented in MultiAppGeneralFieldFunctorTransfer, MultiAppGeneralFieldKDTreeTransferBase, and MultiAppGeneralFieldNearestLocationTransfer.

Definition at line 246 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldKDTreeTransferBase::initialSetup().

◆ inMesh()

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

Definition at line 1832 of file MultiAppGeneralFieldTransfer.C.

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

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

◆ isKokkosObject()

bool MooseObject::isKokkosObject ( ) const
inlineinherited

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

Definition at line 63 of file MooseObject.h.

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

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

◆ isParamSetByUser()

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

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

Parameters
nameThe name of the parameter to test

Definition at line 205 of file MooseBase.h.

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

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

◆ isParamValid()

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

Test if the supplied parameter is valid.

Parameters
nameThe name of the parameter to test

Definition at line 199 of file MooseBase.h.

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

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

◆ jacobianSetup()

void SetupInterface::jacobianSetup ( )
virtualinherited

◆ locatePointReceivers()

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

Definition at line 600 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::cacheOutgoingPointInfo().

◆ mapBackWithoutCollapsing()

Point MultiAppTransfer::mapBackWithoutCollapsing ( MultiAppCoordTransform transform,
const Point &  p,
const std::string &  phase 
) const
privateinherited

Shared implementation for getPointInSourceAppFrame / getPointInTargetAppFrame.

Calls transform.mapBack(p), skipping coordinate collapsing when a coordinate system type change is present (the reverse mapping is not uniquely defined in that case).

Definition at line 671 of file MultiAppTransfer.C.

674{
675 if (transform.hasCoordinateSystemTypeChange())
676 {
678 mooseInfo(phase + " cannot use the point in the app frame due to the "
679 "non-uniqueness of the coordinate collapsing reverse mapping."
680 " Coordinate collapse is ignored for this operation");
681 transform.skipCoordinateCollapsing(true);
682 const auto pt = transform.mapBack(p);
683 transform.skipCoordinateCollapsing(false);
684 return pt;
685 }
686 else
687 return transform.mapBack(p);
688}
libMesh::Point mapBack(const libMesh::Point &point) const
Inverse transform from the reference space to our space.
void skipCoordinateCollapsing(bool skip_coordinate_collapsing)
set whether coordinate collapsing operations should be skipped

Referenced by MultiAppTransfer::getPointInSourceAppFrame(), and MultiAppTransfer::getPointInTargetAppFrame().

◆ messagePrefix() [1/2]

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

Definition at line 256 of file MooseBase.h.

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

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

◆ messagePrefix() [2/2]

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

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

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

Definition at line 140 of file MooseBase.C.

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

◆ mooseDeprecated() [1/2]

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

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

Definition at line 317 of file MooseBase.h.

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

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

◆ mooseDeprecated() [2/2]

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

◆ mooseDeprecatedNoTrace()

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

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

Definition at line 327 of file MooseBase.h.

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

◆ mooseDocumentedError()

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

Definition at line 277 of file MooseBase.h.

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

Referenced by ManifoldSubdomainGenerator::ManifoldSubdomainGenerator().

◆ mooseError()

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

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

Definition at line 271 of file MooseBase.h.

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

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

◆ mooseErrorNonPrefixed()

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

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

Definition at line 290 of file MooseBase.h.

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

◆ mooseInfo()

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

◆ mooseWarning() [1/2]

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

Emits a warning prefixed with object name and type.

Definition at line 299 of file MooseBase.h.

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

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

◆ mooseWarning() [2/2]

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

Definition at line 73 of file SolutionInvalidInterface.h.

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

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

◆ mooseWarningNonPrefixed() [1/2]

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

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

Definition at line 308 of file MooseBase.h.

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

◆ mooseWarningNonPrefixed() [2/2]

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

Definition at line 80 of file SolutionInvalidInterface.h.

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

◆ name()

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

Get the name of the class.

Returns
The name of the class

Definition at line 103 of file MooseBase.h.

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

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

◆ onBoundaries() [1/3]

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

Definition at line 1898 of file MultiAppGeneralFieldTransfer.C.

1901{
1902 // Get all boundaries each side of the element is part of
1903 const BoundaryInfo & bnd_info = mesh.getMesh().get_boundary_info();
1904 std::vector<BoundaryID> vec_to_fill;
1905 std::vector<BoundaryID> vec_to_fill_temp;
1907 for (const auto side : make_range(elem->n_sides()))
1908 {
1909 bnd_info.boundary_ids(elem, side, vec_to_fill_temp);
1910 vec_to_fill.insert(vec_to_fill.end(), vec_to_fill_temp.begin(), vec_to_fill_temp.end());
1911 }
1912 else
1913 for (const auto node_index : make_range(elem->n_nodes()))
1914 {
1915 bnd_info.boundary_ids(elem->node_ptr(node_index), vec_to_fill_temp);
1916 vec_to_fill.insert(vec_to_fill.end(), vec_to_fill_temp.begin(), vec_to_fill_temp.end());
1917 }
1918 std::set<BoundaryID> vec_to_fill_set(vec_to_fill.begin(), vec_to_fill.end());
1919
1920 // Look for a match between the boundaries from the restriction and those near the element
1921 std::set<BoundaryID> u;
1922 std::set_intersection(boundaries.begin(),
1923 boundaries.end(),
1924 vec_to_fill_set.begin(),
1925 vec_to_fill_set.end(),
1926 std::inserter(u, u.begin()));
1927 return !u.empty();
1928}
const bool _elemental_boundary_restriction_on_sides
Whether elemental variable boundary restriction is considered by element side or element nodes.
const dof_id_type n_nodes

◆ onBoundaries() [2/3]

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

Definition at line 1880 of file MultiAppGeneralFieldTransfer.C.

1883{
1884 const BoundaryInfo & bnd_info = mesh.getMesh().get_boundary_info();
1885 std::vector<BoundaryID> vec_to_fill;
1886 bnd_info.boundary_ids(node, vec_to_fill);
1887 std::set<BoundaryID> vec_to_fill_set(vec_to_fill.begin(), vec_to_fill.end());
1888 std::set<BoundaryID> u;
1889 std::set_intersection(boundaries.begin(),
1890 boundaries.end(),
1891 vec_to_fill_set.begin(),
1892 vec_to_fill_set.end(),
1893 std::inserter(u, u.begin()));
1894 return !u.empty();
1895}

Referenced by MultiAppGeneralFieldTransfer::acceptPointInOriginMesh(), MultiAppGeneralFieldFunctorTransfer::buildKDTrees(), MultiAppGeneralFieldNearestLocationTransfer::buildKDTrees(), MultiAppGeneralFieldTransfer::extractOutgoingPoints(), and MultiAppGeneralFieldTransfer::getRestrictedFromBoundingBoxes().

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

◆ outputValueConflicts()

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

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

Definition at line 1309 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ paramError()

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

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

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

Definition at line 457 of file MooseBase.h.

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

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

◆ parameters()

const InputParameters & MooseBase::parameters ( ) const
inlineinherited

Get the parameters of the object.

Returns
The parameters of the object

Definition at line 131 of file MooseBase.h.

131{ return _pars; }

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

◆ paramInfo()

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

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

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

Definition at line 471 of file MooseBase.h.

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

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

◆ paramWarning() [1/2]

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

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

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

Definition at line 464 of file MooseBase.h.

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

◆ paramWarning() [2/2]

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

◆ perfGraph()

PerfGraph & PerfGraphInterface::perfGraph ( )
inherited

Get the PerfGraph.

Definition at line 86 of file PerfGraphInterface.C.

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

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

◆ performAdjustment()

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

Definition at line 526 of file MultiAppConservativeTransfer.C.

528{
529 if (from * to > 0)
530 return true;
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.

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

◆ possibleDirections()

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

Used to construct InputParameters.

Definition at line 76 of file Transfer.h.

76{ return "to_multiapp from_multiapp between_multiapp"; }

Referenced by Transfer::validParams().

◆ postExecute()

void MultiAppGeneralFieldTransfer::postExecute ( )
overridevirtualinherited

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

522{
526}
virtual void postExecute()
Add some extra work if necessary after execute().
bool _already_output_search_value_conflicts
Whether we already output the search value conflicts.

Referenced by MultiAppGeneralFieldTransfer::execute().

◆ prepareEvaluationOfInterpValues()

void MultiAppGeneralFieldShapeEvaluationTransfer::prepareEvaluationOfInterpValues ( const unsigned int  var_index)
overrideprotectedvirtual

Implements MultiAppGeneralFieldTransfer.

Definition at line 60 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

62{
63 _local_bboxes.clear();
66
67 _local_meshfuns.clear();
69}
void buildMeshFunctions(const unsigned int var_index, std::vector< libMesh::MeshFunction > &local_meshfuns)
void extractLocalFromBoundingBoxes(std::vector< BoundingBox > &local_bboxes)

◆ prepareToTransfer()

void MultiAppGeneralFieldTransfer::prepareToTransfer ( )
privateinherited

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

Definition at line 495 of file MultiAppGeneralFieldTransfer.C.

496{
497 // Get the bounding boxes for the "from" domains.
498 // Clean up _from_bboxes from the previous transfer execution
499 _from_bboxes.clear();
500
501 // NOTE: This ignores the app's bounding box inflation and padding
503
504 // Expand bounding boxes. Some desired points might be excluded
505 // without an expansion
507
508 // Figure out how many "from" domains each processor owns.
509 _froms_per_proc.clear();
511
512 // Get the index for the first source app every processor owns
514
515 // No need to keep searching for conflicts if the mesh has not changed
518}
std::vector< unsigned int > getGlobalStartAppPerProc() const
Get global index for the first app each processes owns Requires a global communication,...
Real _bbox_factor
How much we should relax bounding boxes.
std::vector< BoundingBox > getRestrictedFromBoundingBoxes() const
Get from bounding boxes for given domains and boundaries.
std::vector< unsigned int > getFromsPerProc()
Return the number of "from" domains that each processor owns.

Referenced by MultiAppGeneralFieldTransfer::execute().

◆ queryParam()

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

Query a parameter for the object.

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

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

Definition at line 413 of file MooseBase.h.

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

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

◆ registerConflict()

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

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

1075{
1076 // NOTE We could be registering the same conflict several times, we could count them instead
1077 if (local)
1078 _local_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1079 else
1080 _received_conflicts.push_back(std::make_tuple(problem, dof_id, p, dist));
1081}

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

◆ registerInvalidSolutionInternal()

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

Definition at line 55 of file SolutionInvalidInterface.C.

57{
59 _si_moose_base.type(), message, warning);
60}
const std::string & type() const
Get the type of this class.
Definition MooseBase.h:93
InvalidSolutionID registerInvalidity(const std::string &object_type, const std::string &message, const bool warning)
Call to register an invalid calculation.

◆ registerRestartableDataOnApp()

RestartableDataValue & Restartable::registerRestartableDataOnApp ( std::unique_ptr< RestartableDataValue data,
THREAD_ID  tid 
) const
privateinherited

Helper function for actually registering the restartable data.

Definition at line 63 of file Restartable.C.

65{
67 std::move(data), tid, _restartable_read_only, _metaname);
68}
RestartableDataValue & registerRestartableData(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid, bool read_only, const RestartableDataMapName &metaname="")
Definition MooseApp.C:2455
const RestartableDataMapName _metaname
Restartable metadata name.
const bool _restartable_read_only
Flag for toggling read only status (see ReporterData)
MooseApp & _restartable_app
Reference to the application.

Referenced by Restartable::declareRestartableDataHelper().

◆ registerRestartableNameWithFilterOnApp()

void Restartable::registerRestartableNameWithFilterOnApp ( const std::string &  name,
Moose::RESTARTABLE_FILTER  filter 
)
privateinherited

Helper function for actually registering the restartable data.

Definition at line 71 of file Restartable.C.

73{
75}
void registerRestartableNameWithFilter(const std::string &name, Moose::RESTARTABLE_FILTER filter)
NOTE: This is an internal function meant for MOOSE use only!
Definition MooseApp.C:1707

Referenced by Restartable::declareRecoverableData().

◆ registerTimedSection() [1/2]

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

Call to register a named section for timing.

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

Definition at line 61 of file PerfGraphInterface.C.

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

◆ registerTimedSection() [2/2]

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

Call to register a named section for timing.

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

Definition at line 72 of file PerfGraphInterface.C.

76{
77 const auto timed_section_name = timedSectionName(section_name);
78 if (!moose::internal::getPerfGraphRegistry().sectionExists(timed_section_name))
80 timedSectionName(section_name), level, live_message, print_dots);
81 else
82 return moose::internal::getPerfGraphRegistry().sectionID(timed_section_name);
83}

◆ residualSetup()

void SetupInterface::residualSetup ( )
virtualinherited

◆ restartableName()

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

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

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

Definition at line 78 of file Restartable.C.

79{
80 return _restartable_system_name + "/" + _restartable_name + "/" + data_name;
81}
const std::string _restartable_system_name
The system name this object is in.

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

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

90 {
93 }
MooseEnum direction()
Definition Transfer.h:84

◆ setSolutionVectorValues()

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

Definition at line 1446 of file MultiAppGeneralFieldTransfer.C.

1450{
1451 // Get the variable name, with the accommodation for array/vector names
1452 const auto & var_name = getToVarName(var_index);
1453
1454 for (const auto problem_id : index_range(_to_problems))
1455 {
1456 auto & dofobject_to_val = dofobject_to_valsvec[problem_id];
1457
1458 // libMesh EquationSystems
1459 // NOTE: we would expect to set variables from the displaced equation system here
1460 auto & es = getEquationSystem(*_to_problems[problem_id], false);
1461
1462 // libMesh system
1463 System * to_sys = find_sys(es, var_name);
1464
1465 // libMesh mesh
1466 const MeshBase & to_mesh = _to_problems[problem_id]->mesh(_displaced_target_mesh).getMesh();
1467 auto var_num = to_sys->variable_number(var_name);
1468 auto sys_num = to_sys->number();
1469
1470 auto & fe_type = _to_variables[var_index]->feType();
1471 bool is_nodal = _to_variables[var_index]->isNodal();
1472
1473 if (fe_type.order > CONSTANT && !is_nodal)
1474 {
1475 // We may need to use existing data values in places where the
1476 // from app domain doesn't overlap
1477 libMesh::MeshFunction to_func(
1478 es, *to_sys->current_local_solution, to_sys->get_dof_map(), var_num);
1479 to_func.init();
1480
1482 interp_caches[problem_id], to_func, _default_extrapolation_value);
1483 libMesh::VectorSetAction<Number> setter(*to_sys->solution);
1484 const std::vector<unsigned int> varvec(1, var_num);
1485
1488 Number,
1490 set_solution(*to_sys, f, nullptr, setter, varvec);
1491
1492 // We dont look at boundary restriction, not supported for higher order target variables
1493 const auto & to_begin = _to_blocks.empty()
1494 ? to_mesh.active_local_elements_begin()
1495 : to_mesh.active_local_subdomain_set_elements_begin(_to_blocks);
1496
1497 const auto & to_end = _to_blocks.empty()
1498 ? to_mesh.active_local_elements_end()
1499 : to_mesh.active_local_subdomain_set_elements_end(_to_blocks);
1500
1501 ConstElemRange active_local_elem_range(to_begin, to_end);
1502
1503 set_solution.project(active_local_elem_range);
1504 }
1505 else
1506 {
1507 for (const auto & val_pair : dofobject_to_val)
1508 {
1509 const auto dof_object_id = val_pair.first;
1510
1511 const DofObject * dof_object = nullptr;
1512 if (is_nodal)
1513 dof_object = to_mesh.node_ptr(dof_object_id);
1514 else
1515 dof_object = to_mesh.elem_ptr(dof_object_id);
1516
1517 const auto dof = dof_object->dof_number(sys_num, var_num, 0);
1518 const auto val = val_pair.second.interp;
1519
1520 // This will happen if meshes are mismatched
1522 {
1523 const auto target_location =
1525 ? " on target app " + std::to_string(getGlobalTargetAppIndex(problem_id))
1526 : " on parent app";
1527 const auto info_msg = "\nThis check can be turned off by setting 'error_on_miss' to "
1528 "false. The 'extrapolation_constant' parameter will be used to set "
1529 "the local value at missed points.";
1530 if (is_nodal)
1531 mooseError("No source value for node ",
1532 dof_object_id,
1533 target_location,
1534 " could be located. Node details:\n",
1535 _to_meshes[problem_id]->nodePtr(dof_object_id)->get_info(),
1536 "\n",
1537 info_msg);
1538 else
1539 mooseError("No source value for element ",
1540 dof_object_id,
1541 target_location,
1542 " could be located. Element details:\n",
1543 _to_meshes[problem_id]->elemPtr(dof_object_id)->get_info(),
1544 "\n",
1545 info_msg);
1546 }
1547
1548 // We should not put garbage into our solution vector
1549 // but it can be that we want to set it to a different value than what was already there
1550 // for example: the source app has been displaced and was sending an indicator of its
1551 // position
1553 {
1555 {
1556 // For nearest-valid-target, keep the out-of-mesh sentinel in the solution so
1557 // that correctSolutionVectorValues can reliably identify which DOFs still need
1558 // extrapolation. Writing _default_extrapolation_value here instead would make it
1559 // impossible to distinguish a legitimately-transferred value that happens to equal
1560 // the extrapolation constant from a DOF that never received data.
1561 const auto missing_value = _post_transfer_extrapolation == "nearest-valid-target"
1564 to_sys->solution->set(dof, missing_value);
1565 }
1566 continue;
1567 }
1568 to_sys->solution->set(dof, val);
1569 }
1570 }
1571
1572 to_sys->solution->close();
1573 // Sync local solutions
1574 to_sys->update();
1575 }
1576}
Value request response base class.

Referenced by MultiAppGeneralFieldTransfer::transferVariable().

◆ 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 Material, MaterialBase, GeneralUserObject, NodalUserObject, ThreadedGeneralUserObject, Constraint, Moose::Kokkos::AuxKernel, Moose::Kokkos::MaterialBase, and Moose::Kokkos::UserObject.

Definition at line 68 of file SetupInterface.C.

69{
70}

◆ timedSectionName()

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

Optionally adds a prefix if one is defined.

Definition at line 55 of file PerfGraphInterface.C.

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

Referenced by PerfGraphInterface::registerTimedSection(), and PerfGraphInterface::registerTimedSection().

◆ timestepSetup()

void SetupInterface::timestepSetup ( )
virtualinherited

◆ transferVariable()

void MultiAppGeneralFieldTransfer::transferVariable ( unsigned int  i)
privateinherited

Performs the transfer for the variable of index i.

Definition at line 529 of file MultiAppGeneralFieldTransfer.C.

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

Referenced by MultiAppGeneralFieldTransfer::execute().

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

505{
506 MultiApp::transformBoundingBox(box, transform);
507}
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:912

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

◆ type()

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

Get the type of this class.

Returns
the name of the type of this class

Definition at line 93 of file MooseBase.h.

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

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

◆ typeAndName()

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

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

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

Definition at line 57 of file MooseBase.C.

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

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

◆ uniqueName()

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

Definition at line 69 of file MooseBase.C.

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

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

◆ uniqueParameterName()

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

Definition at line 63 of file MooseBase.C.

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

◆ usesMooseAppCoordTransform()

bool MultiAppGeneralFieldShapeEvaluationTransfer::usesMooseAppCoordTransform ( ) const
inlineoverrideprivatevirtual

Whether this transfer handles non-translation-based transformations, e.g.

whether it uses the MooseAppCoordTransform object

Reimplemented from MultiAppTransfer.

Definition at line 35 of file MultiAppGeneralFieldShapeEvaluationTransfer.h.

35{ return true; }

◆ validParams()

InputParameters MultiAppGeneralFieldShapeEvaluationTransfer::validParams ( )
static

Definition at line 26 of file MultiAppGeneralFieldShapeEvaluationTransfer.C.

27{
30 "Transfers field data at the MultiApp position using the finite element shape "
31 "functions from the origin application.");
32
33 // Blanket ban on origin boundary restriction. Most shape functions have their support extend
34 // outside the boundary. For a true face variable, this parameter would make sense again
35 params.suppressParameter<std::vector<BoundaryName>>("from_boundaries");
36 // Shape function evaluations return an invalid value outside an app's domain anyway
37 params.suppressParameter<bool>("from_app_must_contain_point");
38
39 return params;
40}
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void suppressParameter(const std::string &name)
This method suppresses an inherited parameter so that it isn't required or valid in the derived class...
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.

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

243{
244 bool variable_found = false;
245 bool has_an_app = false;
246
247 // Check the from_multi_app for the variable
248 if (is_from_multiapp && _from_multi_app)
249 for (unsigned int i = 0; i < _from_multi_app->numGlobalApps(); i++)
250 if (_from_multi_app->hasLocalApp(i))
251 {
252 has_an_app = true;
253 if (_from_multi_app->appProblemBase(i).hasVariable(var_name))
254 variable_found = true;
255 }
256
257 // Check the to_multi_app for the variable
258 if (!is_from_multiapp && _to_multi_app)
259 for (unsigned int i = 0; i < _to_multi_app->numGlobalApps(); i++)
260 if (_to_multi_app->hasLocalApp(i))
261 {
262 has_an_app = true;
263 if (_to_multi_app->appProblemBase(i).hasVariable(var_name))
264 variable_found = true;
265 }
266
267 if (!variable_found && has_an_app)
268 mooseError("Cannot find variable ", var_name, " for ", name(), " Transfer");
269}

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

Member Data Documentation

◆ _action_factory

ActionFactory& ParallelParamObject::_action_factory
protectedinherited

◆ _allow_skipped_adjustment

bool MultiAppConservativeTransfer::_allow_skipped_adjustment
privateinherited

Whether the adjustment may be skipped when the postprocessor values are 0 / of different signs.

Definition at line 70 of file MultiAppConservativeTransfer.h.

Referenced by MultiAppConservativeTransfer::performAdjustment().

◆ _already_output_search_value_conflicts

bool MultiAppGeneralFieldTransfer::_already_output_search_value_conflicts
protectedinherited

Whether we already output the search value conflicts.

Definition at line 288 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::postExecute(), and MultiAppGeneralFieldTransfer::prepareToTransfer().

◆ _app

MooseApp& MooseBase::_app
protectedinherited

The MOOSE application this is associated with.

Definition at line 375 of file MooseBase.h.

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

◆ _bbox_factor

Real MultiAppGeneralFieldTransfer::_bbox_factor
privateinherited

How much we should relax bounding boxes.

Definition at line 367 of file MultiAppGeneralFieldTransfer.h.

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

◆ _current_direction

MooseEnum Transfer::_current_direction
protectedinherited

◆ _current_execute_flag

const ExecFlagType& SetupInterface::_current_execute_flag
protectedinherited

Reference to FEProblemBase.

Definition at line 86 of file SetupInterface.h.

Referenced by PseudoTimestep::execute().

◆ _default_extrapolation_value

const Real MultiAppGeneralFieldTransfer::_default_extrapolation_value
privateinherited

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

Definition at line 364 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::correctSolutionVectorValues(), and MultiAppGeneralFieldTransfer::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 108 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
protectedinherited

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

Definition at line 270 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::onBoundaries().

◆ _empty_execute_enum

ExecFlagEnum SetupInterface::_empty_execute_enum
privateinherited

Empty ExecFlagEnum for the case when the "execute_on" parameter is not included.

This is private because others should not be messing with it.

Definition at line 79 of file SetupInterface.h.

Referenced by SetupInterface::SetupInterface().

◆ _enabled

const bool& MooseObject::_enabled
protectedinherited

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

Definition at line 71 of file MooseObject.h.

Referenced by MooseObject::enabled().

◆ _error_on_miss

bool MultiAppGeneralFieldTransfer::_error_on_miss
privateinherited

Error out when some points can not be located.

Definition at line 361 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::locatePointReceivers(), and MultiAppGeneralFieldTransfer::setSolutionVectorValues().

◆ _exec_after_source_app_exec

const bool Transfer::_exec_after_source_app_exec
protectedinherited

Whether a transfer executing on BETWEEN_MULTIAPPS and on the same execute_on flag should execute before or after that application For FROM and TO_MULTIAPP this is is true and we refuse setting it to false.

Definition at line 118 of file Transfer.h.

Referenced by Transfer::executeAfterSiblingSourceApp(), and MultiAppTransfer::MultiAppTransfer().

◆ _execute_enum

const ExecFlagEnum& SetupInterface::_execute_enum
protectedinherited

◆ _factory

Factory& ParallelParamObject::_factory
protectedinherited

◆ _fe_problem

FEProblemBase& Transfer::_fe_problem
protectedinherited

◆ _fixed_bbox_size

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

Set the bounding box sizes manually.

Definition at line 370 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::getRestrictedFromBoundingBoxes().

◆ _from_bboxes

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

Bounding boxes for all source applications.

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

Definition at line 379 of file MultiAppGeneralFieldTransfer.h.

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

◆ _from_blocks

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

◆ _from_boundaries

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

◆ _from_es

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

Definition at line 156 of file MultiAppTransfer.h.

Referenced by MultiAppTransfer::getAppInfo().

◆ _from_local2global_map

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

◆ _from_mesh_division_behavior

const MooseEnum& MultiAppGeneralFieldTransfer::_from_mesh_division_behavior
protectedinherited

◆ _from_mesh_divisions

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

◆ _from_meshes

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

◆ _from_moose_app_transform

std::unique_ptr<MooseAppCoordTransform> MultiAppTransfer::_from_moose_app_transform
privateinherited

The moose coordinate transformation object describing rotations, scaling, and coordinate system of the from application.

Definition at line 328 of file MultiAppTransfer.h.

Referenced by MultiAppTransfer::getAppInfo().

◆ _from_multi_app

std::shared_ptr<MultiApp> MultiAppTransfer::_from_multi_app
privateinherited

◆ _from_point_locators

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

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

Definition at line 273 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::acceptPointInOriginMesh(), MultiAppGeneralFieldKDTreeTransferBase::checkRestrictionsForSource(), and MultiAppGeneralFieldTransfer::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
protectedinherited

◆ _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 MultiAppGeometricInterpolationTransfer::execute(), MultiAppNearestNodeTransfer::execute(), and MultiAppProjectionTransfer::execute().

◆ _from_var_names

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

◆ _froms_per_proc

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

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

Definition at line 373 of file MultiAppGeneralFieldTransfer.h.

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

◆ _global_app_start_per_proc

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

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

Definition at line 277 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::locatePointReceivers(), and MultiAppGeneralFieldTransfer::prepareToTransfer().

◆ _greedy_search

bool MultiAppGeneralFieldTransfer::_greedy_search
protectedinherited

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

Definition at line 282 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::locatePointReceivers().

◆ _local_bboxes

std::vector<libMesh::BoundingBox> MultiAppGeneralFieldShapeEvaluationTransfer::_local_bboxes
private

◆ _local_conflicts

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

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

Definition at line 388 of file MultiAppGeneralFieldTransfer.h.

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

◆ _local_meshfuns

std::vector<libMesh::MeshFunction> MultiAppGeneralFieldShapeEvaluationTransfer::_local_meshfuns
private

◆ _metaname

const RestartableDataMapName Restartable::_metaname
privateinherited

Restartable metadata name.

Definition at line 247 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

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

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

◆ _nearest_positions_obj

const Positions* MultiAppGeneralFieldTransfer::_nearest_positions_obj
protectedinherited

◆ _parent

const ParallelParamObject& DataFileInterface::_parent
privateinherited

◆ _pars

const InputParameters& MooseBase::_pars
protectedinherited

The object's parameters.

Definition at line 384 of file MooseBase.h.

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

◆ _pg_moose_app

MooseApp& PerfGraphInterface::_pg_moose_app
protectedinherited

The MooseApp that owns the PerfGraph.

Definition at line 135 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::perfGraph().

◆ _post_transfer_extrapolation

const MooseEnum MultiAppGeneralFieldTransfer::_post_transfer_extrapolation
protectedinherited

◆ _prefix

const std::string PerfGraphInterface::_prefix
protectedinherited

A prefix to use for all sections.

Definition at line 138 of file PerfGraphInterface.h.

Referenced by PerfGraphInterface::timedSectionName().

◆ _preserve_transfer

bool MultiAppConservativeTransfer::_preserve_transfer
protectedinherited

If this transfer is going to conserve the physics.

Definition at line 49 of file MultiAppConservativeTransfer.h.

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

◆ _processor_to_pointInfoVec

ProcessorToPointInfoVec MultiAppGeneralFieldTransfer::_processor_to_pointInfoVec
privateinherited

◆ _received_conflicts

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

Keeps track of all received conflicts.

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

Definition at line 394 of file MultiAppGeneralFieldTransfer.h.

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

◆ _restartable_app

MooseApp& Restartable::_restartable_app
protectedinherited

Reference to the application.

Definition at line 234 of file Restartable.h.

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

◆ _restartable_name

std::string Restartable::_restartable_name
privateinherited

The name of the object.

Definition at line 250 of file Restartable.h.

Referenced by Restartable::declareRestartableDataWithObjectNameWithContext(), and Restartable::restartableName().

◆ _restartable_read_only

const bool Restartable::_restartable_read_only
protectedinherited

Flag for toggling read only status (see ReporterData)

Definition at line 243 of file Restartable.h.

Referenced by Restartable::registerRestartableDataOnApp().

◆ _restartable_system_name

const std::string Restartable::_restartable_system_name
protectedinherited

The system name this object is in.

Definition at line 237 of file Restartable.h.

Referenced by Restartable::restartableName().

◆ _restartable_tid

const THREAD_ID Restartable::_restartable_tid
protectedinherited

The thread ID for this object.

Definition at line 240 of file Restartable.h.

Referenced by Restartable::declareRestartableDataHelper().

◆ _search_value_conflicts

bool MultiAppGeneralFieldTransfer::_search_value_conflicts
protectedinherited

◆ _search_value_conflicts_max_log

const unsigned int MultiAppGeneralFieldTransfer::_search_value_conflicts_max_log
protectedinherited

How many conflicts are output to console.

Definition at line 291 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::outputValueConflicts().

◆ _si_moose_base

const MooseBase& SolutionInvalidInterface::_si_moose_base
privateinherited

◆ _si_problem

const FEProblemBase* SolutionInvalidInterface::_si_problem
privateinherited

A pointer to FEProblem base.

Definition at line 114 of file SolutionInvalidInterface.h.

Referenced by SolutionInvalidInterface::flagInvalidSolutionInternal().

◆ _skip_coordinate_collapsing

const bool MultiAppTransfer::_skip_coordinate_collapsing
protectedinherited

◆ _source_app_must_contain_point

bool MultiAppGeneralFieldTransfer::_source_app_must_contain_point
protectedinherited

◆ _subproblem

SubProblem& Transfer::_subproblem
protectedinherited

Definition at line 99 of file Transfer.h.

◆ _sys

SystemBase& Transfer::_sys
protectedinherited

Definition at line 101 of file Transfer.h.

◆ _tid

THREAD_ID Transfer::_tid
protectedinherited

◆ _to_blocks

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

◆ _to_boundaries

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

Target boundary(ies) restriction.

Definition at line 244 of file MultiAppGeneralFieldTransfer.h.

Referenced by MultiAppGeneralFieldTransfer::extractOutgoingPoints(), and MultiAppGeneralFieldTransfer::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
protectedinherited

◆ _to_mesh_divisions

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

◆ _to_meshes

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

◆ _to_moose_app_transform

std::unique_ptr<MooseAppCoordTransform> MultiAppTransfer::_to_moose_app_transform
privateinherited

The moose coordinate transformation object describing rotations, scaling, and coordinate system of the to application.

Definition at line 332 of file MultiAppTransfer.h.

Referenced by MultiAppTransfer::getAppInfo().

◆ _to_multi_app

std::shared_ptr<MultiApp> MultiAppTransfer::_to_multi_app
privateinherited

◆ _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
protectedinherited

◆ _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
privateinherited

◆ _type

const std::string& MooseBase::_type
protectedinherited

◆ _use_bounding_boxes

const bool MultiAppGeneralFieldTransfer::_use_bounding_boxes
protectedinherited

◆ _use_nearest_app

const bool MultiAppGeneralFieldTransfer::_use_nearest_app
protectedinherited

◆ _use_nearestpoint_pps

bool MultiAppConservativeTransfer::_use_nearestpoint_pps
privateinherited

Whether to use a nearest point UserObject to obtain the conservation factor.

Definition at line 68 of file MultiAppConservativeTransfer.h.

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

◆ _var_size

unsigned int MultiAppGeneralFieldTransfer::_var_size
privateinherited

◆ app_param

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

◆ kokkos_object_param

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

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

Definition at line 64 of file MooseBase.h.

Referenced by InputParameters::isKokkosObject().

◆ moose_base_param

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

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

Definition at line 61 of file MooseBase.h.

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

◆ name_param

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

◆ OutOfMeshValue

const Number Transfer::OutOfMeshValue = -999999
staticinherited

◆ type_param

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

◆ unique_name_param

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

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

Definition at line 57 of file MooseBase.h.

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

◆ usingCombinedWarningSolutionWarnings

MooseObject::usingCombinedWarningSolutionWarnings
inherited

Definition at line 67 of file MooseObject.h.


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