Phoxonics  1.0
Object Oriented FDTD Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
EngineBase.hpp
Go to the documentation of this file.
1 /*
2  * EngineBase.hpp
3  *
4  * Created on: Oct 20, 2014
5  * Author: nano
6  */
7 
8 #ifndef ENGINEBASE_HPP_
9 #define ENGINEBASE_HPP_
10 
11 #include "../config/SimulationConfig.hpp"
12 #include "../common/SimulationItemBase.hpp"
13 #include "../grid/GridBase.hpp"
14 #include "../source/SourceBase.hpp"
15 #include "../detector/DetectorBase.hpp"
16 #include "../pml/PmlBase.hpp"
17 #include "../data/EmConstants.hpp"
18 #include "../../../common/common.hpp"
19 #include "../../../visual/visual.hpp"
20 #include <memory>
21 #include <string>
22 
23 namespace phoxonics {
24 namespace core {
25 
26 class EngineBase : public SimulationItemBase {
27 public:
28  explicit EngineBase();
29  virtual ~EngineBase();
30 
31  bool mpi_enabled { false };
32  bool cuda_enabled { false };
33  std::string h5_geometry_file { "" };
34  std::string h5_data_file { "" };
35  std::string h5_geom_dataset_name { "" };
36  std::string h5_data_dataset_name { "" };
37  bool real_time_visualization { false };
38  std::string visualization_commands { "" };
39  bool generate_animation { false };
40 
41  // configures object and initializes data from config
42  virtual void configure() override;
43 
44  // prints object data
45  virtual void print_me() override;
46 
47  // starts engine process
48  virtual void start(std::shared_ptr<GridBase> grid_base,
49  std::vector<std::shared_ptr<SourceBase>> sources_base,
50  std::vector<std::shared_ptr<DetectorBase>> detectors_base,
51  std::shared_ptr<PmlBase> pml_base);
52 
53 protected:
54  std::shared_ptr<GridBase> grid_base_;
55  std::vector<std::shared_ptr<SourceBase>> sources_base_;
56  std::vector<std::shared_ptr<DetectorBase>> detectors_base_;
57  std::shared_ptr<PmlBase> pml_base_;
58 
59  virtual void process();
60  virtual void update_field(std::string component);
61  virtual void apply_sources(double time);
62  virtual void apply_pml();
63  virtual void apply_detectors(double time);
64  virtual void init_hdf5_files();
65  virtual void record_hdf5_slice();
66  virtual void visualize_real_time();
67  virtual void calculate_detectors_amp_phase();
68  virtual void record_hdf5_detectors();
69  virtual void generate_hdf5_shell(bool execute_shell);
70  std::string h5_component_data_file(std::string component);
71 };
72 
73 } /* namespace core */
74 } /* namespace phoxonics */
75 
76 #endif /* ENGINEBASE_HPP_ */
bool cuda_enabled
Definition: EngineBase.hpp:32
virtual ~EngineBase()
Definition: EngineBase.cpp:17
virtual void apply_detectors(double time)
Definition: EngineBase.cpp:73
std::string h5_geometry_file
Definition: EngineBase.hpp:33
std::vector< std::shared_ptr< SourceBase > > sources_base_
Definition: EngineBase.hpp:55
virtual void apply_pml()
Definition: EngineBase.cpp:78
Definition: CommonBase.hpp:14
virtual void apply_sources(double time)
Definition: EngineBase.cpp:68
virtual void generate_hdf5_shell(bool execute_shell)
Definition: EngineBase.cpp:102
EngineBase()
Definition: EngineBase.cpp:13
virtual void record_hdf5_slice()
Definition: EngineBase.cpp:86
virtual void print_me() override
Definition: EngineBase.cpp:35
std::vector< std::shared_ptr< DetectorBase > > detectors_base_
Definition: EngineBase.hpp:56
virtual void visualize_real_time()
Definition: EngineBase.cpp:90
std::string h5_component_data_file(std::string component)
Definition: EngineBase.cpp:107
std::string h5_geom_dataset_name
Definition: EngineBase.hpp:35
std::string h5_data_dataset_name
Definition: EngineBase.hpp:36
virtual void start(std::shared_ptr< GridBase > grid_base, std::vector< std::shared_ptr< SourceBase >> sources_base, std::vector< std::shared_ptr< DetectorBase >> detectors_base, std::shared_ptr< PmlBase > pml_base)
Definition: EngineBase.cpp:48
virtual void record_hdf5_detectors()
Definition: EngineBase.cpp:98
std::string visualization_commands
Definition: EngineBase.hpp:38
std::shared_ptr< GridBase > grid_base_
Definition: EngineBase.hpp:54
std::shared_ptr< PmlBase > pml_base_
Definition: EngineBase.hpp:57
bool generate_animation
Definition: EngineBase.hpp:39
std::string h5_data_file
Definition: EngineBase.hpp:34
virtual void update_field(std::string component)
Definition: EngineBase.cpp:63
virtual void init_hdf5_files()
Definition: EngineBase.cpp:82
bool real_time_visualization
Definition: EngineBase.hpp:37
virtual void process()
Definition: EngineBase.cpp:59
virtual void configure() override
Definition: EngineBase.cpp:21
bool mpi_enabled
Definition: EngineBase.hpp:31
virtual void calculate_detectors_amp_phase()
Definition: EngineBase.cpp:94