LCOV - code coverage report
Current view: top level - src/timesteppers - ExodusTimeSequenceStepper.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 909fe5 Lines: 23 24 95.8 %
Date: 2025-08-29 20:01:24 Functions: 3 3 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 "ExodusTimeSequenceStepper.h"
      11             : #include "MooseUtils.h"
      12             : #include "libmesh/serial_mesh.h"
      13             : #include "libmesh/exodusII_io.h"
      14             : 
      15             : using namespace libMesh;
      16             : 
      17             : registerMooseObject("MooseApp", ExodusTimeSequenceStepper);
      18             : 
      19             : InputParameters
      20       14327 : ExodusTimeSequenceStepper::validParams()
      21             : {
      22       14327 :   InputParameters params = TimeSequenceStepperBase::validParams();
      23       57308 :   params.addRequiredParam<MeshFileName>(
      24             :       "mesh",
      25             :       "The name of the mesh file to extract the time sequence from (must be an exodusII file).");
      26       14327 :   params.addClassDescription("Solves the Transient problem at a sequence of time points taken from "
      27             :                              "a specified exodus file.");
      28       14327 :   return params;
      29           0 : }
      30             : 
      31          31 : ExodusTimeSequenceStepper::ExodusTimeSequenceStepper(const InputParameters & parameters)
      32          62 :   : TimeSequenceStepperBase(parameters), _mesh_file(getParam<MeshFileName>("mesh"))
      33             : {
      34          31 : }
      35             : 
      36             : void
      37          31 : ExodusTimeSequenceStepper::init()
      38             : {
      39             :   // Read the Exodus file on processor 0
      40          31 :   std::vector<Real> times;
      41          31 :   if (processor_id() == 0)
      42             :   {
      43             :     // Check that the required file exists
      44          23 :     MooseUtils::checkFileReadable(_mesh_file);
      45             : 
      46             :     // dummy mesh
      47          23 :     ReplicatedMesh mesh(_communicator);
      48             : 
      49          23 :     ExodusII_IO exodusII_io(mesh);
      50          23 :     exodusII_io.read(_mesh_file);
      51          23 :     times = exodusII_io.get_time_steps();
      52          23 :   }
      53             : 
      54             :   // distribute timestep list
      55          31 :   unsigned int num_steps = times.size();
      56          31 :   _communicator.broadcast(num_steps);
      57          31 :   times.resize(num_steps);
      58          31 :   _communicator.broadcast(times);
      59             : 
      60          31 :   setupSequence(times);
      61          31 : }

Generated by: LCOV version 1.14