diff --git a/src/bias/MetaD.cpp b/src/bias/MetaD.cpp index 972f62b143fc8ad6b631fffe8faf82b2b1cc26c8..be299a63e08aec040d344baa26f680f261b1827e 100644 --- a/src/bias/MetaD.cpp +++ b/src/bias/MetaD.cpp @@ -1351,7 +1351,14 @@ void MetaD::update(){ if(storeOldGrids_) gridfile_.clearFields(); // in case only latest grid is stored, file should be rewound // this will overwrite previously written grids - else gridfile_.rewind(); + else { + int r = 0; + if(walkers_mpi) { + if(comm.Get_rank()==0) r=multi_sim_comm.Get_rank(); + comm.Bcast(r,0); + } + if(r==0) gridfile_.rewind(); + } BiasGrid_->writeToFile(gridfile_); // if a single grid is stored, it is necessary to flush it, otherwise // the file might stay empty forever (when a single grid is not large enough to diff --git a/src/bias/PBMetaD.cpp b/src/bias/PBMetaD.cpp index 508dbedd3a1c68862d76d4409c67d3abe3ce8ddb..31e2dd768dd054bf38bd87097ff95af69ef934db 100644 --- a/src/bias/PBMetaD.cpp +++ b/src/bias/PBMetaD.cpp @@ -843,10 +843,17 @@ void PBMetaD::update() // write grid files if(wgridstride_>0 && getStep()%wgridstride_==0) { - for(unsigned i=0; i<gridfiles_.size(); ++i) { - gridfiles_[i]->rewind(); - BiasGrids_[i]->writeToFile(*gridfiles_[i]); - gridfiles_[i]->flush(); + int r = 0; + if(multiple_w) { + if(comm.Get_rank()==0) r=multi_sim_comm.Get_rank(); + comm.Bcast(r,0); + } + if(r==0) { + for(unsigned i=0; i<gridfiles_.size(); ++i) { + gridfiles_[i]->rewind(); + BiasGrids_[i]->writeToFile(*gridfiles_[i]); + gridfiles_[i]->flush(); + } } }