00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef _DIPOLE_SOURCE3D_H_
00032 #define _DIPOLE_SOURCE3D_H_
00033
00034 #include "Source3D.h"
00035 #include "Complex.h"
00036 #include "CartesianNode3D.h"
00037 #include "Location3D.h"
00038 #include <vector>
00039
00040 namespace FDDlib {
00041
00048 class DipoleSource3D : public Source3D {
00049 protected:
00050
00052 Location3D location1_;
00053
00055 double int1_;
00057 double phase1_;
00058
00060 Location3D location2_;
00061
00063 double int2_;
00065 double phase2_;
00066
00067 public:
00068
00077 DipoleSource3D(const Location3D& location1, double int1, double phase1,
00078 const Location3D& location2, double int2, double phase2);
00079
00080
00091 DipoleSource3D(const Location3D& location1, double int1, double phase1,
00092 const Location3D& location2, double int2, double phase2,
00093 const std::vector<double> &frequencies);
00094
00103 void set(const Location3D& location1, double int1, double phase1,
00104 const Location3D& location2, double int2, double phase2);
00105
00114 void getPoles(Location3D& location1, double& int1, double& phase1,
00115 Location3D& location2, double& int2, double& phase2) const;
00116
00121 void setLocations(const Location3D& location1,
00122 const Location3D& location2);
00123
00128 void getLocations(Location3D& location1,
00129 Location3D& location2) const;
00130
00135 void getIntensities(double &int1, double& int2) const;
00136
00141 void setIntensities(double int1, double int2);
00142
00147 void getPhases(double& phase1, double& phase2) const;
00148
00153 void setPhases(double phase1, double phase2);
00154
00160 Complex<double> getRightHandSide(const CartesianNode3D& node) const;
00161
00162 };
00163
00164 }
00165
00166 #endif