forked from lijiext/lammps
Merge pull request #1756 from julient31/correct-minimizer
Correct warning issue in min_cg.cpp
This commit is contained in:
commit
cf251eb8be
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Reference in New Issue