www.mooseframework.org
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
SamplerFullSolveMultiApp Class Reference

#include <SamplerFullSolveMultiApp.h>

Inheritance diagram for SamplerFullSolveMultiApp:
[legend]

Public Member Functions

 SamplerFullSolveMultiApp (const InputParameters &parameters)
 
virtual bool solveStep (Real dt, Real target_time, bool auto_advance=true) override
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

virtual std::string getCommandLineArgsParamHelper (unsigned int local_app) override
 Override to allow for batch mode to get correct cli_args. More...
 

Protected Attributes

Sampler & _sampler
 Sampler to utilize for creating MultiApps. More...
 
const StochasticTools::MultiAppMode _mode
 The Sup-application solve mode. More...
 
dof_id_type _local_batch_app_index
 Counter for extracting command line arguments in batch mode. More...
 

Private Member Functions

bool solveStepBatch (Real dt, Real target_time, bool auto_advance=true)
 Helper method for running in mode='batch'. More...
 
std::vector< std::shared_ptr< StochasticToolsTransfer > > getActiveStochasticToolsTransfers (Transfer::DIRECTION direction)
 Helper for getting StochasticToolsTransfer objects. More...
 

Detailed Description

Definition at line 25 of file SamplerFullSolveMultiApp.h.

Constructor & Destructor Documentation

◆ SamplerFullSolveMultiApp()

SamplerFullSolveMultiApp::SamplerFullSolveMultiApp ( const InputParameters &  parameters)

Definition at line 45 of file SamplerFullSolveMultiApp.C.

46  : FullSolveMultiApp(parameters),
47  SamplerInterface(this),
48  _sampler(SamplerInterface::getSampler("sampler")),
49  _mode(getParam<MooseEnum>("mode").getEnum<StochasticTools::MultiAppMode>()),
51 {
54  init(n_processors());
55 
56  else
57  init(_sampler.getNumberOfRows());
58 }

Member Function Documentation

◆ getActiveStochasticToolsTransfers()

std::vector< std::shared_ptr< StochasticToolsTransfer > > SamplerFullSolveMultiApp::getActiveStochasticToolsTransfers ( Transfer::DIRECTION  direction)
private

Helper for getting StochasticToolsTransfer objects.

Definition at line 138 of file SamplerFullSolveMultiApp.C.

139 {
140  std::vector<std::shared_ptr<StochasticToolsTransfer>> output;
141  const ExecuteMooseObjectWarehouse<Transfer> & warehouse =
142  _fe_problem.getMultiAppTransferWarehouse(direction);
143  for (std::shared_ptr<Transfer> transfer : warehouse.getActiveObjects())
144  {
145  auto ptr = std::dynamic_pointer_cast<StochasticToolsTransfer>(transfer);
146  if (ptr)
147  output.push_back(ptr);
148  }
149  return output;
150 }

Referenced by solveStepBatch().

◆ getCommandLineArgsParamHelper()

std::string SamplerFullSolveMultiApp::getCommandLineArgsParamHelper ( unsigned int  local_app)
overrideprotectedvirtual

Override to allow for batch mode to get correct cli_args.

Definition at line 153 of file SamplerFullSolveMultiApp.C.

154 {
155  // Since we only store param_names in cli_args, we need to find the values for each param from
156  // sampler data and combine them to get full command line option strings.
157  std::vector<Real> row = _sampler.getNextLocalRow();
158 
159  std::ostringstream oss;
160  const std::vector<std::string> & cli_args_name =
161  MooseUtils::split(FullSolveMultiApp::getCommandLineArgsParamHelper(local_app), ";");
162 
163  for (dof_id_type col = 0; col < _sampler.getNumberOfCols(); ++col)
164  {
165  if (col > 0)
166  oss << ";";
167  oss << cli_args_name[col] << "=" << Moose::stringify(row[col]);
168  }
169  return oss.str();
170 }

◆ solveStep()

bool SamplerFullSolveMultiApp::solveStep ( Real  dt,
Real  target_time,
bool  auto_advance = true 
)
overridevirtual

Definition at line 61 of file SamplerFullSolveMultiApp.C.

62 {
63  mooseAssert(_my_num_apps, _sampler.getNumberOfLocalRows());
64 
65  bool last_solve_converged = true;
68  last_solve_converged = solveStepBatch(dt, target_time, auto_advance);
69  else
70  last_solve_converged = FullSolveMultiApp::solveStep(dt, target_time, auto_advance);
71  return last_solve_converged;
72 }

◆ solveStepBatch()

bool SamplerFullSolveMultiApp::solveStepBatch ( Real  dt,
Real  target_time,
bool  auto_advance = true 
)
private

Helper method for running in mode='batch'.

Definition at line 75 of file SamplerFullSolveMultiApp.C.

76 {
77  // Value to return
78  bool last_solve_converged = true;
79 
80  // List of active relevant Transfer objects
81  std::vector<std::shared_ptr<StochasticToolsTransfer>> to_transfers =
82  getActiveStochasticToolsTransfers(MultiAppTransfer::TO_MULTIAPP);
83  std::vector<std::shared_ptr<StochasticToolsTransfer>> from_transfers =
84  getActiveStochasticToolsTransfers(MultiAppTransfer::FROM_MULTIAPP);
85 
86  // Initialize to/from transfers
87  for (auto transfer : to_transfers)
88  transfer->initializeToMultiapp();
89 
90  for (auto transfer : from_transfers)
91  transfer->initializeFromMultiapp();
92 
94  backup();
95 
96  // Perform batch MultiApp solves
98  for (dof_id_type i = _sampler.getLocalRowBegin(); i < _sampler.getLocalRowEnd(); ++i)
99  {
100  for (auto & transfer : to_transfers)
101  {
102  transfer->setGlobalMultiAppIndex(i);
103  transfer->executeToMultiapp();
104  }
105 
106  last_solve_converged = FullSolveMultiApp::solveStep(dt, target_time, auto_advance);
107 
108  for (auto & transfer : from_transfers)
109  {
110  transfer->setGlobalMultiAppIndex(i);
111  transfer->executeFromMultiapp();
112  }
113 
114  if (i < _sampler.getLocalRowEnd() - 1)
115  {
117  restore();
118  else
119  {
120  // The app is being reset for the next loop, thus the batch index must be indexed as such
121  _local_batch_app_index = i + 1;
122  resetApp(_local_batch_app_index, target_time);
123  initialSetup();
124  }
125  }
126  }
127 
128  // Finalize to/from transfers
129  for (auto transfer : to_transfers)
130  transfer->finalizeToMultiapp();
131  for (auto transfer : from_transfers)
132  transfer->finalizeFromMultiapp();
133 
134  return last_solve_converged;
135 }

Referenced by solveStep().

◆ validParams()

InputParameters SamplerFullSolveMultiApp::validParams ( )
static

Definition at line 20 of file SamplerFullSolveMultiApp.C.

21 {
22  InputParameters params = FullSolveMultiApp::validParams();
24  params.addClassDescription(
25  "Creates a full-solve type sub-application for each row of each Sampler matrix.");
26  params.addParam<SamplerName>("sampler", "The Sampler object to utilize for creating MultiApps.");
27  params.suppressParameter<std::vector<Point>>("positions");
28  params.suppressParameter<bool>("output_in_position");
29  params.suppressParameter<std::vector<FileName>>("positions_file");
30  params.suppressParameter<Real>("move_time");
31  params.suppressParameter<std::vector<Point>>("move_positions");
32  params.suppressParameter<std::vector<unsigned int>>("move_apps");
33  params.set<bool>("use_positions") = false;
34 
35  MooseEnum modes("normal=0 batch-reset=1 batch-restore=2", "normal");
36  params.addParam<MooseEnum>(
37  "mode",
38  modes,
39  "The operation mode, 'normal' creates one sub-application for each row in the Sampler and "
40  "'batch' creates on sub-application for each processor and re-executes for each row.");
41 
42  return params;
43 }

Member Data Documentation

◆ _local_batch_app_index

dof_id_type SamplerFullSolveMultiApp::_local_batch_app_index
protected

Counter for extracting command line arguments in batch mode.

Definition at line 42 of file SamplerFullSolveMultiApp.h.

Referenced by solveStepBatch().

◆ _mode

const StochasticTools::MultiAppMode SamplerFullSolveMultiApp::_mode
protected

The Sup-application solve mode.

Definition at line 39 of file SamplerFullSolveMultiApp.h.

Referenced by SamplerFullSolveMultiApp(), solveStep(), and solveStepBatch().

◆ _sampler

Sampler& SamplerFullSolveMultiApp::_sampler
protected

Sampler to utilize for creating MultiApps.

Definition at line 36 of file SamplerFullSolveMultiApp.h.

Referenced by getCommandLineArgsParamHelper(), SamplerFullSolveMultiApp(), solveStep(), and solveStepBatch().


The documentation for this class was generated from the following files:
StochasticTools::MultiAppMode::BATCH_RESET
SamplerFullSolveMultiApp::solveStepBatch
bool solveStepBatch(Real dt, Real target_time, bool auto_advance=true)
Helper method for running in mode='batch'.
Definition: SamplerFullSolveMultiApp.C:75
SamplerFullSolveMultiApp::_sampler
Sampler & _sampler
Sampler to utilize for creating MultiApps.
Definition: SamplerFullSolveMultiApp.h:36
SamplerFullSolveMultiApp::_mode
const StochasticTools::MultiAppMode _mode
The Sup-application solve mode.
Definition: SamplerFullSolveMultiApp.h:39
validParams
InputParameters validParams()
SamplerFullSolveMultiApp::_local_batch_app_index
dof_id_type _local_batch_app_index
Counter for extracting command line arguments in batch mode.
Definition: SamplerFullSolveMultiApp.h:42
StochasticTools::MultiAppMode::BATCH_RESTORE
SamplerFullSolveMultiApp::getActiveStochasticToolsTransfers
std::vector< std::shared_ptr< StochasticToolsTransfer > > getActiveStochasticToolsTransfers(Transfer::DIRECTION direction)
Helper for getting StochasticToolsTransfer objects.
Definition: SamplerFullSolveMultiApp.C:138