#pragma once #ifndef FARFIELDFILECLASS_H #define FARFIELDFILECLASS_H #include "referenceHeader.h" #include "FEKOBaseToolClass.h" namespace FEKOBase { // // 参数 altair feko user guide 2018.1 // 章节 A-10 summary of feko file formats // const QString FEKOFARFIELDSPLITCHAT = u8" "; enum FEKOFARFIELDRESULTTYPE { GAIN, // 增益 DIRECTIVITY,// 电场 RCS,// 后向散射系数 FARFIELDVALUES,// 远场值 FEKOFARFIELDRESULTTYPEUNKOWN }; FEKOBase::FEKOFARFIELDRESULTTYPE FEKOFARFIELDRESULTTYPEString2Enum(QString str); QString QString2FEKOFARFIELDRESULTTYPE(FEKOBase::FEKOFARFIELDRESULTTYPE mode); //========================================================== // FEKO 仿真结果文件 farfield 文件 ffe // 解析ffe 文件 //========================================================== struct FEKOFarFieldFEKOFarFieldData // 仿真结果的数据项 ,行 { double X=0;// cartesian coordinate system double Y=0; double Z=0; double U=0; // cartesian coordinate system double V=0; double radius=0; // nearfield double theta=0; // spherical coordinate system double phi=0; double re_Er=0; double im_Er=0; double re_Etheta=0; // theta double im_Etheta=0; double re_Ephi=0; // phi double im_Ephi=0; double re_Ex=0;// X double im_Ex=0; double re_Ey=0; //y double im_Ey=0; double re_Ez=0; //z double im_Ez=0; double gain_Theta=0; // gain in spherical coordinate system double gain_Phi=0; double gain_Total=0; double directivity_Theta=0; // directivity in spherical coordinate system double directivity_Phi = 0; double directivity_total = 0; double RCS_theta = 0;// RCS in spherical coordinate system double RCS_phi = 0; double RCS_total = 0; }; class FEKOFARFIELDFEKODATABLOCK { // 数据块 public: FEKOFARFIELDFEKODATABLOCK(); ~FEKOFARFIELDFEKODATABLOCK(); public: // 变量 QString configurationName; QString requestName; double frequency; FEKOBase::FEKOCoordinateSystem coordinateSystem; // FEKOBase::FEKOFARFIELDRESULTTYPE resultType; long thetaSamples; long phiSamples; long USamples; long VSamples; CartesianCoordinates Origin; // 坐标系原点 long headerLines; QList dataList; public: // 相关函数 // 解析文件 int paraseFEKOFarFieldDataBlock(const QString& blockstr); // 解析数据块 int paraseFEKOFarFieldDataBlockFromList(QList& blockstr); // 解析数据块 QString normalizationHeaderString(QString headerstr);// 对数据块头名称进行标准化 // 保存文件 QString saveFEKOFarFieldDataBlock(); // 生成数据块字符串 QString saveFEKOFarFieldDataBlock_Gain(); // 根据类型生成数据块字符串 QString saveFEKOFarFieldDataBlock_Directivity(); QString saveFEKOFarFieldDataBlock_RCS(); QString saveFEKOFarFieldDataBlock_FarFieldValues(); }; class FEKOFarFieldFileClass: public QObject { // Q_OBJECT public: FEKOFarFieldFileClass(); ~FEKOFarFieldFileClass(); public: QString FileType; QString FileFormat; QString Sourcestr; QString Datestr; QList dataBlockList; public: void parseFarFieldFile(const QString& fileName); void outputToFile(const QString& fileName); }; //========================================================== // FEKO 仿真结果文件 nearfield 文件 efe // 解析efe 文件, //========================================================== } #endif // ! FARFIELDFILECLASS_H