www.mooseframework.org
LevelSetMeshRefinementTransfer.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 
12 // MOOSE includes
13 #include "Adaptivity.h"
14 #include "FEProblem.h"
15 #include "MooseVariable.h"
16 #include "MultiApp.h"
17 #include "LevelSetTypes.h"
18 
20 
23 {
25  params.addClassDescription("Transfers the mesh from the master application to the sub "
26  "application for the purposes of level set reinitialization problems "
27  "with mesh adaptivity.");
28  params.suppressParameter<MultiMooseEnum>("direction");
29 
30  ExecFlagEnum & exec = params.set<ExecFlagEnum>("execute_on");
33  params.set<bool>("check_multiapp_execute_on") = false;
34  params.suppressParameter<ExecFlagEnum>("execute_on");
35 
36  return params;
37 }
38 
40  : MultiAppCopyTransfer(parameters)
41 {
42  if (hasFromMultiApp())
43  paramError("from_multi_app", "from_multiapp or between_multiapp transfers are not supported");
44 }
45 
46 void
48 {
49  FEProblemBase & from_problem = getToMultiApp()->problemBase();
50  for (unsigned int i = 0; i < getToMultiApp()->numGlobalApps(); i++)
51  if (getToMultiApp()->hasLocalApp(i))
52  {
53  FEProblemBase & to_problem = getToMultiApp()->appProblemBase(i);
54  MooseVariable & to_var = to_problem.getStandardVariable(0, _to_var_name);
55  Adaptivity & adapt = to_problem.adaptivity();
56  adapt.setMarkerVariableName(to_var.name());
57  adapt.setCyclesPerStep(from_problem.adaptivity().getCyclesPerStep());
58  adapt.init(1, 0);
59  adapt.setUseNewSystem();
60  adapt.setMaxHLevel(from_problem.adaptivity().getMaxHLevel());
61  adapt.setAdaptivityOn(false);
62  }
63 }
64 
65 void
67 {
70 
72  {
73  for (unsigned int i = 0; i < getToMultiApp()->numGlobalApps(); i++)
74  if (getToMultiApp()->hasLocalApp(i))
75  {
76  FEProblemBase & to_problem = getToMultiApp()->appProblemBase(i);
77  Adaptivity & adapt = to_problem.adaptivity();
78  adapt.setAdaptivityOn(true);
79  to_problem.adaptMesh();
80  adapt.setAdaptivityOn(false);
81  }
82  }
83 }
void setCyclesPerStep(const unsigned int &num)
unsigned int getCyclesPerStep() const
void init(unsigned int steps, unsigned int initial_steps)
const ExecFlagType & _current_execute_flag
T & set(const std::string &name, bool quiet_mode=false)
const std::string & name() const override
const ExecFlagType EXEC_ADAPT_MESH
Definition: LevelSetTypes.C:16
void addAvailableFlags(const ExecFlagType &flag, Args... flags)
const std::shared_ptr< MultiApp > getToMultiApp() const
void setMaxHLevel(unsigned int level)
void setUseNewSystem()
registerMooseObject("LevelSetApp", LevelSetMeshRefinementTransfer)
AuxVariableName _to_var_name
bool hasFromMultiApp() const
void suppressParameter(const std::string &name)
static InputParameters validParams()
const ExecFlagType EXEC_COMPUTE_MARKERS
Definition: LevelSetTypes.C:17
void setAdaptivityOn(bool state)
void paramError(const std::string &param, Args... args) const
unsigned int getMaxHLevel()
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
Copies the refinement marker from the master to the sub-application.
virtual void execute() override
LevelSetMeshRefinementTransfer(const InputParameters &parameters)
void addClassDescription(const std::string &doc_string)
void setMarkerVariableName(std::string marker_field)
Adaptivity & adaptivity()
virtual bool adaptMesh()