diff --git a/Documentation/ProjectFile/prj/time_loop/output/t_fixed_output_times_from_file.md b/Documentation/ProjectFile/prj/time_loop/output/t_fixed_output_times_from_file.md new file mode 100644 index 0000000000000000000000000000000000000000..80a26c004fb62fb3959f77eb20584408a66b487b --- /dev/null +++ b/Documentation/ProjectFile/prj/time_loop/output/t_fixed_output_times_from_file.md @@ -0,0 +1 @@ +Read **\<fixed_output_times\>** from binary file (double precision, little endian). diff --git a/ProcessLib/Output/CreateOutputConfig.cpp b/ProcessLib/Output/CreateOutputConfig.cpp index 1366c99599ad47b5e2ac918411b7d45520214518..0f8e687d190a92e136b20cfe8f081bf95c24388c 100644 --- a/ProcessLib/Output/CreateOutputConfig.cpp +++ b/ProcessLib/Output/CreateOutputConfig.cpp @@ -14,6 +14,7 @@ #include "BaseLib/Algorithm.h" #include "BaseLib/ConfigTree.h" +#include "BaseLib/FileTools.h" // required for reading output_times from binary file #include "MaterialLib/Utils/MediaCreation.h" // required for splitMaterialIDString #include "MeshLib/Mesh.h" #include "MeshLib/Utils/createMaterialIDsBasedSubMesh.h" @@ -146,6 +147,18 @@ OutputConfig createOutputConfig( //! \ogs_file_param{prj__time_loop__output__fixed_output_times} config.getConfigParameter<std::vector<double>>("fixed_output_times", {}); + if (output_config.fixed_output_times.empty()) + { + //! \ogs_file_param{prj__time_loop__output__fixed_output_times_from_file} + std::string filename = config.getConfigParameter<std::string>( + "fixed_output_times_from_file", "no_file"); + + if (filename != "no_file") + { + output_config.fixed_output_times = + BaseLib::readDoublesFromBinaryFile(filename); + } + } // Remove possible duplicated elements and sort. BaseLib::makeVectorUnique(output_config.fixed_output_times);