120 lines
3.3 KiB
C++
120 lines
3.3 KiB
C++
#pragma once
|
||
|
||
#include"../Eigen/Dense"
|
||
|
||
#include<complex>
|
||
#include<string>
|
||
|
||
class Phy_WaveOpticsModel
|
||
{
|
||
public:
|
||
Phy_WaveOpticsModel();
|
||
|
||
void GetPhy();
|
||
|
||
int GetNbrPEC();
|
||
int GetPECDomain(int num);
|
||
|
||
int GetNbrPBC();
|
||
int GetSrcDomain(int num);
|
||
int GetDstDomain(int num);
|
||
std::complex<double> GetPBCPhi(int num);
|
||
|
||
int GetNbrPML();
|
||
int GetPMLEdge(int num);
|
||
void GetPMLDomain(Eigen::VectorXi& PMLDomain);
|
||
bool GetPML(int domain, int& PMLType, Eigen::VectorXd& PMLData);
|
||
bool GetPML(int domain, int& PMLType, Eigen::VectorXd& PMLData, double& lambda);
|
||
|
||
int GetNbrSBC();
|
||
int GetSBCDomain(int num);
|
||
int GetSBCType(int num);
|
||
void GetSBDir(int num, Eigen::Vector3d& dir);
|
||
void GetEinc(int num, std::string& Eincx, std::string& Eincy, std::string& Eincz);
|
||
|
||
int GetNbrBELE();
|
||
void GetBELE(Eigen::VectorXi& BELE);
|
||
int GetBELEDomain(int num);
|
||
void GetEb(std::string& Ebx, std::string& Eby, std::string& Ebz);
|
||
void GetCurlEb(std::string& curlEbx, std::string& curlEby, std::string& curlEbz);
|
||
|
||
int GetNbrElE();
|
||
int GetELEDomain(int num);
|
||
void GetE0(std::string& E0x, std::string& E0y, std::string& E0z,int num);
|
||
|
||
int GetNbrMAG();
|
||
int GetMAGDomain(int num);
|
||
void GetH0(std::string& H0x, std::string& H0y, std::string& H0z,int num);
|
||
|
||
int GetNbrSCD();
|
||
int GetSCDDomain(int num);
|
||
void GetJ0(std::string& J0x, std::string& J0y, std::string& J0z,int num);
|
||
|
||
int GetNbrMPD();
|
||
void GetMPD(Eigen::VectorXi& MPD);
|
||
void GetMPDData(Eigen::MatrixXd& m);
|
||
|
||
int GetNbrEPD();
|
||
void GetEPD(Eigen::VectorXi& EPD);
|
||
void GetEPDData(Eigen::MatrixXd& p);
|
||
|
||
int GetNbrPortinc();
|
||
int GetNbrPortout();
|
||
int GetPortincDomain(int num);
|
||
int GetPortoutDomain(int num);
|
||
void GetPortEinc(std::string& Eincx, std::string& Eincy, std::string& Eincz);
|
||
void GetPortEout(std::string& Eoutx, std::string& Eouty, std::string& Eoutz);
|
||
void GetPortEincCurl(std::string& EincCurlx, std::string& EincCurly, std::string& EincCurlz);
|
||
void GetPortEoutCurl(std::string& EoutCurlx, std::string& EoutCurly, std::string& EoutCurlz);
|
||
|
||
int GetBeamState();
|
||
void GetBeamDir(double& kx,double& ky);
|
||
|
||
void Test_ReadData(std::string str);
|
||
|
||
private:
|
||
Eigen::VectorXi _mPMC;//n*1 <20><><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD>
|
||
|
||
Eigen::VectorXi _mPEC;//n*1 <20><><EFBFBD><EFBFBD><EFBFBD>絼<EFBFBD><E7B5BC>
|
||
|
||
Eigen::MatrixXi _mPBC;//n*2 <20><><EFBFBD>ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Eigen::VectorXcd _mPBCData;//n*1
|
||
|
||
Eigen::VectorXi _mPML;//n*1 <20><><EFBFBD><EFBFBD>ƥ<EFBFBD><C6A5><EFBFBD><EFBFBD>
|
||
Eigen::VectorXi _mPMLType;
|
||
Eigen::VectorXi _mPMLEdge;
|
||
double _mPMLLda;//<2F><><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>
|
||
Eigen::MatrixXd _mPMLData;//n*6 x0 1/dx y0 1/dy z0 1/dz <20><>d<EFBFBD><64>1/d=0
|
||
|
||
Eigen::MatrixXi _mSBC;//n*2 ɢ<><C9A2><EFBFBD>߽<EFBFBD><DFBD><EFBFBD><EFBFBD><EFBFBD> 0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1Ϊ<31><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Eigen::MatrixXd _mSBCDir; //n*3
|
||
std::string* _mEincx, * _mEincy, * _mEincz;
|
||
|
||
Eigen::VectorXi _mELE;//n*1 ǿ<>ӵ糡
|
||
std::string* _mE0x, *_mE0y, *_mE0z;
|
||
|
||
Eigen::VectorXi _mMAG;//n*1 ǿ<>Ӵų<D3B4>
|
||
std::string* _mH0x, *_mH0y, *_mH0z;
|
||
|
||
Eigen::VectorXi _mSCD;//n*1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܶ<EFBFBD>
|
||
std::string* _mJ0x, *_mJ0y, *_mJ0z;
|
||
|
||
Eigen::VectorXi _mMPD; //n*3 <20><>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>
|
||
Eigen::MatrixXd _mMPDData; //n*3
|
||
|
||
Eigen::VectorXi _mEPD; //n*3 <20><>ż<EFBFBD><C5BC><EFBFBD><EFBFBD>
|
||
Eigen::MatrixXd _mEPDData; //n*3
|
||
|
||
Eigen::VectorXi _mBELE; //n*1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
std::string _mEbx, _mEby, _mEbz;
|
||
std::string _mcurlEbx, _mcurlEby, _mcurlEbz;
|
||
|
||
Eigen::VectorXi _mPortinc;//n*1 <20>˿ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
Eigen::VectorXi _mPortout;//n*1 <20>˿ڱ߽<DAB1><DFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
std::string* _mPortEinc, * _mPortEout, * _mPortEincCurl, * _mPortEoutCurl; //<2F><><EFBFBD>䳡<EFBFBD><E4B3A1><EFBFBD><EFBFBD><EFBFBD>䳡<EFBFBD><E4B3A1><EFBFBD><EFBFBD>
|
||
|
||
int _mBeam = 0;//0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD> 1Ϊ<31><CEAA><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
||
double _mkx = 0.;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>kx
|
||
double _mky = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ky
|
||
};
|