diff --git a/src/RIGID/fix_rigid.cpp b/src/RIGID/fix_rigid.cpp index b087e2879f..b714f7aac2 100644 --- a/src/RIGID/fix_rigid.cpp +++ b/src/RIGID/fix_rigid.cpp @@ -680,6 +680,24 @@ void FixRigid::init() error->all(FLERR,"Rigid fix must come before NPT/NPH fix"); } + // error if any non-rigid fix with post_force succeeds any fix rigid: + int first_rigid = 0; + while (!modify->fix[first_rigid]->rigid_flag) + first_rigid++; + count = 0; + for (i = first_rigid + 1; i < modify->nfix; i++) { + Fix *ifix = modify->fix[i]; + if ( (modify->fmask[i] & POST_FORCE) && (!ifix->rigid_flag) ) { + count++; + if (comm->me == 0) { + if (screen) fprintf(screen,"> fix %s %s\n",ifix->id,ifix->style); + if (logfile) fprintf(logfile,"> fix %s %s\n",ifix->id,ifix->style); + } + } + } + if (count > 0) + error->all(FLERR,"the fixes listed above must preceed all rigid-body fixes"); + // timestep info dtv = update->dt; diff --git a/src/RIGID/fix_rigid_small.cpp b/src/RIGID/fix_rigid_small.cpp index fa4856dff2..017e49ab14 100644 --- a/src/RIGID/fix_rigid_small.cpp +++ b/src/RIGID/fix_rigid_small.cpp @@ -516,6 +516,24 @@ void FixRigidSmall::init() error->all(FLERR,"Rigid fix must come before NPT/NPH fix"); } + // error if any non-rigid fix with post_force succeeds any fix rigid: + int first_rigid = 0; + while (!modify->fix[first_rigid]->rigid_flag) + first_rigid++; + count = 0; + for (i = first_rigid + 1; i < modify->nfix; i++) { + Fix *ifix = modify->fix[i]; + if ( (modify->fmask[i] & POST_FORCE) && (!ifix->rigid_flag) ) { + count++; + if (comm->me == 0) { + if (screen) fprintf(screen,"> fix %s %s\n",ifix->id,ifix->style); + if (logfile) fprintf(logfile,"> fix %s %s\n",ifix->id,ifix->style); + } + } + } + if (count > 0) + error->all(FLERR,"the fixes listed above must preceed all rigid-body fixes"); + // timestep info dtv = update->dt;