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

119 lines
5.4 KiB
C++

#include "CFDStructDataSolverComputingControlManager.h"
#include "CFDStructDataSolverTimeModeManager.h"
#include "CFDStructMain/CFDStructDefine.h"
#include "CFDStructSigsCenter.h"
#include "CUIProperty/CUIConfig.h"
#include "CUIProperty/CUISigsCenter.h"
#include <QVariant>
CFDStructDataSolverComputingControlManager::CFDStructDataSolverComputingControlManager(QObject *parent) : CFDStructDataManagerBase(parent) {
m_uiConfig = nullptr;
connect(m_cuiSigsCenter, &CUISigsCenter::sig_cuiPropertyChanged, this, [=](int semaphore) { emit CFDStructSigsCenter::getInstance() -> sig_solverTimeModeDataChanged(); });
}
CFDStructDataSolverComputingControlManager::~CFDStructDataSolverComputingControlManager() {
// CFDStructDataManagerBase::~CFDStructDataManagerBase();
}
CUIConfig *CFDStructDataSolverComputingControlManager::getParamUIConfig() {
if (m_uiConfig != nullptr) {
delete m_uiConfig;
m_uiConfig = nullptr;
}
// m_uiConfig->printConfig();
m_uiConfig = this->genUIConfig();
return m_uiConfig;
}
void CFDStructDataSolverComputingControlManager::saveDataToDom(rapidjson::Document &dom) {
jsonAdd(dom, m_DataSaveFrequency, {"couplingSolver", "unSteady", "savedSteps"});
jsonAdd(dom, m_DataSaveFrequency, {"couplingSolver", "steady", "savedIters"});
jsonAdd(dom, m_NumericalComputationCores, {"couplingSolver", "mpi", "core"});
jsonAdd(dom, m_enableMPI, {"couplingSolver", "mpi", "on"});
jsonAdd(dom, m_mpiLibType, {"couplingSolver", "mpi", "type"});
}
void CFDStructDataSolverComputingControlManager::readDataFromDom(rapidjson::Document &dom) {
QVariant temp;
jsonRead(dom, temp, {"couplingSolver", "unSteady", "savedSteps"});
if (temp != QVariant()) {
m_DataSaveFrequency = temp.toInt();
}
jsonRead(dom, temp, {"couplingSolver", "steady", "savedIters"});
if (temp != QVariant()) {
m_DataSaveFrequency = temp.toInt();
}
jsonRead(dom, temp, {"couplingSolver", "mpi", "core"});
if (temp != QVariant()) {
m_NumericalComputationCores = temp.toInt();
}
jsonRead(dom, temp, {"couplingSolver", "mpi", "on"});
if (temp != QVariant()) {
m_enableMPI = temp.toInt();
}
jsonRead(dom, temp, {"couplingSolver", "mpi", "type"});
if (temp != QVariant()) {
m_mpiLibType = temp.toInt();
}
}
CUIConfig *CFDStructDataSolverComputingControlManager::genUIConfig() {
return new CUIConfig(
{
{"type", "Widget"},
},
{
new CUIConfig({
{"type", "GroupBox"}, // 自动保存
{"name", tr("Auto Save")},
},
{
new CUIConfig({
{"type", "LineEdit"}, // 数据保存频率
{"name", tr("Data retention frequency")},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_DataSaveFrequency)},
}),
// TODO数据文件保存
}),
new CUIConfig({
{"type", "GroupBox"}, // 并行控制
{"name", tr("Parallel control")},
},
{
new CUIConfig({
{"type", "CheckBox"}, // 并行
{"name", tr("parallel")},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_enableMPI)},
}),
new CUIConfig({
{"type", "ComboBox"}, // MPI库
{"name", tr("MPI library")},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_mpiLibType)},
},
{
new CUIConfig({
{"type", "Item"},
{"name", tr("Microsoft MPI")},
}),
}),
new CUIConfig({
{"type", "LineEdit"}, // 数值计算核数
{"name", tr("Numerical Computation Cores")},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_NumericalComputationCores)},
}),
new CUIConfig({
{"type", "LineEdit"}, // 网格组装核数
{"name", tr("Mesh Assembly Cores")},
{"value_type", CUI_DATA_TYPE::CUI_DATA_TYPE_INT},
{"value_origin", QVA_GLOBAL(&m_MeshAssemblyCores)},
}),
}),
});
return nullptr;
}