OGS
|
Manages writing the solution of processes to disk.
This class decides at which timesteps output is written and initiates the writing process.
#include <Output.h>
Classes | |
struct | OutputFile |
struct | PairRepeatEachSteps |
Public Member Functions | |
Output (std::string directory, OutputType const type, std::string prefix, std::string suffix, bool const compress_output, unsigned int n_files, std::string const &data_mode, bool const output_nonlinear_iteration_results, std::vector< PairRepeatEachSteps > repeats_each_steps, std::vector< double > &&fixed_output_times, OutputDataSpecification &&output_data_specification, std::vector< std::string > &&mesh_names_for_output, std::vector< std::unique_ptr< MeshLib::Mesh >> const &meshes) | |
void | addProcess (ProcessLib::Process const &process) |
TODO doc. Opens a PVD file for each process. More... | |
void | doOutput (Process const &process, const int process_id, int const timestep, const double t, int const iteration, std::vector< GlobalVector * > const &x) |
void | doOutputLastTimestep (Process const &process, const int process_id, int const timestep, const double t, int const iteration, std::vector< GlobalVector * > const &x) |
void | doOutputAlways (Process const &process, const int process_id, int const timestep, const double t, int const iteration, std::vector< GlobalVector * > const &x) |
void | doOutputNonlinearIteration (Process const &process, const int process_id, int const timestep, const double t, const int iteration, std::vector< GlobalVector * > const &x) |
std::vector< double > | getFixedOutputTimes () const |
Private Member Functions | |
void | outputMeshXdmf (OutputFile const &output_file, std::vector< std::reference_wrapper< const MeshLib::Mesh >> meshes, int const timestep, double const t) |
MeshLib::IO::PVDFile * | findPVDFile (Process const &process, const int process_id, std::string const &mesh_name_for_output) |
bool | shallDoOutput (int timestep, double const t) |
Determines if there should be output at the given timestep or t . More... | |
Static Private Member Functions | |
static void | outputMesh (OutputFile const &output_file, MeshLib::IO::PVDFile *const pvd_file, MeshLib::Mesh const &mesh, double const t) |
Private Attributes | |
std::unique_ptr< MeshLib::IO::XdmfHdfWriter > | _mesh_xdmf_hdf_writer |
std::string const | _output_directory |
OutputType const | _output_file_type |
std::string const | _output_file_prefix |
std::string const | _output_file_suffix |
bool const | _output_file_compression |
Enables or disables zlib-compression of the output files. More... | |
unsigned int const | _n_files |
Specifies the number of hdf5 output files. More... | |
int const | _output_file_data_mode |
bool const | _output_nonlinear_iteration_results |
std::vector< PairRepeatEachSteps > | _repeats_each_steps |
Describes after which timesteps to write output. More... | |
std::vector< double > const | _fixed_output_times |
Given times that steps have to reach. More... | |
std::multimap< Process const *, MeshLib::IO::PVDFile > | _process_to_pvd_file |
OutputDataSpecification const | _output_data_specification |
std::vector< std::string > | _mesh_names_for_output |
std::vector< std::unique_ptr< MeshLib::Mesh > > const & | _meshes |
ProcessLib::Output::Output | ( | std::string | directory, |
OutputType const | type, | ||
std::string | prefix, | ||
std::string | suffix, | ||
bool const | compress_output, | ||
unsigned int | n_files, | ||
std::string const & | data_mode, | ||
bool const | output_nonlinear_iteration_results, | ||
std::vector< PairRepeatEachSteps > | repeats_each_steps, | ||
std::vector< double > && | fixed_output_times, | ||
OutputDataSpecification && | output_data_specification, | ||
std::vector< std::string > && | mesh_names_for_output, | ||
std::vector< std::unique_ptr< MeshLib::Mesh >> const & | meshes | ||
) |
Definition at line 96 of file Output.cpp.
References _fixed_output_times, and OGS_FATAL.
void ProcessLib::Output::addProcess | ( | ProcessLib::Process const & | process | ) |
TODO doc. Opens a PVD file for each process.
Definition at line 128 of file Output.cpp.
References _mesh_names_for_output, _output_directory, _output_file_prefix, _process_to_pvd_file, anonymous_namespace{Output.cpp}::constructPVDName(), ProcessLib::Process::getMesh(), and MeshLib::Mesh::getName().
void ProcessLib::Output::doOutput | ( | Process const & | process, |
const int | process_id, | ||
int const | timestep, | ||
const double | t, | ||
int const | iteration, | ||
std::vector< GlobalVector * > const & | x | ||
) |
Writes output for the given process
if it should be written in the given timestep
.
Definition at line 399 of file Output.cpp.
References _output_directory, InSituLib::CoProcess(), doOutputAlways(), ProcessLib::Process::getMesh(), and shallDoOutput().
Referenced by ProcessLib::TimeLoop::initialize(), and ProcessLib::TimeLoop::loop().
void ProcessLib::Output::doOutputAlways | ( | Process const & | process, |
const int | process_id, | ||
int const | timestep, | ||
const double | t, | ||
int const | iteration, | ||
std::vector< GlobalVector * > const & | x | ||
) |
Writes output for the given process
. This method will always write. It is intended to write output in error handling routines.
Definition at line 277 of file Output.cpp.
References _mesh_names_for_output, _meshes, _n_files, _output_data_specification, _output_directory, _output_file_compression, _output_file_data_mode, _output_file_prefix, _output_file_suffix, _output_file_type, _process_to_pvd_file, ProcessLib::addProcessDataToMesh(), DBUG(), NumLib::LocalToGlobalIndexMap::deriveBoundaryConstrainedMap(), BaseLib::RunTime::elapsed(), BaseLib::findElementOrError(), findPVDFile(), ProcessLib::Process::getDOFTable(), ProcessLib::Process::getIntegrationPointWriter(), ProcessLib::Process::getMesh(), MeshLib::Mesh::getName(), ProcessLib::Process::getProcessVariables(), ProcessLib::Process::getSecondaryVariables(), INFO(), ProcessLib::Process::isMonolithicSchemeUsed(), MaterialPropertyLib::name, ProcessLib::OutputDataSpecification::output_variables, outputMesh(), outputMeshXdmf(), BaseLib::RunTime::start(), ProcessLib::vtk, and ProcessLib::xdmf.
Referenced by doOutput(), and doOutputLastTimestep().
void ProcessLib::Output::doOutputLastTimestep | ( | Process const & | process, |
const int | process_id, | ||
int const | timestep, | ||
const double | t, | ||
int const | iteration, | ||
std::vector< GlobalVector * > const & | x | ||
) |
Writes output for the given process
if it has not been written yet. This method is intended for doing output after the last timestep in order to make sure that its results are written.
Definition at line 418 of file Output.cpp.
References _output_directory, InSituLib::CoProcess(), doOutputAlways(), ProcessLib::Process::getMesh(), and shallDoOutput().
Referenced by ProcessLib::TimeLoop::loop().
void ProcessLib::Output::doOutputNonlinearIteration | ( | Process const & | process, |
const int | process_id, | ||
int const | timestep, | ||
const double | t, | ||
const int | iteration, | ||
std::vector< GlobalVector * > const & | x | ||
) |
Writes output for the given process
. To be used for debug output after an iteration of the nonlinear solver.
Definition at line 435 of file Output.cpp.
References _output_data_specification, _output_directory, _output_file_compression, _output_file_data_mode, _output_file_prefix, _output_file_suffix, _output_file_type, _output_nonlinear_iteration_results, _process_to_pvd_file, ProcessLib::addProcessDataToMesh(), ProcessLib::Output::OutputFile::constructFilename(), DBUG(), BaseLib::RunTime::elapsed(), findPVDFile(), ProcessLib::Process::getDOFTable(), ProcessLib::Process::getIntegrationPointWriter(), ProcessLib::Process::getMesh(), MeshLib::Mesh::getName(), ProcessLib::Process::getProcessVariables(), ProcessLib::Process::getSecondaryVariables(), INFO(), ProcessLib::Process::isMonolithicSchemeUsed(), BaseLib::joinPaths(), ProcessLib::makeOutput(), and BaseLib::RunTime::start().
Referenced by ProcessLib::solveOneTimeStepOneProcess().
|
private |
Get the address of a PVDFile from corresponding to the given process.
Definition at line 146 of file Output.cpp.
References _output_directory, _output_file_prefix, _process_to_pvd_file, anonymous_namespace{Output.cpp}::constructPVDName(), and OGS_FATAL.
Referenced by doOutputAlways(), and doOutputNonlinearIteration().
|
inline |
Definition at line 82 of file Output.h.
References _fixed_output_times.
|
staticprivate |
Definition at line 261 of file Output.cpp.
References MeshLib::IO::PVDFile::addVTUFile(), ProcessLib::Output::OutputFile::compression, ProcessLib::Output::OutputFile::data_mode, DBUG(), ProcessLib::makeOutput(), ProcessLib::Output::OutputFile::name, ProcessLib::Output::OutputFile::path, ProcessLib::Output::OutputFile::type, and ProcessLib::vtk.
Referenced by doOutputAlways().
|
private |
Definition at line 238 of file Output.cpp.
References _mesh_xdmf_hdf_writer, _output_data_specification, ProcessLib::Output::OutputFile::compression, ProcessLib::Output::OutputFile::n_files, ProcessLib::OutputDataSpecification::output_variables, and ProcessLib::Output::OutputFile::path.
Referenced by doOutputAlways().
|
private |
Determines if there should be output at the given timestep
or t
.
Definition at line 61 of file Output.cpp.
References _fixed_output_times, and _repeats_each_steps.
Referenced by doOutput(), and doOutputLastTimestep().
|
private |
Given times that steps have to reach.
Definition at line 124 of file Output.h.
Referenced by Output(), getFixedOutputTimes(), and shallDoOutput().
|
private |
Definition at line 143 of file Output.h.
Referenced by addProcess(), and doOutputAlways().
|
private |
Definition at line 102 of file Output.h.
Referenced by outputMeshXdmf().
|
private |
Definition at line 144 of file Output.h.
Referenced by doOutputAlways().
|
private |
Specifies the number of hdf5 output files.
Definition at line 112 of file Output.h.
Referenced by doOutputAlways().
|
private |
Definition at line 142 of file Output.h.
Referenced by doOutputAlways(), doOutputNonlinearIteration(), and outputMeshXdmf().
|
private |
Definition at line 104 of file Output.h.
Referenced by addProcess(), doOutput(), doOutputAlways(), doOutputLastTimestep(), doOutputNonlinearIteration(), and findPVDFile().
|
private |
Enables or disables zlib-compression of the output files.
Definition at line 110 of file Output.h.
Referenced by doOutputAlways(), and doOutputNonlinearIteration().
|
private |
Chooses vtk's data mode for output following the enumeration given in the vtkXMLWriter: {Ascii, Binary, Appended}. See vtkXMLWriter documentation http://www.vtk.org/doc/nightly/html/classvtkXMLWriter.html
Definition at line 117 of file Output.h.
Referenced by doOutputAlways(), and doOutputNonlinearIteration().
|
private |
Definition at line 106 of file Output.h.
Referenced by addProcess(), doOutputAlways(), doOutputNonlinearIteration(), and findPVDFile().
|
private |
Definition at line 107 of file Output.h.
Referenced by doOutputAlways(), and doOutputNonlinearIteration().
|
private |
Definition at line 105 of file Output.h.
Referenced by doOutputAlways(), and doOutputNonlinearIteration().
|
private |
Definition at line 118 of file Output.h.
Referenced by doOutputNonlinearIteration().
|
private |
Definition at line 126 of file Output.h.
Referenced by addProcess(), doOutputAlways(), doOutputNonlinearIteration(), and findPVDFile().
|
private |
Describes after which timesteps to write output.
Definition at line 121 of file Output.h.
Referenced by shallDoOutput().