Phoxonics  1.0
Object Oriented FDTD Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ElectroMagPml1D.hpp
Go to the documentation of this file.
1 /*
2  * ElectroMagPml1D.hpp
3  *
4  * Created on: Nov 19, 2014
5  * Author: nano
6  */
7 
8 #ifndef ELECTROMAGPML1D_HPP_
9 #define ELECTROMAGPML1D_HPP_
10 
11 #include "PmlBase.hpp"
12 #include "PmlFactoryReg.hpp"
13 #include "../cells/CellsBase.hpp"
14 #include "../cells/ElectroMagCells1D.hpp"
15 
16 #include <string>
17 #include <iostream>
18 
19 namespace phoxonics {
20 namespace core {
21 
22 class ElectroMagPml1D : public PmlBase {
23 public:
24  explicit ElectroMagPml1D();
25  virtual ~ElectroMagPml1D();
26 
27  // configures object and initializes data from config
28  void configure(std::shared_ptr<ConfigBase> config_base) override final;
29 
30  // prints object data
31  void print_me() override final;
32 
33  // apply pml
34  void apply_pml(std::shared_ptr<CellsBase> cells_base) override final;
35 
36 private:
37  double low_m1_ { 0.0 };
38  double low_m2_ { 0.0 };
39  double high_m1_ { 0.0 };
40  double high_m2_ { 0.0 };
41 
42  std::shared_ptr<ElectroMagCells1D> em_cells_1d_;
43 
44  // apply pmls
45  void apply_pml_ex();
46  void apply_pml_ey();
47  void apply_pml_ez();
48  void apply_pml_hx();
49  void apply_pml_hy();
50  void apply_pml_hz();
51 };
52 
53 } /* namespace core */
54 } /* namespace phoxonics */
55 
56 #endif /* ELECTROMAGPML1D_HPP_ */
Definition: CommonBase.hpp:14
void print_me() overridefinal
Definition: ElectroMagPml1D.cpp:28
Definition: ElectroMagPml1D.hpp:22
Definition: PmlBase.hpp:22
void apply_pml(std::shared_ptr< CellsBase > cells_base) overridefinal
Definition: ElectroMagPml1D.cpp:33
virtual void configure()
Definition: SimulationItemBase.cpp:21
virtual ~ElectroMagPml1D()
Definition: ElectroMagPml1D.cpp:19
ElectroMagPml1D()
Definition: ElectroMagPml1D.cpp:15