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 3129 : ExodusTimeSequenceStepper::validParams() 21 : { 22 3129 : InputParameters params = TimeSequenceStepperBase::validParams(); 23 12516 : params.addRequiredParam<MeshFileName>( 24 : "mesh", 25 : "The name of the mesh file to extract the time sequence from (must be an exodusII file)."); 26 3129 : params.addClassDescription("Solves the Transient problem at a sequence of time points taken from " 27 : "a specified exodus file."); 28 3129 : return params; 29 0 : } 30 : 31 34 : ExodusTimeSequenceStepper::ExodusTimeSequenceStepper(const InputParameters & parameters) 32 68 : : TimeSequenceStepperBase(parameters), _mesh_file(getParam<MeshFileName>("mesh")) 33 : { 34 34 : } 35 : 36 : void 37 34 : ExodusTimeSequenceStepper::init() 38 : { 39 : // Read the Exodus file on processor 0 40 34 : std::vector<Real> times; 41 34 : if (processor_id() == 0) 42 : { 43 : // Check that the required file exists 44 24 : MooseUtils::checkFileReadable(_mesh_file); 45 : 46 : // dummy mesh 47 24 : ReplicatedMesh mesh(_communicator); 48 : 49 24 : ExodusII_IO exodusII_io(mesh); 50 24 : exodusII_io.read(_mesh_file); 51 24 : times = exodusII_io.get_time_steps(); 52 24 : } 53 : 54 : // distribute timestep list 55 34 : unsigned int num_steps = times.size(); 56 34 : _communicator.broadcast(num_steps); 57 34 : times.resize(num_steps); 58 34 : _communicator.broadcast(times); 59 : 60 34 : setupSequence(times); 61 34 : }