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);