13 #include "Executioner.h"
16 #include "libmesh/mesh_tools.h"
24 InputParameters params = validParams<MultiApp>();
25 params.addClassDescription(
26 "MultiApp capable of performing repeated complete solves for level set reinitialization.");
27 params.addParam<
unsigned int>(
28 "interval", 1,
"Time step interval when to perform reinitialization.");
30 params.suppressParameter<std::vector<Point>>(
"positions");
31 params.suppressParameter<std::vector<FileName>>(
"positions_file");
32 params.suppressParameter<
bool>(
"output_in_position");
33 params.suppressParameter<Real>(
"reset_time");
34 params.suppressParameter<std::vector<unsigned int>>(
"reset_apps");
35 params.suppressParameter<Real>(
"move_time");
36 params.suppressParameter<std::vector<unsigned int>>(
"move_apps");
37 params.suppressParameter<std::vector<Point>>(
"move_positions");
43 const InputParameters & parameters)
44 : MultiApp(parameters), _level_set_problem(NULL), _interval(getParam<unsigned int>(
"interval"))
51 MultiApp::initialSetup();
55 Executioner * ex = _apps[0]->getExecutioner();
58 mooseError(
"Executioner does not exist!");
64 _level_set_problem = dynamic_cast<LevelSetReinitializationProblem *>(&appProblemBase(0));
66 mooseError(
"The Problem type must be LevelSetReinitializationProblem.");
76 if ((_fe_problem.timeStep() %
_interval) != 0)
82 _console <<
"Solving Reinitialization problem." << std::endl;
86 ierr = MPI_Comm_rank(_orig_comm, &rank);
87 mooseCheckMPIErr(ierr);
89 bool last_solve_converged =
true;
94 last_solve_converged =
false;
96 return last_solve_converged;