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.
877 lines
66 KiB
C++
877 lines
66 KiB
C++
#include "CFDStructDataSolverNumericalMethodManager.h"
|
|
#include "CUIProperty/CUIConfig.h"
|
|
#include "CFDStructMain/CFDStructDefine.h"
|
|
#include "CFDStructSigsCenter.h"
|
|
|
|
CFDStructDataSolverNumericalMethodManager::CFDStructDataSolverNumericalMethodManager(QObject *parent) : CFDStructDataManagerBase(parent)
|
|
{
|
|
m_uiConfig = nullptr;
|
|
}
|
|
|
|
CFDStructDataSolverNumericalMethodManager::~CFDStructDataSolverNumericalMethodManager()
|
|
{
|
|
}
|
|
|
|
CUIConfig *CFDStructDataSolverNumericalMethodManager::getParamUIConfig()
|
|
{
|
|
if (m_fluxFormat == 0)
|
|
return this->genJamesonModeUIConfig();
|
|
if (m_fluxFormat == 1)
|
|
return this->genRoeModeUIConfig();
|
|
if (m_fluxFormat == 2)
|
|
return this->genAUSMDYModeUIConfig();
|
|
if (m_fluxFormat == 3)
|
|
return this->genAUSMPWPModeUIConfig();
|
|
return this->genRoeModeUIConfig();
|
|
}
|
|
|
|
void CFDStructDataSolverNumericalMethodManager::saveDataToDom(rapidjson::Document &dom)
|
|
{
|
|
// jsonAdd(dom,m_fluxFormat)
|
|
// jsonAdd(dom,m_secondOrderArtificialViscosity,{region[0] numericMethod numMethodParm twojamson});
|
|
|
|
//TODO 时间格式,会随定常和非定常变化
|
|
//TODO 迭代方法,会随定常和非定常变化
|
|
//TODO 熵修正类型,未确定
|
|
}
|
|
|
|
CUIConfig *CFDStructDataSolverNumericalMethodManager::genJamesonModeUIConfig()
|
|
{
|
|
return new CUIConfig({
|
|
{"type", "Widget"},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 空间离散
|
|
{"name", tr("Spatial discretization")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 通量格式
|
|
{"name", tr("Flux format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
{"semaphore", (int)SolutionAnalysisModuleProperty::NUumerical_Methods},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Jameson
|
|
{"name", "Jameson"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Roe
|
|
{"name", "Roe"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMDY
|
|
{"name", "AUSMDY"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMPWP
|
|
{"name", "AUSMPWP"},
|
|
}),
|
|
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 二阶人工粘性
|
|
{"name", tr("Second-order artificial viscosity")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_secondOrderArtificialViscosity)},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 四阶人工粘性
|
|
{"name", tr("Fourth order artificial viscosity")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_fourthOrderArtificialViscosity)},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 空间精度
|
|
{"name", tr("Spatial accuracy")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_spaceAccuracy)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 一阶迎风
|
|
{"name", tr("First order windward")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风差分
|
|
{"name", tr("Second-order upwind difference")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风偏置
|
|
{"name", tr("Second-order windward bias")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 三阶迎风偏置
|
|
{"name", tr("Third order windward bias")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 限制器
|
|
{"name", tr("limiter")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_limiter)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // None
|
|
{"name", "None"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Vanalbda
|
|
{"name", "Vanalbda"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Minmod
|
|
{"name", "Minmod"},
|
|
}),
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 时间离散
|
|
{"name", tr("Time dispersion")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 时间格式
|
|
{"name", tr("Time format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_timeFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式
|
|
{"name", tr("Implicit")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式二阶差分
|
|
{"name", tr("Implicit second-order difference")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 迭代方法
|
|
{"name", tr("Iterative method")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_iterationMethod)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // LUSGS
|
|
{"name", tr("LUSGS")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 松弛因子
|
|
{"name", tr("Relaxation factor")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_relaxationFactor)},
|
|
},
|
|
{}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 加速收敛
|
|
{"name", tr("Accelerate convergence")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 多重网格层数
|
|
{"name", tr("Multi grid layers")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_multigridLevels)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "1"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "2"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "3"},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 循环类型
|
|
{"name", tr("Loop type")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_cycleType)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // V循环
|
|
{"name", tr("V cycle")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // W循环
|
|
{"name", tr("W cycle")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 粗网格CFL数
|
|
{"name", tr("Rough grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_coarseGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 细网格CFL数
|
|
{"name", tr("Fine grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_fineGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 湍流CFL数
|
|
{"name", tr("Turbulent CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_turbulentCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "CheckBox"},
|
|
{"name", tr("Convergence Stabilization")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_ConvergenceStabilization)},
|
|
}),
|
|
}),
|
|
});
|
|
|
|
return nullptr;
|
|
}
|
|
|
|
CUIConfig *CFDStructDataSolverNumericalMethodManager::genRoeModeUIConfig()
|
|
{
|
|
|
|
return new CUIConfig({
|
|
{"type", "Widget"},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 空间离散
|
|
{"name", tr("Spatial discretization")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 通量格式
|
|
{"name", tr("Flux format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
{"semaphore", (int)SolutionAnalysisModuleProperty::NUumerical_Methods},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Jameson
|
|
{"name", "Jameson"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Roe
|
|
{"name", "Roe"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMDY
|
|
{"name", "AUSMDY"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMPWP
|
|
{"name", "AUSMPWP"},
|
|
}),
|
|
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 熵修正类型
|
|
{"name", tr("Entropy correction type")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_EntropyCorrectionType)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Harten-Hyman
|
|
{"name", "Harten-Hyman"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Harten-Yee
|
|
{"name", "Harten-Yee"},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 空间精度
|
|
{"name", tr("Spatial accuracy")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_spaceAccuracy)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 一阶迎风
|
|
{"name", tr("First order windward")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风差分
|
|
{"name", tr("Second-order upwind difference")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风偏置
|
|
{"name", tr("Second-order windward bias")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 三阶迎风偏置
|
|
{"name", tr("Third order windward bias")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 限制器
|
|
{"name", tr("limiter")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_limiter)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // None
|
|
{"name", "None"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Vanalbda
|
|
{"name", "Vanalbda"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Minmod
|
|
{"name", "Minmod"},
|
|
}),
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 时间离散
|
|
{"name", tr("Time dispersion")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 时间格式
|
|
{"name", tr("Time format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_timeFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式
|
|
{"name", tr("Implicit")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式二阶差分
|
|
{"name", tr("Implicit second-order difference")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 迭代方法
|
|
{"name", tr("Iterative method")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_iterationMethod)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // LUSGS
|
|
{"name", tr("LUSGS")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 松弛因子
|
|
{"name", tr("Relaxation factor")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_relaxationFactor)},
|
|
},
|
|
{}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 加速收敛
|
|
{"name", tr("Accelerate convergence")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 多重网格层数
|
|
{"name", tr("Multi grid layers")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_multigridLevels)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "1"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "2"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "3"},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 循环类型
|
|
{"name", tr("Loop type")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_cycleType)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // V循环
|
|
{"name", tr("V cycle")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // W循环
|
|
{"name", tr("W cycle")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 粗网格CFL数
|
|
{"name", tr("Rough grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_coarseGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 细网格CFL数
|
|
{"name", tr("Fine grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_fineGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 湍流CFL数
|
|
{"name", tr("Turbulent CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_turbulentCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "CheckBox"},
|
|
{"name", tr("Convergence Stabilization")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_ConvergenceStabilization)},
|
|
}),
|
|
}),
|
|
});
|
|
return nullptr;
|
|
}
|
|
|
|
CUIConfig *CFDStructDataSolverNumericalMethodManager::genAUSMDYModeUIConfig()
|
|
{
|
|
return new CUIConfig({
|
|
{"type", "Widget"},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 空间离散
|
|
{"name", tr("Spatial discretization")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 通量格式
|
|
{"name", tr("Flux format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
{"semaphore", (int)SolutionAnalysisModuleProperty::NUumerical_Methods},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Jameson
|
|
{"name", "Jameson"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Roe
|
|
{"name", "Roe"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMDY
|
|
{"name", "AUSMDY"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMPWP
|
|
{"name", "AUSMPWP"},
|
|
}),
|
|
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 空间精度
|
|
{"name", tr("Spatial accuracy")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_spaceAccuracy)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 一阶迎风
|
|
{"name", tr("First order windward")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风差分
|
|
{"name", tr("Second-order upwind difference")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风偏置
|
|
{"name", tr("Second-order windward bias")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 三阶迎风偏置
|
|
{"name", tr("Third order windward bias")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 限制器
|
|
{"name", tr("limiter")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_limiter)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // None
|
|
{"name", "None"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Vanalbda
|
|
{"name", "Vanalbda"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Minmod
|
|
{"name", "Minmod"},
|
|
}),
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 时间离散
|
|
{"name", tr("Time dispersion")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 时间格式
|
|
{"name", tr("Time format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_timeFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式
|
|
{"name", tr("Implicit")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式二阶差分
|
|
{"name", tr("Implicit second-order difference")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 迭代方法
|
|
{"name", tr("Iterative method")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_iterationMethod)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // LUSGS
|
|
{"name", tr("LUSGS")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 松弛因子
|
|
{"name", tr("Relaxation factor")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_relaxationFactor)},
|
|
},
|
|
{}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 加速收敛
|
|
{"name", tr("Accelerate convergence")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 多重网格层数
|
|
{"name", tr("Multi grid layers")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_multigridLevels)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "1"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "2"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "3"},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 循环类型
|
|
{"name", tr("Loop type")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_cycleType)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // V循环
|
|
{"name", tr("V cycle")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // W循环
|
|
{"name", tr("W cycle")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 粗网格CFL数
|
|
{"name", tr("Rough grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_coarseGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 细网格CFL数
|
|
{"name", tr("Fine grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_fineGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 湍流CFL数
|
|
{"name", tr("Turbulent CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_turbulentCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "CheckBox"},
|
|
{"name", tr("Convergence Stabilization")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_ConvergenceStabilization)},
|
|
}),
|
|
}),
|
|
});
|
|
return nullptr;
|
|
}
|
|
|
|
CUIConfig *CFDStructDataSolverNumericalMethodManager::genAUSMPWPModeUIConfig()
|
|
{
|
|
return new CUIConfig({
|
|
{"type", "Widget"},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 空间离散
|
|
{"name", tr("Spatial discretization")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 通量格式
|
|
{"name", tr("Flux format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
{"semaphore", (int)SolutionAnalysisModuleProperty::NUumerical_Methods},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_fluxFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Jameson
|
|
{"name", "Jameson"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Roe
|
|
{"name", "Roe"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMDY
|
|
{"name", "AUSMDY"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // AUSMPWP
|
|
{"name", "AUSMPWP"},
|
|
}),
|
|
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 空间精度
|
|
{"name", tr("Spatial accuracy")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_spaceAccuracy)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 一阶迎风
|
|
{"name", tr("First order windward")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风差分
|
|
{"name", tr("Second-order upwind difference")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 二阶迎风偏置
|
|
{"name", tr("Second-order windward bias")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 三阶迎风偏置
|
|
{"name", tr("Third order windward bias")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 限制器
|
|
{"name", tr("limiter")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_limiter)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // None
|
|
{"name", "None"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Vanalbda
|
|
{"name", "Vanalbda"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // Minmod
|
|
{"name", "Minmod"},
|
|
}),
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 时间离散
|
|
{"name", tr("Time dispersion")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 时间格式
|
|
{"name", tr("Time format")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_timeFormat)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式
|
|
{"name", tr("Implicit")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // 隐式二阶差分
|
|
{"name", tr("Implicit second-order difference")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 迭代方法
|
|
{"name", tr("Iterative method")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_iterationMethod)},
|
|
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // LUSGS
|
|
{"name", tr("LUSGS")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 松弛因子
|
|
{"name", tr("Relaxation factor")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_relaxationFactor)},
|
|
},
|
|
{}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "GroupBox"}, // 加速收敛
|
|
{"name", tr("Accelerate convergence")},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 多重网格层数
|
|
{"name", tr("Multi grid layers")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_multigridLevels)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "1"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "2"},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"},
|
|
{"name", "3"},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "ComboBox"}, // 循环类型
|
|
{"name", tr("Loop type")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_cycleType)},
|
|
},
|
|
{
|
|
new CUIConfig({
|
|
{"type", "Item"}, // V循环
|
|
{"name", tr("V cycle")},
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "Item"}, // W循环
|
|
{"name", tr("W cycle")},
|
|
}),
|
|
}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 粗网格CFL数
|
|
{"name", tr("Rough grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_coarseGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 细网格CFL数
|
|
{"name", tr("Fine grid CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_fineGridCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "LineEdit"}, // 湍流CFL数
|
|
{"name", tr("Turbulent CFL number")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_DOUBLE},
|
|
{"value_origin", QVA_GLOBAL(&m_turbulentCFL)},
|
|
},
|
|
{}),
|
|
new CUIConfig({
|
|
{"type", "CheckBox"},
|
|
{"name", tr("Convergence Stabilization")},
|
|
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
|
|
{"value_origin", QVA_GLOBAL(&m_ConvergenceStabilization)},
|
|
}),
|
|
}),
|
|
});
|
|
return nullptr;
|
|
}
|