https://mooseframework.inl.gov
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 | 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. More...
 
void setGlobalRowIndex (dof_id_type row)
 Method for keeping track of the global row index when running in batch mode. More...
 
void setCurrentRow (const std::vector< Real > &row)
 Method for keeping track of the row data when running in batch mode. More...
 
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
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
virtual const std::string & name () const
 
std::string typeAndName () const
 
std::string errorPrefix (const std::string &error_type) const
 
void callMooseError (std::string msg, const bool with_prefix) const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
const InputParametersparameters () const
 
MooseObjectName uniqueName () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &nm) const
 
void paramError (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
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void mooseError (Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseInfo (Args &&... args) 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. More...
 
virtual void executeFromMultiapp ()
 
virtual void finalizeFromMultiapp ()
 
virtual void initializeToMultiapp ()
 Methods for transferring data to sub-applications to the master application. More...
 
virtual void executeToMultiapp ()
 
virtual void finalizeToMultiapp ()
 

Static Public Member Functions

static InputParameters validParams ()
 
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
 
const ConsoleStream _console
 

Static Public Attributes

static const libMesh::Number OutOfMeshValue
 

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 errorIfObjectExecutesOnTransferInSourceApp (const std::string &object_name) const
 
Point getPointInTargetAppFrame (const Point &p, unsigned int local_i_to, 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
 
T & declareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< T > declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const T & getRestartableData (const std::string &data_name) const
 
T & declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
T & declareRecoverableData (const std::string &data_name, Args &&... args)
 
T & declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
T & declareRestartableDataWithObjectNameWithContext (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 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. More...
 
dof_id_type _global_index = 0
 Index for tracking the row index when using batch mode operation. More...
 
std::vector< Real_row_data
 The current row of data (comes from multiapp) More...
 
Sampler_sampler_ptr
 Pointer to the Sampler object used by the SamplerTransientMultiApp or SamplerFullSolveMultiApp. More...
 
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
 
const std::string _type
 
const std::string _name
 
const InputParameters_pars
 
Factory_factory
 
ActionFactory_action_factory
 
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

T & getSampler (const std::string &name)
 
SamplergetSampler (const std::string &name)
 
T & getSamplerByName (const SamplerName &name)
 
SamplergetSamplerByName (const SamplerName &name)
 

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
28  if (hasFromMultiApp() && hasToMultiApp())
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 }
Sampler * _sampler_ptr
Pointer to the Sampler object used by the SamplerTransientMultiApp or SamplerFullSolveMultiApp.
const std::shared_ptr< MultiApp > getFromMultiApp() const
const ExecFlagType EXEC_NONE
void checkMultiAppExecuteOn()
MultiAppTransfer(const InputParameters &parameters)
const std::shared_ptr< MultiApp > getToMultiApp() const
bool hasFromMultiApp() const
virtual const std::string & name() const
bool isParamValid(const std::string &name) const
void paramError(const std::string &param, Args... args) const
bool isParamSetByUser(const std::string &name) const
T & getSampler(const std::string &name)
bool hasToMultiApp() const
SamplerInterface(const MooseObject *moose_object)
void mooseError(Args &&... args) const
const InputParameters & parameters() const
void paramWarning(const std::string &param, Args... args) const

Member Function Documentation

◆ executeFromMultiapp()

void StochasticToolsTransfer::executeFromMultiapp ( )
virtual

◆ executeToMultiapp()

void StochasticToolsTransfer::executeToMultiapp ( )
virtual

Reimplemented in SerializedSolutionTransfer, PODSamplerSolutionTransfer, and SamplerParameterTransfer.

Definition at line 131 of file StochasticToolsTransfer.C.

132 {
133 }

◆ finalizeFromMultiapp()

void StochasticToolsTransfer::finalizeFromMultiapp ( )
virtual

◆ finalizeToMultiapp()

void StochasticToolsTransfer::finalizeToMultiapp ( )
virtual

Reimplemented in SerializedSolutionTransfer, and PODSamplerSolutionTransfer.

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 SamplerPostprocessorTransfer, SamplerReporterTransfer, SerializedSolutionTransfer, PODSamplerSolutionTransfer, and PODResidualTransfer.

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 SerializedSolutionTransfer, and PODSamplerSolutionTransfer.

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.

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

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

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: