diff --git a/opm/simulators/flow/Banners.cpp b/opm/simulators/flow/Banners.cpp index b164e47eb78..1100c74b45e 100644 --- a/opm/simulators/flow/Banners.cpp +++ b/opm/simulators/flow/Banners.cpp @@ -116,7 +116,8 @@ void printFlowTrailer(int nprocs, int nthreads, const double total_setup_time, const double deck_read_time, - const SimulatorReport& report) + const SimulatorReport& report, + const std::string_view extra_summary) { std::ostringstream ss; ss << "\n\n================ End of simulation ===============\n\n"; @@ -125,6 +126,15 @@ void printFlowTrailer(int nprocs, ss << fmt::format("Setup time: {:9.2f} s\n", total_setup_time); ss << fmt::format(" Deck input: {:9.2f} s\n", deck_read_time); report.reportFullyImplicit(ss); + if (!extra_summary.empty()) { + if (extra_summary.front() != '\n') { + ss << '\n'; + } + ss << extra_summary; + if (extra_summary.back() != '\n') { + ss << '\n'; + } + } OpmLog::info(ss.str()); } diff --git a/opm/simulators/flow/Banners.hpp b/opm/simulators/flow/Banners.hpp index 55a1d3374c2..e029fe36e10 100644 --- a/opm/simulators/flow/Banners.hpp +++ b/opm/simulators/flow/Banners.hpp @@ -44,7 +44,8 @@ void printFlowTrailer(int nprocs, int nthreads, const double total_setup_time, const double deck_read_time, - const SimulatorReport& report); + const SimulatorReport& report, + std::string_view extra_summary); } // namespace Opm diff --git a/opm/simulators/flow/FlowMain.hpp b/opm/simulators/flow/FlowMain.hpp index c904fd10a21..f7bdfe237b2 100644 --- a/opm/simulators/flow/FlowMain.hpp +++ b/opm/simulators/flow/FlowMain.hpp @@ -430,7 +430,8 @@ namespace Opm { = omp_get_max_threads(); #endif - printFlowTrailer(mpi_size_, threads, total_setup_time_, deck_read_time_, report); + printFlowTrailer(mpi_size_, threads, total_setup_time_, deck_read_time_, report, + simulator_->model().simulator().problem().extraTrailerSummary()); detail::handleExtraConvergenceOutput(report, Parameters::Get(), diff --git a/opm/simulators/flow/FlowProblem.hpp b/opm/simulators/flow/FlowProblem.hpp index 1d7408e63f8..87a1ea6fc7d 100644 --- a/opm/simulators/flow/FlowProblem.hpp +++ b/opm/simulators/flow/FlowProblem.hpp @@ -170,6 +170,11 @@ class FlowProblem : public GetPropType using DirectionalMobilityPtr = Utility::CopyablePtr>; public: + + /// Extra module-specific lines appended to the final simulation trailer + /// (e.g. geomechanics timing). Derived problems may shadow this. + std::string extraTrailerSummary() const + { return {}; } using BaseType::briefDescription; using BaseType::helpPreamble; using BaseType::shouldWriteOutput;