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/CFDStructDataSolverKvislMan...

599 lines
39 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.

#include "CFDStructDataSolverKvislManager.h"
#include "CUIProperty/CUIConfig.h"
#include "CFDStructMain/CFDStructDefine.h"
#include "CFDStructSigsCenter.h"
CFDStructDataSolverKvislManager::CFDStructDataSolverKvislManager(QObject *parent) : CFDStructDataManagerBase(parent)
{
m_uiConfig = nullptr;
connect(m_cuiSigsCenter, &CUISigsCenter::sig_cuiPropertyChanged, this, [=](int semaphore)
{
if (semaphore == (int)SolutionAnalysisModuleProperty::Viscosity_Model) {
emit CFDStructSigsCenter::getInstance()->sig_solverKvislDataChanged();
} });
}
CFDStructDataSolverKvislManager::~CFDStructDataSolverKvislManager()
{
}
CUIConfig *CFDStructDataSolverKvislManager::getParamUIConfig()
{
if (m_Model == 0)
{
return genInviscidUIConfig();
}
if (m_Model == 1)
{
return genLaminarUIConfig();
}
if (m_Model == 2)
{
if (m_RNSModel == 0)
return genRANSSAUIConfig();
if (m_RNSModel == 1)
return genRANSUIMentersConfig();
if (m_RNSModel == 2)
return genRANSKEUIConfig();
return genRANSSAUIConfig();
}
if (m_Model == 3)
{
m_SAType = 0;
if (m_RNSModel == 0)
return genDESSAUIConfig();
if (m_RNSModel == 1)
return genDESMentersUIConfig();
if (m_RNSModel == 2)
m_RNSModel = 0;
return genDESSAUIConfig();
}
if (m_Model == 4)
{
m_SAType = 0;
if (m_RNSModel == 0)
return genCLESUIConfig();
if (m_RNSModel == 1)
return genCLESMentersUIConfig();
if (m_RNSModel == 2)
m_RNSModel = 0;
return genCLESUIConfig();
}
return this->genInviscidUIConfig();
}
void CFDStructDataSolverKvislManager::saveDataToDom(rapidjson::Document &dom)
{
if (m_Model == 0)
{
jsonAdd(dom, 0, {"region", 0, "solver", "turbModel", "type"});
}
else if (m_Model == 1)
{
jsonAdd(dom, 1, {"region", 0, "solver", "turbModel", "type"});
}
else if (m_Model == 2)
{
jsonAdd(dom, 2, {"region", 0, "solver", "turbModel", "type"});
}
else if (m_Model == 3)
{
if (m_DESModel == 0)
{
jsonAdd(dom, 3, {"region", 0, "solver", "turbModel", "type"});
}
else if (m_DESModel == 1)
{
jsonAdd(dom, 4, {"region", 0, "solver", "turbModel", "type"});
}
else if (m_DESModel == 2)
{
jsonAdd(dom, 5, {"region", 0, "solver", "turbModel", "type"});
}
}
else if (m_Model == 4)
{
jsonAdd(dom, 7, {"region", 0, "solver", "turbModel", "type"});
}
jsonAdd(dom, m_RNSModel, {"region", 0, "solver", "turbModel", "RANS", "type"});
if (m_RNSModel == 0)
{
jsonAdd(dom, m_SAType, {"region", 0, "solver", "turbModel", "RANS", "subType"});
}
else if (m_RNSModel == 1)
{
jsonAdd(dom, m_kwType, {"region", 0, "solver", "turbModel", "RANS", "subType"});
}
else if (m_RNSModel == 2)
{
jsonAdd(dom, m_keType, {"region", 0, "solver", "turbModel", "RANS", "subType"});
}
}
CUIConfig *CFDStructDataSolverKvislManager::genInviscidUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})})});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genLaminarUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})})});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genRANSSAUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:κ-ε(两方程)
{"name", tr("κ-ε")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:S-A类型
{"name", tr("S-A Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_SAType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:standard
{"name", tr("standard")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Edwards
{"name", tr("Edwards")}})}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genRANSUIMentersConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:κ-ε(两方程)
{"name", tr("κ-ε")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:κ-ω类型
{"name", tr("κ-ω Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_kwType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:standard
{"name", tr("standard")}}),
}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genRANSKEUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:κ-ε(两方程)
{"name", tr("κ-ε")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:κ-ε类型
{"name", tr("κ-ε Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_keType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:standard
{"name", tr("standard")}}),
}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genDESSAUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:DES
{"name", tr("DES Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_DESModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:DES
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:DDES两方程
{"name", tr("DDES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:IDDES两方程
{"name", tr("IDDES")}}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")}}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:S-A类型
{"name", tr("S-A Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_SAType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:standard
{"name", tr("standard")}}),
}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genDESMentersUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")}})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:DES
{"name", tr("DES Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_DESModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:DES
{"name", tr("DES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:DDES两方程
{"name", tr("DDES")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:IDDES两方程
{"name", tr("IDDES")}}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")}}),
new CUIConfig({{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")}}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:κ-ω类型
{"name", tr("κ-ω Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_kwType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({{"type", "RadioButton"}, // 按钮:SST
{"name", tr("SST")}}),
}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genCLESUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({
{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")},
})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({
{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")},
}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:S-A类型
{"name", tr("S-A Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_SAType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({
{"type", "RadioButton"}, // 按钮:standard
{"name", tr("standard")},
}),
// new CUIConfig({
// {"type", "RadioButton"}, // 按钮:Edwards
// {"name", tr("Edwards")},
// }),
}),
});
return nullptr;
}
CUIConfig *CFDStructDataSolverKvislManager::genCLESMentersUIConfig()
{
return new CUIConfig(
{{"type", "Widget"}}, {
new CUIConfig({
{"type", "RadioComponent"}, // 组:模型
{"name", tr("Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_Model)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{new CUIConfig({
{"type", "RadioButton"}, // 按钮:无粘
{"name", tr("Inviscid")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:层流
{"name", tr("Laminar")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:雷诺平均
{"name", tr("RANS")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:分离涡模拟
{"name", tr("DES")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:约束大涡模型
{"name", tr("CLES")},
})}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:RANS模型
{"name", tr("RANS Model")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_RNSModel)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({
{"type", "RadioButton"}, // :S-A()
{"name", tr("S-A")},
}),
new CUIConfig({
{"type", "RadioButton"}, // 按钮:Menters's κ-ω(两方程)
{"name", tr("Menters's κ-ω")},
}),
}),
new CUIConfig({
{"type", "RadioComponent"}, // 组:κ-ω类型
{"name", tr("κ-ω Type")},
{"widget", "GroupBox"},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_kwType)},
{"semaphore", (int)SolutionAnalysisModuleProperty::Viscosity_Model},
},
{
new CUIConfig({
{"type", "RadioButton"}, // 按钮:SST
{"name", tr("SST")},
}),
}),
});
return nullptr;
}