#pragma once #include #include struct FemInput { //物理场 int FemType;//有限元类型 0为本征模式问题,1为本征频率问题,2为激励问题,根据选择求解问题类型决定 int EletricType;//求解场类型 0为电场,1为散射场,默认为0 int NbrBoundary;//边界数目 由几何决定 std::vector BoundaryFlag;//边界对应边界条件 0为完美磁导体 1为完美电导体 2为散射边界条件 3为电场,默认为0 /* std::vector E0x; //边界条件-电场 x分量 FemType=2时才存在,默认为0 std::vector E0y; //边界条件-电场 y分量 FemType=2时才存在,默认为0 std::vector 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 DomainOfEb; //背景场-区域 ElectricType=1时开启,默认为所有区域索引 */ //材料 int NbrDomain; //区域数目 std::vector epsilonr;//相对介电常数 数值默认为1 std::vector mur;//相对磁导率 数值默认为1 std::vector 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; //有限元输出文件夹 };