Phoxonics  1.0
Object Oriented FDTD Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ElectroMagnetic1D.hpp
Go to the documentation of this file.
1 /*
2  * ElectroMagnetic1D.hpp
3  *
4  * Created on: Nov 19, 2014
5  * Author: nano
6  */
7 
8 #ifndef ELECTROMAGNETIC1D_HPP_
9 #define ELECTROMAGNETIC1D_HPP_
10 
11 #include "../../../common/common.hpp"
12 #include "EngineBase.hpp"
13 #include "EngineFactoryReg.hpp"
14 #include "../cells/ElectroMagCells1D.hpp"
15 #include "../cell/ElectroMagCell.hpp"
16 #include <string>
17 
18 namespace phoxonics {
19 namespace core {
20 
21 class ElectroMagnetic1D : public EngineBase {
22 public:
23  explicit ElectroMagnetic1D();
24  virtual ~ElectroMagnetic1D();
25 
26  int periods { 0 };
27  int use_threads { 0 };
28  std::string component1 { "" };
29  std::string component2 { "" };
30  std::string propagation_direction { "" };
31  std::shared_ptr<ElectroMagCells1D> em_cells_1d_;
32 
33  // configures object and initializes data from config
34  void configure() override final;
35 
36  // prints object data
37  void print_me() override final;
38 
39  // starts engine process
40  void start(std::shared_ptr<GridBase> grid_base,
41  std::vector<std::shared_ptr<SourceBase>> sources_base,
42  std::vector<std::shared_ptr<DetectorBase>> fluxes_base,
43  std::shared_ptr<PmlBase> pml_base) override final;
44 
45  // engine process
46  void process() override final;
47 
48  // update electric and magnetic fields
49  void update_field(std::string component) override final;
50 
51  // apply sources
52  void apply_sources(double time) override final;
53 
54  //record fluxes
55  void apply_detectors(double time) override final;
56 
57  // apply pmls
58  void apply_pml() override final;
59 };
60 
61 } /* namespace core */
62 } /* namespace phoxonics */
63 
64 #endif /* ELECTROMAGNETIC1D_HPP_ */
void start(std::shared_ptr< GridBase > grid_base, std::vector< std::shared_ptr< SourceBase >> sources_base, std::vector< std::shared_ptr< DetectorBase >> fluxes_base, std::shared_ptr< PmlBase > pml_base) overridefinal
Definition: ElectroMagnetic1D.cpp:91
void apply_sources(double time) overridefinal
Definition: ElectroMagnetic1D.cpp:163
void process() overridefinal
Definition: ElectroMagnetic1D.cpp:99
Definition: CommonBase.hpp:14
int use_threads
Definition: ElectroMagnetic1D.hpp:27
void configure() overridefinal
Definition: ElectroMagnetic1D.cpp:23
STL namespace.
std::string component2
Definition: ElectroMagnetic1D.hpp:29
int periods
Definition: ElectroMagnetic1D.hpp:26
void apply_detectors(double time) overridefinal
Definition: ElectroMagnetic1D.cpp:170
ElectroMagnetic1D()
Definition: ElectroMagnetic1D.cpp:15
virtual ~ElectroMagnetic1D()
Definition: ElectroMagnetic1D.cpp:19
Definition: PmlBase.hpp:22
Definition: DetectorBase.hpp:22
Definition: EngineBase.hpp:26
Definition: GridBase.hpp:26
std::shared_ptr< ElectroMagCells1D > em_cells_1d_
Definition: ElectroMagnetic1D.hpp:31
std::string propagation_direction
Definition: ElectroMagnetic1D.hpp:30
void apply_pml() overridefinal
Definition: ElectroMagnetic1D.cpp:175
std::string component1
Definition: ElectroMagnetic1D.hpp:28
void update_field(std::string component) overridefinal
Definition: ElectroMagnetic1D.cpp:135
void print_me() overridefinal
Definition: ElectroMagnetic1D.cpp:84
Definition: ElectroMagnetic1D.hpp:21
Definition: SourceBase.hpp:22