Modifications of formatting, compile fix.

This commit is contained in:
Atgeirr Flø Rasmussen 2020-05-07 15:04:20 +02:00
parent 0f33835e67
commit cfdb2b9be6
2 changed files with 86 additions and 90 deletions

View File

@ -1,5 +1,5 @@
/* /*
Copyright 2012 SINTEF ICT, Applied Mathematics. Copyright 2012, 2020 SINTEF Digital, Mathematics and Cybernetics.
This file is part of the Open Porous Media project (OPM). This file is part of the Open Porous Media project (OPM).
@ -20,6 +20,8 @@
#include "config.h" #include "config.h"
#include <opm/simulators/timestepping/SimulatorReport.hpp> #include <opm/simulators/timestepping/SimulatorReport.hpp>
#include <opm/common/OpmLog/OpmLog.hpp>
#include <opm/parser/eclipse/Units/Units.hpp>
#include <iomanip> #include <iomanip>
#include <ostream> #include <ostream>
@ -33,7 +35,7 @@ namespace Opm
total_time(0.0), total_time(0.0),
solver_time(0.0), solver_time(0.0),
assemble_time(0.0), assemble_time(0.0),
linear_solve_setup_time(0.0), linear_solve_setup_time(0.0),
linear_solve_time(0.0), linear_solve_time(0.0),
update_time(0.0), update_time(0.0),
output_write_time(0.0), output_write_time(0.0),
@ -43,7 +45,7 @@ namespace Opm
total_linear_iterations( 0 ), total_linear_iterations( 0 ),
converged(false), converged(false),
exit_status(EXIT_SUCCESS), exit_status(EXIT_SUCCESS),
global_time(0), global_time(0),
verbose_(verbose) verbose_(verbose)
{ {
} }
@ -52,7 +54,7 @@ namespace Opm
{ {
pressure_time += sr.pressure_time; pressure_time += sr.pressure_time;
transport_time += sr.transport_time; transport_time += sr.transport_time;
linear_solve_setup_time += sr.linear_solve_setup_time; linear_solve_setup_time += sr.linear_solve_setup_time;
linear_solve_time += sr.linear_solve_time; linear_solve_time += sr.linear_solve_time;
solver_time += sr.solver_time; solver_time += sr.solver_time;
assemble_time += sr.assemble_time; assemble_time += sr.assemble_time;
@ -63,21 +65,21 @@ namespace Opm
total_linearizations += sr.total_linearizations; total_linearizations += sr.total_linearizations;
total_newton_iterations += sr.total_newton_iterations; total_newton_iterations += sr.total_newton_iterations;
total_linear_iterations += sr.total_linear_iterations; total_linear_iterations += sr.total_linear_iterations;
global_time = sr.global_time; global_time = sr.global_time;
} }
void SimulatorReportBase::report(std::ostream& os) // void SimulatorReportBase::report(std::ostream& os)
{ // {
if ( verbose_ ) // if ( verbose_ )
{ // {
os << "Total time taken: " << total_time // os << "Total time taken: " << total_time
<< "\n Pressure time: " << pressure_time // << "\n Pressure time: " << pressure_time
<< "\n Transport time: " << transport_time // << "\n Transport time: " << transport_time
<< "\n Overall Newton Iterations: " << total_newton_iterations // << "\n Overall Newton Iterations: " << total_newton_iterations
<< "\n Overall Linear Iterations: " << total_linear_iterations // << "\n Overall Linear Iterations: " << total_linear_iterations
<< std::endl; // << std::endl;
} // }
} // }
void SimulatorReportBase::reportStep(std::ostringstream& ss) void SimulatorReportBase::reportStep(std::ostringstream& ss)
{ {
@ -124,14 +126,14 @@ namespace Opm
} }
os << std::endl; os << std::endl;
t = linear_solve_setup_time + (failureReport ? failureReport->linear_solve_setup_time : 0.0); t = linear_solve_setup_time + (failureReport ? failureReport->linear_solve_setup_time : 0.0);
os << " Linear solve setup time (seconds): " << t; os << " Linear solve setup time (seconds): " << t;
if (failureReport) { if (failureReport) {
os << " (Failed: " << failureReport->linear_solve_setup_time << "; " os << " (Failed: " << failureReport->linear_solve_setup_time << "; "
<< 100*failureReport->linear_solve_setup_time/t << "%)"; << 100*failureReport->linear_solve_setup_time/t << "%)";
} }
os << std::endl; os << std::endl;
t = update_time + (failureReport ? failureReport->update_time : 0.0); t = update_time + (failureReport ? failureReport->update_time : 0.0);
os << " Update time (seconds): " << t; os << " Update time (seconds): " << t;
if (failureReport) { if (failureReport) {
@ -180,44 +182,35 @@ namespace Opm
} }
} }
void SimulatorReportBase::reportParam(std::ostream& os) void SimulatorReport::fullReports(std::ostream& os)
{ {
if ( verbose_ ) os << " Time(sec) Time(day) Assembly LSolve LSetup Update Output WellIt Lins NewtIt LinIt Conv\n";
{ SimulatorReportBase all;
os << "/timing/total_time=" << total_time for (size_t i = 0; i < stepreports.size(); ++i) {
<< "\n/timing/pressure/total_time=" << pressure_time SimulatorReportBase& sr = stepreports[i];
<< "\n/timing/transport/total_time=" << transport_time all += sr;
<< "\n/timing/newton/iterations=" << total_newton_iterations os.precision(10);
<< "\n/timing/linear/iterations=" << total_linear_iterations os << std::defaultfloat;
<< std::endl; os << std::setw(11) << sr.global_time << " ";
os << std::setw(11) << unit::convert::to(sr.global_time, unit::day) << " ";
os.precision(4);
os << std::fixed;
os << std::setw(9) << sr.assemble_time << " ";
os << std::setw(9) << sr.linear_solve_setup_time << " ";
os << std::setw(9) << sr.linear_solve_time << " ";
os << std::setw(9) << sr.update_time << " ";
os << std::setw(9) << sr.output_write_time << " ";
os.precision(6);
os << std::defaultfloat;
os << std::setw(6) << sr.total_well_iterations << " ";
os << std::setw(4) << sr.total_linearizations << " ";
os << std::setw(6) << sr.total_newton_iterations << " ";
os << std::setw(5) << sr.total_linear_iterations << " ";
os << std::setw(4) << sr.converged << "\n";
}
if (not(this->linear_solve_time == all.linear_solve_time)) {
OpmLog::debug("Inconsistency between timestep report and total report");
} }
} }
void SimulatorReport::fullReports(std::ostream& os){
SimulatorReportBase all;
for(size_t i=0; i < stepreports.size(); ++i){
SimulatorReportBase& sr = stepreports[i];
all += sr;
os << sr.global_time<< " ";
//os << sr.pressure_time<< " ";
//os << sr.transport_time<< " ";
//os << sr.total_time<< " ";
//os << sr.solver_time<< " ";
os << sr.assemble_time<< " ";
os << sr.linear_solve_setup_time<< " ";
os << sr.linear_solve_time<< " ";
os << sr.update_time<< " ";
os << sr.output_write_time<< " ";
os<< sr.total_well_iterations<< " ";
os << sr.total_linearizations<< " ";
os << sr.total_newton_iterations<< " ";
os << sr.total_linear_iterations<< " ";
os << sr.converged<< " ";
os << sr.exit_status<< " ";
os << std::endl;
}
if(not(this->linear_solve_time == all.linear_solve_time)){
Opm::debug("Inconsistency between timestep report and total report");
}
}
} // namespace Opm } // namespace Opm

View File

@ -51,48 +51,51 @@ namespace Opm
/// Default constructor initializing all times to 0.0. /// Default constructor initializing all times to 0.0.
explicit SimulatorReportBase(bool verbose=true); explicit SimulatorReportBase(bool verbose=true);
/// Copy constructor /// Copy constructor
SimulatorReportBase(const SimulatorReportBase&) = default; // SimulatorReportBase(const SimulatorReportBase&) = default;
/// Increment this report's times by those in sr. /// Increment this report's times by those in sr.
void operator+=(const SimulatorReportBase& sr); void operator+=(const SimulatorReportBase& sr);
/// Print a report to the given stream. /// Print a report to the given stream.
void report(std::ostream& os); // void report(std::ostream& os);
void reportStep(std::ostringstream& os); void reportStep(std::ostringstream& os);
/// Print a report, leaving out the transport time. /// Print a report, leaving out the transport time.
void reportFullyImplicit(std::ostream& os, const SimulatorReportBase* failedReport = nullptr); void reportFullyImplicit(std::ostream& os, const SimulatorReportBase* failedReport = nullptr);
void reportParam(std::ostream& os); // void reportParam(std::ostream& os);
private: private:
// Whether to print statistics to std::cout // Whether to print statistics to std::cout
bool verbose_; bool verbose_;
}; };
struct SimulatorReport: public SimulatorReportBase{
std::vector<SimulatorReportBase> stepreports; struct SimulatorReport : public SimulatorReportBase {
explicit SimulatorReport(bool verbose=true) : std::vector<SimulatorReportBase> stepreports;
SimulatorReportBase(verbose), explicit SimulatorReport(bool verbose = true)
stepreports() : SimulatorReportBase(verbose)
{ , stepreports()
} {
void operator+=(const SimulatorReportBase& sr){ }
SimulatorReportBase::operator+=(sr); void operator+=(const SimulatorReportBase& sr)
// if(stepreports.size()>0){ {
// assert(stepreports.back().global_time != sr.global_time); SimulatorReportBase::operator+=(sr);
// } // if(stepreports.size()>0){
stepreports.push_back(sr); // assert(stepreports.back().global_time != sr.global_time);
} // }
void operator+=(const SimulatorReport& sr){ stepreports.push_back(sr);
SimulatorReportBase::operator+=(sr); }
// if(stepreports.size()>0){ void operator+=(const SimulatorReport& sr)
// assert(stepreports.back().global_time != sr.global_time); {
// } SimulatorReportBase::operator+=(sr);
if(sr.stepreports.size()>0){ // if(stepreports.size()>0){
stepreports.insert(stepreports.end(),sr.stepreports.begin(),sr.stepreports.end()); // assert(stepreports.back().global_time != sr.global_time);
}else{ // }
stepreports.push_back(sr); if (sr.stepreports.size() > 0) {
} stepreports.insert(stepreports.end(), sr.stepreports.begin(), sr.stepreports.end());
//stepreports.push_back(sr); } else {
} stepreports.push_back(sr);
void fullReports(std::ostream& os); }
// stepreports.push_back(sr);
}
void fullReports(std::ostream& os);
}; };
} // namespace Opm } // namespace Opm
#endif // OPM_SIMULATORREPORT_HEADER_INCLUDED #endif // OPM_SIMULATORREPORT_HEADER_INCLUDED