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 
21 template <>
22 InputParameters
24 {
25  InputParameters params = validParams<MultiAppCopyTransfer>();
26  params.addClassDescription("Transfers the mesh from the master application to the sub "
27  "application for the purposes of level set reinitialization problems "
28  "with mesh adaptivity.");
29  params.set<MultiMooseEnum>("direction") = "TO_MULTIAPP";
30  params.suppressParameter<MultiMooseEnum>("direction");
31 
32  ExecFlagEnum & exec = params.set<ExecFlagEnum>("execute_on");
35  params.set<bool>("check_multiapp_execute_on") = false;
36  params.suppressParameter<ExecFlagEnum>("execute_on");
37 
38  return params;
39 }
40 
42  : MultiAppCopyTransfer(parameters)
43 {
44 }
45 
46 void
48 {
49  FEProblemBase & from_problem = _multi_app->problemBase();
50  for (unsigned int i = 0; i < _multi_app->numGlobalApps(); i++)
51  if (_multi_app->hasLocalApp(i))
52  {
53  FEProblemBase & to_problem = _multi_app->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 {
68  if (_current_execute_flag == LevelSet::EXEC_COMPUTE_MARKERS)
69  MultiAppCopyTransfer::execute();
70 
71  else if (_current_execute_flag == LevelSet::EXEC_ADAPT_MESH)
72  {
73  for (unsigned int i = 0; i < _multi_app->numGlobalApps(); i++)
74  if (_multi_app->hasLocalApp(i))
75  {
76  FEProblemBase & to_problem = _multi_app->appProblemBase(i);
77  Adaptivity & adapt = to_problem.adaptivity();
78  adapt.setAdaptivityOn(true);
79  to_problem.adaptMesh();
80  adapt.setAdaptivityOn(false);
81  }
82  }
83 }
LevelSetMeshRefinementTransfer::initialSetup
virtual void initialSetup() override
Definition: LevelSetMeshRefinementTransfer.C:47
LevelSet::EXEC_COMPUTE_MARKERS
const ExecFlagType EXEC_COMPUTE_MARKERS
LevelSet::EXEC_ADAPT_MESH
const ExecFlagType EXEC_ADAPT_MESH
LevelSetMeshRefinementTransfer::LevelSetMeshRefinementTransfer
LevelSetMeshRefinementTransfer(const InputParameters &parameters)
Definition: LevelSetMeshRefinementTransfer.C:41
registerMooseObject
registerMooseObject("LevelSetApp", LevelSetMeshRefinementTransfer)
LevelSetTypes.h
LevelSetMeshRefinementTransfer
Copies the refinement marker from the master to the sub-application.
Definition: LevelSetMeshRefinementTransfer.h:23
LevelSetMeshRefinementTransfer::execute
virtual void execute() override
Definition: LevelSetMeshRefinementTransfer.C:66
validParams< LevelSetMeshRefinementTransfer >
InputParameters validParams< LevelSetMeshRefinementTransfer >()
Definition: LevelSetMeshRefinementTransfer.C:23
LevelSetMeshRefinementTransfer.h