19 #include "libmesh/dof_map.h" 20 #include "libmesh/nemesis_io.h" 31 params.
addParam<
bool>(
"write_hdf5",
false,
"Enables HDF5 output format for Nemesis files.");
32 params.
addClassDescription(
"Object for output data in the Nemesis (parallel ExodusII) format.");
38 _nemesis_io_ptr(nullptr),
39 _file_num(declareRestartableData<unsigned
int>(
"nemesis_file_num", 0)),
40 _nemesis_num(declareRestartableData<unsigned
int>(
"nemesis_num", 0)),
41 _nemesis_initialized(false),
42 _recovering(_app.isRecovering()),
43 _nemesis_mesh_changed(declareRestartableData<bool>(
"nemesis_mesh_changed", true)),
44 _write_hdf5(getParam<bool>(
"write_hdf5"))
86 #ifndef LIBMESH_HAVE_HDF5 87 mooseError(
"Moose input requested HDF Nemesis output, but libMesh was built without HDF5.");
126 for (
const auto &
name : pps)
140 for (
const auto & out_name :
out)
150 const std::vector<dof_id_type> & dof_indices = scalar_var.
dofIndices();
151 const unsigned int n = dof_indices.size();
155 for (
unsigned int i = 0; i != n; ++i)
171 for (
unsigned int i = 0; i < n; ++i)
173 std::ostringstream
os;
174 os << out_name <<
"_" << i;
224 std::ostringstream
output;
229 output <<
"-s" << std::setw(
_padding) << std::setprecision(0) << std::setfill(
'0') << std::right
const std::set< std::string > & getPostprocessorOutput()
The list of postprocessor names that are set for output.
virtual void initialSetup() override
Sets up the libMesh::NemesisII_IO object used for outputting to the Nemesis format.
static InputParameters validParams()
std::vector< Real > _global_values
Storage for scalar values (postprocessors and scalar AuxVariables)
processor_id_type dof_owner(const dof_id_type dof) const
bool _recovering
Flag indicating MOOSE is recovering via –recover command-line option.
void reinit(bool reinit_for_derivative_reordering=false)
Fill out the VariableValue arrays from the system solution vector.
std::unique_ptr< libMesh::Nemesis_IO > _nemesis_io_ptr
Pointer to the libMesh::NemesisII_IO object that performs the actual data output. ...
virtual void outputScalarVariables() override
Writes scalar AuxVariables to global output parameters.
std::vector< std::string > _global_names
Storage for names of the above scalar values.
bool _write_hdf5
Flag to output HDF5 format (when available) in Nemesis.
unsigned int & _nemesis_num
Count of outputs per exodus file.
const Parallel::Communicator & comm() const
std::string _file_base
The base filename from the input paramaters.
virtual void output()
A single call to this function should output all the necessary data for a single timestep.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
std::basic_ostream< charT, traits > * os
bool & _nemesis_mesh_changed
A flag indicating to the Nemesis object that the mesh has changed.
unsigned int _padding
Number of digits to pad the extensions.
uint8_t processor_id_type
virtual libMesh::DofMap & dofMap()
Gets writeable reference to the dof map.
const std::string & name() const
Get the name of the class.
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
const std::set< std::string > & getScalarOutput()
The list of scalar variables names that are set for output.
MeshBase & getMesh()
Accessor for the underlying libMesh Mesh object.
FEProblemBase * _problem_ptr
Pointer the the FEProblemBase object for output object (use this)
virtual MooseVariableScalar & getScalarVariable(const THREAD_ID tid, const std::string &var_name) override
Returns the scalar variable reference from whichever system contains it.
virtual const std::vector< dof_id_type > & dofIndices() const
Get local DoF indices.
MooseApp & _app
The MOOSE application this is associated with.
static InputParameters enableOutputTypes(const std::string &names=std::string())
A method for enabling individual output type control.
const PostprocessorValue & getPostprocessorValueByName(const PostprocessorName &name, std::size_t t_index=0) const
Get a read-only reference to the value associated with a Postprocessor that exists.
void broadcast(T &data, const unsigned int root_id=0, const bool identical_sizes=false) const
virtual void output() override
Overload the Output::output method, this is required for Nemesis output due to the method utilized fo...
Based class for output objects.
OutputTools< Real >::VariableValue VariableValue
virtual void initialSetup()
Call init() method on setup.
bool _nemesis_initialized
Flag if the output has been initialized.
libMesh::EquationSystems * _es_ptr
Reference the the libMesh::EquationSystems object that contains the data.
Class for scalar variables (they are different).
virtual MooseMesh & mesh() override
void mooseError(Args &&... args) const
Emits an error prefixed with object name and type and optionally a file path to the top-level block p...
const std::set< std::string > & getElementalVariableOutput()
The list of elemental nonlinear variables names that are set for output.
virtual void outputSetup()
Performs the necessary deletion and re-creating of NemesisII_IO object.
const std::set< std::string > & getNodalVariableOutput()
The list of nodal nonlinear variables names that are set for output.
virtual void outputPostprocessors() override
Writes postprocessor values to global output parameters.
registerMooseObject("MooseApp", Nemesis)
static InputParameters validParams()
virtual void meshChanged() override
Creates a new NemesisII_IO output object for outputting a new mesh.
virtual std::string filename() override
Returns the current filename, this method handles the -s000 suffix common to NemesisII files...
SystemBase & sys()
Get the system this variable is part of.
Nemesis(const InputParameters ¶meters)
Class constructor.
Real getGlobalTimeOffset() const
Each App has it's own local time.
const VariableValue & sln() const
virtual Real getOutputTime()
Get the time that will be used for stream/file outputting.
void ErrorVector unsigned int
unsigned int & _file_num
Current output filename; utilized by filename() to create the proper suffix.