LAMPCAE/src/PluginWBFZExchangePlugin/FEKOFarFieldFileClass.h

139 lines
3.7 KiB
C++

#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<FEKOBase::FEKOFarFieldFEKOFarFieldData> dataList;
public: // 相关函数
// 解析文件
int paraseFEKOFarFieldDataBlock(const QString& blockstr); // 解析数据块
int paraseFEKOFarFieldDataBlockFromList(QList<QString>& 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<FEKOBase::FEKOFARFIELDFEKODATABLOCK> dataBlockList;
public:
void parseFarFieldFile(const QString& fileName);
void outputToFile(const QString& fileName);
};
//==========================================================
// FEKO 仿真结果文件 nearfield 文件 efe
// 解析efe 文件,
//==========================================================
}
#endif // ! FARFIELDFILECLASS_H