SPH
IRun.h
Go to the documentation of this file.
1 #pragma once
2 
7 
8 #include "common/ForwardDecl.h"
12 #include "physics/Integrals.h"
13 #include "system/Settings.h"
14 
16 
17 class ILogWriter;
18 class IScheduler;
19 class IOutput;
20 class ITrigger;
21 class IDiagnostic;
22 
23 
27 class IRunCallbacks : public Polymorphic {
28 public:
30  virtual void onSetUp(const Storage& storage, Statistics& stats) = 0;
31 
37  virtual void onTimeStep(const Storage& storage, Statistics& stats) = 0;
38 
42  virtual bool shouldAbortRun() const = 0;
43 };
44 
61 class IRun : public Polymorphic {
62 protected:
64 
67 
70 
73 
76 
79 
82 
85 
88 
89 public:
90  IRun();
91 
92  ~IRun();
93 
100  Statistics run(Storage& storage);
101 
105  Statistics run(Storage& storage, IRunCallbacks& callbacks);
106 
107 protected:
109  virtual void setUp(SharedPtr<Storage> storage) = 0;
110 
115  virtual void tearDown(const Storage& storage, const Statistics& stats) = 0;
116 
118 
119  void tearDownInternal(const Storage& storage, const Statistics& stats);
120 };
121 
130 Outcome doRun(Storage& storage, const RunSettings& settings);
131 
NAMESPACE_SPH_BEGIN
Definition: BarnesHut.cpp:13
Outcome doRun(Storage &storage, const RunSettings &settings)
Runs a simulation using provided storage as initial conditions.
Definition: IRun.cpp:348
Integrals of motion and other integral quantities.
Object representing interval of real values.
Doubly-linked list.
#define NAMESPACE_SPH_END
Definition: Object.h:12
Generic dynamically allocated resizable storage.
Definition: Array.h:43
Base class of diagnostics of the run.
Definition: Diagnostics.h:31
Base class for objects logging run statistics.
Definition: LogWriter.h:10
Interface for saving quantities of SPH particles to a file.
Definition: Output.h:76
Callbacks executed by the simulation to provide feedback to the user.
Definition: IRun.h:27
virtual bool shouldAbortRun() const =0
Returns whether current run should be aborted or not.
virtual void onSetUp(const Storage &storage, Statistics &stats)=0
Called right before the run starts, i.e. after initial conditions are set up.
virtual void onTimeStep(const Storage &storage, Statistics &stats)=0
Called every timestep.
Defines the interface for a run.
Definition: IRun.h:61
IRun()
Definition: IRun.cpp:40
SharedPtr< IScheduler > scheduler
Scheduler used for parallelization.
Definition: IRun.h:75
AutoPtr< ILogWriter > logWriter
Writes statistics into logger every timestep.
Definition: IRun.h:72
AutoPtr< ITimeStepping > timeStepping
Timestepping.
Definition: IRun.h:78
SharedPtr< ILogger > logger
Logging.
Definition: IRun.h:69
AutoPtr< IOutput > output
Data output.
Definition: IRun.h:66
void tearDownInternal(const Storage &storage, const Statistics &stats)
Definition: IRun.cpp:324
Statistics run(Storage &storage)
Runs the simulation.
Definition: IRun.cpp:187
virtual void setUp(SharedPtr< Storage > storage)=0
Prepares the run, creates logger, output, ...
List< AutoPtr< ITrigger > > triggers
Triggers.
Definition: IRun.h:84
AutoPtr< ISolver > solver
Solver.
Definition: IRun.h:81
void setNullToDefaults(SharedPtr< Storage > storage)
Definition: IRun.cpp:297
Array< AutoPtr< IDiagnostic > > diagnostics
Diagnostics.
Definition: IRun.h:87
virtual void tearDown(const Storage &storage, const Statistics &stats)=0
Called after the run.
RunSettings settings
Definition: IRun.h:63
Interface that allows unified implementation of sequential and parallelized versions of algorithms.
Definition: Scheduler.h:27
Interface for triggering generic actions during the run.
Definition: Trigger.h:19
Doubly-linked list.
Definition: List.h:131
Object holding various statistics about current run.
Definition: Statistics.h:22
Container storing all quantities used within the simulations.
Definition: Storage.h:230
Generic storage and input/output routines of settings.
Base class for all polymorphic objects.
Definition: Object.h:88