diff --git a/src/SPIN/min_spin.cpp b/src/SPIN/min_spin.cpp index 7315aca056..e39eb18744 100644 --- a/src/SPIN/min_spin.cpp +++ b/src/SPIN/min_spin.cpp @@ -165,9 +165,9 @@ int MinSpin::iterate(int maxiter) fmdotfm = fmsq = 0.0; if (update->ftol > 0.0) { - if (normstyle == MAX) fmsq = max_torque(); // max torque norm - else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm - else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm else error->all(FLERR,"Illegal min_modify command"); fmdotfm = fmsq*fmsq; if (update->multireplica == 0) { diff --git a/src/SPIN/min_spin_cg.cpp b/src/SPIN/min_spin_cg.cpp index 95bbcf437b..d8238c9aee 100644 --- a/src/SPIN/min_spin_cg.cpp +++ b/src/SPIN/min_spin_cg.cpp @@ -270,9 +270,9 @@ int MinSpinCG::iterate(int maxiter) fmdotfm = fmsq = 0.0; if (update->ftol > 0.0) { - if (normstyle == MAX) fmsq = max_torque(); // max torque norm - else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm - else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm else error->all(FLERR,"Illegal min_modify command"); fmdotfm = fmsq*fmsq; if (update->multireplica == 0) { diff --git a/src/SPIN/min_spin_lbfgs.cpp b/src/SPIN/min_spin_lbfgs.cpp index f86bdd5d48..2c7e658419 100644 --- a/src/SPIN/min_spin_lbfgs.cpp +++ b/src/SPIN/min_spin_lbfgs.cpp @@ -285,9 +285,9 @@ int MinSpinLBFGS::iterate(int maxiter) fmdotfm = fmsq = 0.0; if (update->ftol > 0.0) { - if (normstyle == MAX) fmsq = max_torque(); // max torque norm - else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm - else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm + if (normstyle == MAX) fmsq = max_torque(); // max torque norm + else if (normstyle == INF) fmsq = inf_torque(); // inf torque norm + else if (normstyle == TWO) fmsq = total_torque(); // Euclidean torque 2-norm else error->all(FLERR,"Illegal min_modify command"); fmdotfm = fmsq*fmsq; if (update->multireplica == 0) { diff --git a/src/min_cg.cpp b/src/min_cg.cpp index 80dde25f51..4cf53f08bc 100644 --- a/src/min_cg.cpp +++ b/src/min_cg.cpp @@ -36,7 +36,7 @@ MinCG::MinCG(LAMMPS *lmp) : MinLineSearch(lmp) {} int MinCG::iterate(int maxiter) { int i,m,n,fail,ntimestep; - double beta,gg,dot[2],dotall[2],fmax; + double beta,gg,dot[2],dotall[2],fdotf; double *fatom,*gatom,*hatom; // nlimit = max # of CG iterations before restarting @@ -100,7 +100,6 @@ int MinCG::iterate(int maxiter) for (i = 0; i < n; i++) { dot[0] += fatom[i]*fatom[i]; dot[1] += fatom[i]*gatom[i]; - fmax = MAX(fmax,fatom[i]*fatom[i]); } } MPI_Allreduce(dot,dotall,2,MPI_DOUBLE,MPI_SUM,world); @@ -110,16 +109,14 @@ int MinCG::iterate(int maxiter) dotall[1] += fextra[i]*gextra[i]; } - fmax = 0.0; - if (normstyle == MAX) { // max force norm - fmax = fnorm_max(); - if (fmax < update->ftol*update->ftol) return FTOL; - } else if (normstyle == INF) { // infinite force norm - fmax = fnorm_inf(); - if (fmax < update->ftol*update->ftol) return FTOL; - } else if (normstyle == TWO) { // Euclidean force 2-norm - if (dotall[0] < update->ftol*update->ftol) return FTOL; - } else error->all(FLERR,"Illegal min_modify command"); + fdotf = 0.0; + if (update->ftol > 0.0) { + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // infinite force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); + if (fdotf < update->ftol*update->ftol) return FTOL; + } // update new search direction h from new f = -Grad(x) and old g // this is Polak-Ribieri formulation diff --git a/src/min_fire.cpp b/src/min_fire.cpp index b4b0f14534..ca37e410b8 100644 --- a/src/min_fire.cpp +++ b/src/min_fire.cpp @@ -250,10 +250,11 @@ int MinFire::iterate(int maxiter) // force tolerance criterion // sync across replicas if running multi-replica minimization + fdotf = 0.0; if (update->ftol > 0.0) { - if (normstyle == MAX) fdotf = fnorm_max(); // max force norm - else if (normstyle == INF) fdotf = fnorm_inf(); // inf force norm - else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // inf force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm else error->all(FLERR,"Illegal min_modify command"); if (update->multireplica == 0) { if (fdotf < update->ftol*update->ftol) return FTOL; diff --git a/src/min_quickmin.cpp b/src/min_quickmin.cpp index 5f3728153a..5e7643bf3b 100644 --- a/src/min_quickmin.cpp +++ b/src/min_quickmin.cpp @@ -215,10 +215,11 @@ int MinQuickMin::iterate(int maxiter) // force tolerance criterion // sync across replicas if running multi-replica minimization + fdotf = 0.0; if (update->ftol > 0.0) { - if (normstyle == MAX) fdotf = fnorm_max(); // max force norm - else if (normstyle == INF) fdotf = fnorm_inf(); // inf force norm - else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // inf force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm else error->all(FLERR,"Illegal min_modify command"); if (update->multireplica == 0) { if (fdotf < update->ftol*update->ftol) return FTOL; diff --git a/src/min_sd.cpp b/src/min_sd.cpp index 627a3b3cf3..d973ec1c82 100644 --- a/src/min_sd.cpp +++ b/src/min_sd.cpp @@ -78,11 +78,14 @@ int MinSD::iterate(int maxiter) // force tolerance criterion - if (normstyle == MAX) fdotf = fnorm_max(); // max force norm - else if (normstyle == INF) fdotf = fnorm_inf(); // infinite force norm - else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm - else error->all(FLERR,"Illegal min_modify command"); - if (fdotf < update->ftol*update->ftol) return FTOL; + fdotf = 0.0; + if (update->ftol > 0.0) { + if (normstyle == MAX) fdotf = fnorm_max(); // max force norm + else if (normstyle == INF) fdotf = fnorm_inf(); // infinite force norm + else if (normstyle == TWO) fdotf = fnorm_sqr(); // Euclidean force 2-norm + else error->all(FLERR,"Illegal min_modify command"); + if (fdotf < update->ftol*update->ftol) return FTOL; + } // set new search direction h to f = -Grad(x)