/home/runner/work/spades/spades/Source/RunTime.H Source File

SPADES API: /home/runner/work/spades/spades/Source/RunTime.H Source File
SPADES API
RunTime.H
Go to the documentation of this file.
1#ifndef RUNTIME_H
2#define RUNTIME_H
3#include "SPADES.H"
4#include "Constants.H"
5
6class RunTime
7{
8public:
9 virtual ~RunTime() = default;
10 virtual void run() = 0;
11};
12
13template <typename Model>
15{
16public:
17 explicit TemplatedRunTime(const Model& model) : m_spades(model) {}
18
19 void run() override
20 {
21 amrex::Real start_time = amrex::ParallelDescriptor::second();
22 amrex::Print() << "Initializing SPADES ..." << std::endl;
23 m_spades.initialize_data();
24
25 amrex::Real init_time =
26 amrex::ParallelDescriptor::second() - start_time;
27 amrex::ParallelDescriptor::ReduceRealMax(
28 init_time, amrex::ParallelDescriptor::IOProcessorNumber());
29 amrex::Print() << "Initialization successful. Time elapsed = "
30 << init_time << std::endl;
31
32 m_spades.evolve();
33
34 amrex::Real end_time = amrex::ParallelDescriptor::second() - start_time;
35 amrex::ParallelDescriptor::ReduceRealMax(
36 end_time, amrex::ParallelDescriptor::IOProcessorNumber());
37
38 amrex::Print() << "\n==============================================="
39 "================================================="
40 << std::endl
41 << std::endl;
42 amrex::Print() << "Time spent in initialize_data(): " << init_time
43 << std::endl;
44 amrex::Print() << "Time spent in evolve(): "
45 << end_time - init_time << std::endl;
46 }
47
48private:
50};
51
52void create_and_run_model(const std::string& model_name)
53{
54 std::unique_ptr<RunTime> runtime;
55
56 if (model_name == "phold") {
58 runtime =
59 std::make_unique<TemplatedRunTime<spades::models::Phold>>(model);
60 runtime->run();
61 } else {
62 amrex::Abort("Invalid model type" + model_name);
63 }
64}
65
66#endif
void create_and_run_model(const std::string &model_name)
Definition RunTime.H:52
Definition RunTime.H:7
virtual ~RunTime()=default
virtual void run()=0
Definition RunTime.H:15
spades::SPADES< Model > m_spades
Definition RunTime.H:49
TemplatedRunTime(const Model &model)
Definition RunTime.H:17
void run() override
Definition RunTime.H:19
Main SPADES class.
Definition SPADES.H:29
PHOLD model.
Definition Phold.H:15