diff --git a/ProcessLib/Output/Output.cpp b/ProcessLib/Output/Output.cpp index d73f98080b40abac108b9854a43f5a68578014b7..fb35566d7aeba5b2c37413f28f828dd05ccf8c47 100644 --- a/ProcessLib/Output/Output.cpp +++ b/ProcessLib/Output/Output.cpp @@ -237,7 +237,7 @@ struct Output::OutputFile } }; -void Output::outputBulkMesh(OutputFile const& output_file, +void Output::outputMesh(OutputFile const& output_file, MeshLib::IO::PVDFile* const pvd_file, MeshLib::Mesh const& mesh, double const t) const @@ -289,24 +289,31 @@ void Output::doOutputAlways(Process const& process, return; } - auto output_bulk_mesh = [&]() { - outputBulkMesh( + auto output_bulk_mesh = [&](MeshLib::Mesh& mesh) { + OutputFile const file (_output_directory, _output_file_type, _output_file_prefix, _output_file_suffix, mesh.getName(), process_id, timestep, t, _output_file_data_mode, - _output_file_compression), - findPVDFile(process, process_id, process.getMesh().getName()), - process.getMesh(), t); + _output_file_compression); + + MeshLib::IO::PVDFile* pvd_file = nullptr; + if (_output_file_type=="VTK") + { + pvd_file= findPVDFile(process, process_id, mesh.getName()); + } + outputMesh(file, pvd_file, mesh, t ); }; for (auto const& mesh_output_name : _mesh_names_for_output) { + // process related output if (process.getMesh().getName() == mesh_output_name) { - output_bulk_mesh(); + output_bulk_mesh(process.getMesh()); continue; } + // mesh related output auto& mesh = *BaseLib::findElementOrError( begin(_meshes), end(_meshes), [&mesh_output_name](auto const& m) { @@ -349,23 +356,7 @@ void Output::doOutputAlways(Process const& process, // output is mesh related instead of process related. This would also // allow for merging bulk mesh output and arbitrary mesh output. - OutputFile const output_file{_output_directory, - _output_file_prefix, - _output_file_suffix, - mesh.getName(), - process_id, - timestep, - t, - _output_file_data_mode, - _output_file_compression}; - - auto pvd_file = findPVDFile(process, process_id, mesh.getName()); - pvd_file->addVTUFile(output_file.name, t); - - DBUG("output to {:s}", output_file.path); - - makeOutput(output_file.path, mesh, output_file.compression, - output_file.data_mode); + output_bulk_mesh(mesh); } INFO("[time] Output of timestep {:d} took {:g} s.", timestep, time_output.elapsed()); diff --git a/ProcessLib/Output/Output.h b/ProcessLib/Output/Output.h index 21f120f96e86a65458796d1d13e41b7ed835ea13..3c796332f83210704427b77c7e5133c23afa54ef 100644 --- a/ProcessLib/Output/Output.h +++ b/ProcessLib/Output/Output.h @@ -82,11 +82,10 @@ public: private: struct OutputFile; - void outputBulkMesh(OutputFile const& output_file, + void outputMesh(OutputFile const& output_file, MeshLib::IO::PVDFile* const pvd_file, MeshLib::Mesh const& mesh, double const t) const; - private: std::string const _output_directory; std::string const _output_file_type;