Phoxonics  1.0
Object Oriented FDTD Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
SimulationBase.hpp
Go to the documentation of this file.
1 /*
2  * SimulationBase.hpp
3  *
4  * Created on: Oct 9, 2014
5  * Author: nano
6  */
7 
8 #ifndef SIMULATIONBASE_HPP_
9 #define SIMULATIONBASE_HPP_
10 
11 #include "../../../common/common.hpp"
12 #include "../common/SimulationItemBase.hpp"
13 #include "../config/SimulationConfig.hpp"
14 #include "../source/SourceBase.hpp"
15 #include "../source/SourceFactory.hpp"
16 #include "../detector/DetectorBase.hpp"
17 #include "../detector/DetectorFactory.hpp"
18 #include "../pml/PmlBase.hpp"
19 #include "../pml/PmlFactory.hpp"
20 #include "../geometry/GeometryBase.hpp"
21 #include "../geometry/GeometryFactory.hpp"
22 #include "../engine/EngineBase.hpp"
23 #include "../engine/EngineFactory.hpp"
24 #include "../grid/GridBase.hpp"
25 #include "../grid/GridFactory.hpp"
26 #include "../cell/ElectroMagCell.hpp"
27 #include "../cells/CellsBase.hpp"
28 #include "../cells/CellsFactory.hpp"
29 
30 #include <string>
31 #include <memory>
32 #include <iostream>
33 #include <stdexcept>
34 #include <vector>
35 #include <functional>
36 
37 namespace phoxonics {
38 namespace core {
39 
40 class SimulationBase : public SimulationItemBase {
41 public:
42  // construction / destruction methods
43  explicit SimulationBase();
44  explicit SimulationBase(const std::shared_ptr<SimulationConfig> sim_config);
45  virtual ~SimulationBase();
46 
47  std::string simulation_uuid { "" };
48  int simulation_dimensions { 0 };
49  std::string mode { "" };
50 
51  std::shared_ptr<GridBase> grid_base;
52  std::vector<std::shared_ptr<SourceBase>> sources_base;
53  std::vector<std::shared_ptr<DetectorBase>> detectors_base;
54  std::shared_ptr<PmlBase> pml_base;
55  std::vector<std::shared_ptr<GeometryBase>> geometries_base;
56  std::shared_ptr<EngineBase> engine_base;
57 
58  // configures object and initializes data from config
59  virtual void configure() override;
60 
61  // prints object data
62  virtual void print_me() override;
63 
64  // prints object data
65  void start();
66 
67 private:
68  // construct and configure simulation grid
69  std::shared_ptr<GridBase> build_grid();
70 
71  // construct and configure sources
72  std::vector<std::shared_ptr<SourceBase>> build_sources();
73 
74  // construct and configure fluxes
75  std::vector<std::shared_ptr<DetectorBase>> build_detectors();
76 
77  // construct and configure pmls
78  std::shared_ptr<PmlBase> build_pml();
79 
80  // construct and configure geometries
81  std::vector<std::shared_ptr<GeometryBase>> build_geometries();
82 
83  // construct and configure geometries
84  std::shared_ptr<EngineBase> build_engine();
85 };
86 
87 } /* namespace core */
88 } /* namespace phoxonics */
89 
90 #endif /* SIMULATIONBASE_HPP_ */
int simulation_dimensions
Definition: SimulationBase.hpp:48
std::shared_ptr< GridBase > grid_base
Definition: SimulationBase.hpp:51
std::string simulation_uuid
Definition: SimulationBase.hpp:47
Definition: CommonBase.hpp:14
virtual void configure() override
Definition: SimulationBase.cpp:26
SimulationBase()
Definition: SimulationBase.cpp:13
std::shared_ptr< SimulationConfig > sim_config
Definition: SimulationItemBase.hpp:25
std::vector< std::shared_ptr< SourceBase > > sources_base
Definition: SimulationBase.hpp:52
std::string mode
Definition: SimulationBase.hpp:49
void start()
Definition: SimulationBase.cpp:179
std::shared_ptr< EngineBase > engine_base
Definition: SimulationBase.hpp:56
virtual void print_me() override
Definition: SimulationBase.cpp:155
std::vector< std::shared_ptr< GeometryBase > > geometries_base
Definition: SimulationBase.hpp:55
virtual ~SimulationBase()
Definition: SimulationBase.cpp:22
std::shared_ptr< PmlBase > pml_base
Definition: SimulationBase.hpp:54
std::vector< std::shared_ptr< DetectorBase > > detectors_base
Definition: SimulationBase.hpp:53