LCOV - code coverage report
Current view: top level - src/transfers - LevelSetMeshRefinementTransfer.C (source / functions) Hit Total Coverage
Test: idaholab/moose level_set: #32971 (54bef8) with base c6cf66 Lines: 40 40 100.0 %
Date: 2026-05-29 20:37:11 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : 
      10             : #include "LevelSetMeshRefinementTransfer.h"
      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             : 
      19             : registerMooseObject("LevelSetApp", LevelSetMeshRefinementTransfer);
      20             : 
      21             : InputParameters
      22          30 : LevelSetMeshRefinementTransfer::validParams()
      23             : {
      24          30 :   InputParameters params = MultiAppCopyTransfer::validParams();
      25          30 :   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          30 :   params.suppressParameter<MultiMooseEnum>("direction");
      29             : 
      30          30 :   ExecFlagEnum & exec = params.set<ExecFlagEnum>("execute_on");
      31          30 :   exec.addAvailableFlags(LevelSet::EXEC_ADAPT_MESH, LevelSet::EXEC_COMPUTE_MARKERS);
      32         120 :   exec = {LevelSet::EXEC_COMPUTE_MARKERS, LevelSet::EXEC_ADAPT_MESH};
      33          30 :   params.set<bool>("check_multiapp_execute_on") = false;
      34          30 :   params.suppressParameter<ExecFlagEnum>("execute_on");
      35             : 
      36          30 :   return params;
      37          30 : }
      38             : 
      39          16 : LevelSetMeshRefinementTransfer::LevelSetMeshRefinementTransfer(const InputParameters & parameters)
      40          16 :   : MultiAppCopyTransfer(parameters)
      41             : {
      42          16 :   if (hasFromMultiApp())
      43           2 :     paramError("from_multi_app", "from_multiapp or between_multiapp transfers are not supported");
      44          14 : }
      45             : 
      46             : void
      47          14 : LevelSetMeshRefinementTransfer::initialSetup()
      48             : {
      49          14 :   FEProblemBase & from_problem = getToMultiApp()->problemBase();
      50          56 :   for (unsigned int i = 0; i < getToMultiApp()->numGlobalApps(); i++)
      51          28 :     if (getToMultiApp()->hasLocalApp(i))
      52             :     {
      53          14 :       FEProblemBase & to_problem = getToMultiApp()->appProblemBase(i);
      54          14 :       MooseVariable & to_var = to_problem.getStandardVariable(0, _to_var_name);
      55             :       Adaptivity & adapt = to_problem.adaptivity();
      56          28 :       adapt.setMarkerVariableName(to_var.name());
      57             :       adapt.setCyclesPerStep(from_problem.adaptivity().getCyclesPerStep());
      58          28 :       MooseEnum adaptivity_type("h p hp", "h");
      59          14 :       adapt.init(1, 0, adaptivity_type.getEnum<AdaptivityType>());
      60          14 :       adapt.setUseNewSystem();
      61             :       adapt.setMaxHLevel(from_problem.adaptivity().getMaxHLevel());
      62          14 :       adapt.setAdaptivityOn(false);
      63          14 :     }
      64          14 : }
      65             : 
      66             : void
      67          70 : LevelSetMeshRefinementTransfer::execute()
      68             : {
      69          70 :   if (_current_execute_flag == LevelSet::EXEC_COMPUTE_MARKERS)
      70          42 :     MultiAppCopyTransfer::execute();
      71             : 
      72          28 :   else if (_current_execute_flag == LevelSet::EXEC_ADAPT_MESH)
      73             :   {
      74         112 :     for (unsigned int i = 0; i < getToMultiApp()->numGlobalApps(); i++)
      75          56 :       if (getToMultiApp()->hasLocalApp(i))
      76             :       {
      77          56 :         FEProblemBase & to_problem = getToMultiApp()->appProblemBase(i);
      78             :         Adaptivity & adapt = to_problem.adaptivity();
      79          28 :         adapt.setAdaptivityOn(true);
      80          28 :         to_problem.adaptMesh();
      81          28 :         adapt.setAdaptivityOn(false);
      82             :       }
      83             :   }
      84          70 : }

Generated by: LCOV version 1.14