From ef7ae2da9d532feeba8a34b59288fff83d43776c Mon Sep 17 00:00:00 2001 From: maorz1998 Date: Thu, 10 Nov 2022 10:32:01 +0800 Subject: [PATCH 1/2] adapt DNN solver to cases without initial Qdot fields --- src/dfChemistryModel/dfChemistryModel.C | 71 ++++++++++++++++--------- src/dfChemistryModel/dfChemistryModel.H | 6 +++ 2 files changed, 52 insertions(+), 25 deletions(-) diff --git a/src/dfChemistryModel/dfChemistryModel.C b/src/dfChemistryModel/dfChemistryModel.C index 334be4d0..485c993f 100644 --- a/src/dfChemistryModel/dfChemistryModel.C +++ b/src/dfChemistryModel/dfChemistryModel.C @@ -99,6 +99,12 @@ Foam::dfChemistryModel::dfChemistryModel ) { #ifdef USE_LIBTORCH + useDNN = true; + if (!Qdot_.typeHeaderOk()) + { + useDNN = false; + } + torchSwitch_ = this->lookupOrDefault("torch", false); torchModelName_ = this->lookupOrDefault("torchModel", word("")); @@ -140,6 +146,12 @@ Foam::dfChemistryModel::dfChemistryModel #endif #ifdef USE_PYTORCH + useDNN = true; + if (!Qdot_.typeHeaderOk()) + { + useDNN = false; + } + torchSwitch_ = this->lookupOrDefault("torch", false); Tact1_ = this->subDict("torchParameters1").lookupOrDefault("Tact", 700); @@ -285,7 +297,16 @@ Foam::scalar Foam::dfChemistryModel::solve #elif USE_PYTORCH if(torchSwitch_) { - result = solve_DNN_GPU(deltaT); + if (useDNN) + { + Info << "now use DNN" << endl; + result = solve_DNN_GPU(deltaT); + } + else + { + result = solve_loadBalance(deltaT); + useDNN = true; + } } else { @@ -520,34 +541,34 @@ Foam::dfChemistryModel::getGPUProblems // choose DNN module if ((Qdot_[cellI] < Qdotact2_) && (T_[cellI] < Tact2_) && ( T_[cellI] >= Tact1_))//choose1 { - problem.DNNid = 0; + problem.DNNid = 0; problemList.append(problem); continue; } if(((Qdot_[cellI] >= Qdotact2_) && (T_[cellI] < Tact2_)&&(T_[cellI] >= Tact1_))||((Qdot_[cellI] > Qdotact3_) && T_[cellI] > Tact2_)) //choose2 { - problem.DNNid = 1; + problem.DNNid = 1; problemList.append(problem); continue; } if ((Qdot_[cellI] < Qdotact3_) && (T_[cellI] >= Tact2_) && (Qdot_[cellI]!=0)) //choose3 { - problem.DNNid = 2; + problem.DNNid = 2; problemList.append(problem); continue; } } - return problemList; + return problemList; } template void Foam::dfChemistryModel::getDNNinputs ( - const Foam::DynamicBuffer& problemBuffer, + const Foam::DynamicBuffer& problemBuffer, std::vector