XIAN-FEM-2026June/opticsfem-master/phy/Phy_Base.h

120 lines
3.3 KiB
C++
Raw Blame History

#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><30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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><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
};