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

The class creates an additional API to allow Transfers to work when running the StochasticTools<FullSolve/Transient>MultiApp objects in batch-mode. More...

#include <StochasticToolsTransfer.h>

Inheritance diagram for StochasticToolsTransfer:
[legend]

Public Types

enum  DIRECTION
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 StochasticToolsTransfer (const InputParameters &parameters)
 
void setGlobalMultiAppIndex (dof_id_type index)
 Method for setting the app index when running in batch mode.
 
void setGlobalRowIndex (dof_id_type row)
 Method for keeping track of the global row index when running in batch mode.
 
void setCurrentRow (const std::vector< Real > &row)
 Method for keeping track of the row data when running in batch mode.
 
void variableIntegrityCheck (const AuxVariableName &var_name, bool is_from_multiapp) const
 
void initialSetup () override
 
const std::shared_ptr< MultiAppgetMultiApp () const
 
const std::shared_ptr< MultiAppgetFromMultiApp () const
 
const std::shared_ptr< MultiAppgetToMultiApp () const
 
std::string getFromName () const
 
std::string getToName () const
 
bool hasFromMultiApp () const
 
bool hasToMultiApp () const
 
virtual void getAppInfo ()
 
virtual void execute ()=0
 
const MultiMooseEnumdirections ()
 
void setCurrentDirection (const int direction)
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const TgetParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const TqueryParam (const std::string &name) const
 
const TgetRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
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
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
virtual void timestepSetup ()
 
virtual void jacobianSetup ()
 
virtual void residualSetup ()
 
virtual void subdomainSetup ()
 
virtual void customSetup (const ExecFlagType &)
 
const ExecFlagEnumgetExecuteOnEnum () const
 
PerfGraphperfGraph ()
 
MooseEnum direction ()
 
MooseEnum direction ()
 
MooseEnum currentDirection ()
 
MooseEnum currentDirection ()
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 
virtual void initializeFromMultiapp ()
 Methods for transferring data from sub-applications to the master application.
 
virtual void executeFromMultiapp ()
 
virtual void finalizeFromMultiapp ()
 
virtual void initializeToMultiapp ()
 Methods for transferring data to sub-applications to the master application.
 
virtual void executeToMultiapp ()
 
virtual void finalizeToMultiapp ()
 

Static Public Member Functions

static InputParameters validParams ()
 
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)
 
static void addSkipCoordCollapsingParam (InputParameters &params)
 
static libMesh::Systemfind_sys (libMesh::EquationSystems &es, const std::string &var_name)
 
static std::string possibleDirections ()
 

Public Attributes

 TO_MULTIAPP
 
 FROM_MULTIAPP
 
 BETWEEN_MULTIAPP
 
 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const libMesh::Number OutOfMeshValue
 
static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 

Protected Member Functions

std::vector< unsigned intgetFromsPerProc ()
 
libMesh::NumericVector< Real > & getTransferVector (unsigned int i_local, std::string var_name)
 
unsigned int getGlobalSourceAppIndex (unsigned int i_from) const
 
unsigned int getGlobalTargetAppIndex (unsigned int i_to) const
 
unsigned int getLocalSourceAppIndex (unsigned int i_from) const
 
virtual void checkSiblingsTransferSupported () const
 
void checkParentAppUserObjectExecuteOn (const std::string &object_name) const
 
void errorIfObjectExecutesOnTransferInSourceApp (const std::string &object_name) const
 
Point getPointInTargetAppFrame (const Point &p, unsigned int local_i_to, const std::string &phase) const
 
Point getPointInSourceAppFrame (const Point &p, unsigned int local_i_from, const std::string &phase) const
 
void checkMultiAppExecuteOn ()
 
void checkVariable (const FEProblemBase &fe_problem, const VariableName &var_name, const std::string &param_name="") const
 
void extendBoundingBoxes (const Real factor, std::vector< libMesh::BoundingBox > &bboxes) const
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
TdeclareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< TdeclareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const TgetRestartableData (const std::string &data_name) const
 
TdeclareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
TdeclareRecoverableData (const std::string &data_name, Args &&... args)
 
TdeclareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
TdeclareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes ()
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes (BoundaryID boundary_id)
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes ()
 
std::vector< libMesh::BoundingBoxgetFromBoundingBoxes (BoundaryID boundary_id)
 

Static Protected Member Functions

static void addUserObjectExecutionCheckParam (InputParameters &params)
 
static void addBBoxFactorParam (InputParameters &params)
 
static void transformBoundingBox (libMesh::BoundingBox &box, const MultiAppCoordTransform &transform)
 

Protected Attributes

dof_id_type _app_index = 0
 Index for the sub-app that the batch-mode multiapp is working on.
 
dof_id_type _global_index = 0
 Index for tracking the row index when using batch mode operation.
 
std::vector< Real > _row_data
 The current row of data (comes from multiapp)
 
Sampler_sampler_ptr
 Pointer to the Sampler object used by the SamplerTransientMultiApp or SamplerFullSolveMultiApp.
 
std::shared_ptr< MultiApp_multi_app
 
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
 
bool _displaced_source_mesh
 
bool _displaced_target_mesh
 
Real _bbox_factor
 
std::vector< unsigned int_to_local2global_map
 
std::vector< unsigned int_from_local2global_map
 
SubProblem_subproblem
 
FEProblemBase_fe_problem
 
SystemBase_sys
 
THREAD_ID _tid
 
MultiMooseEnum _directions
 
const bool & _enabled
 
MooseApp_app
 
Factory_factory
 
ActionFactory_action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters_pars
 
const ExecFlagEnum_execute_enum
 
const ExecFlagType_current_execute_flag
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
MooseApp_pg_moose_app
 
const std::string _prefix
 
MooseEnum _direction
 
MooseEnum _current_direction
 
const Parallel::Communicator & _communicator
 

Private Member Functions

virtual bool usesMooseAppCoordTransform () const
 
Point mapBackWithoutCollapsing (MultiAppCoordTransform &transform, const Point &p, const std::string &phase) const
 
void getFromMultiAppInfo ()
 
void getToMultiAppInfo ()
 
RestartableDataValueregisterRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 
TgetSampler (const std::string &name)
 
SamplergetSampler (const std::string &name)
 
TgetSamplerByName (const SamplerName &name)
 
SamplergetSamplerByName (const SamplerName &name)
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

std::shared_ptr< MultiApp_from_multi_app
 
std::shared_ptr< MultiApp_to_multi_app
 
std::unique_ptr< MooseAppCoordTransform_from_moose_app_transform
 
std::unique_ptr< MooseAppCoordTransform_to_moose_app_transform
 
const ParallelParamObject_parent
 
const MooseBase_si_moose_base
 
const FEProblemBase_si_problem
 
ExecFlagEnum _empty_execute_enum
 
const RestartableDataMapName _metaname
 
std::string _restartable_name
 
const InputParameters_si_params
 
FEProblemBase_si_feproblem
 
THREAD_ID _si_tid
 

Detailed Description

The class creates an additional API to allow Transfers to work when running the StochasticTools<FullSolve/Transient>MultiApp objects in batch-mode.

Definition at line 21 of file StochasticToolsTransfer.h.

Constructor & Destructor Documentation

◆ StochasticToolsTransfer()

StochasticToolsTransfer::StochasticToolsTransfer ( const InputParameters parameters)

Definition at line 24 of file StochasticToolsTransfer.C.

26{
27 // Since sampler lives in the main app, it's unclear what sibling transfer should look like
29 mooseError("Transfers between multiapp are not currently supported for this transfer type");
30
31 const auto multi_app = hasFromMultiApp() ? getFromMultiApp() : getToMultiApp();
32
33 // When the MultiApp is running in batch mode the execute flags for the transfer object must
34 // be removed. If not the 'regular' transfer that occurs will potentially destroy data
35 // populated during the calls from the MultiApp in batch mode. To prevent the Transfer from
36 // running the execute flags must be removed. This is done automatically here, unless
37 // 'execute_on' was modified by the user, which an error is produced.
38 if (multi_app->isParamValid("mode") &&
39 (multi_app->getParam<MooseEnum>("mode") == "batch-reset" ||
40 multi_app->getParam<MooseEnum>("mode") == "batch-restore"))
41 {
42 if (parameters.isParamSetByUser("execute_on"))
43 paramError("execute_on",
44 "The 'execute_on' parameter for the '",
45 name(),
46 "' transfer was set, but the parent MultiApp object (",
47 multi_app->name(),
48 ") is running in 'batch' mode. For this case the 'execute_on' parameter must not "
49 "be set by the user or set to NONE.");
50 else
51 {
52 ExecFlagEnum & exec_flags = const_cast<ExecFlagEnum &>(getParam<ExecFlagEnum>("execute_on"));
53 exec_flags = EXEC_NONE;
54 }
55 }
56
57 // In the validParams method above the 'check_multiapp_execute_on' is disabled. This is required
58 // to allow for the error above to be triggered. If the 'execute_on' is set by the without
59 // the 'check_multiapp_execute_on' flag the above if statement may not be reached. Therefore,
60 // a bit of a trick is performed to allow the above check to run first and then the regular
61 // check.
62 //
63 // If the else statement is reached then the user is not running in batch mode, so the
64 // 'check_multiapp_execute_on' is a valid check to perform. If the 'check_multiapp_execute_on'
65 // has not been set, then the user wants the check to be performed, so do it.
66 else if (!parameters.isParamSetByUser("check_multiapp_execute_on"))
68
69 // Determine the Sampler
70 if (isParamValid("sampler"))
71 {
72 _sampler_ptr = &(getSampler("sampler"));
73
74 SamplerTransientMultiApp * ptr_transient =
75 dynamic_cast<SamplerTransientMultiApp *>(multi_app.get());
76 SamplerFullSolveMultiApp * ptr_fullsolve =
77 dynamic_cast<SamplerFullSolveMultiApp *>(multi_app.get());
78
79 if (!ptr_transient && !ptr_fullsolve)
80 mooseError("The 'multi_app' parameter must provide either a 'SamplerTransientMultiApp' or "
81 "'SamplerFullSolveMultiApp' object.");
82
83 if ((ptr_transient && &(ptr_transient->getSampler("sampler")) != _sampler_ptr) ||
84 (ptr_fullsolve && &(ptr_fullsolve->getSampler("sampler")) != _sampler_ptr))
85 mooseError("The supplied 'multi_app' must have the same Sampler object as this Transfer.");
86 }
87
88 else
89 {
90 paramWarning("sampler",
91 "Support for the 'StochasticToolsTransfer' objects without the 'sampler' input "
92 "parameter is being removed, please update your input file(s).");
93
94 std::shared_ptr<SamplerTransientMultiApp> ptr_transient =
95 std::dynamic_pointer_cast<SamplerTransientMultiApp>(multi_app);
96 std::shared_ptr<SamplerFullSolveMultiApp> ptr_fullsolve =
97 std::dynamic_pointer_cast<SamplerFullSolveMultiApp>(multi_app);
98
99 if (!ptr_transient && !ptr_fullsolve)
100 mooseError("The 'multi_app' parameter must provide either a 'SamplerTransientMultiApp' or "
101 "'SamplerFullSolveMultiApp' object.");
102
103 if (ptr_transient)
104 _sampler_ptr = &(ptr_transient->getSampler("sampler"));
105 else
106 _sampler_ptr = &(ptr_fullsolve->getSampler("sampler"));
107 }
108}
const ExecFlagType EXEC_NONE
bool isParamSetByUser(const std::string &name) const
const InputParameters & parameters() const
void paramWarning(const std::string &param, Args... args) const
const std::string & name() const
void paramError(const std::string &param, Args... args) const
void mooseError(Args &&... args) const
bool isParamValid(const std::string &name) const
bool hasToMultiApp() const
const std::shared_ptr< MultiApp > getToMultiApp() const
void checkMultiAppExecuteOn()
const std::shared_ptr< MultiApp > getFromMultiApp() const
bool hasFromMultiApp() const
T & getSampler(const std::string &name)
Sampler * _sampler_ptr
Pointer to the Sampler object used by the SamplerTransientMultiApp or SamplerFullSolveMultiApp.

Member Function Documentation

◆ executeFromMultiapp()

void StochasticToolsTransfer::executeFromMultiapp ( )
virtual

◆ executeToMultiapp()

void StochasticToolsTransfer::executeToMultiapp ( )
virtual

◆ finalizeFromMultiapp()

void StochasticToolsTransfer::finalizeFromMultiapp ( )
virtual

◆ finalizeToMultiapp()

void StochasticToolsTransfer::finalizeToMultiapp ( )
virtual

Reimplemented in PODSamplerSolutionTransfer, and SerializedSolutionTransfer.

Definition at line 136 of file StochasticToolsTransfer.C.

137{
138}

◆ initializeFromMultiapp()

void StochasticToolsTransfer::initializeFromMultiapp ( )
virtual

Methods for transferring data from sub-applications to the master application.

Reimplemented in PODResidualTransfer, PODSamplerSolutionTransfer, SamplerPostprocessorTransfer, SamplerReporterTransfer, and SerializedSolutionTransfer.

Definition at line 111 of file StochasticToolsTransfer.C.

112{
113}

◆ initializeToMultiapp()

void StochasticToolsTransfer::initializeToMultiapp ( )
virtual

Methods for transferring data to sub-applications to the master application.

Reimplemented in PODSamplerSolutionTransfer, and SerializedSolutionTransfer.

Definition at line 126 of file StochasticToolsTransfer.C.

127{
128}

◆ setCurrentRow()

void StochasticToolsTransfer::setCurrentRow ( const std::vector< Real > &  row)
inline

Method for keeping track of the row data when running in batch mode.

See StochasticTools<FullSolve/Transient>MultiApp

Definition at line 65 of file StochasticToolsTransfer.h.

65{ _row_data = row; }
std::vector< Real > _row_data
The current row of data (comes from multiapp)

◆ setGlobalMultiAppIndex()

void StochasticToolsTransfer::setGlobalMultiAppIndex ( dof_id_type  index)
inline

Method for setting the app index when running in batch mode.

See StochasticTools<FullSolve/Transient>MultiApp

Definition at line 51 of file StochasticToolsTransfer.h.

51{ _app_index = index; }
dof_id_type _app_index
Index for the sub-app that the batch-mode multiapp is working on.

◆ setGlobalRowIndex()

void StochasticToolsTransfer::setGlobalRowIndex ( dof_id_type  row)
inline

Method for keeping track of the global row index when running in batch mode.

See StochasticTools<FullSolve/Transient>MultiApp

Definition at line 58 of file StochasticToolsTransfer.h.

58{ _global_index = row; }
dof_id_type _global_index
Index for tracking the row index when using batch mode operation.

◆ validParams()

InputParameters StochasticToolsTransfer::validParams ( )
static

Definition at line 16 of file StochasticToolsTransfer.C.

17{
19 params.set<bool>("check_multiapp_execute_on", true) = false; // see comments in constructor
20 params.addParam<SamplerName>("sampler", "A the Sampler object that Transfer is associated..");
21 return params;
22}
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
static InputParameters validParams()

Referenced by PODSamplerSolutionTransfer::validParams(), SamplerParameterTransfer::validParams(), SamplerPostprocessorTransfer::validParams(), SamplerReporterTransfer::validParams(), and SerializedSolutionTransfer::validParams().

Member Data Documentation

◆ _app_index

dof_id_type StochasticToolsTransfer::_app_index = 0
protected

◆ _global_index

dof_id_type StochasticToolsTransfer::_global_index = 0
protected

◆ _row_data

std::vector<Real> StochasticToolsTransfer::_row_data
protected

The current row of data (comes from multiapp)

Definition at line 73 of file StochasticToolsTransfer.h.

Referenced by SamplerParameterTransfer::executeToMultiapp(), and setCurrentRow().

◆ _sampler_ptr

Sampler* StochasticToolsTransfer::_sampler_ptr
protected

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