https://mooseframework.inl.gov
Loading...
Searching...
No Matches
LevelSetMeshRefinementTransfer.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
46void
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 MooseEnum adaptivity_type("h p hp", "h");
59 adapt.init(1, 0, adaptivity_type.getEnum<AdaptivityType>());
60 adapt.setUseNewSystem();
61 adapt.setMaxHLevel(from_problem.adaptivity().getMaxHLevel());
62 adapt.setAdaptivityOn(false);
63 }
64}
65
66void
68{
71
73 {
74 for (unsigned int i = 0; i < getToMultiApp()->numGlobalApps(); i++)
75 if (getToMultiApp()->hasLocalApp(i))
76 {
77 FEProblemBase & to_problem = getToMultiApp()->appProblemBase(i);
78 Adaptivity & adapt = to_problem.adaptivity();
79 adapt.setAdaptivityOn(true);
80 to_problem.adaptMesh();
81 adapt.setAdaptivityOn(false);
82 }
83 }
84}
AdaptivityType
registerMooseObject("LevelSetApp", LevelSetMeshRefinementTransfer)
void init(const unsigned int steps, const unsigned int initial_steps, const AdaptivityType adaptivity_type)
void setUseNewSystem()
unsigned int getMaxHLevel()
unsigned int getCyclesPerStep() const
void setMarkerVariableName(std::string marker_field)
void setCyclesPerStep(const unsigned int &num)
void setAdaptivityOn(bool state)
void setMaxHLevel(unsigned int level)
void addAvailableFlags(const ExecFlagType &flag, Args... flags)
virtual MooseVariable & getStandardVariable(const THREAD_ID tid, const std::string &var_name) override
virtual bool adaptMesh()
Adaptivity & adaptivity()
void suppressParameter(const std::string &name)
void addClassDescription(const std::string &doc_string)
T & set(const std::string &name, bool quiet_mode=false)
Copies the refinement marker from the master to the sub-application.
LevelSetMeshRefinementTransfer(const InputParameters &parameters)
const std::string & name() const
void paramError(const std::string &param, Args... args) const
T getEnum() const
static InputParameters validParams()
virtual void execute() override
AuxVariableName _to_var_name
const std::shared_ptr< MultiApp > getToMultiApp() const
bool hasFromMultiApp() const
const ExecFlagType & _current_execute_flag
const ExecFlagType EXEC_COMPUTE_MARKERS
const ExecFlagType EXEC_ADAPT_MESH