diff --git a/src/USER-SPH/fix_meso.cpp b/src/USER-SPH/fix_meso.cpp index 53e7b66b65..3e827ace81 100644 --- a/src/USER-SPH/fix_meso.cpp +++ b/src/USER-SPH/fix_meso.cpp @@ -54,6 +54,7 @@ int FixMeso::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; mask |= FINAL_INTEGRATE; + mask |= PRE_FORCE; return mask; } @@ -64,6 +65,25 @@ void FixMeso::init() { dtf = 0.5 * update->dt * force->ftm2v; } +void FixMeso::setup_pre_force(int vflag) +{ + // set vest equal to v + double **v = atom->v; + double **vest = atom->vest; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) + nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + vest[i][0] = v[i][0]; + vest[i][1] = v[i][1]; + vest[i][2] = v[i][2]; + } + } +} + /* ---------------------------------------------------------------------- allow for both per-type and per-atom mass ------------------------------------------------------------------------- */ diff --git a/src/USER-SPH/fix_meso.h b/src/USER-SPH/fix_meso.h index f9fcb5a893..40ddebf3ee 100644 --- a/src/USER-SPH/fix_meso.h +++ b/src/USER-SPH/fix_meso.h @@ -29,6 +29,7 @@ class FixMeso : public Fix { FixMeso(class LAMMPS *, int, char **); int setmask(); virtual void init(); + virtual void setup_pre_force(int); virtual void initial_integrate(int); virtual void final_integrate(); void reset_dt();