56 lines
2.3 KiB
C++
56 lines
2.3 KiB
C++
#pragma once
|
||
#include<vector>
|
||
#include<string>
|
||
|
||
struct FemInput
|
||
{
|
||
//物理场
|
||
int FemType;//有限元类型 0为本征模式问题,1为本征频率问题,2为激励问题,根据选择求解问题类型决定
|
||
int EletricType;//求解场类型 0为电场,1为散射场,默认为0
|
||
int NbrBoundary;//边界数目 由几何决定
|
||
std::vector<int> BoundaryFlag;//边界对应边界条件 0为完美磁导体 1为完美电导体 2为散射边界条件 3为电场,默认为0
|
||
/*
|
||
std::vector<double> E0x; //边界条件-电场 x分量 FemType=2时才存在,默认为0
|
||
std::vector<double> E0y; //边界条件-电场 y分量 FemType=2时才存在,默认为0
|
||
std::vector<double> E0z; //边界条件-电场 z分量 FemType=2时才存在,默认为0
|
||
std::string Eincx; //边界条件-散射边界入射电场 x分量 FemType=2时才存在,默认为0
|
||
std::string Eincy; //边界条件-散射边界入射电场 y分量 FemType=2时才存在,默认为0
|
||
std::string Eincz; //边界条件-散射边界入射电场 z分量 FemType=2时才存在,默认为0
|
||
double nx;//边界条件-散射边界入射电场 x方向 FemType=2时才存在,默认为0
|
||
double ny;//边界条件-散射边界入射电场 y方向 FemType=2时才存在,默认为0
|
||
std::string Ebx; //背景场-电场 x分量 ElectricType=1时开启,默认为0
|
||
std::string Eby; //背景场-电场 y分量 ElectricType=1时开启,默认为0
|
||
std::string Ebz; //背景场-电场 z分量 ElectricType=1时开启,默认为0
|
||
int NbrDomainOfEb; //背景场-区域数目 ElectricType=1时开启,默认为总区域数目
|
||
std::vector<int> DomainOfEb; //背景场-区域 ElectricType=1时开启,默认为所有区域索引
|
||
*/
|
||
//材料
|
||
int NbrDomain; //区域数目
|
||
std::vector<double> epsilonr;//相对介电常数 数值默认为1
|
||
std::vector<double> mur;//相对磁导率 数值默认为1
|
||
std::vector<double> sigma;//电导率 数值默认为0
|
||
|
||
//网格数据
|
||
std::string MeshFile; //网格文件所在文件夹
|
||
|
||
//求解器
|
||
//本征求解器{分为 本征模式求解器 和 本征频率求解器}
|
||
int NbrMode;//模式数目 默认为6
|
||
int searchType;//搜索方式 0为附近搜索,1为更大实部,2为更小实部,默认为0
|
||
double searchValue;//搜索值 本征模式时默认为1,本征频率时默认为3e8
|
||
int solverType;//求解器类型 0为Krylov schur,默认为0
|
||
/*
|
||
int maxIterNum;//最大迭代次数 默认值40
|
||
double tol;//误差 默认为le-6
|
||
int tolType;//误差类型 o为绝对值 1为相对值,默认为0
|
||
//本征模式求解特有
|
||
double lambda0;//波长 默认为1.55e-6
|
||
//波长域求解器
|
||
*/
|
||
double lambda;//波长 默认为1.55e-6
|
||
|
||
|
||
//输出
|
||
std::string OutFile; //有限元输出文件夹
|
||
|
||
}; |