You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/CFDStruct/CFDStructDataManager/CFDStructDataSolverNumerica...

145 lines
3.2 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 求解器-数值方法
*/
#ifndef CFDSTRUCTDATASOLVERNUMERICALMETHODEMANAGER_H
#define CFDSTRUCTDATASOLVERNUMERICALMETHODEMANAGER_H
#include "CFDStructDataManager_global.h"
#include <CFDStructDataManagerBase.h>
class CUIConfig;
class CFDSTRUCTDATAMANAGER_EXPORT CFDStructDataSolverNumericalMethodManager : public CFDStructDataManagerBase {
Q_OBJECT
public:
explicit CFDStructDataSolverNumericalMethodManager(QObject *parent = nullptr);
~CFDStructDataSolverNumericalMethodManager();
CUIConfig *getParamUIConfig();
void saveDataToDom(rapidjson::Document &dom);
void readDataFromDom(rapidjson::Document &dom);
private:
// 生成Jameson的界面配置
CUIConfig *genJamesonModeUIConfig();
// 生成Roe界面配置
CUIConfig *genRoeModeUIConfig();
// 生成AUSMDY界面配置
CUIConfig *genAUSMDYModeUIConfig();
// 生成AUSMPWP界面配置
CUIConfig *genAUSMPWPModeUIConfig();
signals:
private:
// 时间离散部分的配置
CUIConfig *m_TimeDispersionGroupConfig;
// 初始化时间离散部分的配置
void initTimeDespersionGroupConfig();
// 通量格式
/**
* @brief m_fluxFormat
*
* 0. Jameson
* 1. Roe
* 2. AUSMDY
* 3. AUSMPWP
*/
int m_fluxFormat = 0;
// 二阶人工粘性
double m_secondOrderArtificialViscosity = 0.5;
// 四阶人工粘性
double m_fourthOrderArtificialViscosity = 0.5;
// 空间精度
/**
* @brief m_spaceAccuracy
0.一阶迎风
1.二阶迎风差分
2.二阶迎风偏置
3.三阶迎风偏置
*/
int m_spaceAccuracy = 2;
// 限制器
/**
* @brief m_limiter
* 0.none
* 1.Vanalbda
2.Minmod
*/
int m_limiter = 0;
// 时间格式
/**
* @brief m_timeFormat
* 0-隐式
* 1-隐式二阶差分
*
* ---------------上面是原来的---------------------
* ---------------下面是新的---------------------
* 在时间格式是*定常*的时候
* 0-隐式
* 1-显式
*
* 在时间格式是*非定常*的时候
* 0-隐式二阶差分
*/
int m_timeFormat = 0;
// 迭代方法
/**
* @brief m_iterationMethod
* 0-LUSGS
*
* ---------old----------
* ---------new-----------
* 选择为隐式或隐式二阶差分的时候,
* 仅有一个选项LUSGS在json中对应值为2
*
* 选择显式的时候
* 仅有一个选项五级龙格库塔在json中对应值为1
*
*/
int m_iterationMethod = 0;
// 松弛因子
double m_relaxationFactor = 0.5;
// 多重网格层数
int m_multigridLevels = 0;
// 循环类型
/**
* @brief m_cycleType
* 1-V循环
2-W循环
*/
int m_cycleType = 0;
// 粗网格CFL数
double m_coarseGridCFL = 1.0;
// 细网格CFL数
double m_fineGridCFL = 1.0;
// 湍流CFL数
double m_turbulentCFL = 1.0;
// 熵修正类型
/**
* @brief m_EntropyCorrectionType
* 0-Harten-Hyman
* 1-Harten-Yee
*
*/
int m_EntropyCorrectionType = 0;
// 收敛稳定化
int m_ConvergenceStabilization = 0;
};
#endif // CFDSTRUCTDATASOLVERNUMERICALMETHODMANAGER_H