diff --git a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp b/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp index 4dfff857a4a909a452711244ebd64c30a617deea..f1d993f28c7ebffbe54964aae6c9fa2bc80c18f0 100644 --- a/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp +++ b/patches/gromacs-2018.3.diff/src/programs/mdrun/runner.cpp @@ -1333,6 +1333,15 @@ int Mdrunner::mdrunner() fr->cginfo_mb); } + /* PLUMED */ + if(plumedswitch){ + /* detect plumed API version */ + int pversion=0; + plumed_cmd(plumedmain,"getApiVersion",&pversion); + if(pversion>5) plumed_cmd(plumedmain,"setNumOMPthreads",&hw_opt.nthreads_omp); + } + /* END PLUMED */ + /* Now do whatever the user wants us to do (how flexible...) */ my_integrator(inputrec->eI) (fplog, cr, mdlog, nfile, fnm, oenv, diff --git a/src/core/PlumedMain.cpp b/src/core/PlumedMain.cpp index 033abc98a83fd9c7c980b6da52457c1c50aa7359..4d31ce87dd84b2e9dec3483c8c78f04b2dc61ba3 100644 --- a/src/core/PlumedMain.cpp +++ b/src/core/PlumedMain.cpp @@ -383,6 +383,11 @@ void PlumedMain::cmd(const std::string & word,void*val) { doCheckPoint = false; if(*static_cast<int*>(val)!=0) doCheckPoint = true; break; + /* ADDED WITH API==6 */ + case cmd_setNumOMPthreads: + CHECK_NOTNULL(val,word); + OpenMP::setNumThreads(*static_cast<unsigned*>(val)); + break; /* STOP API */ case cmd_setMDEngine: CHECK_NOTINIT(initialized,word);