LCOV - code coverage report
Current view: top level - src/multiapps - LevelSetReinitializationMultiApp.C (source / functions) Hit Total Coverage
Test: idaholab/moose level_set: #31405 (292dce) with base fef103 Lines: 37 40 92.5 %
Date: 2025-09-04 07:53:58 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 "LevelSetReinitializationMultiApp.h"
      11             : #include "LevelSetReinitializationProblem.h"
      12             : 
      13             : #include "Executioner.h"
      14             : 
      15             : // libMesh
      16             : #include "libmesh/mesh_tools.h"
      17             : 
      18             : registerMooseObject("LevelSetApp", LevelSetReinitializationMultiApp);
      19             : 
      20             : InputParameters
      21          94 : LevelSetReinitializationMultiApp::validParams()
      22             : {
      23          94 :   InputParameters params = MultiApp::validParams();
      24          94 :   params.addClassDescription(
      25             :       "MultiApp capable of performing repeated complete solves for level set reinitialization.");
      26         188 :   params.addParam<unsigned int>(
      27         188 :       "interval", 1, "Time step interval when to perform reinitialization.");
      28             : 
      29          94 :   params.suppressParameter<std::vector<Point>>("positions");
      30          94 :   params.suppressParameter<std::vector<FileName>>("positions_file");
      31          94 :   params.suppressParameter<bool>("output_in_position");
      32          94 :   params.suppressParameter<std::vector<Real>>("reset_time");
      33          94 :   params.suppressParameter<std::vector<unsigned int>>("reset_apps");
      34          94 :   params.suppressParameter<Real>("move_time");
      35          94 :   params.suppressParameter<std::vector<unsigned int>>("move_apps");
      36          94 :   params.suppressParameter<std::vector<Point>>("move_positions");
      37             : 
      38          94 :   return params;
      39           0 : }
      40             : 
      41          47 : LevelSetReinitializationMultiApp::LevelSetReinitializationMultiApp(
      42          47 :     const InputParameters & parameters)
      43          94 :   : MultiApp(parameters), _level_set_problem(NULL), _interval(getParam<unsigned int>("interval"))
      44             : {
      45          47 : }
      46             : 
      47             : void
      48          45 : LevelSetReinitializationMultiApp::initialSetup()
      49             : {
      50          45 :   MultiApp::initialSetup();
      51             : 
      52          45 :   if (_has_an_app)
      53             :   {
      54          45 :     Executioner * ex = _apps[0]->getExecutioner();
      55             : 
      56          45 :     if (!ex)
      57           0 :       mooseError("Executioner does not exist!");
      58             : 
      59          45 :     ex->init();
      60             : 
      61          45 :     _executioner = ex;
      62             : 
      63          45 :     _level_set_problem = dynamic_cast<LevelSetReinitializationProblem *>(&appProblemBase(0));
      64          45 :     if (!_level_set_problem)
      65           0 :       mooseError("The Problem type must be LevelSetReinitializationProblem.");
      66             :   }
      67          45 : }
      68             : 
      69             : bool
      70          86 : LevelSetReinitializationMultiApp::solveStep(Real /*dt*/,
      71             :                                             Real /*target_time*/,
      72             :                                             bool /*auto_advance*/)
      73             : {
      74             :   // Do nothing if not on interval
      75          86 :   if ((_fe_problem.timeStep() % _interval) != 0)
      76             :     return true;
      77             : 
      78          86 :   if (!_has_an_app)
      79             :     return true;
      80             : 
      81          86 :   _console << "Solving Reinitialization problem." << std::endl;
      82             : 
      83             :   int rank;
      84             :   int ierr;
      85          86 :   ierr = MPI_Comm_rank(_orig_comm, &rank);
      86          86 :   mooseCheckMPIErr(ierr);
      87             : 
      88             :   bool last_solve_converged = true;
      89             : 
      90          86 :   _level_set_problem->resetTime();
      91          86 :   _executioner->execute();
      92          86 :   if (!_executioner->lastSolveConverged())
      93             :     last_solve_converged = false;
      94             : 
      95             :   return last_solve_converged;
      96             : }

Generated by: LCOV version 1.14