Commit e5e630ee authored by Julien Guénolé's avatar Julien Guénolé
Browse files

new integrator to adaptblok: standard Euler (idem lammps-Fire)

parent 89c9c32c
Loading
Loading
Loading
Loading
+1 −0
Changes for src/min.cpp: 1 added line, 0 removed lines.
Original line number Diff line number Diff line
@@ -685,6 +685,7 @@ void Min::modify_params(int narg, char **arg)
      if (strcmp(arg[iarg+1],"euler") == 0) integrator = 0;
      else if (strcmp(arg[iarg+1],"verlet") == 0) integrator = 1;
      else if (strcmp(arg[iarg+1],"leapfrog") == 0) integrator = 2;
      else if (strcmp(arg[iarg+1],"eulerstandard") == 0) integrator = 3;
     else error->all(FLERR,"Illegal min_modify command");
      iarg += 2;       
   } else if (strcmp(arg[iarg],"line") == 0) {
+38 −0
Changes for src/min_adaptglok.cpp: 38 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -373,6 +373,44 @@ int MinAdaptGlok::iterate(int maxiter)
      }
    }

  // Standard Euler integration

  }else if (integrator == 3) {

    dtf = dtv * force->ftm2v; 

    if (rmass) {
      for (int i = 0; i < nlocal; i++) {
        dtfm = dtf / rmass[i];
        if (vdotfall > 0.0) {
          v[i][0] = scale1*v[i][0] + scale2*f[i][0];
          v[i][1] = scale1*v[i][1] + scale2*f[i][1];
          v[i][2] = scale1*v[i][2] + scale2*f[i][2];
        }
        x[i][0] += dtv * v[i][0];
        x[i][1] += dtv * v[i][1];
        x[i][2] += dtv * v[i][2];
        v[i][0] += dtfm * f[i][0];
        v[i][1] += dtfm * f[i][1];
        v[i][2] += dtfm * f[i][2];
      }
    } else {
      for (int i = 0; i < nlocal; i++) {
        dtfm = dtf / mass[type[i]];
        if (vdotfall > 0.0) {
          v[i][0] = scale1*v[i][0] + scale2*f[i][0];
          v[i][1] = scale1*v[i][1] + scale2*f[i][1];
          v[i][2] = scale1*v[i][2] + scale2*f[i][2];
        }
        x[i][0] += dtv * v[i][0];
        x[i][1] += dtv * v[i][1];
        x[i][2] += dtv * v[i][2];
        v[i][0] += dtfm * f[i][0];
        v[i][1] += dtfm * f[i][1];
        v[i][2] += dtfm * f[i][2];
      }
    }

  }

    eprevious = ecurrent;