85 lines
2.2 KiB
C++
85 lines
2.2 KiB
C++
#pragma once
|
|
|
|
#include<string>
|
|
#include<complex>
|
|
#include"../Eigen/Dense"
|
|
#include"../common/define.h"
|
|
|
|
using namespace std;
|
|
|
|
|
|
class Material
|
|
{
|
|
public:
|
|
Material();
|
|
~Material();
|
|
|
|
void SetName(string name);
|
|
void SetDomain(int nbrDomain,int domain[]);
|
|
void SetEpsr(complex<double> value);
|
|
void SetEpsr(complex<double> value1, complex<double> value2, complex<double> value3);
|
|
void SetMur(complex<double> value);
|
|
void SetMur(complex<double> value1, complex<double> value2, complex<double> value3);
|
|
void SetSimga(double value);
|
|
void SetSimga(double value1, double value2, double value3);
|
|
void SetChihe(complex<double> value1, complex<double> value2, complex<double> value3);
|
|
void SetChieh(complex<double> value1, complex<double> value2, complex<double> value3);
|
|
void SetNK(double n,double k);
|
|
|
|
string GetName();
|
|
bool IsContainDomain(int domainTag);
|
|
Eigen::Matrix3cd GetEpsr();
|
|
Eigen::Matrix3cd GetMur();
|
|
Eigen::Matrix3d GetSigma();
|
|
Eigen::Matrix3cd GetChihe();
|
|
Eigen::Matrix3cd GetChieh();
|
|
double GetN();
|
|
double GetK();
|
|
|
|
bool IsReal();
|
|
|
|
private:
|
|
string _mName = "null";//材料名
|
|
int _mNbrDomain = 0;//区域数目
|
|
int* _mDomain = NULL;//区域
|
|
|
|
Eigen::Matrix3cd _mEpsr;//相对介电常数
|
|
Eigen::Matrix3cd _mMur;//相对磁导率
|
|
Eigen::Matrix3d _mSigma;//电导率
|
|
Eigen::Matrix3cd _mChihe;//磁电耦合常数chi_he
|
|
Eigen::Matrix3cd _mChieh;//磁电耦合常数chi_eh
|
|
double _mN;//折射率实部
|
|
double _mK;//折射率虚部
|
|
};
|
|
|
|
class MaterialLib
|
|
{
|
|
public:
|
|
~MaterialLib();
|
|
|
|
void GetMat();
|
|
|
|
Eigen::Matrix3cd GetEpsr(int domain);
|
|
Eigen::Matrix3cd GetMur(int domain);
|
|
Eigen::Matrix3d GetSigma(int domain);
|
|
Eigen::Matrix3cd GetChihe(int domain);
|
|
Eigen::Matrix3cd GetChieh(int domain);
|
|
double GetN(int domain);
|
|
double GetK(int domain);
|
|
|
|
bool IsReal();
|
|
|
|
void Test_ReadData(string str);
|
|
private:
|
|
void SetNumberMat(int number);
|
|
void SetMat(int num, string name, int nbrDomain, int* domain, int matType, complex<double>* epsr,
|
|
complex<double>* mur, double* sigma, complex<double>* chihe, complex<double>* chieh);
|
|
void SetMat(int num, string name, int nbrDomain, int domain[], int matType, double n, double k);
|
|
int GetNumberMat(int domain);
|
|
|
|
int _mNbrMat = 0; //材料数目
|
|
Material* _mMat = NULL; //材料
|
|
};
|
|
|
|
|