From 4801fa00f8f19301c55687012dfe31d6a3abbb37 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 19 May 2022 22:53:48 -0400 Subject: [PATCH 01/46] update MathJax to latest bugfix release --- doc/Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index 113a64ec10..d63adc1ac4 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -13,6 +13,7 @@ VENV = $(BUILDDIR)/docenv ANCHORCHECK = $(VENV)/bin/rst_anchor_check SPHINXCONFIG = $(BUILDDIR)/utils/sphinx-config MATHJAX = $(SPHINXCONFIG)/_static/mathjax +MATHJAXTAG = 3.2.1 PYTHON = $(word 3,$(shell type python3)) DOXYGEN = $(word 3,$(shell type doxygen)) @@ -235,7 +236,7 @@ $(VENV): ) $(MATHJAX): - @git clone -b 3.2.0 -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@ + @git clone -b $(MATHJAXTAG) -c advice.detachedHead=0 --depth 1 https://github.com/mathjax/MathJax.git $@ $(ANCHORCHECK): $(VENV) @( \ From 36d091baeb6acd94ae055f25fed7c7a67183453d Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 19 May 2022 23:06:54 -0400 Subject: [PATCH 02/46] fix underline --- doc/src/min_style.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/min_style.rst b/doc/src/min_style.rst index 2b1bb08c5f..eab43ed3ca 100644 --- a/doc/src/min_style.rst +++ b/doc/src/min_style.rst @@ -4,7 +4,7 @@ min_style cg command ==================== min_style hftn command -==================== +====================== min_style sd command ==================== From 13fc4f3588e86e7eca8e6410069434c3ade5f2b2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 19 May 2022 23:07:12 -0400 Subject: [PATCH 03/46] must install wheel package before all other packages --- doc/Makefile | 1 + doc/utils/requirements.txt | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Makefile b/doc/Makefile index d63adc1ac4..07b201b07e 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -231,6 +231,7 @@ $(VENV): $(PYTHON) -m venv $(VENV); \ . $(VENV)/bin/activate; \ pip $(PIP_OPTIONS) install --upgrade pip; \ + pip $(PIP_OPTIONS) install --upgrade wheel; \ pip $(PIP_OPTIONS) install -r $(BUILDDIR)/utils/requirements.txt; \ deactivate;\ ) diff --git a/doc/utils/requirements.txt b/doc/utils/requirements.txt index 9ff18b3652..1f5711dd6b 100644 --- a/doc/utils/requirements.txt +++ b/doc/utils/requirements.txt @@ -6,4 +6,3 @@ breathe Pygments six pyyaml -wheel From 07e93a643a1bb342aa2edf1fe9fd45317cd85999 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 19 May 2022 23:36:54 -0400 Subject: [PATCH 04/46] spelling --- doc/utils/sphinx-config/false_positives.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/utils/sphinx-config/false_positives.txt b/doc/utils/sphinx-config/false_positives.txt index c8450c570b..319d1b0a41 100644 --- a/doc/utils/sphinx-config/false_positives.txt +++ b/doc/utils/sphinx-config/false_positives.txt @@ -1319,6 +1319,7 @@ hexatic hexorder Heyes HfO +hftn hgrid hhmrr Hibbs @@ -2798,6 +2799,7 @@ quatk quatw queryargs Queteschiner +quickmin qw qx qy @@ -3051,6 +3053,7 @@ screenshot screenshots Scripps Scripta +sd sdk sdpd SDPD From bfb126ec7c44062e32b92d7cb41c5db5d829f9bf Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 19 May 2022 23:37:55 -0400 Subject: [PATCH 05/46] make neighbor list searches optionally check for the request ID --- src/neighbor.cpp | 12 ++++++------ src/neighbor.h | 8 ++++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 2c7ce0004b..432ac8206c 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1742,15 +1742,15 @@ void Neighbor::requests_new2old() /* ---------------------------------------------------------------------- find and return request made by classptr if not found or classptr = nullptr, return nullptr - TODO: should have optional argument "id" to match ID if multiple requests + id is optional and defaults to 0, which is the request id value unless set explicitly ------------------------------------------------------------------------- */ -NeighRequest *Neighbor::find_request(void *classptr) const +NeighRequest *Neighbor::find_request(void *classptr, const int id) const { if (classptr == nullptr) return nullptr; for (int i = 0; i < nrequest; i++) - if (requests[i]->requestor == classptr) return requests[i]; + if ((requests[i]->requestor == classptr) && (requests[i]->id == id)) return requests[i]; return nullptr; } @@ -1770,15 +1770,15 @@ const std::vector Neighbor::get_pair_requests() const /* ---------------------------------------------------------------------- find and return list requested by classptr if not found or classptr = nullptr, return nullptr - TODO: should have optional argument "id" to match ID if multiple requests + id is optional and defaults to 0, which is the request id value unless set explicitly ------------------------------------------------------------------------- */ -NeighList *Neighbor::find_list(void *classptr) const +NeighList *Neighbor::find_list(void *classptr, const int id) const { if (classptr == nullptr) return nullptr; for (int i = 0; i < nlist; i++) - if (lists[i]->requestor == classptr) return lists[i]; + if ((requests[i]->requestor == classptr) && (requests[i]->id == id)) return lists[i]; return nullptr; } diff --git a/src/neighbor.h b/src/neighbor.h index 06601f96a7..3492693766 100644 --- a/src/neighbor.h +++ b/src/neighbor.h @@ -153,8 +153,12 @@ class Neighbor : protected Pointers { void exclusion_group_group_delete(int, int); // rm a group-group exclusion int exclude_setting(); // return exclude value to accelerator pkg - NeighList *find_list(void *) const; // find a neighbor list based on requestor - NeighRequest *find_request(void *) const; // find a neighbor request based on requestor + + // find a neighbor list based on requestor + NeighList *find_list(void *, const int id = 0) const; + // find a neighbor request based on requestor + NeighRequest *find_request(void *, const int id = 0) const; + const std::vector get_pair_requests() const; int any_full(); // Check if any old requests had full neighbor lists void build_collection(int); // build peratom collection array starting at the given index From 814daf7f4f89c7ff48e6d619f508d76f83b1a99a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 01:06:09 -0400 Subject: [PATCH 06/46] fix cut-n-paste error --- src/neighbor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/neighbor.cpp b/src/neighbor.cpp index 432ac8206c..560392ae6d 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -1778,7 +1778,7 @@ NeighList *Neighbor::find_list(void *classptr, const int id) const if (classptr == nullptr) return nullptr; for (int i = 0; i < nlist; i++) - if ((requests[i]->requestor == classptr) && (requests[i]->id == id)) return lists[i]; + if ((lists[i]->requestor == classptr) && (lists[i]->id == id)) return lists[i]; return nullptr; } From 21c2f8a74b14aca9b7ba09171a837f9f1cdcd219 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 01:06:21 -0400 Subject: [PATCH 07/46] fix miscalculated example --- doc/src/Howto_body.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/src/Howto_body.rst b/doc/src/Howto_body.rst index cc02e3d52f..88fa2d9c97 100644 --- a/doc/src/Howto_body.rst +++ b/doc/src/Howto_body.rst @@ -239,7 +239,7 @@ is consistent with the 6 moments of inertia: ixx iyy izz ixy ixz iyz = .. parsed-literal:: - 3 1 27 + 3 1 19 4 1 1 4 0 0 0 -0.7071 -0.7071 0 From a16974ca485015e2d9f76477398cf9addb09a8ce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 06:51:36 -0400 Subject: [PATCH 08/46] enable and apply clang-format --- src/pair_yukawa.cpp | 162 +++++++++++++++++++++----------------------- 1 file changed, 78 insertions(+), 84 deletions(-) diff --git a/src/pair_yukawa.cpp b/src/pair_yukawa.cpp index 620ca294c3..e1190b614f 100644 --- a/src/pair_yukawa.cpp +++ b/src/pair_yukawa.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -14,14 +13,14 @@ #include "pair_yukawa.h" -#include #include "atom.h" -#include "force.h" #include "comm.h" -#include "neigh_list.h" -#include "memory.h" #include "error.h" +#include "force.h" +#include "memory.h" +#include "neigh_list.h" +#include using namespace LAMMPS_NS; @@ -53,13 +52,13 @@ PairYukawa::~PairYukawa() void PairYukawa::compute(int eflag, int vflag) { - int i,j,ii,jj,inum,jnum,itype,jtype; - double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; - double rsq,r2inv,r,rinv,screening,forceyukawa,factor; - int *ilist,*jlist,*numneigh,**firstneigh; + int i, j, ii, jj, inum, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz, evdwl, fpair; + double rsq, r2inv, r, rinv, screening, forceyukawa, factor; + int *ilist, *jlist, *numneigh, **firstneigh; evdwl = 0.0; - ev_init(eflag,vflag); + ev_init(eflag, vflag); double **x = atom->x; double **f = atom->f; @@ -92,25 +91,25 @@ void PairYukawa::compute(int eflag, int vflag) delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; jtype = type[j]; if (rsq < cutsq[itype][jtype]) { - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; r = sqrt(rsq); - rinv = 1.0/r; - screening = exp(-kappa*r); + rinv = 1.0 / r; + screening = exp(-kappa * r); forceyukawa = a[itype][jtype] * screening * (kappa + rinv); - fpair = factor*forceyukawa * r2inv; + fpair = factor * forceyukawa * r2inv; - f[i][0] += delx*fpair; - f[i][1] += dely*fpair; - f[i][2] += delz*fpair; + f[i][0] += delx * fpair; + f[i][1] += dely * fpair; + f[i][2] += delz * fpair; if (newton_pair || j < nlocal) { - f[j][0] -= delx*fpair; - f[j][1] -= dely*fpair; - f[j][2] -= delz*fpair; + f[j][0] -= delx * fpair; + f[j][1] -= dely * fpair; + f[j][2] -= delz * fpair; } if (eflag) { @@ -118,8 +117,7 @@ void PairYukawa::compute(int eflag, int vflag) evdwl *= factor; } - if (evflag) ev_tally(i,j,nlocal,newton_pair, - evdwl,0.0,fpair,delx,dely,delz); + if (evflag) ev_tally(i, j, nlocal, newton_pair, evdwl, 0.0, fpair, delx, dely, delz); } } } @@ -134,18 +132,17 @@ void PairYukawa::compute(int eflag, int vflag) void PairYukawa::allocate() { allocated = 1; - int n = atom->ntypes; + int np1 = atom->ntypes + 1; - memory->create(setflag,n+1,n+1,"pair:setflag"); - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) - setflag[i][j] = 0; + memory->create(setflag, np1, np1, "pair:setflag"); + for (int i = 1; i < np1; i++) + for (int j = i; j < np1; j++) setflag[i][j] = 0; - memory->create(cutsq,n+1,n+1,"pair:cutsq"); - memory->create(rad,n+1,"pair:rad"); - memory->create(cut,n+1,n+1,"pair:cut"); - memory->create(a,n+1,n+1,"pair:a"); - memory->create(offset,n+1,n+1,"pair:offset"); + memory->create(cutsq, np1, np1, "pair:cutsq"); + memory->create(rad, np1, "pair:rad"); + memory->create(cut, np1, np1, "pair:cut"); + memory->create(a, np1, np1, "pair:a"); + memory->create(offset, np1, np1, "pair:offset"); } /* ---------------------------------------------------------------------- @@ -154,15 +151,15 @@ void PairYukawa::allocate() void PairYukawa::settings(int narg, char **arg) { - if (narg != 2) error->all(FLERR,"Illegal pair_style command"); + if (narg != 2) error->all(FLERR, "Illegal pair_style command"); - kappa = utils::numeric(FLERR,arg[0],false,lmp); - cut_global = utils::numeric(FLERR,arg[1],false,lmp); + kappa = utils::numeric(FLERR, arg[0], false, lmp); + cut_global = utils::numeric(FLERR, arg[1], false, lmp); // reset cutoffs that have been explicitly set if (allocated) { - int i,j; + int i, j; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) if (setflag[i][j]) cut[i][j] = cut_global; @@ -175,22 +172,21 @@ void PairYukawa::settings(int narg, char **arg) void PairYukawa::coeff(int narg, char **arg) { - if (narg < 3 || narg > 4) - error->all(FLERR,"Incorrect args for pair coefficients"); + if (narg < 3 || narg > 4) error->all(FLERR, "Incorrect args for pair coefficients"); if (!allocated) allocate(); - int ilo,ihi,jlo,jhi; - utils::bounds(FLERR,arg[0],1,atom->ntypes,ilo,ihi,error); - utils::bounds(FLERR,arg[1],1,atom->ntypes,jlo,jhi,error); + int ilo, ihi, jlo, jhi; + utils::bounds(FLERR, arg[0], 1, atom->ntypes, ilo, ihi, error); + utils::bounds(FLERR, arg[1], 1, atom->ntypes, jlo, jhi, error); - double a_one = utils::numeric(FLERR,arg[2],false,lmp); + double a_one = utils::numeric(FLERR, arg[2], false, lmp); double cut_one = cut_global; - if (narg == 4) cut_one = utils::numeric(FLERR,arg[3],false,lmp); + if (narg == 4) cut_one = utils::numeric(FLERR, arg[3], false, lmp); int count = 0; for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { + for (int j = MAX(jlo, i); j <= jhi; j++) { a[i][j] = a_one; cut[i][j] = cut_one; setflag[i][j] = 1; @@ -198,7 +194,7 @@ void PairYukawa::coeff(int narg, char **arg) } } - if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -208,14 +204,15 @@ void PairYukawa::coeff(int narg, char **arg) double PairYukawa::init_one(int i, int j) { if (setflag[i][j] == 0) { - a[i][j] = mix_energy(a[i][i],a[j][j],1.0,1.0); - cut[i][j] = mix_distance(cut[i][i],cut[j][j]); + a[i][j] = mix_energy(a[i][i], a[j][j], 1.0, 1.0); + cut[i][j] = mix_distance(cut[i][i], cut[j][j]); } if (offset_flag && (cut[i][j] > 0.0)) { double screening = exp(-kappa * cut[i][j]); offset[i][j] = a[i][j] * screening / cut[i][j]; - } else offset[i][j] = 0.0; + } else + offset[i][j] = 0.0; a[j][i] = a[i][j]; offset[j][i] = offset[i][j]; @@ -231,13 +228,13 @@ void PairYukawa::write_restart(FILE *fp) { write_restart_settings(fp); - int i,j; + int i, j; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) { - fwrite(&setflag[i][j],sizeof(int),1,fp); + fwrite(&setflag[i][j], sizeof(int), 1, fp); if (setflag[i][j]) { - fwrite(&a[i][j],sizeof(double),1,fp); - fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&a[i][j], sizeof(double), 1, fp); + fwrite(&cut[i][j], sizeof(double), 1, fp); } } } @@ -252,19 +249,19 @@ void PairYukawa::read_restart(FILE *fp) allocate(); - int i,j; + int i, j; int me = comm->me; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) { - if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error); - MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (me == 0) utils::sfread(FLERR, &setflag[i][j], sizeof(int), 1, fp, nullptr, error); + MPI_Bcast(&setflag[i][j], 1, MPI_INT, 0, world); if (setflag[i][j]) { if (me == 0) { - utils::sfread(FLERR,&a[i][j],sizeof(double),1,fp,nullptr,error); - utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error); + utils::sfread(FLERR, &a[i][j], sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &cut[i][j], sizeof(double), 1, fp, nullptr, error); } - MPI_Bcast(&a[i][j],1,MPI_DOUBLE,0,world); - MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&a[i][j], 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&cut[i][j], 1, MPI_DOUBLE, 0, world); } } } @@ -275,10 +272,10 @@ void PairYukawa::read_restart(FILE *fp) void PairYukawa::write_restart_settings(FILE *fp) { - fwrite(&kappa,sizeof(double),1,fp); - fwrite(&cut_global,sizeof(double),1,fp); - fwrite(&offset_flag,sizeof(int),1,fp); - fwrite(&mix_flag,sizeof(int),1,fp); + fwrite(&kappa, sizeof(double), 1, fp); + fwrite(&cut_global, sizeof(double), 1, fp); + fwrite(&offset_flag, sizeof(int), 1, fp); + fwrite(&mix_flag, sizeof(int), 1, fp); } /* ---------------------------------------------------------------------- @@ -288,15 +285,15 @@ void PairYukawa::write_restart_settings(FILE *fp) void PairYukawa::read_restart_settings(FILE *fp) { if (comm->me == 0) { - utils::sfread(FLERR,&kappa,sizeof(double),1,fp,nullptr,error); - utils::sfread(FLERR,&cut_global,sizeof(double),1,fp,nullptr,error); - utils::sfread(FLERR,&offset_flag,sizeof(int),1,fp,nullptr,error); - utils::sfread(FLERR,&mix_flag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR, &kappa, sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &cut_global, sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &offset_flag, sizeof(int), 1, fp, nullptr, error); + utils::sfread(FLERR, &mix_flag, sizeof(int), 1, fp, nullptr, error); } - MPI_Bcast(&kappa,1,MPI_DOUBLE,0,world); - MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); - MPI_Bcast(&offset_flag,1,MPI_INT,0,world); - MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + MPI_Bcast(&kappa, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&cut_global, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&offset_flag, 1, MPI_INT, 0, world); + MPI_Bcast(&mix_flag, 1, MPI_INT, 0, world); } /* ---------------------------------------------------------------------- @@ -305,8 +302,7 @@ void PairYukawa::read_restart_settings(FILE *fp) void PairYukawa::write_data(FILE *fp) { - for (int i = 1; i <= atom->ntypes; i++) - fprintf(fp,"%d %g\n",i,a[i][i]); + for (int i = 1; i <= atom->ntypes; i++) fprintf(fp, "%d %g\n", i, a[i][i]); } /* ---------------------------------------------------------------------- @@ -316,25 +312,23 @@ void PairYukawa::write_data(FILE *fp) void PairYukawa::write_data_all(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) - for (int j = i; j <= atom->ntypes; j++) - fprintf(fp,"%d %d %g %g\n",i,j,a[i][j],cut[i][j]); + for (int j = i; j <= atom->ntypes; j++) fprintf(fp, "%d %d %g %g\n", i, j, a[i][j], cut[i][j]); } /* ---------------------------------------------------------------------- */ double PairYukawa::single(int /*i*/, int /*j*/, int itype, int jtype, double rsq, - double /*factor_coul*/, double factor_lj, - double &fforce) + double /*factor_coul*/, double factor_lj, double &fforce) { - double r2inv,r,rinv,screening,forceyukawa,phi; + double r2inv, r, rinv, screening, forceyukawa, phi; - r2inv = 1.0/rsq; + r2inv = 1.0 / rsq; r = sqrt(rsq); - rinv = 1.0/r; - screening = exp(-kappa*r); + rinv = 1.0 / r; + screening = exp(-kappa * r); forceyukawa = a[itype][jtype] * screening * (kappa + rinv); - fforce = factor_lj*forceyukawa * r2inv; + fforce = factor_lj * forceyukawa * r2inv; phi = a[itype][jtype] * screening * rinv - offset[itype][jtype]; - return factor_lj*phi; + return factor_lj * phi; } From 08b1034d54a4f9c6afef6b556bf342b0ce4e03fd Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 07:12:25 -0400 Subject: [PATCH 09/46] enable and apply clang-format --- src/pair_zero.cpp | 111 +++++++++++++++++++++------------------------- 1 file changed, 50 insertions(+), 61 deletions(-) diff --git a/src/pair_zero.cpp b/src/pair_zero.cpp index 5c229d6b71..83505edd35 100644 --- a/src/pair_zero.cpp +++ b/src/pair_zero.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -20,8 +19,8 @@ #include "atom.h" #include "comm.h" -#include "memory.h" #include "error.h" +#include "memory.h" #include @@ -29,11 +28,12 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -PairZero::PairZero(LAMMPS *lmp) : Pair(lmp) { - coeffflag=1; - writedata=1; - single_enable=1; - respa_enable=1; +PairZero::PairZero(LAMMPS *lmp) : Pair(lmp) +{ + coeffflag = 1; + writedata = 1; + single_enable = 1; + respa_enable = 1; } /* ---------------------------------------------------------------------- */ @@ -51,15 +51,15 @@ PairZero::~PairZero() void PairZero::compute(int eflag, int vflag) { - ev_init(eflag,vflag); - if (vflag_fdotr) virial_fdotr_compute(); + ev_init(eflag, vflag); + if (vflag_fdotr) virial_fdotr_compute(); } /* ---------------------------------------------------------------------- */ void PairZero::compute_outer(int eflag, int vflag) { - ev_init(eflag,vflag); + ev_init(eflag, vflag); } /* ---------------------------------------------------------------------- @@ -69,15 +69,14 @@ void PairZero::compute_outer(int eflag, int vflag) void PairZero::allocate() { allocated = 1; - int n = atom->ntypes; + int np1 = atom->ntypes + 1; - memory->create(setflag,n+1,n+1,"pair:setflag"); - for (int i = 1; i <= n; i++) - for (int j = i; j <= n; j++) - setflag[i][j] = 0; + memory->create(setflag, np1, np1, "pair:setflag"); + for (int i = 1; i < np1; i++) + for (int j = i; j < np1; j++) setflag[i][j] = 0; - memory->create(cutsq,n+1,n+1,"pair:cutsq"); - memory->create(cut,n+1,n+1,"pair:cut"); + memory->create(cutsq, np1, np1, "pair:cutsq"); + memory->create(cut, np1, np1, "pair:cut"); } /* ---------------------------------------------------------------------- @@ -86,22 +85,22 @@ void PairZero::allocate() void PairZero::settings(int narg, char **arg) { - if ((narg != 1) && (narg != 2)) - error->all(FLERR,"Illegal pair_style command"); + if ((narg != 1) && (narg != 2)) error->all(FLERR, "Illegal pair_style command"); - cut_global = utils::numeric(FLERR,arg[0],false,lmp); + cut_global = utils::numeric(FLERR, arg[0], false, lmp); if (narg == 2) { - if (strcmp("nocoeff",arg[1]) == 0) coeffflag=0; - else error->all(FLERR,"Illegal pair_style command"); + if (strcmp("nocoeff", arg[1]) == 0) + coeffflag = 0; + else + error->all(FLERR, "Illegal pair_style command"); } // reset cutoffs that have been explicitly set if (allocated) { - int i,j; + int i, j; for (i = 1; i <= atom->ntypes; i++) - for (j = i+1; j <= atom->ntypes; j++) - cut[i][j] = cut_global; + for (j = i + 1; j <= atom->ntypes; j++) cut[i][j] = cut_global; } } @@ -112,27 +111,27 @@ void PairZero::settings(int narg, char **arg) void PairZero::coeff(int narg, char **arg) { if ((narg < 2) || (coeffflag && narg > 3)) - error->all(FLERR,"Incorrect args for pair coefficients"); + error->all(FLERR, "Incorrect args for pair coefficients"); if (!allocated) allocate(); - int ilo,ihi,jlo,jhi; - utils::bounds(FLERR,arg[0],1,atom->ntypes,ilo,ihi,error); - utils::bounds(FLERR,arg[1],1,atom->ntypes,jlo,jhi,error); + int ilo, ihi, jlo, jhi; + utils::bounds(FLERR, arg[0], 1, atom->ntypes, ilo, ihi, error); + utils::bounds(FLERR, arg[1], 1, atom->ntypes, jlo, jhi, error); double cut_one = cut_global; - if (coeffflag && (narg == 3)) cut_one = utils::numeric(FLERR,arg[2],false,lmp); + if (coeffflag && (narg == 3)) cut_one = utils::numeric(FLERR, arg[2], false, lmp); int count = 0; for (int i = ilo; i <= ihi; i++) { - for (int j = MAX(jlo,i); j <= jhi; j++) { + for (int j = MAX(jlo, i); j <= jhi; j++) { cut[i][j] = cut_one; setflag[i][j] = 1; count++; } } - if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); + if (count == 0) error->all(FLERR, "Incorrect args for pair coefficients"); } /* ---------------------------------------------------------------------- @@ -141,9 +140,7 @@ void PairZero::coeff(int narg, char **arg) double PairZero::init_one(int i, int j) { - if (setflag[i][j] == 0) { - cut[i][j] = mix_distance(cut[i][i],cut[j][j]); - } + if (setflag[i][j] == 0) { cut[i][j] = mix_distance(cut[i][i], cut[j][j]); } return cut[i][j]; } @@ -156,13 +153,11 @@ void PairZero::write_restart(FILE *fp) { write_restart_settings(fp); - int i,j; + int i, j; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) { - fwrite(&setflag[i][j],sizeof(int),1,fp); - if (setflag[i][j]) { - fwrite(&cut[i][j],sizeof(double),1,fp); - } + fwrite(&setflag[i][j], sizeof(int), 1, fp); + if (setflag[i][j]) { fwrite(&cut[i][j], sizeof(double), 1, fp); } } } @@ -175,17 +170,15 @@ void PairZero::read_restart(FILE *fp) read_restart_settings(fp); allocate(); - int i,j; + int i, j; int me = comm->me; for (i = 1; i <= atom->ntypes; i++) for (j = i; j <= atom->ntypes; j++) { - if (me == 0) utils::sfread(FLERR,&setflag[i][j],sizeof(int),1,fp,nullptr,error); - MPI_Bcast(&setflag[i][j],1,MPI_INT,0,world); + if (me == 0) utils::sfread(FLERR, &setflag[i][j], sizeof(int), 1, fp, nullptr, error); + MPI_Bcast(&setflag[i][j], 1, MPI_INT, 0, world); if (setflag[i][j]) { - if (me == 0) { - utils::sfread(FLERR,&cut[i][j],sizeof(double),1,fp,nullptr,error); - } - MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + if (me == 0) { utils::sfread(FLERR, &cut[i][j], sizeof(double), 1, fp, nullptr, error); } + MPI_Bcast(&cut[i][j], 1, MPI_DOUBLE, 0, world); } } } @@ -196,8 +189,8 @@ void PairZero::read_restart(FILE *fp) void PairZero::write_restart_settings(FILE *fp) { - fwrite(&cut_global,sizeof(double),1,fp); - fwrite(&coeffflag,sizeof(int),1,fp); + fwrite(&cut_global, sizeof(double), 1, fp); + fwrite(&coeffflag, sizeof(int), 1, fp); } /* ---------------------------------------------------------------------- @@ -208,11 +201,11 @@ void PairZero::read_restart_settings(FILE *fp) { int me = comm->me; if (me == 0) { - utils::sfread(FLERR,&cut_global,sizeof(double),1,fp,nullptr,error); - utils::sfread(FLERR,&coeffflag,sizeof(int),1,fp,nullptr,error); + utils::sfread(FLERR, &cut_global, sizeof(double), 1, fp, nullptr, error); + utils::sfread(FLERR, &coeffflag, sizeof(int), 1, fp, nullptr, error); } - MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); - MPI_Bcast(&coeffflag,1,MPI_INT,0,world); + MPI_Bcast(&cut_global, 1, MPI_DOUBLE, 0, world); + MPI_Bcast(&coeffflag, 1, MPI_INT, 0, world); } /* ---------------------------------------------------------------------- @@ -221,8 +214,7 @@ void PairZero::read_restart_settings(FILE *fp) void PairZero::write_data(FILE *fp) { - for (int i = 1; i <= atom->ntypes; i++) - fprintf(fp,"%d\n",i); + for (int i = 1; i <= atom->ntypes; i++) fprintf(fp, "%d\n", i); } /* ---------------------------------------------------------------------- @@ -232,17 +224,14 @@ void PairZero::write_data(FILE *fp) void PairZero::write_data_all(FILE *fp) { for (int i = 1; i <= atom->ntypes; i++) - for (int j = i; j <= atom->ntypes; j++) - fprintf(fp,"%d %d %g\n",i,j,cut[i][j]); + for (int j = i; j <= atom->ntypes; j++) fprintf(fp, "%d %d %g\n", i, j, cut[i][j]); } /* ---------------------------------------------------------------------- */ -double PairZero::single(int /*i*/, int /*j*/, int /* itype */, int /* jtype */, - double /* rsq */, double /*factor_coul*/, - double /* factor_lj */, double &fforce) +double PairZero::single(int /*i*/, int /*j*/, int /* itype */, int /* jtype */, double /* rsq */, + double /*factor_coul*/, double /* factor_lj */, double &fforce) { fforce = 0.0; return 0.0; } - From 7eb926c853a242a538f5d1a98b588f6b5e9d006f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 07:14:05 -0400 Subject: [PATCH 10/46] clarify the description of pair style none explain that pair style none is effectively deleting any existing pair style and that communication and neighbor list cutoff are affected. update those explanations for changes to LAMMPS that allow adjusting those not just with the neighbor list skin. Also add that pair_coeff must not be used. --- doc/src/pair_none.rst | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/doc/src/pair_none.rst b/doc/src/pair_none.rst index 3dc87a7815..0bb366bce1 100644 --- a/doc/src/pair_none.rst +++ b/doc/src/pair_none.rst @@ -20,28 +20,37 @@ Examples Description """"""""""" -Using a pair style of none means pair forces and energies are not -computed. +Using a pair style of *none* means that any previous pair style setting +will be deleted and pairwise forces and energies are not computed. -With this choice, the force cutoff is 0.0, which means that only atoms -within the neighbor skin distance (see the :doc:`neighbor ` -command) are communicated between processors. You must insure the -skin distance is large enough to acquire atoms needed for computing -bonds, angles, etc. +As a consequence there will be a pairwise force cutoff of 0.0, which has +implications for the default setting of the neighbor list and the +communication cutoff. Those are the sum of the largest pairwise cutoff +and the neighbor skin distance (see the documentation of the +:doc:`neighbor ` command and the :doc:`comm_modify +` command). When you have bonds, angles, dihedrals, or +impropers defined at the same time, you must set the communication +cutoff so that communication cutoff distance is large enough to acquire +and communicate sufficient ghost atoms from neighboring sub-domains as +needed for computing bonds, angles, etc. -A pair style of *none* will also prevent pairwise neighbor lists from -being built. However if the :doc:`neighbor ` style is *bin*, -data structures for binning are still allocated. If the neighbor skin -distance is small, then these data structures can consume a large -amount of memory. So you should either set the neighbor style to -*nsq* or set the skin distance to a larger value. +A pair style of *none* will also not request a pairwise neighbor list. +However if the :doc:`neighbor ` style is *bin*, data +structures for binning are still allocated. If the neighbor list cutoff +is small, then these data structures can consume a large amount of +memory. So you should either set the neighbor style to *nsq* or set the +skin distance to a larger value. -See the :doc:`pair_style zero ` for a way to trigger the -building of a neighbor lists, but compute no pairwise interactions. +See the :doc:`pair_style zero ` for a way to set a pairwise +cutoff and thus trigger the building of a neighbor lists and setting +a corresponding communication cutoff, but compute no pairwise interactions. Restrictions """""""""""" -none + +You must not use a :doc:`pair_coeff ` command with this pair +style. Since there is no interaction computed, you cannot set any +coefficients for it. Related commands """""""""""""""" From 2c5ce83d59fe5c8da4c87feedd074cf5d48147fe Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 09:27:16 -0400 Subject: [PATCH 11/46] must set Output::next_dump_any to current step with rerun --- src/rerun.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/rerun.cpp b/src/rerun.cpp index b788cfcaec..f0048a3ce2 100644 --- a/src/rerun.cpp +++ b/src/rerun.cpp @@ -165,6 +165,7 @@ void Rerun::command(int narg, char **arg) modify->init(); update->integrate->setup_minimal(1); modify->end_of_step(); + output->next_dump_any = ntimestep; if (firstflag) output->setup(); else if (output->next) output->write(ntimestep); From c3ce77bc8c4aec79e36b7b8dd76a31f885e0dff2 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 20 May 2022 16:33:46 -0400 Subject: [PATCH 12/46] improve energy scaling sanity checks --- src/RIGID/fix_ehex.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/RIGID/fix_ehex.cpp b/src/RIGID/fix_ehex.cpp index 1962578691..6bbd1b7424 100644 --- a/src/RIGID/fix_ehex.cpp +++ b/src/RIGID/fix_ehex.cpp @@ -253,9 +253,10 @@ void FixEHEX::rescale() escale = 1. + (F * dt) / Kr; - // safety check for kinetic energy + // safety checks for kinetic energy rescaling - if (escale < 0.0) error->all(FLERR, "Fix ehex kinetic energy went negative"); + if (escale < 0.0) error->all(FLERR, "Fix ehex kinetic energy went negative: {}", escale); + if (escale > 100.0) error->all(FLERR, "Fix ehex kinetic energy rescaling too large: {}", escale); scale = sqrt(escale); vsub[0] = (scale - 1.0) * vcm[0]; @@ -569,7 +570,11 @@ void FixEHEX::com_properties(double *vr, double *sfr, double *sfvr, double *K, d *mr = buf[4]; - if (*mr < 1.e-14) { error->all(FLERR, "Fix ehex error mass of region is close to zero"); } + if (nlocal > 0) + mi = (rmass) ? rmass[0] : mass[type[0]]; + else + mi = 1.0; + if ((*mr / mi) < 1.e-14) error->all(FLERR, "Fix ehex error mass of region is close to zero"); // total kinetic energy of region From e3e849b266ec555f9c81d5c1454f36761957a396 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 21 May 2022 07:37:25 -0400 Subject: [PATCH 13/46] skip compressed file format tests if gzip executable is not found --- unittest/formats/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 8a198d4c64..5122dd7ca3 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -46,9 +46,8 @@ target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock) add_test(NAME DumpAtom COMMAND test_dump_atom) set_tests_properties(DumpAtom PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}") -if(PKG_COMPRESS) - find_program(GZIP_BINARY NAMES gzip REQUIRED) - +find_program(GZIP_EXECUTABLE NAMES gzip) +if(PKG_COMPRESS AND GZIP_FOUND) add_executable(test_dump_atom_compressed test_dump_atom_compressed.cpp compressed_dump_test_main.cpp) target_link_libraries(test_dump_atom_compressed PRIVATE lammps GTest::GMock) From 007588f9cbf4410684ecf71cf348bd0dc0025a82 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 21 May 2022 18:56:58 -0400 Subject: [PATCH 14/46] use GZIP executable variable name consistently --- unittest/formats/CMakeLists.txt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index 5122dd7ca3..f1408de4d7 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -64,19 +64,19 @@ if(PKG_COMPRESS AND GZIP_FOUND) target_link_libraries(test_dump_xyz_compressed PRIVATE lammps GTest::GMock) add_test(NAME DumpAtomGZ COMMAND test_dump_atom_compressed gz) - set_tests_properties(DumpAtomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}") + set_tests_properties(DumpAtomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") add_test(NAME DumpCustomGZ COMMAND test_dump_custom_compressed gz) - set_tests_properties(DumpCustomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}") + set_tests_properties(DumpCustomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") add_test(NAME DumpCfgGZ COMMAND test_dump_cfg_compressed gz) - set_tests_properties(DumpCfgGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}") + set_tests_properties(DumpCfgGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") add_test(NAME DumpLocalGZ COMMAND test_dump_local_compressed gz) - set_tests_properties(DumpLocalGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}") + set_tests_properties(DumpLocalGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") add_test(NAME DumpXYZGZ COMMAND test_dump_xyz_compressed gz) - set_tests_properties(DumpXYZGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}") + set_tests_properties(DumpXYZGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") find_package(PkgConfig REQUIRED) pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4) From 93692ce308fa822cabfb77ffed7205b3097a9442 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 21 May 2022 23:33:13 -0400 Subject: [PATCH 15/46] Improved Windows and Visual Studio version detection This now uses the CurrentBuild key to detect the Windows version and only falls back to product name, if that fails. This is needed because Windows 11 reports itself as Windows 10 in the product name key. --- src/platform.cpp | 63 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/src/platform.cpp b/src/platform.cpp index 907b4ef677..932b38f48c 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -186,13 +186,57 @@ std::string platform::os_info() char value[1024]; DWORD value_length = 1024; const char *subkey = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"; - const char *entry = "ProductName"; + const char *entry = "CurrentBuild"; RegGetValue(HKEY_LOCAL_MACHINE, subkey, entry, RRF_RT_REG_SZ, nullptr, &value, (LPDWORD) &value_length); // enforce zero termination value[1023] = '\0'; - buf = value; - + auto build = std::string(value); + + if (build == "6002") { + buf = "Windows Vista"; + } else if (build == "7601") { + buf = "Windows 7"; + } else if (build == "9200") { + buf = "Windows 8"; + } else if (build == "9600") { + buf = "Windows 8.1"; + } else if (build == "10240") { + buf = "Windows 10 1507"; + } else if (build == "10586") { + buf = "Windows 10 1511"; + } else if (build == "14393") { + buf = "Windows 10 1607"; + } else if (build == "15063") { + buf = "Windows 10 1703"; + } else if (build == "16299") { + buf = "Windows 10 1709"; + } else if (build == "17134") { + buf = "Windows 10 1803"; + } else if (build == "17763") { + buf = "Windows 10 1809"; + } else if (build == "18362") { + buf = "Windows 10 1903"; + } else if (build == "18363") { + buf = "Windows 10 1909"; + } else if (build == "19041") { + buf = "Windows 10 2004"; + } else if (build == "19042") { + buf = "Windows 10 20H2"; + } else if (build == "19043") { + buf = "Windows 10 21H1"; + } else if (build == "19044") { + buf = "Windows 10 21H2"; + } else if (build == "22000") { + buf = "Windows 11 21H2"; + } else { + const char *entry = "ProductName"; + RegGetValue(HKEY_LOCAL_MACHINE, subkey, entry, RRF_RT_REG_SZ, nullptr, &value, + (LPDWORD) &value_length); + // enforce zero termination + value[1023] = '\0'; + buf = value; + } DWORD fullversion, majorv, minorv, buildv = 0; fullversion = GetVersion(); majorv = (DWORD) (LOBYTE(LOWORD(fullversion))); @@ -303,11 +347,18 @@ std::string platform::compiler_info() __MINGW32_MINOR_VERSION, __VERSION__); #elif defined(__GNUC__) buf = fmt::format("GNU C++ {}", __VERSION__); -#elif defined(_MSC_VER) && (_MSC_VER > 1920) && (_MSC_VER < 2000) +#elif defined(_MSC_VER) && (_MSC_VER >= 1920) && (_MSC_VER < 1930) constexpr int major = _MSC_VER / 100; constexpr int minor = _MSC_VER - major * 100; - buf = "Microsoft Visual Studio 20" + std::to_string(major) + ", C/C++ " + - std::to_string(major - 5) + "." + std::to_string(minor); + constexpr int patch = minor - 20; + buf = fmt::format("Microsoft Visual Studio 2019 Version 16.{}, C/C++ {}.{}", patch, major - 5, + minor); +#elif defined(_MSC_VER) && (_MSC_VER >= 1930) && (_MSC_VER < 2000) + constexpr int major = _MSC_VER / 100; + constexpr int minor = _MSC_VER - major * 100; + constexpr int patch = minor - 30; + buf = fmt::format("Microsoft Visual Studio 2022 Version 17.{}, C/C++ {}.{}", patch, major - 5, + minor); #else buf = "(Unknown)"; #endif From b407b2f23963f8022f22bf90224600b9a8c6d49a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 21 May 2022 23:35:47 -0400 Subject: [PATCH 16/46] apply clang-format --- src/platform.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform.cpp b/src/platform.cpp index 932b38f48c..5e396d3f63 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -192,9 +192,9 @@ std::string platform::os_info() // enforce zero termination value[1023] = '\0'; auto build = std::string(value); - + if (build == "6002") { - buf = "Windows Vista"; + buf = "Windows Vista"; } else if (build == "7601") { buf = "Windows 7"; } else if (build == "9200") { From 9a973e67fa22298874321a5beb8721fa39adccd3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 03:29:33 -0400 Subject: [PATCH 17/46] enable and apply clang-format --- src/angle_deprecated.cpp | 12 +-- src/body.cpp | 3 +- src/bond_deprecated.cpp | 10 +-- src/compute_angle.cpp | 29 +++--- src/compute_bond.cpp | 30 +++---- src/compute_com.cpp | 14 ++- src/compute_deprecated.cpp | 8 +- src/compute_erotate_sphere.cpp | 17 ++-- src/compute_ke.cpp | 17 ++-- src/compute_stress_atom.cpp | 159 ++++++++++++++++----------------- src/dihedral_deprecated.cpp | 8 +- src/dump_deprecated.cpp | 9 +- src/fix_deprecated.cpp | 23 +++-- src/fix_nph.cpp | 14 ++- src/fix_nph_sphere.cpp | 14 ++- src/fix_npt.cpp | 14 ++- src/fix_npt_sphere.cpp | 14 ++- src/fix_nvt.cpp | 12 +-- src/improper_deprecated.cpp | 1 - src/kspace_deprecated.cpp | 10 +-- src/minimize.cpp | 19 ++-- src/pair_deprecated.cpp | 16 ++-- src/region_deprecated.cpp | 10 +-- 23 files changed, 196 insertions(+), 267 deletions(-) diff --git a/src/angle_deprecated.cpp b/src/angle_deprecated.cpp index 55e1651b94..60cdab3398 100644 --- a/src/angle_deprecated.cpp +++ b/src/angle_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,8 @@ #include "angle_deprecated.h" #include "angle_hybrid.h" #include "comm.h" -#include "force.h" #include "error.h" +#include "force.h" using namespace LAMMPS_NS; @@ -33,17 +32,14 @@ void AngleDeprecated::settings(int, char **) // hybrid substyles are created in AngleHybrid::settings(), so when this is // called, our style was just added at the end of the list of substyles - if (utils::strmatch(my_style,"^hybrid")) { + if (utils::strmatch(my_style, "^hybrid")) { auto hybrid = dynamic_cast(force->angle); my_style = hybrid->keywords[hybrid->nstyles]; } if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nAngle style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nAngle style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This angle style is no longer available"); + error->all(FLERR, "This angle style is no longer available"); } - - diff --git a/src/body.cpp b/src/body.cpp index 51b2672040..f59acdfc66 100644 --- a/src/body.cpp +++ b/src/body.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -29,5 +28,5 @@ Body::Body(LAMMPS *lmp, int /*narg*/, char **arg) : Pointers(lmp) Body::~Body() { - delete [] style; + delete[] style; } diff --git a/src/bond_deprecated.cpp b/src/bond_deprecated.cpp index 98bf6ea9ae..6d4c17b5d0 100644 --- a/src/bond_deprecated.cpp +++ b/src/bond_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -34,17 +33,14 @@ void BondDeprecated::settings(int, char **) // hybrid substyles are created in BondHybrid::settings(), so when this is // called, our style was just added at the end of the list of substyles - if (utils::strmatch(my_style,"^hybrid")) { + if (utils::strmatch(my_style, "^hybrid")) { auto hybrid = dynamic_cast(force->bond); my_style = hybrid->keywords[hybrid->nstyles]; } if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nBond style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nBond style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This bond style is no longer available"); + error->all(FLERR, "This bond style is no longer available"); } - - diff --git a/src/compute_angle.cpp b/src/compute_angle.cpp index e4db464f28..bf1241754d 100644 --- a/src/compute_angle.cpp +++ b/src/compute_angle.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -25,10 +24,9 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeAngle::ComputeAngle(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - emine(nullptr) + Compute(lmp, narg, arg), emine(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute angle command"); + if (narg != 3) error->all(FLERR, "Illegal compute angle command"); vector_flag = 1; extvector = 1; @@ -37,9 +35,8 @@ ComputeAngle::ComputeAngle(LAMMPS *lmp, int narg, char **arg) : // check if bond style hybrid exists - angle = dynamic_cast( force->angle_match("hybrid")); - if (!angle) - error->all(FLERR,"Angle style for compute angle command is not hybrid"); + angle = dynamic_cast(force->angle_match("hybrid")); + if (!angle) error->all(FLERR, "Angle style for compute angle command is not hybrid"); size_vector = nsub = angle->nstyles; emine = new double[nsub]; @@ -50,8 +47,8 @@ ComputeAngle::ComputeAngle(LAMMPS *lmp, int narg, char **arg) : ComputeAngle::~ComputeAngle() { - delete [] emine; - delete [] vector; + delete[] emine; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -60,11 +57,10 @@ void ComputeAngle::init() { // recheck angle style in case it has been changed - angle = dynamic_cast( force->angle_match("hybrid")); - if (!angle) - error->all(FLERR,"Angle style for compute angle command is not hybrid"); + angle = dynamic_cast(force->angle_match("hybrid")); + if (!angle) error->all(FLERR, "Angle style for compute angle command is not hybrid"); if (angle->nstyles != nsub) - error->all(FLERR,"Angle style for compute angle command has changed"); + error->all(FLERR, "Angle style for compute angle command has changed"); } /* ---------------------------------------------------------------------- */ @@ -73,10 +69,9 @@ void ComputeAngle::compute_vector() { invoked_vector = update->ntimestep; if (update->eflag_global != invoked_vector) - error->all(FLERR,"Energy was not tallied on needed timestep"); + error->all(FLERR, "Energy was not tallied on needed timestep"); - for (int i = 0; i < nsub; i++) - emine[i] = angle->styles[i]->energy; + for (int i = 0; i < nsub; i++) emine[i] = angle->styles[i]->energy; - MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(emine, vector, nsub, MPI_DOUBLE, MPI_SUM, world); } diff --git a/src/compute_bond.cpp b/src/compute_bond.cpp index 38f15211e0..c0d65c55d5 100644 --- a/src/compute_bond.cpp +++ b/src/compute_bond.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -25,10 +24,9 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeBond::ComputeBond(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - emine(nullptr) + Compute(lmp, narg, arg), emine(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute bond command"); + if (narg != 3) error->all(FLERR, "Illegal compute bond command"); vector_flag = 1; extvector = 1; @@ -37,9 +35,8 @@ ComputeBond::ComputeBond(LAMMPS *lmp, int narg, char **arg) : // check if bond style hybrid exists - bond = dynamic_cast( force->bond_match("hybrid")); - if (!bond) - error->all(FLERR,"Bond style for compute bond command is not hybrid"); + bond = dynamic_cast(force->bond_match("hybrid")); + if (!bond) error->all(FLERR, "Bond style for compute bond command is not hybrid"); size_vector = nsub = bond->nstyles; emine = new double[nsub]; @@ -50,8 +47,8 @@ ComputeBond::ComputeBond(LAMMPS *lmp, int narg, char **arg) : ComputeBond::~ComputeBond() { - delete [] emine; - delete [] vector; + delete[] emine; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -60,11 +57,9 @@ void ComputeBond::init() { // recheck bond style in case it has been changed - bond = dynamic_cast( force->bond_match("hybrid")); - if (!bond) - error->all(FLERR,"Bond style for compute bond command is not hybrid"); - if (bond->nstyles != nsub) - error->all(FLERR,"Bond style for compute bond command has changed"); + bond = dynamic_cast(force->bond_match("hybrid")); + if (!bond) error->all(FLERR, "Bond style for compute bond command is not hybrid"); + if (bond->nstyles != nsub) error->all(FLERR, "Bond style for compute bond command has changed"); } /* ---------------------------------------------------------------------- */ @@ -73,10 +68,9 @@ void ComputeBond::compute_vector() { invoked_vector = update->ntimestep; if (update->eflag_global != invoked_vector) - error->all(FLERR,"Energy was not tallied on needed timestep"); + error->all(FLERR, "Energy was not tallied on needed timestep"); - for (int i = 0; i < nsub; i++) - emine[i] = bond->styles[i]->energy; + for (int i = 0; i < nsub; i++) emine[i] = bond->styles[i]->energy; - MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(emine, vector, nsub, MPI_DOUBLE, MPI_SUM, world); } diff --git a/src/compute_com.cpp b/src/compute_com.cpp index e40fb6d9b3..539fd5dcd9 100644 --- a/src/compute_com.cpp +++ b/src/compute_com.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -13,18 +12,17 @@ ------------------------------------------------------------------------- */ #include "compute_com.h" -#include "update.h" -#include "group.h" #include "error.h" +#include "group.h" +#include "update.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeCOM::ComputeCOM(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg) +ComputeCOM::ComputeCOM(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal compute com command"); + if (narg != 3) error->all(FLERR, "Illegal compute com command"); vector_flag = 1; size_vector = 3; @@ -37,7 +35,7 @@ ComputeCOM::ComputeCOM(LAMMPS *lmp, int narg, char **arg) : ComputeCOM::~ComputeCOM() { - delete [] vector; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -54,5 +52,5 @@ void ComputeCOM::compute_vector() invoked_vector = update->ntimestep; if (group->dynamic[igroup]) masstotal = group->mass(igroup); - group->xcm(igroup,masstotal,vector); + group->xcm(igroup, masstotal, vector); } diff --git a/src/compute_deprecated.cpp b/src/compute_deprecated.cpp index 4747afdf99..fca119a456 100644 --- a/src/compute_deprecated.cpp +++ b/src/compute_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -21,15 +20,14 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeDeprecated::ComputeDeprecated(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg) +ComputeDeprecated::ComputeDeprecated(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { std::string my_style = style; if (my_style == "DEPRECATED") { if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nCompute style 'DEPRECATED' is a dummy style\n\n"); + utils::logmesg(lmp, "\nCompute style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This compute style is no longer available"); + error->all(FLERR, "This compute style is no longer available"); } diff --git a/src/compute_erotate_sphere.cpp b/src/compute_erotate_sphere.cpp index 22b7c4b46d..3e863eaf65 100644 --- a/src/compute_erotate_sphere.cpp +++ b/src/compute_erotate_sphere.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -21,22 +20,21 @@ using namespace LAMMPS_NS; -#define INERTIA 0.4 // moment of inertia prefactor for sphere +#define INERTIA 0.4 // moment of inertia prefactor for sphere /* ---------------------------------------------------------------------- */ ComputeERotateSphere::ComputeERotateSphere(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg) + Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal compute erotate/sphere command"); + if (narg != 3) error->all(FLERR, "Illegal compute erotate/sphere command"); scalar_flag = 1; extscalar = 1; // error check - if (!atom->sphere_flag) - error->all(FLERR,"Compute erotate/sphere requires atom style sphere"); + if (!atom->sphere_flag) error->all(FLERR, "Compute erotate/sphere requires atom style sphere"); } /* ---------------------------------------------------------------------- */ @@ -64,10 +62,11 @@ double ComputeERotateSphere::compute_scalar() double erotate = 0.0; for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - erotate += (omega[i][0]*omega[i][0] + omega[i][1]*omega[i][1] + - omega[i][2]*omega[i][2]) * radius[i]*radius[i]*rmass[i]; + erotate += + (omega[i][0] * omega[i][0] + omega[i][1] * omega[i][1] + omega[i][2] * omega[i][2]) * + radius[i] * radius[i] * rmass[i]; - MPI_Allreduce(&erotate,&scalar,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&erotate, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); scalar *= pfactor; return scalar; } diff --git a/src/compute_ke.cpp b/src/compute_ke.cpp index ea011eccc1..c515522195 100644 --- a/src/compute_ke.cpp +++ b/src/compute_ke.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -15,18 +14,17 @@ #include "compute_ke.h" #include "atom.h" -#include "update.h" -#include "force.h" #include "error.h" +#include "force.h" +#include "update.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -ComputeKE::ComputeKE(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg) +ComputeKE::ComputeKE(LAMMPS *lmp, int narg, char **arg) : Compute(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal compute ke command"); + if (narg != 3) error->all(FLERR, "Illegal compute ke command"); scalar_flag = 1; extscalar = 1; @@ -57,15 +55,14 @@ double ComputeKE::compute_scalar() if (rmass) { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - ke += rmass[i] * (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + ke += rmass[i] * (v[i][0] * v[i][0] + v[i][1] * v[i][1] + v[i][2] * v[i][2]); } else { for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) - ke += mass[type[i]] * - (v[i][0]*v[i][0] + v[i][1]*v[i][1] + v[i][2]*v[i][2]); + ke += mass[type[i]] * (v[i][0] * v[i][0] + v[i][1] * v[i][1] + v[i][2] * v[i][2]); } - MPI_Allreduce(&ke,&scalar,1,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(&ke, &scalar, 1, MPI_DOUBLE, MPI_SUM, world); scalar *= pfactor; return scalar; } diff --git a/src/compute_stress_atom.cpp b/src/compute_stress_atom.cpp index ac69667294..f9c24847a1 100644 --- a/src/compute_stress_atom.cpp +++ b/src/compute_stress_atom.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -33,15 +32,14 @@ using namespace LAMMPS_NS; -enum{NOBIAS,BIAS}; +enum { NOBIAS, BIAS }; /* ---------------------------------------------------------------------- */ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - id_temp(nullptr), stress(nullptr) + Compute(lmp, narg, arg), id_temp(nullptr), stress(nullptr) { - if (narg < 4) error->all(FLERR,"Illegal compute stress/atom command"); + if (narg < 4) error->all(FLERR, "Illegal compute stress/atom command"); peratom_flag = 1; size_peratom_cols = 6; @@ -52,17 +50,15 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : // store temperature ID used by stress computation // insure it is valid for temperature computation - if (strcmp(arg[3],"NULL") == 0) id_temp = nullptr; + if (strcmp(arg[3], "NULL") == 0) + id_temp = nullptr; else { id_temp = utils::strdup(arg[3]); int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute stress/atom temperature ID"); + if (icompute < 0) error->all(FLERR, "Could not find compute stress/atom temperature ID"); if (modify->compute[icompute]->tempflag == 0) - error->all(FLERR, - "Compute stress/atom temperature ID does not " - "compute temperature"); + error->all(FLERR, "Compute stress/atom temperature ID does not compute temperature"); } // process optional args @@ -81,19 +77,28 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : fixflag = 0; int iarg = 4; while (iarg < narg) { - if (strcmp(arg[iarg],"ke") == 0) keflag = 1; - else if (strcmp(arg[iarg],"pair") == 0) pairflag = 1; - else if (strcmp(arg[iarg],"bond") == 0) bondflag = 1; - else if (strcmp(arg[iarg],"angle") == 0) angleflag = 1; - else if (strcmp(arg[iarg],"dihedral") == 0) dihedralflag = 1; - else if (strcmp(arg[iarg],"improper") == 0) improperflag = 1; - else if (strcmp(arg[iarg],"kspace") == 0) kspaceflag = 1; - else if (strcmp(arg[iarg],"fix") == 0) fixflag = 1; - else if (strcmp(arg[iarg],"virial") == 0) { + if (strcmp(arg[iarg], "ke") == 0) + keflag = 1; + else if (strcmp(arg[iarg], "pair") == 0) + pairflag = 1; + else if (strcmp(arg[iarg], "bond") == 0) + bondflag = 1; + else if (strcmp(arg[iarg], "angle") == 0) + angleflag = 1; + else if (strcmp(arg[iarg], "dihedral") == 0) + dihedralflag = 1; + else if (strcmp(arg[iarg], "improper") == 0) + improperflag = 1; + else if (strcmp(arg[iarg], "kspace") == 0) + kspaceflag = 1; + else if (strcmp(arg[iarg], "fix") == 0) + fixflag = 1; + else if (strcmp(arg[iarg], "virial") == 0) { pairflag = 1; bondflag = angleflag = dihedralflag = improperflag = 1; kspaceflag = fixflag = 1; - } else error->all(FLERR,"Illegal compute stress/atom command"); + } else + error->all(FLERR, "Illegal compute stress/atom command"); iarg++; } } @@ -105,7 +110,7 @@ ComputeStressAtom::ComputeStressAtom(LAMMPS *lmp, int narg, char **arg) : ComputeStressAtom::~ComputeStressAtom() { - delete [] id_temp; + delete[] id_temp; memory->destroy(stress); } @@ -118,24 +123,26 @@ void ComputeStressAtom::init() if (id_temp) { int icompute = modify->find_compute(id_temp); - if (icompute < 0) - error->all(FLERR,"Could not find compute stress/atom temperature ID"); + if (icompute < 0) error->all(FLERR, "Could not find compute stress/atom temperature ID"); temperature = modify->compute[icompute]; - if (temperature->tempbias) biasflag = BIAS; - else biasflag = NOBIAS; - } else biasflag = NOBIAS; + if (temperature->tempbias) + biasflag = BIAS; + else + biasflag = NOBIAS; + } else + biasflag = NOBIAS; } /* ---------------------------------------------------------------------- */ void ComputeStressAtom::compute_peratom() { - int i,j; + int i, j; double onemass; invoked_peratom = update->ntimestep; if (update->vflag_atom != invoked_peratom) - error->all(FLERR,"Per-atom virial was not tallied on needed timestep"); + error->all(FLERR, "Per-atom virial was not tallied on needed timestep"); // grow local stress array if necessary // needs to be atom->nmax in length @@ -143,7 +150,7 @@ void ComputeStressAtom::compute_peratom() if (atom->nmax > nmax) { memory->destroy(stress); nmax = atom->nmax; - memory->create(stress,nmax,6,"stress/atom:stress"); + memory->create(stress, nmax, 6, "stress/atom:stress"); array_atom = stress; } @@ -166,51 +173,44 @@ void ComputeStressAtom::compute_peratom() // clear local stress array for (i = 0; i < ntotal; i++) - for (j = 0; j < 6; j++) - stress[i][j] = 0.0; + for (j = 0; j < 6; j++) stress[i][j] = 0.0; // add in per-atom contributions from each force if (pairflag && force->pair && force->pair->compute_flag) { double **vatom = force->pair->vatom; for (i = 0; i < npair; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } if (bondflag && force->bond) { double **vatom = force->bond->vatom; for (i = 0; i < nbond; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } if (angleflag && force->angle) { double **vatom = force->angle->vatom; for (i = 0; i < nbond; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } if (dihedralflag && force->dihedral) { double **vatom = force->dihedral->vatom; for (i = 0; i < nbond; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } if (improperflag && force->improper) { double **vatom = force->improper->vatom; for (i = 0; i < nbond; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } if (kspaceflag && force->kspace && force->kspace->compute_flag) { double **vatom = force->kspace->vatom; for (i = 0; i < nkspace; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } // add in per-atom contributions from relevant fixes @@ -225,15 +225,13 @@ void ComputeStressAtom::compute_peratom() double **vatom = ifix->vatom; if (vatom) for (i = 0; i < nlocal; i++) - for (j = 0; j < 6; j++) - stress[i][j] += vatom[i][j]; + for (j = 0; j < 6; j++) stress[i][j] += vatom[i][j]; } } // communicate ghost virials between neighbor procs - if (force->newton || (force->kspace && force->kspace->tip4pflag)) - comm->reverse_comm(this); + if (force->newton || (force->kspace && force->kspace->tip4pflag)) comm->reverse_comm(this); // zero virial of atoms not in group // only do this after comm since ghost contributions must be included @@ -266,24 +264,24 @@ void ComputeStressAtom::compute_peratom() for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { onemass = mvv2e * rmass[i]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; + stress[i][0] += onemass * v[i][0] * v[i][0]; + stress[i][1] += onemass * v[i][1] * v[i][1]; + stress[i][2] += onemass * v[i][2] * v[i][2]; + stress[i][3] += onemass * v[i][0] * v[i][1]; + stress[i][4] += onemass * v[i][0] * v[i][2]; + stress[i][5] += onemass * v[i][1] * v[i][2]; } } else { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { onemass = mvv2e * mass[type[i]]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; + stress[i][0] += onemass * v[i][0] * v[i][0]; + stress[i][1] += onemass * v[i][1] * v[i][1]; + stress[i][2] += onemass * v[i][2] * v[i][2]; + stress[i][3] += onemass * v[i][0] * v[i][1]; + stress[i][4] += onemass * v[i][0] * v[i][2]; + stress[i][5] += onemass * v[i][1] * v[i][2]; } } @@ -292,35 +290,34 @@ void ComputeStressAtom::compute_peratom() // invoke temperature if it hasn't been already // this insures bias factor is pre-computed - if (keflag && temperature->invoked_scalar != update->ntimestep) - temperature->compute_scalar(); + if (keflag && temperature->invoked_scalar != update->ntimestep) temperature->compute_scalar(); if (rmass) { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - temperature->remove_bias(i,v[i]); + temperature->remove_bias(i, v[i]); onemass = mvv2e * rmass[i]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; - temperature->restore_bias(i,v[i]); + stress[i][0] += onemass * v[i][0] * v[i][0]; + stress[i][1] += onemass * v[i][1] * v[i][1]; + stress[i][2] += onemass * v[i][2] * v[i][2]; + stress[i][3] += onemass * v[i][0] * v[i][1]; + stress[i][4] += onemass * v[i][0] * v[i][2]; + stress[i][5] += onemass * v[i][1] * v[i][2]; + temperature->restore_bias(i, v[i]); } } else { for (i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - temperature->remove_bias(i,v[i]); + temperature->remove_bias(i, v[i]); onemass = mvv2e * mass[type[i]]; - stress[i][0] += onemass*v[i][0]*v[i][0]; - stress[i][1] += onemass*v[i][1]*v[i][1]; - stress[i][2] += onemass*v[i][2]*v[i][2]; - stress[i][3] += onemass*v[i][0]*v[i][1]; - stress[i][4] += onemass*v[i][0]*v[i][2]; - stress[i][5] += onemass*v[i][1]*v[i][2]; - temperature->restore_bias(i,v[i]); + stress[i][0] += onemass * v[i][0] * v[i][0]; + stress[i][1] += onemass * v[i][1] * v[i][1]; + stress[i][2] += onemass * v[i][2] * v[i][2]; + stress[i][3] += onemass * v[i][0] * v[i][1]; + stress[i][4] += onemass * v[i][0] * v[i][2]; + stress[i][5] += onemass * v[i][1] * v[i][2]; + temperature->restore_bias(i, v[i]); } } } @@ -344,7 +341,7 @@ void ComputeStressAtom::compute_peratom() int ComputeStressAtom::pack_reverse_comm(int n, int first, double *buf) { - int i,m,last; + int i, m, last; m = 0; last = first + n; @@ -363,7 +360,7 @@ int ComputeStressAtom::pack_reverse_comm(int n, int first, double *buf) void ComputeStressAtom::unpack_reverse_comm(int n, int *list, double *buf) { - int i,j,m; + int i, j, m; m = 0; for (i = 0; i < n; i++) { @@ -383,6 +380,6 @@ void ComputeStressAtom::unpack_reverse_comm(int n, int *list, double *buf) double ComputeStressAtom::memory_usage() { - double bytes = (double)nmax*6 * sizeof(double); + double bytes = (double) nmax * 6 * sizeof(double); return bytes; } diff --git a/src/dihedral_deprecated.cpp b/src/dihedral_deprecated.cpp index 57ea7f1afa..63afe28dff 100644 --- a/src/dihedral_deprecated.cpp +++ b/src/dihedral_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -23,7 +22,6 @@ #include "error.h" #include "force.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ @@ -36,15 +34,15 @@ void DihedralDeprecated::settings(int, char **) // so when this is called, our style was just added at the end // of the list of substyles - if (utils::strmatch(my_style,"^hybrid")) { + if (utils::strmatch(my_style, "^hybrid")) { auto hybrid = dynamic_cast(force->dihedral); my_style = hybrid->keywords[hybrid->nstyles]; } if (my_style == "DEPRECATED") { if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nDihedral style 'DEPRECATED' is a dummy style\n\n"); + utils::logmesg(lmp, "\nDihedral style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This dihedral style is no longer available"); + error->all(FLERR, "This dihedral style is no longer available"); } diff --git a/src/dump_deprecated.cpp b/src/dump_deprecated.cpp index fdd9d06dbc..1c4fb59390 100644 --- a/src/dump_deprecated.cpp +++ b/src/dump_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -21,15 +20,13 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -DumpDeprecated::DumpDeprecated(LAMMPS *lmp, int narg, char **arg) : - Dump(lmp, narg, arg) +DumpDeprecated::DumpDeprecated(LAMMPS *lmp, int narg, char **arg) : Dump(lmp, narg, arg) { std::string my_style = style; if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nDump style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nDump style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This dump style is no longer available"); + error->all(FLERR, "This dump style is no longer available"); } diff --git a/src/fix_deprecated.cpp b/src/fix_deprecated.cpp index 017ae9ff1b..23e219c7c1 100644 --- a/src/fix_deprecated.cpp +++ b/src/fix_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -17,23 +16,21 @@ #include "comm.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -FixDeprecated::FixDeprecated(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) +FixDeprecated::FixDeprecated(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { std::string my_style = style; if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nFix style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nFix style 'DEPRECATED' is a dummy style\n\n"); return; - } else if (utils::strmatch(my_style,"^ave/spatial")) { + } else if (utils::strmatch(my_style, "^ave/spatial")) { if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nFix styles 'ave/spatial' and 'ave/spatial/sphere'" + utils::logmesg(lmp, + "\nFix styles 'ave/spatial' and 'ave/spatial/sphere'" " have been replaced\nby the more general fix ave/chunk " "and compute chunk/atom commands.\nAll ave/spatial and " "ave/spatial/sphere functionality is available in these" @@ -44,14 +41,16 @@ FixDeprecated::FixDeprecated(LAMMPS *lmp, int narg, char **arg) : "compute chunk/atom:\n dim, origin, delta, region, " "bound, discard, units\n\n"); } else if (my_style == "lb/pc") { - utils::logmesg(lmp,"\nFix style 'lb/pc' has been removed from the LATBOLTZ" - " package; 'fix nve' can be used in its place.\n\n"); + utils::logmesg(lmp, + "\nFix style 'lb/pc' has been removed from the LATBOLTZ" + " package; 'fix nve' can be used in its place.\n\n"); } else if (my_style == "lb/rigid/pc/sphere") { - utils::logmesg(lmp,"\nFix style 'lb/rigid/pc/sphere' has been removed from" + utils::logmesg(lmp, + "\nFix style 'lb/rigid/pc/sphere' has been removed from" " the LATBOLTZ package; 'fix rigid' can be used in its place.\n\n"); } else if (my_style == "client/md") { if (lmp->comm->me == 0) utils::logmesg(lmp, "\nThe MESSAGE package has been replaced by the MDI package.\n\n"); } - error->all(FLERR,"This fix style is no longer available"); + error->all(FLERR, "This fix style is no longer available"); } diff --git a/src/fix_nph.cpp b/src/fix_nph.cpp index 2f007c803e..0a8f67e4b0 100644 --- a/src/fix_nph.cpp +++ b/src/fix_nph.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -22,13 +21,10 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNPH::FixNPH(LAMMPS *lmp, int narg, char **arg) : - FixNH(lmp, narg, arg) +FixNPH::FixNPH(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { - if (tstat_flag) - error->all(FLERR,"Temperature control can not be used with fix nph"); - if (!pstat_flag) - error->all(FLERR,"Pressure control must be used with fix nph"); + if (tstat_flag) error->all(FLERR, "Temperature control can not be used with fix nph"); + if (!pstat_flag) error->all(FLERR, "Pressure control must be used with fix nph"); // create a new compute temp style // id = fix-ID + temp @@ -36,7 +32,7 @@ FixNPH::FixNPH(LAMMPS *lmp, int narg, char **arg) : // and thus its KE/temperature contribution should use group all id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} all temp",id_temp)); + modify->add_compute(fmt::format("{} all temp", id_temp)); tcomputeflag = 1; // create a new compute pressure style @@ -44,6 +40,6 @@ FixNPH::FixNPH(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id) + "_press"); - modify->add_compute(fmt::format("{} all pressure {}",id_press, id_temp)); + modify->add_compute(fmt::format("{} all pressure {}", id_press, id_temp)); pcomputeflag = 1; } diff --git a/src/fix_nph_sphere.cpp b/src/fix_nph_sphere.cpp index bd51c3b7f7..75aab70f06 100644 --- a/src/fix_nph_sphere.cpp +++ b/src/fix_nph_sphere.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -22,13 +21,10 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNPHSphere::FixNPHSphere(LAMMPS *lmp, int narg, char **arg) : - FixNHSphere(lmp, narg, arg) +FixNPHSphere::FixNPHSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { - if (tstat_flag) - error->all(FLERR,"Temperature control can not be used with fix nph/sphere"); - if (!pstat_flag) - error->all(FLERR,"Pressure control must be used with fix nph/sphere"); + if (tstat_flag) error->all(FLERR, "Temperature control can not be used with fix nph/sphere"); + if (!pstat_flag) error->all(FLERR, "Pressure control must be used with fix nph/sphere"); // create a new compute temp style // id = fix-ID + temp @@ -36,7 +32,7 @@ FixNPHSphere::FixNPHSphere(LAMMPS *lmp, int narg, char **arg) : // and thus its KE/temperature contribution should use group all id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} all temp/sphere",id_temp)); + modify->add_compute(fmt::format("{} all temp/sphere", id_temp)); tcomputeflag = 1; // create a new compute pressure style @@ -44,6 +40,6 @@ FixNPHSphere::FixNPHSphere(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id) + "_press"); - modify->add_compute(fmt::format("{} all pressure {}",id_press, id_temp)); + modify->add_compute(fmt::format("{} all pressure {}", id_press, id_temp)); pcomputeflag = 1; } diff --git a/src/fix_npt.cpp b/src/fix_npt.cpp index fb02919041..ff94ae678d 100644 --- a/src/fix_npt.cpp +++ b/src/fix_npt.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -22,13 +21,10 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNPT::FixNPT(LAMMPS *lmp, int narg, char **arg) : - FixNH(lmp, narg, arg) +FixNPT::FixNPT(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { - if (!tstat_flag) - error->all(FLERR,"Temperature control must be used with fix npt"); - if (!pstat_flag) - error->all(FLERR,"Pressure control must be used with fix npt"); + if (!tstat_flag) error->all(FLERR, "Temperature control must be used with fix npt"); + if (!pstat_flag) error->all(FLERR, "Pressure control must be used with fix npt"); // create a new compute temp style // id = fix-ID + temp @@ -36,7 +32,7 @@ FixNPT::FixNPT(LAMMPS *lmp, int narg, char **arg) : // and thus its KE/temperature contribution should use group all id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} all temp",id_temp)); + modify->add_compute(fmt::format("{} all temp", id_temp)); tcomputeflag = 1; // create a new compute pressure style @@ -44,6 +40,6 @@ FixNPT::FixNPT(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id) + "_press"); - modify->add_compute(fmt::format("{} all pressure {}",id_press, id_temp)); + modify->add_compute(fmt::format("{} all pressure {}", id_press, id_temp)); pcomputeflag = 1; } diff --git a/src/fix_npt_sphere.cpp b/src/fix_npt_sphere.cpp index fe5d5df6f6..64279b1099 100644 --- a/src/fix_npt_sphere.cpp +++ b/src/fix_npt_sphere.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -22,13 +21,10 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNPTSphere::FixNPTSphere(LAMMPS *lmp, int narg, char **arg) : - FixNHSphere(lmp, narg, arg) +FixNPTSphere::FixNPTSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { - if (!tstat_flag) - error->all(FLERR,"Temperature control must be used with fix npt/sphere"); - if (!pstat_flag) - error->all(FLERR,"Pressure control must be used with fix npt/sphere"); + if (!tstat_flag) error->all(FLERR, "Temperature control must be used with fix npt/sphere"); + if (!pstat_flag) error->all(FLERR, "Pressure control must be used with fix npt/sphere"); // create a new compute temp style // id = fix-ID + temp @@ -36,7 +32,7 @@ FixNPTSphere::FixNPTSphere(LAMMPS *lmp, int narg, char **arg) : // and thus its KE/temperature contribution should use group all id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} all temp/sphere",id_temp)); + modify->add_compute(fmt::format("{} all temp/sphere", id_temp)); tcomputeflag = 1; // create a new compute pressure style @@ -44,6 +40,6 @@ FixNPTSphere::FixNPTSphere(LAMMPS *lmp, int narg, char **arg) : // pass id_temp as 4th arg to pressure constructor id_press = utils::strdup(std::string(id) + "_press"); - modify->add_compute(fmt::format("{} all pressure {}",id_press, id_temp)); + modify->add_compute(fmt::format("{} all pressure {}", id_press, id_temp)); pcomputeflag = 1; } diff --git a/src/fix_nvt.cpp b/src/fix_nvt.cpp index e27f3ccc67..11404bf90d 100644 --- a/src/fix_nvt.cpp +++ b/src/fix_nvt.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -23,18 +22,15 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNVT::FixNVT(LAMMPS *lmp, int narg, char **arg) : - FixNH(lmp, narg, arg) +FixNVT::FixNVT(LAMMPS *lmp, int narg, char **arg) : FixNH(lmp, narg, arg) { - if (!tstat_flag) - error->all(FLERR,"Temperature control must be used with fix nvt"); - if (pstat_flag) - error->all(FLERR,"Pressure control can not be used with fix nvt"); + if (!tstat_flag) error->all(FLERR, "Temperature control must be used with fix nvt"); + if (pstat_flag) error->all(FLERR, "Pressure control can not be used with fix nvt"); // create a new compute temp style // id = fix-ID + temp id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} {} temp",id_temp,group->names[igroup])); + modify->add_compute(fmt::format("{} {} temp", id_temp, group->names[igroup])); tcomputeflag = 1; } diff --git a/src/improper_deprecated.cpp b/src/improper_deprecated.cpp index b1e3d3511b..7b757e62e1 100644 --- a/src/improper_deprecated.cpp +++ b/src/improper_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories diff --git a/src/kspace_deprecated.cpp b/src/kspace_deprecated.cpp index 46a3e6df6b..62605542d8 100644 --- a/src/kspace_deprecated.cpp +++ b/src/kspace_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,8 @@ #include "kspace_deprecated.h" #include "comm.h" -#include "force.h" #include "error.h" +#include "force.h" using namespace LAMMPS_NS; @@ -31,11 +30,8 @@ void KSpaceDeprecated::settings(int, char **) std::string my_style = force->kspace_style; if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nKSpace style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nKSpace style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This kspace style is no longer available"); + error->all(FLERR, "This kspace style is no longer available"); } - - diff --git a/src/minimize.cpp b/src/minimize.cpp index 206bc51914..e9c6ec25b3 100644 --- a/src/minimize.cpp +++ b/src/minimize.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -32,28 +31,26 @@ Minimize::Minimize(LAMMPS *lmp) : Command(lmp) {} void Minimize::command(int narg, char **arg) { - if (narg != 4) error->all(FLERR,"Illegal minimize command"); + if (narg != 4) error->all(FLERR, "Illegal minimize command"); if (domain->box_exist == 0) - error->all(FLERR,"Minimize command before simulation box is defined"); + error->all(FLERR, "Minimize command before simulation box is defined"); // ignore minimize command, if walltime limit was already reached if (timer->is_timeout()) return; - update->etol = utils::numeric(FLERR,arg[0],false,lmp); - update->ftol = utils::numeric(FLERR,arg[1],false,lmp); - update->nsteps = utils::inumeric(FLERR,arg[2],false,lmp); - update->max_eval = utils::inumeric(FLERR,arg[3],false,lmp); + update->etol = utils::numeric(FLERR, arg[0], false, lmp); + update->ftol = utils::numeric(FLERR, arg[1], false, lmp); + update->nsteps = utils::inumeric(FLERR, arg[2], false, lmp); + update->max_eval = utils::inumeric(FLERR, arg[3], false, lmp); - if (update->etol < 0.0 || update->ftol < 0.0) - error->all(FLERR,"Illegal minimize command"); + if (update->etol < 0.0 || update->ftol < 0.0) error->all(FLERR, "Illegal minimize command"); if (lmp->citeme) lmp->citeme->flush(); update->whichflag = 2; update->beginstep = update->firststep = update->ntimestep; update->endstep = update->laststep = update->firststep + update->nsteps; - if (update->laststep < 0) - error->all(FLERR,"Too many iterations"); + if (update->laststep < 0) error->all(FLERR, "Too many iterations"); lmp->init(); timer->init_timeout(); diff --git a/src/pair_deprecated.cpp b/src/pair_deprecated.cpp index 691eff124f..cafb0ce7c0 100644 --- a/src/pair_deprecated.cpp +++ b/src/pair_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -18,11 +17,10 @@ #include "pair_deprecated.h" -#include "pair_hybrid.h" #include "comm.h" -#include "force.h" #include "error.h" - +#include "force.h" +#include "pair_hybrid.h" using namespace LAMMPS_NS; @@ -35,21 +33,21 @@ void PairDeprecated::settings(int, char **) // hybrid substyles are created in PairHybrid::settings(), so when this is // called, our style was just added at the end of the list of substyles - if (utils::strmatch(my_style,"^hybrid")) { + if (utils::strmatch(my_style, "^hybrid")) { auto hybrid = dynamic_cast(force->pair); my_style = hybrid->keywords[hybrid->nstyles]; } if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nPair style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nPair style 'DEPRECATED' is a dummy style\n\n"); return; } if (my_style == "reax") { if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nPair style 'reax' has been removed from LAMMPS " + utils::logmesg(lmp, + "\nPair style 'reax' has been removed from LAMMPS " "after the 12 December 2018 version\n\n"); } - error->all(FLERR,"This pair style is no longer available"); + error->all(FLERR, "This pair style is no longer available"); } diff --git a/src/region_deprecated.cpp b/src/region_deprecated.cpp index e6d81fdc44..bc59d77259 100644 --- a/src/region_deprecated.cpp +++ b/src/region_deprecated.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -17,20 +16,17 @@ #include "comm.h" #include "error.h" - using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -RegionDeprecated::RegionDeprecated(LAMMPS *lmp, int narg, char **arg) : - Region(lmp, narg, arg) +RegionDeprecated::RegionDeprecated(LAMMPS *lmp, int narg, char **arg) : Region(lmp, narg, arg) { std::string my_style = style; if (my_style == "DEPRECATED") { - if (lmp->comm->me == 0) - utils::logmesg(lmp,"\nRegion style 'DEPRECATED' is a dummy style\n\n"); + if (lmp->comm->me == 0) utils::logmesg(lmp, "\nRegion style 'DEPRECATED' is a dummy style\n\n"); return; } - error->all(FLERR,"This region style is no longer available"); + error->all(FLERR, "This region style is no longer available"); } From cd8bef3b0b3c60ed5e1b9e9388efcb7848adcb31 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 07:04:35 -0400 Subject: [PATCH 18/46] enable and apply clang-format --- src/compute_dihedral.cpp | 29 ++++++++++------------ src/compute_improper.cpp | 33 +++++++++++--------------- src/fix_dummy.cpp | 31 ++++++++++++++---------- src/fix_nve_noforce.cpp | 12 ++++------ src/fix_nvt_sphere.cpp | 13 ++++------ src/fix_wall_harmonic.cpp | 30 ++++++++++++----------- src/fix_wall_morse.cpp | 31 +++++++++++++----------- src/npair_copy.cpp | 1 - src/npair_full_bin_atomonly.cpp | 14 +++++------ src/npair_halffull_newtoff.cpp | 8 +++---- src/npair_skip_size.cpp | 8 +++---- src/nstencil_full_bin_2d.cpp | 6 ++--- src/nstencil_full_bin_3d.cpp | 7 +++--- src/nstencil_full_ghost_bin_2d.cpp | 7 +++--- src/nstencil_full_ghost_bin_3d.cpp | 7 +++--- src/nstencil_full_multi_2d.cpp | 6 ++--- src/nstencil_full_multi_old_2d.cpp | 9 ++++--- src/nstencil_full_multi_old_3d.cpp | 9 ++++--- src/nstencil_half_bin_2d.cpp | 6 ++--- src/nstencil_half_bin_2d_tri.cpp | 9 +++---- src/nstencil_half_bin_3d.cpp | 7 +++--- src/nstencil_half_bin_3d_tri.cpp | 10 ++++---- src/nstencil_half_multi_old_2d.cpp | 12 ++++------ src/nstencil_half_multi_old_2d_tri.cpp | 12 ++++------ src/nstencil_half_multi_old_3d.cpp | 12 ++++------ src/nstencil_half_multi_old_3d_tri.cpp | 12 ++++------ src/ntopo_bond_all.cpp | 28 ++++++++++------------ src/ntopo_bond_partial.cpp | 28 ++++++++++------------ src/reader.cpp | 20 ++++++++-------- src/write_dump.cpp | 31 +++++++++++------------- 30 files changed, 202 insertions(+), 246 deletions(-) diff --git a/src/compute_dihedral.cpp b/src/compute_dihedral.cpp index 86fd1b116e..2fda5b1f1c 100644 --- a/src/compute_dihedral.cpp +++ b/src/compute_dihedral.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -25,10 +24,9 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeDihedral::ComputeDihedral(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - emine(nullptr) + Compute(lmp, narg, arg), emine(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute dihedral command"); + if (narg != 3) error->all(FLERR, "Illegal compute dihedral command"); vector_flag = 1; extvector = 1; @@ -37,9 +35,8 @@ ComputeDihedral::ComputeDihedral(LAMMPS *lmp, int narg, char **arg) : // check if dihedral style hybrid exists - dihedral = dynamic_cast( force->dihedral_match("hybrid")); - if (!dihedral) - error->all(FLERR, "Dihedral style for compute dihedral command is not hybrid"); + dihedral = dynamic_cast(force->dihedral_match("hybrid")); + if (!dihedral) error->all(FLERR, "Dihedral style for compute dihedral command is not hybrid"); size_vector = nsub = dihedral->nstyles; emine = new double[nsub]; @@ -50,8 +47,8 @@ ComputeDihedral::ComputeDihedral(LAMMPS *lmp, int narg, char **arg) : ComputeDihedral::~ComputeDihedral() { - delete [] emine; - delete [] vector; + delete[] emine; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -60,11 +57,10 @@ void ComputeDihedral::init() { // recheck dihedral style in case it has been changed - dihedral = dynamic_cast( force->dihedral_match("hybrid")); - if (!dihedral) - error->all(FLERR, "Dihedral style for compute dihedral command is not hybrid"); + dihedral = dynamic_cast(force->dihedral_match("hybrid")); + if (!dihedral) error->all(FLERR, "Dihedral style for compute dihedral command is not hybrid"); if (dihedral->nstyles != nsub) - error->all(FLERR,"Dihedral style for compute dihedral command has changed"); + error->all(FLERR, "Dihedral style for compute dihedral command has changed"); } /* ---------------------------------------------------------------------- */ @@ -73,10 +69,9 @@ void ComputeDihedral::compute_vector() { invoked_vector = update->ntimestep; if (update->eflag_global != invoked_vector) - error->all(FLERR,"Energy was not tallied on needed timestep"); + error->all(FLERR, "Energy was not tallied on needed timestep"); - for (int i = 0; i < nsub; i++) - emine[i] = dihedral->styles[i]->energy; + for (int i = 0; i < nsub; i++) emine[i] = dihedral->styles[i]->energy; - MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(emine, vector, nsub, MPI_DOUBLE, MPI_SUM, world); } diff --git a/src/compute_improper.cpp b/src/compute_improper.cpp index 3e0780be49..d2b426c5b3 100644 --- a/src/compute_improper.cpp +++ b/src/compute_improper.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -14,21 +13,20 @@ #include "compute_improper.h" -#include "update.h" +#include "error.h" #include "force.h" #include "improper.h" #include "improper_hybrid.h" -#include "error.h" +#include "update.h" using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ ComputeImproper::ComputeImproper(LAMMPS *lmp, int narg, char **arg) : - Compute(lmp, narg, arg), - emine(nullptr) + Compute(lmp, narg, arg), emine(nullptr) { - if (narg != 3) error->all(FLERR,"Illegal compute improper command"); + if (narg != 3) error->all(FLERR, "Illegal compute improper command"); vector_flag = 1; extvector = 1; @@ -37,9 +35,8 @@ ComputeImproper::ComputeImproper(LAMMPS *lmp, int narg, char **arg) : // check if improper style hybrid exists - improper = dynamic_cast( force->improper_match("hybrid")); - if (!improper) - error->all(FLERR, "Improper style for compute improper command is not hybrid"); + improper = dynamic_cast(force->improper_match("hybrid")); + if (!improper) error->all(FLERR, "Improper style for compute improper command is not hybrid"); size_vector = nsub = improper->nstyles; emine = new double[nsub]; @@ -50,8 +47,8 @@ ComputeImproper::ComputeImproper(LAMMPS *lmp, int narg, char **arg) : ComputeImproper::~ComputeImproper() { - delete [] emine; - delete [] vector; + delete[] emine; + delete[] vector; } /* ---------------------------------------------------------------------- */ @@ -60,11 +57,10 @@ void ComputeImproper::init() { // recheck improper style in case it has been changed - improper = dynamic_cast( force->improper_match("hybrid")); - if (!improper) - error->all(FLERR, "Improper style for compute improper command is not hybrid"); + improper = dynamic_cast(force->improper_match("hybrid")); + if (!improper) error->all(FLERR, "Improper style for compute improper command is not hybrid"); if (improper->nstyles != nsub) - error->all(FLERR,"Improper style for compute improper command has changed"); + error->all(FLERR, "Improper style for compute improper command has changed"); } /* ---------------------------------------------------------------------- */ @@ -73,10 +69,9 @@ void ComputeImproper::compute_vector() { invoked_vector = update->ntimestep; if (update->eflag_global != invoked_vector) - error->all(FLERR,"Energy was not tallied on needed timestep"); + error->all(FLERR, "Energy was not tallied on needed timestep"); - for (int i = 0; i < nsub; i++) - emine[i] = improper->styles[i]->energy; + for (int i = 0; i < nsub; i++) emine[i] = improper->styles[i]->energy; - MPI_Allreduce(emine,vector,nsub,MPI_DOUBLE,MPI_SUM,world); + MPI_Allreduce(emine, vector, nsub, MPI_DOUBLE, MPI_SUM, world); } diff --git a/src/fix_dummy.cpp b/src/fix_dummy.cpp index d8a4df173b..eb8c08f43e 100644 --- a/src/fix_dummy.cpp +++ b/src/fix_dummy.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -13,16 +12,16 @@ ------------------------------------------------------------------------- */ #include "fix_dummy.h" -#include #include "error.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) +FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { // process optional args // customize here and in setmask() by adding a new keyword from fix.h @@ -39,14 +38,22 @@ FixDummy::FixDummy(LAMMPS *lmp, int narg, char **arg) : int iarg = 3; while (iarg < narg) { - if (strcmp(arg[iarg],"initial_integrate") == 0) initial_integrate_flag = 1; - else if (strcmp(arg[iarg],"final_integrate") == 0) final_integrate_flag = 1; - else if (strcmp(arg[iarg],"pre_exchange") == 0) pre_exchange_flag = 1; - else if (strcmp(arg[iarg],"pre_neighbor") == 0) pre_neighbor_flag = 1; - else if (strcmp(arg[iarg],"pre_force") == 0) pre_force_flag = 1; - else if (strcmp(arg[iarg],"post_force") == 0) post_force_flag = 1; - else if (strcmp(arg[iarg],"end_of_step") == 0) end_of_step_flag = 1; - else error->all(FLERR,"Illegal fix DUMMY command"); + if (strcmp(arg[iarg], "initial_integrate") == 0) + initial_integrate_flag = 1; + else if (strcmp(arg[iarg], "final_integrate") == 0) + final_integrate_flag = 1; + else if (strcmp(arg[iarg], "pre_exchange") == 0) + pre_exchange_flag = 1; + else if (strcmp(arg[iarg], "pre_neighbor") == 0) + pre_neighbor_flag = 1; + else if (strcmp(arg[iarg], "pre_force") == 0) + pre_force_flag = 1; + else if (strcmp(arg[iarg], "post_force") == 0) + post_force_flag = 1; + else if (strcmp(arg[iarg], "end_of_step") == 0) + end_of_step_flag = 1; + else + error->all(FLERR, "Illegal fix DUMMY command"); iarg++; } } diff --git a/src/fix_nve_noforce.cpp b/src/fix_nve_noforce.cpp index d043dcbd4a..7b79dcc267 100644 --- a/src/fix_nve_noforce.cpp +++ b/src/fix_nve_noforce.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -24,10 +23,9 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNVENoforce::FixNVENoforce(LAMMPS *lmp, int narg, char **arg) : - Fix(lmp, narg, arg) +FixNVENoforce::FixNVENoforce(LAMMPS *lmp, int narg, char **arg) : Fix(lmp, narg, arg) { - if (narg != 3) error->all(FLERR,"Illegal fix nve/noforce command"); + if (narg != 3) error->all(FLERR, "Illegal fix nve/noforce command"); time_integrate = 1; } @@ -48,8 +46,8 @@ void FixNVENoforce::init() { dtv = update->dt; - if (utils::strmatch(update->integrate_style,"^respa")) - step_respa = (dynamic_cast( update->integrate))->step; + if (utils::strmatch(update->integrate_style, "^respa")) + step_respa = (dynamic_cast(update->integrate))->step; } /* ---------------------------------------------------------------------- */ @@ -75,7 +73,7 @@ void FixNVENoforce::initial_integrate(int /*vflag*/) void FixNVENoforce::initial_integrate_respa(int vflag, int ilevel, int flag) { - if (flag) return; // only used by NPT,NPH + if (flag) return; // only used by NPT,NPH dtv = step_respa[ilevel]; diff --git a/src/fix_nvt_sphere.cpp b/src/fix_nvt_sphere.cpp index aff4462356..349da470c7 100644 --- a/src/fix_nvt_sphere.cpp +++ b/src/fix_nvt_sphere.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -23,19 +22,15 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixNVTSphere::FixNVTSphere(LAMMPS *lmp, int narg, char **arg) : - FixNHSphere(lmp, narg, arg) +FixNVTSphere::FixNVTSphere(LAMMPS *lmp, int narg, char **arg) : FixNHSphere(lmp, narg, arg) { - if (!tstat_flag) - error->all(FLERR,"Temperature control must be used with fix nvt/sphere"); - if (pstat_flag) - error->all(FLERR,"Pressure control can not be used with fix nvt/sphere"); + if (!tstat_flag) error->all(FLERR, "Temperature control must be used with fix nvt/sphere"); + if (pstat_flag) error->all(FLERR, "Pressure control can not be used with fix nvt/sphere"); // create a new compute temp style // id = fix-ID + temp id_temp = utils::strdup(std::string(id) + "_temp"); - modify->add_compute(fmt::format("{} {} temp/sphere", - id_temp,group->names[igroup])); + modify->add_compute(fmt::format("{} {} temp/sphere", id_temp, group->names[igroup])); tcomputeflag = 1; } diff --git a/src/fix_wall_harmonic.cpp b/src/fix_wall_harmonic.cpp index 1afca23c96..4b55dde8aa 100644 --- a/src/fix_wall_harmonic.cpp +++ b/src/fix_wall_harmonic.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -21,8 +20,7 @@ using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixWallHarmonic::FixWallHarmonic(LAMMPS *lmp, int narg, char **arg) : - FixWall(lmp, narg, arg) +FixWallHarmonic::FixWallHarmonic(LAMMPS *lmp, int narg, char **arg) : FixWall(lmp, narg, arg) { dynamic_group_allow = 1; } @@ -36,7 +34,7 @@ FixWallHarmonic::FixWallHarmonic(LAMMPS *lmp, int narg, char **arg) : void FixWallHarmonic::wall_particle(int m, int which, double coord) { - double delta,dr,fwall; + double delta, dr, fwall; double vn; double **x = atom->x; @@ -52,25 +50,29 @@ void FixWallHarmonic::wall_particle(int m, int which, double coord) for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit) { - if (side < 0) delta = x[i][dim] - coord; - else delta = coord - x[i][dim]; + if (side < 0) + delta = x[i][dim] - coord; + else + delta = coord - x[i][dim]; if (delta >= cutoff[m]) continue; if (delta <= 0.0) { onflag = 1; continue; } - dr = cutoff[m]-delta; - fwall = side * 2.0*epsilon[m]*dr; + dr = cutoff[m] - delta; + fwall = side * 2.0 * epsilon[m] * dr; f[i][dim] -= fwall; - ewall[0] += epsilon[m]*dr*dr; - ewall[m+1] += fwall; + ewall[0] += epsilon[m] * dr * dr; + ewall[m + 1] += fwall; if (evflag) { - if (side < 0) vn = -fwall*delta; - else vn = fwall*delta; - v_tally(dim,i,vn); + if (side < 0) + vn = -fwall * delta; + else + vn = fwall * delta; + v_tally(dim, i, vn); } } - if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR, "Particle on or inside fix wall surface"); } diff --git a/src/fix_wall_morse.cpp b/src/fix_wall_morse.cpp index afac920c01..942e8e0e04 100644 --- a/src/fix_wall_morse.cpp +++ b/src/fix_wall_morse.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -13,17 +12,17 @@ ------------------------------------------------------------------------- */ #include "fix_wall_morse.h" -#include #include "atom.h" #include "error.h" +#include + using namespace LAMMPS_NS; using namespace FixConst; /* ---------------------------------------------------------------------- */ -FixWallMorse::FixWallMorse(LAMMPS *lmp, int narg, char **arg) : - FixWall(lmp, narg, arg) +FixWallMorse::FixWallMorse(LAMMPS *lmp, int narg, char **arg) : FixWall(lmp, narg, arg) { dynamic_group_allow = 1; } @@ -34,7 +33,7 @@ void FixWallMorse::precompute(int m) { coeff1[m] = 2.0 * epsilon[m] * alpha[m]; const double alpha_dr = -alpha[m] * (cutoff[m] - sigma[m]); - offset[m] = epsilon[m] * (exp(2.0*alpha_dr) - 2.0*exp(alpha_dr)); + offset[m] = epsilon[m] * (exp(2.0 * alpha_dr) - 2.0 * exp(alpha_dr)); } /* ---------------------------------------------------------------------- @@ -46,7 +45,7 @@ void FixWallMorse::precompute(int m) void FixWallMorse::wall_particle(int m, int which, double coord) { - double delta,fwall; + double delta, fwall; double vn; double **x = atom->x; @@ -62,8 +61,10 @@ void FixWallMorse::wall_particle(int m, int which, double coord) for (int i = 0; i < nlocal; i++) { if (mask[i] & groupbit) { - if (side < 0) delta = x[i][dim] - coord; - else delta = coord - x[i][dim]; + if (side < 0) + delta = x[i][dim] - coord; + else + delta = coord - x[i][dim]; if (delta >= cutoff[m]) continue; if (delta <= 0.0) { onflag = 1; @@ -71,18 +72,20 @@ void FixWallMorse::wall_particle(int m, int which, double coord) } double dr = delta - sigma[m]; double dexp = exp(-alpha[m] * dr); - fwall = side * coeff1[m] * (dexp*dexp - dexp) / delta; - ewall[0] += epsilon[m] * (dexp*dexp - 2.0*dexp) - offset[m]; + fwall = side * coeff1[m] * (dexp * dexp - dexp) / delta; + ewall[0] += epsilon[m] * (dexp * dexp - 2.0 * dexp) - offset[m]; f[i][dim] -= fwall; - ewall[m+1] += fwall; + ewall[m + 1] += fwall; if (evflag) { - if (side < 0) vn = -fwall*delta; - else vn = fwall*delta; + if (side < 0) + vn = -fwall * delta; + else + vn = fwall * delta; v_tally(dim, i, vn); } } } - if (onflag) error->one(FLERR,"Particle on or inside fix wall surface"); + if (onflag) error->one(FLERR, "Particle on or inside fix wall surface"); } diff --git a/src/npair_copy.cpp b/src/npair_copy.cpp index b3cab53e0a..38a36d0ba5 100644 --- a/src/npair_copy.cpp +++ b/src/npair_copy.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories diff --git a/src/npair_full_bin_atomonly.cpp b/src/npair_full_bin_atomonly.cpp index b8c4378280..aa7a91dbbe 100644 --- a/src/npair_full_bin_atomonly.cpp +++ b/src/npair_full_bin_atomonly.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -32,8 +31,8 @@ NPairFullBinAtomonly::NPairFullBinAtomonly(LAMMPS *lmp) : NPair(lmp) {} void NPairFullBinAtomonly::build(NeighList *list) { - int i,j,k,n,itype,jtype,ibin; - double xtmp,ytmp,ztmp,delx,dely,delz,rsq; + int i, j, k, n, itype, jtype, ibin; + double xtmp, ytmp, ztmp, delx, dely, delz, rsq; int *neighptr; double **x = atom->x; @@ -66,16 +65,16 @@ void NPairFullBinAtomonly::build(NeighList *list) ibin = atom2bin[i]; for (k = 0; k < nstencil; k++) { - for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + for (j = binhead[ibin + stencil[k]]; j >= 0; j = bins[j]) { if (i == j) continue; jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) continue; + if (exclude && exclusion(i, j, itype, jtype, mask, molecule)) continue; delx = xtmp - x[j][0]; dely = ytmp - x[j][1]; delz = ztmp - x[j][2]; - rsq = delx*delx + dely*dely + delz*delz; + rsq = delx * delx + dely * dely + delz * delz; if (rsq <= cutneighsq[itype][jtype]) neighptr[n++] = j; } @@ -85,8 +84,7 @@ void NPairFullBinAtomonly::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_halffull_newtoff.cpp b/src/npair_halffull_newtoff.cpp index 475325c2f0..57c121b933 100644 --- a/src/npair_halffull_newtoff.cpp +++ b/src/npair_halffull_newtoff.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -35,8 +34,8 @@ NPairHalffullNewtoff::NPairHalffullNewtoff(LAMMPS *lmp) : NPair(lmp) {} void NPairHalffullNewtoff::build(NeighList *list) { - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; + int i, j, ii, jj, n, jnum, joriginal; + int *neighptr, *jlist; int *ilist = list->ilist; int *numneigh = list->numneigh; @@ -74,8 +73,7 @@ void NPairHalffullNewtoff::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/npair_skip_size.cpp b/src/npair_skip_size.cpp index f4fe760e08..b0134fd82c 100644 --- a/src/npair_skip_size.cpp +++ b/src/npair_skip_size.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -32,8 +31,8 @@ NPairSkipSize::NPairSkipSize(LAMMPS *lmp) : NPair(lmp) {} void NPairSkipSize::build(NeighList *list) { - int i,j,ii,jj,n,itype,jnum,joriginal; - int *neighptr,*jlist; + int i, j, ii, jj, n, itype, jnum, joriginal; + int *neighptr, *jlist; int *type = atom->type; int *ilist = list->ilist; @@ -80,8 +79,7 @@ void NPairSkipSize::build(NeighList *list) firstneigh[i] = neighptr; numneigh[i] = n; ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); + if (ipage->status()) error->one(FLERR, "Neighbor list overflow, boost neigh_modify one"); } list->inum = inum; diff --git a/src/nstencil_full_bin_2d.cpp b/src/nstencil_full_bin_2d.cpp index ba4ca97ed6..5c79f3ae8a 100644 --- a/src/nstencil_full_bin_2d.cpp +++ b/src/nstencil_full_bin_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -26,12 +25,11 @@ NStencilFullBin2d::NStencilFullBin2d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilFullBin2d::create() { - int i,j; + int i, j; nstencil = 0; for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; + if (bin_distance(i, j, 0) < cutneighmaxsq) stencil[nstencil++] = j * mbinx + i; } diff --git a/src/nstencil_full_bin_3d.cpp b/src/nstencil_full_bin_3d.cpp index 8aa593eb0b..837bf109f2 100644 --- a/src/nstencil_full_bin_3d.cpp +++ b/src/nstencil_full_bin_3d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -26,13 +25,13 @@ NStencilFullBin3d::NStencilFullBin3d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilFullBin3d::create() { - int i,j,k; + int i, j, k; nstencil = 0; for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + if (bin_distance(i, j, k) < cutneighmaxsq) + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } diff --git a/src/nstencil_full_ghost_bin_2d.cpp b/src/nstencil_full_ghost_bin_2d.cpp index b5a6bac56c..32c4440647 100644 --- a/src/nstencil_full_ghost_bin_2d.cpp +++ b/src/nstencil_full_ghost_bin_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -29,16 +28,16 @@ NStencilFullGhostBin2d::NStencilFullGhostBin2d(LAMMPS *lmp) : NStencil(lmp) void NStencilFullGhostBin2d::create() { - int i,j; + int i, j; nstencil = 0; for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) { + if (bin_distance(i, j, 0) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = 0; - stencil[nstencil++] = j*mbinx + i; + stencil[nstencil++] = j * mbinx + i; } } diff --git a/src/nstencil_full_ghost_bin_3d.cpp b/src/nstencil_full_ghost_bin_3d.cpp index 2023495c34..3d43e35e04 100644 --- a/src/nstencil_full_ghost_bin_3d.cpp +++ b/src/nstencil_full_ghost_bin_3d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -29,17 +28,17 @@ NStencilFullGhostBin3d::NStencilFullGhostBin3d(LAMMPS *lmp) : NStencil(lmp) void NStencilFullGhostBin3d::create() { - int i,j,k; + int i, j, k; nstencil = 0; for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) { + if (bin_distance(i, j, k) < cutneighmaxsq) { stencilxyz[nstencil][0] = i; stencilxyz[nstencil][1] = j; stencilxyz[nstencil][2] = k; - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } } diff --git a/src/nstencil_full_multi_2d.cpp b/src/nstencil_full_multi_2d.cpp index 52ae88d09e..d6e5fd2a9d 100644 --- a/src/nstencil_full_multi_2d.cpp +++ b/src/nstencil_full_multi_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -50,7 +49,6 @@ void NStencilFullMulti2d::create() int n = ncollections; double cutsq; - for (icollection = 0; icollection < n; icollection++) { for (jcollection = 0; jcollection < n; jcollection++) { if (flag_skip_multi[icollection][jcollection]) { @@ -72,8 +70,8 @@ void NStencilFullMulti2d::create() for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance_multi(i,j,0,bin_collection) < cutsq) - stencil_multi[icollection][jcollection][ns++] = j*mbinx + i; + if (bin_distance_multi(i, j, 0, bin_collection) < cutsq) + stencil_multi[icollection][jcollection][ns++] = j * mbinx + i; nstencil_multi[icollection][jcollection] = ns; } diff --git a/src/nstencil_full_multi_old_2d.cpp b/src/nstencil_full_multi_old_2d.cpp index d653e1080e..3747e99699 100644 --- a/src/nstencil_full_multi_old_2d.cpp +++ b/src/nstencil_full_multi_old_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -27,8 +26,8 @@ NStencilFullMultiOld2d::NStencilFullMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilFullMultiOld2d::create() { - int i,j,n; - double rsq,typesq; + int i, j, n; + double rsq, typesq; int *s; double *distsq; @@ -40,10 +39,10 @@ void NStencilFullMultiOld2d::create() n = 0; for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); + rsq = bin_distance(i, j, 0); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = j*mbinx + i; + s[n++] = j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/nstencil_full_multi_old_3d.cpp b/src/nstencil_full_multi_old_3d.cpp index 849ee5a9f9..04f10c5362 100644 --- a/src/nstencil_full_multi_old_3d.cpp +++ b/src/nstencil_full_multi_old_3d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -27,8 +26,8 @@ NStencilFullMultiOld3d::NStencilFullMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilFullMultiOld3d::create() { - int i,j,k,n; - double rsq,typesq; + int i, j, k, n; + double rsq, typesq; int *s; double *distsq; @@ -41,10 +40,10 @@ void NStencilFullMultiOld3d::create() for (k = -sz; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); + rsq = bin_distance(i, j, k); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; + s[n++] = k * mbiny * mbinx + j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/nstencil_half_bin_2d.cpp b/src/nstencil_half_bin_2d.cpp index 004d6a8016..b1ad0237a7 100644 --- a/src/nstencil_half_bin_2d.cpp +++ b/src/nstencil_half_bin_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -26,13 +25,12 @@ NStencilHalfBin2d::NStencilHalfBin2d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfBin2d::create() { - int i,j; + int i, j; nstencil = 0; for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) if (j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; + if (bin_distance(i, j, 0) < cutneighmaxsq) stencil[nstencil++] = j * mbinx + i; } diff --git a/src/nstencil_half_bin_2d_tri.cpp b/src/nstencil_half_bin_2d_tri.cpp index 9f5ace1ed1..7b7ce962a2 100644 --- a/src/nstencil_half_bin_2d_tri.cpp +++ b/src/nstencil_half_bin_2d_tri.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -18,8 +17,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfBin2dTri::NStencilHalfBin2dTri(LAMMPS *lmp) : - NStencil(lmp) {} +NStencilHalfBin2dTri::NStencilHalfBin2dTri(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -27,12 +25,11 @@ NStencilHalfBin2dTri::NStencilHalfBin2dTri(LAMMPS *lmp) : void NStencilHalfBin2dTri::create() { - int i,j; + int i, j; nstencil = 0; for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,0) < cutneighmaxsq) - stencil[nstencil++] = j*mbinx + i; + if (bin_distance(i, j, 0) < cutneighmaxsq) stencil[nstencil++] = j * mbinx + i; } diff --git a/src/nstencil_half_bin_3d.cpp b/src/nstencil_half_bin_3d.cpp index a8cacdb601..736bf151ee 100644 --- a/src/nstencil_half_bin_3d.cpp +++ b/src/nstencil_half_bin_3d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -26,7 +25,7 @@ NStencilHalfBin3d::NStencilHalfBin3d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfBin3d::create() { - int i,j,k; + int i, j, k; nstencil = 0; @@ -34,6 +33,6 @@ void NStencilHalfBin3d::create() for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (k > 0 || j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + if (bin_distance(i, j, k) < cutneighmaxsq) + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } diff --git a/src/nstencil_half_bin_3d_tri.cpp b/src/nstencil_half_bin_3d_tri.cpp index 8d1920ae8c..a5376d0208 100644 --- a/src/nstencil_half_bin_3d_tri.cpp +++ b/src/nstencil_half_bin_3d_tri.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -18,8 +17,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfBin3dTri::NStencilHalfBin3dTri(LAMMPS *lmp) : - NStencil(lmp) {} +NStencilHalfBin3dTri::NStencilHalfBin3dTri(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -27,13 +25,13 @@ NStencilHalfBin3dTri::NStencilHalfBin3dTri(LAMMPS *lmp) : void NStencilHalfBin3dTri::create() { - int i,j,k; + int i, j, k; nstencil = 0; for (k = 0; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[nstencil++] = k*mbiny*mbinx + j*mbinx + i; + if (bin_distance(i, j, k) < cutneighmaxsq) + stencil[nstencil++] = k * mbiny * mbinx + j * mbinx + i; } diff --git a/src/nstencil_half_multi_old_2d.cpp b/src/nstencil_half_multi_old_2d.cpp index 7a2f5a25e2..b4869b37f4 100644 --- a/src/nstencil_half_multi_old_2d.cpp +++ b/src/nstencil_half_multi_old_2d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfMultiOld2d:: -NStencilHalfMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} +NStencilHalfMultiOld2d::NStencilHalfMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -28,8 +26,8 @@ NStencilHalfMultiOld2d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfMultiOld2d::create() { - int i,j,n; - double rsq,typesq; + int i, j, n; + double rsq, typesq; int *s; double *distsq; @@ -42,10 +40,10 @@ void NStencilHalfMultiOld2d::create() for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) if (j > 0 || (j == 0 && i > 0)) { - rsq = bin_distance(i,j,0); + rsq = bin_distance(i, j, 0); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = j*mbinx + i; + s[n++] = j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/nstencil_half_multi_old_2d_tri.cpp b/src/nstencil_half_multi_old_2d_tri.cpp index 7e5158cc31..e6cf2d311e 100644 --- a/src/nstencil_half_multi_old_2d_tri.cpp +++ b/src/nstencil_half_multi_old_2d_tri.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfMultiOld2dTri:: -NStencilHalfMultiOld2dTri(LAMMPS *lmp) : NStencil(lmp) {} +NStencilHalfMultiOld2dTri::NStencilHalfMultiOld2dTri(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -28,8 +26,8 @@ NStencilHalfMultiOld2dTri(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfMultiOld2dTri::create() { - int i,j,n; - double rsq,typesq; + int i, j, n; + double rsq, typesq; int *s; double *distsq; @@ -41,10 +39,10 @@ void NStencilHalfMultiOld2dTri::create() n = 0; for (j = 0; j <= sy; j++) for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,0); + rsq = bin_distance(i, j, 0); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = j*mbinx + i; + s[n++] = j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/nstencil_half_multi_old_3d.cpp b/src/nstencil_half_multi_old_3d.cpp index cdb22c2d13..ada8c66610 100644 --- a/src/nstencil_half_multi_old_3d.cpp +++ b/src/nstencil_half_multi_old_3d.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfMultiOld3d:: -NStencilHalfMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} +NStencilHalfMultiOld3d::NStencilHalfMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -28,8 +26,8 @@ NStencilHalfMultiOld3d(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfMultiOld3d::create() { - int i,j,k,n; - double rsq,typesq; + int i, j, k, n; + double rsq, typesq; int *s; double *distsq; @@ -43,10 +41,10 @@ void NStencilHalfMultiOld3d::create() for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) if (k > 0 || j > 0 || (j == 0 && i > 0)) { - rsq = bin_distance(i,j,k); + rsq = bin_distance(i, j, k); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; + s[n++] = k * mbiny * mbinx + j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/nstencil_half_multi_old_3d_tri.cpp b/src/nstencil_half_multi_old_3d_tri.cpp index 6fb9b6d3d1..c58fe509ef 100644 --- a/src/nstencil_half_multi_old_3d_tri.cpp +++ b/src/nstencil_half_multi_old_3d_tri.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -19,8 +18,7 @@ using namespace LAMMPS_NS; /* ---------------------------------------------------------------------- */ -NStencilHalfMultiOld3dTri:: -NStencilHalfMultiOld3dTri(LAMMPS *lmp) : NStencil(lmp) {} +NStencilHalfMultiOld3dTri::NStencilHalfMultiOld3dTri(LAMMPS *lmp) : NStencil(lmp) {} /* ---------------------------------------------------------------------- create stencil based on bin geometry and cutoff @@ -28,8 +26,8 @@ NStencilHalfMultiOld3dTri(LAMMPS *lmp) : NStencil(lmp) {} void NStencilHalfMultiOld3dTri::create() { - int i,j,k,n; - double rsq,typesq; + int i, j, k, n; + double rsq, typesq; int *s; double *distsq; @@ -42,10 +40,10 @@ void NStencilHalfMultiOld3dTri::create() for (k = 0; k <= sz; k++) for (j = -sy; j <= sy; j++) for (i = -sx; i <= sx; i++) { - rsq = bin_distance(i,j,k); + rsq = bin_distance(i, j, k); if (rsq < typesq) { distsq[n] = rsq; - s[n++] = k*mbiny*mbinx + j*mbinx + i; + s[n++] = k * mbiny * mbinx + j * mbinx + i; } } nstencil_multi_old[itype] = n; diff --git a/src/ntopo_bond_all.cpp b/src/ntopo_bond_all.cpp index ab397cab7b..b3cd3011a5 100644 --- a/src/ntopo_bond_all.cpp +++ b/src/ntopo_bond_all.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -15,14 +14,13 @@ #include "ntopo_bond_all.h" #include "atom.h" -#include "force.h" #include "domain.h" -#include "update.h" +#include "error.h" +#include "force.h" +#include "memory.h" #include "output.h" #include "thermo.h" -#include "memory.h" -#include "error.h" - +#include "update.h" using namespace LAMMPS_NS; @@ -39,7 +37,7 @@ NTopoBondAll::NTopoBondAll(LAMMPS *lmp) : NTopo(lmp) void NTopoBondAll::build() { - int i,m,atom1; + int i, m, atom1; int nlocal = atom->nlocal; int *num_bond = atom->num_bond; @@ -58,16 +56,17 @@ void NTopoBondAll::build() if (atom1 == -1) { nmissing++; if (lostbond == Thermo::ERROR) - error->one(FLERR,"Bond atoms {} {} missing on " - "proc {} at step {}",tag[i], - bond_atom[i][m],me,update->ntimestep); + error->one(FLERR, + "Bond atoms {} {} missing on " + "proc {} at step {}", + tag[i], bond_atom[i][m], me, update->ntimestep); continue; } - atom1 = domain->closest_image(i,atom1); + atom1 = domain->closest_image(i, atom1); if (newton_bond || i < atom1) { if (nbondlist == maxbond) { maxbond += DELTA; - memory->grow(bondlist,maxbond,3,"neigh_topo:bondlist"); + memory->grow(bondlist, maxbond, 3, "neigh_topo:bondlist"); } bondlist[nbondlist][0] = i; bondlist[nbondlist][1] = atom1; @@ -80,7 +79,6 @@ void NTopoBondAll::build() if (lostbond == Thermo::IGNORE) return; int all; - MPI_Allreduce(&nmissing,&all,1,MPI_INT,MPI_SUM,world); - if (all && (me == 0)) - error->warning(FLERR,"Bond atoms missing at step {}",update->ntimestep); + MPI_Allreduce(&nmissing, &all, 1, MPI_INT, MPI_SUM, world); + if (all && (me == 0)) error->warning(FLERR, "Bond atoms missing at step {}", update->ntimestep); } diff --git a/src/ntopo_bond_partial.cpp b/src/ntopo_bond_partial.cpp index 851703776b..de6d0bf151 100644 --- a/src/ntopo_bond_partial.cpp +++ b/src/ntopo_bond_partial.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -15,14 +14,13 @@ #include "ntopo_bond_partial.h" #include "atom.h" -#include "force.h" #include "domain.h" -#include "update.h" +#include "error.h" +#include "force.h" +#include "memory.h" #include "output.h" #include "thermo.h" -#include "memory.h" -#include "error.h" - +#include "update.h" using namespace LAMMPS_NS; @@ -39,7 +37,7 @@ NTopoBondPartial::NTopoBondPartial(LAMMPS *lmp) : NTopo(lmp) void NTopoBondPartial::build() { - int i,m,atom1; + int i, m, atom1; int nlocal = atom->nlocal; int *num_bond = atom->num_bond; @@ -59,16 +57,17 @@ void NTopoBondPartial::build() if (atom1 == -1) { nmissing++; if (lostbond == Thermo::ERROR) - error->one(FLERR,"Bond atoms {} {} missing on " - "proc {} at step {}",tag[i], - bond_atom[i][m],me,update->ntimestep); + error->one(FLERR, + "Bond atoms {} {} missing on " + "proc {} at step {}", + tag[i], bond_atom[i][m], me, update->ntimestep); continue; } - atom1 = domain->closest_image(i,atom1); + atom1 = domain->closest_image(i, atom1); if (newton_bond || i < atom1) { if (nbondlist == maxbond) { maxbond += DELTA; - memory->grow(bondlist,maxbond,3,"neigh_topo:bondlist"); + memory->grow(bondlist, maxbond, 3, "neigh_topo:bondlist"); } bondlist[nbondlist][0] = i; bondlist[nbondlist][1] = atom1; @@ -81,7 +80,6 @@ void NTopoBondPartial::build() if (lostbond == Thermo::IGNORE) return; int all; - MPI_Allreduce(&nmissing,&all,1,MPI_INT,MPI_SUM,world); - if (all && (me == 0)) - error->warning(FLERR,"Bond atoms missing at step {}",update->ntimestep); + MPI_Allreduce(&nmissing, &all, 1, MPI_INT, MPI_SUM, world); + if (all && (me == 0)) error->warning(FLERR, "Bond atoms missing at step {}", update->ntimestep); } diff --git a/src/reader.cpp b/src/reader.cpp index eb8cd9ffb6..c7b99260e7 100644 --- a/src/reader.cpp +++ b/src/reader.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -41,19 +40,19 @@ void Reader::open_file(const std::string &file) if (platform::has_compress_extension(file)) { compressed = true; fp = platform::compressed_read(file); - if (!fp) error->one(FLERR,"Cannot open compressed file for reading"); + if (!fp) error->one(FLERR, "Cannot open compressed file for reading"); } else { compressed = false; if (utils::strmatch(file, "\\.bin$")) { binary = true; - fp = fopen(file.c_str(),"rb"); + fp = fopen(file.c_str(), "rb"); } else { - fp = fopen(file.c_str(),"r"); + fp = fopen(file.c_str(), "r"); binary = false; } } - if (!fp) error->one(FLERR,"Cannot open file {}: {}", file, utils::getsyserror()); + if (!fp) error->one(FLERR, "Cannot open file {}: {}", file, utils::getsyserror()); } /* ---------------------------------------------------------------------- @@ -64,8 +63,10 @@ void Reader::open_file(const std::string &file) void Reader::close_file() { if (fp == nullptr) return; - if (compressed) platform::pclose(fp); - else fclose(fp); + if (compressed) + platform::pclose(fp); + else + fclose(fp); fp = nullptr; } @@ -73,8 +74,7 @@ void Reader::close_file() detect unused arguments ------------------------------------------------------------------------- */ -void Reader::settings(int narg, char** /*args*/) +void Reader::settings(int narg, char ** /*args*/) { - if (narg > 0) - error->all(FLERR,"Illegal read_dump command"); + if (narg > 0) error->all(FLERR, "Illegal read_dump command"); } diff --git a/src/write_dump.cpp b/src/write_dump.cpp index e9f610fe31..2ce28f01e4 100644 --- a/src/write_dump.cpp +++ b/src/write_dump.cpp @@ -1,4 +1,3 @@ -// clang-format off /* ---------------------------------------------------------------------- LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator https://www.lammps.org/, Sandia National Laboratories @@ -34,41 +33,39 @@ using namespace LAMMPS_NS; void WriteDump::command(int narg, char **arg) { - if (narg < 3) error->all(FLERR,"Illegal write_dump command"); + if (narg < 3) error->all(FLERR, "Illegal write_dump command"); // modindex = index in args of "modify" keyword // will be narg if "modify" is not present int modindex; for (modindex = 0; modindex < narg; modindex++) - if (strcmp(arg[modindex],"modify") == 0) break; + if (strcmp(arg[modindex], "modify") == 0) break; // create the Dump instance // create dump command line with extra required args - auto dumpargs = new char*[modindex+2]; - dumpargs[0] = (char *) "WRITE_DUMP"; // dump id - dumpargs[1] = arg[0]; // group - dumpargs[2] = arg[1]; // dump style - std::string ntimestep = std::to_string(MAX(update->ntimestep,1)); - dumpargs[3] = (char *) ntimestep.c_str(); // dump frequency + auto dumpargs = new char *[modindex + 2]; + dumpargs[0] = (char *) "WRITE_DUMP"; // dump id + dumpargs[1] = arg[0]; // group + dumpargs[2] = arg[1]; // dump style + std::string ntimestep = std::to_string(MAX(update->ntimestep, 1)); + dumpargs[3] = (char *) ntimestep.c_str(); // dump frequency - for (int i = 2; i < modindex; ++i) dumpargs[i+2] = arg[i]; + for (int i = 2; i < modindex; ++i) dumpargs[i + 2] = arg[i]; - Dump *dump = output->add_dump(modindex+2, dumpargs); - if (modindex < narg) dump->modify_params(narg-modindex-1,&arg[modindex+1]); + Dump *dump = output->add_dump(modindex + 2, dumpargs); + if (modindex < narg) dump->modify_params(narg - modindex - 1, &arg[modindex + 1]); // write out one frame and then delete the dump again // set multifile_override for DumpImage so that filename needs no "*" - if (strcmp(arg[1],"image") == 0) - (dynamic_cast( dump))->multifile_override = 1; + if (strcmp(arg[1], "image") == 0) (dynamic_cast(dump))->multifile_override = 1; - if (strcmp(arg[1],"cfg") == 0) - (dynamic_cast( dump))->multifile_override = 1; + if (strcmp(arg[1], "cfg") == 0) (dynamic_cast(dump))->multifile_override = 1; if ((update->first_update == 0) && (comm->me == 0)) - error->warning(FLERR,"Calling write_dump before a full system init."); + error->warning(FLERR, "Calling write_dump before a full system init."); dump->init(); dump->write(); From 7d3d986d184437bb242fb384ac249ae4d3decce0 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 14:03:20 -0400 Subject: [PATCH 19/46] download, build, and link a missing jpeg library with CMake --- cmake/CMakeLists.libjpeg | 1482 ++++++++++++++++++++++++++++++++++++++ cmake/CMakeLists.txt | 16 +- 2 files changed, 1497 insertions(+), 1 deletion(-) create mode 100644 cmake/CMakeLists.libjpeg diff --git a/cmake/CMakeLists.libjpeg b/cmake/CMakeLists.libjpeg new file mode 100644 index 0000000000..f03eba40aa --- /dev/null +++ b/cmake/CMakeLists.libjpeg @@ -0,0 +1,1482 @@ +cmake_minimum_required(VERSION 3.10) +# When using CMake 3.4 and later, don't export symbols from executables unless +# the CMAKE_ENABLE_EXPORTS variable is set. +if(POLICY CMP0065) + cmake_policy(SET CMP0065 NEW) +endif() +if (POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() +if(CMAKE_EXECUTABLE_SUFFIX) + set(CMAKE_EXECUTABLE_SUFFIX_TMP ${CMAKE_EXECUTABLE_SUFFIX}) +endif() + +project(libjpeg-turbo C) +set(VERSION 2.1.3) +set(COPYRIGHT_YEAR "1991-2022") +string(REPLACE "." ";" VERSION_TRIPLET ${VERSION}) +list(GET VERSION_TRIPLET 0 VERSION_MAJOR) +list(GET VERSION_TRIPLET 1 VERSION_MINOR) +list(GET VERSION_TRIPLET 2 VERSION_REVISION) +function(pad_number NUMBER OUTPUT_LEN) + string(LENGTH "${${NUMBER}}" INPUT_LEN) + if(INPUT_LEN LESS OUTPUT_LEN) + math(EXPR ZEROES "${OUTPUT_LEN} - ${INPUT_LEN} - 1") + set(NUM ${${NUMBER}}) + foreach(C RANGE ${ZEROES}) + set(NUM "0${NUM}") + endforeach() + set(${NUMBER} ${NUM} PARENT_SCOPE) + endif() +endfunction() +pad_number(VERSION_MINOR 3) +pad_number(VERSION_REVISION 3) +set(LIBJPEG_TURBO_VERSION_NUMBER ${VERSION_MAJOR}${VERSION_MINOR}${VERSION_REVISION}) + +# CMake 3.14 and later sets CMAKE_MACOSX_BUNDLE to TRUE by default when +# CMAKE_SYSTEM_NAME is iOS, tvOS, or watchOS, which breaks the libjpeg-turbo +# build. (Specifically, when CMAKE_MACOSX_BUNDLE is TRUE, executables for +# Apple platforms are built as application bundles, which causes CMake to +# complain that our install() directives for executables do not specify a +# BUNDLE DESTINATION. Even if CMake did not complain, building executables as +# application bundles would break our iOS packages.) +set(CMAKE_MACOSX_BUNDLE FALSE) + +string(TIMESTAMP DEFAULT_BUILD "%Y%m%d") +set(BUILD ${DEFAULT_BUILD} CACHE STRING "Build string (default: ${DEFAULT_BUILD})") + +# NOTE: On Windows, this does nothing except when using MinGW or Cygwin. +# CMAKE_BUILD_TYPE has no meaning in Visual Studio, and it always defaults to +# Debug when using NMake. +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() +message(STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}") + +message(STATUS "VERSION = ${VERSION}, BUILD = ${BUILD}") + +include(cmakescripts/PackageInfo.cmake) + +# Detect CPU type and whether we're building 64-bit or 32-bit code +math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8") +string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC) +set(COUNT 1) +foreach(ARCH ${CMAKE_OSX_ARCHITECTURES}) + if(COUNT GREATER 1) + message(FATAL_ERROR "The libjpeg-turbo build system does not support multiple values in CMAKE_OSX_ARCHITECTURES.") + endif() + math(EXPR COUNT "${COUNT}+1") +endforeach() +if(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86_64" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "amd64" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "i[0-9]86" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "x86" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "ia32") + if(BITS EQUAL 64 OR CMAKE_C_COMPILER_ABI MATCHES "ELF X32") + set(CPU_TYPE x86_64) + else() + set(CPU_TYPE i386) + endif() + if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL ${CPU_TYPE}) + set(CMAKE_SYSTEM_PROCESSOR ${CPU_TYPE}) + endif() +elseif(CMAKE_SYSTEM_PROCESSOR_LC STREQUAL "aarch64" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^arm") + if(BITS EQUAL 64) + set(CPU_TYPE arm64) + else() + set(CPU_TYPE arm) + endif() +elseif(CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^ppc" OR + CMAKE_SYSTEM_PROCESSOR_LC MATCHES "^powerpc") + set(CPU_TYPE powerpc) +else() + set(CPU_TYPE ${CMAKE_SYSTEM_PROCESSOR_LC}) +endif() +if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR + CMAKE_OSX_ARCHITECTURES MATCHES "arm64" OR + CMAKE_OSX_ARCHITECTURES MATCHES "i386") + set(CPU_TYPE ${CMAKE_OSX_ARCHITECTURES}) +endif() +if(CMAKE_OSX_ARCHITECTURES MATCHES "ppc") + set(CPU_TYPE powerpc) +endif() +if(MSVC_IDE AND CMAKE_GENERATOR_PLATFORM MATCHES "arm64") + set(CPU_TYPE arm64) +endif() + +message(STATUS "${BITS}-bit build (${CPU_TYPE})") + +macro(report_directory var) + if(CMAKE_INSTALL_${var} STREQUAL CMAKE_INSTALL_FULL_${var}) + message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}}") + else() + message(STATUS "CMAKE_INSTALL_${var} = ${CMAKE_INSTALL_${var}} (${CMAKE_INSTALL_FULL_${var}})") + endif() + mark_as_advanced(CLEAR CMAKE_INSTALL_${var}) +endmacro() + +set(DIRLIST "BINDIR;DATAROOTDIR;DOCDIR;INCLUDEDIR;LIBDIR") +if(UNIX) + list(APPEND DIRLIST "MANDIR") +endif() +foreach(dir ${DIRLIST}) + report_directory(${dir}) +endforeach() + + +############################################################################### +# CONFIGURATION OPTIONS +############################################################################### + +macro(boolean_number var) + if(${var}) + set(${var} 1 ${ARGN}) + else() + set(${var} 0 ${ARGN}) + endif() +endmacro() + +option(ENABLE_SHARED "Build shared libraries" FALSE) +boolean_number(ENABLE_SHARED) +option(ENABLE_STATIC "Build static libraries" TRUE) +boolean_number(ENABLE_STATIC) +option(REQUIRE_SIMD "Generate a fatal error if SIMD extensions are not available for this platform (default is to fall back to a non-SIMD build)" FALSE) +boolean_number(REQUIRE_SIMD) +option(WITH_12BIT "Encode/decode JPEG images with 12-bit samples (implies WITH_ARITH_DEC=0 WITH_ARITH_ENC=0 WITH_JAVA=0 WITH_SIMD=0 WITH_TURBOJPEG=0 )" FALSE) +boolean_number(WITH_12BIT) +option(WITH_ARITH_DEC "Include arithmetic decoding support when emulating the libjpeg v6b API/ABI" TRUE) +boolean_number(WITH_ARITH_DEC) +option(WITH_ARITH_ENC "Include arithmetic encoding support when emulating the libjpeg v6b API/ABI" TRUE) +boolean_number(WITH_ARITH_ENC) +if(CMAKE_C_COMPILER_ABI MATCHES "ELF X32") + set(WITH_JAVA 0) +else() + option(WITH_JAVA "Build Java wrapper for the TurboJPEG API library (implies ENABLE_SHARED=1)" FALSE) + boolean_number(WITH_JAVA) +endif() +option(WITH_JPEG7 "Emulate libjpeg v7 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE) +boolean_number(WITH_JPEG7) +option(WITH_JPEG8 "Emulate libjpeg v8 API/ABI (this makes ${CMAKE_PROJECT_NAME} backward-incompatible with libjpeg v6b)" FALSE) +boolean_number(WITH_JPEG8) +option(WITH_MEM_SRCDST "Include in-memory source/destination manager functions when emulating the libjpeg v6b or v7 API/ABI" TRUE) +boolean_number(WITH_MEM_SRCDST) +option(WITH_SIMD "Include SIMD extensions, if available for this platform" FALSE) +boolean_number(WITH_SIMD) +option(WITH_TURBOJPEG "Include the TurboJPEG API library and associated test programs" FALSE) +boolean_number(WITH_TURBOJPEG) +option(WITH_FUZZ "Build fuzz targets" FALSE) + +macro(report_option var desc) + if(${var}) + message(STATUS "${desc} enabled (${var} = ${${var}})") + else() + message(STATUS "${desc} disabled (${var} = ${${var}})") + endif() +endmacro() + +if(WITH_JAVA) + set(ENABLE_SHARED 1) +endif() + +# Explicitly setting CMAKE_POSITION_INDEPENDENT_CODE=FALSE disables PIC for all +# targets, which will cause the shared library builds to fail. Thus, if shared +# libraries are enabled and CMAKE_POSITION_INDEPENDENT_CODE is explicitly set +# to FALSE, we need to unset it, thus restoring the default behavior +# (automatically using PIC for shared library targets.) +if(DEFINED CMAKE_POSITION_INDEPENDENT_CODE AND + NOT CMAKE_POSITION_INDEPENDENT_CODE AND ENABLE_SHARED) + unset(CMAKE_POSITION_INDEPENDENT_CODE CACHE) +endif() + +report_option(ENABLE_SHARED "Shared libraries") +report_option(ENABLE_STATIC "Static libraries") + +if(ENABLE_SHARED) + set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) +endif() + +if(WITH_JPEG8 OR WITH_JPEG7) + set(WITH_ARITH_ENC 1) + set(WITH_ARITH_DEC 1) +endif() +if(WITH_JPEG8) + set(WITH_MEM_SRCDST 0) +endif() + +if(WITH_12BIT) + set(WITH_ARITH_DEC 0) + set(WITH_ARITH_ENC 0) + set(WITH_JAVA 0) + set(WITH_SIMD 0) + set(WITH_TURBOJPEG 0) + set(BITS_IN_JSAMPLE 12) +else() + set(BITS_IN_JSAMPLE 8) +endif() +report_option(WITH_12BIT "12-bit JPEG support") + +if(WITH_ARITH_DEC) + set(D_ARITH_CODING_SUPPORTED 1) +endif() +if(NOT WITH_12BIT) + report_option(WITH_ARITH_DEC "Arithmetic decoding support") +endif() + +if(WITH_ARITH_ENC) + set(C_ARITH_CODING_SUPPORTED 1) +endif() +if(NOT WITH_12BIT) + report_option(WITH_ARITH_ENC "Arithmetic encoding support") +endif() + +if(NOT WITH_12BIT) + report_option(WITH_TURBOJPEG "TurboJPEG API library") + report_option(WITH_JAVA "TurboJPEG Java wrapper") +endif() + +if(WITH_MEM_SRCDST) + set(MEM_SRCDST_SUPPORTED 1) + set(MEM_SRCDST_FUNCTIONS "global: jpeg_mem_dest; jpeg_mem_src;") +endif() +if(NOT WITH_JPEG8) + report_option(WITH_MEM_SRCDST "In-memory source/destination managers") +endif() + +set(SO_AGE 2) +if(WITH_MEM_SRCDST) + set(SO_AGE 3) +endif() + +if(WITH_JPEG8) + set(JPEG_LIB_VERSION 80) +elseif(WITH_JPEG7) + set(JPEG_LIB_VERSION 70) +else() + set(JPEG_LIB_VERSION 62) +endif() + +math(EXPR JPEG_LIB_VERSION_DIV10 "${JPEG_LIB_VERSION} / 10") +math(EXPR JPEG_LIB_VERSION_MOD10 "${JPEG_LIB_VERSION} % 10") +if(JPEG_LIB_VERSION STREQUAL "62") + set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION}) +else() + set(DEFAULT_SO_MAJOR_VERSION ${JPEG_LIB_VERSION_DIV10}) +endif() +if(JPEG_LIB_VERSION STREQUAL "80") + set(DEFAULT_SO_MINOR_VERSION 2) +else() + set(DEFAULT_SO_MINOR_VERSION 0) +endif() + +# This causes SO_MAJOR_VERSION/SO_MINOR_VERSION to reset to defaults if +# WITH_JPEG7 or WITH_JPEG8 has changed. +if((DEFINED WITH_JPEG7_INT AND NOT WITH_JPEG7 EQUAL WITH_JPEG7_INT) OR + (DEFINED WITH_JPEG8_INT AND NOT WITH_JPEG8 EQUAL WITH_JPEG8_INT)) + set(FORCE_SO_VERSION "FORCE") +endif() +set(WITH_JPEG7_INT ${WITH_JPEG7} CACHE INTERNAL "") +set(WITH_JPEG8_INT ${WITH_JPEG8} CACHE INTERNAL "") + +set(SO_MAJOR_VERSION ${DEFAULT_SO_MAJOR_VERSION} CACHE STRING + "Major version of the libjpeg API shared library (default: ${DEFAULT_SO_MAJOR_VERSION})" + ${FORCE_SO_VERSION}) +set(SO_MINOR_VERSION ${DEFAULT_SO_MINOR_VERSION} CACHE STRING + "Minor version of the libjpeg API shared library (default: ${DEFAULT_SO_MINOR_VERSION})" + ${FORCE_SO_VERSION}) + +set(JPEG_LIB_VERSION_DECIMAL "${JPEG_LIB_VERSION_DIV10}.${JPEG_LIB_VERSION_MOD10}") +message(STATUS "Emulating libjpeg API/ABI v${JPEG_LIB_VERSION_DECIMAL} (WITH_JPEG7 = ${WITH_JPEG7}, WITH_JPEG8 = ${WITH_JPEG8})") +message(STATUS "libjpeg API shared library version = ${SO_MAJOR_VERSION}.${SO_AGE}.${SO_MINOR_VERSION}") + +# Because the TurboJPEG API library uses versioned symbols and changes the +# names of functions whenever they are modified in a backward-incompatible +# manner, it is always backward-ABI-compatible with itself, so the major and +# minor SO versions don't change. However, we increase the middle number (the +# SO "age") whenever functions are added to the API. +set(TURBOJPEG_SO_MAJOR_VERSION 0) +set(TURBOJPEG_SO_AGE 2) +set(TURBOJPEG_SO_VERSION 0.${TURBOJPEG_SO_AGE}.0) + + +############################################################################### +# COMPILER SETTINGS +############################################################################### + +if(MSVC) + option(WITH_CRT_DLL + "Link all ${CMAKE_PROJECT_NAME} libraries and executables with the C run-time DLL (msvcr*.dll) instead of the static C run-time library (libcmt*.lib.) The default is to use the C run-time DLL only with the libraries and executables that need it." + FALSE) + if(NOT WITH_CRT_DLL) + # Use the static C library for all build types + foreach(var CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + if(${var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${var} "${${var}}") + endif() + endforeach() + endif() + add_definitions(-D_CRT_NONSTDC_NO_WARNINGS) +endif() + +if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID STREQUAL "Clang") + # Use the maximum optimization level for release builds + foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO) + if(${var} MATCHES "-O2") + string(REGEX REPLACE "-O2" "-O3" ${var} "${${var}}") + endif() + endforeach() +endif() + +if(CMAKE_SYSTEM_NAME STREQUAL "SunOS") + if(CMAKE_C_COMPILER_ID MATCHES "SunPro") + # Use the maximum optimization level for release builds + foreach(var CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_RELWITHDEBINFO) + if(${var} MATCHES "-xO3") + string(REGEX REPLACE "-xO3" "-xO5" ${var} "${${var}}") + endif() + if(${var} MATCHES "-xO2") + string(REGEX REPLACE "-xO2" "-xO5" ${var} "${${var}}") + endif() + endforeach() + endif() +endif() + +string(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_UC) + +set(EFFECTIVE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE_UC}}") +message(STATUS "Compiler flags = ${EFFECTIVE_C_FLAGS}") + +set(EFFECTIVE_LD_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE_UC}}") +message(STATUS "Linker flags = ${EFFECTIVE_LD_FLAGS}") + +include(CheckCSourceCompiles) +include(CheckIncludeFiles) +include(CheckTypeSize) + +check_type_size("size_t" SIZE_T) +check_type_size("unsigned long" UNSIGNED_LONG) + +if(SIZE_T EQUAL UNSIGNED_LONG) + check_c_source_compiles("int main(int argc, char **argv) { unsigned long a = argc; return __builtin_ctzl(a); }" + HAVE_BUILTIN_CTZL) +endif() +if(MSVC) + check_include_files("intrin.h" HAVE_INTRIN_H) +endif() + +if(UNIX) + if(CMAKE_CROSSCOMPILING) + set(RIGHT_SHIFT_IS_UNSIGNED 0) + else() + include(CheckCSourceRuns) + check_c_source_runs(" + #include + #include + int is_shifting_signed (long arg) { + long res = arg >> 4; + if (res == -0x7F7E80CL) + return 1; /* right shift is signed */ + /* see if unsigned-shift hack will fix it. */ + /* we can't just test exact value since it depends on width of long... */ + res |= (~0L) << (32-4); + if (res == -0x7F7E80CL) + return 0; /* right shift is unsigned */ + printf(\"Right shift isn't acting as I expect it to.\\\\n\"); + printf(\"I fear the JPEG software will not work at all.\\\\n\\\\n\"); + return 0; /* try it with unsigned anyway */ + } + int main (void) { + exit(is_shifting_signed(-0x7F7E80B1L)); + }" RIGHT_SHIFT_IS_UNSIGNED) + endif() +endif() + +if(MSVC) + set(INLINE_OPTIONS "__inline;inline") +else() + set(INLINE_OPTIONS "__inline__;inline") +endif() +option(FORCE_INLINE "Force function inlining" TRUE) +boolean_number(FORCE_INLINE) +if(FORCE_INLINE) + if(MSVC) + list(INSERT INLINE_OPTIONS 0 "__forceinline") + else() + list(INSERT INLINE_OPTIONS 0 "inline __attribute__((always_inline))") + list(INSERT INLINE_OPTIONS 0 "__inline__ __attribute__((always_inline))") + endif() +endif() +foreach(inline ${INLINE_OPTIONS}) + check_c_source_compiles("${inline} static int foo(void) { return 0; } int main(void) { return foo(); }" + INLINE_WORKS) + if(INLINE_WORKS) + set(INLINE ${inline}) + break() + endif() +endforeach() +if(NOT INLINE_WORKS) + message(FATAL_ERROR "Could not determine how to inline functions.") +endif() +message(STATUS "INLINE = ${INLINE} (FORCE_INLINE = ${FORCE_INLINE})") + +if(WITH_TURBOJPEG) + if(MSVC) + set(THREAD_LOCAL "__declspec(thread)") + else() + set(THREAD_LOCAL "__thread") + endif() + check_c_source_compiles("${THREAD_LOCAL} int i; int main(void) { i = 0; return i; }" HAVE_THREAD_LOCAL) + if(HAVE_THREAD_LOCAL) + message(STATUS "THREAD_LOCAL = ${THREAD_LOCAL}") + else() + message(WARNING "Thread-local storage is not available. The TurboJPEG API library's global error handler will not be thread-safe.") + unset(THREAD_LOCAL) + endif() +endif() + +if(UNIX AND NOT APPLE) + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map "VERS_1 { global: *; };") + set(CMAKE_REQUIRED_FLAGS + "-Wl,--version-script,${CMAKE_CURRENT_BINARY_DIR}/conftest.map") + check_c_source_compiles("int main(void) { return 0; }" HAVE_VERSION_SCRIPT) + set(CMAKE_REQUIRED_FLAGS) + file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map) + if(HAVE_VERSION_SCRIPT) + message(STATUS "Linker supports GNU-style version scripts") + set(MAPFLAG "-Wl,--version-script,") + set(TJMAPFLAG "-Wl,--version-script,") + else() + message(STATUS "Linker does not support GNU-style version scripts") + if(CMAKE_SYSTEM_NAME STREQUAL "SunOS") + # The Solaris linker doesn't like our version script for the libjpeg API + # library, but the version script for the TurboJPEG API library should + # still work. + file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map + "VERS_1 { global: foo; local: *; }; VERS_2 { global: foo2; } VERS_1;") + set(CMAKE_REQUIRED_FLAGS "-Wl,-M,${CMAKE_CURRENT_BINARY_DIR}/conftest.map -shared") + check_c_source_compiles("int foo() { return 0; } int foo2() { return 2; }" + HAVE_MAPFILE) + set(CMAKE_REQUIRED_FLAGS) + file(REMOVE ${CMAKE_CURRENT_BINARY_DIR}/conftest.map) + if(HAVE_MAPFILE) + message(STATUS "Linker supports mapfiles") + set(TJMAPFLAG "-Wl,-M,") + else() + message(STATUS "Linker does not support mapfiles") + endif() + endif() + endif() +endif() + +# Generate files +if(WIN32) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/win/jconfig.h.in jconfig.h) +else() + configure_file(jconfig.h.in jconfig.h) +endif() +configure_file(jconfigint.h.in jconfigint.h) +configure_file(jversion.h.in jversion.h) +if(UNIX) + configure_file(libjpeg.map.in libjpeg.map) +endif() + +# Include directories and compiler definitions +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + + +############################################################################### +# TARGETS +############################################################################### + +if(CMAKE_EXECUTABLE_SUFFIX_TMP) + set(CMAKE_EXECUTABLE_SUFFIX ${CMAKE_EXECUTABLE_SUFFIX_TMP}) +endif() +message(STATUS "CMAKE_EXECUTABLE_SUFFIX = ${CMAKE_EXECUTABLE_SUFFIX}") + +set(JPEG_SOURCES jcapimin.c jcapistd.c jccoefct.c jccolor.c jcdctmgr.c jchuff.c + jcicc.c jcinit.c jcmainct.c jcmarker.c jcmaster.c jcomapi.c jcparam.c + jcphuff.c jcprepct.c jcsample.c jctrans.c jdapimin.c jdapistd.c jdatadst.c + jdatasrc.c jdcoefct.c jdcolor.c jddctmgr.c jdhuff.c jdicc.c jdinput.c + jdmainct.c jdmarker.c jdmaster.c jdmerge.c jdphuff.c jdpostct.c jdsample.c + jdtrans.c jerror.c jfdctflt.c jfdctfst.c jfdctint.c jidctflt.c jidctfst.c + jidctint.c jidctred.c jquant1.c jquant2.c jutils.c jmemmgr.c jmemnobs.c) + +if(WITH_ARITH_ENC OR WITH_ARITH_DEC) + set(JPEG_SOURCES ${JPEG_SOURCES} jaricom.c) +endif() + +if(WITH_ARITH_ENC) + set(JPEG_SOURCES ${JPEG_SOURCES} jcarith.c) +endif() + +if(WITH_ARITH_DEC) + set(JPEG_SOURCES ${JPEG_SOURCES} jdarith.c) +endif() + +if(WITH_SIMD) + add_subdirectory(simd) + if(NEON_INTRINSICS) + add_definitions(-DNEON_INTRINSICS) + endif() +elseif(NOT WITH_12BIT) + message(STATUS "SIMD extensions: None (WITH_SIMD = ${WITH_SIMD})") +endif() +if(WITH_SIMD) + message(STATUS "SIMD extensions: ${CPU_TYPE} (WITH_SIMD = ${WITH_SIMD})") + if(MSVC_IDE OR XCODE) + set_source_files_properties(${SIMD_OBJS} PROPERTIES GENERATED 1) + endif() +else() + add_library(simd OBJECT jsimd_none.c) + if(NOT WIN32 AND (CMAKE_POSITION_INDEPENDENT_CODE OR ENABLE_SHARED)) + set_target_properties(simd PROPERTIES POSITION_INDEPENDENT_CODE 1) + endif() +endif() + +if(WITH_JAVA) + add_subdirectory(java) +endif() + +if(ENABLE_SHARED) + add_subdirectory(sharedlib) +endif() + +if(ENABLE_STATIC) + add_library(jpeg-static STATIC ${JPEG_SOURCES} $ + ${SIMD_OBJS}) + if(NOT MSVC) + set_target_properties(jpeg-static PROPERTIES OUTPUT_NAME jpeg) + endif() +endif() + +if(WITH_TURBOJPEG) + if(ENABLE_SHARED) + set(TURBOJPEG_SOURCES ${JPEG_SOURCES} $ ${SIMD_OBJS} + turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c rdppm.c + wrbmp.c wrppm.c) + set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile) + if(WITH_JAVA) + set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} turbojpeg-jni.c) + include_directories(${JAVA_INCLUDE_PATH} ${JAVA_INCLUDE_PATH2}) + set(TJMAPFILE ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg-mapfile.jni) + endif() + if(MSVC) + configure_file(${CMAKE_SOURCE_DIR}/win/turbojpeg.rc.in + ${CMAKE_BINARY_DIR}/win/turbojpeg.rc) + set(TURBOJPEG_SOURCES ${TURBOJPEG_SOURCES} + ${CMAKE_BINARY_DIR}/win/turbojpeg.rc) + endif() + add_library(turbojpeg SHARED ${TURBOJPEG_SOURCES}) + set_property(TARGET turbojpeg PROPERTY COMPILE_FLAGS + "-DBMP_SUPPORTED -DPPM_SUPPORTED") + if(WIN32) + set_target_properties(turbojpeg PROPERTIES DEFINE_SYMBOL DLLDEFINE) + endif() + if(MINGW) + set_target_properties(turbojpeg PROPERTIES LINK_FLAGS -Wl,--kill-at) + endif() + if(APPLE AND (NOT CMAKE_OSX_DEPLOYMENT_TARGET OR + CMAKE_OSX_DEPLOYMENT_TARGET VERSION_GREATER 10.4)) + if(NOT CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG) + set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,") + endif() + set_target_properties(turbojpeg PROPERTIES MACOSX_RPATH 1) + endif() + set_target_properties(turbojpeg PROPERTIES + SOVERSION ${TURBOJPEG_SO_MAJOR_VERSION} VERSION ${TURBOJPEG_SO_VERSION}) + if(TJMAPFLAG) + set_target_properties(turbojpeg PROPERTIES + LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}") + endif() + + add_executable(tjunittest tjunittest.c tjutil.c md5/md5.c md5/md5hl.c) + target_link_libraries(tjunittest turbojpeg) + + add_executable(tjbench tjbench.c tjutil.c) + target_link_libraries(tjbench turbojpeg) + if(UNIX) + target_link_libraries(tjbench m) + endif() + + add_executable(tjexample tjexample.c) + target_link_libraries(tjexample turbojpeg) + endif() + + if(ENABLE_STATIC) + add_library(turbojpeg-static STATIC ${JPEG_SOURCES} $ + ${SIMD_OBJS} turbojpeg.c transupp.c jdatadst-tj.c jdatasrc-tj.c rdbmp.c + rdppm.c wrbmp.c wrppm.c) + set_property(TARGET turbojpeg-static PROPERTY COMPILE_FLAGS + "-DBMP_SUPPORTED -DPPM_SUPPORTED") + if(NOT MSVC) + set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg) + endif() + + add_executable(tjunittest-static tjunittest.c tjutil.c md5/md5.c + md5/md5hl.c) + target_link_libraries(tjunittest-static turbojpeg-static) + + add_executable(tjbench-static tjbench.c tjutil.c) + target_link_libraries(tjbench-static turbojpeg-static) + if(UNIX) + target_link_libraries(tjbench-static m) + endif() + endif() +endif() + +if(WIN32) + set(USE_SETMODE "-DUSE_SETMODE") +endif() +if(WITH_12BIT) + set(COMPILE_FLAGS "-DGIF_SUPPORTED -DPPM_SUPPORTED ${USE_SETMODE}") +else() + set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}") + set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c) + set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c) +endif() + +if(ENABLE_STATIC) + add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c + ${CJPEG_BMP_SOURCES}) + set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS}) + target_link_libraries(cjpeg-static jpeg-static) + + add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c + wrppm.c ${DJPEG_BMP_SOURCES}) + set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS}) + target_link_libraries(djpeg-static jpeg-static) + + add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c) + target_link_libraries(jpegtran-static jpeg-static) + set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}") +endif() + +add_executable(rdjpgcom rdjpgcom.c) + +add_executable(wrjpgcom wrjpgcom.c) + + +############################################################################### +# TESTS +############################################################################### + +if(WITH_FUZZ) + add_subdirectory(fuzz) +endif() + +add_executable(strtest strtest.c) + +add_subdirectory(md5) + +if(MSVC_IDE OR XCODE) + set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/") +else() + set(OBJDIR "") +endif() + +enable_testing() + +if(WITH_12BIT) + set(TESTORIG testorig12.jpg) + set(MD5_JPEG_RGB_ISLOW 9d7369207c520d37f2c1cbfcb82b2964) + set(MD5_JPEG_RGB_ISLOW2 a00bd20d8ae49684640ef7177d2e0b64) + set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0) + set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4) + set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950) + set(MD5_JPEG_440_ISLOW e25c1912e38367be505a89c410c1c2d2) + set(MD5_PPM_440_ISLOW e7d2e26288870cfcb30f3114ad01e380) + set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0) + set(MD5_JPEG_420_IFAST_Q100_PROG 9447cef4803d9b0f74bcf333cc710a29) + set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e) + set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566) + set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9) + set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca) + set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d) + set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e) + + set(MD5_JPEG_3x2_FLOAT_PROG_SSE a8c17daf77b457725ec929e215b603f8) + set(MD5_PPM_3x2_FLOAT_SSE 42876ab9e5c2f76a87d08db5fbd57956) + set(MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT a8c17daf77b457725ec929e215b603f8) + set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) + set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT + ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) + set(MD5_JPEG_3x2_FLOAT_PROG_387 bc6dbbefac2872f6b9d6c4a0ae60c3c0) + set(MD5_PPM_3x2_FLOAT_387 bcc5723c61560463ac60f772e742d092) + set(MD5_JPEG_3x2_FLOAT_PROG_MSVC e27840755870fa849872e58aa0cd1400) + set(MD5_PPM_3x2_FLOAT_MSVC 6c2880b83bb1aa41dfe330e7a9768690) + + set(MD5_JPEG_3x2_IFAST_PROG 1396cc2b7185cfe943d408c9d305339e) + set(MD5_PPM_3x2_IFAST 3975985ef6eeb0a2cdc58daa651ccc00) + set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0) + set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb) + set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96) + set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82) + set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c) + set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43) + set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93) + set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd) + set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866) + set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8) + set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb) + set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7) + set(MD5_PPM_420_ISLOW_SKIP15_31 86664cd9dc956536409e44e244d20a97) + set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 452a21656115a163029cfba5c04fa76a) + set(MD5_PPM_444_ISLOW_SKIP1_6 ef63901f71ef7a75cd78253fc0914f84) + set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 15b173fb5872d9575572fbcc1b05956f) + set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c) +else() + set(TESTORIG testorig.jpg) + set(MD5_JPEG_RGB_ISLOW 1d44a406f61da743b5fd31c0a9abdca3) + set(MD5_JPEG_RGB_ISLOW2 31d121e57b6c2934c890a7fc7763bcd4) + set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291) + set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be) + set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4) + set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8) + set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa) + set(MD5_JPEG_440_ISLOW 538bc02bd4b4658fd85de6ece6cbeda6) + set(MD5_PPM_440_ISLOW 11e7eab7ef7ef3276934bb7e7b6bb377) + set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d) + set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065) + set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1) + set(MD5_JPEG_420_IFAST_Q100_PROG 0ba15f9dab81a703505f835f9dbbac6d) + set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294) + set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1) + set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d) + set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed) + set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec) + set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc) + set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db) + set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8) + + set(MD5_JPEG_3x2_FLOAT_PROG_SSE 343e3f8caf8af5986ebaf0bdc13b5c71) + set(MD5_PPM_3x2_FLOAT_SSE 1a75f36e5904d6fc3a85a43da9ad89bb) + set(MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT 9bca803d2042bd1eb03819e2bf92b3e5) + set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT f6bfab038438ed8f5522fbd33595dcdc) + set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT + ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) + set(MD5_PPM_3x2_FLOAT_FP_CONTRACT 0e917a34193ef976b679a6b069b1be26) + set(MD5_JPEG_3x2_FLOAT_PROG_387 1657664a410e0822c924b54f6f65e6e9) + set(MD5_PPM_3x2_FLOAT_387 cb0a1f027f3d2917c902b5640214e025) + set(MD5_JPEG_3x2_FLOAT_PROG_MSVC 7999ce9cd0ee9b6c7043b7351ab7639d) + set(MD5_PPM_3x2_FLOAT_MSVC 28cdc448a6b75e97892f0e0f8d4b21f3) + + set(MD5_JPEG_3x2_IFAST_PROG 1ee5d2c1a77f2da495f993c8c7cceca5) + set(MD5_PPM_3x2_IFAST fd283664b3b49127984af0a7f118fccd) + set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1) + set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617) + set(MD5_PPM_420M_IFAST_ARI 57251da28a35b46eecb7177d82d10e0e) + set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f) + set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9) + set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7) + set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f) + set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5) + set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6) + set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946) + set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646) + set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b) + set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81) + set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996) + set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca) + set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f) + set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6) + set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb) + set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2) + set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f) + set(MD5_BMP_420M_ISLOW_565D ce034037d212bc403330df6f915c161b) + set(MD5_PPM_420_ISLOW_SKIP15_31 c4c65c1e43d7275cd50328a61e6534f0) + set(MD5_PPM_420_ISLOW_ARI_SKIP16_139 087c6b123db16ac00cb88c5b590bb74a) + set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 26eb36ccc7d1f0cb80cdabb0ac8b5d99) + set(MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4 886c6775af22370257122f8b16207e6d) + set(MD5_PPM_444_ISLOW_SKIP1_6 5606f86874cf26b8fcee1117a0a436a6) + set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 db87dc7ce26bcdc7a6b56239ce2b9d6c) + set(MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0 cb57b32bd6d03e35432362f7bf184b6d) + set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d) +endif() + +if(WITH_JAVA) + add_test(TJUnitTest + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest) + add_test(TJUnitTest-yuv + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest -yuv) + add_test(TJUnitTest-yuv-nopad + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest -yuv -noyuvpad) + add_test(TJUnitTest-bi + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest -bi) + add_test(TJUnitTest-bi-yuv + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest -bi -yuv) + add_test(TJUnitTest-bi-yuv-nopad + ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar + -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} + TJUnitTest -bi -yuv -noyuvpad) +endif() + +set(TEST_LIBTYPES "") +if(ENABLE_SHARED) + set(TEST_LIBTYPES ${TEST_LIBTYPES} shared) +endif() +if(ENABLE_STATIC) + set(TEST_LIBTYPES ${TEST_LIBTYPES} static) +endif() + +set(TESTIMAGES ${CMAKE_CURRENT_SOURCE_DIR}/testimages) +set(MD5CMP ${CMAKE_CURRENT_BINARY_DIR}/md5/md5cmp) +if(CMAKE_CROSSCOMPILING) + file(RELATIVE_PATH TESTIMAGES ${CMAKE_CURRENT_BINARY_DIR} ${TESTIMAGES}) + file(RELATIVE_PATH MD5CMP ${CMAKE_CURRENT_BINARY_DIR} ${MD5CMP}) +endif() + +# The output of the floating point DCT/IDCT algorithms differs depending on the +# type of floating point math used, so the FLOATTEST CMake variable must be +# set in order to tell the testing system which floating point results it +# should expect: +# +# sse = validate against the expected results from the libjpeg-turbo SSE SIMD +# extensions +# no-fp-contract = validate against the expected results from the C code when +# floating point expression contraction is disabled (the +# default with Clang, with GCC when building for platforms +# that lack fused multiply-add [FMA] instructions, or when +# passing -ffp-contract=off to the compiler) +# fp-contract = validate against the expected results from the C code when +# floating point expression contraction is enabled (the default +# with GCC when building for platforms that have fused multiply- +# add [FMA] instructions or when passing -ffp-contract=fast to +# the compiler) +# 387 = validate against the expected results from the C code when the 387 FPU +# is being used for floating point math (which is generally the default +# with x86 compilers) +# msvc = validate against the expected results from the C code when compiled +# with a 32-bit version of Visual C++ + +if(CPU_TYPE STREQUAL "x86_64" OR CPU_TYPE STREQUAL "i386") + if(WITH_SIMD) + set(DEFAULT_FLOATTEST sse) + elseif(CPU_TYPE STREQUAL "x86_64") + set(DEFAULT_FLOATTEST no-fp-contract) + elseif(CPU_TYPE STREQUAL "i386" AND MSVC) + set(DEFAULT_FLOATTEST msvc) + # else we can't really set an intelligent default for i386. The appropriate + # value could be 387, no-fp-contract, or fp-contract, depending on the + # compiler and compiler options. We leave it to the user to set FLOATTEST + # manually. + endif() +else() + if((CPU_TYPE STREQUAL "powerpc" OR CPU_TYPE STREQUAL "arm64") AND + NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT MSVC) + set(DEFAULT_FLOATTEST fp-contract) + else() + set(DEFAULT_FLOATTEST no-fp-contract) + endif() +endif() + +# This causes FLOATTEST to reset to the default value if WITH_SIMD has +# changed. +if(DEFINED WITH_SIMD_INT AND NOT WITH_SIMD EQUAL WITH_SIMD_INT) + set(FORCE_FLOATTEST "FORCE") +endif() +set(WITH_SIMD_INT ${WITH_SIMD} CACHE INTERNAL "") +set(FLOATTEST ${DEFAULT_FLOATTEST} CACHE STRING + "The type of floating point math used by the floating point DCT/IDCT algorithms. This tells the testing system which numerical results it should expect from those tests. [sse = libjpeg-turbo x86/x86-64 SIMD extensions, no-fp-contract = generic FPU with floating point expression contraction disabled, fp-contract = generic FPU with floating point expression contraction enabled, 387 = 387 FPU, msvc = 32-bit Visual Studio] (default = ${DEFAULT_FLOATTEST})" + ${FORCE_FLOATTEST}) +message(STATUS "FLOATTEST = ${FLOATTEST}") + +if(FLOATTEST) + string(TOUPPER ${FLOATTEST} FLOATTEST_UC) + string(REGEX REPLACE "-" "_" FLOATTEST_UC ${FLOATTEST_UC}) + string(TOLOWER ${FLOATTEST} FLOATTEST) + if(NOT FLOATTEST STREQUAL "sse" AND + NOT FLOATTEST STREQUAL "no-fp-contract" AND + NOT FLOATTEST STREQUAL "fp-contract" AND NOT FLOATTEST STREQUAL "387" AND + NOT FLOATTEST STREQUAL "msvc") + message(FATAL_ERROR "\"${FLOATTEST}\" is not a valid value for FLOATTEST.") + endif() +endif() + +foreach(libtype ${TEST_LIBTYPES}) + if(libtype STREQUAL "static") + set(suffix -static) + endif() + if(WITH_TURBOJPEG) + add_test(tjunittest-${libtype} + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix}) + add_test(tjunittest-${libtype}-alloc + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -alloc) + add_test(tjunittest-${libtype}-yuv + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv) + add_test(tjunittest-${libtype}-yuv-alloc + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv -alloc) + add_test(tjunittest-${libtype}-yuv-nopad + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv -noyuvpad) + add_test(tjunittest-${libtype}-bmp + ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -bmp) + + set(MD5_PPM_GRAY_TILE 89d3ca21213d9d864b50b4e4e7de4ca6) + set(MD5_PPM_420_8x8_TILE 847fceab15c5b7b911cb986cf0f71de3) + set(MD5_PPM_420_16x16_TILE ca45552a93687e078f7137cc4126a7b0) + set(MD5_PPM_420_32x32_TILE d8676f1d6b68df358353bba9844f4a00) + set(MD5_PPM_420_64x64_TILE 4e4c1a3d7ea4bace4f868bcbe83b7050) + set(MD5_PPM_420_128x128_TILE f24c3429c52265832beab9df72a0ceae) + set(MD5_PPM_420M_8x8_TILE bc25320e1f4c31ce2e610e43e9fd173c) + set(MD5_PPM_420M_TILE 75ffdf14602258c5c189522af57fa605) + set(MD5_PPM_422_8x8_TILE d83dacd9fc73b0a6f10c09acad64eb1e) + set(MD5_PPM_422_16x16_TILE 35077fb610d72dd743b1eb0cbcfe10fb) + set(MD5_PPM_422_32x32_TILE e6902ed8a449ecc0f0d6f2bf945f65f7) + set(MD5_PPM_422_64x64_TILE 2b4502a8f316cedbde1da7bce3d2231e) + set(MD5_PPM_422_128x128_TILE f0b5617d578f5e13c8eee215d64d4877) + set(MD5_PPM_422M_8x8_TILE 828941d7f41cd6283abd6beffb7fd51d) + set(MD5_PPM_422M_TILE e877ae1324c4a280b95376f7f018172f) + set(MD5_PPM_444_TILE 7964e41e67cfb8d0a587c0aa4798f9c3) + + # Test compressing from/decompressing to an arbitrary subregion of a larger + # image buffer + add_test(tjbench-${libtype}-tile-cp + ${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm + testout_tile.ppm) + add_test(tjbench-${libtype}-tile + ${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tile.ppm 95 + -rgb -quiet -tile -benchtime 0.01 -warmup 0) + set_tests_properties(tjbench-${libtype}-tile + PROPERTIES DEPENDS tjbench-${libtype}-tile-cp) + + foreach(tile 8 16 32 64 128) + add_test(tjbench-${libtype}-tile-gray-${tile}x${tile}-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_GRAY_TILE} + testout_tile_GRAY_Q95_${tile}x${tile}.ppm) + foreach(subsamp 420 422) + add_test(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} + ${MD5_PPM_${subsamp}_${tile}x${tile}_TILE} + testout_tile_${subsamp}_Q95_${tile}x${tile}.ppm) + endforeach() + add_test(tjbench-${libtype}-tile-444-${tile}x${tile}-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_444_TILE} + testout_tile_444_Q95_${tile}x${tile}.ppm) + foreach(subsamp gray 420 422 444) + set_tests_properties(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp + PROPERTIES DEPENDS tjbench-${libtype}-tile) + endforeach() + endforeach() + + add_test(tjbench-${libtype}-tilem-cp + ${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm + testout_tilem.ppm) + add_test(tjbench-${libtype}-tilem + ${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tilem.ppm 95 + -rgb -fastupsample -quiet -tile -benchtime 0.01 -warmup 0) + set_tests_properties(tjbench-${libtype}-tilem + PROPERTIES DEPENDS tjbench-${libtype}-tilem-cp) + + add_test(tjbench-${libtype}-tile-420m-8x8-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_420M_8x8_TILE} + testout_tilem_420_Q95_8x8.ppm) + add_test(tjbench-${libtype}-tile-422m-8x8-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_422M_8x8_TILE} + testout_tilem_422_Q95_8x8.ppm) + foreach(tile 16 32 64 128) + foreach(subsamp 420 422) + add_test(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} + ${MD5_PPM_${subsamp}M_TILE} + testout_tilem_${subsamp}_Q95_${tile}x${tile}.ppm) + endforeach() + endforeach() + foreach(tile 8 16 32 64 128) + foreach(subsamp 420 422) + set_tests_properties(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp + PROPERTIES DEPENDS tjbench-${libtype}-tilem) + endforeach() + endforeach() + endif() + + # These tests are carefully crafted to provide full coverage of as many of + # the underlying algorithms as possible (including all of the + # SIMD-accelerated ones.) + + macro(add_bittest PROG NAME ARGS OUTFILE INFILE MD5SUM) + add_test(${PROG}-${libtype}-${NAME} + ${CMAKE_CROSSCOMPILING_EMULATOR} ${PROG}${suffix} ${ARGS} + -outfile ${OUTFILE} ${INFILE}) + add_test(${PROG}-${libtype}-${NAME}-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5SUM} ${OUTFILE}) + set_tests_properties(${PROG}-${libtype}-${NAME}-cmp PROPERTIES + DEPENDS ${PROG}-${libtype}-${NAME}) + if(${ARGC} GREATER 6) + set(DEPENDS ${ARGN}) + set_tests_properties(${PROG}-${libtype}-${NAME} PROPERTIES + DEPENDS ${DEPENDS}) + endif() + endmacro() + + # CC: null SAMP: fullsize FDCT: islow ENT: huff + add_bittest(cjpeg rgb-islow "-rgb;-dct;int;-icc;${TESTIMAGES}/test1.icc" + testout_rgb_islow.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_RGB_ISLOW}) + + # CC: null SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg rgb-islow "-dct;int;-ppm;-icc;testout_rgb_islow.icc" + testout_rgb_islow.ppm testout_rgb_islow.jpg + ${MD5_PPM_RGB_ISLOW} cjpeg-${libtype}-rgb-islow) + + add_test(djpeg-${libtype}-rgb-islow-icc-cmp + ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} + b06a39d730129122e85c1363ed1bbc9e testout_rgb_islow.icc) + set_tests_properties(djpeg-${libtype}-rgb-islow-icc-cmp PROPERTIES + DEPENDS djpeg-${libtype}-rgb-islow) + + add_bittest(jpegtran icc "-copy;all;-icc;${TESTIMAGES}/test2.icc" + testout_rgb_islow2.jpg testout_rgb_islow.jpg + ${MD5_JPEG_RGB_ISLOW2} cjpeg-${libtype}-rgb-islow) + + if(NOT WITH_12BIT) + # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg rgb-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" + testout_rgb_islow_565.bmp testout_rgb_islow.jpg + ${MD5_BMP_RGB_ISLOW_565} cjpeg-${libtype}-rgb-islow) + + # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg rgb-islow-565D "-dct;int;-rgb565;-bmp" + testout_rgb_islow_565D.bmp testout_rgb_islow.jpg + ${MD5_BMP_RGB_ISLOW_565D} cjpeg-${libtype}-rgb-islow) + endif() + + # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff + add_bittest(cjpeg 422-ifast-opt "-sample;2x1;-dct;fast;-opt" + testout_422_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_422_IFAST_OPT}) + + # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff + add_bittest(djpeg 422-ifast "-dct;fast" + testout_422_ifast.ppm testout_422_ifast_opt.jpg + ${MD5_PPM_422_IFAST} cjpeg-${libtype}-422-ifast-opt) + + # CC: RGB->YCC SAMP: fullsize/h1v2 FDCT: islow ENT: huff + add_bittest(cjpeg 440-islow "-sample;1x2;-dct;int" + testout_440_islow.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_440_ISLOW}) + + # CC: YCC->RGB SAMP: fullsize/h1v2 fancy IDCT: islow ENT: huff + add_bittest(djpeg 440-islow "-dct;int" + testout_440_islow.ppm testout_440_islow.jpg + ${MD5_PPM_440_ISLOW} cjpeg-${libtype}-440-islow) + + # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff + add_bittest(djpeg 422m-ifast "-dct;fast;-nosmooth" + testout_422m_ifast.ppm testout_422_ifast_opt.jpg + ${MD5_PPM_422M_IFAST} cjpeg-${libtype}-422-ifast-opt) + + if(NOT WITH_12BIT) + # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff + add_bittest(djpeg 422m-ifast-565 + "-dct;int;-nosmooth;-rgb565;-dither;none;-bmp" + testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg + ${MD5_BMP_422M_IFAST_565} cjpeg-${libtype}-422-ifast-opt) + + # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff + add_bittest(djpeg 422m-ifast-565D "-dct;int;-nosmooth;-rgb565;-bmp" + testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg + ${MD5_BMP_422M_IFAST_565D} cjpeg-${libtype}-422-ifast-opt) + endif() + + # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff + add_bittest(cjpeg 420-q100-ifast-prog + "-sample;2x2;-quality;100;-dct;fast;-scans;${TESTIMAGES}/test.scan" + testout_420_q100_ifast_prog.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_420_IFAST_Q100_PROG}) + + # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff + add_bittest(djpeg 420-q100-ifast-prog "-dct;fast" + testout_420_q100_ifast.ppm testout_420_q100_ifast_prog.jpg + ${MD5_PPM_420_Q100_IFAST} cjpeg-${libtype}-420-q100-ifast-prog) + + # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff + add_bittest(djpeg 420m-q100-ifast-prog "-dct;fast;-nosmooth" + testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg + ${MD5_PPM_420M_Q100_IFAST} cjpeg-${libtype}-420-q100-ifast-prog) + + # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff + add_bittest(cjpeg gray-islow "-gray;-dct;int" + testout_gray_islow.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_GRAY_ISLOW}) + + # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg gray-islow "-dct;int" + testout_gray_islow.ppm testout_gray_islow.jpg + ${MD5_PPM_GRAY_ISLOW} cjpeg-${libtype}-gray-islow) + + # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg gray-islow-rgb "-dct;int;-rgb" + testout_gray_islow_rgb.ppm testout_gray_islow.jpg + ${MD5_PPM_GRAY_ISLOW_RGB} cjpeg-${libtype}-gray-islow) + + if(NOT WITH_12BIT) + # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg gray-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" + testout_gray_islow_565.bmp testout_gray_islow.jpg + ${MD5_BMP_GRAY_ISLOW_565} cjpeg-${libtype}-gray-islow) + + # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff + add_bittest(djpeg gray-islow-565D "-dct;int;-rgb565;-bmp" + testout_gray_islow_565D.bmp testout_gray_islow.jpg + ${MD5_BMP_GRAY_ISLOW_565D} cjpeg-${libtype}-gray-islow) + endif() + + # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow + # ENT: 2-pass huff + add_bittest(cjpeg 420s-ifast-opt "-sample;2x2;-smooth;1;-dct;int;-opt" + testout_420s_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_420S_IFAST_OPT}) + + if(FLOATTEST) + # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff + add_bittest(cjpeg 3x2-float-prog "-sample;3x2;-dct;float;-prog" + testout_3x2_float_prog.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_3x2_FLOAT_PROG_${FLOATTEST_UC}}) + + # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff + add_bittest(djpeg 3x2-float-prog "-dct;float" + testout_3x2_float.ppm testout_3x2_float_prog.jpg + ${MD5_PPM_3x2_FLOAT_${FLOATTEST_UC}} cjpeg-${libtype}-3x2-float-prog) + endif() + + # CC: RGB->YCC SAMP: fullsize/int FDCT: ifast ENT: prog huff + add_bittest(cjpeg 3x2-ifast-prog "-sample;3x2;-dct;fast;-prog" + testout_3x2_ifast_prog.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_3x2_IFAST_PROG}) + + # CC: YCC->RGB SAMP: fullsize/int IDCT: ifast ENT: prog huff + add_bittest(djpeg 3x2-ifast-prog "-dct;fast" + testout_3x2_ifast.ppm testout_3x2_ifast_prog.jpg + ${MD5_PPM_3x2_IFAST} cjpeg-${libtype}-3x2-ifast-prog) + + if(WITH_ARITH_ENC) + # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith + add_bittest(cjpeg 420-islow-ari "-dct;int;-arithmetic" + testout_420_islow_ari.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_420_ISLOW_ARI}) + + add_bittest(jpegtran 420-islow-ari "-arithmetic" + testout_420_islow_ari2.jpg ${TESTIMAGES}/testimgint.jpg + ${MD5_JPEG_420_ISLOW_ARI}) + + # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith + add_bittest(cjpeg 444-islow-progari + "-sample;1x1;-dct;int;-prog;-arithmetic" + testout_444_islow_progari.jpg ${TESTIMAGES}/testorig.ppm + ${MD5_JPEG_444_ISLOW_PROGARI}) + endif() + + if(WITH_ARITH_DEC) + # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith + add_bittest(djpeg 420m-ifast-ari "-fast;-skip;1,20;-ppm" + testout_420m_ifast_ari.ppm ${TESTIMAGES}/testimgari.jpg + ${MD5_PPM_420M_IFAST_ARI}) + + add_bittest(jpegtran 420-islow "" + testout_420_islow.jpg ${TESTIMAGES}/testimgari.jpg + ${MD5_JPEG_420_ISLOW}) + endif() + + # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff + # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff + # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff + # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff + # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff + # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow + # ENT: huff + # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow + # ENT: huff + # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow + # ENT: huff + # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow + # ENT: huff + # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow + # ENT: huff + # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow + # ENT: huff + # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow + # ENT: huff + foreach(scale 2_1 15_8 13_8 11_8 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8) + string(REGEX REPLACE "_" "/" scalearg ${scale}) + add_bittest(djpeg 420m-islow-${scale} + "-dct;int;-scale;${scalearg};-nosmooth;-ppm" + testout_420m_islow_${scale}.ppm ${TESTIMAGES}/${TESTORIG} + ${MD5_PPM_420M_ISLOW_${scale}}) + endforeach() + + if(NOT WITH_12BIT) + # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff + add_bittest(djpeg 420-islow-256 "-dct;int;-colors;256;-bmp" + testout_420_islow_256.bmp ${TESTIMAGES}/${TESTORIG} + ${MD5_BMP_420_ISLOW_256}) + + # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff + add_bittest(djpeg 420-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" + testout_420_islow_565.bmp ${TESTIMAGES}/${TESTORIG} + ${MD5_BMP_420_ISLOW_565}) + + # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff + add_bittest(djpeg 420-islow-565D "-dct;int;-rgb565;-bmp" + testout_420_islow_565D.bmp ${TESTIMAGES}/${TESTORIG} + ${MD5_BMP_420_ISLOW_565D}) + + # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff + add_bittest(djpeg 420m-islow-565 + "-dct;int;-nosmooth;-rgb565;-dither;none;-bmp" + testout_420m_islow_565.bmp ${TESTIMAGES}/${TESTORIG} + ${MD5_BMP_420M_ISLOW_565}) + + # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff + add_bittest(djpeg 420m-islow-565D "-dct;int;-nosmooth;-rgb565;-bmp" + testout_420m_islow_565D.bmp ${TESTIMAGES}/${TESTORIG} + ${MD5_BMP_420M_ISLOW_565D}) + endif() + + # Partial decode tests. These tests are designed to cover all of the + # possible code paths in jpeg_skip_scanlines(). + + # Context rows: Yes Intra-iMCU row: Yes iMCU row prefetch: No ENT: huff + add_bittest(djpeg 420-islow-skip15_31 "-dct;int;-skip;15,31;-ppm" + testout_420_islow_skip15,31.ppm ${TESTIMAGES}/${TESTORIG} + ${MD5_PPM_420_ISLOW_SKIP15_31}) + + # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: Yes ENT: arith + if(WITH_ARITH_DEC) + add_bittest(djpeg 420-islow-ari-skip16_139 "-dct;int;-skip;16,139;-ppm" + testout_420_islow_ari_skip16,139.ppm ${TESTIMAGES}/testimgari.jpg + ${MD5_PPM_420_ISLOW_ARI_SKIP16_139}) + endif() + + # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: prog huff + add_test(cjpeg-${libtype}-420-islow-prog + ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog + -outfile testout_420_islow_prog.jpg ${TESTIMAGES}/testorig.ppm) + add_bittest(djpeg 420-islow-prog-crop62x62_71_71 + "-dct;int;-crop;62x62+71+71;-ppm" + testout_420_islow_prog_crop62x62,71,71.ppm testout_420_islow_prog.jpg + ${MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71} cjpeg-${libtype}-420-islow-prog) + + # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: arith + if(WITH_ARITH_DEC) + add_bittest(djpeg 420-islow-ari-crop53x53_4_4 + "-dct;int;-crop;53x53+4+4;-ppm" + testout_420_islow_ari_crop53x53,4,4.ppm ${TESTIMAGES}/testimgari.jpg + ${MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4}) + endif() + + # Context rows: No Intra-iMCU row: Yes ENT: huff + add_test(cjpeg-${libtype}-444-islow + ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -sample 1x1 + -outfile testout_444_islow.jpg ${TESTIMAGES}/testorig.ppm) + add_bittest(djpeg 444-islow-skip1_6 "-dct;int;-skip;1,6;-ppm" + testout_444_islow_skip1,6.ppm testout_444_islow.jpg + ${MD5_PPM_444_ISLOW_SKIP1_6} cjpeg-${libtype}-444-islow) + + # Context rows: No Intra-iMCU row: No ENT: prog huff + add_test(cjpeg-${libtype}-444-islow-prog + ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog -sample 1x1 + -outfile testout_444_islow_prog.jpg ${TESTIMAGES}/testorig.ppm) + add_bittest(djpeg 444-islow-prog-crop98x98_13_13 + "-dct;int;-crop;98x98+13+13;-ppm" + testout_444_islow_prog_crop98x98,13,13.ppm testout_444_islow_prog.jpg + ${MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13} cjpeg-${libtype}-444-islow-prog) + + # Context rows: No Intra-iMCU row: No ENT: arith + if(WITH_ARITH_ENC) + add_test(cjpeg-${libtype}-444-islow-ari + ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -arithmetic + -sample 1x1 -outfile testout_444_islow_ari.jpg + ${TESTIMAGES}/testorig.ppm) + if(WITH_ARITH_DEC) + add_bittest(djpeg 444-islow-ari-crop37x37_0_0 + "-dct;int;-crop;37x37+0+0;-ppm" + testout_444_islow_ari_crop37x37,0,0.ppm testout_444_islow_ari.jpg + ${MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0} cjpeg-${libtype}-444-islow-ari) + endif() + endif() + + add_bittest(jpegtran crop "-crop;120x90+20+50;-transpose;-perfect" + testout_crop.jpg ${TESTIMAGES}/${TESTORIG} + ${MD5_JPEG_CROP}) + +endforeach() + +add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P + ${CMAKE_CURRENT_SOURCE_DIR}/cmakescripts/testclean.cmake) + +configure_file(croptest.in croptest @ONLY) +add_custom_target(croptest + COMMAND echo croptest + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/croptest) + +if(WITH_TURBOJPEG) + configure_file(tjbenchtest.in tjbenchtest @ONLY) + configure_file(tjexampletest.in tjexampletest @ONLY) + if(WIN32) + set(BASH bash) + endif() + if(WITH_JAVA) + configure_file(tjbenchtest.java.in tjbenchtest.java @ONLY) + configure_file(tjexampletest.java.in tjexampletest.java @ONLY) + add_custom_target(tjtest + COMMAND echo tjbenchtest + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest + COMMAND echo tjbenchtest -alloc + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc + COMMAND echo tjbenchtest -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv + COMMAND echo tjbenchtest -yuv -alloc + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc + COMMAND echo tjbenchtest -progressive + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive + COMMAND echo tjbenchtest -progressive -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv + COMMAND echo tjexampletest + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest + COMMAND echo tjbenchtest.java + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java + COMMAND echo tjbenchtest.java -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -yuv + COMMAND echo tjbenchtest.java -progressive + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -progressive + COMMAND echo tjexampletest.java -progressive -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java + -progressive -yuv + COMMAND echo tjexampletest.java + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest.java + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest + ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java + ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest) + else() + add_custom_target(tjtest + COMMAND echo tjbenchtest + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest + COMMAND echo tjbenchtest -alloc + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc + COMMAND echo tjbenchtest -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv + COMMAND echo tjbenchtest -yuv -alloc + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc + COMMAND echo tjbenchtest -progressive + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive + COMMAND echo tjbenchtest -progressive -yuv + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv + COMMAND echo tjexampletest + COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest) + endif() +endif() + + +############################################################################### +# INSTALLATION +############################################################################### + +set(EXE ${CMAKE_EXECUTABLE_SUFFIX}) + +if(WITH_TURBOJPEG) + if(ENABLE_SHARED) + install(TARGETS turbojpeg EXPORT ${CMAKE_PROJECT_NAME}Targets + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(TARGETS tjbench + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC AND + CMAKE_C_LINKER_SUPPORTS_PDB) + install(FILES "$" + DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) + endif() + endif() + if(ENABLE_STATIC) + install(TARGETS turbojpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(NOT ENABLE_SHARED) + if(MSVC_IDE OR XCODE) + set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") + else() + set(DIR ${CMAKE_CURRENT_BINARY_DIR}) + endif() + install(PROGRAMS ${DIR}/tjbench-static${EXE} + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME tjbench${EXE}) + endif() + endif() + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +endif() + +if(ENABLE_STATIC) + install(TARGETS jpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if(NOT ENABLE_SHARED) + if(MSVC_IDE OR XCODE) + set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") + else() + set(DIR ${CMAKE_CURRENT_BINARY_DIR}) + endif() + install(PROGRAMS ${DIR}/cjpeg-static${EXE} + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME cjpeg${EXE}) + install(PROGRAMS ${DIR}/djpeg-static${EXE} + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME djpeg${EXE}) + install(PROGRAMS ${DIR}/jpegtran-static${EXE} + DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME jpegtran${EXE}) + endif() +endif() + +install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg + ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.txt + ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c + ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg.txt + ${CMAKE_CURRENT_SOURCE_DIR}/structure.txt + ${CMAKE_CURRENT_SOURCE_DIR}/usage.txt ${CMAKE_CURRENT_SOURCE_DIR}/wizard.txt + ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) +if(WITH_JAVA) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJExample.java + DESTINATION ${CMAKE_INSTALL_DOCDIR}) +endif() + +if(UNIX OR MINGW) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cjpeg.1 + ${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1 + ${CMAKE_CURRENT_SOURCE_DIR}/rdjpgcom.1 + ${CMAKE_CURRENT_SOURCE_DIR}/wrjpgcom.1 + DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) +endif() +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc + ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}ConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}) +install(EXPORT ${CMAKE_PROJECT_NAME}Targets + NAMESPACE ${CMAKE_PROJECT_NAME}:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h + ${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h + ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +include(cmakescripts/BuildPackages.cmake) + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmakescripts/cmake_uninstall.cmake.in" + "cmake_uninstall.cmake" IMMEDIATE @ONLY) + +add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P cmake_uninstall.cmake) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index c5a3707865..82280e3ce9 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -418,9 +418,23 @@ endif() # tweak jpeg library names to avoid linker errors with MinGW cross-compilation set(JPEG_NAMES libjpeg libjpeg-62) find_package(JPEG QUIET) +if((NOT JPEG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) + set(LIBJPEG_URL https://sourceforge.net/projects/libjpeg-turbo/files/2.1.3/libjpeg-turbo-2.1.3.tar.gz) + set(LIBJPEG_MD5 85244dedeaf06f636a9e7ddea6d236d8) + mark_as_advanced(LIBJPEG_URL) + mark_as_advanced(LIBJPEG_MD5) + include(ExternalCMakeProject) + ExternalCmakeProject(libjpeg ${LIBJPEG_URL} ${LIBJPEG_MD5} libjpeg-turbo . CMakeLists.libjpeg) + add_library(JPEG::JPEG ALIAS jpeg-static) + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-src") + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-build") + set(JPEG_FOUND TRUE) +endif() option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) - find_package(JPEG REQUIRED) + if(NOT JPEG_FOUND) + find_package(JPEG REQUIRED) + endif() target_compile_definitions(lammps PRIVATE -DLAMMPS_JPEG) if(CMAKE_VERSION VERSION_LESS 3.12) target_include_directories(lammps PRIVATE ${JPEG_INCLUDE_DIRS}) From 1959cd7037d1f09dea9b187832fbb4fc3a15f57f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 17:45:42 -0400 Subject: [PATCH 20/46] download, build, and link missing png and zlib libraries with CMake --- cmake/CMakeLists.libjpeg | 869 +------------------------- cmake/CMakeLists.png | 741 ++++++++++++++++++++++ cmake/CMakeLists.txt | 33 +- cmake/CMakeLists.zlib | 195 ++++++ cmake/Modules/Packages/COMPRESS.cmake | 6 +- 5 files changed, 972 insertions(+), 872 deletions(-) create mode 100644 cmake/CMakeLists.png create mode 100644 cmake/CMakeLists.zlib diff --git a/cmake/CMakeLists.libjpeg b/cmake/CMakeLists.libjpeg index f03eba40aa..f0bd85a90d 100644 --- a/cmake/CMakeLists.libjpeg +++ b/cmake/CMakeLists.libjpeg @@ -589,18 +589,6 @@ if(WITH_TURBOJPEG) set_target_properties(turbojpeg PROPERTIES LINK_FLAGS "${TJMAPFLAG}${TJMAPFILE}") endif() - - add_executable(tjunittest tjunittest.c tjutil.c md5/md5.c md5/md5hl.c) - target_link_libraries(tjunittest turbojpeg) - - add_executable(tjbench tjbench.c tjutil.c) - target_link_libraries(tjbench turbojpeg) - if(UNIX) - target_link_libraries(tjbench m) - endif() - - add_executable(tjexample tjexample.c) - target_link_libraries(tjexample turbojpeg) endif() if(ENABLE_STATIC) @@ -612,16 +600,6 @@ if(WITH_TURBOJPEG) if(NOT MSVC) set_target_properties(turbojpeg-static PROPERTIES OUTPUT_NAME turbojpeg) endif() - - add_executable(tjunittest-static tjunittest.c tjutil.c md5/md5.c - md5/md5hl.c) - target_link_libraries(tjunittest-static turbojpeg-static) - - add_executable(tjbench-static tjbench.c tjutil.c) - target_link_libraries(tjbench-static turbojpeg-static) - if(UNIX) - target_link_libraries(tjbench-static m) - endif() endif() endif() @@ -634,849 +612,4 @@ else() set(COMPILE_FLAGS "-DBMP_SUPPORTED -DGIF_SUPPORTED -DPPM_SUPPORTED -DTARGA_SUPPORTED ${USE_SETMODE}") set(CJPEG_BMP_SOURCES rdbmp.c rdtarga.c) set(DJPEG_BMP_SOURCES wrbmp.c wrtarga.c) -endif() - -if(ENABLE_STATIC) - add_executable(cjpeg-static cjpeg.c cdjpeg.c rdgif.c rdppm.c rdswitch.c - ${CJPEG_BMP_SOURCES}) - set_property(TARGET cjpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS}) - target_link_libraries(cjpeg-static jpeg-static) - - add_executable(djpeg-static djpeg.c cdjpeg.c rdcolmap.c rdswitch.c wrgif.c - wrppm.c ${DJPEG_BMP_SOURCES}) - set_property(TARGET djpeg-static PROPERTY COMPILE_FLAGS ${COMPILE_FLAGS}) - target_link_libraries(djpeg-static jpeg-static) - - add_executable(jpegtran-static jpegtran.c cdjpeg.c rdswitch.c transupp.c) - target_link_libraries(jpegtran-static jpeg-static) - set_property(TARGET jpegtran-static PROPERTY COMPILE_FLAGS "${USE_SETMODE}") -endif() - -add_executable(rdjpgcom rdjpgcom.c) - -add_executable(wrjpgcom wrjpgcom.c) - - -############################################################################### -# TESTS -############################################################################### - -if(WITH_FUZZ) - add_subdirectory(fuzz) -endif() - -add_executable(strtest strtest.c) - -add_subdirectory(md5) - -if(MSVC_IDE OR XCODE) - set(OBJDIR "\${CTEST_CONFIGURATION_TYPE}/") -else() - set(OBJDIR "") -endif() - -enable_testing() - -if(WITH_12BIT) - set(TESTORIG testorig12.jpg) - set(MD5_JPEG_RGB_ISLOW 9d7369207c520d37f2c1cbfcb82b2964) - set(MD5_JPEG_RGB_ISLOW2 a00bd20d8ae49684640ef7177d2e0b64) - set(MD5_PPM_RGB_ISLOW f3301d2219783b8b3d942b7239fa50c0) - set(MD5_JPEG_422_IFAST_OPT 7322e3bd2f127f7de4b40d4480ce60e4) - set(MD5_PPM_422_IFAST 79807fa552899e66a04708f533e16950) - set(MD5_JPEG_440_ISLOW e25c1912e38367be505a89c410c1c2d2) - set(MD5_PPM_440_ISLOW e7d2e26288870cfcb30f3114ad01e380) - set(MD5_PPM_422M_IFAST 07737bfe8a7c1c87aaa393a0098d16b0) - set(MD5_JPEG_420_IFAST_Q100_PROG 9447cef4803d9b0f74bcf333cc710a29) - set(MD5_PPM_420_Q100_IFAST 1b3730122709f53d007255e8dfd3305e) - set(MD5_PPM_420M_Q100_IFAST 980a1a3c5bf9510022869d30b7d26566) - set(MD5_JPEG_GRAY_ISLOW 235c90707b16e2e069f37c888b2636d9) - set(MD5_PPM_GRAY_ISLOW 7213c10af507ad467da5578ca5ee1fca) - set(MD5_PPM_GRAY_ISLOW_RGB e96ee81c30a6ed422d466338bd3de65d) - set(MD5_JPEG_420S_IFAST_OPT 7af8e60be4d9c227ec63ac9b6630855e) - - set(MD5_JPEG_3x2_FLOAT_PROG_SSE a8c17daf77b457725ec929e215b603f8) - set(MD5_PPM_3x2_FLOAT_SSE 42876ab9e5c2f76a87d08db5fbd57956) - set(MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT a8c17daf77b457725ec929e215b603f8) - set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) - set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT - ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) - set(MD5_PPM_3x2_FLOAT_FP_CONTRACT ${MD5_PPM_3x2_FLOAT_SSE}) - set(MD5_JPEG_3x2_FLOAT_PROG_387 bc6dbbefac2872f6b9d6c4a0ae60c3c0) - set(MD5_PPM_3x2_FLOAT_387 bcc5723c61560463ac60f772e742d092) - set(MD5_JPEG_3x2_FLOAT_PROG_MSVC e27840755870fa849872e58aa0cd1400) - set(MD5_PPM_3x2_FLOAT_MSVC 6c2880b83bb1aa41dfe330e7a9768690) - - set(MD5_JPEG_3x2_IFAST_PROG 1396cc2b7185cfe943d408c9d305339e) - set(MD5_PPM_3x2_IFAST 3975985ef6eeb0a2cdc58daa651ccc00) - set(MD5_PPM_420M_ISLOW_2_1 4ca6be2a6f326ff9eaab63e70a8259c0) - set(MD5_PPM_420M_ISLOW_15_8 12aa9f9534c1b3d7ba047322226365eb) - set(MD5_PPM_420M_ISLOW_13_8 f7e22817c7b25e1393e4ec101e9d4e96) - set(MD5_PPM_420M_ISLOW_11_8 800a16f9f4dc9b293197bfe11be10a82) - set(MD5_PPM_420M_ISLOW_9_8 06b7a92a9bc69f4dc36ec40f1937d55c) - set(MD5_PPM_420M_ISLOW_7_8 3ec444a14a4ab4eab88ffc49c48eca43) - set(MD5_PPM_420M_ISLOW_3_4 3e726b7ea872445b19437d1c1d4f0d93) - set(MD5_PPM_420M_ISLOW_5_8 a8a771abdc94301d20ffac119b2caccd) - set(MD5_PPM_420M_ISLOW_1_2 b419124dd5568b085787234866102866) - set(MD5_PPM_420M_ISLOW_3_8 343d19015531b7bbe746124127244fa8) - set(MD5_PPM_420M_ISLOW_1_4 35fd59d866e44659edfa3c18db2a3edb) - set(MD5_PPM_420M_ISLOW_1_8 ccaed48ac0aedefda5d4abe4013f4ad7) - set(MD5_PPM_420_ISLOW_SKIP15_31 86664cd9dc956536409e44e244d20a97) - set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 452a21656115a163029cfba5c04fa76a) - set(MD5_PPM_444_ISLOW_SKIP1_6 ef63901f71ef7a75cd78253fc0914f84) - set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 15b173fb5872d9575572fbcc1b05956f) - set(MD5_JPEG_CROP cdb35ff4b4519392690ea040c56ea99c) -else() - set(TESTORIG testorig.jpg) - set(MD5_JPEG_RGB_ISLOW 1d44a406f61da743b5fd31c0a9abdca3) - set(MD5_JPEG_RGB_ISLOW2 31d121e57b6c2934c890a7fc7763bcd4) - set(MD5_PPM_RGB_ISLOW 00a257f5393fef8821f2b88ac7421291) - set(MD5_BMP_RGB_ISLOW_565 f07d2e75073e4bb10f6c6f4d36e2e3be) - set(MD5_BMP_RGB_ISLOW_565D 4cfa0928ef3e6bb626d7728c924cfda4) - set(MD5_JPEG_422_IFAST_OPT 2540287b79d913f91665e660303ab2c8) - set(MD5_PPM_422_IFAST 35bd6b3f833bad23de82acea847129fa) - set(MD5_JPEG_440_ISLOW 538bc02bd4b4658fd85de6ece6cbeda6) - set(MD5_PPM_440_ISLOW 11e7eab7ef7ef3276934bb7e7b6bb377) - set(MD5_PPM_422M_IFAST 8dbc65323d62cca7c91ba02dd1cfa81d) - set(MD5_BMP_422M_IFAST_565 3294bd4d9a1f2b3d08ea6020d0db7065) - set(MD5_BMP_422M_IFAST_565D da98c9c7b6039511be4a79a878a9abc1) - set(MD5_JPEG_420_IFAST_Q100_PROG 0ba15f9dab81a703505f835f9dbbac6d) - set(MD5_PPM_420_Q100_IFAST 5a732542015c278ff43635e473a8a294) - set(MD5_PPM_420M_Q100_IFAST ff692ee9323a3b424894862557c092f1) - set(MD5_JPEG_GRAY_ISLOW 72b51f894b8f4a10b3ee3066770aa38d) - set(MD5_PPM_GRAY_ISLOW 8d3596c56eace32f205deccc229aa5ed) - set(MD5_PPM_GRAY_ISLOW_RGB 116424ac07b79e5e801f00508eab48ec) - set(MD5_BMP_GRAY_ISLOW_565 12f78118e56a2f48b966f792fedf23cc) - set(MD5_BMP_GRAY_ISLOW_565D bdbbd616441a24354c98553df5dc82db) - set(MD5_JPEG_420S_IFAST_OPT 388708217ac46273ca33086b22827ed8) - - set(MD5_JPEG_3x2_FLOAT_PROG_SSE 343e3f8caf8af5986ebaf0bdc13b5c71) - set(MD5_PPM_3x2_FLOAT_SSE 1a75f36e5904d6fc3a85a43da9ad89bb) - set(MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT 9bca803d2042bd1eb03819e2bf92b3e5) - set(MD5_PPM_3x2_FLOAT_NO_FP_CONTRACT f6bfab038438ed8f5522fbd33595dcdc) - set(MD5_JPEG_3x2_FLOAT_PROG_FP_CONTRACT - ${MD5_JPEG_3x2_FLOAT_PROG_NO_FP_CONTRACT}) - set(MD5_PPM_3x2_FLOAT_FP_CONTRACT 0e917a34193ef976b679a6b069b1be26) - set(MD5_JPEG_3x2_FLOAT_PROG_387 1657664a410e0822c924b54f6f65e6e9) - set(MD5_PPM_3x2_FLOAT_387 cb0a1f027f3d2917c902b5640214e025) - set(MD5_JPEG_3x2_FLOAT_PROG_MSVC 7999ce9cd0ee9b6c7043b7351ab7639d) - set(MD5_PPM_3x2_FLOAT_MSVC 28cdc448a6b75e97892f0e0f8d4b21f3) - - set(MD5_JPEG_3x2_IFAST_PROG 1ee5d2c1a77f2da495f993c8c7cceca5) - set(MD5_PPM_3x2_IFAST fd283664b3b49127984af0a7f118fccd) - set(MD5_JPEG_420_ISLOW_ARI e986fb0a637a8d833d96e8a6d6d84ea1) - set(MD5_JPEG_444_ISLOW_PROGARI 0a8f1c8f66e113c3cf635df0a475a617) - set(MD5_PPM_420M_IFAST_ARI 57251da28a35b46eecb7177d82d10e0e) - set(MD5_JPEG_420_ISLOW 9a68f56bc76e466aa7e52f415d0f4a5f) - set(MD5_PPM_420M_ISLOW_2_1 9f9de8c0612f8d06869b960b05abf9c9) - set(MD5_PPM_420M_ISLOW_15_8 b6875bc070720b899566cc06459b63b7) - set(MD5_PPM_420M_ISLOW_13_8 bc3452573c8152f6ae552939ee19f82f) - set(MD5_PPM_420M_ISLOW_11_8 d8cc73c0aaacd4556569b59437ba00a5) - set(MD5_PPM_420M_ISLOW_9_8 d25e61bc7eac0002f5b393aa223747b6) - set(MD5_PPM_420M_ISLOW_7_8 ddb564b7c74a09494016d6cd7502a946) - set(MD5_PPM_420M_ISLOW_3_4 8ed8e68808c3fbc4ea764fc9d2968646) - set(MD5_PPM_420M_ISLOW_5_8 a3363274999da2366a024efae6d16c9b) - set(MD5_PPM_420M_ISLOW_1_2 e692a315cea26b988c8e8b29a5dbcd81) - set(MD5_PPM_420M_ISLOW_3_8 79eca9175652ced755155c90e785a996) - set(MD5_PPM_420M_ISLOW_1_4 79cd778f8bf1a117690052cacdd54eca) - set(MD5_PPM_420M_ISLOW_1_8 391b3d4aca640c8567d6f8745eb2142f) - set(MD5_BMP_420_ISLOW_256 4980185e3776e89bd931736e1cddeee6) - set(MD5_BMP_420_ISLOW_565 bf9d13e16c4923b92e1faa604d7922cb) - set(MD5_BMP_420_ISLOW_565D 6bde71526acc44bcff76f696df8638d2) - set(MD5_BMP_420M_ISLOW_565 8dc0185245353cfa32ad97027342216f) - set(MD5_BMP_420M_ISLOW_565D ce034037d212bc403330df6f915c161b) - set(MD5_PPM_420_ISLOW_SKIP15_31 c4c65c1e43d7275cd50328a61e6534f0) - set(MD5_PPM_420_ISLOW_ARI_SKIP16_139 087c6b123db16ac00cb88c5b590bb74a) - set(MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71 26eb36ccc7d1f0cb80cdabb0ac8b5d99) - set(MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4 886c6775af22370257122f8b16207e6d) - set(MD5_PPM_444_ISLOW_SKIP1_6 5606f86874cf26b8fcee1117a0a436a6) - set(MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13 db87dc7ce26bcdc7a6b56239ce2b9d6c) - set(MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0 cb57b32bd6d03e35432362f7bf184b6d) - set(MD5_JPEG_CROP b4197f377e621c4e9b1d20471432610d) -endif() - -if(WITH_JAVA) - add_test(TJUnitTest - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest) - add_test(TJUnitTest-yuv - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest -yuv) - add_test(TJUnitTest-yuv-nopad - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest -yuv -noyuvpad) - add_test(TJUnitTest-bi - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest -bi) - add_test(TJUnitTest-bi-yuv - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest -bi -yuv) - add_test(TJUnitTest-bi-yuv-nopad - ${Java_JAVA_EXECUTABLE} ${JAVAARGS} -cp java/turbojpeg.jar - -Djava.library.path=${CMAKE_CURRENT_BINARY_DIR}/${OBJDIR} - TJUnitTest -bi -yuv -noyuvpad) -endif() - -set(TEST_LIBTYPES "") -if(ENABLE_SHARED) - set(TEST_LIBTYPES ${TEST_LIBTYPES} shared) -endif() -if(ENABLE_STATIC) - set(TEST_LIBTYPES ${TEST_LIBTYPES} static) -endif() - -set(TESTIMAGES ${CMAKE_CURRENT_SOURCE_DIR}/testimages) -set(MD5CMP ${CMAKE_CURRENT_BINARY_DIR}/md5/md5cmp) -if(CMAKE_CROSSCOMPILING) - file(RELATIVE_PATH TESTIMAGES ${CMAKE_CURRENT_BINARY_DIR} ${TESTIMAGES}) - file(RELATIVE_PATH MD5CMP ${CMAKE_CURRENT_BINARY_DIR} ${MD5CMP}) -endif() - -# The output of the floating point DCT/IDCT algorithms differs depending on the -# type of floating point math used, so the FLOATTEST CMake variable must be -# set in order to tell the testing system which floating point results it -# should expect: -# -# sse = validate against the expected results from the libjpeg-turbo SSE SIMD -# extensions -# no-fp-contract = validate against the expected results from the C code when -# floating point expression contraction is disabled (the -# default with Clang, with GCC when building for platforms -# that lack fused multiply-add [FMA] instructions, or when -# passing -ffp-contract=off to the compiler) -# fp-contract = validate against the expected results from the C code when -# floating point expression contraction is enabled (the default -# with GCC when building for platforms that have fused multiply- -# add [FMA] instructions or when passing -ffp-contract=fast to -# the compiler) -# 387 = validate against the expected results from the C code when the 387 FPU -# is being used for floating point math (which is generally the default -# with x86 compilers) -# msvc = validate against the expected results from the C code when compiled -# with a 32-bit version of Visual C++ - -if(CPU_TYPE STREQUAL "x86_64" OR CPU_TYPE STREQUAL "i386") - if(WITH_SIMD) - set(DEFAULT_FLOATTEST sse) - elseif(CPU_TYPE STREQUAL "x86_64") - set(DEFAULT_FLOATTEST no-fp-contract) - elseif(CPU_TYPE STREQUAL "i386" AND MSVC) - set(DEFAULT_FLOATTEST msvc) - # else we can't really set an intelligent default for i386. The appropriate - # value could be 387, no-fp-contract, or fp-contract, depending on the - # compiler and compiler options. We leave it to the user to set FLOATTEST - # manually. - endif() -else() - if((CPU_TYPE STREQUAL "powerpc" OR CPU_TYPE STREQUAL "arm64") AND - NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" AND NOT MSVC) - set(DEFAULT_FLOATTEST fp-contract) - else() - set(DEFAULT_FLOATTEST no-fp-contract) - endif() -endif() - -# This causes FLOATTEST to reset to the default value if WITH_SIMD has -# changed. -if(DEFINED WITH_SIMD_INT AND NOT WITH_SIMD EQUAL WITH_SIMD_INT) - set(FORCE_FLOATTEST "FORCE") -endif() -set(WITH_SIMD_INT ${WITH_SIMD} CACHE INTERNAL "") -set(FLOATTEST ${DEFAULT_FLOATTEST} CACHE STRING - "The type of floating point math used by the floating point DCT/IDCT algorithms. This tells the testing system which numerical results it should expect from those tests. [sse = libjpeg-turbo x86/x86-64 SIMD extensions, no-fp-contract = generic FPU with floating point expression contraction disabled, fp-contract = generic FPU with floating point expression contraction enabled, 387 = 387 FPU, msvc = 32-bit Visual Studio] (default = ${DEFAULT_FLOATTEST})" - ${FORCE_FLOATTEST}) -message(STATUS "FLOATTEST = ${FLOATTEST}") - -if(FLOATTEST) - string(TOUPPER ${FLOATTEST} FLOATTEST_UC) - string(REGEX REPLACE "-" "_" FLOATTEST_UC ${FLOATTEST_UC}) - string(TOLOWER ${FLOATTEST} FLOATTEST) - if(NOT FLOATTEST STREQUAL "sse" AND - NOT FLOATTEST STREQUAL "no-fp-contract" AND - NOT FLOATTEST STREQUAL "fp-contract" AND NOT FLOATTEST STREQUAL "387" AND - NOT FLOATTEST STREQUAL "msvc") - message(FATAL_ERROR "\"${FLOATTEST}\" is not a valid value for FLOATTEST.") - endif() -endif() - -foreach(libtype ${TEST_LIBTYPES}) - if(libtype STREQUAL "static") - set(suffix -static) - endif() - if(WITH_TURBOJPEG) - add_test(tjunittest-${libtype} - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix}) - add_test(tjunittest-${libtype}-alloc - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -alloc) - add_test(tjunittest-${libtype}-yuv - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv) - add_test(tjunittest-${libtype}-yuv-alloc - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv -alloc) - add_test(tjunittest-${libtype}-yuv-nopad - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -yuv -noyuvpad) - add_test(tjunittest-${libtype}-bmp - ${CMAKE_CROSSCOMPILING_EMULATOR} tjunittest${suffix} -bmp) - - set(MD5_PPM_GRAY_TILE 89d3ca21213d9d864b50b4e4e7de4ca6) - set(MD5_PPM_420_8x8_TILE 847fceab15c5b7b911cb986cf0f71de3) - set(MD5_PPM_420_16x16_TILE ca45552a93687e078f7137cc4126a7b0) - set(MD5_PPM_420_32x32_TILE d8676f1d6b68df358353bba9844f4a00) - set(MD5_PPM_420_64x64_TILE 4e4c1a3d7ea4bace4f868bcbe83b7050) - set(MD5_PPM_420_128x128_TILE f24c3429c52265832beab9df72a0ceae) - set(MD5_PPM_420M_8x8_TILE bc25320e1f4c31ce2e610e43e9fd173c) - set(MD5_PPM_420M_TILE 75ffdf14602258c5c189522af57fa605) - set(MD5_PPM_422_8x8_TILE d83dacd9fc73b0a6f10c09acad64eb1e) - set(MD5_PPM_422_16x16_TILE 35077fb610d72dd743b1eb0cbcfe10fb) - set(MD5_PPM_422_32x32_TILE e6902ed8a449ecc0f0d6f2bf945f65f7) - set(MD5_PPM_422_64x64_TILE 2b4502a8f316cedbde1da7bce3d2231e) - set(MD5_PPM_422_128x128_TILE f0b5617d578f5e13c8eee215d64d4877) - set(MD5_PPM_422M_8x8_TILE 828941d7f41cd6283abd6beffb7fd51d) - set(MD5_PPM_422M_TILE e877ae1324c4a280b95376f7f018172f) - set(MD5_PPM_444_TILE 7964e41e67cfb8d0a587c0aa4798f9c3) - - # Test compressing from/decompressing to an arbitrary subregion of a larger - # image buffer - add_test(tjbench-${libtype}-tile-cp - ${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm - testout_tile.ppm) - add_test(tjbench-${libtype}-tile - ${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tile.ppm 95 - -rgb -quiet -tile -benchtime 0.01 -warmup 0) - set_tests_properties(tjbench-${libtype}-tile - PROPERTIES DEPENDS tjbench-${libtype}-tile-cp) - - foreach(tile 8 16 32 64 128) - add_test(tjbench-${libtype}-tile-gray-${tile}x${tile}-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_GRAY_TILE} - testout_tile_GRAY_Q95_${tile}x${tile}.ppm) - foreach(subsamp 420 422) - add_test(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} - ${MD5_PPM_${subsamp}_${tile}x${tile}_TILE} - testout_tile_${subsamp}_Q95_${tile}x${tile}.ppm) - endforeach() - add_test(tjbench-${libtype}-tile-444-${tile}x${tile}-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_444_TILE} - testout_tile_444_Q95_${tile}x${tile}.ppm) - foreach(subsamp gray 420 422 444) - set_tests_properties(tjbench-${libtype}-tile-${subsamp}-${tile}x${tile}-cmp - PROPERTIES DEPENDS tjbench-${libtype}-tile) - endforeach() - endforeach() - - add_test(tjbench-${libtype}-tilem-cp - ${CMAKE_COMMAND} -E copy_if_different ${TESTIMAGES}/testorig.ppm - testout_tilem.ppm) - add_test(tjbench-${libtype}-tilem - ${CMAKE_CROSSCOMPILING_EMULATOR} tjbench${suffix} testout_tilem.ppm 95 - -rgb -fastupsample -quiet -tile -benchtime 0.01 -warmup 0) - set_tests_properties(tjbench-${libtype}-tilem - PROPERTIES DEPENDS tjbench-${libtype}-tilem-cp) - - add_test(tjbench-${libtype}-tile-420m-8x8-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_420M_8x8_TILE} - testout_tilem_420_Q95_8x8.ppm) - add_test(tjbench-${libtype}-tile-422m-8x8-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5_PPM_422M_8x8_TILE} - testout_tilem_422_Q95_8x8.ppm) - foreach(tile 16 32 64 128) - foreach(subsamp 420 422) - add_test(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} - ${MD5_PPM_${subsamp}M_TILE} - testout_tilem_${subsamp}_Q95_${tile}x${tile}.ppm) - endforeach() - endforeach() - foreach(tile 8 16 32 64 128) - foreach(subsamp 420 422) - set_tests_properties(tjbench-${libtype}-tile-${subsamp}m-${tile}x${tile}-cmp - PROPERTIES DEPENDS tjbench-${libtype}-tilem) - endforeach() - endforeach() - endif() - - # These tests are carefully crafted to provide full coverage of as many of - # the underlying algorithms as possible (including all of the - # SIMD-accelerated ones.) - - macro(add_bittest PROG NAME ARGS OUTFILE INFILE MD5SUM) - add_test(${PROG}-${libtype}-${NAME} - ${CMAKE_CROSSCOMPILING_EMULATOR} ${PROG}${suffix} ${ARGS} - -outfile ${OUTFILE} ${INFILE}) - add_test(${PROG}-${libtype}-${NAME}-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} ${MD5SUM} ${OUTFILE}) - set_tests_properties(${PROG}-${libtype}-${NAME}-cmp PROPERTIES - DEPENDS ${PROG}-${libtype}-${NAME}) - if(${ARGC} GREATER 6) - set(DEPENDS ${ARGN}) - set_tests_properties(${PROG}-${libtype}-${NAME} PROPERTIES - DEPENDS ${DEPENDS}) - endif() - endmacro() - - # CC: null SAMP: fullsize FDCT: islow ENT: huff - add_bittest(cjpeg rgb-islow "-rgb;-dct;int;-icc;${TESTIMAGES}/test1.icc" - testout_rgb_islow.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_RGB_ISLOW}) - - # CC: null SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg rgb-islow "-dct;int;-ppm;-icc;testout_rgb_islow.icc" - testout_rgb_islow.ppm testout_rgb_islow.jpg - ${MD5_PPM_RGB_ISLOW} cjpeg-${libtype}-rgb-islow) - - add_test(djpeg-${libtype}-rgb-islow-icc-cmp - ${CMAKE_CROSSCOMPILING_EMULATOR} ${MD5CMP} - b06a39d730129122e85c1363ed1bbc9e testout_rgb_islow.icc) - set_tests_properties(djpeg-${libtype}-rgb-islow-icc-cmp PROPERTIES - DEPENDS djpeg-${libtype}-rgb-islow) - - add_bittest(jpegtran icc "-copy;all;-icc;${TESTIMAGES}/test2.icc" - testout_rgb_islow2.jpg testout_rgb_islow.jpg - ${MD5_JPEG_RGB_ISLOW2} cjpeg-${libtype}-rgb-islow) - - if(NOT WITH_12BIT) - # CC: RGB->RGB565 SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg rgb-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" - testout_rgb_islow_565.bmp testout_rgb_islow.jpg - ${MD5_BMP_RGB_ISLOW_565} cjpeg-${libtype}-rgb-islow) - - # CC: RGB->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg rgb-islow-565D "-dct;int;-rgb565;-bmp" - testout_rgb_islow_565D.bmp testout_rgb_islow.jpg - ${MD5_BMP_RGB_ISLOW_565D} cjpeg-${libtype}-rgb-islow) - endif() - - # CC: RGB->YCC SAMP: fullsize/h2v1 FDCT: ifast ENT: 2-pass huff - add_bittest(cjpeg 422-ifast-opt "-sample;2x1;-dct;fast;-opt" - testout_422_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_422_IFAST_OPT}) - - # CC: YCC->RGB SAMP: fullsize/h2v1 fancy IDCT: ifast ENT: huff - add_bittest(djpeg 422-ifast "-dct;fast" - testout_422_ifast.ppm testout_422_ifast_opt.jpg - ${MD5_PPM_422_IFAST} cjpeg-${libtype}-422-ifast-opt) - - # CC: RGB->YCC SAMP: fullsize/h1v2 FDCT: islow ENT: huff - add_bittest(cjpeg 440-islow "-sample;1x2;-dct;int" - testout_440_islow.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_440_ISLOW}) - - # CC: YCC->RGB SAMP: fullsize/h1v2 fancy IDCT: islow ENT: huff - add_bittest(djpeg 440-islow "-dct;int" - testout_440_islow.ppm testout_440_islow.jpg - ${MD5_PPM_440_ISLOW} cjpeg-${libtype}-440-islow) - - # CC: YCC->RGB SAMP: h2v1 merged IDCT: ifast ENT: huff - add_bittest(djpeg 422m-ifast "-dct;fast;-nosmooth" - testout_422m_ifast.ppm testout_422_ifast_opt.jpg - ${MD5_PPM_422M_IFAST} cjpeg-${libtype}-422-ifast-opt) - - if(NOT WITH_12BIT) - # CC: YCC->RGB565 SAMP: h2v1 merged IDCT: ifast ENT: huff - add_bittest(djpeg 422m-ifast-565 - "-dct;int;-nosmooth;-rgb565;-dither;none;-bmp" - testout_422m_ifast_565.bmp testout_422_ifast_opt.jpg - ${MD5_BMP_422M_IFAST_565} cjpeg-${libtype}-422-ifast-opt) - - # CC: YCC->RGB565 (dithered) SAMP: h2v1 merged IDCT: ifast ENT: huff - add_bittest(djpeg 422m-ifast-565D "-dct;int;-nosmooth;-rgb565;-bmp" - testout_422m_ifast_565D.bmp testout_422_ifast_opt.jpg - ${MD5_BMP_422M_IFAST_565D} cjpeg-${libtype}-422-ifast-opt) - endif() - - # CC: RGB->YCC SAMP: fullsize/h2v2 FDCT: ifast ENT: prog huff - add_bittest(cjpeg 420-q100-ifast-prog - "-sample;2x2;-quality;100;-dct;fast;-scans;${TESTIMAGES}/test.scan" - testout_420_q100_ifast_prog.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_420_IFAST_Q100_PROG}) - - # CC: YCC->RGB SAMP: fullsize/h2v2 fancy IDCT: ifast ENT: prog huff - add_bittest(djpeg 420-q100-ifast-prog "-dct;fast" - testout_420_q100_ifast.ppm testout_420_q100_ifast_prog.jpg - ${MD5_PPM_420_Q100_IFAST} cjpeg-${libtype}-420-q100-ifast-prog) - - # CC: YCC->RGB SAMP: h2v2 merged IDCT: ifast ENT: prog huff - add_bittest(djpeg 420m-q100-ifast-prog "-dct;fast;-nosmooth" - testout_420m_q100_ifast.ppm testout_420_q100_ifast_prog.jpg - ${MD5_PPM_420M_Q100_IFAST} cjpeg-${libtype}-420-q100-ifast-prog) - - # CC: RGB->Gray SAMP: fullsize FDCT: islow ENT: huff - add_bittest(cjpeg gray-islow "-gray;-dct;int" - testout_gray_islow.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_GRAY_ISLOW}) - - # CC: Gray->Gray SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg gray-islow "-dct;int" - testout_gray_islow.ppm testout_gray_islow.jpg - ${MD5_PPM_GRAY_ISLOW} cjpeg-${libtype}-gray-islow) - - # CC: Gray->RGB SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg gray-islow-rgb "-dct;int;-rgb" - testout_gray_islow_rgb.ppm testout_gray_islow.jpg - ${MD5_PPM_GRAY_ISLOW_RGB} cjpeg-${libtype}-gray-islow) - - if(NOT WITH_12BIT) - # CC: Gray->RGB565 SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg gray-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" - testout_gray_islow_565.bmp testout_gray_islow.jpg - ${MD5_BMP_GRAY_ISLOW_565} cjpeg-${libtype}-gray-islow) - - # CC: Gray->RGB565 (dithered) SAMP: fullsize IDCT: islow ENT: huff - add_bittest(djpeg gray-islow-565D "-dct;int;-rgb565;-bmp" - testout_gray_islow_565D.bmp testout_gray_islow.jpg - ${MD5_BMP_GRAY_ISLOW_565D} cjpeg-${libtype}-gray-islow) - endif() - - # CC: RGB->YCC SAMP: fullsize smooth/h2v2 smooth FDCT: islow - # ENT: 2-pass huff - add_bittest(cjpeg 420s-ifast-opt "-sample;2x2;-smooth;1;-dct;int;-opt" - testout_420s_ifast_opt.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_420S_IFAST_OPT}) - - if(FLOATTEST) - # CC: RGB->YCC SAMP: fullsize/int FDCT: float ENT: prog huff - add_bittest(cjpeg 3x2-float-prog "-sample;3x2;-dct;float;-prog" - testout_3x2_float_prog.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_3x2_FLOAT_PROG_${FLOATTEST_UC}}) - - # CC: YCC->RGB SAMP: fullsize/int IDCT: float ENT: prog huff - add_bittest(djpeg 3x2-float-prog "-dct;float" - testout_3x2_float.ppm testout_3x2_float_prog.jpg - ${MD5_PPM_3x2_FLOAT_${FLOATTEST_UC}} cjpeg-${libtype}-3x2-float-prog) - endif() - - # CC: RGB->YCC SAMP: fullsize/int FDCT: ifast ENT: prog huff - add_bittest(cjpeg 3x2-ifast-prog "-sample;3x2;-dct;fast;-prog" - testout_3x2_ifast_prog.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_3x2_IFAST_PROG}) - - # CC: YCC->RGB SAMP: fullsize/int IDCT: ifast ENT: prog huff - add_bittest(djpeg 3x2-ifast-prog "-dct;fast" - testout_3x2_ifast.ppm testout_3x2_ifast_prog.jpg - ${MD5_PPM_3x2_IFAST} cjpeg-${libtype}-3x2-ifast-prog) - - if(WITH_ARITH_ENC) - # CC: YCC->RGB SAMP: fullsize/h2v2 FDCT: islow ENT: arith - add_bittest(cjpeg 420-islow-ari "-dct;int;-arithmetic" - testout_420_islow_ari.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_420_ISLOW_ARI}) - - add_bittest(jpegtran 420-islow-ari "-arithmetic" - testout_420_islow_ari2.jpg ${TESTIMAGES}/testimgint.jpg - ${MD5_JPEG_420_ISLOW_ARI}) - - # CC: YCC->RGB SAMP: fullsize FDCT: islow ENT: prog arith - add_bittest(cjpeg 444-islow-progari - "-sample;1x1;-dct;int;-prog;-arithmetic" - testout_444_islow_progari.jpg ${TESTIMAGES}/testorig.ppm - ${MD5_JPEG_444_ISLOW_PROGARI}) - endif() - - if(WITH_ARITH_DEC) - # CC: RGB->YCC SAMP: h2v2 merged IDCT: ifast ENT: arith - add_bittest(djpeg 420m-ifast-ari "-fast;-skip;1,20;-ppm" - testout_420m_ifast_ari.ppm ${TESTIMAGES}/testimgari.jpg - ${MD5_PPM_420M_IFAST_ARI}) - - add_bittest(jpegtran 420-islow "" - testout_420_islow.jpg ${TESTIMAGES}/testimgari.jpg - ${MD5_JPEG_420_ISLOW}) - endif() - - # 2/1-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 16x16 islow ENT: huff - # 15/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 15x15 islow ENT: huff - # 13/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 13x13 islow ENT: huff - # 11/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 11x11 islow ENT: huff - # 9/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 9x9 islow ENT: huff - # 7/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 7x7 islow/14x14 islow - # ENT: huff - # 3/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 6x6 islow/12x12 islow - # ENT: huff - # 5/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 5x5 islow/10x10 islow - # ENT: huff - # 1/2-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 4x4 islow/8x8 islow - # ENT: huff - # 3/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 3x3 islow/6x6 islow - # ENT: huff - # 1/4-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 2x2 islow/4x4 islow - # ENT: huff - # 1/8-- CC: YCC->RGB SAMP: h2v2 merged IDCT: 1x1 islow/2x2 islow - # ENT: huff - foreach(scale 2_1 15_8 13_8 11_8 9_8 7_8 3_4 5_8 1_2 3_8 1_4 1_8) - string(REGEX REPLACE "_" "/" scalearg ${scale}) - add_bittest(djpeg 420m-islow-${scale} - "-dct;int;-scale;${scalearg};-nosmooth;-ppm" - testout_420m_islow_${scale}.ppm ${TESTIMAGES}/${TESTORIG} - ${MD5_PPM_420M_ISLOW_${scale}}) - endforeach() - - if(NOT WITH_12BIT) - # CC: YCC->RGB (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff - add_bittest(djpeg 420-islow-256 "-dct;int;-colors;256;-bmp" - testout_420_islow_256.bmp ${TESTIMAGES}/${TESTORIG} - ${MD5_BMP_420_ISLOW_256}) - - # CC: YCC->RGB565 SAMP: h2v2 fancy IDCT: islow ENT: huff - add_bittest(djpeg 420-islow-565 "-dct;int;-rgb565;-dither;none;-bmp" - testout_420_islow_565.bmp ${TESTIMAGES}/${TESTORIG} - ${MD5_BMP_420_ISLOW_565}) - - # CC: YCC->RGB565 (dithered) SAMP: h2v2 fancy IDCT: islow ENT: huff - add_bittest(djpeg 420-islow-565D "-dct;int;-rgb565;-bmp" - testout_420_islow_565D.bmp ${TESTIMAGES}/${TESTORIG} - ${MD5_BMP_420_ISLOW_565D}) - - # CC: YCC->RGB565 SAMP: h2v2 merged IDCT: islow ENT: huff - add_bittest(djpeg 420m-islow-565 - "-dct;int;-nosmooth;-rgb565;-dither;none;-bmp" - testout_420m_islow_565.bmp ${TESTIMAGES}/${TESTORIG} - ${MD5_BMP_420M_ISLOW_565}) - - # CC: YCC->RGB565 (dithered) SAMP: h2v2 merged IDCT: islow ENT: huff - add_bittest(djpeg 420m-islow-565D "-dct;int;-nosmooth;-rgb565;-bmp" - testout_420m_islow_565D.bmp ${TESTIMAGES}/${TESTORIG} - ${MD5_BMP_420M_ISLOW_565D}) - endif() - - # Partial decode tests. These tests are designed to cover all of the - # possible code paths in jpeg_skip_scanlines(). - - # Context rows: Yes Intra-iMCU row: Yes iMCU row prefetch: No ENT: huff - add_bittest(djpeg 420-islow-skip15_31 "-dct;int;-skip;15,31;-ppm" - testout_420_islow_skip15,31.ppm ${TESTIMAGES}/${TESTORIG} - ${MD5_PPM_420_ISLOW_SKIP15_31}) - - # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: Yes ENT: arith - if(WITH_ARITH_DEC) - add_bittest(djpeg 420-islow-ari-skip16_139 "-dct;int;-skip;16,139;-ppm" - testout_420_islow_ari_skip16,139.ppm ${TESTIMAGES}/testimgari.jpg - ${MD5_PPM_420_ISLOW_ARI_SKIP16_139}) - endif() - - # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: prog huff - add_test(cjpeg-${libtype}-420-islow-prog - ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog - -outfile testout_420_islow_prog.jpg ${TESTIMAGES}/testorig.ppm) - add_bittest(djpeg 420-islow-prog-crop62x62_71_71 - "-dct;int;-crop;62x62+71+71;-ppm" - testout_420_islow_prog_crop62x62,71,71.ppm testout_420_islow_prog.jpg - ${MD5_PPM_420_ISLOW_PROG_CROP62x62_71_71} cjpeg-${libtype}-420-islow-prog) - - # Context rows: Yes Intra-iMCU row: No iMCU row prefetch: No ENT: arith - if(WITH_ARITH_DEC) - add_bittest(djpeg 420-islow-ari-crop53x53_4_4 - "-dct;int;-crop;53x53+4+4;-ppm" - testout_420_islow_ari_crop53x53,4,4.ppm ${TESTIMAGES}/testimgari.jpg - ${MD5_PPM_420_ISLOW_ARI_CROP53x53_4_4}) - endif() - - # Context rows: No Intra-iMCU row: Yes ENT: huff - add_test(cjpeg-${libtype}-444-islow - ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -sample 1x1 - -outfile testout_444_islow.jpg ${TESTIMAGES}/testorig.ppm) - add_bittest(djpeg 444-islow-skip1_6 "-dct;int;-skip;1,6;-ppm" - testout_444_islow_skip1,6.ppm testout_444_islow.jpg - ${MD5_PPM_444_ISLOW_SKIP1_6} cjpeg-${libtype}-444-islow) - - # Context rows: No Intra-iMCU row: No ENT: prog huff - add_test(cjpeg-${libtype}-444-islow-prog - ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -prog -sample 1x1 - -outfile testout_444_islow_prog.jpg ${TESTIMAGES}/testorig.ppm) - add_bittest(djpeg 444-islow-prog-crop98x98_13_13 - "-dct;int;-crop;98x98+13+13;-ppm" - testout_444_islow_prog_crop98x98,13,13.ppm testout_444_islow_prog.jpg - ${MD5_PPM_444_ISLOW_PROG_CROP98x98_13_13} cjpeg-${libtype}-444-islow-prog) - - # Context rows: No Intra-iMCU row: No ENT: arith - if(WITH_ARITH_ENC) - add_test(cjpeg-${libtype}-444-islow-ari - ${CMAKE_CROSSCOMPILING_EMULATOR} cjpeg${suffix} -dct int -arithmetic - -sample 1x1 -outfile testout_444_islow_ari.jpg - ${TESTIMAGES}/testorig.ppm) - if(WITH_ARITH_DEC) - add_bittest(djpeg 444-islow-ari-crop37x37_0_0 - "-dct;int;-crop;37x37+0+0;-ppm" - testout_444_islow_ari_crop37x37,0,0.ppm testout_444_islow_ari.jpg - ${MD5_PPM_444_ISLOW_ARI_CROP37x37_0_0} cjpeg-${libtype}-444-islow-ari) - endif() - endif() - - add_bittest(jpegtran crop "-crop;120x90+20+50;-transpose;-perfect" - testout_crop.jpg ${TESTIMAGES}/${TESTORIG} - ${MD5_JPEG_CROP}) - -endforeach() - -add_custom_target(testclean COMMAND ${CMAKE_COMMAND} -P - ${CMAKE_CURRENT_SOURCE_DIR}/cmakescripts/testclean.cmake) - -configure_file(croptest.in croptest @ONLY) -add_custom_target(croptest - COMMAND echo croptest - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/croptest) - -if(WITH_TURBOJPEG) - configure_file(tjbenchtest.in tjbenchtest @ONLY) - configure_file(tjexampletest.in tjexampletest @ONLY) - if(WIN32) - set(BASH bash) - endif() - if(WITH_JAVA) - configure_file(tjbenchtest.java.in tjbenchtest.java @ONLY) - configure_file(tjexampletest.java.in tjexampletest.java @ONLY) - add_custom_target(tjtest - COMMAND echo tjbenchtest - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest - COMMAND echo tjbenchtest -alloc - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc - COMMAND echo tjbenchtest -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv - COMMAND echo tjbenchtest -yuv -alloc - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc - COMMAND echo tjbenchtest -progressive - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive - COMMAND echo tjbenchtest -progressive -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv - COMMAND echo tjexampletest - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest - COMMAND echo tjbenchtest.java - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java - COMMAND echo tjbenchtest.java -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -yuv - COMMAND echo tjbenchtest.java -progressive - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java -progressive - COMMAND echo tjexampletest.java -progressive -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java - -progressive -yuv - COMMAND echo tjexampletest.java - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest.java - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest - ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest.java - ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest) - else() - add_custom_target(tjtest - COMMAND echo tjbenchtest - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest - COMMAND echo tjbenchtest -alloc - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -alloc - COMMAND echo tjbenchtest -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv - COMMAND echo tjbenchtest -yuv -alloc - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -yuv -alloc - COMMAND echo tjbenchtest -progressive - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive - COMMAND echo tjbenchtest -progressive -yuv - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest -progressive -yuv - COMMAND echo tjexampletest - COMMAND ${BASH} ${CMAKE_CURRENT_BINARY_DIR}/tjexampletest - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tjbenchtest) - endif() -endif() - - -############################################################################### -# INSTALLATION -############################################################################### - -set(EXE ${CMAKE_EXECUTABLE_SUFFIX}) - -if(WITH_TURBOJPEG) - if(ENABLE_SHARED) - install(TARGETS turbojpeg EXPORT ${CMAKE_PROJECT_NAME}Targets - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(TARGETS tjbench - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - if(NOT CMAKE_VERSION VERSION_LESS "3.1" AND MSVC AND - CMAKE_C_LINKER_SUPPORTS_PDB) - install(FILES "$" - DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL) - endif() - endif() - if(ENABLE_STATIC) - install(TARGETS turbojpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - if(NOT ENABLE_SHARED) - if(MSVC_IDE OR XCODE) - set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") - else() - set(DIR ${CMAKE_CURRENT_BINARY_DIR}) - endif() - install(PROGRAMS ${DIR}/tjbench-static${EXE} - DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME tjbench${EXE}) - endif() - endif() - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/turbojpeg.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -endif() - -if(ENABLE_STATIC) - install(TARGETS jpeg-static EXPORT ${CMAKE_PROJECT_NAME}Targets - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - if(NOT ENABLE_SHARED) - if(MSVC_IDE OR XCODE) - set(DIR "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}") - else() - set(DIR ${CMAKE_CURRENT_BINARY_DIR}) - endif() - install(PROGRAMS ${DIR}/cjpeg-static${EXE} - DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME cjpeg${EXE}) - install(PROGRAMS ${DIR}/djpeg-static${EXE} - DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME djpeg${EXE}) - install(PROGRAMS ${DIR}/jpegtran-static${EXE} - DESTINATION ${CMAKE_INSTALL_BINDIR} RENAME jpegtran${EXE}) - endif() -endif() - -install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - -install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg - ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.txt - ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c - ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg.txt - ${CMAKE_CURRENT_SOURCE_DIR}/structure.txt - ${CMAKE_CURRENT_SOURCE_DIR}/usage.txt ${CMAKE_CURRENT_SOURCE_DIR}/wizard.txt - ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) -if(WITH_JAVA) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJExample.java - DESTINATION ${CMAKE_INSTALL_DOCDIR}) -endif() - -if(UNIX OR MINGW) - install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cjpeg.1 - ${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1 - ${CMAKE_CURRENT_SOURCE_DIR}/rdjpgcom.1 - ${CMAKE_CURRENT_SOURCE_DIR}/wrjpgcom.1 - DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) -endif() -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc - ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libturbojpeg.pc - DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/${CMAKE_PROJECT_NAME}ConfigVersion.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}) -install(EXPORT ${CMAKE_PROJECT_NAME}Targets - NAMESPACE ${CMAKE_PROJECT_NAME}:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h - ${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h - ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) - -include(cmakescripts/BuildPackages.cmake) - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmakescripts/cmake_uninstall.cmake.in" - "cmake_uninstall.cmake" IMMEDIATE @ONLY) - -add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P cmake_uninstall.cmake) +endif() \ No newline at end of file diff --git a/cmake/CMakeLists.png b/cmake/CMakeLists.png new file mode 100644 index 0000000000..2521ab41be --- /dev/null +++ b/cmake/CMakeLists.png @@ -0,0 +1,741 @@ +# CMakeLists.txt + +# Copyright (C) 2018 Cosmin Truta +# Copyright (C) 2007,2009-2018 Glenn Randers-Pehrson +# Written by Christian Ehrlicher, 2007 +# Revised by Roger Lowman, 2009-2010 +# Revised by Clifford Yapp, 2011-2012,2017 +# Revised by Roger Leigh, 2016 +# Revised by Andreas Franek, 2016 +# Revised by Sam Serrels, 2017 +# Revised by Vadim Barkov, 2017 +# Revised by Vicky Pfau, 2018 +# Revised by Cameron Cawley, 2018 +# Revised by Cosmin Truta, 2018 +# Revised by Kyle Bentley, 2018 + +# This code is released under the libpng license. +# For conditions of distribution and use, see the disclaimer +# and license in png.h + +cmake_minimum_required(VERSION 3.10) +cmake_policy(VERSION 3.1) +# When using CMake 3.4 and later, don't export symbols from executables unless +# the CMAKE_ENABLE_EXPORTS variable is set. +if(POLICY CMP0065) + cmake_policy(SET CMP0065 NEW) +endif() +if (POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) + +project(libpng C ASM) +enable_testing() + +set(PNGLIB_MAJOR 1) +set(PNGLIB_MINOR 6) +set(PNGLIB_RELEASE 37) +set(PNGLIB_NAME libpng${PNGLIB_MAJOR}${PNGLIB_MINOR}) +set(PNGLIB_VERSION ${PNGLIB_MAJOR}.${PNGLIB_MINOR}.${PNGLIB_RELEASE}) + +include(GNUInstallDirs) + +# needed packages + +# Allow users to specify location of Zlib. +# Useful if zlib is being built alongside this as a sub-project. +option(PNG_BUILD_ZLIB "Custom zlib Location, else find_package is used" ON) + +if(NOT PNG_BUILD_ZLIB) + find_package(ZLIB REQUIRED) + include_directories(${ZLIB_INCLUDE_DIR}) +endif() + +if(UNIX AND NOT APPLE AND NOT BEOS AND NOT HAIKU) + find_library(M_LIBRARY m) +else() + # libm is not needed and/or not available + set(M_LIBRARY "") +endif() + +# COMMAND LINE OPTIONS +option(PNG_SHARED "Build shared lib" OFF) +option(PNG_STATIC "Build static lib" ON) +option(PNG_TESTS "Build libpng tests" OFF) + +# Many more configuration options could be added here +option(PNG_FRAMEWORK "Build OS X framework" OFF) +option(PNG_DEBUG "Build with debug output" OFF) +option(PNG_HARDWARE_OPTIMIZATIONS "Enable hardware optimizations" OFF) + +set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names") +set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings") + +if(PNG_HARDWARE_OPTIMIZATIONS) + +# set definitions and sources for arm +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") + set(PNG_ARM_NEON_POSSIBLE_VALUES check on off) + set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations: + check: (default) use internal checking code; + off: disable the optimizations; + on: turn on unconditionally.") + set_property(CACHE PNG_ARM_NEON PROPERTY STRINGS + ${PNG_ARM_NEON_POSSIBLE_VALUES}) + list(FIND PNG_ARM_NEON_POSSIBLE_VALUES ${PNG_ARM_NEON} index) + if(index EQUAL -1) + message(FATAL_ERROR + "PNG_ARM_NEON must be one of [${PNG_ARM_NEON_POSSIBLE_VALUES}]") + elseif(NOT ${PNG_ARM_NEON} STREQUAL "off") + set(libpng_arm_sources + arm/arm_init.c + arm/filter_neon.S + arm/filter_neon_intrinsics.c + arm/palette_neon_intrinsics.c) + + if(${PNG_ARM_NEON} STREQUAL "on") + add_definitions(-DPNG_ARM_NEON_OPT=2) + elseif(${PNG_ARM_NEON} STREQUAL "check") + add_definitions(-DPNG_ARM_NEON_CHECK_SUPPORTED) + endif() + else() + add_definitions(-DPNG_ARM_NEON_OPT=0) + endif() +endif() + +# set definitions and sources for powerpc +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*") + set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off) + set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations: + off: disable the optimizations.") + set_property(CACHE PNG_POWERPC_VSX PROPERTY STRINGS + ${PNG_POWERPC_VSX_POSSIBLE_VALUES}) + list(FIND PNG_POWERPC_VSX_POSSIBLE_VALUES ${PNG_POWERPC_VSX} index) + if(index EQUAL -1) + message(FATAL_ERROR + "PNG_POWERPC_VSX must be one of [${PNG_POWERPC_VSX_POSSIBLE_VALUES}]") + elseif(NOT ${PNG_POWERPC_VSX} STREQUAL "off") + set(libpng_powerpc_sources + powerpc/powerpc_init.c + powerpc/filter_vsx_intrinsics.c) + if(${PNG_POWERPC_VSX} STREQUAL "on") + add_definitions(-DPNG_POWERPC_VSX_OPT=2) + endif() + else() + add_definitions(-DPNG_POWERPC_VSX_OPT=0) + endif() +endif() + +# set definitions and sources for intel +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*") + set(PNG_INTEL_SSE_POSSIBLE_VALUES on off) + set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations: + off: disable the optimizations") + set_property(CACHE PNG_INTEL_SSE PROPERTY STRINGS + ${PNG_INTEL_SSE_POSSIBLE_VALUES}) + list(FIND PNG_INTEL_SSE_POSSIBLE_VALUES ${PNG_INTEL_SSE} index) + if(index EQUAL -1) + message(FATAL_ERROR + "PNG_INTEL_SSE must be one of [${PNG_INTEL_SSE_POSSIBLE_VALUES}]") + elseif(NOT ${PNG_INTEL_SSE} STREQUAL "off") + set(libpng_intel_sources + intel/intel_init.c + intel/filter_sse2_intrinsics.c) + if(${PNG_INTEL_SSE} STREQUAL "on") + add_definitions(-DPNG_INTEL_SSE_OPT=1) + endif() + else() + add_definitions(-DPNG_INTEL_SSE_OPT=0) + endif() +endif() + +# set definitions and sources for MIPS +if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*") + set(PNG_MIPS_MSA_POSSIBLE_VALUES on off) + set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations: + off: disable the optimizations") + set_property(CACHE PNG_MIPS_MSA PROPERTY STRINGS + ${PNG_MIPS_MSA_POSSIBLE_VALUES}) + list(FIND PNG_MIPS_MSA_POSSIBLE_VALUES ${PNG_MIPS_MSA} index) + if(index EQUAL -1) + message(FATAL_ERROR + "PNG_MIPS_MSA must be one of [${PNG_MIPS_MSA_POSSIBLE_VALUES}]") + elseif(NOT ${PNG_MIPS_MSA} STREQUAL "off") + set(libpng_mips_sources + mips/mips_init.c + mips/filter_msa_intrinsics.c) + if(${PNG_MIPS_MSA} STREQUAL "on") + add_definitions(-DPNG_MIPS_MSA_OPT=2) + endif() + else() + add_definitions(-DPNG_MIPS_MSA_OPT=0) + endif() +endif() + +else(PNG_HARDWARE_OPTIMIZATIONS) + +# set definitions and sources for arm +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64") + add_definitions(-DPNG_ARM_NEON_OPT=0) +endif() + +# set definitions and sources for powerpc +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*") + add_definitions(-DPNG_POWERPC_VSX_OPT=0) +endif() + +# set definitions and sources for intel +if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*") + add_definitions(-DPNG_INTEL_SSE_OPT=0) +endif() + +# set definitions and sources for MIPS +if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR + CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*") + add_definitions(-DPNG_MIPS_MSA_OPT=0) +endif() + +endif(PNG_HARDWARE_OPTIMIZATIONS) + +# SET LIBNAME +set(PNG_LIB_NAME png${PNGLIB_MAJOR}${PNGLIB_MINOR}) + +# to distinguish between debug and release lib +set(CMAKE_DEBUG_POSTFIX "d") + +include(CheckCSourceCompiles) +option(ld-version-script "Enable linker version script" ON) +if(ld-version-script AND NOT APPLE) + # Check if LD supports linker scripts. + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map" "VERS_1 { + global: sym; + local: *; +}; + +VERS_2 { + global: sym2; + main; +} VERS_1; +") + set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) + set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} "-Wl,--version-script='${CMAKE_CURRENT_BINARY_DIR}/conftest.map'") + check_c_source_compiles("void sym(void) {} +void sym2(void) {} +int main(void) {return 0;} +" HAVE_LD_VERSION_SCRIPT) + if(NOT HAVE_LD_VERSION_SCRIPT) + set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE} "-Wl,-M -Wl,${CMAKE_CURRENT_BINARY_DIR}/conftest.map") + check_c_source_compiles("void sym(void) {} +void sym2(void) {} +int main(void) {return 0;} +" HAVE_SOLARIS_LD_VERSION_SCRIPT) + endif() + set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) + file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/conftest.map") +endif() + +# Find symbol prefix. Likely obsolete and unnecessary with recent +# toolchains (it's not done in many other projects). +function(symbol_prefix) + set(SYMBOL_PREFIX) + + execute_process(COMMAND "${CMAKE_C_COMPILER}" "-E" "-" + INPUT_FILE /dev/null + OUTPUT_VARIABLE OUT + RESULT_VARIABLE STATUS) + + if(CPP_FAIL) + message(WARNING "Failed to run the C preprocessor") + endif() + + string(REPLACE "\n" ";" OUT "${OUT}") + foreach(line ${OUT}) + string(REGEX MATCH "^PREFIX=" found_match "${line}") + if(found_match) + string(REGEX REPLACE "^PREFIX=(.*\)" "\\1" prefix "${line}") + string(REGEX MATCH "__USER_LABEL_PREFIX__" found_match "${prefix}") + if(found_match) + string(REGEX REPLACE "(.*)__USER_LABEL_PREFIX__(.*)" "\\1\\2" prefix "${prefix}") + endif() + set(SYMBOL_PREFIX "${prefix}") + endif() + endforeach() + + message(STATUS "Symbol prefix: ${SYMBOL_PREFIX}") + set(SYMBOL_PREFIX "${SYMBOL_PREFIX}" PARENT_SCOPE) +endfunction() + +if(UNIX) + symbol_prefix() +endif() + +find_program(AWK NAMES gawk awk) + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + +if(NOT AWK OR ANDROID) + # No awk available to generate sources; use pre-built pnglibconf.h + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt + ${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h) + add_custom_target(genfiles) # Dummy +else() + include(CMakeParseArguments) + # Generate .chk from .out with awk + # generate_chk(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) + function(generate_chk) + set(options) + set(oneValueArgs INPUT OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GC_INPUT) + message(FATAL_ERROR "generate_chk: Missing INPUT argument") + endif() + if(NOT _GC_OUTPUT) + message(FATAL_ERROR "generate_chk: Missing OUTPUT argument") + endif() + + add_custom_command(OUTPUT "${_GC_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DINPUT=${_GC_INPUT}" + "-DOUTPUT=${_GC_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake" + DEPENDS "${_GC_INPUT}" ${_GC_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + endfunction() + + # Generate .out from .c with awk + # generate_out(INPUT inputfile OUTPUT outputfile [DEPENDS dep1 [dep2...]]) + function(generate_out) + set(options) + set(oneValueArgs INPUT OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GO_INPUT) + message(FATAL_ERROR "generate_out: Missing INPUT argument") + endif() + if(NOT _GO_OUTPUT) + message(FATAL_ERROR "generate_out: Missing OUTPUT argument") + endif() + + add_custom_command(OUTPUT "${_GO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DINPUT=${_GO_INPUT}" + "-DOUTPUT=${_GO_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake" + DEPENDS "${_GO_INPUT}" ${_GO_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + endfunction() + + # Generate specific source file with awk + # generate_source(OUTPUT outputfile [DEPENDS dep1 [dep2...]]) + function(generate_source) + set(options) + set(oneValueArgs OUTPUT) + set(multiValueArgs DEPENDS) + cmake_parse_arguments(_GSO "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + if(NOT _GSO_OUTPUT) + message(FATAL_ERROR "generate_source: Missing OUTPUT argument") + endif() + + add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${_GSO_OUTPUT}" + COMMAND "${CMAKE_COMMAND}" + "-DOUTPUT=${_GSO_OUTPUT}" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake" + DEPENDS ${_GSO_DEPENDS} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + endfunction() + + # Copy file + function(generate_copy source destination) + add_custom_command(OUTPUT "${destination}" + COMMAND "${CMAKE_COMMAND}" -E remove "${destination}" + COMMAND "${CMAKE_COMMAND}" -E copy "${source}" + "${destination}" + DEPENDS "${source}") + endfunction() + + # Generate scripts/pnglibconf.h + generate_source(OUTPUT "scripts/pnglibconf.c" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" + "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") + + # Generate pnglibconf.c + generate_source(OUTPUT "pnglibconf.c" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.dfa" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/options.awk" + "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h") + + if(PNG_PREFIX) + set(PNGLIBCONF_H_EXTRA_DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/macro.lst") + set(PNGPREFIX_H_EXTRA_DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out") + endif() + + generate_out(INPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") + + # Generate pnglibconf.h + generate_source(OUTPUT "pnglibconf.h" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" + ${PNGLIBCONF_H_EXTRA_DEPENDS}) + + generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/intprefix.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") + + generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/prefix.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" + "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out") + + # Generate pngprefix.h + generate_source(OUTPUT "pngprefix.h" + DEPENDS ${PNGPREFIX_H_EXTRA_DEPENDS}) + + generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/sym.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") + + generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" + "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt") + + generate_out(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/scripts/vers.c" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/png.h" + "${CMAKE_CURRENT_SOURCE_DIR}/pngconf.h" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h") + + generate_chk(INPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/scripts/checksym.awk" + "${CMAKE_CURRENT_SOURCE_DIR}/scripts/symbols.def") + + add_custom_target(symbol-check DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk") + + generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") + generate_copy("${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") + + add_custom_target(genvers DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers") + add_custom_target(gensym DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym") + + add_custom_target("genprebuilt" + COMMAND "${CMAKE_COMMAND}" + "-DOUTPUT=scripts/pnglibconf.h.prebuilt" + -P "${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake" + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + + # A single target handles generation of all generated files. If + # they are depended upon separately by multiple targets, this + # confuses parallel make (it would require a separate top-level + # target for each file to track the dependencies properly). + add_custom_target(genfiles DEPENDS + "${CMAKE_CURRENT_BINARY_DIR}/libpng.sym" + "${CMAKE_CURRENT_BINARY_DIR}/libpng.vers" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.c" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.out" + "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/intprefix.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/pnglibconf.c" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/prefix.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/sym.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.chk" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/symbols.out" + "${CMAKE_CURRENT_BINARY_DIR}/scripts/vers.out") +endif(NOT AWK OR ANDROID) + +# OUR SOURCES +set(libpng_public_hdrs + png.h + pngconf.h + "${CMAKE_CURRENT_BINARY_DIR}/pnglibconf.h" +) +set(libpng_private_hdrs + pngpriv.h + pngdebug.h + pnginfo.h + pngstruct.h +) +if(AWK AND NOT ANDROID) + list(APPEND libpng_private_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pngprefix.h") +endif() +set(libpng_sources + ${libpng_public_hdrs} + ${libpng_private_hdrs} + png.c + pngerror.c + pngget.c + pngmem.c + pngpread.c + pngread.c + pngrio.c + pngrtran.c + pngrutil.c + pngset.c + pngtrans.c + pngwio.c + pngwrite.c + pngwtran.c + pngwutil.c + ${libpng_arm_sources} + ${libpng_intel_sources} + ${libpng_mips_sources} + ${libpng_powerpc_sources} +) +set(pngtest_sources + pngtest.c +) +set(pngvalid_sources + contrib/libtests/pngvalid.c +) +set(pngstest_sources + contrib/libtests/pngstest.c +) +set(pngunknown_sources + contrib/libtests/pngunknown.c +) +set(pngimage_sources + contrib/libtests/pngimage.c +) +set(pngfix_sources + contrib/tools/pngfix.c +) +set(png_fix_itxt_sources + contrib/tools/png-fix-itxt.c +) + +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) +endif() + +if(PNG_DEBUG) + add_definitions(-DPNG_DEBUG) +endif() + +# NOW BUILD OUR TARGET +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${ZLIB_INCLUDE_DIR}) + +unset(PNG_LIB_TARGETS) + +if(PNG_STATIC) + # does not work without changing name + set(PNG_LIB_NAME_STATIC png_static) + add_library(png_static STATIC ${libpng_sources}) + add_dependencies(png_static genfiles) + # MSVC doesn't use a different file extension for shared vs. static + # libs. We are able to change OUTPUT_NAME to remove the _static + # for all other platforms. + if(NOT MSVC) + set_target_properties(png_static PROPERTIES + OUTPUT_NAME "${PNG_LIB_NAME}" + CLEAN_DIRECT_OUTPUT 1) + else() + set_target_properties(png_static PROPERTIES + OUTPUT_NAME "${PNG_LIB_NAME}_static" + CLEAN_DIRECT_OUTPUT 1) + endif() + list(APPEND PNG_LIB_TARGETS png_static) + if(MSVC) + # msvc does not append 'lib' - do it here to have consistent name + set_target_properties(png_static PROPERTIES PREFIX "lib") + endif() + target_link_libraries(png_static ${M_LIBRARY}) +endif() + +if(NOT PNG_LIB_TARGETS) + message(SEND_ERROR + "No library variant selected to build. " + "Please enable at least one of the following options: " + "PNG_STATIC, PNG_SHARED, PNG_FRAMEWORK") +endif() + +# Set a variable with CMake code which: +# Creates a symlink from src to dest (if possible) or alternatively +# copies if different. +include(CMakeParseArguments) + +function(create_symlink DEST_FILE) + + cmake_parse_arguments(S "" "FILE;TARGET" "" ${ARGN}) + + if(NOT S_TARGET AND NOT S_FILE) + message(FATAL_ERROR "create_symlink: Missing TARGET or FILE argument") + endif() + + if(S_TARGET AND S_FILE) + message(FATAL_ERROR "create_symlink: Both source file ${S_FILE} and build target ${S_TARGET} arguments are present; can only have one.") + endif() + + if(S_FILE) + # If we don't need to symlink something that's coming from a build target, + # we can go ahead and symlink/copy at configure time. + if(CMAKE_HOST_WIN32 AND NOT CYGWIN) + execute_process( + COMMAND "${CMAKE_COMMAND}" -E copy_if_different ${S_FILE} ${DEST_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + else() + execute_process( + COMMAND ${CMAKE_COMMAND} -E create_symlink ${S_FILE} ${DEST_FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + endif() + endif() + + if(S_TARGET) + # We need to use generator expressions, which can be a bit tricky, so for + # simplicity make the symlink a POST_BUILD step and use the TARGET + # signature of add_custom_command. + if(CMAKE_HOST_WIN32 AND NOT CYGWIN) + add_custom_command(TARGET ${S_TARGET} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E copy_if_different $ $/${DEST_FILE}) + else() + add_custom_command(TARGET ${S_TARGET} POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E create_symlink $ $/${DEST_FILE}) + endif() + endif() + +endfunction() + +# Create source generation scripts. +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genchk.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/genchk.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/genout.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/genout.cmake @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/scripts/gensrc.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/scripts/gensrc.cmake @ONLY) + +# libpng is a library so default to 'lib' +if(NOT DEFINED CMAKE_INSTALL_LIBDIR) + set(CMAKE_INSTALL_LIBDIR lib) +endif() + +# CREATE PKGCONFIG FILES +# We use the same files like ./configure, so we have to set its vars. +# Only do this on Windows for Cygwin - the files don't make much sense outside +# of a UNIX look-alike. +if(NOT WIN32 OR CYGWIN OR MINGW) + set(prefix ${CMAKE_INSTALL_PREFIX}) + set(exec_prefix ${CMAKE_INSTALL_PREFIX}) + set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) + set(includedir ${CMAKE_INSTALL_FULL_INCLUDEDIR}) + set(LIBS "-lz -lm") + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng.pc.in + ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc @ONLY) + create_symlink(libpng.pc FILE ${PNGLIB_NAME}.pc) + + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libpng-config.in + ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config @ONLY) + create_symlink(libpng-config FILE ${PNGLIB_NAME}-config) +endif() + +# SET UP LINKS +if(PNG_SHARED) + set_target_properties(png PROPERTIES +# VERSION 16.${PNGLIB_RELEASE}.1.6.37 + VERSION 16.${PNGLIB_RELEASE}.0 + SOVERSION 16 + CLEAN_DIRECT_OUTPUT 1) +endif() + +# INSTALL +if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) + install(TARGETS ${PNG_LIB_TARGETS} + EXPORT libpng + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR}) + + if(PNG_SHARED) + # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin + if(CYGWIN OR MINGW) + create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png) + install(FILES $/libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} + DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + + if(NOT WIN32) + create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png) + install(FILES $/libpng${CMAKE_SHARED_LIBRARY_SUFFIX} + DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + endif() + + if(PNG_STATIC) + if(NOT WIN32 OR CYGWIN OR MINGW) + create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static) + install(FILES $/libpng${CMAKE_STATIC_LIBRARY_SUFFIX} + DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + endif() +endif() + +if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL) + install(FILES ${libpng_public_hdrs} DESTINATION include) + install(FILES ${libpng_public_hdrs} DESTINATION include/${PNGLIB_NAME}) +endif() +if(NOT SKIP_INSTALL_EXECUTABLES AND NOT SKIP_INSTALL_ALL) + if(NOT WIN32 OR CYGWIN OR MINGW) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config DESTINATION bin) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config DESTINATION bin) + endif() +endif() + +if(NOT SKIP_INSTALL_PROGRAMS AND NOT SKIP_INSTALL_ALL) + install(TARGETS ${PNG_BIN_TARGETS} + RUNTIME DESTINATION bin) +endif() + +if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL) + # Install man pages + if(NOT PNG_MAN_DIR) + set(PNG_MAN_DIR "share/man") + endif() + install(FILES libpng.3 libpngpf.3 DESTINATION ${PNG_MAN_DIR}/man3) + install(FILES png.5 DESTINATION ${PNG_MAN_DIR}/man5) + # Install pkg-config files + if(NOT CMAKE_HOST_WIN32 OR CYGWIN OR MINGW) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libpng.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/libpng-config + DESTINATION bin) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PNGLIB_NAME}-config + DESTINATION bin) + endif() +endif() + +# Create an export file that CMake users can include() to import our targets. +if(NOT SKIP_INSTALL_EXPORT AND NOT SKIP_INSTALL_ALL) + install(EXPORT libpng DESTINATION lib/libpng FILE lib${PNG_LIB_NAME}.cmake) +endif() + +# what's with libpng-manual.txt and all the extra files? + +# UNINSTALL +# do we need this? + +# DIST +# do we need this? + +# to create msvc import lib for mingw compiled shared lib +# pexports libpng.dll > libpng.def +# lib /def:libpng.def /machine:x86 diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 82280e3ce9..ff187c6366 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -446,14 +446,43 @@ endif() find_package(PNG QUIET) find_package(ZLIB QUIET) +if((NOT ZLIB_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) + set(LIBZ_URL http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz) + set(LIBZ_MD5 1c9f62f0778697a09d36121ead88e08e) + mark_as_advanced(LIBZ_URL) + mark_as_advanced(LIBZ_MD5) + include(ExternalCMakeProject) + ExternalCmakeProject(libz ${LIBZ_URL} ${LIBZ_MD5} zlib . CMakeLists.zlib) + add_library(ZLIB::ZLIB ALIAS zlibstatic) + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-src") + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-build") + set(ZLIB_FOUND TRUE) + set(ZLIB_INCLUDE_DIR "${CMAKE_BINARY_DIR}/_deps/libz-src;${CMAKE_BINARY_DIR}/_deps/libz-build") +endif() +if((NOT PNG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) + set(LIBPNG_URL http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz) + set(LIBPNG_MD5 6c7519f6c75939efa0ed3053197abd54) + mark_as_advanced(LIBPNG_URL) + mark_as_advanced(LIBPNG_MD5) + include(ExternalCMakeProject) + ExternalCmakeProject(libpng ${LIBPNG_URL} ${LIBPNG_MD5} libpng . CMakeLists.png) + add_library(PNG::PNG ALIAS png_static) + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-src") + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-build") + set(PNG_FOUND TRUE) +endif() if(PNG_FOUND AND ZLIB_FOUND) option(WITH_PNG "Enable PNG support" ON) else() option(WITH_PNG "Enable PNG support" OFF) endif() if(WITH_PNG) - find_package(PNG REQUIRED) - find_package(ZLIB REQUIRED) + if(NOT PNG_FOUND) + find_package(PNG REQUIRED) + endif() + if(NOT ZLIB_FOUND) + find_package(ZLIB REQUIRED) + endif() target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB) target_compile_definitions(lammps PRIVATE -DLAMMPS_PNG) endif() diff --git a/cmake/CMakeLists.zlib b/cmake/CMakeLists.zlib new file mode 100644 index 0000000000..a33f14ce64 --- /dev/null +++ b/cmake/CMakeLists.zlib @@ -0,0 +1,195 @@ +cmake_minimum_required(VERSION 3.10) +# When using CMake 3.4 and later, don't export symbols from executables unless +# the CMAKE_ENABLE_EXPORTS variable is set. +if(POLICY CMP0065) + cmake_policy(SET CMP0065 NEW) +endif() +if (POLICY CMP0077) + cmake_policy(SET CMP0077 NEW) +endif() +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS ON) + +project(zlib C) + +set(VERSION "1.2.11") + +option(ASM686 "Enable building i686 assembly implementation" OFF) +option(AMD64 "Enable building amd64 assembly implementation" OFF) + +set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables") +set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib" CACHE PATH "Installation directory for libraries") +set(INSTALL_INC_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE PATH "Installation directory for headers") +set(INSTALL_MAN_DIR "${CMAKE_INSTALL_PREFIX}/share/man" CACHE PATH "Installation directory for manual pages") +set(INSTALL_PKGCONFIG_DIR "${CMAKE_INSTALL_PREFIX}/share/pkgconfig" CACHE PATH "Installation directory for pkgconfig (.pc) files") + +include(CheckTypeSize) +include(CheckFunctionExists) +include(CheckIncludeFile) +include(CheckCSourceCompiles) + +check_include_file(sys/types.h HAVE_SYS_TYPES_H) +check_include_file(stdint.h HAVE_STDINT_H) +check_include_file(stddef.h HAVE_STDDEF_H) + +# +# Check to see if we have large file support +# +set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1) +# We add these other definitions here because CheckTypeSize.cmake +# in CMake 2.4.x does not automatically do so and we want +# compatibility with CMake 2.4.x. +if(HAVE_SYS_TYPES_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_SYS_TYPES_H) +endif() +if(HAVE_STDINT_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDINT_H) +endif() +if(HAVE_STDDEF_H) + list(APPEND CMAKE_REQUIRED_DEFINITIONS -DHAVE_STDDEF_H) +endif() +check_type_size(off64_t OFF64_T) +check_type_size(off64_t OFF64_T) +if(HAVE_OFF64_T) + add_definitions(-D_LARGEFILE64_SOURCE=1) +endif() +set(CMAKE_REQUIRED_DEFINITIONS) # clear variable + +# +# Check for fseeko +# +check_function_exists(fseeko HAVE_FSEEKO) +if(NOT HAVE_FSEEKO) + add_definitions(-DNO_FSEEKO) +endif() + +# +# Check for unistd.h +# +check_include_file(unistd.h Z_HAVE_UNISTD_H) + +if(MSVC) + set(CMAKE_DEBUG_POSTFIX "d") + add_definitions(-D_CRT_SECURE_NO_DEPRECATE) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}) +endif() + +if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) + # If we're doing an out of source build and the user has a zconf.h + # in their source tree... + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h) + file(RENAME ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.included) + endif() +endif() + +set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc) +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein + ${ZLIB_PC} @ONLY) +configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein + ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY) +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) + + +#============================================================================ +# zlib +#============================================================================ + +set(ZLIB_PUBLIC_HDRS + ${CMAKE_CURRENT_BINARY_DIR}/zconf.h + zlib.h +) +set(ZLIB_PRIVATE_HDRS + crc32.h + deflate.h + gzguts.h + inffast.h + inffixed.h + inflate.h + inftrees.h + trees.h + zutil.h +) +set(ZLIB_SRCS + adler32.c + compress.c + crc32.c + deflate.c + gzclose.c + gzlib.c + gzread.c + gzwrite.c + inflate.c + infback.c + inftrees.c + inffast.c + trees.c + uncompr.c + zutil.c +) + +if(NOT MINGW) + set(ZLIB_DLL_SRCS + win32/zlib1.rc # If present will override custom build rule below. + ) +endif() + +if(CMAKE_COMPILER_IS_GNUCC) + if(ASM686) + set(ZLIB_ASMS contrib/asm686/match.S) + elseif (AMD64) + set(ZLIB_ASMS contrib/amd64/amd64-match.S) + endif () + + if(ZLIB_ASMS) + add_definitions(-DASMV) + set_source_files_properties(${ZLIB_ASMS} PROPERTIES LANGUAGE C COMPILE_FLAGS -DNO_UNDERLINE) + endif() +endif() + +if(MSVC) + if(ASM686) + ENABLE_LANGUAGE(ASM_MASM) + set(ZLIB_ASMS + contrib/masmx86/inffas32.asm + contrib/masmx86/match686.asm + ) + elseif (AMD64) + ENABLE_LANGUAGE(ASM_MASM) + set(ZLIB_ASMS + contrib/masmx64/gvmat64.asm + contrib/masmx64/inffasx64.asm + ) + endif() + + if(ZLIB_ASMS) + add_definitions(-DASMV -DASMINF) + endif() +endif() + +# parse the full version number from zlib.h and include in ZLIB_FULL_VERSION +file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents) +string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" + "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents}) + +if(MINGW) + # This gets us DLL resource information when compiling on MinGW. + if(NOT CMAKE_RC_COMPILER) + set(CMAKE_RC_COMPILER windres.exe) + endif() + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + COMMAND ${CMAKE_RC_COMPILER} + -D GCC_WINDRES + -I ${CMAKE_CURRENT_SOURCE_DIR} + -I ${CMAKE_CURRENT_BINARY_DIR} + -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj + -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) + set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) +endif(MINGW) + +add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) + +if(UNIX) + # On unix-like platforms the library is almost always called libz + set_target_properties(zlibstatic PROPERTIES OUTPUT_NAME z) +endif() \ No newline at end of file diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index bdcf1aa3f8..599f1d0079 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,4 +1,6 @@ -find_package(ZLIB REQUIRED) +if(NOT ZLIB_FOUND) + find_package(ZLIB REQUIRED) +endif() target_link_libraries(lammps PRIVATE ZLIB::ZLIB) find_package(PkgConfig QUIET) @@ -8,4 +10,4 @@ if(PkgConfig_FOUND) target_compile_definitions(lammps PRIVATE -DLAMMPS_ZSTD) target_link_libraries(lammps PRIVATE PkgConfig::Zstd) endif() -endif() +endif() \ No newline at end of file From d905d3fbf5bfd4fa9f48240bc13b589e726ca70e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 17:46:12 -0400 Subject: [PATCH 21/46] reorganize build settings and presets --- cmake/CMakeSettings.json | 94 ++++++++++++------------------------- cmake/presets/windows.cmake | 2 + 2 files changed, 33 insertions(+), 63 deletions(-) diff --git a/cmake/CMakeSettings.json b/cmake/CMakeSettings.json index b0f940277f..6d4894f5c2 100644 --- a/cmake/CMakeSettings.json +++ b/cmake/CMakeSettings.json @@ -8,7 +8,7 @@ "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake", "buildCommandArgs": "", - "ctestCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [ "msvc_x64_x64" ], "variables": [ { @@ -26,11 +26,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -46,7 +41,7 @@ "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake", "buildCommandArgs": "", - "ctestCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [ "msvc_x64_x64" ], "variables": [ { @@ -64,11 +59,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -102,11 +92,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -122,7 +107,7 @@ "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe", "buildCommandArgs": "", - "ctestCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [ "clang_cl_x64" ], "variables": [ { @@ -140,11 +125,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -158,9 +138,16 @@ "configurationType": "Debug", "buildRoot": "${workspaceRoot}\\build\\${name}", "installRoot": "${workspaceRoot}\\install\\${name}", + "buildCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [], "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake", "variables": [ + { + "name": "PKG_ELECTRON", + "value": "True", + "type": "BOOL" + }, { "name": "BUILD_SHARED_LIBS", "value": "True", @@ -176,11 +163,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -190,11 +172,6 @@ "name": "FFT", "value": "MKL", "type": "STRING" - }, - { - "name": "PKG_PLUGIN", - "value": "True", - "type": "BOOL" } ] }, @@ -205,8 +182,15 @@ "buildRoot": "${workspaceRoot}\\build\\${name}", "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake", + "buildCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [], "variables": [ + { + "name": "PKG_ELECTRON", + "value": "True", + "type": "BOOL" + }, { "name": "BUILD_SHARED_LIBS", "value": "True", @@ -222,11 +206,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "True", @@ -236,11 +215,6 @@ "name": "FFT", "value": "MKL", "type": "STRING" - }, - { - "name": "PKG_PLUGIN", - "value": "True", - "type": "BOOL" } ] }, @@ -251,8 +225,15 @@ "buildRoot": "${workspaceRoot}\\build\\${name}", "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake", + "buildCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [], "variables": [ + { + "name": "PKG_ELECTRON", + "value": "True", + "type": "BOOL" + }, { "name": "BUILD_SHARED_LIBS", "value": "True", @@ -268,11 +249,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "False", @@ -282,11 +258,6 @@ "name": "FFT", "value": "MKL", "type": "STRING" - }, - { - "name": "PKG_PLUGIN", - "value": "True", - "type": "BOOL" } ] }, @@ -297,8 +268,15 @@ "buildRoot": "${workspaceRoot}\\build\\${name}", "installRoot": "${workspaceRoot}\\install\\${name}", "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-classic.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake", + "buildCommandArgs": "", + "ctestCommandArgs": "-V", "inheritEnvironments": [], "variables": [ + { + "name": "PKG_ELECTRON", + "value": "True", + "type": "BOOL" + }, { "name": "BUILD_SHARED_LIBS", "value": "True", @@ -314,11 +292,6 @@ "value": "True", "type": "BOOL" }, - { - "name": "PKG_PYTHON", - "value": "True", - "type": "BOOL" - }, { "name": "ENABLE_TESTING", "value": "False", @@ -328,11 +301,6 @@ "name": "FFT", "value": "MKL", "type": "STRING" - }, - { - "name": "PKG_PLUGIN", - "value": "True", - "type": "BOOL" } ] } diff --git a/cmake/presets/windows.cmake b/cmake/presets/windows.cmake index c83b16d855..5a3ac217f1 100644 --- a/cmake/presets/windows.cmake +++ b/cmake/presets/windows.cmake @@ -9,6 +9,7 @@ set(WIN_PACKAGES CLASS2 COLLOID COLVARS + COMPRESS CORESHELL DIELECTRIC DIFFRACTION @@ -43,6 +44,7 @@ set(WIN_PACKAGES PERI PHONON POEMS + PLUGIN PTM QEQ QTB From 46df8abe756d6f7ac5a3ef220eb0ddd5a23d98fa Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 17:49:54 -0400 Subject: [PATCH 22/46] rename jpeg cmake file for consistency --- cmake/{CMakeLists.libjpeg => CMakeLists.jpeg} | 0 cmake/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename cmake/{CMakeLists.libjpeg => CMakeLists.jpeg} (100%) diff --git a/cmake/CMakeLists.libjpeg b/cmake/CMakeLists.jpeg similarity index 100% rename from cmake/CMakeLists.libjpeg rename to cmake/CMakeLists.jpeg diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index ff187c6366..cffc854f0f 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -424,7 +424,7 @@ if((NOT JPEG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) mark_as_advanced(LIBJPEG_URL) mark_as_advanced(LIBJPEG_MD5) include(ExternalCMakeProject) - ExternalCmakeProject(libjpeg ${LIBJPEG_URL} ${LIBJPEG_MD5} libjpeg-turbo . CMakeLists.libjpeg) + ExternalCmakeProject(libjpeg ${LIBJPEG_URL} ${LIBJPEG_MD5} libjpeg-turbo . CMakeLists.jpeg) add_library(JPEG::JPEG ALIAS jpeg-static) target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-src") target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-build") From 0069c4b56277f6bbb26ea79ff83823c27d57acc3 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 18:10:26 -0400 Subject: [PATCH 23/46] update docs for automatic jpeg/png/zlib library download and build with CMake --- doc/src/Build_settings.rst | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 6053bdbf8a..76ef308d2c 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -287,8 +287,8 @@ Output of JPG, PNG, and movie files The :doc:`dump image ` command has options to output JPEG or PNG image files. Likewise the :doc:`dump movie ` command -outputs movie files in MPEG format. Using these options requires the -following settings: +outputs movie files in a variety of movie formats. Using these options +requires the following settings: .. tabs:: @@ -297,15 +297,15 @@ following settings: .. code-block:: bash -D WITH_JPEG=value # yes or no - # default = yes if CMake finds JPEG files, else no + # default = yes -D WITH_PNG=value # yes or no - # default = yes if CMake finds PNG and ZLIB files, else no + # default = yes -D WITH_FFMPEG=value # yes or no # default = yes if CMake can find ffmpeg, else no - Usually these settings are all that is needed. If CMake cannot - find the graphics header, library, executable files, you can set - these variables: + Usually these settings are all that is needed. If those libraries + or executables are installed but CMake cannot find the graphics header, + library, or executable files, you can set these variables accordingly: .. code-block:: bash @@ -317,6 +317,9 @@ following settings: -D ZLIB_LIBRARY=path # path to libz.a (.so) file -D FFMPEG_EXECUTABLE=path # path to ffmpeg executable + Otherwise, CMake will attempt to download, build, and link with + jpeg, png, and zlib libraries statically from source code. + .. tab:: Traditional make .. code-block:: make @@ -328,11 +331,12 @@ following settings: JPG_LIB = -ljpeg -lpng -lz # library names As with CMake, you do not need to set ``JPG_INC`` or ``JPG_PATH``, - if make can find the graphics header and library files. You must - specify ``JPG_LIB`` with a list of graphics libraries to include - in the link. You must insure ffmpeg is in a directory where - LAMMPS can find it at runtime, that is a directory in your PATH - environment variable. + if make can find the graphics header and library files in their + default system locations. You must specify ``JPG_LIB`` with a + list of graphics libraries to include in the link. You must make + certain that the ffmpeg executable (or ffmpeg.exe on Windows) is + in a directory where LAMMPS can find it at runtime; that is + usually a directory list in your ``PATH`` environment variable. Using ``ffmpeg`` to output movie files requires that your machine supports the "popen" function in the standard runtime library. From 9f7833668ac2f7075b6542b6b6fdafd31a24395f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 22 May 2022 18:15:10 -0400 Subject: [PATCH 24/46] whitespace --- cmake/Modules/Packages/COMPRESS.cmake | 2 +- doc/src/Build_settings.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index 599f1d0079..d9e2ccf7ad 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -10,4 +10,4 @@ if(PkgConfig_FOUND) target_compile_definitions(lammps PRIVATE -DLAMMPS_ZSTD) target_link_libraries(lammps PRIVATE PkgConfig::Zstd) endif() -endif() \ No newline at end of file +endif() diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index 76ef308d2c..bdae796bae 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -319,7 +319,7 @@ requires the following settings: Otherwise, CMake will attempt to download, build, and link with jpeg, png, and zlib libraries statically from source code. - + .. tab:: Traditional make .. code-block:: make From b461a49eee5caa45f6c6457d37ac82d8704652fb Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 23 May 2022 11:14:17 -0400 Subject: [PATCH 25/46] use _EXECUTABLE consistently instead of _BINARY --- unittest/formats/CMakeLists.txt | 32 +++++++++---------- .../formats/compressed_dump_test_main.cpp | 4 +-- unittest/formats/test_atom_styles.cpp | 5 ++- unittest/formats/test_dump_atom.cpp | 24 +++++++------- .../formats/test_dump_atom_compressed.cpp | 24 +++++++------- unittest/formats/test_dump_cfg_compressed.cpp | 14 ++++---- unittest/formats/test_dump_custom.cpp | 12 +++---- .../formats/test_dump_custom_compressed.cpp | 16 +++++----- unittest/formats/test_dump_local.cpp | 6 ++-- .../formats/test_dump_local_compressed.cpp | 18 +++++------ unittest/formats/test_dump_netcdf.cpp | 12 +++---- unittest/formats/test_dump_xyz_compressed.cpp | 12 +++---- 12 files changed, 89 insertions(+), 90 deletions(-) diff --git a/unittest/formats/CMakeLists.txt b/unittest/formats/CMakeLists.txt index f1408de4d7..5b5dd056c9 100644 --- a/unittest/formats/CMakeLists.txt +++ b/unittest/formats/CMakeLists.txt @@ -64,39 +64,39 @@ if(PKG_COMPRESS AND GZIP_FOUND) target_link_libraries(test_dump_xyz_compressed PRIVATE lammps GTest::GMock) add_test(NAME DumpAtomGZ COMMAND test_dump_atom_compressed gz) - set_tests_properties(DumpAtomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") + set_tests_properties(DumpAtomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${GZIP_EXECUTABLE}") add_test(NAME DumpCustomGZ COMMAND test_dump_custom_compressed gz) - set_tests_properties(DumpCustomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") + set_tests_properties(DumpCustomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${GZIP_EXECUTABLE}") add_test(NAME DumpCfgGZ COMMAND test_dump_cfg_compressed gz) - set_tests_properties(DumpCfgGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") + set_tests_properties(DumpCfgGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${GZIP_EXECUTABLE}") add_test(NAME DumpLocalGZ COMMAND test_dump_local_compressed gz) - set_tests_properties(DumpLocalGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") + set_tests_properties(DumpLocalGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${GZIP_EXECUTABLE}") add_test(NAME DumpXYZGZ COMMAND test_dump_xyz_compressed gz) - set_tests_properties(DumpXYZGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_EXECUTABLE}") + set_tests_properties(DumpXYZGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${GZIP_EXECUTABLE}") - find_package(PkgConfig REQUIRED) + find_package(PkgConfig) pkg_check_modules(Zstd IMPORTED_TARGET libzstd>=1.4) - find_program(ZSTD_BINARY NAMES zstd) + find_program(ZSTD_EXECUTABLE NAMES zstd) - if(Zstd_FOUND AND ZSTD_BINARY) + if(Zstd_FOUND AND ZSTD_EXECUTABLE) add_test(NAME DumpAtomZstd COMMAND test_dump_atom_compressed zstd) - set_tests_properties(DumpAtomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}") + set_tests_properties(DumpAtomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${ZSTD_EXECUTABLE}") add_test(NAME DumpCustomZstd COMMAND test_dump_custom_compressed zstd) - set_tests_properties(DumpCustomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}") + set_tests_properties(DumpCustomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${ZSTD_EXECUTABLE}") add_test(NAME DumpCfgZstd COMMAND test_dump_cfg_compressed zstd) - set_tests_properties(DumpCfgZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}") + set_tests_properties(DumpCfgZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${ZSTD_EXECUTABLE}") add_test(NAME DumpLocalZstd COMMAND test_dump_local_compressed zstd) - set_tests_properties(DumpLocalZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}") + set_tests_properties(DumpLocalZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${ZSTD_EXECUTABLE}") add_test(NAME DumpXYZZstd COMMAND test_dump_xyz_compressed zstd) - set_tests_properties(DumpXYZZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}") + set_tests_properties(DumpXYZZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_EXECUTABLE=${ZSTD_EXECUTABLE}") endif() endif() @@ -121,11 +121,11 @@ if(PKG_NETCDF) target_link_libraries(test_dump_netcdf PRIVATE lammps GTest::GMock) add_test(NAME DumpNetCDF COMMAND test_dump_netcdf) if(NOT (NCDUMP STREQUAL "NCDUMP-NOTFOUND")) - set_tests_properties(DumpNetCDF PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};NCDUMP_BINARY=${NCDUMP}") + set_tests_properties(DumpNetCDF PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};NCDUMP_EXECUTABLE=${NCDUMP}") endif() endif() if(BUILD_TOOLS) - set_tests_properties(DumpAtom PROPERTIES ENVIRONMENT "BINARY2TXT_BINARY=$") - set_tests_properties(DumpCustom PROPERTIES ENVIRONMENT "BINARY2TXT_BINARY=$") + set_tests_properties(DumpAtom PROPERTIES ENVIRONMENT "BINARY2TXT_EXECUTABLE=$") + set_tests_properties(DumpCustom PROPERTIES ENVIRONMENT "BINARY2TXT_EXECUTABLE=$") endif() diff --git a/unittest/formats/compressed_dump_test_main.cpp b/unittest/formats/compressed_dump_test_main.cpp index e85f616776..c96682d8b7 100644 --- a/unittest/formats/compressed_dump_test_main.cpp +++ b/unittest/formats/compressed_dump_test_main.cpp @@ -22,7 +22,7 @@ const char *COMPRESS_SUFFIX = nullptr; const char *COMPRESS_EXTENSION = nullptr; -char *COMPRESS_BINARY = nullptr; +char *COMPRESS_EXECUTABLE = nullptr; bool verbose = false; int main(int argc, char **argv) @@ -46,7 +46,7 @@ int main(int argc, char **argv) return 1; } - COMPRESS_BINARY = getenv("COMPRESS_BINARY"); + COMPRESS_EXECUTABLE = getenv("COMPRESS_EXECUTABLE"); // handle arguments passed via environment variable if (const char *var = getenv("TEST_ARGS")) { diff --git a/unittest/formats/test_atom_styles.cpp b/unittest/formats/test_atom_styles.cpp index c4c79238aa..c712ffd763 100644 --- a/unittest/formats/test_atom_styles.cpp +++ b/unittest/formats/test_atom_styles.cpp @@ -2123,7 +2123,7 @@ TEST_F(AtomStyleTest, body_nparticle) "12.0 0.0 12.0 0.0 0.0 0.0\n" "0.0 1.0 0.0\n" "0.0 -3.0 0.0\n"; - FILE *fp = fopen("input_atom_styles.data", "w"); + FILE *fp = fopen("input_atom_styles.data", "w"); fputs(data_file, fp); fclose(fp); BEGIN_HIDE_OUTPUT(); @@ -5159,7 +5159,7 @@ TEST_F(AtomStyleTest, oxdna) EXPECT_NEAR(bonus[9].shape[1], 0.5869922515711705, EPSILON); EXPECT_NEAR(bonus[9].shape[2], 0.5869922515711705, EPSILON); - EXPECT_NEAR(bonus[0].quat[0], 0.9890278201757743, EPSILON); + EXPECT_NEAR(bonus[0].quat[0], 0.9890278201757743, EPSILON); EXPECT_NEAR(bonus[0].quat[1], 0.01779228232037064, EPSILON); EXPECT_NEAR(bonus[0].quat[2], -0.14337734159225404, EPSILON); EXPECT_NEAR(bonus[0].quat[3], 0.030827642240801516, EPSILON); @@ -5246,7 +5246,6 @@ TEST_F(AtomStyleTest, oxdna) ASSERT_EQ(id5p[GETIDX(10)], -1); END_HIDE_OUTPUT(); - } } // namespace LAMMPS_NS diff --git a/unittest/formats/test_dump_atom.cpp b/unittest/formats/test_dump_atom.cpp index 6303d2c019..c9e5223f19 100644 --- a/unittest/formats/test_dump_atom.cpp +++ b/unittest/formats/test_dump_atom.cpp @@ -25,8 +25,8 @@ using ::testing::Eq; -char *BINARY2TXT_BINARY = nullptr; -bool verbose = false; +char *BINARY2TXT_EXECUTABLE = nullptr; +bool verbose = false; class DumpAtomTest : public MeltTest { std::string dump_style = "atom"; @@ -100,7 +100,7 @@ public: std::string convert_binary_to_text(std::string binary_file) { BEGIN_HIDE_OUTPUT(); - std::string cmdline = fmt::format("{} {}", BINARY2TXT_BINARY, binary_file); + std::string cmdline = fmt::format("{} {}", BINARY2TXT_EXECUTABLE, binary_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return fmt::format("{}.txt", binary_file); @@ -328,7 +328,7 @@ TEST_F(DumpAtomTest, triclinic_with_image_run0) TEST_F(DumpAtomTest, binary_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("run0"); auto binary_file = binary_dump_filename("run0"); @@ -349,7 +349,7 @@ TEST_F(DumpAtomTest, binary_run0) TEST_F(DumpAtomTest, binary_with_units_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("with_units_run0"); auto binary_file = binary_dump_filename("with_units_run0"); @@ -370,7 +370,7 @@ TEST_F(DumpAtomTest, binary_with_units_run0) TEST_F(DumpAtomTest, binary_with_time_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("with_time_run0"); auto binary_file = binary_dump_filename("with_time_run0"); @@ -391,7 +391,7 @@ TEST_F(DumpAtomTest, binary_with_time_run0) TEST_F(DumpAtomTest, binary_triclinic_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("tri_run0"); auto binary_file = binary_dump_filename("tri_run0"); @@ -413,7 +413,7 @@ TEST_F(DumpAtomTest, binary_triclinic_run0) TEST_F(DumpAtomTest, binary_triclinic_with_units_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("tri_with_units_run0"); auto binary_file = binary_dump_filename("tri_with_units_run0"); @@ -435,7 +435,7 @@ TEST_F(DumpAtomTest, binary_triclinic_with_units_run0) TEST_F(DumpAtomTest, binary_triclinic_with_time_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("tri_with_time_run0"); auto binary_file = binary_dump_filename("tri_with_time_run0"); @@ -457,7 +457,7 @@ TEST_F(DumpAtomTest, binary_triclinic_with_time_run0) TEST_F(DumpAtomTest, binary_triclinic_with_image_run0) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("tri_with_image_run0"); auto binary_file = binary_dump_filename("tri_with_image_run0"); @@ -649,7 +649,7 @@ TEST_F(DumpAtomTest, write_dump) TEST_F(DumpAtomTest, binary_write_dump) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto reference = binary_dump_filename("write_run0_ref"); auto dump_file = fmt::format("write_{}", binary_dump_filename("write_dump_atom_run*_p%")); @@ -693,7 +693,7 @@ int main(int argc, char **argv) } } - BINARY2TXT_BINARY = getenv("BINARY2TXT_BINARY"); + BINARY2TXT_EXECUTABLE = getenv("BINARY2TXT_EXECUTABLE"); if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; diff --git a/unittest/formats/test_dump_atom_compressed.cpp b/unittest/formats/test_dump_atom_compressed.cpp index dcc3d49d6e..419ad0eb81 100644 --- a/unittest/formats/test_dump_atom_compressed.cpp +++ b/unittest/formats/test_dump_atom_compressed.cpp @@ -33,7 +33,7 @@ public: TEST_F(DumpAtomCompressTest, compressed_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("run0.melt"); auto compressed_file = compressed_dump_filename("run0.melt"); @@ -62,7 +62,7 @@ TEST_F(DumpAtomCompressTest, compressed_run0) TEST_F(DumpAtomCompressTest, compressed_no_buffer_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("no_buffer_run0.melt"); auto compressed_file = compressed_dump_filename("no_buffer_run0.melt"); @@ -91,7 +91,7 @@ TEST_F(DumpAtomCompressTest, compressed_no_buffer_run0) TEST_F(DumpAtomCompressTest, compressed_multi_file_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_run1_*.melt"; auto base_name_0 = "multi_file_run1_0.melt"; @@ -131,7 +131,7 @@ TEST_F(DumpAtomCompressTest, compressed_multi_file_run1) TEST_F(DumpAtomCompressTest, compressed_multi_file_with_pad_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_pad_run1_*.melt"; auto base_name_0 = "multi_file_pad_run1_000.melt"; @@ -172,7 +172,7 @@ TEST_F(DumpAtomCompressTest, compressed_multi_file_with_pad_run1) TEST_F(DumpAtomCompressTest, compressed_multi_file_with_maxfiles_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_maxfiles_run1_*.melt"; auto base_name_0 = "multi_file_maxfiles_run1_0.melt"; @@ -218,7 +218,7 @@ TEST_F(DumpAtomCompressTest, compressed_multi_file_with_maxfiles_run1) TEST_F(DumpAtomCompressTest, compressed_with_units_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "with_units_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -242,7 +242,7 @@ TEST_F(DumpAtomCompressTest, compressed_with_units_run0) TEST_F(DumpAtomCompressTest, compressed_with_time_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "with_time_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -266,7 +266,7 @@ TEST_F(DumpAtomCompressTest, compressed_with_time_run0) TEST_F(DumpAtomCompressTest, compressed_triclinic_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "tri_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -291,7 +291,7 @@ TEST_F(DumpAtomCompressTest, compressed_triclinic_run0) TEST_F(DumpAtomCompressTest, compressed_triclinic_with_units_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "tri_with_units_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -316,7 +316,7 @@ TEST_F(DumpAtomCompressTest, compressed_triclinic_with_units_run0) TEST_F(DumpAtomCompressTest, compressed_triclinic_with_time_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "tri_with_time_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -341,7 +341,7 @@ TEST_F(DumpAtomCompressTest, compressed_triclinic_with_time_run0) TEST_F(DumpAtomCompressTest, compressed_triclinic_with_image_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "tri_with_image_run0.melt"; auto text_file = text_dump_filename(base_name); @@ -394,7 +394,7 @@ TEST_F(DumpAtomCompressTest, compressed_modify_multi_bad_param) TEST_F(DumpAtomCompressTest, compressed_modify_clevel_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "modify_clevel_run0.melt"; auto text_file = text_dump_filename(base_name); diff --git a/unittest/formats/test_dump_cfg_compressed.cpp b/unittest/formats/test_dump_cfg_compressed.cpp index 67d7084ab9..29afec06ce 100644 --- a/unittest/formats/test_dump_cfg_compressed.cpp +++ b/unittest/formats/test_dump_cfg_compressed.cpp @@ -33,7 +33,7 @@ public: TEST_F(DumpCfgCompressTest, compressed_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "run*.melt.cfg"; auto text_files = text_dump_filename(base_name); @@ -67,7 +67,7 @@ TEST_F(DumpCfgCompressTest, compressed_run0) TEST_F(DumpCfgCompressTest, compressed_no_buffer_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "no_buffer_run*.melt.cfg"; auto text_files = text_dump_filename(base_name); @@ -101,7 +101,7 @@ TEST_F(DumpCfgCompressTest, compressed_no_buffer_run0) TEST_F(DumpCfgCompressTest, compressed_unwrap_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "unwrap_run*.melt.cfg"; auto text_files = text_dump_filename(base_name); @@ -130,7 +130,7 @@ TEST_F(DumpCfgCompressTest, compressed_unwrap_run0) TEST_F(DumpCfgCompressTest, compressed_multi_file_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_run1_*.melt.cfg"; auto base_name_0 = "multi_file_run1_0.melt.cfg"; @@ -172,7 +172,7 @@ TEST_F(DumpCfgCompressTest, compressed_multi_file_run1) TEST_F(DumpCfgCompressTest, compressed_multi_file_with_pad_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_pad_run1_*.melt.cfg"; auto base_name_0 = "multi_file_pad_run1_000.melt.cfg"; @@ -214,7 +214,7 @@ TEST_F(DumpCfgCompressTest, compressed_multi_file_with_pad_run1) TEST_F(DumpCfgCompressTest, compressed_multi_file_with_maxfiles_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_maxfiles_run1_*.melt.cfg"; auto base_name_0 = "multi_file_maxfiles_run1_0.melt.cfg"; @@ -292,7 +292,7 @@ TEST_F(DumpCfgCompressTest, compressed_modify_multi_bad_param) TEST_F(DumpCfgCompressTest, compressed_modify_clevel_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "modify_clevel_run*.melt.cfg"; auto base_name_0 = "modify_clevel_run0.melt.cfg"; diff --git a/unittest/formats/test_dump_custom.cpp b/unittest/formats/test_dump_custom.cpp index 40e22f5a11..ee297b194e 100644 --- a/unittest/formats/test_dump_custom.cpp +++ b/unittest/formats/test_dump_custom.cpp @@ -23,8 +23,8 @@ using ::testing::Eq; -char *BINARY2TXT_BINARY = nullptr; -bool verbose = false; +char *BINARY2TXT_EXECUTABLE = nullptr; +bool verbose = false; class DumpCustomTest : public MeltTest { std::string dump_style = "custom"; @@ -100,7 +100,7 @@ public: std::string convert_binary_to_text(std::string binary_file) { BEGIN_HIDE_OUTPUT(); - std::string cmdline = fmt::format("{} {}", BINARY2TXT_BINARY, binary_file); + std::string cmdline = fmt::format("{} {}", BINARY2TXT_EXECUTABLE, binary_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return fmt::format("{}.txt", binary_file); @@ -210,7 +210,7 @@ TEST_F(DumpCustomTest, custom_run0) TEST_F(DumpCustomTest, binary_run1) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("run1"); auto binary_file = binary_dump_filename("run1"); @@ -251,7 +251,7 @@ TEST_F(DumpCustomTest, triclinic_run1) TEST_F(DumpCustomTest, binary_triclinic_run1) { - if (!BINARY2TXT_BINARY) GTEST_SKIP(); + if (!BINARY2TXT_EXECUTABLE) GTEST_SKIP(); auto text_file = text_dump_filename("tri_run1"); auto binary_file = binary_dump_filename("tri_run1"); @@ -399,7 +399,7 @@ int main(int argc, char **argv) } } - BINARY2TXT_BINARY = getenv("BINARY2TXT_BINARY"); + BINARY2TXT_EXECUTABLE = getenv("BINARY2TXT_EXECUTABLE"); if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; diff --git a/unittest/formats/test_dump_custom_compressed.cpp b/unittest/formats/test_dump_custom_compressed.cpp index a69fd98c41..fec751b358 100644 --- a/unittest/formats/test_dump_custom_compressed.cpp +++ b/unittest/formats/test_dump_custom_compressed.cpp @@ -29,7 +29,7 @@ public: TEST_F(DumpCustomCompressTest, compressed_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "custom_run1.melt"; auto text_file = text_dump_filename(base_name); @@ -59,7 +59,7 @@ TEST_F(DumpCustomCompressTest, compressed_run1) TEST_F(DumpCustomCompressTest, compressed_with_time_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "with_time_custom_run1.melt"; auto text_file = text_dump_filename(base_name); @@ -89,7 +89,7 @@ TEST_F(DumpCustomCompressTest, compressed_with_time_run1) TEST_F(DumpCustomCompressTest, compressed_no_buffer_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "no_buffer_custom_run1.melt"; auto text_file = text_dump_filename(base_name); @@ -119,7 +119,7 @@ TEST_F(DumpCustomCompressTest, compressed_no_buffer_run1) TEST_F(DumpCustomCompressTest, compressed_triclinic_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "custom_tri_run1.melt"; auto text_file = text_dump_filename(base_name); @@ -146,7 +146,7 @@ TEST_F(DumpCustomCompressTest, compressed_triclinic_run1) TEST_F(DumpCustomCompressTest, compressed_multi_file_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_run1_*.melt.custom"; auto base_name_0 = "multi_file_run1_0.melt.custom"; @@ -188,7 +188,7 @@ TEST_F(DumpCustomCompressTest, compressed_multi_file_run1) TEST_F(DumpCustomCompressTest, compressed_multi_file_with_pad_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_pad_run1_*.melt.custom"; auto base_name_0 = "multi_file_pad_run1_000.melt.custom"; @@ -230,7 +230,7 @@ TEST_F(DumpCustomCompressTest, compressed_multi_file_with_pad_run1) TEST_F(DumpCustomCompressTest, compressed_multi_file_with_maxfiles_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_maxfiles_run1_*.melt.custom"; auto base_name_0 = "multi_file_maxfiles_run1_0.melt.custom"; @@ -304,7 +304,7 @@ TEST_F(DumpCustomCompressTest, compressed_modify_multi_bad_param) TEST_F(DumpCustomCompressTest, compressed_modify_clevel_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "modify_clevel_run0.melt.custom"; auto text_file = text_dump_filename(base_name); diff --git a/unittest/formats/test_dump_local.cpp b/unittest/formats/test_dump_local.cpp index 3b8b36f06f..5471145309 100644 --- a/unittest/formats/test_dump_local.cpp +++ b/unittest/formats/test_dump_local.cpp @@ -25,8 +25,8 @@ using ::testing::Eq; -char *BINARY2TXT_BINARY = nullptr; -bool verbose = false; +char *BINARY2TXT_EXECUTABLE = nullptr; +bool verbose = false; class DumpLocalTest : public MeltTest { std::string dump_style = "local"; @@ -253,7 +253,7 @@ int main(int argc, char **argv) } } - BINARY2TXT_BINARY = getenv("BINARY2TXT_BINARY"); + BINARY2TXT_EXECUTABLE = getenv("BINARY2TXT_EXECUTABLE"); if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; diff --git a/unittest/formats/test_dump_local_compressed.cpp b/unittest/formats/test_dump_local_compressed.cpp index 2f4c6086c2..b1161927c6 100644 --- a/unittest/formats/test_dump_local_compressed.cpp +++ b/unittest/formats/test_dump_local_compressed.cpp @@ -38,7 +38,7 @@ public: TEST_F(DumpLocalCompressTest, compressed_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "run*.melt.local"; auto base_name_0 = "run0.melt.local"; @@ -71,7 +71,7 @@ TEST_F(DumpLocalCompressTest, compressed_run0) TEST_F(DumpLocalCompressTest, compressed_no_buffer_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "no_buffer_run*.melt.local"; auto base_name_0 = "no_buffer_run0.melt.local"; @@ -104,7 +104,7 @@ TEST_F(DumpLocalCompressTest, compressed_no_buffer_run0) TEST_F(DumpLocalCompressTest, compressed_with_time_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "with_time_run*.melt.local"; auto base_name_0 = "with_time_run0.melt.local"; @@ -137,7 +137,7 @@ TEST_F(DumpLocalCompressTest, compressed_with_time_run0) TEST_F(DumpLocalCompressTest, compressed_with_units_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "with_units_run*.melt.local"; auto base_name_0 = "with_units_run0.melt.local"; @@ -170,7 +170,7 @@ TEST_F(DumpLocalCompressTest, compressed_with_units_run0) TEST_F(DumpLocalCompressTest, compressed_triclinic_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); enable_triclinic(); auto base_name = "triclinic_run*.melt.local"; @@ -204,7 +204,7 @@ TEST_F(DumpLocalCompressTest, compressed_triclinic_run0) TEST_F(DumpLocalCompressTest, compressed_multi_file_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_run1_*.melt.local"; auto base_name_0 = "multi_file_run1_0.melt.local"; @@ -246,7 +246,7 @@ TEST_F(DumpLocalCompressTest, compressed_multi_file_run1) TEST_F(DumpLocalCompressTest, compressed_multi_file_with_pad_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_pad_run1_*.melt.local"; auto base_name_0 = "multi_file_pad_run1_000.melt.local"; @@ -288,7 +288,7 @@ TEST_F(DumpLocalCompressTest, compressed_multi_file_with_pad_run1) TEST_F(DumpLocalCompressTest, compressed_multi_file_with_maxfiles_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_maxfiles_run1_*.melt.local"; auto base_name_0 = "multi_file_maxfiles_run1_0.melt.local"; @@ -368,7 +368,7 @@ TEST_F(DumpLocalCompressTest, compressed_modify_multi_bad_param) TEST_F(DumpLocalCompressTest, compressed_modify_clevel_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "modify_clevel_run0.melt.local"; auto text_file = text_dump_filename(base_name); diff --git a/unittest/formats/test_dump_netcdf.cpp b/unittest/formats/test_dump_netcdf.cpp index 8b4110b352..6d377369ee 100644 --- a/unittest/formats/test_dump_netcdf.cpp +++ b/unittest/formats/test_dump_netcdf.cpp @@ -28,8 +28,8 @@ using ::testing::Eq; -char *NCDUMP_BINARY = nullptr; -bool verbose = false; +char *NCDUMP_EXECUTABLE = nullptr; +bool verbose = false; class DumpNetCDFTest : public MeltTest { std::string dump_style = "netcdf"; @@ -80,7 +80,7 @@ public: std::string convert_binary_to_text(std::string binary_file) { BEGIN_HIDE_OUTPUT(); - std::string cmdline = fmt::format("{0} {1} > {1}.txt", NCDUMP_BINARY, binary_file); + std::string cmdline = fmt::format("{0} {1} > {1}.txt", NCDUMP_EXECUTABLE, binary_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return fmt::format("{}.txt", binary_file); @@ -96,7 +96,7 @@ TEST_F(DumpNetCDFTest, run0_plain) generate_dump(dump_file, fields, "", 0); ASSERT_FILE_EXISTS(dump_file); - if (NCDUMP_BINARY) { + if (NCDUMP_EXECUTABLE) { auto converted_file = convert_binary_to_text(dump_file); auto lines = read_lines(converted_file); auto header = utils::split_words(lines[0]); @@ -246,7 +246,7 @@ TEST_F(DumpNetCDFTest, run0_mpi) generate_dump(dump_file, fields, "", 0); ASSERT_FILE_EXISTS(dump_file); - if (NCDUMP_BINARY) { + if (NCDUMP_EXECUTABLE) { auto converted_file = convert_binary_to_text(dump_file); auto lines = read_lines(converted_file); auto header = utils::split_words(lines[0]); @@ -402,7 +402,7 @@ int main(int argc, char **argv) } } - NCDUMP_BINARY = getenv("NCDUMP_BINARY"); + NCDUMP_EXECUTABLE = getenv("NCDUMP_EXECUTABLE"); if ((argc > 1) && (strcmp(argv[1], "-v") == 0)) verbose = true; diff --git a/unittest/formats/test_dump_xyz_compressed.cpp b/unittest/formats/test_dump_xyz_compressed.cpp index a851129c6c..7c5b816639 100644 --- a/unittest/formats/test_dump_xyz_compressed.cpp +++ b/unittest/formats/test_dump_xyz_compressed.cpp @@ -29,7 +29,7 @@ public: TEST_F(DumpXYZCompressTest, compressed_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "run*.melt.xyz"; auto base_name_0 = "run0.melt.xyz"; @@ -61,7 +61,7 @@ TEST_F(DumpXYZCompressTest, compressed_run0) TEST_F(DumpXYZCompressTest, compressed_no_buffer_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "no_buffer_run*.melt.xyz"; auto base_name_0 = "no_buffer_run0.melt.xyz"; @@ -93,7 +93,7 @@ TEST_F(DumpXYZCompressTest, compressed_no_buffer_run0) TEST_F(DumpXYZCompressTest, compressed_multi_file_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_run1_*.melt.xyz"; auto base_name_0 = "multi_file_run1_0.melt.xyz"; @@ -133,7 +133,7 @@ TEST_F(DumpXYZCompressTest, compressed_multi_file_run1) TEST_F(DumpXYZCompressTest, compressed_multi_file_with_pad_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_pad_run1_*.melt.xyz"; auto base_name_0 = "multi_file_pad_run1_000.melt.xyz"; @@ -174,7 +174,7 @@ TEST_F(DumpXYZCompressTest, compressed_multi_file_with_pad_run1) TEST_F(DumpXYZCompressTest, compressed_multi_file_with_maxfiles_run1) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "multi_file_maxfiles_run1_*.melt.xyz"; auto base_name_0 = "multi_file_maxfiles_run1_0.melt.xyz"; @@ -248,7 +248,7 @@ TEST_F(DumpXYZCompressTest, compressed_modify_multi_bad_param) TEST_F(DumpXYZCompressTest, compressed_modify_clevel_run0) { - if (!COMPRESS_BINARY) GTEST_SKIP(); + if (!COMPRESS_EXECUTABLE) GTEST_SKIP(); auto base_name = "modify_clevel_run0.melt.xyz"; auto text_file = text_dump_filename(base_name); From bead8190705df3993d331b8310ca9cfffd2552ab Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 23 May 2022 11:37:00 -0400 Subject: [PATCH 26/46] changes missing from the previous commit --- unittest/formats/compressed_dump_test.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/unittest/formats/compressed_dump_test.h b/unittest/formats/compressed_dump_test.h index 9b2dbc905b..d9803005e5 100644 --- a/unittest/formats/compressed_dump_test.h +++ b/unittest/formats/compressed_dump_test.h @@ -19,7 +19,7 @@ extern const char *COMPRESS_SUFFIX; extern const char *COMPRESS_EXTENSION; -extern char *COMPRESS_BINARY; +extern char *COMPRESS_EXECUTABLE; class CompressedDumpTest : public MeltTest { protected: @@ -102,7 +102,7 @@ public: BEGIN_HIDE_OUTPUT(); std::string converted_file = compressed_file.substr(0, compressed_file.find_last_of('.')); std::string cmdline = - fmt::format("{} -d -c {} > {}", COMPRESS_BINARY, compressed_file, converted_file); + fmt::format("{} -d -c {} > {}", COMPRESS_EXECUTABLE, compressed_file, converted_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return converted_file; From 3662d998ee19ba7fa133cc99ed6084ef67ada651 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Mon, 23 May 2022 11:53:58 -0400 Subject: [PATCH 27/46] fix typo + cut-n-paste error --- cmake/CMakeSettings.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/CMakeSettings.json b/cmake/CMakeSettings.json index 6d4894f5c2..c139114c0b 100644 --- a/cmake/CMakeSettings.json +++ b/cmake/CMakeSettings.json @@ -144,7 +144,7 @@ "cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows-intel-llvm.cmake -C ${workspaceRoot}\\cmake\\presets\\windows.cmake", "variables": [ { - "name": "PKG_ELECTRON", + "name": "PKG_ELECTRODE", "value": "True", "type": "BOOL" }, @@ -187,7 +187,7 @@ "inheritEnvironments": [], "variables": [ { - "name": "PKG_ELECTRON", + "name": "PKG_ELECTRODE", "value": "True", "type": "BOOL" }, @@ -230,7 +230,7 @@ "inheritEnvironments": [], "variables": [ { - "name": "PKG_ELECTRON", + "name": "PKG_ELECTRODE", "value": "True", "type": "BOOL" }, @@ -273,7 +273,7 @@ "inheritEnvironments": [], "variables": [ { - "name": "PKG_ELECTRON", + "name": "PKG_ELECTRODE", "value": "True", "type": "BOOL" }, @@ -305,4 +305,4 @@ ] } ] -} \ No newline at end of file +} From 3ee209d0314c989203c8f954d90b3c69cdd9c77a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Wed, 25 May 2022 06:35:08 -0400 Subject: [PATCH 28/46] update singularity definition for ubuntu22.04LTS This now has the changes required to include the openkim-api package --- tools/singularity/ubuntu22.04.def | 43 +++++++++++++++---------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/tools/singularity/ubuntu22.04.def b/tools/singularity/ubuntu22.04.def index cf4aa7e175..62a24e81f3 100644 --- a/tools/singularity/ubuntu22.04.def +++ b/tools/singularity/ubuntu22.04.def @@ -4,8 +4,8 @@ From: ubuntu:22.04 %post export DEBIAN_FRONTEND=noninteractive apt-get update - apt-get install --no-install-recommends -y software-properties-common -# add-apt-repository ppa:openkim/latest + apt-get install --no-install-recommends -y software-properties-common gpg gpg-agent + add-apt-repository ppa:openkim/latest apt-get update apt-get upgrade --no-install-recommends -y apt-get install --no-install-recommends -y \ @@ -74,29 +74,28 @@ From: ubuntu:22.04 zstd \ libyaml-cpp-dev \ libkim-api-dev \ - gpg-agent \ -# openkim-models + openkim-models -# ########################################################################### -# # KIM-API -# ########################################################################### -# -# # workaround for installing files in /usr/share/doc inside of a container -# sed -i 's/path-exclude=\/usr\/share\/doc/#path-exclude=\/usr\/share\/doc/g' /etc/dpkg/dpkg.cfg.d/excludes -# apt-get install -y libkim-api-doc -# sed -i 's/#path-exclude=\/usr\/share\/doc/path-exclude=\/usr\/share\/doc/g' /etc/dpkg/dpkg.cfg.d/excludes -# -# # install KIM models -# KIM_API_EXAMPLES=/usr/share/doc/libkim-api-dev/examples + ########################################################################### + # KIM-API + ########################################################################### + + # workaround for installing files in /usr/share/doc inside of a container + sed -i 's/path-exclude=\/usr\/share\/doc/#path-exclude=\/usr\/share\/doc/g' /etc/dpkg/dpkg.cfg.d/excludes + apt-get install -y libkim-api-doc + sed -i 's/#path-exclude=\/usr\/share\/doc/path-exclude=\/usr\/share\/doc/g' /etc/dpkg/dpkg.cfg.d/excludes + + # install KIM models + KIM_API_EXAMPLES=/usr/share/doc/libkim-api-dev/examples # gunzip $KIM_API_EXAMPLES/portable-models/LennardJones612_UniversalShifted__MO_959249795837_003/LennardJones612_UniversalShifted.params.gz # gunzip $KIM_API_EXAMPLES/model-drivers/ex_model_driver_P_LJ/ex_model_driver_P_LJ.f90.gz -# -# kim-api-collections-management install system $KIM_API_EXAMPLES/model-drivers/LennardJones612__MD_414112407348_003 -# kim-api-collections-management install system $KIM_API_EXAMPLES/model-drivers/ex_model_driver_P_LJ -# kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/LennardJones_Ar -# kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/ex_model_Ar_P_LJ -# kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/LennardJones612_UniversalShifted__MO_959249795837_003 -# kim-api-collections-management install system $KIM_API_EXAMPLES/simulator-models/Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu + + kim-api-collections-management install system $KIM_API_EXAMPLES/model-drivers/LennardJones612__MD_414112407348_003 + kim-api-collections-management install system $KIM_API_EXAMPLES/model-drivers/ex_model_driver_P_LJ + kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/LennardJones_Ar + kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/ex_model_Ar_P_LJ + kim-api-collections-management install system $KIM_API_EXAMPLES/portable-models/LennardJones612_UniversalShifted__MO_959249795837_003 + kim-api-collections-management install system $KIM_API_EXAMPLES/simulator-models/Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu ########################################################################### From f0f6660050cd6929374272d427af052c7503a16c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 26 May 2022 12:15:27 -0400 Subject: [PATCH 29/46] join lines --- src/read_data.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/read_data.cpp b/src/read_data.cpp index b77394bcb3..bc19a7f2ad 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -313,11 +313,9 @@ void ReadData::command(int narg, char **arg) error->all(FLERR,"Reading a data file with shrinkwrap boundaries is " "not compatible with a MSM KSpace style"); if (domain->box_exist && !addflag) - error->all(FLERR,"Cannot read_data without add keyword " - "after simulation box is defined"); + error->all(FLERR,"Cannot read_data without add keyword after simulation box is defined"); if (!domain->box_exist && addflag) - error->all(FLERR,"Cannot use read_data add before " - "simulation box is defined"); + error->all(FLERR,"Cannot use read_data add before simulation box is defined"); if (offsetflag && addflag == NONE) error->all(FLERR,"Cannot use read_data offset without add flag"); if (shiftflag && addflag == NONE) @@ -330,8 +328,7 @@ void ReadData::command(int narg, char **arg) // check if data file is available and readable if (!platform::file_is_readable(arg[0])) - error->all(FLERR,fmt::format("Cannot open file {}: {}", - arg[0], utils::getsyserror())); + error->all(FLERR,fmt::format("Cannot open file {}: {}", arg[0], utils::getsyserror())); // reset so we can warn about reset image flags exactly once per data file From 587999fabb6286142c6d8a90d060a2bd1a1f770c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 26 May 2022 15:33:23 -0400 Subject: [PATCH 30/46] mention that MSM does not support shrink-wrap --- doc/src/kspace_style.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/kspace_style.rst b/doc/src/kspace_style.rst index b2b4157247..59efbdc5bd 100644 --- a/doc/src/kspace_style.rst +++ b/doc/src/kspace_style.rst @@ -475,8 +475,8 @@ that package **and** the KSPACE package. See the :doc:`Build package ` page for more info. For MSM, a simulation must be 3d and one can use any combination of -periodic, non-periodic, or shrink-wrapped boundaries (specified using -the :doc:`boundary ` command). +periodic, non-periodic, but not shrink-wrapped boundaries (specified +using the :doc:`boundary ` command). For Ewald and PPPM, a simulation must be 3d and periodic in all dimensions. The only exception is if the slab option is set with From f09e4c7583dca6dc3905dd57e103e6efed3b7dd6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 26 May 2022 16:56:43 -0400 Subject: [PATCH 31/46] remove check on box size from pair style bop --- src/MANYBODY/pair_bop.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index b3aa470592..10e423f2d2 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -189,11 +189,6 @@ PairBOP::~PairBOP() void PairBOP::compute(int eflag, int vflag) { - double minbox = MIN(MIN(domain->xprd, domain->yprd), domain->zprd); - if (minbox-0.001 < 6.0*cutmax) - error->all(FLERR,"Pair style bop requires system dimension " - "of at least {:.4}",6.0*cutmax); - int i, ii, j, jj; int nlisti, *ilist; tagint i_tag,j_tag, itype, jtype; From 49a75d576ebdaafa1c34d3c2a56549dc5f78b513 Mon Sep 17 00:00:00 2001 From: Aidan Thompson Date: Thu, 26 May 2022 17:28:05 -0600 Subject: [PATCH 32/46] Eliminated bad torsion forces when when sin(theta) is zero --- src/REAXFF/reaxff_torsion_angles.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/REAXFF/reaxff_torsion_angles.cpp b/src/REAXFF/reaxff_torsion_angles.cpp index 329f7b8a7a..4bf810b431 100644 --- a/src/REAXFF/reaxff_torsion_angles.cpp +++ b/src/REAXFF/reaxff_torsion_angles.cpp @@ -52,6 +52,11 @@ namespace ReaxFF { sin_jkl = sin(p_jkl->theta); cos_jkl = cos(p_jkl->theta); + if (sin_ijk >= 0 && sin_ijk <= MIN_SINE) sin_ijk = MIN_SINE; + else if (sin_ijk <= 0 && sin_ijk >= -MIN_SINE) sin_ijk = -MIN_SINE; + if (sin_jkl >= 0 && sin_jkl <= MIN_SINE) sin_jkl = MIN_SINE; + else if (sin_jkl <= 0 && sin_jkl >= -MIN_SINE) sin_jkl = -MIN_SINE; + /* omega */ unnorm_cos_omega = -rvec_Dot(dvec_ij, dvec_jk) * rvec_Dot(dvec_jk, dvec_kl) + SQR(r_jk) * rvec_Dot(dvec_ij, dvec_kl); @@ -71,22 +76,16 @@ namespace ReaxFF { hnhd = r_ij * r_kl * cos_ijk * sin_jkl; hnhe = r_ij * r_kl * sin_ijk * cos_jkl; - poem = 2.0 * r_ij * r_kl * sin_ijk * sin_jkl; - if (poem < 1e-20) poem = 1e-20; - tel = SQR(r_ij) + SQR(r_jk) + SQR(r_kl) - SQR(r_li) - 2.0 * (r_ij * r_jk * cos_ijk - r_ij * r_kl * cos_ijk * cos_jkl + r_jk * r_kl * cos_jkl); + poem = 2.0 * r_ij * r_kl * sin_ijk * sin_jkl; + arg = tel / poem; if (arg > 1.0) arg = 1.0; if (arg < -1.0) arg = -1.0; - if (sin_ijk >= 0 && sin_ijk <= MIN_SINE) sin_ijk = MIN_SINE; - else if (sin_ijk <= 0 && sin_ijk >= -MIN_SINE) sin_ijk = -MIN_SINE; - if (sin_jkl >= 0 && sin_jkl <= MIN_SINE) sin_jkl = MIN_SINE; - else if (sin_jkl <= 0 && sin_jkl >= -MIN_SINE) sin_jkl = -MIN_SINE; - // dcos_omega_di rvec_ScaledSum(dcos_omega_di, (htra-arg*hnra)/r_ij, dvec_ij, -1., dvec_li); rvec_ScaledAdd(dcos_omega_di,-(hthd-arg*hnhd)/sin_ijk, p_ijk->dcos_dk); From 0b3efa4dd63e7e7c3cb2404d2b56f535b508e3c4 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 May 2022 17:38:53 -0400 Subject: [PATCH 33/46] set masses from BOP potential files, update unit tests accordingly --- src/MANYBODY/pair_bop.cpp | 52 +- src/MANYBODY/pair_bop.h | 1 + .../force-styles/tests/manybody-pair-bop.yaml | 1032 ++++++++--------- .../tests/manybody-pair-bop_save.yaml | 1032 ++++++++--------- 4 files changed, 1064 insertions(+), 1053 deletions(-) diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 10e423f2d2..2a9702507d 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -95,6 +95,7 @@ PairBOP::PairBOP(LAMMPS *lmp) : Pair(lmp) pairParameters = nullptr; tripletParameters = nullptr; bop_elements = nullptr; + bop_masses = nullptr; bop_types = 0; pairlist1 = nullptr; @@ -183,6 +184,7 @@ PairBOP::~PairBOP() if (bop_elements) for (int i = 0; i < bop_types; i++) delete[] bop_elements[i]; delete[] bop_elements; + delete[] bop_masses; } /* ---------------------------------------------------------------------- */ @@ -344,16 +346,16 @@ void PairBOP::settings(int narg, char **arg) void PairBOP::coeff(int narg, char **arg) { - const int n = atom->ntypes; - delete [] map; - map = new int[n+1]; + const int np1 = atom->ntypes+1; + delete[] map; + map = new int[np1]; memory->destroy(setflag); memory->destroy(cutsq); memory->destroy(cutghost); - memory->create(setflag,n+1,n+1,"BOP:setflag"); - memory->create(cutsq,n+1,n+1,"BOP:cutsq"); - memory->create(cutghost,n+1,n+1,"BOP:cutghost"); - bytes = (n+1)*(n+1) * (sizeof (int) + 2.0*sizeof (double)); + memory->create(setflag,np1,np1,"BOP:setflag"); + memory->create(cutsq,np1,np1,"BOP:cutsq"); + memory->create(cutghost,np1,np1,"BOP:cutghost"); + bytes = np1*np1*(sizeof (int) + 2.0*sizeof (double)); map_element2type(narg-3, arg+3); @@ -365,22 +367,23 @@ void PairBOP::coeff(int narg, char **arg) // and check for missing elements if (comm->me == 0) { - for (int i = 1; i <= n; i++) { + for (int i = 1; i < np1; i++) { int j; if (map[i] >= 0) { for (j = 0; j < bop_types; j++) { - if (strcmp(elements[map[i]],bop_elements[j]) == 0) { + if (strcmp(elements[map[i]], bop_elements[j]) == 0) { map[i] = j; + atom->set_mass(FLERR, i, bop_masses[j]); break; } } if (j == bop_types) error->one(FLERR,"Element {} not found in bop potential file {}", - elements[map[i]],arg[2]); + elements[map[i]], arg[2]); } } } - MPI_Bcast(map,atom->ntypes+1,MPI_INT,0,world); + MPI_Bcast(map,np1,MPI_INT,0,world); } /* ---------------------------------------------------------------------- @@ -1844,9 +1847,10 @@ void PairBOP::read_table(char *filename) PotentialFileReader *reader = nullptr; if (bop_elements) { - for (int i = 0; i < bop_types; i++) delete [] bop_elements[i]; - delete [] bop_elements; + for (int i = 0; i < bop_types; i++) delete[] bop_elements[i]; + delete[] bop_elements; } + delete[] bop_masses; if (comm->me == 0) { try { @@ -1857,10 +1861,11 @@ void PairBOP::read_table(char *filename) "elements",bop_types)); bop_elements = new char*[bop_types]; + bop_masses = new double[bop_types]; for (int i=0; i < bop_types; ++i) { ValueTokenizer values = reader->next_values(3); - values.next_int(); // element number in PTE (ignored) - values.next_double(); // element mass (ignored) + values.next_int(); // element number (ignored) + bop_masses[i] = values.next_double(); // element mass bop_elements[i] = utils::strdup(values.next_string()); } } catch (TokenizerException &e) { @@ -1873,8 +1878,12 @@ void PairBOP::read_table(char *filename) allocate(); memory->create(rcut,npairs,"BOP:rcut"); - // copy element labels to all MPI ranks for use with write_tables() - if (comm->me != 0) bop_elements = new char*[bop_types]; + // copy element labels and masses to all MPI ranks for use with + // write_tables() and to set the per-type masses + if (comm->me != 0) { + bop_elements = new char*[bop_types]; + bop_masses = new double[bop_types]; + } for (int i = 0; i < bop_types; ++i) { int n=0; if (comm->me == 0) n = strlen(bop_elements[i])+1; @@ -1882,6 +1891,7 @@ void PairBOP::read_table(char *filename) if (comm->me != 0) bop_elements[i] = new char[n]; MPI_Bcast(bop_elements[i],n,MPI_CHAR,0,world); } + MPI_Bcast(bop_masses, bop_types, MPI_DOUBLE, 0, world); if (comm->me == 0) { try { @@ -2010,7 +2020,7 @@ void PairBOP::read_table(char *filename) } } } - delete [] singletable; + delete[] singletable; singletable = new double[nr]; for (int i = 0; i < npairs; i++) { @@ -2038,7 +2048,7 @@ void PairBOP::read_table(char *filename) p.betaP = new TabularFunction(); (p.betaP)->set_values(nr, 0.0, rcut[i], singletable); } - delete [] singletable; + delete[] singletable; singletable = new double[nBOt]; for (int i = 0; i < npairs; i++) { @@ -2048,7 +2058,7 @@ void PairBOP::read_table(char *filename) p.bo = new TabularFunction(); (p.bo)->set_values(nBOt, 0.0, 1.0, singletable); } - delete [] singletable; + delete[] singletable; nbuf = 0; for (int i = 0; i < bop_types; i++) { @@ -2102,7 +2112,7 @@ void PairBOP::read_table(char *filename) (p.cphi)->set_values(nr, 0.0, rcut[i], singletable); } } - delete [] singletable; + delete[] singletable; } memory->destroy(rcut); diff --git a/src/MANYBODY/pair_bop.h b/src/MANYBODY/pair_bop.h index aa6da378ae..483675021b 100644 --- a/src/MANYBODY/pair_bop.h +++ b/src/MANYBODY/pair_bop.h @@ -109,6 +109,7 @@ class PairBOP : public Pair { int npairs; // number of element pairs int ntriples; // number of all triples char **bop_elements; // names of elements in potential file + double *bop_masses; // masses of elements in potential file double bytes; int otfly; // = 1 faster, more memory, = 0 slower, less memory diff --git a/unittest/force-styles/tests/manybody-pair-bop.yaml b/unittest/force-styles/tests/manybody-pair-bop.yaml index f809a2db66..28a7acb198 100644 --- a/unittest/force-styles/tests/manybody-pair-bop.yaml +++ b/unittest/force-styles/tests/manybody-pair-bop.yaml @@ -1,7 +1,7 @@ --- -lammps_version: 8 Apr 2021 +lammps_version: 4 May 2022 tags: slow, unstable -date_generated: Wed May 5 11:50:15 2021 +date_generated: Fri May 27 17:36:36 2022 epsilon: 5e-12 prerequisites: ! | pair bop @@ -535,521 +535,521 @@ init_forces: ! |2 510 -3.4726171480710488e+00 5.2740849860611352e+00 -2.8158025166462988e+00 511 9.0442915573980152e+00 -1.4095415165544551e+00 -3.3538829159648067e+00 512 5.7753579505879529e+00 5.6893699296338545e+00 6.1188593723557538e+00 -run_vdwl: -228.0857232848286 +run_vdwl: -227.61849029256774 run_coul: 0 run_stress: ! |2- - 2.3717664948296933e+03 2.4019359900230493e+03 2.4442550920472167e+03 -1.1171763120435550e+02 5.0043476869247547e+02 6.0439649265925254e+01 + 2.3726345230237625e+03 2.4028091143998217e+03 2.4451861002359515e+03 -1.1183772133730268e+02 5.0092092646568466e+02 6.0406121385816192e+01 run_forces: ! |2 - 1 1.4091839800546253e+00 1.7360548678936558e+00 -1.6202615165179715e+00 - 2 -5.8365574626504397e+00 -1.1219252071695536e+00 -1.1485581230473687e+00 - 3 8.7637315082564093e-01 3.3462961780072593e+00 -8.1354040756307189e-01 - 4 1.6600848436445121e+00 1.3250424500391154e+00 -4.9591553993549979e+00 - 5 -9.4927377308725691e-01 -5.8207744490732232e+00 6.4663694433556507e-01 - 6 -4.5177611467364664e-01 4.9415963080206229e+00 1.9433161156269956e+00 - 7 -4.3027400171982393e+00 -4.5613754557341322e+00 1.5699407701143435e+00 - 8 1.5448724473390376e+00 2.4584923079749230e+00 -3.1392452600363878e+00 - 9 -4.6016718693843153e+00 -3.9418857354937766e+00 -4.6668302285853835e+00 - 10 3.7018520600616955e-01 -4.8332896704450473e-01 -3.6854125040532786e+00 - 11 3.8659815227919547e+00 -7.4539979597211152e+00 2.6942416612670450e+00 - 12 -5.6142785099940076e+00 -6.2018561025018917e+00 -6.7409137682125495e+00 - 13 3.3341288429707544e-02 7.0519544225452178e+00 -2.0938812825267012e+00 - 14 -2.3615309773794069e+00 5.8104716217346990e+00 9.3010131683171504e-01 - 15 -2.6654393381699402e+00 7.5481721396936594e+00 -4.8904771244982825e+00 - 16 2.6741244163087328e+00 -5.1059307299887957e-01 7.8828856576674111e+00 - 17 5.6945314250833210e+00 4.7236054837728565e+00 -4.4884300671396336e+00 - 18 -4.9761430158760209e+00 4.0936541714453316e+00 3.2051110415901922e+00 - 19 -1.6198356152349742e+00 -4.2596509866650072e+00 -9.7002992061957471e-01 - 20 -5.1699166766819040e+00 5.8976607613037011e+00 5.9849768421212906e+00 - 21 4.2290116365363856e-01 -1.5086464242159887e+00 -7.5078846485188153e+00 - 22 -8.4609751614699586e+00 5.8493355421305973e+00 -5.7089940793026637e+00 - 23 3.4912598028285822e+00 5.3853907974679593e+00 1.6584479527211395e+00 - 24 1.8362372044284656e-01 -4.7948186173622354e-01 -2.0243825542595988e+00 - 25 1.2730663338573691e+00 -1.9548047760834759e+00 4.6007887784914328e+00 - 26 -8.1062754396295733e-01 9.5001973866788880e-01 1.5848621098705411e+00 - 27 2.9207013772019144e+00 -2.0240243823080113e+00 2.7543470586622281e+00 - 28 -1.9402618680197214e+00 7.6549971705972641e-01 9.6946223555320525e+00 - 29 -3.0268260302352505e+00 3.3951011598221985e+00 -6.0757634768923703e+00 - 30 -1.9700043289182680e+00 2.6914206295193162e+00 -1.5061070030578796e+00 - 31 2.8594848783134941e+00 6.6367269634963255e-01 9.9964131902303999e-01 - 32 -1.2590521565572954e+00 -1.6706345370948841e+00 1.4597870772587420e+00 - 33 5.2588945057830436e+00 -6.0464310077477723e+00 6.8597153738814773e+00 - 34 2.8448145000609104e+00 5.6236407582631842e-01 -4.0638613838727838e-01 - 35 2.7571144480951317e+00 -5.8841374694732007e+00 2.6747482982066044e+00 - 36 -1.9192646875023509e-01 -2.6023930451114428e+00 -1.5640119155534091e-01 - 37 -5.4277214420897915e+00 3.1852614984002408e+00 -2.4472993211497069e+00 - 38 -4.8829690006288995e-01 -2.0914391804220553e+00 1.0262204003397455e+00 - 39 2.9502456290286450e-01 1.3059788537887589e+00 1.7852903388433070e+00 - 40 6.5687025583215677e+00 -3.2783217210449340e+00 -2.4974953961406459e+00 - 41 -7.4527219588534566e-01 -3.7773273742840128e+00 -3.6783380789496833e-01 - 42 -6.1270209507454068e+00 -1.5901032532179344e+00 -1.1669470951126529e-01 - 43 -7.0828155566329834e-02 -9.2972356408781369e+00 5.2769209282642726e-01 - 44 5.4887681221692448e+00 -3.9815332474492124e+00 1.7266076926660758e+00 - 45 -1.9921597783097496e+00 1.3642870044413555e+00 -4.6177186619298967e+00 - 46 -6.8118072835900800e-01 -2.7253513128249764e+00 7.9371605940428696e+00 - 47 3.2952236042706704e+00 2.5414480916905644e+00 6.4494852848836288e+00 - 48 2.9835802286197355e+00 1.1522845567074034e+00 -1.1774469162360268e+00 - 49 -6.0679352021219888e+00 -5.9494385654760693e+00 -6.5551986540445517e+00 - 50 -4.0299132290613233e+00 2.1291409567037674e+00 2.7727907241961174e+00 - 51 -2.3315178667160565e+00 3.2375780159414047e+00 6.0916752443950006e+00 - 52 6.6009431885726491e+00 -4.7168574935074661e+00 7.0071311712598190e+00 - 53 3.4640998460185974e+00 4.1341203040088157e+00 2.5043659364606916e+00 - 54 4.2313664783554278e-01 9.2836044096516734e-01 2.5711772833601865e-01 - 55 6.8701154820027910e-01 -4.3825288825994662e+00 -4.6893514588412790e+00 - 56 -1.6845639332386897e+00 3.5356453384345543e+00 -1.8031520110784989e+00 - 57 4.3948311874190343e-01 -2.8873991420822103e+00 -5.7260145606027968e-01 - 58 3.7547819930218109e+00 5.5227522115963879e-01 1.0948274788664087e+00 - 59 4.8388625830553575e+00 8.6992010344280346e-01 -2.9595243733787004e+00 - 60 -3.0285031145622288e+00 -5.5670095107571873e+00 -3.9776832268195546e+00 - 61 -1.4978080653463104e+00 3.0694094674274295e+00 -1.9187559852475968e+00 - 62 -3.4577019435275798e+00 5.2617491012301256e+00 -2.8027640497219033e+00 - 63 9.0406901956571506e+00 -1.4351168204017049e+00 -3.3870294281189954e+00 - 64 5.8184132257283601e+00 5.7423395615017503e+00 6.1686687899852943e+00 - 65 1.4091839800546091e+00 1.7360548678936276e+00 -1.6202615165179453e+00 - 66 -5.8365574626504042e+00 -1.1219252071695365e+00 -1.1485581230473523e+00 - 67 8.7637315082562395e-01 3.3462961780072549e+00 -8.1354040756305013e-01 - 68 1.6600848436444982e+00 1.3250424500390969e+00 -4.9591553993550184e+00 - 69 -9.4927377308727079e-01 -5.8207744490732196e+00 6.4663694433557561e-01 - 70 -4.5177611467371359e-01 4.9415963080206087e+00 1.9433161156269700e+00 - 71 -4.3027400171981860e+00 -4.5613754557341313e+00 1.5699407701143309e+00 - 72 1.5448724473390880e+00 2.4584923079749119e+00 -3.1392452600363598e+00 - 73 -4.6016718693843179e+00 -3.9418857354937904e+00 -4.6668302285853933e+00 - 74 3.7018520600611565e-01 -4.8332896704455658e-01 -3.6854125040533190e+00 - 75 3.8659815227919081e+00 -7.4539979597211170e+00 2.6942416612669851e+00 - 76 -5.6142785099940484e+00 -6.2018561025019636e+00 -6.7409137682126188e+00 - 77 3.3341288429698641e-02 7.0519544225452115e+00 -2.0938812825266471e+00 - 78 -2.3615309773793371e+00 5.8104716217347496e+00 9.3010131683171282e-01 - 79 -2.6654393381699286e+00 7.5481721396937189e+00 -4.8904771244982861e+00 - 80 2.6741244163088513e+00 -5.1059307299879653e-01 7.8828856576673925e+00 - 81 5.6945314250833485e+00 4.7236054837729018e+00 -4.4884300671396673e+00 - 82 -4.9761430158760085e+00 4.0936541714453112e+00 3.2051110415901745e+00 - 83 -1.6198356152349553e+00 -4.2596509866650010e+00 -9.7002992061954396e-01 - 84 -5.1699166766819218e+00 5.8976607613037313e+00 5.9849768421213101e+00 - 85 4.2290116365360830e-01 -1.5086464242159534e+00 -7.5078846485188153e+00 - 86 -8.4609751614699515e+00 5.8493355421306115e+00 -5.7089940793026734e+00 - 87 3.4912598028285755e+00 5.3853907974679567e+00 1.6584479527211322e+00 - 88 1.8362372044284120e-01 -4.7948186173621893e-01 -2.0243825542596210e+00 - 89 1.2730663338573700e+00 -1.9548047760834715e+00 4.6007887784914239e+00 - 90 -8.1062754396290859e-01 9.5001973866786249e-01 1.5848621098705404e+00 - 91 2.9207013772017723e+00 -2.0240243823080144e+00 2.7543470586622449e+00 - 92 -1.9402618680196801e+00 7.6549971705967934e-01 9.6946223555319726e+00 - 93 -3.0268260302352554e+00 3.3951011598221945e+00 -6.0757634768923277e+00 - 94 -1.9700043289182931e+00 2.6914206295193250e+00 -1.5061070030579018e+00 - 95 2.8594848783135531e+00 6.6367269634966275e-01 9.9964131902307751e-01 - 96 -1.2590521565573098e+00 -1.6706345370949101e+00 1.4597870772587667e+00 - 97 5.2588945057830268e+00 -6.0464310077477323e+00 6.8597153738814338e+00 - 98 2.8448145000609459e+00 5.6236407582631776e-01 -4.0638613838727583e-01 - 99 2.7571144480951344e+00 -5.8841374694732096e+00 2.6747482982066115e+00 - 100 -1.9192646875021221e-01 -2.6023930451114299e+00 -1.5640119155531357e-01 - 101 -5.4277214420898057e+00 3.1852614984002399e+00 -2.4472993211497096e+00 - 102 -4.8829690006288684e-01 -2.0914391804220518e+00 1.0262204003397439e+00 - 103 2.9502456290286061e-01 1.3059788537887580e+00 1.7852903388433101e+00 - 104 6.5687025583215517e+00 -3.2783217210449567e+00 -2.4974953961406721e+00 - 105 -7.4527219588536497e-01 -3.7773273742839950e+00 -3.6783380789499104e-01 - 106 -6.1270209507453357e+00 -1.5901032532179249e+00 -1.1669470951123816e-01 - 107 -7.0828155566327294e-02 -9.2972356408781422e+00 5.2769209282642626e-01 - 108 5.4887681221692626e+00 -3.9815332474491845e+00 1.7266076926660832e+00 - 109 -1.9921597783097735e+00 1.3642870044413722e+00 -4.6177186619298798e+00 - 110 -6.8118072835906096e-01 -2.7253513128250360e+00 7.9371605940428580e+00 - 111 3.2952236042706859e+00 2.5414480916905875e+00 6.4494852848836022e+00 - 112 2.9835802286197390e+00 1.1522845567073714e+00 -1.1774469162360239e+00 - 113 -6.0679352021219684e+00 -5.9494385654760613e+00 -6.5551986540445384e+00 - 114 -4.0299132290613144e+00 2.1291409567037727e+00 2.7727907241961218e+00 - 115 -2.3315178667161041e+00 3.2375780159414287e+00 6.0916752443949900e+00 - 116 6.6009431885726535e+00 -4.7168574935074643e+00 7.0071311712598208e+00 - 117 3.4640998460186023e+00 4.1341203040087846e+00 2.5043659364606894e+00 - 118 4.2313664783553978e-01 9.2836044096515802e-01 2.5711772833601421e-01 - 119 6.8701154820031629e-01 -4.3825288825994786e+00 -4.6893514588413003e+00 - 120 -1.6845639332386861e+00 3.5356453384345410e+00 -1.8031520110784927e+00 - 121 4.3948311874188917e-01 -2.8873991420822134e+00 -5.7260145606029789e-01 - 122 3.7547819930217514e+00 5.5227522115965222e-01 1.0948274788664214e+00 - 123 4.8388625830553638e+00 8.6992010344286652e-01 -2.9595243733787253e+00 - 124 -3.0285031145622474e+00 -5.5670095107572228e+00 -3.9776832268195599e+00 - 125 -1.4978080653462371e+00 3.0694094674273988e+00 -1.9187559852475717e+00 - 126 -3.4577019435275544e+00 5.2617491012301194e+00 -2.8027640497218846e+00 - 127 9.0406901956570831e+00 -1.4351168204016738e+00 -3.3870294281189564e+00 - 128 5.8184132257283823e+00 5.7423395615017734e+00 6.1686687899853228e+00 - 129 1.4091839800546262e+00 1.7360548678936576e+00 -1.6202615165179723e+00 - 130 -5.8365574626504797e+00 -1.1219252071695895e+00 -1.1485581230474180e+00 - 131 8.7637315082564471e-01 3.3462961780072598e+00 -8.1354040756308077e-01 - 132 1.6600848436445128e+00 1.3250424500391194e+00 -4.9591553993550068e+00 - 133 -9.4927377308727179e-01 -5.8207744490732294e+00 6.4663694433557239e-01 - 134 -4.5177611467362117e-01 4.9415963080207082e+00 1.9433161156270105e+00 - 135 -4.3027400171982793e+00 -4.5613754557341561e+00 1.5699407701143815e+00 - 136 1.5448724473390563e+00 2.4584923079749159e+00 -3.1392452600363714e+00 - 137 -4.6016718693843144e+00 -3.9418857354937753e+00 -4.6668302285853827e+00 - 138 3.7018520600622984e-01 -4.8332896704440742e-01 -3.6854125040532595e+00 - 139 3.8659815227919525e+00 -7.4539979597211019e+00 2.6942416612670450e+00 - 140 -5.6142785099939303e+00 -6.2018561025018357e+00 -6.7409137682124802e+00 - 141 3.3341288429728076e-02 7.0519544225451920e+00 -2.0938812825267035e+00 - 142 -2.3615309773794757e+00 5.8104716217346404e+00 9.3010131683171671e-01 - 143 -2.6654393381699402e+00 7.5481721396936461e+00 -4.8904771244982834e+00 - 144 2.6741244163086333e+00 -5.1059307299897860e-01 7.8828856576673560e+00 - 145 5.6945314250833707e+00 4.7236054837728840e+00 -4.4884300671396726e+00 - 146 -4.9761430158760191e+00 4.0936541714453032e+00 3.2051110415901620e+00 - 147 -1.6198356152349958e+00 -4.2596509866650010e+00 -9.7002992061956783e-01 - 148 -5.1699166766818863e+00 5.8976607613036949e+00 5.9849768421212746e+00 - 149 4.2290116365364921e-01 -1.5086464242159900e+00 -7.5078846485187789e+00 - 150 -8.4609751614698947e+00 5.8493355421305795e+00 -5.7089940793025864e+00 - 151 3.4912598028285577e+00 5.3853907974679300e+00 1.6584479527210887e+00 - 152 1.8362372044285138e-01 -4.7948186173622748e-01 -2.0243825542596010e+00 - 153 1.2730663338573589e+00 -1.9548047760834706e+00 4.6007887784914407e+00 - 154 -8.1062754396295622e-01 9.5001973866790146e-01 1.5848621098705276e+00 - 155 2.9207013772019210e+00 -2.0240243823079465e+00 2.7543470586622285e+00 - 156 -1.9402618680196846e+00 7.6549971705969444e-01 9.6946223555320881e+00 - 157 -3.0268260302352421e+00 3.3951011598221883e+00 -6.0757634768923596e+00 - 158 -1.9700043289182823e+00 2.6914206295193281e+00 -1.5061070030578914e+00 - 159 2.8594848783134799e+00 6.6367269634961612e-01 9.9964131902302389e-01 - 160 -1.2590521565572945e+00 -1.6706345370948830e+00 1.4597870772587422e+00 - 161 5.2588945057830347e+00 -6.0464310077477634e+00 6.8597153738814649e+00 - 162 2.8448145000609006e+00 5.6236407582631753e-01 -4.0638613838727305e-01 - 163 2.7571144480951171e+00 -5.8841374694731856e+00 2.6747482982065893e+00 - 164 -1.9192646875022240e-01 -2.6023930451114894e+00 -1.5640119155535331e-01 - 165 -5.4277214420897808e+00 3.1852614984002225e+00 -2.4472993211496825e+00 - 166 -4.8829690006287696e-01 -2.0914391804220371e+00 1.0262204003397262e+00 - 167 2.9502456290285922e-01 1.3059788537887549e+00 1.7852903388433095e+00 - 168 6.5687025583215606e+00 -3.2783217210448306e+00 -2.4974953961405961e+00 - 169 -7.4527219588535520e-01 -3.7773273742840203e+00 -3.6783380789497599e-01 - 170 -6.1270209507453561e+00 -1.5901032532178929e+00 -1.1669470951122371e-01 - 171 -7.0828155566336093e-02 -9.2972356408781778e+00 5.2769209282642715e-01 - 172 5.4887681221692297e+00 -3.9815332474491942e+00 1.7266076926660836e+00 - 173 -1.9921597783097551e+00 1.3642870044414022e+00 -4.6177186619299277e+00 - 174 -6.8118072835905086e-01 -2.7253513128250400e+00 7.9371605940428234e+00 - 175 3.2952236042707121e+00 2.5414480916905955e+00 6.4494852848836448e+00 - 176 2.9835802286197262e+00 1.1522845567073772e+00 -1.1774469162360333e+00 - 177 -6.0679352021219577e+00 -5.9494385654760586e+00 -6.5551986540445260e+00 - 178 -4.0299132290613331e+00 2.1291409567038042e+00 2.7727907241961618e+00 - 179 -2.3315178667160339e+00 3.2375780159413421e+00 6.0916752443949624e+00 - 180 6.6009431885726331e+00 -4.7168574935073542e+00 7.0071311712597613e+00 - 181 3.4640998460185690e+00 4.1341203040087091e+00 2.5043659364606543e+00 - 182 4.2313664783553157e-01 9.2836044096514914e-01 2.5711772833600383e-01 - 183 6.8701154820023480e-01 -4.3825288825994866e+00 -4.6893514588412284e+00 - 184 -1.6845639332386739e+00 3.5356453384345174e+00 -1.8031520110784816e+00 - 185 4.3948311874189067e-01 -2.8873991420822849e+00 -5.7260145606027324e-01 - 186 3.7547819930217967e+00 5.5227522115971683e-01 1.0948274788663654e+00 - 187 4.8388625830553762e+00 8.6992010344279525e-01 -2.9595243733786960e+00 - 188 -3.0285031145621746e+00 -5.5670095107571624e+00 -3.9776832268194866e+00 - 189 -1.4978080653462702e+00 3.0694094674274521e+00 -1.9187559852476039e+00 - 190 -3.4577019435276188e+00 5.2617491012301558e+00 -2.8027640497219370e+00 - 191 9.0406901956571559e+00 -1.4351168204017077e+00 -3.3870294281189914e+00 - 192 5.8184132257283103e+00 5.7423395615017139e+00 6.1686687899852446e+00 - 193 1.4091839800546093e+00 1.7360548678936290e+00 -1.6202615165179461e+00 - 194 -5.8365574626504371e+00 -1.1219252071695649e+00 -1.1485581230473914e+00 - 195 8.7637315082562739e-01 3.3462961780072562e+00 -8.1354040756305857e-01 - 196 1.6600848436444939e+00 1.3250424500390929e+00 -4.9591553993550193e+00 - 197 -9.4927377308727623e-01 -5.8207744490732205e+00 6.4663694433557373e-01 - 198 -4.5177611467370399e-01 4.9415963080207055e+00 1.9433161156269694e+00 - 199 -4.3027400171982224e+00 -4.5613754557341482e+00 1.5699407701143533e+00 - 200 1.5448724473391100e+00 2.4584923079749044e+00 -3.1392452600363372e+00 - 201 -4.6016718693843250e+00 -3.9418857354937971e+00 -4.6668302285854049e+00 - 202 3.7018520600617483e-01 -4.8332896704447248e-01 -3.6854125040533079e+00 - 203 3.8659815227919072e+00 -7.4539979597211037e+00 2.6942416612669855e+00 - 204 -5.6142785099939756e+00 -6.2018561025019112e+00 -6.7409137682125593e+00 - 205 3.3341288429723184e-02 7.0519544225452000e+00 -2.0938812825266298e+00 - 206 -2.3615309773793909e+00 5.8104716217346848e+00 9.3010131683171882e-01 - 207 -2.6654393381699286e+00 7.5481721396937065e+00 -4.8904771244982843e+00 - 208 2.6741244163087501e+00 -5.1059307299888446e-01 7.8828856576673472e+00 - 209 5.6945314250834000e+00 4.7236054837729293e+00 -4.4884300671397064e+00 - 210 -4.9761430158760129e+00 4.0936541714452908e+00 3.2051110415901496e+00 - 211 -1.6198356152349811e+00 -4.2596509866650010e+00 -9.7002992061953830e-01 - 212 -5.1699166766818969e+00 5.8976607613037153e+00 5.9849768421212861e+00 - 213 4.2290116365362329e-01 -1.5086464242159563e+00 -7.5078846485187913e+00 - 214 -8.4609751614698805e+00 5.8493355421305875e+00 -5.7089940793025908e+00 - 215 3.4912598028285524e+00 5.3853907974679327e+00 1.6584479527210902e+00 - 216 1.8362372044285205e-01 -4.7948186173622875e-01 -2.0243825542596166e+00 - 217 1.2730663338573596e+00 -1.9548047760834673e+00 4.6007887784914319e+00 - 218 -8.1062754396291825e-01 9.5001973866788747e-01 1.5848621098705231e+00 - 219 2.9207013772017865e+00 -2.0240243823079682e+00 2.7543470586622534e+00 - 220 -1.9402618680196495e+00 7.6549971705965802e-01 9.6946223555319992e+00 - 221 -3.0268260302352465e+00 3.3951011598221861e+00 -6.0757634768923250e+00 - 222 -1.9700043289183065e+00 2.6914206295193375e+00 -1.5061070030579118e+00 - 223 2.8594848783135434e+00 6.6367269634964043e-01 9.9964131902305564e-01 - 224 -1.2590521565573090e+00 -1.6706345370949087e+00 1.4597870772587664e+00 - 225 5.2588945057830188e+00 -6.0464310077477252e+00 6.8597153738814240e+00 - 226 2.8448145000609286e+00 5.6236407582631165e-01 -4.0638613838726467e-01 - 227 2.7571144480951206e+00 -5.8841374694731945e+00 2.6747482982065973e+00 - 228 -1.9192646875019609e-01 -2.6023930451114792e+00 -1.5640119155531521e-01 - 229 -5.4277214420897950e+00 3.1852614984002243e+00 -2.4472993211496865e+00 - 230 -4.8829690006287513e-01 -2.0914391804220358e+00 1.0262204003397262e+00 - 231 2.9502456290285423e-01 1.3059788537887522e+00 1.7852903388433130e+00 - 232 6.5687025583215490e+00 -3.2783217210448430e+00 -2.4974953961406290e+00 - 233 -7.4527219588536520e-01 -3.7773273742840128e+00 -3.6783380789498865e-01 - 234 -6.1270209507452833e+00 -1.5901032532178778e+00 -1.1669470951119659e-01 - 235 -7.0828155566330805e-02 -9.2972356408781796e+00 5.2769209282642604e-01 - 236 5.4887681221692430e+00 -3.9815332474491538e+00 1.7266076926660721e+00 - 237 -1.9921597783097837e+00 1.3642870044414115e+00 -4.6177186619299029e+00 - 238 -6.8118072835910659e-01 -2.7253513128251061e+00 7.9371605940428100e+00 - 239 3.2952236042707228e+00 2.5414480916906115e+00 6.4494852848836217e+00 - 240 2.9835802286197284e+00 1.1522845567073488e+00 -1.1774469162360306e+00 - 241 -6.0679352021219364e+00 -5.9494385654760569e+00 -6.5551986540445197e+00 - 242 -4.0299132290613189e+00 2.1291409567038055e+00 2.7727907241961627e+00 - 243 -2.3315178667160752e+00 3.2375780159413567e+00 6.0916752443949562e+00 - 244 6.6009431885726286e+00 -4.7168574935073488e+00 7.0071311712597506e+00 - 245 3.4640998460185721e+00 4.1341203040086913e+00 2.5043659364606583e+00 - 246 4.2313664783552735e-01 9.2836044096513803e-01 2.5711772833599877e-01 - 247 6.8701154820027677e-01 -4.3825288825994866e+00 -4.6893514588412462e+00 - 248 -1.6845639332386573e+00 3.5356453384344939e+00 -1.8031520110784616e+00 - 249 4.3948311874186885e-01 -2.8873991420822955e+00 -5.7260145606028601e-01 - 250 3.7547819930217283e+00 5.5227522115973815e-01 1.0948274788663759e+00 - 251 4.8388625830553877e+00 8.6992010344286119e-01 -2.9595243733787218e+00 - 252 -3.0285031145621910e+00 -5.5670095107571829e+00 -3.9776832268194813e+00 - 253 -1.4978080653461978e+00 3.0694094674274215e+00 -1.9187559852475764e+00 - 254 -3.4577019435275971e+00 5.2617491012301461e+00 -2.8027640497219215e+00 - 255 9.0406901956570884e+00 -1.4351168204016764e+00 -3.3870294281189546e+00 - 256 5.8184132257283228e+00 5.7423395615017272e+00 6.1686687899852624e+00 - 257 1.4091839800546311e+00 1.7360548678936627e+00 -1.6202615165179777e+00 - 258 -5.8365574626504619e+00 -1.1219252071695709e+00 -1.1485581230473791e+00 - 259 8.7637315082562439e-01 3.3462961780072389e+00 -8.1354040756305923e-01 - 260 1.6600848436445086e+00 1.3250424500391138e+00 -4.9591553993549988e+00 - 261 -9.4927377308725214e-01 -5.8207744490732276e+00 6.4663694433556207e-01 - 262 -4.5177611467360057e-01 4.9415963080206202e+00 1.9433161156270420e+00 - 263 -4.3027400171982570e+00 -4.5613754557341517e+00 1.5699407701143941e+00 - 264 1.5448724473390543e+00 2.4584923079749084e+00 -3.1392452600363963e+00 - 265 -4.6016718693843126e+00 -3.9418857354937775e+00 -4.6668302285853844e+00 - 266 3.7018520600613297e-01 -4.8332896704450973e-01 -3.6854125040533261e+00 - 267 3.8659815227919201e+00 -7.4539979597210992e+00 2.6942416612670250e+00 - 268 -5.6142785099940120e+00 -6.2018561025018997e+00 -6.7409137682125522e+00 - 269 3.3341288429739352e-02 7.0519544225451858e+00 -2.0938812825266968e+00 - 270 -2.3615309773793465e+00 5.8104716217346795e+00 9.3010131683181696e-01 - 271 -2.6654393381700139e+00 7.5481721396937509e+00 -4.8904771244983651e+00 - 272 2.6741244163087305e+00 -5.1059307299888756e-01 7.8828856576674111e+00 - 273 5.6945314250833396e+00 4.7236054837728716e+00 -4.4884300671396442e+00 - 274 -4.9761430158759961e+00 4.0936541714453289e+00 3.2051110415901976e+00 - 275 -1.6198356152349642e+00 -4.2596509866649948e+00 -9.7002992061955196e-01 - 276 -5.1699166766818871e+00 5.8976607613036709e+00 5.9849768421212586e+00 - 277 4.2290116365361424e-01 -1.5086464242159596e+00 -7.5078846485188082e+00 - 278 -8.4609751614700137e+00 5.8493355421306603e+00 -5.7089940793027392e+00 - 279 3.4912598028285378e+00 5.3853907974679602e+00 1.6584479527211433e+00 - 280 1.8362372044285166e-01 -4.7948186173622959e-01 -2.0243825542595824e+00 - 281 1.2730663338573827e+00 -1.9548047760834801e+00 4.6007887784913599e+00 - 282 -8.1062754396294179e-01 9.5001973866789868e-01 1.5848621098705087e+00 - 283 2.9207013772019419e+00 -2.0240243823079860e+00 2.7543470586622187e+00 - 284 -1.9402618680197097e+00 7.6549971705970477e-01 9.6946223555320827e+00 - 285 -3.0268260302352705e+00 3.3951011598222260e+00 -6.0757634768923667e+00 - 286 -1.9700043289182816e+00 2.6914206295193210e+00 -1.5061070030578938e+00 - 287 2.8594848783134781e+00 6.6367269634964388e-01 9.9964131902304842e-01 - 288 -1.2590521565572959e+00 -1.6706345370948839e+00 1.4597870772587418e+00 - 289 5.2588945057831227e+00 -6.0464310077478611e+00 6.8597153738815528e+00 - 290 2.8448145000609064e+00 5.6236407582631898e-01 -4.0638613838728016e-01 - 291 2.7571144480951801e+00 -5.8841374694731963e+00 2.6747482982066444e+00 - 292 -1.9192646875024974e-01 -2.6023930451114330e+00 -1.5640119155539528e-01 - 293 -5.4277214420898163e+00 3.1852614984002563e+00 -2.4472993211497136e+00 - 294 -4.8829690006289089e-01 -2.0914391804220638e+00 1.0262204003397486e+00 - 295 2.9502456290283852e-01 1.3059788537887378e+00 1.7852903388432688e+00 - 296 6.5687025583215730e+00 -3.2783217210449096e+00 -2.4974953961406419e+00 - 297 -7.4527219588535576e-01 -3.7773273742839897e+00 -3.6783380789497833e-01 - 298 -6.1270209507454059e+00 -1.5901032532179340e+00 -1.1669470951127092e-01 - 299 -7.0828155566327031e-02 -9.2972356408781405e+00 5.2769209282643048e-01 - 300 5.4887681221691862e+00 -3.9815332474491911e+00 1.7266076926660765e+00 - 301 -1.9921597783097464e+00 1.3642870044413813e+00 -4.6177186619299357e+00 - 302 -6.8118072835899479e-01 -2.7253513128250177e+00 7.9371605940428118e+00 - 303 3.2952236042706780e+00 2.5414480916905724e+00 6.4494852848836226e+00 - 304 2.9835802286197115e+00 1.1522845567074216e+00 -1.1774469162359920e+00 - 305 -6.0679352021219408e+00 -5.9494385654760071e+00 -6.5551986540445046e+00 - 306 -4.0299132290613322e+00 2.1291409567037616e+00 2.7727907241961169e+00 - 307 -2.3315178667160326e+00 3.2375780159413909e+00 6.0916752443949980e+00 - 308 6.6009431885727023e+00 -4.7168574935075398e+00 7.0071311712598687e+00 - 309 3.4640998460185570e+00 4.1341203040087589e+00 2.5043659364606148e+00 - 310 4.2313664783553812e-01 9.2836044096518455e-01 2.5711772833601587e-01 - 311 6.8701154820029764e-01 -4.3825288825994893e+00 -4.6893514588412897e+00 - 312 -1.6845639332386757e+00 3.5356453384345401e+00 -1.8031520110784909e+00 - 313 4.3948311874192064e-01 -2.8873991420822258e+00 -5.7260145606024282e-01 - 314 3.7547819930218127e+00 5.5227522115964545e-01 1.0948274788663677e+00 - 315 4.8388625830553504e+00 8.6992010344280335e-01 -2.9595243733787977e+00 - 316 -3.0285031145622927e+00 -5.5670095107572948e+00 -3.9776832268196527e+00 - 317 -1.4978080653463275e+00 3.0694094674273598e+00 -1.9187559852475453e+00 - 318 -3.4577019435275558e+00 5.2617491012301123e+00 -2.8027640497218824e+00 - 319 9.0406901956571719e+00 -1.4351168204016653e+00 -3.3870294281189643e+00 - 320 5.8184132257284507e+00 5.7423395615018444e+00 6.1686687899853681e+00 - 321 1.4091839800546089e+00 1.7360548678936276e+00 -1.6202615165179448e+00 - 322 -5.8365574626504406e+00 -1.1219252071695605e+00 -1.1485581230473683e+00 - 323 8.7637315082560552e-01 3.3462961780072313e+00 -8.1354040756303558e-01 - 324 1.6600848436444902e+00 1.3250424500390892e+00 -4.9591553993550113e+00 - 325 -9.4927377308725713e-01 -5.8207744490732196e+00 6.4663694433556163e-01 - 326 -4.5177611467365764e-01 4.9415963080206184e+00 1.9433161156270236e+00 - 327 -4.3027400171982002e+00 -4.5613754557341464e+00 1.5699407701143666e+00 - 328 1.5448724473390965e+00 2.4584923079749039e+00 -3.1392452600363705e+00 - 329 -4.6016718693843179e+00 -3.9418857354937908e+00 -4.6668302285853951e+00 - 330 3.7018520600608934e-01 -4.8332896704456763e-01 -3.6854125040533510e+00 - 331 3.8659815227918801e+00 -7.4539979597211019e+00 2.6942416612669708e+00 - 332 -5.6142785099940555e+00 -6.2018561025019778e+00 -6.7409137682126294e+00 - 333 3.3341288429725495e-02 7.0519544225451831e+00 -2.0938812825266422e+00 - 334 -2.3615309773792754e+00 5.8104716217347230e+00 9.3010131683181607e-01 - 335 -2.6654393381700006e+00 7.5481721396938086e+00 -4.8904771244983651e+00 - 336 2.6741244163088496e+00 -5.1059307299879952e-01 7.8828856576673969e+00 - 337 5.6945314250833610e+00 4.7236054837729107e+00 -4.4884300671396717e+00 - 338 -4.9761430158759898e+00 4.0936541714453147e+00 3.2051110415901869e+00 - 339 -1.6198356152349376e+00 -4.2596509866649903e+00 -9.7002992061951809e-01 - 340 -5.1699166766819040e+00 5.8976607613036931e+00 5.9849768421212737e+00 - 341 4.2290116365358615e-01 -1.5086464242159290e+00 -7.5078846485188215e+00 - 342 -8.4609751614699995e+00 5.8493355421306745e+00 -5.7089940793027472e+00 - 343 3.4912598028285324e+00 5.3853907974679558e+00 1.6584479527211353e+00 - 344 1.8362372044284778e-01 -4.7948186173622687e-01 -2.0243825542595992e+00 - 345 1.2730663338573833e+00 -1.9548047760834757e+00 4.6007887784913510e+00 - 346 -8.1062754396290182e-01 9.5001973866788081e-01 1.5848621098705074e+00 - 347 2.9207013772018025e+00 -2.0240243823080029e+00 2.7543470586622463e+00 - 348 -1.9402618680196775e+00 7.6549971705966835e-01 9.6946223555320099e+00 - 349 -3.0268260302352754e+00 3.3951011598222234e+00 -6.0757634768923339e+00 - 350 -1.9700043289183056e+00 2.6914206295193304e+00 -1.5061070030579151e+00 - 351 2.8594848783135420e+00 6.6367269634966752e-01 9.9964131902308240e-01 - 352 -1.2590521565573154e+00 -1.6706345370949156e+00 1.4597870772587733e+00 - 353 5.2588945057831102e+00 -6.0464310077478247e+00 6.8597153738815138e+00 - 354 2.8448145000609362e+00 5.6236407582631520e-01 -4.0638613838727428e-01 - 355 2.7571144480951890e+00 -5.8841374694732149e+00 2.6747482982066555e+00 - 356 -1.9192646875022737e-01 -2.6023930451114192e+00 -1.5640119155536478e-01 - 357 -5.4277214420898403e+00 3.1852614984002652e+00 -2.4472993211497220e+00 - 358 -4.8829690006288884e-01 -2.0914391804220620e+00 1.0262204003397475e+00 - 359 2.9502456290283241e-01 1.3059788537887345e+00 1.7852903388432784e+00 - 360 6.5687025583215570e+00 -3.2783217210449371e+00 -2.4974953961406730e+00 - 361 -7.4527219588536464e-01 -3.7773273742839790e+00 -3.6783380789498993e-01 - 362 -6.1270209507453304e+00 -1.5901032532179182e+00 -1.1669470951124647e-01 - 363 -7.0828155566322812e-02 -9.2972356408781422e+00 5.2769209282643037e-01 - 364 5.4887681221691995e+00 -3.9815332474491578e+00 1.7266076926660769e+00 - 365 -1.9921597783097700e+00 1.3642870044413935e+00 -4.6177186619299171e+00 - 366 -6.8118072835905619e-01 -2.7253513128250813e+00 7.9371605940428021e+00 - 367 3.2952236042706891e+00 2.5414480916905897e+00 6.4494852848835995e+00 - 368 2.9835802286197146e+00 1.1522845567073883e+00 -1.1774469162359926e+00 - 369 -6.0679352021219168e+00 -5.9494385654760000e+00 -6.5551986540444913e+00 - 370 -4.0299132290613215e+00 2.1291409567037642e+00 2.7727907241961178e+00 - 371 -2.3315178667160841e+00 3.2375780159414127e+00 6.0916752443949918e+00 - 372 6.6009431885727041e+00 -4.7168574935075362e+00 7.0071311712598670e+00 - 373 3.4640998460185579e+00 4.1341203040087349e+00 2.5043659364606152e+00 - 374 4.2313664783553423e-01 9.2836044096517378e-01 2.5711772833601110e-01 - 375 6.8701154820034405e-01 -4.3825288825995052e+00 -4.6893514588413119e+00 - 376 -1.6845639332386699e+00 3.5356453384345237e+00 -1.8031520110784818e+00 - 377 4.3948311874191232e-01 -2.8873991420822267e+00 -5.7260145606025925e-01 - 378 3.7547819930217545e+00 5.5227522115966277e-01 1.0948274788663754e+00 - 379 4.8388625830553673e+00 8.6992010344286952e-01 -2.9595243733788266e+00 - 380 -3.0285031145623149e+00 -5.5670095107573196e+00 -3.9776832268196500e+00 - 381 -1.4978080653462609e+00 3.0694094674273300e+00 -1.9187559852475262e+00 - 382 -3.4577019435275314e+00 5.2617491012301087e+00 -2.8027640497218647e+00 - 383 9.0406901956570973e+00 -1.4351168204016267e+00 -3.3870294281189155e+00 - 384 5.8184132257284693e+00 5.7423395615018640e+00 6.1686687899853938e+00 - 385 1.4091839800546315e+00 1.7360548678936638e+00 -1.6202615165179781e+00 - 386 -5.8365574626505046e+00 -1.1219252071696144e+00 -1.1485581230474351e+00 - 387 8.7637315082563116e-01 3.3462961780072367e+00 -8.1354040756307044e-01 - 388 1.6600848436445064e+00 1.3250424500391129e+00 -4.9591553993550042e+00 - 389 -9.4927377308726546e-01 -5.8207744490732258e+00 6.4663694433556684e-01 - 390 -4.5177611467357648e-01 4.9415963080207232e+00 1.9433161156270660e+00 - 391 -4.3027400171982926e+00 -4.5613754557341695e+00 1.5699407701144159e+00 - 392 1.5448724473390720e+00 2.4584923079749030e+00 -3.1392452600363780e+00 - 393 -4.6016718693843117e+00 -3.9418857354937766e+00 -4.6668302285853844e+00 - 394 3.7018520600619537e-01 -4.8332896704442380e-01 -3.6854125040533008e+00 - 395 3.8659815227919156e+00 -7.4539979597210850e+00 2.6942416612670224e+00 - 396 -5.6142785099939436e+00 -6.2018561025018535e+00 -6.7409137682124936e+00 - 397 3.3341288429758066e-02 7.0519544225451662e+00 -2.0938812825266919e+00 - 398 -2.3615309773794055e+00 5.8104716217346191e+00 9.3010131683181485e-01 - 399 -2.6654393381700103e+00 7.5481721396937393e+00 -4.8904771244983625e+00 - 400 2.6741244163086249e+00 -5.1059307299898360e-01 7.8828856576673783e+00 - 401 5.6945314250833921e+00 4.7236054837729009e+00 -4.4884300671396842e+00 - 402 -4.9761430158760058e+00 4.0936541714453085e+00 3.2051110415901740e+00 - 403 -1.6198356152349935e+00 -4.2596509866649948e+00 -9.7002992061955384e-01 - 404 -5.1699166766818720e+00 5.8976607613036647e+00 5.9849768421212461e+00 - 405 4.2290116365363556e-01 -1.5086464242159761e+00 -7.5078846485187878e+00 - 406 -8.4609751614699444e+00 5.8493355421306461e+00 -5.7089940793026672e+00 - 407 3.4912598028285289e+00 5.3853907974679265e+00 1.6584479527211002e+00 - 408 1.8362372044286548e-01 -4.7948186173624224e-01 -2.0243825542595810e+00 - 409 1.2730663338573718e+00 -1.9548047760834746e+00 4.6007887784913688e+00 - 410 -8.1062754396295167e-01 9.5001973866792222e-01 1.5848621098704945e+00 - 411 2.9207013772019486e+00 -2.0240243823079398e+00 2.7543470586622174e+00 - 412 -1.9402618680196764e+00 7.6549971705967745e-01 9.6946223555321112e+00 - 413 -3.0268260302352630e+00 3.3951011598222181e+00 -6.0757634768923605e+00 - 414 -1.9700043289182965e+00 2.6914206295193344e+00 -1.5061070030579065e+00 - 415 2.8594848783134728e+00 6.6367269634962867e-01 9.9964131902303588e-01 - 416 -1.2590521565572947e+00 -1.6706345370948832e+00 1.4597870772587422e+00 - 417 5.2588945057831182e+00 -6.0464310077478585e+00 6.8597153738815475e+00 - 418 2.8448145000608931e+00 5.6236407582630721e-01 -4.0638613838726412e-01 - 419 2.7571144480951659e+00 -5.8841374694731785e+00 2.6747482982066311e+00 - 420 -1.9192646875023883e-01 -2.6023930451114814e+00 -1.5640119155539567e-01 - 421 -5.4277214420898057e+00 3.1852614984002399e+00 -2.4472993211496927e+00 - 422 -4.8829690006288184e-01 -2.0914391804220513e+00 1.0262204003397351e+00 - 423 2.9502456290283263e-01 1.3059788537887316e+00 1.7852903388432710e+00 - 424 6.5687025583215677e+00 -3.2783217210447950e+00 -2.4974953961405957e+00 - 425 -7.4527219588536364e-01 -3.7773273742840070e+00 -3.6783380789498238e-01 - 426 -6.1270209507453552e+00 -1.5901032532178907e+00 -1.1669470951122697e-01 - 427 -7.0828155566333456e-02 -9.2972356408781796e+00 5.2769209282642937e-01 - 428 5.4887681221691684e+00 -3.9815332474491631e+00 1.7266076926660745e+00 - 429 -1.9921597783097484e+00 1.3642870044414233e+00 -4.6177186619299526e+00 - 430 -6.8118072835904131e-01 -2.7253513128250795e+00 7.9371605940427647e+00 - 431 3.2952236042707215e+00 2.5414480916906030e+00 6.4494852848836377e+00 - 432 2.9835802286197066e+00 1.1522845567073925e+00 -1.1774469162359951e+00 - 433 -6.0679352021219133e+00 -5.9494385654760107e+00 -6.5551986540444913e+00 - 434 -4.0299132290613429e+00 2.1291409567038064e+00 2.7727907241961693e+00 - 435 -2.3315178667160001e+00 3.2375780159413186e+00 6.0916752443949518e+00 - 436 6.6009431885726855e+00 -4.7168574935074243e+00 7.0071311712598199e+00 - 437 3.4640998460185353e+00 4.1341203040086709e+00 2.5043659364605859e+00 - 438 4.2313664783552257e-01 9.2836044096516035e-01 2.5711772833599683e-01 - 439 6.8701154820026356e-01 -4.3825288825994972e+00 -4.6893514588412382e+00 - 440 -1.6845639332386511e+00 3.5356453384344939e+00 -1.8031520110784645e+00 - 441 4.3948311874190016e-01 -2.8873991420823018e+00 -5.7260145606023594e-01 - 442 3.7547819930217847e+00 5.5227522115972771e-01 1.0948274788663190e+00 - 443 4.8388625830553798e+00 8.6992010344278914e-01 -2.9595243733787910e+00 - 444 -3.0285031145622359e+00 -5.5670095107572628e+00 -3.9776832268195768e+00 - 445 -1.4978080653462962e+00 3.0694094674273931e+00 -1.9187559852475569e+00 - 446 -3.4577019435275989e+00 5.2617491012301478e+00 -2.8027640497219197e+00 - 447 9.0406901956571772e+00 -1.4351168204016671e+00 -3.3870294281189612e+00 - 448 5.8184132257283938e+00 5.7423395615018009e+00 6.1686687899853112e+00 - 449 1.4091839800546093e+00 1.7360548678936290e+00 -1.6202615165179453e+00 - 450 -5.8365574626504761e+00 -1.1219252071695991e+00 -1.1485581230474198e+00 - 451 8.7637315082561329e-01 3.3462961780072291e+00 -8.1354040756304880e-01 - 452 1.6600848436444857e+00 1.3250424500390852e+00 -4.9591553993550166e+00 - 453 -9.4927377308726668e-01 -5.8207744490732178e+00 6.4663694433556518e-01 - 454 -4.5177611467363993e-01 4.9415963080207170e+00 1.9433161156270433e+00 - 455 -4.3027400171982411e+00 -4.5613754557341704e+00 1.5699407701144044e+00 - 456 1.5448724473391180e+00 2.4584923079748955e+00 -3.1392452600363479e+00 - 457 -4.6016718693843259e+00 -3.9418857354937975e+00 -4.6668302285854049e+00 - 458 3.7018520600614979e-01 -4.8332896704448242e-01 -3.6854125040533474e+00 - 459 3.8659815227918859e+00 -7.4539979597210957e+00 2.6942416612669775e+00 - 460 -5.6142785099939916e+00 -6.2018561025019325e+00 -6.7409137682125735e+00 - 461 3.3341288429745382e-02 7.0519544225451831e+00 -2.0938812825266329e+00 - 462 -2.3615309773793238e+00 5.8104716217346590e+00 9.3010131683182995e-01 - 463 -2.6654393381700037e+00 7.5481721396937997e+00 -4.8904771244983696e+00 - 464 2.6741244163087461e+00 -5.1059307299888701e-01 7.8828856576673685e+00 - 465 5.6945314250834205e+00 4.7236054837729471e+00 -4.4884300671397197e+00 - 466 -4.9761430158759863e+00 4.0936541714452837e+00 3.2051110415901523e+00 - 467 -1.6198356152349644e+00 -4.2596509866649894e+00 -9.7002992061952242e-01 - 468 -5.1699166766818836e+00 5.8976607613036842e+00 5.9849768421212559e+00 - 469 4.2290116365359981e-01 -1.5086464242159319e+00 -7.5078846485187869e+00 - 470 -8.4609751614699338e+00 5.8493355421306630e+00 -5.7089940793026788e+00 - 471 3.4912598028285164e+00 5.3853907974679212e+00 1.6584479527210936e+00 - 472 1.8362372044285996e-01 -4.7948186173623775e-01 -2.0243825542596032e+00 - 473 1.2730663338573720e+00 -1.9548047760834697e+00 4.6007887784913590e+00 - 474 -8.1062754396290859e-01 9.5001973866790346e-01 1.5848621098704960e+00 - 475 2.9207013772018131e+00 -2.0240243823079469e+00 2.7543470586622298e+00 - 476 -1.9402618680196426e+00 7.6549971705964004e-01 9.6946223555320401e+00 - 477 -3.0268260302352603e+00 3.3951011598222030e+00 -6.0757634768923214e+00 - 478 -1.9700043289183136e+00 2.6914206295193366e+00 -1.5061070030579211e+00 - 479 2.8594848783135354e+00 6.6367269634965109e-01 9.9964131902306697e-01 - 480 -1.2590521565573143e+00 -1.6706345370949152e+00 1.4597870772587735e+00 - 481 5.2588945057831022e+00 -6.0464310077478167e+00 6.8597153738815031e+00 - 482 2.8448145000609153e+00 5.6236407582631298e-01 -4.0638613838726606e-01 - 483 2.7571144480951641e+00 -5.8841374694731883e+00 2.6747482982066320e+00 - 484 -1.9192646875021480e-01 -2.6023930451114743e+00 -1.5640119155537663e-01 - 485 -5.4277214420898199e+00 3.1852614984002354e+00 -2.4472993211496896e+00 - 486 -4.8829690006287668e-01 -2.0914391804220442e+00 1.0262204003397306e+00 - 487 2.9502456290283036e-01 1.3059788537887318e+00 1.7852903388432808e+00 - 488 6.5687025583215561e+00 -3.2783217210448123e+00 -2.4974953961406214e+00 - 489 -7.4527219588537796e-01 -3.7773273742839950e+00 -3.6783380789500075e-01 - 490 -6.1270209507452824e+00 -1.5901032532178767e+00 -1.1669470951120132e-01 - 491 -7.0828155566328391e-02 -9.2972356408781831e+00 5.2769209282643115e-01 - 492 5.4887681221691782e+00 -3.9815332474491272e+00 1.7266076926660672e+00 - 493 -1.9921597783097722e+00 1.3642870044414399e+00 -4.6177186619299357e+00 - 494 -6.8118072835909582e-01 -2.7253513128251385e+00 7.9371605940427514e+00 - 495 3.2952236042707335e+00 2.5414480916906217e+00 6.4494852848836128e+00 - 496 2.9835802286197026e+00 1.1522845567073692e+00 -1.1774469162360017e+00 - 497 -6.0679352021218858e+00 -5.9494385654759991e+00 -6.5551986540444753e+00 - 498 -4.0299132290613304e+00 2.1291409567037998e+00 2.7727907241961627e+00 - 499 -2.3315178667160503e+00 3.2375780159413483e+00 6.0916752443949553e+00 - 500 6.6009431885726855e+00 -4.7168574935074252e+00 7.0071311712598181e+00 - 501 3.4640998460185322e+00 4.1341203040086407e+00 2.5043659364605859e+00 - 502 4.2313664783552291e-01 9.2836044096515435e-01 2.5711772833599639e-01 - 503 6.8701154820029697e-01 -4.3825288825995079e+00 -4.6893514588412568e+00 - 504 -1.6845639332386459e+00 3.5356453384344828e+00 -1.8031520110784556e+00 - 505 4.3948311874188511e-01 -2.8873991420823044e+00 -5.7260145606025570e-01 - 506 3.7547819930217337e+00 5.5227522115974215e-01 1.0948274788663341e+00 - 507 4.8388625830553869e+00 8.6992010344284987e-01 -2.9595243733788110e+00 - 508 -3.0285031145622705e+00 -5.5670095107572886e+00 -3.9776832268195808e+00 - 509 -1.4978080653462185e+00 3.0694094674273678e+00 -1.9187559852475351e+00 - 510 -3.4577019435275704e+00 5.2617491012301310e+00 -2.8027640497218980e+00 - 511 9.0406901956571009e+00 -1.4351168204016298e+00 -3.3870294281189146e+00 - 512 5.8184132257284160e+00 5.7423395615018249e+00 6.1686687899853405e+00 + 1 1.4101084499624834e+00 1.7371804088545335e+00 -1.6213174412210642e+00 + 2 -5.8399142482199666e+00 -1.1232412828534912e+00 -1.1499478454746312e+00 + 3 8.7634281400132430e-01 3.3470924205892643e+00 -8.1366156642161969e-01 + 4 1.6618348954343425e+00 1.3267230795340910e+00 -4.9613186302807133e+00 + 5 -9.5068329765370274e-01 -5.8237800850819283e+00 6.4731385586130707e-01 + 6 -4.5001292021627554e-01 4.9457441409187863e+00 1.9456461634790387e+00 + 7 -4.3052102443920397e+00 -4.5636488830761017e+00 1.5724677428331195e+00 + 8 1.5449878373122821e+00 2.4590982230198160e+00 -3.1390852730039449e+00 + 9 -4.6045449943310786e+00 -3.9440808098823186e+00 -4.6700755874078377e+00 + 10 3.7147697382426104e-01 -4.8285079070936388e-01 -3.6890671668077557e+00 + 11 3.8716570366709617e+00 -7.4579362411464825e+00 2.6984541425925990e+00 + 12 -5.6224994178130929e+00 -6.2110127059234488e+00 -6.7476211894063383e+00 + 13 3.1500132936973006e-02 7.0601764306126391e+00 -2.0944606590553625e+00 + 14 -2.3637150235790640e+00 5.8159045954962254e+00 9.2704917537069798e-01 + 15 -2.6728293943632440e+00 7.5552531622542345e+00 -4.8983926692927886e+00 + 16 2.6753525054676741e+00 -5.0623527488437536e-01 7.8939421082827286e+00 + 17 5.6999696634920580e+00 4.7279269674034090e+00 -4.4920700577050896e+00 + 18 -4.9787999902374374e+00 4.0981651408694857e+00 3.2088541364653502e+00 + 19 -1.6213391901712033e+00 -4.2635561713516781e+00 -9.7236351460329395e-01 + 20 -5.1758925760643937e+00 5.9036888087723742e+00 5.9897804863834523e+00 + 21 4.2475360018693586e-01 -1.5120403153751463e+00 -7.5118946585359554e+00 + 22 -8.4723991427858429e+00 5.8591586936795998e+00 -5.7220550448276519e+00 + 23 3.4936529015452429e+00 5.3887932178421343e+00 1.6618586990387023e+00 + 24 1.8397684085288479e-01 -4.7956123656856936e-01 -2.0248730631499297e+00 + 25 1.2740119839669743e+00 -1.9562152526426297e+00 4.6010648854407039e+00 + 26 -8.1088651153479652e-01 9.4981098330250502e-01 1.5857688839887338e+00 + 27 2.9237941762954156e+00 -2.0287483220568965e+00 2.7576412015032452e+00 + 28 -1.9423484320868827e+00 7.6700165963422506e-01 9.7032907448379735e+00 + 29 -3.0301266998673522e+00 3.3988629573493792e+00 -6.0790525480058077e+00 + 30 -1.9710732697574975e+00 2.6918587726715142e+00 -1.5068617145526664e+00 + 31 2.8596379254927973e+00 6.6388605559368985e-01 1.0001582081953555e+00 + 32 -1.2599066151315841e+00 -1.6716649508562782e+00 1.4607750060248941e+00 + 33 5.2650618358415651e+00 -6.0531728072803412e+00 6.8677797616117395e+00 + 34 2.8452772301515119e+00 5.6278916247943778e-01 -4.0654825176947501e-01 + 35 2.7601000342468174e+00 -5.8880962871766309e+00 2.6779862817975464e+00 + 36 -1.9151887508496218e-01 -2.6038253331120482e+00 -1.5631763792038542e-01 + 37 -5.4308678357699085e+00 3.1890361709539681e+00 -2.4512813444078403e+00 + 38 -4.8831911953854834e-01 -2.0911382434426233e+00 1.0263989663650521e+00 + 39 2.9583081381556897e-01 1.3064497582436145e+00 1.7854366483768509e+00 + 40 6.5759007584467497e+00 -3.2841132464413572e+00 -2.5014634020295063e+00 + 41 -7.4523257690304801e-01 -3.7773029542989391e+00 -3.6767020418412921e-01 + 42 -6.1312327154342396e+00 -1.5912197837133117e+00 -1.1855962370568189e-01 + 43 -7.1437588001434169e-02 -9.3031888107187211e+00 5.2754511162513296e-01 + 44 5.4932170480545217e+00 -3.9860368619527629e+00 1.7314892119390326e+00 + 45 -1.9946430535013895e+00 1.3671229931632587e+00 -4.6232127582616194e+00 + 46 -6.8496202690010577e-01 -2.7270551316211842e+00 7.9433814991520117e+00 + 47 3.2988872027001999e+00 2.5435438106820394e+00 6.4538031712204589e+00 + 48 2.9832582841622712e+00 1.1528571177955873e+00 -1.1771929693341157e+00 + 49 -6.0727927862320437e+00 -5.9562388562177775e+00 -6.5628478152085119e+00 + 50 -4.0304268005425916e+00 2.1299026394284661e+00 2.7736841705602946e+00 + 51 -2.3362097823934547e+00 3.2446508481241834e+00 6.0973333873913846e+00 + 52 6.6121228820666840e+00 -4.7286493145040840e+00 7.0211430066607825e+00 + 53 3.4705860716774821e+00 4.1400084168419884e+00 2.5096243926436443e+00 + 54 4.2357967515728950e-01 9.2785557547274899e-01 2.5722948535958462e-01 + 55 6.9092597174733328e-01 -4.3884673023252585e+00 -4.6957721500748519e+00 + 56 -1.6865429201680642e+00 3.5369692022565093e+00 -1.8052965931311840e+00 + 57 4.3961939657668192e-01 -2.8887423850093139e+00 -5.7296796525048743e-01 + 58 3.7570134025583659e+00 5.5027352242578065e-01 1.0958464933342578e+00 + 59 4.8450622687030140e+00 8.7301037576119778e-01 -2.9627442358410301e+00 + 60 -3.0352399103260401e+00 -5.5756624285612242e+00 -3.9845128251408610e+00 + 61 -1.4986666784757698e+00 3.0715079180009073e+00 -1.9202063976752488e+00 + 62 -3.4612601703739707e+00 5.2654166486564113e+00 -2.8054760695983396e+00 + 63 9.0463322673910671e+00 -1.4402000114087783e+00 -3.3926224071546960e+00 + 64 5.8257019271111208e+00 5.7499622015090264e+00 6.1760642521047480e+00 + 65 1.4101084499624945e+00 1.7371804088545499e+00 -1.6213174412210793e+00 + 66 -5.8399142482199569e+00 -1.1232412828534901e+00 -1.1499478454746328e+00 + 67 8.7634281400133751e-01 3.3470924205892656e+00 -8.1366156642163534e-01 + 68 1.6618348954343116e+00 1.3267230795340468e+00 -4.9613186302807328e+00 + 69 -9.5068329765370096e-01 -5.8237800850819186e+00 6.4731385586130286e-01 + 70 -4.5001292021631656e-01 4.9457441409188236e+00 1.9456461634789957e+00 + 71 -4.3052102443919482e+00 -4.5636488830760964e+00 1.5724677428330975e+00 + 72 1.5449878373123589e+00 2.4590982230198031e+00 -3.1390852730039280e+00 + 73 -4.6045449943310741e+00 -3.9440808098823101e+00 -4.6700755874078279e+00 + 74 3.7147697382419370e-01 -4.8285079070941711e-01 -3.6890671668077526e+00 + 75 3.8716570366709511e+00 -7.4579362411464762e+00 2.6984541425925879e+00 + 76 -5.6224994178131347e+00 -6.2110127059235003e+00 -6.7476211894063756e+00 + 77 3.1500132936973770e-02 7.0601764306126320e+00 -2.0944606590553616e+00 + 78 -2.3637150235790321e+00 5.8159045954962370e+00 9.2704917537072240e-01 + 79 -2.6728293943632591e+00 7.5552531622542647e+00 -4.8983926692928126e+00 + 80 2.6753525054677341e+00 -5.0623527488428222e-01 7.8939421082827224e+00 + 81 5.6999696634920971e+00 4.7279269674034552e+00 -4.4920700577051331e+00 + 82 -4.9787999902374329e+00 4.0981651408694910e+00 3.2088541364653573e+00 + 83 -1.6213391901712770e+00 -4.2635561713516665e+00 -9.7236351460331327e-01 + 84 -5.1758925760643839e+00 5.9036888087723627e+00 5.9897804863834434e+00 + 85 4.2475360018694719e-01 -1.5120403153751587e+00 -7.5118946585359421e+00 + 86 -8.4723991427859175e+00 5.8591586936796514e+00 -5.7220550448277363e+00 + 87 3.4936529015452691e+00 5.3887932178421707e+00 1.6618586990387330e+00 + 88 1.8397684085287699e-01 -4.7956123656855953e-01 -2.0248730631499217e+00 + 89 1.2740119839669910e+00 -1.9562152526426526e+00 4.6010648854406986e+00 + 90 -8.1088651153479241e-01 9.4981098330251235e-01 1.5857688839887580e+00 + 91 2.9237941762953805e+00 -2.0287483220569071e+00 2.7576412015032403e+00 + 92 -1.9423484320868498e+00 7.6700165963418865e-01 9.7032907448379326e+00 + 93 -3.0301266998673446e+00 3.3988629573493712e+00 -6.0790525480058024e+00 + 94 -1.9710732697574938e+00 2.6918587726714907e+00 -1.5068617145526619e+00 + 95 2.8596379254928421e+00 6.6388605559367853e-01 1.0001582081953513e+00 + 96 -1.2599066151315779e+00 -1.6716649508562664e+00 1.4607750060248836e+00 + 97 5.2650618358415588e+00 -6.0531728072803253e+00 6.8677797616117182e+00 + 98 2.8452772301515288e+00 5.6278916247943900e-01 -4.0654825176947940e-01 + 99 2.7601000342468502e+00 -5.8880962871766549e+00 2.6779862817975988e+00 + 100 -1.9151887508492124e-01 -2.6038253331120451e+00 -1.5631763792033387e-01 + 101 -5.4308678357699431e+00 3.1890361709539978e+00 -2.4512813444078665e+00 + 102 -4.8831911953855472e-01 -2.0911382434426278e+00 1.0263989663650606e+00 + 103 2.9583081381555676e-01 1.3064497582436023e+00 1.7854366483768360e+00 + 104 6.5759007584467266e+00 -3.2841132464413563e+00 -2.5014634020294988e+00 + 105 -7.4523257690308686e-01 -3.7773029542989343e+00 -3.6767020418418211e-01 + 106 -6.1312327154342698e+00 -1.5912197837132944e+00 -1.1855962370567052e-01 + 107 -7.1437588001479924e-02 -9.3031888107186997e+00 5.2754511162503914e-01 + 108 5.4932170480545004e+00 -3.9860368619527651e+00 1.7314892119390373e+00 + 109 -1.9946430535013113e+00 1.3671229931632198e+00 -4.6232127582615803e+00 + 110 -6.8496202690018182e-01 -2.7270551316212486e+00 7.9433814991520961e+00 + 111 3.2988872027002292e+00 2.5435438106820754e+00 6.4538031712204766e+00 + 112 2.9832582841622455e+00 1.1528571177956000e+00 -1.1771929693340835e+00 + 113 -6.0727927862320499e+00 -5.9562388562177873e+00 -6.5628478152085226e+00 + 114 -4.0304268005425925e+00 2.1299026394284701e+00 2.7736841705602981e+00 + 115 -2.3362097823934018e+00 3.2446508481241585e+00 6.0973333873913882e+00 + 116 6.6121228820667737e+00 -4.7286493145041346e+00 7.0211430066608598e+00 + 117 3.4705860716774479e+00 4.1400084168419946e+00 2.5096243926436532e+00 + 118 4.2357967515728706e-01 9.2785557547274511e-01 2.5722948535958162e-01 + 119 6.9092597174732118e-01 -4.3884673023252416e+00 -4.6957721500748546e+00 + 120 -1.6865429201680509e+00 3.5369692022564783e+00 -1.8052965931311662e+00 + 121 4.3961939657668664e-01 -2.8887423850093121e+00 -5.7296796525048810e-01 + 122 3.7570134025583277e+00 5.5027352242581618e-01 1.0958464933342473e+00 + 123 4.8450622687031748e+00 8.7301037576130136e-01 -2.9627442358410718e+00 + 124 -3.0352399103261227e+00 -5.5756624285612313e+00 -3.9845128251408641e+00 + 125 -1.4986666784757363e+00 3.0715079180009353e+00 -1.9202063976752926e+00 + 126 -3.4612601703739747e+00 5.2654166486564176e+00 -2.8054760695983476e+00 + 127 9.0463322673909925e+00 -1.4402000114088049e+00 -3.3926224071546933e+00 + 128 5.8257019271111385e+00 5.7499622015090441e+00 6.1760642521047737e+00 + 129 1.4101084499624534e+00 1.7371804088545049e+00 -1.6213174412210309e+00 + 130 -5.8399142482199737e+00 -1.1232412828535170e+00 -1.1499478454746650e+00 + 131 8.7634281400135128e-01 3.3470924205892754e+00 -8.1366156642164844e-01 + 132 1.6618348954343223e+00 1.3267230795340734e+00 -4.9613186302807142e+00 + 133 -9.5068329765370629e-01 -5.8237800850819088e+00 6.4731385586130863e-01 + 134 -4.5001292021624067e-01 4.9457441409188281e+00 1.9456461634790669e+00 + 135 -4.3052102443919820e+00 -4.5636488830760884e+00 1.5724677428330815e+00 + 136 1.5449878373122401e+00 2.4590982230198803e+00 -3.1390852730039502e+00 + 137 -4.6045449943310786e+00 -3.9440808098823172e+00 -4.6700755874078350e+00 + 138 3.7147697382417788e-01 -4.8285079070949538e-01 -3.6890671668077770e+00 + 139 3.8716570366709662e+00 -7.4579362411464789e+00 2.6984541425926039e+00 + 140 -5.6224994178131524e+00 -6.2110127059234923e+00 -6.7476211894063933e+00 + 141 3.1500132936956658e-02 7.0601764306126444e+00 -2.0944606590553514e+00 + 142 -2.3637150235790285e+00 5.8159045954963942e+00 9.2704917537068410e-01 + 143 -2.6728293943632346e+00 7.5552531622542176e+00 -4.8983926692927744e+00 + 144 2.6753525054676777e+00 -5.0623527488432618e-01 7.8939421082828236e+00 + 145 5.6999696634920909e+00 4.7279269674034268e+00 -4.4920700577051145e+00 + 146 -4.9787999902374720e+00 4.0981651408695159e+00 3.2088541364653769e+00 + 147 -1.6213391901711944e+00 -4.2635561713517127e+00 -9.7236351460331005e-01 + 148 -5.1758925760643901e+00 5.9036888087723742e+00 5.9897804863834399e+00 + 149 4.2475360018696456e-01 -1.5120403153751769e+00 -7.5118946585359945e+00 + 150 -8.4723991427858021e+00 5.8591586936796105e+00 -5.7220550448276448e+00 + 151 3.4936529015452695e+00 5.3887932178421245e+00 1.6618586990386814e+00 + 152 1.8397684085289256e-01 -4.7956123656857275e-01 -2.0248730631499354e+00 + 153 1.2740119839669732e+00 -1.9562152526426315e+00 4.6010648854407039e+00 + 154 -8.1088651153479885e-01 9.4981098330247371e-01 1.5857688839887165e+00 + 155 2.9237941762953730e+00 -2.0287483220569480e+00 2.7576412015032266e+00 + 156 -1.9423484320867530e+00 7.6700165963413269e-01 9.7032907448379966e+00 + 157 -3.0301266998673473e+00 3.3988629573493685e+00 -6.0790525480057864e+00 + 158 -1.9710732697574673e+00 2.6918587726715124e+00 -1.5068617145526344e+00 + 159 2.8596379254928128e+00 6.6388605559371483e-01 1.0001582081953824e+00 + 160 -1.2599066151316147e+00 -1.6716649508563088e+00 1.4607750060249303e+00 + 161 5.2650618358415553e+00 -6.0531728072803341e+00 6.8677797616117280e+00 + 162 2.8452772301515159e+00 5.6278916247941968e-01 -4.0654825176945431e-01 + 163 2.7601000342468334e+00 -5.8880962871766469e+00 2.6779862817975615e+00 + 164 -1.9151887508495447e-01 -2.6038253331119967e+00 -1.5631763792036044e-01 + 165 -5.4308678357699263e+00 3.1890361709539787e+00 -2.4512813444078483e+00 + 166 -4.8831911953854296e-01 -2.0911382434426180e+00 1.0263989663650475e+00 + 167 2.9583081381557141e-01 1.3064497582436205e+00 1.7854366483768458e+00 + 168 6.5759007584467666e+00 -3.2841132464414158e+00 -2.5014634020295765e+00 + 169 -7.4523257690304012e-01 -3.7773029542989214e+00 -3.6767020418412721e-01 + 170 -6.1312327154342663e+00 -1.5912197837133537e+00 -1.1855962370571882e-01 + 171 -7.1437588001445965e-02 -9.3031888107187068e+00 5.2754511162511697e-01 + 172 5.4932170480545635e+00 -3.9860368619528423e+00 1.7314892119390801e+00 + 173 -1.9946430535013948e+00 1.3671229931632465e+00 -4.6232127582616149e+00 + 174 -6.8496202690001984e-01 -2.7270551316211127e+00 7.9433814991520046e+00 + 175 3.2988872027002070e+00 2.5435438106820452e+00 6.4538031712204509e+00 + 176 2.9832582841622548e+00 1.1528571177956544e+00 -1.1771929693340815e+00 + 177 -6.0727927862320792e+00 -5.9562388562178219e+00 -6.5628478152085759e+00 + 178 -4.0304268005425792e+00 2.1299026394284679e+00 2.7736841705602893e+00 + 179 -2.3362097823934898e+00 3.2446508481242033e+00 6.0973333873914299e+00 + 180 6.6121228820666635e+00 -4.7286493145040209e+00 7.0211430066607718e+00 + 181 3.4705860716775057e+00 4.1400084168420239e+00 2.5096243926437127e+00 + 182 4.2357967515729050e-01 9.2785557547273534e-01 2.5722948535958101e-01 + 183 6.9092597174730619e-01 -4.3884673023252452e+00 -4.6957721500748217e+00 + 184 -1.6865429201680540e+00 3.5369692022564840e+00 -1.8052965931311715e+00 + 185 4.3961939657667709e-01 -2.8887423850093583e+00 -5.7296796525051796e-01 + 186 3.7570134025583464e+00 5.5027352242581329e-01 1.0958464933342382e+00 + 187 4.8450622687029874e+00 8.7301037576109541e-01 -2.9627442358409946e+00 + 188 -3.0352399103260255e+00 -5.5756624285611940e+00 -3.9845128251408686e+00 + 189 -1.4986666784757705e+00 3.0715079180009308e+00 -1.9202063976752652e+00 + 190 -3.4612601703740626e+00 5.2654166486565011e+00 -2.8054760695984231e+00 + 191 9.0463322673910387e+00 -1.4402000114087514e+00 -3.3926224071546280e+00 + 192 5.8257019271111021e+00 5.7499622015090095e+00 6.1760642521047258e+00 + 193 1.4101084499624608e+00 1.7371804088545164e+00 -1.6213174412210414e+00 + 194 -5.8399142482199755e+00 -1.1232412828535212e+00 -1.1499478454746739e+00 + 195 8.7634281400136826e-01 3.3470924205892794e+00 -8.1366156642166787e-01 + 196 1.6618348954342919e+00 1.3267230795340308e+00 -4.9613186302807337e+00 + 197 -9.5068329765370507e-01 -5.8237800850819008e+00 6.4731385586130585e-01 + 198 -4.5001292021626715e-01 4.9457441409188689e+00 1.9456461634790359e+00 + 199 -4.3052102443918923e+00 -4.5636488830760849e+00 1.5724677428330582e+00 + 200 1.5449878373123116e+00 2.4590982230198688e+00 -3.1390852730039280e+00 + 201 -4.6045449943310741e+00 -3.9440808098823092e+00 -4.6700755874078261e+00 + 202 3.7147697382411032e-01 -4.8285079070955383e-01 -3.6890671668077881e+00 + 203 3.8716570366709511e+00 -7.4579362411464674e+00 2.6984541425925892e+00 + 204 -5.6224994178132013e+00 -6.2110127059235545e+00 -6.7476211894064360e+00 + 205 3.1500132936960558e-02 7.0601764306126391e+00 -2.0944606590553407e+00 + 206 -2.3637150235789921e+00 5.8159045954964084e+00 9.2704917537071352e-01 + 207 -2.6728293943632542e+00 7.5552531622542540e+00 -4.8983926692928019e+00 + 208 2.6753525054677469e+00 -5.0623527488422482e-01 7.8939421082828281e+00 + 209 5.6999696634921291e+00 4.7279269674034738e+00 -4.4920700577051562e+00 + 210 -4.9787999902374684e+00 4.0981651408695106e+00 3.2088541364653715e+00 + 211 -1.6213391901712724e+00 -4.2635561713517145e+00 -9.7236351460333603e-01 + 212 -5.1758925760643830e+00 5.9036888087723653e+00 5.9897804863834381e+00 + 213 4.2475360018697278e-01 -1.5120403153751836e+00 -7.5118946585359749e+00 + 214 -8.4723991427858589e+00 5.8591586936796665e+00 -5.7220550448277150e+00 + 215 3.4936529015452913e+00 5.3887932178421645e+00 1.6618586990387143e+00 + 216 1.8397684085288563e-01 -4.7956123656856331e-01 -2.0248730631499283e+00 + 217 1.2740119839669883e+00 -1.9562152526426537e+00 4.6010648854406986e+00 + 218 -8.1088651153480396e-01 9.4981098330248848e-01 1.5857688839887434e+00 + 219 2.9237941762953339e+00 -2.0287483220569635e+00 2.7576412015032186e+00 + 220 -1.9423484320867117e+00 7.6700165963408562e-01 9.7032907448379540e+00 + 221 -3.0301266998673344e+00 3.3988629573493538e+00 -6.0790525480057900e+00 + 222 -1.9710732697574636e+00 2.6918587726714938e+00 -1.5068617145526289e+00 + 223 2.8596379254928648e+00 6.6388605559370273e-01 1.0001582081953790e+00 + 224 -1.2599066151316045e+00 -1.6716649508562935e+00 1.4607750060249154e+00 + 225 5.2650618358415464e+00 -6.0531728072803164e+00 6.8677797616117031e+00 + 226 2.8452772301515386e+00 5.6278916247941591e-01 -4.0654825176945270e-01 + 227 2.7601000342468498e+00 -5.8880962871766611e+00 2.6779862817975961e+00 + 228 -1.9151887508490981e-01 -2.6038253331119856e+00 -1.5631763792030609e-01 + 229 -5.4308678357699511e+00 3.1890361709539934e+00 -2.4512813444078612e+00 + 230 -4.8831911953854984e-01 -2.0911382434426251e+00 1.0263989663650557e+00 + 231 2.9583081381556320e-01 1.3064497582436116e+00 1.7854366483768354e+00 + 232 6.5759007584467382e+00 -3.2841132464414193e+00 -2.5014634020295694e+00 + 233 -7.4523257690308631e-01 -3.7773029542989258e+00 -3.6767020418418467e-01 + 234 -6.1312327154342894e+00 -1.5912197837133386e+00 -1.1855962370570818e-01 + 235 -7.1437588001492872e-02 -9.3031888107186891e+00 5.2754511162502227e-01 + 236 5.4932170480545430e+00 -3.9860368619528441e+00 1.7314892119390803e+00 + 237 -1.9946430535013142e+00 1.3671229931632154e+00 -4.6232127582615608e+00 + 238 -6.8496202690009744e-01 -2.7270551316211820e+00 7.9433814991520935e+00 + 239 3.2988872027002363e+00 2.5435438106820789e+00 6.4538031712204704e+00 + 240 2.9832582841622362e+00 1.1528571177956641e+00 -1.1771929693340462e+00 + 241 -6.0727927862320854e+00 -5.9562388562178352e+00 -6.5628478152085883e+00 + 242 -4.0304268005425721e+00 2.1299026394284692e+00 2.7736841705602875e+00 + 243 -2.3362097823934374e+00 3.2446508481241776e+00 6.0973333873914353e+00 + 244 6.6121228820667399e+00 -4.7286493145040733e+00 7.0211430066608385e+00 + 245 3.4705860716774652e+00 4.1400084168420435e+00 2.5096243926437278e+00 + 246 4.2357967515728162e-01 9.2785557547273401e-01 2.5722948535957330e-01 + 247 6.9092597174729831e-01 -4.3884673023252470e+00 -4.6957721500748297e+00 + 248 -1.6865429201680422e+00 3.5369692022564601e+00 -1.8052965931311555e+00 + 249 4.3961939657668897e-01 -2.8887423850093570e+00 -5.7296796525051763e-01 + 250 3.7570134025583206e+00 5.5027352242584893e-01 1.0958464933342245e+00 + 251 4.8450622687031517e+00 8.7301037576121032e-01 -2.9627442358410292e+00 + 252 -3.0352399103261058e+00 -5.5756624285611966e+00 -3.9845128251408668e+00 + 253 -1.4986666784757416e+00 3.0715079180009628e+00 -1.9202063976753083e+00 + 254 -3.4612601703740657e+00 5.2654166486565055e+00 -2.8054760695984311e+00 + 255 9.0463322673909605e+00 -1.4402000114087883e+00 -3.3926224071546374e+00 + 256 5.8257019271111172e+00 5.7499622015090237e+00 6.1760642521047506e+00 + 257 1.4101084499624821e+00 1.7371804088545320e+00 -1.6213174412210622e+00 + 258 -5.8399142482199720e+00 -1.1232412828535363e+00 -1.1499478454746668e+00 + 259 8.7634281400131031e-01 3.3470924205892638e+00 -8.1366156642160625e-01 + 260 1.6618348954343440e+00 1.3267230795340927e+00 -4.9613186302806929e+00 + 261 -9.5068329765371196e-01 -5.8237800850819008e+00 6.4731385586131096e-01 + 262 -4.5001292021624006e-01 4.9457441409188165e+00 1.9456461634790361e+00 + 263 -4.3052102443920655e+00 -4.5636488830761079e+00 1.5724677428331033e+00 + 264 1.5449878373123045e+00 2.4590982230197711e+00 -3.1390852730039596e+00 + 265 -4.6045449943310590e+00 -3.9440808098822986e+00 -4.6700755874078190e+00 + 266 3.7147697382421191e-01 -4.8285079070938253e-01 -3.6890671668078272e+00 + 267 3.8716570366710106e+00 -7.4579362411464922e+00 2.6984541425926230e+00 + 268 -5.6224994178131089e+00 -6.2110127059234665e+00 -6.7476211894063454e+00 + 269 3.1500132936923747e-02 7.0601764306126489e+00 -2.0944606590553865e+00 + 270 -2.3637150235789854e+00 5.8159045954962343e+00 9.2704917537076525e-01 + 271 -2.6728293943632391e+00 7.5552531622541936e+00 -4.8983926692927895e+00 + 272 2.6753525054677070e+00 -5.0623527488435160e-01 7.8939421082827304e+00 + 273 5.6999696634920456e+00 4.7279269674033984e+00 -4.4920700577050825e+00 + 274 -4.9787999902374587e+00 4.0981651408695194e+00 3.2088541364653747e+00 + 275 -1.6213391901711784e+00 -4.2635561713516665e+00 -9.7236351460323123e-01 + 276 -5.1758925760643768e+00 5.9036888087723671e+00 5.9897804863834461e+00 + 277 4.2475360018693203e-01 -1.5120403153751611e+00 -7.5118946585359998e+00 + 278 -8.4723991427858163e+00 5.8591586936795723e+00 -5.7220550448276324e+00 + 279 3.4936529015452158e+00 5.3887932178421147e+00 1.6618586990386937e+00 + 280 1.8397684085290614e-01 -4.7956123656858746e-01 -2.0248730631499305e+00 + 281 1.2740119839669295e+00 -1.9562152526425904e+00 4.6010648854406897e+00 + 282 -8.1088651153478086e-01 9.4981098330250702e-01 1.5857688839887112e+00 + 283 2.9237941762954396e+00 -2.0287483220568601e+00 2.7576412015032639e+00 + 284 -1.9423484320868234e+00 7.6700165963416189e-01 9.7032907448380499e+00 + 285 -3.0301266998673673e+00 3.3988629573493960e+00 -6.0790525480057918e+00 + 286 -1.9710732697575224e+00 2.6918587726715231e+00 -1.5068617145526926e+00 + 287 2.8596379254927800e+00 6.6388605559365599e-01 1.0001582081953235e+00 + 288 -1.2599066151315834e+00 -1.6716649508562769e+00 1.4607750060248932e+00 + 289 5.2650618358415393e+00 -6.0531728072803137e+00 6.8677797616117173e+00 + 290 2.8452772301515066e+00 5.6278916247943045e-01 -4.0654825176946702e-01 + 291 2.7601000342468001e+00 -5.8880962871766300e+00 2.6779862817975353e+00 + 292 -1.9151887508495458e-01 -2.6038253331120433e+00 -1.5631763792035228e-01 + 293 -5.4308678357698943e+00 3.1890361709539579e+00 -2.4512813444078385e+00 + 294 -4.8831911953853374e-01 -2.0911382434426065e+00 1.0263989663650335e+00 + 295 2.9583081381557258e-01 1.3064497582436179e+00 1.7854366483768653e+00 + 296 6.5759007584467710e+00 -3.2841132464413874e+00 -2.5014634020295454e+00 + 297 -7.4523257690301581e-01 -3.7773029542989440e+00 -3.6767020418409979e-01 + 298 -6.1312327154342841e+00 -1.5912197837134179e+00 -1.1855962370576735e-01 + 299 -7.1437588001370414e-02 -9.3031888107186909e+00 5.2754511162517459e-01 + 300 5.4932170480544942e+00 -3.9860368619527264e+00 1.7314892119389909e+00 + 301 -1.9946430535014457e+00 1.3671229931632713e+00 -4.6232127582616096e+00 + 302 -6.8496202690010877e-01 -2.7270551316211198e+00 7.9433814991521130e+00 + 303 3.2988872027001550e+00 2.5435438106820074e+00 6.4538031712204074e+00 + 304 2.9832582841622832e+00 1.1528571177955860e+00 -1.1771929693341221e+00 + 305 -6.0727927862320188e+00 -5.9562388562177242e+00 -6.5628478152084666e+00 + 306 -4.0304268005425739e+00 2.1299026394283915e+00 2.7736841705602342e+00 + 307 -2.3362097823934587e+00 3.2446508481241976e+00 6.0973333873914486e+00 + 308 6.6121228820666698e+00 -4.7286493145040485e+00 7.0211430066607754e+00 + 309 3.4705860716773902e+00 4.1400084168419946e+00 2.5096243926436350e+00 + 310 4.2357967515730982e-01 9.2785557547277886e-01 2.5722948535960299e-01 + 311 6.9092597174732806e-01 -4.3884673023252336e+00 -4.6957721500748990e+00 + 312 -1.6865429201680846e+00 3.5369692022565031e+00 -1.8052965931312008e+00 + 313 4.3961939657667753e-01 -2.8887423850093206e+00 -5.7296796525047766e-01 + 314 3.7570134025583668e+00 5.5027352242574279e-01 1.0958464933342584e+00 + 315 4.8450622687030931e+00 8.7301037576128449e-01 -2.9627442358410239e+00 + 316 -3.0352399103260499e+00 -5.5756624285612588e+00 -3.9845128251408717e+00 + 317 -1.4986666784757807e+00 3.0715079180009188e+00 -1.9202063976752237e+00 + 318 -3.4612601703738872e+00 5.2654166486563296e+00 -2.8054760695982797e+00 + 319 9.0463322673910156e+00 -1.4402000114088058e+00 -3.3926224071547022e+00 + 320 5.8257019271111492e+00 5.7499622015090619e+00 6.1760642521047746e+00 + 321 1.4101084499624930e+00 1.7371804088545482e+00 -1.6213174412210776e+00 + 322 -5.8399142482199764e+00 -1.1232412828535339e+00 -1.1499478454746686e+00 + 323 8.7634281400132608e-01 3.3470924205892665e+00 -8.1366156642162457e-01 + 324 1.6618348954343205e+00 1.3267230795340574e+00 -4.9613186302807080e+00 + 325 -9.5068329765370641e-01 -5.8237800850818982e+00 6.4731385586130263e-01 + 326 -4.5001292021627354e-01 4.9457441409188521e+00 1.9456461634790065e+00 + 327 -4.3052102443919802e+00 -4.5636488830761017e+00 1.5724677428330862e+00 + 328 1.5449878373123684e+00 2.4590982230197573e+00 -3.1390852730039471e+00 + 329 -4.6045449943310564e+00 -3.9440808098822910e+00 -4.6700755874078128e+00 + 330 3.7147697382415185e-01 -4.8285079070942744e-01 -3.6890671668078241e+00 + 331 3.8716570366710017e+00 -7.4579362411464851e+00 2.6984541425926141e+00 + 332 -5.6224994178131533e+00 -6.2110127059235163e+00 -6.7476211894063827e+00 + 333 3.1500132936925183e-02 7.0601764306126444e+00 -2.0944606590553865e+00 + 334 -2.3637150235789504e+00 5.8159045954962405e+00 9.2704917537079212e-01 + 335 -2.6728293943632542e+00 7.5552531622542229e+00 -4.8983926692928046e+00 + 336 2.6753525054677669e+00 -5.0623527488425835e-01 7.8939421082827224e+00 + 337 5.6999696634920856e+00 4.7279269674034463e+00 -4.4920700577051269e+00 + 338 -4.9787999902374551e+00 4.0981651408695221e+00 3.2088541364653778e+00 + 339 -1.6213391901712344e+00 -4.2635561713516585e+00 -9.7236351460324666e-01 + 340 -5.1758925760643697e+00 5.9036888087723565e+00 5.9897804863834354e+00 + 341 4.2475360018693609e-01 -1.5120403153751667e+00 -7.5118946585359909e+00 + 342 -8.4723991427858785e+00 5.8591586936796265e+00 -5.7220550448277079e+00 + 343 3.4936529015452273e+00 5.3887932178421618e+00 1.6618586990387230e+00 + 344 1.8397684085289956e-01 -4.7956123656857780e-01 -2.0248730631499239e+00 + 345 1.2740119839669390e+00 -1.9562152526426062e+00 4.6010648854406764e+00 + 346 -8.1088651153478553e-01 9.4981098330252334e-01 1.5857688839887387e+00 + 347 2.9237941762953992e+00 -2.0287483220568805e+00 2.7576412015032563e+00 + 348 -1.9423484320867914e+00 7.6700165963412470e-01 9.7032907448380126e+00 + 349 -3.0301266998673508e+00 3.3988629573493823e+00 -6.0790525480057935e+00 + 350 -1.9710732697575186e+00 2.6918587726715040e+00 -1.5068617145526872e+00 + 351 2.8596379254928315e+00 6.6388605559364489e-01 1.0001582081953193e+00 + 352 -1.2599066151315763e+00 -1.6716649508562649e+00 1.4607750060248825e+00 + 353 5.2650618358415358e+00 -6.0531728072803039e+00 6.8677797616117013e+00 + 354 2.8452772301515208e+00 5.6278916247943167e-01 -4.0654825176947129e-01 + 355 2.7601000342468276e+00 -5.8880962871766460e+00 2.6779862817975841e+00 + 356 -1.9151887508491444e-01 -2.6038253331120340e+00 -1.5631763792030451e-01 + 357 -5.4308678357699245e+00 3.1890361709539801e+00 -2.4512813444078616e+00 + 358 -4.8831911953854307e-01 -2.0911382434426167e+00 1.0263989663650450e+00 + 359 2.9583081381555965e-01 1.3064497582436063e+00 1.7854366483768507e+00 + 360 6.5759007584467506e+00 -3.2841132464413922e+00 -2.5014634020295325e+00 + 361 -7.4523257690305722e-01 -3.7773029542989423e+00 -3.6767020418415286e-01 + 362 -6.1312327154343169e+00 -1.5912197837133930e+00 -1.1855962370575777e-01 + 363 -7.1437588001404595e-02 -9.3031888107186678e+00 5.2754511162509421e-01 + 364 5.4932170480544711e+00 -3.9860368619527211e+00 1.7314892119389858e+00 + 365 -1.9946430535013675e+00 1.3671229931632347e+00 -4.6232127582615679e+00 + 366 -6.8496202690018337e-01 -2.7270551316211873e+00 7.9433814991521965e+00 + 367 3.2988872027001723e+00 2.5435438106820345e+00 6.4538031712204189e+00 + 368 2.9832582841622557e+00 1.1528571177956033e+00 -1.1771929693340897e+00 + 369 -6.0727927862320215e+00 -5.9562388562177313e+00 -6.5628478152084746e+00 + 370 -4.0304268005425694e+00 2.1299026394283858e+00 2.7736841705602271e+00 + 371 -2.3362097823934023e+00 3.2446508481241731e+00 6.0973333873914468e+00 + 372 6.6121228820667550e+00 -4.7286493145041018e+00 7.0211430066608349e+00 + 373 3.4705860716773431e+00 4.1400084168420124e+00 2.5096243926436417e+00 + 374 4.2357967515730849e-01 9.2785557547278052e-01 2.5722948535960155e-01 + 375 6.9092597174731007e-01 -4.3884673023252097e+00 -4.6957721500749070e+00 + 376 -1.6865429201680713e+00 3.5369692022564734e+00 -1.8052965931311837e+00 + 377 4.3961939657668581e-01 -2.8887423850093219e+00 -5.7296796525047600e-01 + 378 3.7570134025583304e+00 5.5027352242577721e-01 1.0958464933342462e+00 + 379 4.8450622687032530e+00 8.7301037576138063e-01 -2.9627442358410687e+00 + 380 -3.0352399103261356e+00 -5.5756624285612642e+00 -3.9845128251408739e+00 + 381 -1.4986666784757519e+00 3.0715079180009477e+00 -1.9202063976752695e+00 + 382 -3.4612601703738868e+00 5.2654166486563332e+00 -2.8054760695982841e+00 + 383 9.0463322673909374e+00 -1.4402000114088291e+00 -3.3926224071546991e+00 + 384 5.8257019271111679e+00 5.7499622015090797e+00 6.1760642521048039e+00 + 385 1.4101084499624525e+00 1.7371804088545033e+00 -1.6213174412210296e+00 + 386 -5.8399142482199862e+00 -1.1232412828535530e+00 -1.1499478454746939e+00 + 387 8.7634281400133762e-01 3.3470924205892811e+00 -8.1366156642163467e-01 + 388 1.6618348954343189e+00 1.3267230795340708e+00 -4.9613186302806893e+00 + 389 -9.5068329765370574e-01 -5.8237800850818857e+00 6.4731385586130419e-01 + 390 -4.5001292021620803e-01 4.9457441409188609e+00 1.9456461634790638e+00 + 391 -4.3052102443920148e+00 -4.5636488830760928e+00 1.5724677428330669e+00 + 392 1.5449878373122630e+00 2.4590982230198328e+00 -3.1390852730039636e+00 + 393 -4.6045449943310599e+00 -3.9440808098822973e+00 -4.6700755874078190e+00 + 394 3.7147697382413564e-01 -4.8285079070951542e-01 -3.6890671668078552e+00 + 395 3.8716570366710150e+00 -7.4579362411464905e+00 2.6984541425926283e+00 + 396 -5.6224994178131684e+00 -6.2110127059235083e+00 -6.7476211894064004e+00 + 397 3.1500132936903361e-02 7.0601764306126622e+00 -2.0944606590553727e+00 + 398 -2.3637150235789628e+00 5.8159045954964084e+00 9.2704917537075482e-01 + 399 -2.6728293943632360e+00 7.5552531622541848e+00 -4.8983926692927824e+00 + 400 2.6753525054677088e+00 -5.0623527488430753e-01 7.8939421082828236e+00 + 401 5.6999696634920838e+00 4.7279269674034206e+00 -4.4920700577051109e+00 + 402 -4.9787999902374853e+00 4.0981651408695390e+00 3.2088541364653889e+00 + 403 -1.6213391901711742e+00 -4.2635561713517065e+00 -9.7236351460324078e-01 + 404 -5.1758925760643617e+00 5.9036888087723556e+00 5.9897804863834248e+00 + 405 4.2475360018695274e-01 -1.5120403153751805e+00 -7.5118946585360309e+00 + 406 -8.4723991427857683e+00 5.8591586936795927e+00 -5.7220550448276235e+00 + 407 3.4936529015452371e+00 5.3887932178421076e+00 1.6618586990386719e+00 + 408 1.8397684085291077e-01 -4.7956123656858829e-01 -2.0248730631499336e+00 + 409 1.2740119839669277e+00 -1.9562152526425909e+00 4.6010648854406906e+00 + 410 -8.1088651153479041e-01 9.4981098330248481e-01 1.5857688839886941e+00 + 411 2.9237941762953978e+00 -2.0287483220569191e+00 2.7576412015032483e+00 + 412 -1.9423484320866864e+00 7.6700165963406364e-01 9.7032907448380747e+00 + 413 -3.0301266998673588e+00 3.3988629573493836e+00 -6.0790525480057784e+00 + 414 -1.9710732697574922e+00 2.6918587726715275e+00 -1.5068617145526606e+00 + 415 2.8596379254928053e+00 6.6388605559367742e-01 1.0001582081953477e+00 + 416 -1.2599066151316127e+00 -1.6716649508563064e+00 1.4607750060249283e+00 + 417 5.2650618358415322e+00 -6.0531728072803128e+00 6.8677797616117084e+00 + 418 2.8452772301515101e+00 5.6278916247941135e-01 -4.0654825176944531e-01 + 419 2.7601000342468089e+00 -5.8880962871766425e+00 2.6779862817975424e+00 + 420 -1.9151887508494253e-01 -2.6038253331119847e+00 -1.5631763792032466e-01 + 421 -5.4308678357699103e+00 3.1890361709539627e+00 -2.4512813444078398e+00 + 422 -4.8831911953852797e-01 -2.0911382434426020e+00 1.0263989663650284e+00 + 423 2.9583081381557613e-01 1.3064497582436265e+00 1.7854366483768651e+00 + 424 6.5759007584467728e+00 -3.2841132464414398e+00 -2.5014634020296111e+00 + 425 -7.4523257690300748e-01 -3.7773029542989298e+00 -3.6767020418409530e-01 + 426 -6.1312327154343080e+00 -1.5912197837134572e+00 -1.1855962370580690e-01 + 427 -7.1437588001371552e-02 -9.3031888107186891e+00 5.2754511162517204e-01 + 428 5.4932170480545333e+00 -3.9860368619528117e+00 1.7314892119390457e+00 + 429 -1.9946430535014565e+00 1.3671229931632738e+00 -4.6232127582616211e+00 + 430 -6.8496202690002050e-01 -2.7270551316210470e+00 7.9433814991521041e+00 + 431 3.2988872027001621e+00 2.5435438106820136e+00 6.4538031712204020e+00 + 432 2.9832582841622699e+00 1.1528571177956566e+00 -1.1771929693340877e+00 + 433 -6.0727927862320508e+00 -5.9562388562177730e+00 -6.5628478152085341e+00 + 434 -4.0304268005425508e+00 2.1299026394283942e+00 2.7736841705602284e+00 + 435 -2.3362097823934858e+00 3.2446508481242029e+00 6.0973333873914832e+00 + 436 6.6121228820666458e+00 -4.7286493145039872e+00 7.0211430066607585e+00 + 437 3.4705860716774093e+00 4.1400084168420399e+00 2.5096243926437141e+00 + 438 4.2357967515730749e-01 9.2785557547275888e-01 2.5722948535959472e-01 + 439 6.9092597174730430e-01 -4.3884673023252345e+00 -4.6957721500748741e+00 + 440 -1.6865429201680737e+00 3.5369692022564805e+00 -1.8052965931311884e+00 + 441 4.3961939657667570e-01 -2.8887423850093761e+00 -5.7296796525051241e-01 + 442 3.7570134025583579e+00 5.5027352242577710e-01 1.0958464933342291e+00 + 443 4.8450622687030620e+00 8.7301037576117979e-01 -2.9627442358409883e+00 + 444 -3.0352399103260317e+00 -5.5756624285612162e+00 -3.9845128251408619e+00 + 445 -1.4986666784757814e+00 3.0715079180009548e+00 -1.9202063976752319e+00 + 446 -3.4612601703739747e+00 5.2654166486564131e+00 -2.8054760695983596e+00 + 447 9.0463322673909907e+00 -1.4402000114087794e+00 -3.3926224071546360e+00 + 448 5.8257019271111217e+00 5.7499622015090361e+00 6.1760642521047426e+00 + 449 1.4101084499624597e+00 1.7371804088545151e+00 -1.6213174412210403e+00 + 450 -5.8399142482199826e+00 -1.1232412828535623e+00 -1.1499478454747027e+00 + 451 8.7634281400135128e-01 3.3470924205892825e+00 -8.1366156642165033e-01 + 452 1.6618348954342974e+00 1.3267230795340375e+00 -4.9613186302807062e+00 + 453 -9.5068329765371173e-01 -5.8237800850818742e+00 6.4731385586130530e-01 + 454 -4.5001292021623840e-01 4.9457441409188965e+00 1.9456461634790305e+00 + 455 -4.3052102443919233e+00 -4.5636488830760875e+00 1.5724677428330425e+00 + 456 1.5449878373123287e+00 2.4590982230198164e+00 -3.1390852730039471e+00 + 457 -4.6045449943310555e+00 -3.9440808098822906e+00 -4.6700755874078110e+00 + 458 3.7147697382405820e-01 -4.8285079070957626e-01 -3.6890671668078694e+00 + 459 3.8716570366710061e+00 -7.4579362411464825e+00 2.6984541425926185e+00 + 460 -5.6224994178132075e+00 -6.2110127059235563e+00 -6.7476211894064324e+00 + 461 3.1500132936904394e-02 7.0601764306126551e+00 -2.0944606590553683e+00 + 462 -2.3637150235788997e+00 5.8159045954964208e+00 9.2704917537079956e-01 + 463 -2.6728293943632488e+00 7.5552531622542132e+00 -4.8983926692927993e+00 + 464 2.6753525054677629e+00 -5.0623527488421971e-01 7.8939421082828227e+00 + 465 5.6999696634921175e+00 4.7279269674034632e+00 -4.4920700577051491e+00 + 466 -4.9787999902374853e+00 4.0981651408695390e+00 3.2088541364653929e+00 + 467 -1.6213391901712317e+00 -4.2635561713516923e+00 -9.7236351460325832e-01 + 468 -5.1758925760643590e+00 5.9036888087723547e+00 5.9897804863834283e+00 + 469 4.2475360018695851e-01 -1.5120403153751887e+00 -7.5118946585360202e+00 + 470 -8.4723991427858198e+00 5.8591586936796345e+00 -5.7220550448276848e+00 + 471 3.4936529015452535e+00 5.3887932178421414e+00 1.6618586990386996e+00 + 472 1.8397684085290258e-01 -4.7956123656857802e-01 -2.0248730631499252e+00 + 473 1.2740119839669375e+00 -1.9562152526426058e+00 4.6010648854406782e+00 + 474 -8.1088651153479008e-01 9.4981098330248936e-01 1.5857688839887156e+00 + 475 2.9237941762953636e+00 -2.0287483220569400e+00 2.7576412015032501e+00 + 476 -1.9423484320866595e+00 7.6700165963402811e-01 9.7032907448380463e+00 + 477 -3.0301266998673562e+00 3.3988629573493827e+00 -6.0790525480057811e+00 + 478 -1.9710732697574942e+00 2.6918587726715151e+00 -1.5068617145526599e+00 + 479 2.8596379254928510e+00 6.6388605559366176e-01 1.0001582081953388e+00 + 480 -1.2599066151316027e+00 -1.6716649508562909e+00 1.4607750060249132e+00 + 481 5.2650618358415304e+00 -6.0531728072803013e+00 6.8677797616116942e+00 + 482 2.8452772301515323e+00 5.6278916247940747e-01 -4.0654825176944437e-01 + 483 2.7601000342468427e+00 -5.8880962871766620e+00 2.6779862817975988e+00 + 484 -1.9151887508489973e-01 -2.6038253331119732e+00 -1.5631763792027364e-01 + 485 -5.4308678357699458e+00 3.1890361709539921e+00 -2.4512813444078692e+00 + 486 -4.8831911953853724e-01 -2.0911382434426127e+00 1.0263989663650404e+00 + 487 2.9583081381556153e-01 1.3064497582436110e+00 1.7854366483768467e+00 + 488 6.5759007584467559e+00 -3.2841132464414446e+00 -2.5014634020295974e+00 + 489 -7.4523257690305023e-01 -3.7773029542989289e+00 -3.6767020418414947e-01 + 490 -6.1312327154343400e+00 -1.5912197837134316e+00 -1.1855962370579468e-01 + 491 -7.1437588001410285e-02 -9.3031888107186607e+00 5.2754511162508533e-01 + 492 5.4932170480545075e+00 -3.9860368619527939e+00 1.7314892119390288e+00 + 493 -1.9946430535013788e+00 1.3671229931632261e+00 -4.6232127582615652e+00 + 494 -6.8496202690009644e-01 -2.7270551316211180e+00 7.9433814991521929e+00 + 495 3.2988872027001812e+00 2.5435438106820385e+00 6.4538031712204118e+00 + 496 2.9832582841622437e+00 1.1528571177956686e+00 -1.1771929693340504e+00 + 497 -6.0727927862320561e+00 -5.9562388562177819e+00 -6.5628478152085421e+00 + 498 -4.0304268005425445e+00 2.1299026394283875e+00 2.7736841705602195e+00 + 499 -2.3362097823934316e+00 3.2446508481241807e+00 6.0973333873914815e+00 + 500 6.6121228820667195e+00 -4.7286493145040280e+00 7.0211430066608118e+00 + 501 3.4705860716773675e+00 4.1400084168420586e+00 2.5096243926437238e+00 + 502 4.2357967515730505e-01 9.2785557547276187e-01 2.5722948535959261e-01 + 503 6.9092597174729276e-01 -4.3884673023252168e+00 -4.6957721500748875e+00 + 504 -1.6865429201680671e+00 3.5369692022564592e+00 -1.8052965931311771e+00 + 505 4.3961939657668192e-01 -2.8887423850093774e+00 -5.7296796525051119e-01 + 506 3.7570134025583219e+00 5.5027352242580696e-01 1.0958464933342265e+00 + 507 4.8450622687032290e+00 8.7301037576129070e-01 -2.9627442358410261e+00 + 508 -3.0352399103261072e+00 -5.5756624285612277e+00 -3.9845128251408530e+00 + 509 -1.4986666784757479e+00 3.0715079180009810e+00 -1.9202063976752817e+00 + 510 -3.4612601703739792e+00 5.2654166486564211e+00 -2.8054760695983689e+00 + 511 9.0463322673909019e+00 -1.4402000114088067e+00 -3.3926224071546316e+00 + 512 5.8257019271111394e+00 5.7499622015090530e+00 6.1760642521047702e+00 ... diff --git a/unittest/force-styles/tests/manybody-pair-bop_save.yaml b/unittest/force-styles/tests/manybody-pair-bop_save.yaml index 77388eb6d6..a409cc6a18 100644 --- a/unittest/force-styles/tests/manybody-pair-bop_save.yaml +++ b/unittest/force-styles/tests/manybody-pair-bop_save.yaml @@ -1,7 +1,7 @@ --- -lammps_version: 8 Apr 2021 +lammps_version: 4 May 2022 tags: slow, unstable -date_generated: Wed May 5 11:50:24 2021 +date_generated: Fri May 27 17:36:37 2022 epsilon: 2e-11 prerequisites: ! | pair bop @@ -535,521 +535,521 @@ init_forces: ! |2 510 -2.2749371215520973e+00 3.3600739184147281e+00 -2.2482793489540440e+00 511 5.5276560306465985e+00 -1.7222471161905775e+00 -2.0146673282516816e+00 512 4.5674510924053244e+00 4.8005511894034880e+00 3.9347170870249073e+00 -run_vdwl: -1148.282038612608 +run_vdwl: -1148.085978939542 run_coul: 0 run_stress: ! |2- - 4.0607716458773768e+02 4.1990275279117287e+02 4.3189008174024184e+02 -1.5062607937984635e+02 2.6526098686927287e+02 9.4584979764475761e+01 + 4.0653370543801509e+02 4.2033870846285419e+02 4.3236415621179896e+02 -1.5065757455794261e+02 2.6546325857473971e+02 9.4558303537896379e+01 run_forces: ! |2 - 1 2.2069706541796388e-01 6.8504065097219424e-01 -4.7003026743895970e-01 - 2 -4.0115936231307527e+00 -2.1218205387046813e+00 -9.9827955102434096e-01 - 3 2.9684129910662155e-01 3.7262517916028939e+00 -1.0816521062552547e+00 - 4 8.1382993930066636e-02 -3.5573677522989434e-02 -3.5151985944756716e+00 - 5 -6.2695071956387849e-01 -2.7259542642215560e+00 9.9501440284676745e-01 - 6 -2.9721298245652095e-01 3.9092099179600144e+00 1.7771226768578408e+00 - 7 -2.1393366306894119e+00 -2.8262788823503495e+00 2.4444601376032611e+00 - 8 1.2252752627543042e+00 1.8934056804257413e+00 -3.0563193598572838e+00 - 9 -3.4352637419435315e+00 -3.0718102718512688e+00 -2.8741859913748353e+00 - 10 3.2090680356600215e-01 -2.0401852703167229e+00 -2.4805669123527418e+00 - 11 2.3972135113483128e+00 -5.4019275833386891e+00 2.9765689120499652e+00 - 12 -4.3059430208316893e+00 -5.2598510825764047e+00 -5.2457319921326535e+00 - 13 -2.0232603864831392e-01 4.6375969951188543e+00 -1.5156362503136191e+00 - 14 -1.8428907820177531e+00 4.1515760568266957e+00 7.9422558196288362e-01 - 15 -3.3872595206479295e-01 4.9031092798381115e+00 -2.6117752561706911e+00 - 16 2.1162867716623701e+00 -4.0907630320480304e-01 4.5499311914742053e+00 - 17 4.4932801950135799e+00 3.4906677225423097e+00 -2.2635575912914447e+00 - 18 -3.5499768941512801e+00 1.1000156547358544e+00 2.2836994301124411e+00 - 19 -1.0451125955757885e+00 -2.9706240853885748e+00 -3.1507881990096265e-01 - 20 -3.3291212370733847e+00 3.2398148659892456e+00 4.6554951367993462e+00 - 21 -1.6602702919265779e+00 -5.0302444299485305e-01 -4.3331670906647055e+00 - 22 -5.1739012326876637e+00 3.7621044694833210e+00 -3.8694108983864686e+00 - 23 2.5800462945673135e+00 3.9113827058424171e+00 1.0058282701256815e+00 - 24 1.2186619874794036e+00 1.2903429720366235e+00 -2.1812056654218557e+00 - 25 5.1708533972776105e-01 -2.2724925528178241e-01 4.0361514608963143e+00 - 26 5.5528219623799939e-02 -6.3249115106540299e-01 1.1331478048837946e+00 - 27 2.3763801964792712e+00 -1.3568111553144141e-01 1.8305254882251978e+00 - 28 -7.4479731670624405e-01 6.2631724116235110e-01 7.0917585103702665e+00 - 29 -2.7946615351838360e+00 2.6497754369023019e+00 -4.9404756163540391e+00 - 30 -1.9276104520041739e+00 3.6726001318584696e+00 -1.8895215405747063e+00 - 31 2.7496645204151502e+00 1.1798091106750743e+00 1.0381378973286883e+00 - 32 2.8838885087720789e-01 -8.4153051128336498e-01 -4.5863881665538508e-01 - 33 2.4166757309749873e+00 -4.1769572659124101e+00 4.2709577151965359e+00 - 34 2.9163676292149239e+00 1.1371300137918047e-01 2.4075146002080905e-01 - 35 1.1198725269487722e+00 -4.1834197631714796e+00 2.7042173489858361e+00 - 36 -3.3387630324068235e-01 -2.8581757312520599e+00 -3.6169899983199721e-01 - 37 -4.0590700128584567e+00 1.4771680009302546e+00 -2.0374279165464233e+00 - 38 -1.3972038958445390e+00 -1.5892380209629904e+00 1.2229478783443002e+00 - 39 1.7222082871468380e+00 4.5985338951359445e-01 1.6228250135495894e+00 - 40 4.7456372038759813e+00 -2.0011059690936865e+00 -2.3332863863915216e+00 - 41 -3.0219214453293353e-01 -3.1648775808919472e+00 -3.4512151605719299e-01 - 42 -4.3738385374526683e+00 -1.4984390331917190e+00 3.4904474570057104e-01 - 43 -2.3595429224659230e-02 -5.2158149238260405e+00 1.0420171577659396e+00 - 44 3.5666455681950779e+00 -3.5061609850861370e+00 1.5276480532892043e+00 - 45 -2.2416592732685330e+00 1.2743323477451050e+00 -3.4535947332380030e+00 - 46 -2.5063043912906469e-01 -1.6306933990280013e+00 5.6310172031723624e+00 - 47 2.3589854948440898e+00 2.5421876741753944e+00 3.1695195211974569e+00 - 48 2.2574894820169225e+00 3.6956620104200244e-01 -3.5121218711855451e-01 - 49 -5.0351003329616812e+00 -3.5764874514977381e+00 -4.2176800204027698e+00 - 50 -3.5336727643305714e+00 1.0270508441019901e+00 8.7528194493804723e-01 - 51 -1.7753604141545498e+00 2.1870380688570177e+00 4.0746694362092146e+00 - 52 4.2449410599123940e+00 -4.3834286828818527e+00 3.7646766355562638e+00 - 53 2.7078936465321761e+00 3.1295683628914337e+00 1.7445195155460467e+00 - 54 8.7327387446491855e-01 7.6772540692815150e-01 -3.2402617779280607e-01 - 55 8.1016418773722532e-01 -3.1389885601606808e+00 -3.3633443469809321e+00 - 56 -1.4278855654148919e+00 4.0286484781122356e+00 -1.9992906821384984e+00 - 57 8.6542958084556795e-02 -1.1020400457566657e+00 -3.3822209055936425e-01 - 58 3.5813121257873739e+00 -5.6151617304233592e-01 1.4119734987696821e+00 - 59 3.0606661941207842e+00 1.7089133715354605e+00 -2.8032446787135936e+00 - 60 -1.3854267730385412e+00 -4.4188316872855324e+00 -2.5380111088582060e+00 - 61 -1.6904739442047063e+00 1.8488347785921950e+00 -1.3746204703475935e+00 - 62 -2.2661772905636317e+00 3.3572261480594037e+00 -2.2464258009076628e+00 - 63 5.5268470973310295e+00 -1.7435558018609616e+00 -2.0408474603750877e+00 - 64 4.5886957877184607e+00 4.8319627526991162e+00 3.9643528671273387e+00 - 65 2.2069706541796819e-01 6.8504065097220912e-01 -4.7003026743896925e-01 - 66 -4.0115936231307687e+00 -2.1218205387046734e+00 -9.9827955102434052e-01 - 67 2.9684129910660978e-01 3.7262517916029050e+00 -1.0816521062552384e+00 - 68 8.1382993930077974e-02 -3.5573677522972448e-02 -3.5151985944756765e+00 - 69 -6.2695071956388693e-01 -2.7259542642215631e+00 9.9501440284676412e-01 - 70 -2.9721298245652655e-01 3.9092099179600175e+00 1.7771226768578361e+00 - 71 -2.1393366306893342e+00 -2.8262788823503495e+00 2.4444601376032358e+00 - 72 1.2252752627542938e+00 1.8934056804257393e+00 -3.0563193598572895e+00 - 73 -3.4352637419435372e+00 -3.0718102718512790e+00 -2.8741859913748460e+00 - 74 3.2090680356598111e-01 -2.0401852703167536e+00 -2.4805669123527228e+00 - 75 2.3972135113482707e+00 -5.4019275833386740e+00 2.9765689120499244e+00 - 76 -4.3059430208317364e+00 -5.2598510825764526e+00 -5.2457319921326837e+00 - 77 -2.0232603864827342e-01 4.6375969951188312e+00 -1.5156362503135774e+00 - 78 -1.8428907820177838e+00 4.1515760568267348e+00 7.9422558196283433e-01 - 79 -3.3872595206480938e-01 4.9031092798381408e+00 -2.6117752561707013e+00 - 80 2.1162867716624736e+00 -4.0907630320472643e-01 4.5499311914741627e+00 - 81 4.4932801950136092e+00 3.4906677225423564e+00 -2.2635575912914865e+00 - 82 -3.5499768941512739e+00 1.1000156547358537e+00 2.2836994301124487e+00 - 83 -1.0451125955758018e+00 -2.9706240853885846e+00 -3.1507881990097875e-01 - 84 -3.3291212370733967e+00 3.2398148659892572e+00 4.6554951367993542e+00 - 85 -1.6602702919265730e+00 -5.0302444299485383e-01 -4.3331670906647073e+00 - 86 -5.1739012326876539e+00 3.7621044694833152e+00 -3.8694108983864619e+00 - 87 2.5800462945673321e+00 3.9113827058424304e+00 1.0058282701256924e+00 - 88 1.2186619874794191e+00 1.2903429720366129e+00 -2.1812056654218557e+00 - 89 5.1708533972772752e-01 -2.2724925528175152e-01 4.0361514608963196e+00 - 90 5.5528219623802180e-02 -6.3249115106539855e-01 1.1331478048837915e+00 - 91 2.3763801964791704e+00 -1.3568111553144696e-01 1.8305254882252111e+00 - 92 -7.4479731670623583e-01 6.2631724116234322e-01 7.0917585103702789e+00 - 93 -2.7946615351838333e+00 2.6497754369022855e+00 -4.9404756163540302e+00 - 94 -1.9276104520041852e+00 3.6726001318584620e+00 -1.8895215405747192e+00 - 95 2.7496645204152230e+00 1.1798091106750874e+00 1.0381378973287085e+00 - 96 2.8838885087721455e-01 -8.4153051128334944e-01 -4.5863881665539175e-01 - 97 2.4166757309749753e+00 -4.1769572659123906e+00 4.2709577151965137e+00 - 98 2.9163676292149106e+00 1.1371300137918533e-01 2.4075146002079389e-01 - 99 1.1198725269487790e+00 -4.1834197631714831e+00 2.7042173489858383e+00 - 100 -3.3387630324070899e-01 -2.8581757312520559e+00 -3.6169899983198323e-01 - 101 -4.0590700128584585e+00 1.4771680009302592e+00 -2.0374279165464273e+00 - 102 -1.3972038958445472e+00 -1.5892380209629957e+00 1.2229478783443182e+00 - 103 1.7222082871468471e+00 4.5985338951359389e-01 1.6228250135495899e+00 - 104 4.7456372038760062e+00 -2.0011059690936932e+00 -2.3332863863915208e+00 - 105 -3.0219214453292503e-01 -3.1648775808919218e+00 -3.4512151605718006e-01 - 106 -4.3738385374526878e+00 -1.4984390331917365e+00 3.4904474570056404e-01 - 107 -2.3595429224655809e-02 -5.2158149238260734e+00 1.0420171577659341e+00 - 108 3.5666455681952103e+00 -3.5061609850861259e+00 1.5276480532892367e+00 - 109 -2.2416592732686169e+00 1.2743323477450963e+00 -3.4535947332380101e+00 - 110 -2.5063043912905558e-01 -1.6306933990280170e+00 5.6310172031723704e+00 - 111 2.3589854948441089e+00 2.5421876741754099e+00 3.1695195211974729e+00 - 112 2.2574894820168732e+00 3.6956620104201315e-01 -3.5121218711858404e-01 - 113 -5.0351003329616457e+00 -3.5764874514977296e+00 -4.2176800204027822e+00 - 114 -3.5336727643305612e+00 1.0270508441019932e+00 8.7528194493802980e-01 - 115 -1.7753604141545398e+00 2.1870380688570323e+00 4.0746694362092191e+00 - 116 4.2449410599123807e+00 -4.3834286828818456e+00 3.7646766355562535e+00 - 117 2.7078936465321530e+00 3.1295683628914439e+00 1.7445195155460547e+00 - 118 8.7327387446490479e-01 7.6772540692814195e-01 -3.2402617779281701e-01 - 119 8.1016418773726873e-01 -3.1389885601607035e+00 -3.3633443469809379e+00 - 120 -1.4278855654148834e+00 4.0286484781122365e+00 -1.9992906821384921e+00 - 121 8.6542958084561361e-02 -1.1020400457566630e+00 -3.3822209055936658e-01 - 122 3.5813121257873619e+00 -5.6151617304233381e-01 1.4119734987696921e+00 - 123 3.0606661941208451e+00 1.7089133715354738e+00 -2.8032446787136314e+00 - 124 -1.3854267730385910e+00 -4.4188316872855555e+00 -2.5380111088582140e+00 - 125 -1.6904739442046883e+00 1.8488347785921939e+00 -1.3746204703476019e+00 - 126 -2.2661772905636428e+00 3.3572261480594063e+00 -2.2464258009076707e+00 - 127 5.5268470973310269e+00 -1.7435558018609683e+00 -2.0408474603750935e+00 - 128 4.5886957877184660e+00 4.8319627526991473e+00 3.9643528671273507e+00 - 129 2.2069706541797016e-01 6.8504065097220879e-01 -4.7003026743897031e-01 - 130 -4.0115936231307545e+00 -2.1218205387046774e+00 -9.9827955102434029e-01 - 131 2.9684129910662832e-01 3.7262517916029032e+00 -1.0816521062552653e+00 - 132 8.1382993930064915e-02 -3.5573677522977583e-02 -3.5151985944756676e+00 - 133 -6.2695071956387305e-01 -2.7259542642215586e+00 9.9501440284676268e-01 - 134 -2.9721298245652084e-01 3.9092099179600148e+00 1.7771226768578388e+00 - 135 -2.1393366306894110e+00 -2.8262788823503509e+00 2.4444601376032611e+00 - 136 1.2252752627543320e+00 1.8934056804256958e+00 -3.0563193598572895e+00 - 137 -3.4352637419435204e+00 -3.0718102718512599e+00 -2.8741859913748296e+00 - 138 3.2090680356600421e-01 -2.0401852703166861e+00 -2.4805669123527521e+00 - 139 2.3972135113483071e+00 -5.4019275833386908e+00 2.9765689120499732e+00 - 140 -4.3059430208317151e+00 -5.2598510825764251e+00 -5.2457319921326651e+00 - 141 -2.0232603864833151e-01 4.6375969951188551e+00 -1.5156362503136349e+00 - 142 -1.8428907820177429e+00 4.1515760568266726e+00 7.9422558196288195e-01 - 143 -3.3872595206479300e-01 4.9031092798381231e+00 -2.6117752561706946e+00 - 144 2.1162867716623657e+00 -4.0907630320476768e-01 4.5499311914742577e+00 - 145 4.4932801950135950e+00 3.4906677225423155e+00 -2.2635575912914421e+00 - 146 -3.5499768941512975e+00 1.1000156547358841e+00 2.2836994301124527e+00 - 147 -1.0451125955757994e+00 -2.9706240853885535e+00 -3.1507881990094722e-01 - 148 -3.3291212370734145e+00 3.2398148659892740e+00 4.6554951367993631e+00 - 149 -1.6602702919265679e+00 -5.0302444299487636e-01 -4.3331670906647126e+00 - 150 -5.1739012326876566e+00 3.7621044694833303e+00 -3.8694108983864757e+00 - 151 2.5800462945673113e+00 3.9113827058424002e+00 1.0058282701256753e+00 - 152 1.2186619874794138e+00 1.2903429720366129e+00 -2.1812056654218486e+00 - 153 5.1708533972770687e-01 -2.2724925528171916e-01 4.0361514608963169e+00 - 154 5.5528219623780462e-02 -6.3249115106538389e-01 1.1331478048837897e+00 - 155 2.3763801964792948e+00 -1.3568111553147827e-01 1.8305254882251900e+00 - 156 -7.4479731670623550e-01 6.2631724116235243e-01 7.0917585103702718e+00 - 157 -2.7946615351838284e+00 2.6497754369022903e+00 -4.9404756163540497e+00 - 158 -1.9276104520041843e+00 3.6726001318584816e+00 -1.8895215405747190e+00 - 159 2.7496645204151537e+00 1.1798091106750430e+00 1.0381378973286741e+00 - 160 2.8838885087720562e-01 -8.4153051128334488e-01 -4.5863881665538292e-01 - 161 2.4166757309749971e+00 -4.1769572659124279e+00 4.2709577151965528e+00 - 162 2.9163676292149221e+00 1.1371300137917556e-01 2.4075146002081926e-01 - 163 1.1198725269487704e+00 -4.1834197631714725e+00 2.7042173489858419e+00 - 164 -3.3387630324067230e-01 -2.8581757312520399e+00 -3.6169899983198373e-01 - 165 -4.0590700128584549e+00 1.4771680009302548e+00 -2.0374279165464242e+00 - 166 -1.3972038958445503e+00 -1.5892380209629917e+00 1.2229478783443049e+00 - 167 1.7222082871468414e+00 4.5985338951358495e-01 1.6228250135495910e+00 - 168 4.7456372038760000e+00 -2.0011059690937412e+00 -2.3332863863915572e+00 - 169 -3.0219214453292764e-01 -3.1648775808919631e+00 -3.4512151605719948e-01 - 170 -4.3738385374526203e+00 -1.4984390331916571e+00 3.4904474570061345e-01 - 171 -2.3595429224668379e-02 -5.2158149238260263e+00 1.0420171577659338e+00 - 172 3.5666455681950744e+00 -3.5061609850861055e+00 1.5276480532891945e+00 - 173 -2.2416592732685294e+00 1.2743323477451018e+00 -3.4535947332379942e+00 - 174 -2.5063043912912020e-01 -1.6306933990281038e+00 5.6310172031723082e+00 - 175 2.3589854948440974e+00 2.5421876741754068e+00 3.1695195211974556e+00 - 176 2.2574894820169185e+00 3.6956620104199356e-01 -3.5121218711856128e-01 - 177 -5.0351003329616919e+00 -3.5764874514977327e+00 -4.2176800204027627e+00 - 178 -3.5336727643305541e+00 1.0270508441020134e+00 8.7528194493807898e-01 - 179 -1.7753604141545791e+00 2.1870380688570679e+00 4.0746694362092475e+00 - 180 4.2449410599123940e+00 -4.3834286828818456e+00 3.7646766355562638e+00 - 181 2.7078936465321841e+00 3.1295683628914128e+00 1.7445195155460405e+00 - 182 8.7327387446490778e-01 7.6772540692813296e-01 -3.2402617779282272e-01 - 183 8.1016418773725840e-01 -3.1389885601608025e+00 -3.3633443469809117e+00 - 184 -1.4278855654148874e+00 4.0286484781122418e+00 -1.9992906821384864e+00 - 185 8.6542958084555810e-02 -1.1020400457566488e+00 -3.3822209055936331e-01 - 186 3.5813121257873899e+00 -5.6151617304226631e-01 1.4119734987696575e+00 - 187 3.0606661941208060e+00 1.7089133715354359e+00 -2.8032446787136203e+00 - 188 -1.3854267730385068e+00 -4.4188316872855200e+00 -2.5380111088581576e+00 - 189 -1.6904739442047096e+00 1.8488347785921984e+00 -1.3746204703476179e+00 - 190 -2.2661772905636401e+00 3.3572261480593943e+00 -2.2464258009076730e+00 - 191 5.5268470973310437e+00 -1.7435558018609418e+00 -2.0408474603750744e+00 - 192 4.5886957877184242e+00 4.8319627526991029e+00 3.9643528671273085e+00 - 193 2.2069706541797257e-01 6.8504065097221956e-01 -4.7003026743897658e-01 - 194 -4.0115936231307678e+00 -2.1218205387046702e+00 -9.9827955102433918e-01 - 195 2.9684129910662271e-01 3.7262517916029125e+00 -1.0816521062552538e+00 - 196 8.1382993930076294e-02 -3.5573677522958265e-02 -3.5151985944756707e+00 - 197 -6.2695071956388182e-01 -2.7259542642215626e+00 9.9501440284675990e-01 - 198 -2.9721298245652805e-01 3.9092099179600188e+00 1.7771226768578356e+00 - 199 -2.1393366306893302e+00 -2.8262788823503477e+00 2.4444601376032313e+00 - 200 1.2252752627543146e+00 1.8934056804256987e+00 -3.0563193598573068e+00 - 201 -3.4352637419435266e+00 -3.0718102718512736e+00 -2.8741859913748398e+00 - 202 3.2090680356599371e-01 -2.0401852703167211e+00 -2.4805669123527156e+00 - 203 2.3972135113482680e+00 -5.4019275833386802e+00 2.9765689120499337e+00 - 204 -4.3059430208317613e+00 -5.2598510825764695e+00 -5.2457319921326944e+00 - 205 -2.0232603864829354e-01 4.6375969951188338e+00 -1.5156362503135945e+00 - 206 -1.8428907820177813e+00 4.1515760568267162e+00 7.9422558196281756e-01 - 207 -3.3872595206481426e-01 4.9031092798381586e+00 -2.6117752561707119e+00 - 208 2.1162867716624718e+00 -4.0907630320468791e-01 4.5499311914742151e+00 - 209 4.4932801950136279e+00 3.4906677225423635e+00 -2.2635575912914878e+00 - 210 -3.5499768941512886e+00 1.1000156547358813e+00 2.2836994301124611e+00 - 211 -1.0451125955758147e+00 -2.9706240853885610e+00 -3.1507881990096293e-01 - 212 -3.3291212370734238e+00 3.2398148659892878e+00 4.6554951367993693e+00 - 213 -1.6602702919265648e+00 -5.0302444299487847e-01 -4.3331670906647108e+00 - 214 -5.1739012326876468e+00 3.7621044694833254e+00 -3.8694108983864703e+00 - 215 2.5800462945673317e+00 3.9113827058424122e+00 1.0058282701256864e+00 - 216 1.2186619874794311e+00 1.2903429720366013e+00 -2.1812056654218535e+00 - 217 5.1708533972766846e-01 -2.2724925528168946e-01 4.0361514608963196e+00 - 218 5.5528219623788490e-02 -6.3249115106538056e-01 1.1331478048837924e+00 - 219 2.3763801964791940e+00 -1.3568111553149587e-01 1.8305254882252089e+00 - 220 -7.4479731670622606e-01 6.2631724116234322e-01 7.0917585103702887e+00 - 221 -2.7946615351838302e+00 2.6497754369022801e+00 -4.9404756163540391e+00 - 222 -1.9276104520042008e+00 3.6726001318584740e+00 -1.8895215405747330e+00 - 223 2.7496645204152319e+00 1.1798091106750590e+00 1.0381378973286974e+00 - 224 2.8838885087721700e-01 -8.4153051128332768e-01 -4.5863881665539608e-01 - 225 2.4166757309749807e+00 -4.1769572659124004e+00 4.2709577151965235e+00 - 226 2.9163676292149070e+00 1.1371300137917927e-01 2.4075146002080447e-01 - 227 1.1198725269487768e+00 -4.1834197631714760e+00 2.7042173489858441e+00 - 228 -3.3387630324070566e-01 -2.8581757312520439e+00 -3.6169899983197878e-01 - 229 -4.0590700128584567e+00 1.4771680009302595e+00 -2.0374279165464277e+00 - 230 -1.3972038958445552e+00 -1.5892380209629935e+00 1.2229478783443208e+00 - 231 1.7222082871468489e+00 4.5985338951358373e-01 1.6228250135495903e+00 - 232 4.7456372038760311e+00 -2.0011059690937398e+00 -2.3332863863915465e+00 - 233 -3.0219214453292259e-01 -3.1648775808919369e+00 -3.4512151605718677e-01 - 234 -4.3738385374526416e+00 -1.4984390331916755e+00 3.4904474570060623e-01 - 235 -2.3595429224662654e-02 -5.2158149238260574e+00 1.0420171577659318e+00 - 236 3.5666455681952125e+00 -3.5061609850860989e+00 1.5276480532892287e+00 - 237 -2.2416592732686125e+00 1.2743323477450939e+00 -3.4535947332380013e+00 - 238 -2.5063043912911293e-01 -1.6306933990281149e+00 5.6310172031723180e+00 - 239 2.3589854948441142e+00 2.5421876741754192e+00 3.1695195211974720e+00 - 240 2.2574894820168705e+00 3.6956620104200660e-01 -3.5121218711858965e-01 - 241 -5.0351003329616537e+00 -3.5764874514977270e+00 -4.2176800204027769e+00 - 242 -3.5336727643305532e+00 1.0270508441020201e+00 8.7528194493806333e-01 - 243 -1.7753604141545702e+00 2.1870380688570807e+00 4.0746694362092573e+00 - 244 4.2449410599123789e+00 -4.3834286828818376e+00 3.7646766355562513e+00 - 245 2.7078936465321632e+00 3.1295683628914222e+00 1.7445195155460478e+00 - 246 8.7327387446489713e-01 7.6772540692812541e-01 -3.2402617779283199e-01 - 247 8.1016418773729493e-01 -3.1389885601608345e+00 -3.3633443469809090e+00 - 248 -1.4278855654148732e+00 4.0286484781122391e+00 -1.9992906821384748e+00 - 249 8.6542958084561653e-02 -1.1020400457566464e+00 -3.3822209055936525e-01 - 250 3.5813121257873770e+00 -5.6151617304225387e-01 1.4119734987696599e+00 - 251 3.0606661941208659e+00 1.7089133715354510e+00 -2.8032446787136567e+00 - 252 -1.3854267730385641e+00 -4.4188316872855458e+00 -2.5380111088581714e+00 - 253 -1.6904739442046899e+00 1.8488347785921966e+00 -1.3746204703476279e+00 - 254 -2.2661772905636504e+00 3.3572261480593952e+00 -2.2464258009076814e+00 - 255 5.5268470973310402e+00 -1.7435558018609474e+00 -2.0408474603750806e+00 - 256 4.5886957877184305e+00 4.8319627526991367e+00 3.9643528671273285e+00 - 257 2.2069706541795950e-01 6.8504065097218869e-01 -4.7003026743895610e-01 - 258 -4.0115936231307510e+00 -2.1218205387046849e+00 -9.9827955102435095e-01 - 259 2.9684129910662382e-01 3.7262517916029005e+00 -1.0816521062552633e+00 - 260 8.1382993930067704e-02 -3.5573677522989407e-02 -3.5151985944756468e+00 - 261 -6.2695071956386683e-01 -2.7259542642215449e+00 9.9501440284675535e-01 - 262 -2.9721298245652056e-01 3.9092099179600162e+00 1.7771226768578341e+00 - 263 -2.1393366306894177e+00 -2.8262788823503620e+00 2.4444601376032922e+00 - 264 1.2252752627542955e+00 1.8934056804257171e+00 -3.0563193598572829e+00 - 265 -3.4352637419435412e+00 -3.0718102718512759e+00 -2.8741859913748469e+00 - 266 3.2090680356599988e-01 -2.0401852703167251e+00 -2.4805669123527676e+00 - 267 2.3972135113482911e+00 -5.4019275833386953e+00 2.9765689120499421e+00 - 268 -4.3059430208316689e+00 -5.2598510825763967e+00 -5.2457319921326473e+00 - 269 -2.0232603864830292e-01 4.6375969951188649e+00 -1.5156362503135969e+00 - 270 -1.8428907820177696e+00 4.1515760568267233e+00 7.9422558196288684e-01 - 271 -3.3872595206475870e-01 4.9031092798380849e+00 -2.6117752561706160e+00 - 272 2.1162867716623714e+00 -4.0907630320482452e-01 4.5499311914741813e+00 - 273 4.4932801950135710e+00 3.4906677225423062e+00 -2.2635575912914434e+00 - 274 -3.5499768941512722e+00 1.1000156547358613e+00 2.2836994301124474e+00 - 275 -1.0451125955757994e+00 -2.9706240853885806e+00 -3.1507881990096065e-01 - 276 -3.3291212370733985e+00 3.2398148659892505e+00 4.6554951367993604e+00 - 277 -1.6602702919265782e+00 -5.0302444299485227e-01 -4.3331670906647064e+00 - 278 -5.1739012326877027e+00 3.7621044694833312e+00 -3.8694108983864908e+00 - 279 2.5800462945673277e+00 3.9113827058424118e+00 1.0058282701257071e+00 - 280 1.2186619874794087e+00 1.2903429720366195e+00 -2.1812056654218517e+00 - 281 5.1708533972776816e-01 -2.2724925528178760e-01 4.0361514608963054e+00 - 282 5.5528219623796962e-02 -6.3249115106540654e-01 1.1331478048837642e+00 - 283 2.3763801964792592e+00 -1.3568111553142109e-01 1.8305254882251945e+00 - 284 -7.4479731670625093e-01 6.2631724116234289e-01 7.0917585103703207e+00 - 285 -2.7946615351838298e+00 2.6497754369023023e+00 -4.9404756163540196e+00 - 286 -1.9276104520041655e+00 3.6726001318584709e+00 -1.8895215405746977e+00 - 287 2.7496645204151489e+00 1.1798091106750759e+00 1.0381378973286892e+00 - 288 2.8838885087721156e-01 -8.4153051128335987e-01 -4.5863881665538175e-01 - 289 2.4166757309749642e+00 -4.1769572659123702e+00 4.2709577151964977e+00 - 290 2.9163676292149106e+00 1.1371300137917861e-01 2.4075146002081471e-01 - 291 1.1198725269487630e+00 -4.1834197631714796e+00 2.7042173489858201e+00 - 292 -3.3387630324067030e-01 -2.8581757312520510e+00 -3.6169899983200149e-01 - 293 -4.0590700128584514e+00 1.4771680009302361e+00 -2.0374279165464073e+00 - 294 -1.3972038958445367e+00 -1.5892380209629922e+00 1.2229478783443035e+00 - 295 1.7222082871468409e+00 4.5985338951359545e-01 1.6228250135495998e+00 - 296 4.7456372038759742e+00 -2.0011059690936954e+00 -2.3332863863915265e+00 - 297 -3.0219214453293974e-01 -3.1648775808919387e+00 -3.4512151605719826e-01 - 298 -4.3738385374526549e+00 -1.4984390331917208e+00 3.4904474570055544e-01 - 299 -2.3595429224524022e-02 -5.2158149238260458e+00 1.0420171577660298e+00 - 300 3.5666455681951028e+00 -3.5061609850861579e+00 1.5276480532892593e+00 - 301 -2.2416592732685787e+00 1.2743323477451685e+00 -3.4535947332380652e+00 - 302 -2.5063043912908722e-01 -1.6306933990280201e+00 5.6310172031723980e+00 - 303 2.3589854948440219e+00 2.5421876741753469e+00 3.1695195211973655e+00 - 304 2.2574894820168985e+00 3.6956620104200411e-01 -3.5121218711853169e-01 - 305 -5.0351003329616608e+00 -3.5764874514977105e+00 -4.2176800204027334e+00 - 306 -3.5336727643305612e+00 1.0270508441019646e+00 8.7528194493803491e-01 - 307 -1.7753604141545543e+00 2.1870380688570088e+00 4.0746694362092146e+00 - 308 4.2449410599124109e+00 -4.3834286828818856e+00 3.7646766355563068e+00 - 309 2.7078936465321526e+00 3.1295683628914150e+00 1.7445195155460047e+00 - 310 8.7327387446492655e-01 7.6772540692816349e-01 -3.2402617779278775e-01 - 311 8.1016418773722509e-01 -3.1389885601606804e+00 -3.3633443469808970e+00 - 312 -1.4278855654148712e+00 4.0286484781122223e+00 -1.9992906821384726e+00 - 313 8.6542958084541710e-02 -1.1020400457566728e+00 -3.3822209055940211e-01 - 314 3.5813121257873544e+00 -5.6151617304232226e-01 1.4119734987696428e+00 - 315 3.0606661941207829e+00 1.7089133715354525e+00 -2.8032446787137033e+00 - 316 -1.3854267730385401e+00 -4.4188316872855236e+00 -2.5380111088582056e+00 - 317 -1.6904739442046786e+00 1.8488347785921777e+00 -1.3746204703475302e+00 - 318 -2.2661772905635900e+00 3.3572261480593659e+00 -2.2464258009076215e+00 - 319 5.5268470973310126e+00 -1.7435558018608883e+00 -2.0408474603750251e+00 - 320 4.5886957877184447e+00 4.8319627526991313e+00 3.9643528671273356e+00 - 321 2.2069706541796461e-01 6.8504065097220423e-01 -4.7003026743896670e-01 - 322 -4.0115936231307687e+00 -2.1218205387046756e+00 -9.9827955102434740e-01 - 323 2.9684129910661305e-01 3.7262517916029116e+00 -1.0816521062552500e+00 - 324 8.1382993930087022e-02 -3.5573677522965488e-02 -3.5151985944756472e+00 - 325 -6.2695071956387505e-01 -2.7259542642215546e+00 9.9501440284675335e-01 - 326 -2.9721298245652472e-01 3.9092099179600184e+00 1.7771226768578299e+00 - 327 -2.1393366306893453e+00 -2.8262788823503602e+00 2.4444601376032646e+00 - 328 1.2252752627542776e+00 1.8934056804257120e+00 -3.0563193598572980e+00 - 329 -3.4352637419435452e+00 -3.0718102718512852e+00 -2.8741859913748549e+00 - 330 3.2090680356598333e-01 -2.0401852703167540e+00 -2.4805669123527450e+00 - 331 2.3972135113482511e+00 -5.4019275833386802e+00 2.9765689120499013e+00 - 332 -4.3059430208317107e+00 -5.2598510825764366e+00 -5.2457319921326730e+00 - 333 -2.0232603864826401e-01 4.6375969951188374e+00 -1.5156362503135590e+00 - 334 -1.8428907820178062e+00 4.1515760568267597e+00 7.9422558196284432e-01 - 335 -3.3872595206477341e-01 4.9031092798381133e+00 -2.6117752561706280e+00 - 336 2.1162867716624745e+00 -4.0907630320475385e-01 4.5499311914741325e+00 - 337 4.4932801950136048e+00 3.4906677225423564e+00 -2.2635575912914869e+00 - 338 -3.5499768941512673e+00 1.1000156547358557e+00 2.2836994301124514e+00 - 339 -1.0451125955758145e+00 -2.9706240853885810e+00 -3.1507881990097597e-01 - 340 -3.3291212370734091e+00 3.2398148659892634e+00 4.6554951367993676e+00 - 341 -1.6602702919265708e+00 -5.0302444299485727e-01 -4.3331670906647055e+00 - 342 -5.1739012326876948e+00 3.7621044694833405e+00 -3.8694108983864934e+00 - 343 2.5800462945673437e+00 3.9113827058424198e+00 1.0058282701257135e+00 - 344 1.2186619874794211e+00 1.2903429720366129e+00 -2.1812056654218535e+00 - 345 5.1708533972772974e-01 -2.2724925528175427e-01 4.0361514608963116e+00 - 346 5.5528219623807308e-02 -6.3249115106540355e-01 1.1331478048837684e+00 - 347 2.3763801964791611e+00 -1.3568111553142059e-01 1.8305254882252080e+00 - 348 -7.4479731670624560e-01 6.2631724116233867e-01 7.0917585103703304e+00 - 349 -2.7946615351838258e+00 2.6497754369022872e+00 -4.9404756163540107e+00 - 350 -1.9276104520041804e+00 3.6726001318584616e+00 -1.8895215405747143e+00 - 351 2.7496645204152212e+00 1.1798091106750888e+00 1.0381378973287108e+00 - 352 2.8838885087721855e-01 -8.4153051128334244e-01 -4.5863881665538886e-01 - 353 2.4166757309749531e+00 -4.1769572659123497e+00 4.2709577151964746e+00 - 354 2.9163676292148990e+00 1.1371300137918280e-01 2.4075146002080219e-01 - 355 1.1198725269487693e+00 -4.1834197631714796e+00 2.7042173489858197e+00 - 356 -3.3387630324069922e-01 -2.8581757312520502e+00 -3.6169899983199522e-01 - 357 -4.0590700128584558e+00 1.4771680009302395e+00 -2.0374279165464109e+00 - 358 -1.3972038958445405e+00 -1.5892380209629930e+00 1.2229478783443177e+00 - 359 1.7222082871468514e+00 4.5985338951359567e-01 1.6228250135495981e+00 - 360 4.7456372038760009e+00 -2.0011059690936985e+00 -2.3332863863915203e+00 - 361 -3.0219214453292959e-01 -3.1648775808919178e+00 -3.4512151605718333e-01 - 362 -4.3738385374526789e+00 -1.4984390331917412e+00 3.4904474570054739e-01 - 363 -2.3595429224526020e-02 -5.2158149238260805e+00 1.0420171577660184e+00 - 364 3.5666455681952325e+00 -3.5061609850861495e+00 1.5276480532892898e+00 - 365 -2.2416592732686591e+00 1.2743323477451618e+00 -3.4535947332380719e+00 - 366 -2.5063043912908695e-01 -1.6306933990280372e+00 5.6310172031724122e+00 - 367 2.3589854948440454e+00 2.5421876741753655e+00 3.1695195211973877e+00 - 368 2.2574894820168550e+00 3.6956620104201510e-01 -3.5121218711855912e-01 - 369 -5.0351003329616244e+00 -3.5764874514977043e+00 -4.2176800204027485e+00 - 370 -3.5336727643305563e+00 1.0270508441019661e+00 8.7528194493800981e-01 - 371 -1.7753604141545436e+00 2.1870380688570190e+00 4.0746694362092262e+00 - 372 4.2449410599124038e+00 -4.3834286828818847e+00 3.7646766355563064e+00 - 373 2.7078936465321273e+00 3.1295683628914359e+00 1.7445195155460174e+00 - 374 8.7327387446491589e-01 7.6772540692815416e-01 -3.2402617779279774e-01 - 375 8.1016418773725907e-01 -3.1389885601607097e+00 -3.3633443469808988e+00 - 376 -1.4278855654148637e+00 4.0286484781122240e+00 -1.9992906821384671e+00 - 377 8.6542958084548427e-02 -1.1020400457566699e+00 -3.3822209055940633e-01 - 378 3.5813121257873468e+00 -5.6151617304231294e-01 1.4119734987696477e+00 - 379 3.0606661941208517e+00 1.7089133715354750e+00 -2.8032446787137393e+00 - 380 -1.3854267730385890e+00 -4.4188316872855422e+00 -2.5380111088582140e+00 - 381 -1.6904739442046597e+00 1.8488347785921742e+00 -1.3746204703475413e+00 - 382 -2.2661772905636015e+00 3.3572261480593704e+00 -2.2464258009076317e+00 - 383 5.5268470973310064e+00 -1.7435558018608961e+00 -2.0408474603750344e+00 - 384 4.5886957877184473e+00 4.8319627526991615e+00 3.9643528671273440e+00 - 385 2.2069706541796574e-01 6.8504065097220357e-01 -4.7003026743896748e-01 - 386 -4.0115936231307554e+00 -2.1218205387046800e+00 -9.9827955102434718e-01 - 387 2.9684129910663370e-01 3.7262517916029134e+00 -1.0816521062552793e+00 - 388 8.1382993930071632e-02 -3.5573677522972282e-02 -3.5151985944756428e+00 - 389 -6.2695071956386306e-01 -2.7259542642215520e+00 9.9501440284675191e-01 - 390 -2.9721298245652045e-01 3.9092099179600188e+00 1.7771226768578334e+00 - 391 -2.1393366306894133e+00 -2.8262788823503597e+00 2.4444601376032886e+00 - 392 1.2252752627543220e+00 1.8934056804256691e+00 -3.0563193598572966e+00 - 393 -3.4352637419435381e+00 -3.0718102718512745e+00 -2.8741859913748469e+00 - 394 3.2090680356599965e-01 -2.0401852703166901e+00 -2.4805669123527738e+00 - 395 2.3972135113482924e+00 -5.4019275833387059e+00 2.9765689120499550e+00 - 396 -4.3059430208317000e+00 -5.2598510825764180e+00 -5.2457319921326606e+00 - 397 -2.0232603864831816e-01 4.6375969951188791e+00 -1.5156362503136123e+00 - 398 -1.8428907820177574e+00 4.1515760568267002e+00 7.9422558196289239e-01 - 399 -3.3872595206475659e-01 4.9031092798380964e+00 -2.6117752561706191e+00 - 400 2.1162867716623746e+00 -4.0907630320478661e-01 4.5499311914742329e+00 - 401 4.4932801950135861e+00 3.4906677225423146e+00 -2.2635575912914474e+00 - 402 -3.5499768941512930e+00 1.1000156547358921e+00 2.2836994301124585e+00 - 403 -1.0451125955758152e+00 -2.9706240853885579e+00 -3.1507881990094821e-01 - 404 -3.3291212370734269e+00 3.2398148659892798e+00 4.6554951367993782e+00 - 405 -1.6602702919265688e+00 -5.0302444299487736e-01 -4.3331670906647126e+00 - 406 -5.1739012326876903e+00 3.7621044694833454e+00 -3.8694108983865001e+00 - 407 2.5800462945673281e+00 3.9113827058423949e+00 1.0058282701257060e+00 - 408 1.2186619874794165e+00 1.2903429720366129e+00 -2.1812056654218455e+00 - 409 5.1708533972771120e-01 -2.2724925528172302e-01 4.0361514608963116e+00 - 410 5.5528219623785194e-02 -6.3249115106539078e-01 1.1331478048837604e+00 - 411 2.3763801964792828e+00 -1.3568111553145581e-01 1.8305254882251898e+00 - 412 -7.4479731670624660e-01 6.2631724116234833e-01 7.0917585103703242e+00 - 413 -2.7946615351838231e+00 2.6497754369022926e+00 -4.9404756163540275e+00 - 414 -1.9276104520041766e+00 3.6726001318584816e+00 -1.8895215405747110e+00 - 415 2.7496645204151515e+00 1.1798091106750437e+00 1.0381378973286739e+00 - 416 2.8838885087720939e-01 -8.4153051128334011e-01 -4.5863881665538303e-01 - 417 2.4166757309749674e+00 -4.1769572659123835e+00 4.2709577151965066e+00 - 418 2.9163676292149079e+00 1.1371300137917027e-01 2.4075146002082637e-01 - 419 1.1198725269487606e+00 -4.1834197631714751e+00 2.7042173489858241e+00 - 420 -3.3387630324066614e-01 -2.8581757312520404e+00 -3.6169899983199694e-01 - 421 -4.0590700128584505e+00 1.4771680009302361e+00 -2.0374279165464078e+00 - 422 -1.3972038958445459e+00 -1.5892380209629926e+00 1.2229478783443071e+00 - 423 1.7222082871468458e+00 4.5985338951358662e-01 1.6228250135496034e+00 - 424 4.7456372038760000e+00 -2.0011059690937394e+00 -2.3332863863915549e+00 - 425 -3.0219214453293625e-01 -3.1648775808919538e+00 -3.4512151605720665e-01 - 426 -4.3738385374526114e+00 -1.4984390331916562e+00 3.4904474570060040e-01 - 427 -2.3595429224533726e-02 -5.2158149238260352e+00 1.0420171577660287e+00 - 428 3.5666455681950890e+00 -3.5061609850861308e+00 1.5276480532892425e+00 - 429 -2.2416592732685685e+00 1.2743323477451673e+00 -3.4535947332380612e+00 - 430 -2.5063043912915178e-01 -1.6306933990281269e+00 5.6310172031723464e+00 - 431 2.3589854948440290e+00 2.5421876741753557e+00 3.1695195211973681e+00 - 432 2.2574894820169003e+00 3.6956620104200233e-01 -3.5121218711853208e-01 - 433 -5.0351003329616697e+00 -3.5764874514977065e+00 -4.2176800204027272e+00 - 434 -3.5336727643305452e+00 1.0270508441019932e+00 8.7528194493806688e-01 - 435 -1.7753604141545827e+00 2.1870380688570616e+00 4.0746694362092484e+00 - 436 4.2449410599124047e+00 -4.3834286828818838e+00 3.7646766355563019e+00 - 437 2.7078936465321637e+00 3.1295683628913982e+00 1.7445195155460003e+00 - 438 8.7327387446491422e-01 7.6772540692814106e-01 -3.2402617779280735e-01 - 439 8.1016418773725163e-01 -3.1389885601608056e+00 -3.3633443469808784e+00 - 440 -1.4278855654148579e+00 4.0286484781122276e+00 -1.9992906821384531e+00 - 441 8.6542958084542529e-02 -1.1020400457566568e+00 -3.3822209055939995e-01 - 442 3.5813121257873655e+00 -5.6151617304224299e-01 1.4119734987696129e+00 - 443 3.0606661941208109e+00 1.7089133715354334e+00 -2.8032446787137379e+00 - 444 -1.3854267730385008e+00 -4.4188316872855031e+00 -2.5380111088581505e+00 - 445 -1.6904739442046797e+00 1.8488347785921757e+00 -1.3746204703475602e+00 - 446 -2.2661772905636011e+00 3.3572261480593544e+00 -2.2464258009076348e+00 - 447 5.5268470973310260e+00 -1.7435558018608623e+00 -2.0408474603750131e+00 - 448 4.5886957877184003e+00 4.8319627526991118e+00 3.9643528671272996e+00 - 449 2.2069706541796852e-01 6.8504065097221456e-01 -4.7003026743897436e-01 - 450 -4.0115936231307696e+00 -2.1218205387046729e+00 -9.9827955102434629e-01 - 451 2.9684129910662371e-01 3.7262517916029192e+00 -1.0816521062552638e+00 - 452 8.1382993930086509e-02 -3.5573677522951652e-02 -3.5151985944756450e+00 - 453 -6.2695071956387238e-01 -2.7259542642215568e+00 9.9501440284675036e-01 - 454 -2.9721298245652444e-01 3.9092099179600224e+00 1.7771226768578305e+00 - 455 -2.1393366306893413e+00 -2.8262788823503588e+00 2.4444601376032624e+00 - 456 1.2252752627543024e+00 1.8934056804256718e+00 -3.0563193598573175e+00 - 457 -3.4352637419435341e+00 -3.0718102718512781e+00 -2.8741859913748464e+00 - 458 3.2090680356598733e-01 -2.0401852703167274e+00 -2.4805669123527503e+00 - 459 2.3972135113482471e+00 -5.4019275833386891e+00 2.9765689120499119e+00 - 460 -4.3059430208317444e+00 -5.2598510825764615e+00 -5.2457319921326926e+00 - 461 -2.0232603864828436e-01 4.6375969951188374e+00 -1.5156362503135770e+00 - 462 -1.8428907820177900e+00 4.1515760568267490e+00 7.9422558196283399e-01 - 463 -3.3872595206477474e-01 4.9031092798381248e+00 -2.6117752561706324e+00 - 464 2.1162867716624758e+00 -4.0907630320470723e-01 4.5499311914741929e+00 - 465 4.4932801950136181e+00 3.4906677225423626e+00 -2.2635575912914887e+00 - 466 -3.5499768941512819e+00 1.1000156547358853e+00 2.2836994301124642e+00 - 467 -1.0451125955758329e+00 -2.9706240853885633e+00 -3.1507881990096492e-01 - 468 -3.3291212370734353e+00 3.2398148659892936e+00 4.6554951367993826e+00 - 469 -1.6602702919265626e+00 -5.0302444299488103e-01 -4.3331670906647117e+00 - 470 -5.1739012326876859e+00 3.7621044694833503e+00 -3.8694108983865023e+00 - 471 2.5800462945673459e+00 3.9113827058424060e+00 1.0058282701257162e+00 - 472 1.2186619874794307e+00 1.2903429720366022e+00 -2.1812056654218517e+00 - 473 5.1708533972767157e-01 -2.2724925528168982e-01 4.0361514608963143e+00 - 474 5.5528219623792355e-02 -6.3249115106538600e-01 1.1331478048837658e+00 - 475 2.3763801964791811e+00 -1.3568111553147227e-01 1.8305254882252029e+00 - 476 -7.4479731670624161e-01 6.2631724116234400e-01 7.0917585103703358e+00 - 477 -2.7946615351838213e+00 2.6497754369022792e+00 -4.9404756163540204e+00 - 478 -1.9276104520041930e+00 3.6726001318584767e+00 -1.8895215405747254e+00 - 479 2.7496645204152288e+00 1.1798091106750601e+00 1.0381378973286983e+00 - 480 2.8838885087722121e-01 -8.4153051128332101e-01 -4.5863881665539363e-01 - 481 2.4166757309749540e+00 -4.1769572659123604e+00 4.2709577151964826e+00 - 482 2.9163676292148981e+00 1.1371300137917660e-01 2.4075146002081080e-01 - 483 1.1198725269487668e+00 -4.1834197631714760e+00 2.7042173489858259e+00 - 484 -3.3387630324069478e-01 -2.8581757312520364e+00 -3.6169899983198450e-01 - 485 -4.0590700128584523e+00 1.4771680009302415e+00 -2.0374279165464131e+00 - 486 -1.3972038958445470e+00 -1.5892380209629930e+00 1.2229478783443222e+00 - 487 1.7222082871468545e+00 4.5985338951358645e-01 1.6228250135496032e+00 - 488 4.7456372038760231e+00 -2.0011059690937474e+00 -2.3332863863915501e+00 - 489 -3.0219214453292886e-01 -3.1648775808919329e+00 -3.4512151605719138e-01 - 490 -4.3738385374526327e+00 -1.4984390331916750e+00 3.4904474570059174e-01 - 491 -2.3595429224533331e-02 -5.2158149238260680e+00 1.0420171577660218e+00 - 492 3.5666455681952343e+00 -3.5061609850861215e+00 1.5276480532892851e+00 - 493 -2.2416592732686493e+00 1.2743323477451605e+00 -3.4535947332380661e+00 - 494 -2.5063043912913913e-01 -1.6306933990281340e+00 5.6310172031723518e+00 - 495 2.3589854948440525e+00 2.5421876741753771e+00 3.1695195211973832e+00 - 496 2.2574894820168483e+00 3.6956620104200572e-01 -3.5121218711856717e-01 - 497 -5.0351003329616368e+00 -3.5764874514977008e+00 -4.2176800204027414e+00 - 498 -3.5336727643305421e+00 1.0270508441019970e+00 8.7528194493804667e-01 - 499 -1.7753604141545754e+00 2.1870380688570714e+00 4.0746694362092608e+00 - 500 4.2449410599123993e+00 -4.3834286828818803e+00 3.7646766355563002e+00 - 501 2.7078936465321397e+00 3.1295683628914097e+00 1.7445195155460125e+00 - 502 8.7327387446490479e-01 7.6772540692813085e-01 -3.2402617779281712e-01 - 503 8.1016418773728660e-01 -3.1389885601608358e+00 -3.3633443469808784e+00 - 504 -1.4278855654148510e+00 4.0286484781122276e+00 -1.9992906821384473e+00 - 505 8.6542958084548566e-02 -1.1020400457566535e+00 -3.3822209055940355e-01 - 506 3.5813121257873570e+00 -5.6151617304223689e-01 1.4119734987696160e+00 - 507 3.0606661941208650e+00 1.7089133715354412e+00 -2.8032446787137681e+00 - 508 -1.3854267730385632e+00 -4.4188316872855333e+00 -2.5380111088581714e+00 - 509 -1.6904739442046626e+00 1.8488347785921746e+00 -1.3746204703475671e+00 - 510 -2.2661772905636153e+00 3.3572261480593624e+00 -2.2464258009076454e+00 - 511 5.5268470973310224e+00 -1.7435558018608679e+00 -2.0408474603750189e+00 - 512 4.5886957877184127e+00 4.8319627526991518e+00 3.9643528671273245e+00 + 1 2.2065977620733823e-01 6.8508757018167898e-01 -4.7014971045392834e-01 + 2 -4.0124462717250839e+00 -2.1228312063765733e+00 -9.9897973861188283e-01 + 3 2.9685852583506717e-01 3.7266566877035148e+00 -1.0818658724311632e+00 + 4 8.1961211837120795e-02 -3.5570651112582063e-02 -3.5157302537620492e+00 + 5 -6.2728373866267073e-01 -2.7267744726566687e+00 9.9537775326668565e-01 + 6 -2.9603014594591437e-01 3.9112521689299560e+00 1.7782799262643807e+00 + 7 -2.1400291579006030e+00 -2.8265998306349855e+00 2.4454803567748606e+00 + 8 1.2252665174715598e+00 1.8937900711273328e+00 -3.0560489361858383e+00 + 9 -3.4366253701592160e+00 -3.0728708291251841e+00 -2.8755624856904287e+00 + 10 3.2113319900004017e-01 -2.0408399212555910e+00 -2.4817036798308094e+00 + 11 2.3993994751634742e+00 -5.4038696805398185e+00 2.9783868115053305e+00 + 12 -4.3087336411254045e+00 -5.2637599316271890e+00 -5.2480326020519099e+00 + 13 -2.0320550196331832e-01 4.6412772506323901e+00 -1.5157732877070105e+00 + 14 -1.8439832209648992e+00 4.1540210600591978e+00 7.9344962175590128e-01 + 15 -3.4057213913446360e-01 4.9061723967337816e+00 -2.6145747014412271e+00 + 16 2.1164541985651750e+00 -4.0729732248048311e-01 4.5537682682394198e+00 + 17 4.4954272557720110e+00 3.4922366648719638e+00 -2.2646334656811025e+00 + 18 -3.5506395759279483e+00 1.1009362664654250e+00 2.2848749119147880e+00 + 19 -1.0456337863134406e+00 -2.9724235443270648e+00 -3.1554579860703169e-01 + 20 -3.3313433991320456e+00 3.2426197185600354e+00 4.6572151933457757e+00 + 21 -1.6604128078447267e+00 -5.0401667704388187e-01 -4.3340028890967739e+00 + 22 -5.1780999254441662e+00 3.7656370977861480e+00 -3.8736456354976978e+00 + 23 2.5810691560850296e+00 3.9129419455686310e+00 1.0071952222896108e+00 + 24 1.2189893770300371e+00 1.2902271765990232e+00 -2.1816564738551740e+00 + 25 5.1717608355200118e-01 -2.2766313967227761e-01 4.0357834558791748e+00 + 26 5.5837971079115853e-02 -6.3312910436400516e-01 1.1338376610212455e+00 + 27 2.3776569282085838e+00 -1.3713335058520987e-01 1.8320253886114752e+00 + 28 -7.4605155753871388e-01 6.2639691169773104e-01 7.0950844496935170e+00 + 29 -2.7959006485060733e+00 2.6518449844717753e+00 -4.9418005822869659e+00 + 30 -1.9284812027028364e+00 3.6728996905807461e+00 -1.8903320575690421e+00 + 31 2.7501847555635224e+00 1.1800402620831711e+00 1.0386547735831302e+00 + 32 2.8874286555417883e-01 -8.4184451809623728e-01 -4.5827458970090051e-01 + 33 2.4177527590723296e+00 -4.1799340496126538e+00 4.2734972725104496e+00 + 34 2.9163123188810798e+00 1.1372045084901194e-01 2.4063982964448699e-01 + 35 1.1211713580663796e+00 -4.1852692109665224e+00 2.7055107929805744e+00 + 36 -3.3366806196511511e-01 -2.8592865937324241e+00 -3.6174665813781992e-01 + 37 -4.0598737192925629e+00 1.4790701200934750e+00 -2.0390573716466114e+00 + 38 -1.3972933493773498e+00 -1.5890688842928011e+00 1.2229127903290464e+00 + 39 1.7226829337464571e+00 4.6041363206313723e-01 1.6231271754939940e+00 + 40 4.7487429565043131e+00 -2.0032508711704504e+00 -2.3351656873697735e+00 + 41 -3.0211988899794873e-01 -3.1647229185551078e+00 -3.4484252242803659e-01 + 42 -4.3757968924703796e+00 -1.4988492973802408e+00 3.4848185514124802e-01 + 43 -2.3376048805867390e-02 -5.2171266030795751e+00 1.0422526834227199e+00 + 44 3.5686225189826812e+00 -3.5083544149657571e+00 1.5296762770587249e+00 + 45 -2.2429190678755098e+00 1.2762137613260987e+00 -3.4561335371333506e+00 + 46 -2.5249858397832398e-01 -1.6311993993014708e+00 5.6327007942433953e+00 + 47 2.3600434001454800e+00 2.5432001280052963e+00 3.1710184050148387e+00 + 48 2.2569424883932574e+00 3.6974145225970140e-01 -3.5079037684111325e-01 + 49 -5.0373146177377670e+00 -3.5792639981389867e+00 -4.2214396499888958e+00 + 50 -3.5333518619269704e+00 1.0268969392472456e+00 8.7615872588377397e-01 + 51 -1.7772253346150806e+00 2.1897240981816273e+00 4.0771383097941207e+00 + 52 4.2488265275528541e+00 -4.3879293775874428e+00 3.7692331388491089e+00 + 53 2.7105634024928702e+00 3.1321616846328704e+00 1.7466641233894777e+00 + 54 8.7345045914397412e-01 7.6780961728566233e-01 -3.2428866998030409e-01 + 55 8.1222707163562391e-01 -3.1415725783562616e+00 -3.3658388474832908e+00 + 56 -1.4293980095456800e+00 4.0300936576663196e+00 -2.0006489138695476e+00 + 57 8.6574115148983888e-02 -1.1025347346522771e+00 -3.3832826272726713e-01 + 58 3.5829961754217270e+00 -5.6274174997305004e-01 1.4127528025967375e+00 + 59 3.0632055304618659e+00 1.7103486318850951e+00 -2.8047593712683239e+00 + 60 -1.3875136436687734e+00 -4.4223159472758020e+00 -2.5405244604650332e+00 + 61 -1.6911573920575165e+00 1.8495318348477738e+00 -1.3750758436991020e+00 + 62 -2.2677591075287817e+00 3.3580212813414767e+00 -2.2471871608771177e+00 + 63 5.5289268843361006e+00 -1.7453255640698171e+00 -2.0435451118905243e+00 + 64 4.5908794739248782e+00 4.8343851592710259e+00 3.9665064357692694e+00 + 65 2.2065977620732435e-01 6.8508757018165423e-01 -4.7014971045390386e-01 + 66 -4.0124462717250653e+00 -2.1228312063765440e+00 -9.9897973861186662e-01 + 67 2.9685852583505751e-01 3.7266566877035321e+00 -1.0818658724311438e+00 + 68 8.1961211837130621e-02 -3.5570651112557666e-02 -3.5157302537620594e+00 + 69 -6.2728373866269138e-01 -2.7267744726566736e+00 9.9537775326669231e-01 + 70 -2.9603014594596749e-01 3.9112521689299400e+00 1.7782799262643512e+00 + 71 -2.1400291579005106e+00 -2.8265998306349669e+00 2.4454803567748207e+00 + 72 1.2252665174715947e+00 1.8937900711272986e+00 -3.0560489361858294e+00 + 73 -3.4366253701592071e+00 -3.0728708291251849e+00 -2.8755624856904229e+00 + 74 3.2113319899987847e-01 -2.0408399212556789e+00 -2.4817036798308600e+00 + 75 2.3993994751634551e+00 -5.4038696805398221e+00 2.9783868115053167e+00 + 76 -4.3087336411254489e+00 -5.2637599316272494e+00 -5.2480326020519472e+00 + 77 -2.0320550196332379e-01 4.6412772506323696e+00 -1.5157732877070116e+00 + 78 -1.8439832209647342e+00 4.1540210600592307e+00 7.9344962175599554e-01 + 79 -3.4057213913449891e-01 4.9061723967338429e+00 -2.6145747014412852e+00 + 80 2.1164541985652741e+00 -4.0729732248037820e-01 4.5537682682393807e+00 + 81 4.4954272557720483e+00 3.4922366648720153e+00 -2.2646334656811526e+00 + 82 -3.5506395759279634e+00 1.1009362664654385e+00 2.2848749119147871e+00 + 83 -1.0456337863134775e+00 -2.9724235443270559e+00 -3.1554579860706039e-01 + 84 -3.3313433991320669e+00 3.2426197185600620e+00 4.6572151933457944e+00 + 85 -1.6604128078447038e+00 -5.0401667704390396e-01 -4.3340028890967668e+00 + 86 -5.1780999254441715e+00 3.7656370977861551e+00 -3.8736456354977027e+00 + 87 2.5810691560850523e+00 3.9129419455686567e+00 1.0071952222896203e+00 + 88 1.2189893770300828e+00 1.2902271765989952e+00 -2.1816564738551678e+00 + 89 5.1717608355196276e-01 -2.2766313967224597e-01 4.0357834558791783e+00 + 90 5.5837971079057566e-02 -6.3312910436398295e-01 1.1338376610212304e+00 + 91 2.3776569282084887e+00 -1.3713335058521431e-01 1.8320253886114886e+00 + 92 -7.4605155753866548e-01 6.2639691169766998e-01 7.0950844496934851e+00 + 93 -2.7959006485060511e+00 2.6518449844717504e+00 -4.9418005822869606e+00 + 94 -1.9284812027027982e+00 3.6728996905807318e+00 -1.8903320575690112e+00 + 95 2.7501847555635877e+00 1.1800402620831729e+00 1.0386547735831460e+00 + 96 2.8874286555416040e-01 -8.4184451809625471e-01 -4.5827458970087132e-01 + 97 2.4177527590722883e+00 -4.1799340496126005e+00 4.2734972725103830e+00 + 98 2.9163123188810642e+00 1.1372045084901788e-01 2.4063982964447964e-01 + 99 1.1211713580663827e+00 -4.1852692109665268e+00 2.7055107929805726e+00 + 100 -3.3366806196512105e-01 -2.8592865937324192e+00 -3.6174665813781948e-01 + 101 -4.0598737192925762e+00 1.4790701200934706e+00 -2.0390573716466149e+00 + 102 -1.3972933493773390e+00 -1.5890688842927938e+00 1.2229127903290575e+00 + 103 1.7226829337464682e+00 4.6041363206313601e-01 1.6231271754939924e+00 + 104 4.7487429565043344e+00 -2.0032508711704624e+00 -2.3351656873697602e+00 + 105 -3.0211988899794467e-01 -3.1647229185550834e+00 -3.4484252242802793e-01 + 106 -4.3757968924704223e+00 -1.4988492973802650e+00 3.4848185514121544e-01 + 107 -2.3376048805824369e-02 -5.2171266030795724e+00 1.0422526834227595e+00 + 108 3.5686225189826546e+00 -3.5083544149656913e+00 1.5296762770586798e+00 + 109 -2.2429190678755635e+00 1.2762137613261069e+00 -3.4561335371333839e+00 + 110 -2.5249858397827396e-01 -1.6311993993014295e+00 5.6327007942433740e+00 + 111 2.3600434001454698e+00 2.5432001280052896e+00 3.1710184050148222e+00 + 112 2.2569424883932276e+00 3.6974145225970800e-01 -3.5079037684111525e-01 + 113 -5.0373146177377075e+00 -3.5792639981389738e+00 -4.2214396499888753e+00 + 114 -3.5333518619269451e+00 1.0268969392472418e+00 8.7615872588378296e-01 + 115 -1.7772253346151046e+00 2.1897240981816353e+00 4.0771383097941207e+00 + 116 4.2488265275528576e+00 -4.3879293775874464e+00 3.7692331388491169e+00 + 117 2.7105634024928436e+00 3.1321616846328593e+00 1.7466641233894660e+00 + 118 8.7345045914395758e-01 7.6780961728565911e-01 -3.2428866998030798e-01 + 119 8.1222707163570795e-01 -3.1415725783562989e+00 -3.3658388474833179e+00 + 120 -1.4293980095456700e+00 4.0300936576663116e+00 -2.0006489138695445e+00 + 121 8.6574115149026409e-02 -1.1025347346522691e+00 -3.3832826272724698e-01 + 122 3.5829961754217070e+00 -5.6274174997306403e-01 1.4127528025967464e+00 + 123 3.0632055304618984e+00 1.7103486318850667e+00 -2.8047593712683141e+00 + 124 -1.3875136436688347e+00 -4.4223159472757931e+00 -2.5405244604650492e+00 + 125 -1.6911573920575489e+00 1.8495318348477723e+00 -1.3750758436991293e+00 + 126 -2.2677591075287968e+00 3.3580212813414940e+00 -2.2471871608771297e+00 + 127 5.5289268843360615e+00 -1.7453255640697956e+00 -2.0435451118904822e+00 + 128 4.5908794739248808e+00 4.8343851592710294e+00 3.9665064357692685e+00 + 129 2.2065977620733399e-01 6.8508757018167454e-01 -4.7014971045393039e-01 + 130 -4.0124462717250617e+00 -2.1228312063765644e+00 -9.9897973861187095e-01 + 131 2.9685852583505956e-01 3.7266566877035285e+00 -1.0818658724311603e+00 + 132 8.1961211837090445e-02 -3.5570651112592298e-02 -3.5157302537620549e+00 + 133 -6.2728373866266207e-01 -2.7267744726566501e+00 9.9537775326668165e-01 + 134 -2.9603014594592447e-01 3.9112521689299351e+00 1.7782799262643756e+00 + 135 -2.1400291579006119e+00 -2.8265998306350260e+00 2.4454803567748762e+00 + 136 1.2252665174715807e+00 1.8937900711273210e+00 -3.0560489361858236e+00 + 137 -3.4366253701592004e+00 -3.0728708291251836e+00 -2.8755624856904256e+00 + 138 3.2113319900006487e-01 -2.0408399212555270e+00 -2.4817036798308107e+00 + 139 2.3993994751634760e+00 -5.4038696805398221e+00 2.9783868115053194e+00 + 140 -4.3087336411253938e+00 -5.2637599316271855e+00 -5.2480326020518921e+00 + 141 -2.0320550196332093e-01 4.6412772506323847e+00 -1.5157732877070242e+00 + 142 -1.8439832209649119e+00 4.1540210600591259e+00 7.9344962175592482e-01 + 143 -3.4057213913447748e-01 4.9061723967338047e+00 -2.6145747014412515e+00 + 144 2.1164541985650991e+00 -4.0729732248055028e-01 4.5537682682394323e+00 + 145 4.4954272557720785e+00 3.4922366648720087e+00 -2.2646334656811336e+00 + 146 -3.5506395759279696e+00 1.1009362664654632e+00 2.2848749119148124e+00 + 147 -1.0456337863134513e+00 -2.9724235443270421e+00 -3.1554579860704091e-01 + 148 -3.3313433991320207e+00 3.2426197185600190e+00 4.6572151933457686e+00 + 149 -1.6604128078446929e+00 -5.0401667704393449e-01 -4.3340028890967801e+00 + 150 -5.1780999254441360e+00 3.7656370977861120e+00 -3.8736456354976614e+00 + 151 2.5810691560850336e+00 3.9129419455686074e+00 1.0071952222896006e+00 + 152 1.2189893770300262e+00 1.2902271765990314e+00 -2.1816564738551665e+00 + 153 5.1717608355199707e-01 -2.2766313967227483e-01 4.0357834558791748e+00 + 154 5.5837971079133963e-02 -6.3312910436398928e-01 1.1338376610212486e+00 + 155 2.3776569282086086e+00 -1.3713335058519083e-01 1.8320253886114819e+00 + 156 -7.4605155753865993e-01 6.2639691169766987e-01 7.0950844496935401e+00 + 157 -2.7959006485061026e+00 2.6518449844718162e+00 -4.9418005822869784e+00 + 158 -1.9284812027028533e+00 3.6728996905807429e+00 -1.8903320575690574e+00 + 159 2.7501847555635144e+00 1.1800402620831889e+00 1.0386547735831377e+00 + 160 2.8874286555417567e-01 -8.4184451809624117e-01 -4.5827458970091001e-01 + 161 2.4177527590723455e+00 -4.1799340496126893e+00 4.2734972725104754e+00 + 162 2.9163123188810771e+00 1.1372045084902060e-01 2.4063982964448416e-01 + 163 1.1211713580663814e+00 -4.1852692109665393e+00 2.7055107929805637e+00 + 164 -3.3366806196511456e-01 -2.8592865937323801e+00 -3.6174665813781581e-01 + 165 -4.0598737192925674e+00 1.4790701200934642e+00 -2.0390573716466025e+00 + 166 -1.3972933493773418e+00 -1.5890688842927947e+00 1.2229127903290475e+00 + 167 1.7226829337464684e+00 4.6041363206314684e-01 1.6231271754940000e+00 + 168 4.7487429565043175e+00 -2.0032508711704686e+00 -2.3351656873697832e+00 + 169 -3.0211988899796099e-01 -3.1647229185550936e+00 -3.4484252242803343e-01 + 170 -4.3757968924703894e+00 -1.4988492973802519e+00 3.4848185514123003e-01 + 171 -2.3376048805854945e-02 -5.2171266030795884e+00 1.0422526834227401e+00 + 172 3.5686225189826550e+00 -3.5083544149657140e+00 1.5296762770587022e+00 + 173 -2.2429190678755266e+00 1.2762137613261175e+00 -3.4561335371333590e+00 + 174 -2.5249858397830222e-01 -1.6311993993014464e+00 5.6327007942433953e+00 + 175 2.3600434001454755e+00 2.5432001280052940e+00 3.1710184050148360e+00 + 176 2.2569424883932507e+00 3.6974145225968996e-01 -3.5079037684110964e-01 + 177 -5.0373146177377981e+00 -3.5792639981390417e+00 -4.2214396499889411e+00 + 178 -3.5333518619269650e+00 1.0268969392472225e+00 8.7615872588376031e-01 + 179 -1.7772253346150948e+00 2.1897240981816073e+00 4.0771383097941376e+00 + 180 4.2488265275528398e+00 -4.3879293775873567e+00 3.7692331388490872e+00 + 181 2.7105634024928884e+00 3.1321616846329201e+00 1.7466641233895275e+00 + 182 8.7345045914397823e-01 7.6780961728569319e-01 -3.2428866998029959e-01 + 183 8.1222707163561303e-01 -3.1415725783563042e+00 -3.3658388474832615e+00 + 184 -1.4293980095456353e+00 4.0300936576662263e+00 -2.0006489138695152e+00 + 185 8.6574115148984901e-02 -1.1025347346522825e+00 -3.3832826272727029e-01 + 186 3.5829961754216990e+00 -5.6274174997292847e-01 1.4127528025966907e+00 + 187 3.0632055304618695e+00 1.7103486318851024e+00 -2.8047593712682977e+00 + 188 -1.3875136436688005e+00 -4.4223159472758375e+00 -2.5405244604650630e+00 + 189 -1.6911573920574956e+00 1.8495318348477674e+00 -1.3750758436991164e+00 + 190 -2.2677591075288310e+00 3.3580212813414985e+00 -2.2471871608771572e+00 + 191 5.5289268843360695e+00 -1.7453255640698218e+00 -2.0435451118905417e+00 + 192 4.5908794739248941e+00 4.8343851592710472e+00 3.9665064357693018e+00 + 193 2.2065977620732177e-01 6.8508757018165101e-01 -4.7014971045390719e-01 + 194 -4.0124462717250502e+00 -2.1228312063765382e+00 -9.9897973861185496e-01 + 195 2.9685852583505262e-01 3.7266566877035454e+00 -1.0818658724311427e+00 + 196 8.1961211837097786e-02 -3.5570651112571475e-02 -3.5157302537620616e+00 + 197 -6.2728373866267539e-01 -2.7267744726566523e+00 9.9537775326668376e-01 + 198 -2.9603014594597088e-01 3.9112521689299240e+00 1.7782799262643507e+00 + 199 -2.1400291579005177e+00 -2.8265998306349993e+00 2.4454803567748304e+00 + 200 1.2252665174716113e+00 1.8937900711272890e+00 -3.0560489361858205e+00 + 201 -3.4366253701591956e+00 -3.0728708291251809e+00 -2.8755624856904198e+00 + 202 3.2113319899990000e-01 -2.0408399212556190e+00 -2.4817036798308507e+00 + 203 2.3993994751634578e+00 -5.4038696805398194e+00 2.9783868115053100e+00 + 204 -4.3087336411254391e+00 -5.2637599316272476e+00 -5.2480326020519348e+00 + 205 -2.0320550196332396e-01 4.6412772506323590e+00 -1.5157732877070236e+00 + 206 -1.8439832209647438e+00 4.1540210600591623e+00 7.9344962175601397e-01 + 207 -3.4057213913451267e-01 4.9061723967338668e+00 -2.6145747014413105e+00 + 208 2.1164541985652097e+00 -4.0729732248044204e-01 4.5537682682393914e+00 + 209 4.4954272557721220e+00 3.4922366648720633e+00 -2.2646334656811820e+00 + 210 -3.5506395759279887e+00 1.1009362664654772e+00 2.2848749119148128e+00 + 211 -1.0456337863134837e+00 -2.9724235443270404e+00 -3.1554579860706405e-01 + 212 -3.3313433991320491e+00 3.2426197185600505e+00 4.6572151933457935e+00 + 213 -1.6604128078446749e+00 -5.0401667704395470e-01 -4.3340028890967774e+00 + 214 -5.1780999254441440e+00 3.7656370977861240e+00 -3.8736456354976729e+00 + 215 2.5810691560850549e+00 3.9129419455686381e+00 1.0071952222896086e+00 + 216 1.2189893770300753e+00 1.2902271765990028e+00 -2.1816564738551638e+00 + 217 5.1717608355195643e-01 -2.2766313967224022e-01 4.0357834558791765e+00 + 218 5.5837971079070015e-02 -6.3312910436396785e-01 1.1338376610212360e+00 + 219 2.3776569282085069e+00 -1.3713335058519693e-01 1.8320253886115079e+00 + 220 -7.4605155753861085e-01 6.2639691169761247e-01 7.0950844496935002e+00 + 221 -2.7959006485060791e+00 2.6518449844717868e+00 -4.9418005822869757e+00 + 222 -1.9284812027028138e+00 3.6728996905807301e+00 -1.8903320575690223e+00 + 223 2.7501847555635788e+00 1.1800402620831882e+00 1.0386547735831531e+00 + 224 2.8874286555415263e-01 -8.4184451809625616e-01 -4.5827458970088164e-01 + 225 2.4177527590723056e+00 -4.1799340496126334e+00 4.2734972725104114e+00 + 226 2.9163123188810651e+00 1.1372045084902660e-01 2.4063982964447489e-01 + 227 1.1211713580663849e+00 -4.1852692109665455e+00 2.7055107929805615e+00 + 228 -3.3366806196511983e-01 -2.8592865937323739e+00 -3.6174665813781320e-01 + 229 -4.0598737192925798e+00 1.4790701200934622e+00 -2.0390573716466074e+00 + 230 -1.3972933493773356e+00 -1.5890688842927925e+00 1.2229127903290635e+00 + 231 1.7226829337464800e+00 4.6041363206314612e-01 1.6231271754940013e+00 + 232 4.7487429565043344e+00 -2.0032508711704855e+00 -2.3351656873697806e+00 + 233 -3.0211988899795655e-01 -3.1647229185550732e+00 -3.4484252242802338e-01 + 234 -4.3757968924704258e+00 -1.4988492973802843e+00 3.4848185514119656e-01 + 235 -2.3376048805818568e-02 -5.2171266030795858e+00 1.0422526834227763e+00 + 236 3.5686225189826279e+00 -3.5083544149656456e+00 1.5296762770586625e+00 + 237 -2.2429190678755799e+00 1.2762137613261333e+00 -3.4561335371333888e+00 + 238 -2.5249858397824543e-01 -1.6311993993013938e+00 5.6327007942433767e+00 + 239 2.3600434001454706e+00 2.5432001280052909e+00 3.1710184050148222e+00 + 240 2.2569424883932210e+00 3.6974145225969474e-01 -3.5079037684111503e-01 + 241 -5.0373146177377324e+00 -3.5792639981390222e+00 -4.2214396499889162e+00 + 242 -3.5333518619269380e+00 1.0268969392472143e+00 8.7615872588376464e-01 + 243 -1.7772253346151146e+00 2.1897240981816237e+00 4.0771383097941385e+00 + 244 4.2488265275528496e+00 -4.3879293775873647e+00 3.7692331388490987e+00 + 245 2.7105634024928511e+00 3.1321616846329028e+00 1.7466641233895173e+00 + 246 8.7345045914395836e-01 7.6780961728569264e-01 -3.2428866998030559e-01 + 247 8.1222707163569863e-01 -3.1415725783563513e+00 -3.3658388474832881e+00 + 248 -1.4293980095456251e+00 4.0300936576662192e+00 -2.0006489138695107e+00 + 249 8.6574115149029129e-02 -1.1025347346522740e+00 -3.3832826272724925e-01 + 250 3.5829961754216813e+00 -5.6274174997293747e-01 1.4127528025966929e+00 + 251 3.0632055304618993e+00 1.7103486318850718e+00 -2.8047593712682799e+00 + 252 -1.3875136436688631e+00 -4.4223159472758287e+00 -2.5405244604650763e+00 + 253 -1.6911573920575287e+00 1.8495318348477638e+00 -1.3750758436991428e+00 + 254 -2.2677591075288426e+00 3.3580212813415100e+00 -2.2471871608771661e+00 + 255 5.5289268843360224e+00 -1.7453255640698009e+00 -2.0435451118904995e+00 + 256 4.5908794739248977e+00 4.8343851592710472e+00 3.9665064357692983e+00 + 257 2.2065977620732941e-01 6.8508757018167110e-01 -4.7014971045391796e-01 + 258 -4.0124462717250724e+00 -2.1228312063765689e+00 -9.9897973861188238e-01 + 259 2.9685852583505434e-01 3.7266566877035090e+00 -1.0818658724311474e+00 + 260 8.1961211837135978e-02 -3.5570651112582445e-02 -3.5157302537620394e+00 + 261 -6.2728373866268039e-01 -2.7267744726566638e+00 9.9537775326669742e-01 + 262 -2.9603014594592375e-01 3.9112521689299506e+00 1.7782799262643629e+00 + 263 -2.1400291579006092e+00 -2.8265998306349847e+00 2.4454803567748686e+00 + 264 1.2252665174715418e+00 1.8937900711273350e+00 -3.0560489361858800e+00 + 265 -3.4366253701592124e+00 -3.0728708291251818e+00 -2.8755624856904229e+00 + 266 3.2113319900003767e-01 -2.0408399212556123e+00 -2.4817036798307996e+00 + 267 2.3993994751634831e+00 -5.4038696805398132e+00 2.9783868115053385e+00 + 268 -4.3087336411253823e+00 -5.2637599316271810e+00 -5.2480326020518948e+00 + 269 -2.0320550196331744e-01 4.6412772506323856e+00 -1.5157732877070211e+00 + 270 -1.8439832209648801e+00 4.1540210600592022e+00 7.9344962175594513e-01 + 271 -3.4057213913447049e-01 4.9061723967337834e+00 -2.6145747014412617e+00 + 272 2.1164541985651875e+00 -4.0729732248049783e-01 4.5537682682393914e+00 + 273 4.4954272557719896e+00 3.4922366648719509e+00 -2.2646334656810931e+00 + 274 -3.5506395759279417e+00 1.1009362664654467e+00 2.2848749119148133e+00 + 275 -1.0456337863134686e+00 -2.9724235443270923e+00 -3.1554579860704990e-01 + 276 -3.3313433991320278e+00 3.2426197185599994e+00 4.6572151933457437e+00 + 277 -1.6604128078447160e+00 -5.0401667704387920e-01 -4.3340028890968076e+00 + 278 -5.1780999254442071e+00 3.7656370977861950e+00 -3.8736456354977591e+00 + 279 2.5810691560850652e+00 3.9129419455686545e+00 1.0071952222896858e+00 + 280 1.2189893770300313e+00 1.2902271765990312e+00 -2.1816564738551856e+00 + 281 5.1717608355203271e-01 -2.2766313967228052e-01 4.0357834558791534e+00 + 282 5.5837971079129717e-02 -6.3312910436400760e-01 1.1338376610212428e+00 + 283 2.3776569282085740e+00 -1.3713335058519521e-01 1.8320253886114690e+00 + 284 -7.4605155753871610e-01 6.2639691169773581e-01 7.0950844496935010e+00 + 285 -2.7959006485060862e+00 2.6518449844717629e+00 -4.9418005822869766e+00 + 286 -1.9284812027028417e+00 3.6728996905807465e+00 -1.8903320575690452e+00 + 287 2.7501847555635206e+00 1.1800402620831736e+00 1.0386547735831380e+00 + 288 2.8874286555417988e-01 -8.4184451809622918e-01 -4.5827458970090557e-01 + 289 2.4177527590723296e+00 -4.1799340496126653e+00 4.2734972725104541e+00 + 290 2.9163123188810616e+00 1.1372045084901131e-01 2.4063982964448682e-01 + 291 1.1211713580663807e+00 -4.1852692109665259e+00 2.7055107929805704e+00 + 292 -3.3366806196508991e-01 -2.8592865937324055e+00 -3.6174665813779472e-01 + 293 -4.0598737192925585e+00 1.4790701200934770e+00 -2.0390573716466172e+00 + 294 -1.3972933493773392e+00 -1.5890688842927909e+00 1.2229127903290435e+00 + 295 1.7226829337464613e+00 4.6041363206313329e-01 1.6231271754939749e+00 + 296 4.7487429565043104e+00 -2.0032508711704766e+00 -2.3351656873698632e+00 + 297 -3.0211988899794845e-01 -3.1647229185551105e+00 -3.4484252242803848e-01 + 298 -4.3757968924703503e+00 -1.4988492973802341e+00 3.4848185514129637e-01 + 299 -2.3376048805917350e-02 -5.2171266030795431e+00 1.0422526834226988e+00 + 300 3.5686225189826670e+00 -3.5083544149657531e+00 1.5296762770587127e+00 + 301 -2.2429190678754769e+00 1.2762137613260611e+00 -3.4561335371333071e+00 + 302 -2.5249858397829578e-01 -1.6311993993015041e+00 5.6327007942433376e+00 + 303 2.3600434001454920e+00 2.5432001280053047e+00 3.1710184050148311e+00 + 304 2.2569424883932672e+00 3.6974145225971183e-01 -3.5079037684108039e-01 + 305 -5.0373146177377928e+00 -3.5792639981390089e+00 -4.2214396499889082e+00 + 306 -3.5333518619269384e+00 1.0268969392472114e+00 8.7615872588375443e-01 + 307 -1.7772253346151266e+00 2.1897240981816526e+00 4.0771383097941225e+00 + 308 4.2488265275529011e+00 -4.3879293775874855e+00 3.7692331388491231e+00 + 309 2.7105634024928857e+00 3.1321616846328917e+00 1.7466641233895481e+00 + 310 8.7345045914396779e-01 7.6780961728566777e-01 -3.2428866998030031e-01 + 311 8.1222707163562902e-01 -3.1415725783562807e+00 -3.3658388474833245e+00 + 312 -1.4293980095456613e+00 4.0300936576663045e+00 -2.0006489138695276e+00 + 313 8.6574115148966818e-02 -1.1025347346522749e+00 -3.3832826272726396e-01 + 314 3.5829961754217194e+00 -5.6274174997303006e-01 1.4127528025966833e+00 + 315 3.0632055304618753e+00 1.7103486318850509e+00 -2.8047593712683314e+00 + 316 -1.3875136436687978e+00 -4.4223159472758278e+00 -2.5405244604650568e+00 + 317 -1.6911573920575360e+00 1.8495318348477792e+00 -1.3750758436991246e+00 + 318 -2.2677591075287729e+00 3.3580212813414976e+00 -2.2471871608771155e+00 + 319 5.5289268843361041e+00 -1.7453255640698027e+00 -2.0435451118905217e+00 + 320 4.5908794739248941e+00 4.8343851592710383e+00 3.9665064357692850e+00 + 321 2.2065977620731958e-01 6.8508757018164912e-01 -4.7014971045389981e-01 + 322 -4.0124462717250662e+00 -2.1228312063765467e+00 -9.9897973861187206e-01 + 323 2.9685852583504557e-01 3.7266566877035276e+00 -1.0818658724311265e+00 + 324 8.1961211837145054e-02 -3.5570651112557784e-02 -3.5157302537620483e+00 + 325 -6.2728373866269860e-01 -2.7267744726566718e+00 9.9537775326670286e-01 + 326 -2.9603014594596616e-01 3.9112521689299413e+00 1.7782799262643401e+00 + 327 -2.1400291579005142e+00 -2.8265998306349629e+00 2.4454803567748229e+00 + 328 1.2252665174715800e+00 1.8937900711272995e+00 -3.0560489361858694e+00 + 329 -3.4366253701592036e+00 -3.0728708291251809e+00 -2.8755624856904167e+00 + 330 3.2113319899987736e-01 -2.0408399212556958e+00 -2.4817036798308467e+00 + 331 2.3993994751634653e+00 -5.4038696805398132e+00 2.9783868115053269e+00 + 332 -4.3087336411254276e+00 -5.2637599316272450e+00 -5.2480326020519295e+00 + 333 -2.0320550196332526e-01 4.6412772506323616e+00 -1.5157732877070209e+00 + 334 -1.8439832209647171e+00 4.1540210600592227e+00 7.9344962175604017e-01 + 335 -3.4057213913450601e-01 4.9061723967338473e+00 -2.6145747014413216e+00 + 336 2.1164541985652989e+00 -4.0729732248038819e-01 4.5537682682393461e+00 + 337 4.4954272557720341e+00 3.4922366648720105e+00 -2.2646334656811460e+00 + 338 -3.5506395759279554e+00 1.1009362664654545e+00 2.2848749119148124e+00 + 339 -1.0456337863135057e+00 -2.9724235443270817e+00 -3.1554579860707777e-01 + 340 -3.3313433991320545e+00 3.2426197185600296e+00 4.6572151933457686e+00 + 341 -1.6604128078446965e+00 -5.0401667704389908e-01 -4.3340028890967988e+00 + 342 -5.1780999254442168e+00 3.7656370977862070e+00 -3.8736456354977689e+00 + 343 2.5810691560850914e+00 3.9129419455686771e+00 1.0071952222896947e+00 + 344 1.2189893770300737e+00 1.2902271765990079e+00 -2.1816564738551838e+00 + 345 5.1717608355198685e-01 -2.2766313967224525e-01 4.0357834558791614e+00 + 346 5.5837971079071361e-02 -6.3312910436398895e-01 1.1338376610212340e+00 + 347 2.3776569282084776e+00 -1.3713335058520099e-01 1.8320253886114886e+00 + 348 -7.4605155753866903e-01 6.2639691169767264e-01 7.0950844496934700e+00 + 349 -2.7959006485060667e+00 2.6518449844717411e+00 -4.9418005822869757e+00 + 350 -1.9284812027028029e+00 3.6728996905807318e+00 -1.8903320575690150e+00 + 351 2.7501847555635859e+00 1.1800402620831765e+00 1.0386547735831562e+00 + 352 2.8874286555416440e-01 -8.4184451809624505e-01 -4.5827458970087631e-01 + 353 2.4177527590722883e+00 -4.1799340496126067e+00 4.2734972725103901e+00 + 354 2.9163123188810500e+00 1.1372045084901908e-01 2.4063982964447680e-01 + 355 1.1211713580663856e+00 -4.1852692109665250e+00 2.7055107929805691e+00 + 356 -3.3366806196510224e-01 -2.8592865937324086e+00 -3.6174665813779844e-01 + 357 -4.0598737192925727e+00 1.4790701200934737e+00 -2.0390573716466203e+00 + 358 -1.3972933493773345e+00 -1.5890688842927898e+00 1.2229127903290584e+00 + 359 1.7226829337464711e+00 4.6041363206313263e-01 1.6231271754939733e+00 + 360 4.7487429565043389e+00 -2.0032508711704824e+00 -2.3351656873698436e+00 + 361 -3.0211988899794429e-01 -3.1647229185550865e+00 -3.4484252242802960e-01 + 362 -4.3757968924703956e+00 -1.4988492973802561e+00 3.4848185514126701e-01 + 363 -2.3376048805876765e-02 -5.2171266030795485e+00 1.0422526834227379e+00 + 364 3.5686225189826288e+00 -3.5083544149656833e+00 1.5296762770586578e+00 + 365 -2.2429190678755329e+00 1.2762137613260736e+00 -3.4561335371333461e+00 + 366 -2.5249858397824815e-01 -1.6311993993014644e+00 5.6327007942433225e+00 + 367 2.3600434001454915e+00 2.5432001280053038e+00 3.1710184050148182e+00 + 368 2.2569424883932401e+00 3.6974145225972127e-01 -3.5079037684107833e-01 + 369 -5.0373146177377333e+00 -3.5792639981389955e+00 -4.2214396499888878e+00 + 370 -3.5333518619269193e+00 1.0268969392472043e+00 8.7615872588375687e-01 + 371 -1.7772253346151403e+00 2.1897240981816610e+00 4.0771383097941243e+00 + 372 4.2488265275529082e+00 -4.3879293775874944e+00 3.7692331388491360e+00 + 373 2.7105634024928529e+00 3.1321616846328841e+00 1.7466641233895353e+00 + 374 8.7345045914395492e-01 7.6780961728566688e-01 -3.2428866998030270e-01 + 375 8.1222707163570185e-01 -3.1415725783563140e+00 -3.3658388474833436e+00 + 376 -1.4293980095456515e+00 4.0300936576662982e+00 -2.0006489138695236e+00 + 377 8.6574115149007508e-02 -1.1025347346522656e+00 -3.3832826272724670e-01 + 378 3.5829961754217021e+00 -5.6274174997304049e-01 1.4127528025966869e+00 + 379 3.0632055304619046e+00 1.7103486318850294e+00 -2.8047593712683248e+00 + 380 -1.3875136436688611e+00 -4.4223159472758171e+00 -2.5405244604650710e+00 + 381 -1.6911573920575631e+00 1.8495318348477765e+00 -1.3750758436991477e+00 + 382 -2.2677591075287888e+00 3.3580212813415158e+00 -2.2471871608771270e+00 + 383 5.5289268843360633e+00 -1.7453255640697798e+00 -2.0435451118904799e+00 + 384 4.5908794739248933e+00 4.8343851592710401e+00 3.9665064357692801e+00 + 385 2.2065977620732730e-01 6.8508757018166722e-01 -4.7014971045392268e-01 + 386 -4.0124462717250555e+00 -2.1228312063765657e+00 -9.9897973861187450e-01 + 387 2.9685852583504840e-01 3.7266566877035179e+00 -1.0818658724311452e+00 + 388 8.1961211837107736e-02 -3.5570651112587594e-02 -3.5157302537620403e+00 + 389 -6.2728373866267106e-01 -2.7267744726566456e+00 9.9537775326669231e-01 + 390 -2.9603014594592247e-01 3.9112521689299307e+00 1.7782799262643685e+00 + 391 -2.1400291579006185e+00 -2.8265998306350202e+00 2.4454803567748815e+00 + 392 1.2252665174715607e+00 1.8937900711273177e+00 -3.0560489361858738e+00 + 393 -3.4366253701591964e+00 -3.0728708291251805e+00 -2.8755624856904189e+00 + 394 3.2113319900006382e-01 -2.0408399212555475e+00 -2.4817036798308010e+00 + 395 2.3993994751634857e+00 -5.4038696805398176e+00 2.9783868115053309e+00 + 396 -4.3087336411253752e+00 -5.2637599316271784e+00 -5.2480326020518815e+00 + 397 -2.0320550196332074e-01 4.6412772506323767e+00 -1.5157732877070365e+00 + 398 -1.8439832209648899e+00 4.1540210600591241e+00 7.9344962175597222e-01 + 399 -3.4057213913448170e-01 4.9061723967338047e+00 -2.6145747014412812e+00 + 400 2.1164541985651271e+00 -4.0729732248056127e-01 4.5537682682393967e+00 + 401 4.4954272557720563e+00 3.4922366648719958e+00 -2.2646334656811242e+00 + 402 -3.5506395759279665e+00 1.1009362664654851e+00 2.2848749119148377e+00 + 403 -1.0456337863134848e+00 -2.9724235443270710e+00 -3.1554579860705723e-01 + 404 -3.3313433991320127e+00 3.2426197185599919e+00 4.6572151933457420e+00 + 405 -1.6604128078446829e+00 -5.0401667704393338e-01 -4.3340028890968139e+00 + 406 -5.1780999254441831e+00 3.7656370977861631e+00 -3.8736456354977280e+00 + 407 2.5810691560850709e+00 3.9129419455686327e+00 1.0071952222896738e+00 + 408 1.2189893770300229e+00 1.2902271765990374e+00 -2.1816564738551811e+00 + 409 5.1717608355202493e-01 -2.2766313967227628e-01 4.0357834558791481e+00 + 410 5.5837971079144302e-02 -6.3312910436398984e-01 1.1338376610212491e+00 + 411 2.3776569282085980e+00 -1.3713335058517742e-01 1.8320253886114846e+00 + 412 -7.4605155753866470e-01 6.2639691169767375e-01 7.0950844496935259e+00 + 413 -2.7959006485061177e+00 2.6518449844718095e+00 -4.9418005822869944e+00 + 414 -1.9284812027028573e+00 3.6728996905807429e+00 -1.8903320575690619e+00 + 415 2.7501847555635117e+00 1.1800402620831951e+00 1.0386547735831488e+00 + 416 2.8874286555417711e-01 -8.4184451809623262e-01 -4.5827458970091361e-01 + 417 2.4177527590723411e+00 -4.1799340496126929e+00 4.2734972725104763e+00 + 418 2.9163123188810673e+00 1.1372045084901856e-01 2.4063982964448422e-01 + 419 1.1211713580663871e+00 -4.1852692109665384e+00 2.7055107929805620e+00 + 420 -3.3366806196509108e-01 -2.8592865937323548e+00 -3.6174665813779155e-01 + 421 -4.0598737192925629e+00 1.4790701200934655e+00 -2.0390573716466074e+00 + 422 -1.3972933493773372e+00 -1.5890688842927885e+00 1.2229127903290467e+00 + 423 1.7226829337464706e+00 4.6041363206314223e-01 1.6231271754939771e+00 + 424 4.7487429565043096e+00 -2.0032508711704984e+00 -2.3351656873698792e+00 + 425 -3.0211988899795744e-01 -3.1647229185551016e+00 -3.4484252242803315e-01 + 426 -4.3757968924703610e+00 -1.4988492973802494e+00 3.4848185514128066e-01 + 427 -2.3376048805912597e-02 -5.2171266030795564e+00 1.0422526834227130e+00 + 428 3.5686225189826404e+00 -3.5083544149657007e+00 1.5296762770586887e+00 + 429 -2.2429190678754907e+00 1.2762137613260744e+00 -3.4561335371333111e+00 + 430 -2.5249858397827141e-01 -1.6311993993014784e+00 5.6327007942433411e+00 + 431 2.3600434001454915e+00 2.5432001280053038e+00 3.1710184050148325e+00 + 432 2.2569424883932538e+00 3.6974145225970129e-01 -3.5079037684108455e-01 + 433 -5.0373146177378230e+00 -3.5792639981390653e+00 -4.2214396499889535e+00 + 434 -3.5333518619269375e+00 1.0268969392471847e+00 8.7615872588373778e-01 + 435 -1.7772253346151319e+00 2.1897240981816313e+00 4.0771383097941420e+00 + 436 4.2488265275528887e+00 -4.3879293775874038e+00 3.7692331388491107e+00 + 437 2.7105634024928995e+00 3.1321616846329503e+00 1.7466641233895961e+00 + 438 8.7345045914396979e-01 7.6780961728570341e-01 -3.2428866998029504e-01 + 439 8.1222707163561003e-01 -3.1415725783563109e+00 -3.3658388474832925e+00 + 440 -1.4293980095456116e+00 4.0300936576662076e+00 -2.0006489138694881e+00 + 441 8.6574115148964528e-02 -1.1025347346522822e+00 -3.3832826272726874e-01 + 442 3.5829961754216826e+00 -5.6274174997290771e-01 1.4127528025966316e+00 + 443 3.0632055304618788e+00 1.7103486318850583e+00 -2.8047593712683061e+00 + 444 -1.3875136436688247e+00 -4.4223159472758651e+00 -2.5405244604650830e+00 + 445 -1.6911573920575109e+00 1.8495318348477754e+00 -1.3750758436991375e+00 + 446 -2.2677591075288208e+00 3.3580212813415189e+00 -2.2471871608771536e+00 + 447 5.5289268843360748e+00 -1.7453255640698058e+00 -2.0435451118905412e+00 + 448 4.5908794739249110e+00 4.8343851592710587e+00 3.9665064357693121e+00 + 449 2.2065977620731797e-01 6.8508757018164601e-01 -4.7014971045390314e-01 + 450 -4.0124462717250475e+00 -2.1228312063765427e+00 -9.9897973861186151e-01 + 451 2.9685852583504219e-01 3.7266566877035343e+00 -1.0818658724311292e+00 + 452 8.1961211837113107e-02 -3.5570651112571294e-02 -3.5157302537620505e+00 + 453 -6.2728373866268550e-01 -2.7267744726566483e+00 9.9537775326669620e-01 + 454 -2.9603014594597238e-01 3.9112521689299249e+00 1.7782799262643409e+00 + 455 -2.1400291579005266e+00 -2.8265998306349962e+00 2.4454803567748411e+00 + 456 1.2252665174715962e+00 1.8937900711272895e+00 -3.0560489361858609e+00 + 457 -3.4366253701591862e+00 -3.0728708291251734e+00 -2.8755624856904087e+00 + 458 3.2113319899989845e-01 -2.0408399212556350e+00 -2.4817036798308432e+00 + 459 2.3993994751634680e+00 -5.4038696805398168e+00 2.9783868115053189e+00 + 460 -4.3087336411254116e+00 -5.2637599316272343e+00 -5.2480326020519108e+00 + 461 -2.0320550196333101e-01 4.6412772506323465e+00 -1.5157732877070416e+00 + 462 -1.8439832209647335e+00 4.1540210600591578e+00 7.9344962175605360e-01 + 463 -3.4057213913451534e-01 4.9061723967338651e+00 -2.6145747014413372e+00 + 464 2.1164541985652274e+00 -4.0729732248045536e-01 4.5537682682393479e+00 + 465 4.4954272557720998e+00 3.4922366648720518e+00 -2.2646334656811744e+00 + 466 -3.5506395759279834e+00 1.1009362664654998e+00 2.2848749119148426e+00 + 467 -1.0456337863135143e+00 -2.9724235443270688e+00 -3.1554579860708670e-01 + 468 -3.3313433991320420e+00 3.2426197185600270e+00 4.6572151933457713e+00 + 469 -1.6604128078446627e+00 -5.0401667704395514e-01 -4.3340028890968130e+00 + 470 -5.1780999254441911e+00 3.7656370977861737e+00 -3.8736456354977373e+00 + 471 2.5810691560850989e+00 3.9129419455686594e+00 1.0071952222896923e+00 + 472 1.2189893770300682e+00 1.2902271765990110e+00 -2.1816564738551838e+00 + 473 5.1717608355198452e-01 -2.2766313967224341e-01 4.0357834558791552e+00 + 474 5.5837971079085232e-02 -6.3312910436397274e-01 1.1338376610212360e+00 + 475 2.3776569282084941e+00 -1.3713335058517889e-01 1.8320253886114970e+00 + 476 -7.4605155753861430e-01 6.2639691169761458e-01 7.0950844496934895e+00 + 477 -2.7959006485060907e+00 2.6518449844717762e+00 -4.9418005822869873e+00 + 478 -1.9284812027028182e+00 3.6728996905807305e+00 -1.8903320575690257e+00 + 479 2.7501847555635774e+00 1.1800402620831949e+00 1.0386547735831646e+00 + 480 2.8874286555415751e-01 -8.4184451809624661e-01 -4.5827458970088686e-01 + 481 2.4177527590723020e+00 -4.1799340496126378e+00 4.2734972725104132e+00 + 482 2.9163123188810545e+00 1.1372045084902734e-01 2.4063982964447497e-01 + 483 1.1211713580663913e+00 -4.1852692109665437e+00 2.7055107929805589e+00 + 484 -3.3366806196509163e-01 -2.8592865937323566e+00 -3.6174665813778917e-01 + 485 -4.0598737192925771e+00 1.4790701200934606e+00 -2.0390573716466096e+00 + 486 -1.3972933493773290e+00 -1.5890688842927849e+00 1.2229127903290600e+00 + 487 1.7226829337464831e+00 4.6041363206314256e-01 1.6231271754939769e+00 + 488 4.7487429565043335e+00 -2.0032508711705099e+00 -2.3351656873698663e+00 + 489 -3.0211988899795733e-01 -3.1647229185550767e+00 -3.4484252242802543e-01 + 490 -4.3757968924704000e+00 -1.4988492973802796e+00 3.4848185514124658e-01 + 491 -2.3376048805871998e-02 -5.2171266030795600e+00 1.0422526834227526e+00 + 492 3.5686225189826155e+00 -3.5083544149656434e+00 1.5296762770586498e+00 + 493 -2.2429190678755497e+00 1.2762137613260978e+00 -3.4561335371333484e+00 + 494 -2.5249858397821118e-01 -1.6311993993014249e+00 5.6327007942433198e+00 + 495 2.3600434001454902e+00 2.5432001280053025e+00 3.1710184050148209e+00 + 496 2.2569424883932276e+00 3.6974145225970889e-01 -3.5079037684108527e-01 + 497 -5.0373146177377635e+00 -3.5792639981390502e+00 -4.2214396499889375e+00 + 498 -3.5333518619269140e+00 1.0268969392471858e+00 8.7615872588374821e-01 + 499 -1.7772253346151548e+00 2.1897240981816428e+00 4.0771383097941429e+00 + 500 4.2488265275528976e+00 -4.3879293775874126e+00 3.7692331388491165e+00 + 501 2.7105634024928711e+00 3.1321616846329334e+00 1.7466641233895854e+00 + 502 8.7345045914395414e-01 7.6780961728569797e-01 -3.2428866998030276e-01 + 503 8.1222707163569130e-01 -3.1415725783563553e+00 -3.3658388474833130e+00 + 504 -1.4293980095456063e+00 4.0300936576662059e+00 -2.0006489138694903e+00 + 505 8.6574115149004913e-02 -1.1025347346522696e+00 -3.3832826272724970e-01 + 506 3.5829961754216701e+00 -5.6274174997292259e-01 1.4127528025966396e+00 + 507 3.0632055304618988e+00 1.7103486318850267e+00 -2.8047593712682906e+00 + 508 -1.3875136436688860e+00 -4.4223159472758544e+00 -2.5405244604650981e+00 + 509 -1.6911573920575413e+00 1.8495318348477698e+00 -1.3750758436991610e+00 + 510 -2.2677591075288315e+00 3.3580212813415331e+00 -2.2471871608771616e+00 + 511 5.5289268843360286e+00 -1.7453255640697798e+00 -2.0435451118904946e+00 + 512 4.5908794739249092e+00 4.8343851592710569e+00 3.9665064357693121e+00 ... From 886ad8359eae51a18ee4f3f5f3c3c6b730c0eb8f Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 May 2022 20:05:33 -0400 Subject: [PATCH 34/46] use venv instead of virtualenv --- python/install.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/install.py b/python/install.py index a71a601c42..03b3366ba6 100644 --- a/python/install.py +++ b/python/install.py @@ -62,10 +62,10 @@ shutil.copy(args.lib,'lammps') # create a virtual environment for building the wheel shutil.rmtree('buildwheel',True) try: - txt = subprocess.check_output([sys.executable, '-m', 'virtualenv', 'buildwheel', '-p', sys.executable], stderr=subprocess.STDOUT, shell=False) + txt = subprocess.check_output([sys.executable, '-m', 'venv', 'buildwheel'], stderr=subprocess.STDOUT, shell=False) print(txt.decode('UTF-8')) except subprocess.CalledProcessError as err: - sys.exit("Failed to create a virtualenv: {0}".format(err.output.decode('UTF-8'))) + sys.exit("Failed to create a virtual environment: {0}".format(err.output.decode('UTF-8'))) # now run the commands to build the wheel. those must be in a separate script # and run in subprocess, since this will use the virtual environment and From 5f811f852f12f7332ddc4db8e2177a2c5bd10a9a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 28 May 2022 04:19:47 -0400 Subject: [PATCH 35/46] stop with detailed parser error message with incorrect potential tables --- src/MOLECULE/angle_table.cpp | 14 ++++---------- src/MOLECULE/bond_table.cpp | 20 +++++--------------- src/MOLECULE/dihedral_table.cpp | 9 +++++---- src/pair_table.cpp | 18 ++++-------------- 4 files changed, 18 insertions(+), 43 deletions(-) diff --git a/src/MOLECULE/angle_table.cpp b/src/MOLECULE/angle_table.cpp index eeb30c4d64..c3959dc898 100644 --- a/src/MOLECULE/angle_table.cpp +++ b/src/MOLECULE/angle_table.cpp @@ -402,26 +402,20 @@ void AngleTable::read_table(Table *tb, char *file, char *keyword) // read a,e,f table values from file - int cerror = 0; reader.skip_line(); for (int i = 0; i < tb->ninput; i++) { - line = reader.next_line(4); + line = reader.next_line(); try { ValueTokenizer values(line); values.next_int(); tb->afile[i] = values.next_double(); tb->efile[i] = values.next_double(); tb->ffile[i] = values.next_double(); - } catch (TokenizerException &) { - ++cerror; + } catch (TokenizerException &e) { + error->one(FLERR, "Error parsing angle table '{}' line {} of {}. {}\nLine was: {}", keyword, + i + 1, tb->ninput, e.what(), line); } } - - // warn if data was read incompletely, e.g. columns were missing - - if (cerror) - error->warning(FLERR, "{} of {} lines in table incomplete or could not be parsed", cerror, - tb->ninput); } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/bond_table.cpp b/src/MOLECULE/bond_table.cpp index e1eac7c4c2..7af08a4a08 100644 --- a/src/MOLECULE/bond_table.cpp +++ b/src/MOLECULE/bond_table.cpp @@ -325,20 +325,20 @@ void BondTable::read_table(Table *tb, char *file, char *keyword) // read r,e,f table values from file - int cerror = 0; int r0idx = -1; reader.skip_line(); for (int i = 0; i < tb->ninput; i++) { - line = reader.next_line(4); + line = reader.next_line(); try { ValueTokenizer values(line); values.next_int(); tb->rfile[i] = values.next_double(); tb->efile[i] = values.next_double(); tb->ffile[i] = values.next_double(); - } catch (TokenizerException &) { - ++cerror; + } catch (TokenizerException &e) { + error->one(FLERR, "Error parsing bond table '{}' line {} of {}. {}\nLine was: {}", keyword, + i + 1, tb->ninput, e.what(), line); } if (tb->efile[i] < emin) { @@ -373,21 +373,11 @@ void BondTable::read_table(Table *tb, char *file, char *keyword) if (f > fleft && f > fright) ferror++; } - if (ferror) { + if (ferror) error->warning(FLERR, "{} of {} force values in table are inconsistent with -dE/dr.\n" "WARNING: Should only be flagged at inflection points", ferror, tb->ninput); - } - - // warn if data was read incompletely, e.g. columns were missing - - if (cerror) { - error->warning(FLERR, - "{} of {} lines in table were incomplete or could not be" - " parsed completely", - cerror, tb->ninput); - } } /* ---------------------------------------------------------------------- diff --git a/src/MOLECULE/dihedral_table.cpp b/src/MOLECULE/dihedral_table.cpp index ea0b30cbd5..1a9bc923a7 100644 --- a/src/MOLECULE/dihedral_table.cpp +++ b/src/MOLECULE/dihedral_table.cpp @@ -1020,23 +1020,24 @@ void DihedralTable::read_table(Table *tb, char *file, char *keyword) // read a,e,f table values from file for (int i = 0; i < tb->ninput; i++) { + line = reader.next_line(); try { + ValueTokenizer values(line); if (tb->f_unspecified) { - ValueTokenizer values = reader.next_values(3); values.next_int(); tb->phifile[i] = values.next_double(); tb->efile[i] = values.next_double(); } else { - ValueTokenizer values = reader.next_values(4); values.next_int(); tb->phifile[i] = values.next_double(); tb->efile[i] = values.next_double(); tb->ffile[i] = values.next_double(); } } catch (TokenizerException &e) { - error->one(FLERR, e.what()); + error->one(FLERR, "Error parsing dihedral table '{}' line {} of {}. {}\nLine was: {}", + keyword, i + 1, tb->ninput, e.what(), line); } - } //for (int i = 0; (i < tb->ninput) && fp; i++) { + } } /* ---------------------------------------------------------------------- diff --git a/src/pair_table.cpp b/src/pair_table.cpp index aefe9c4c4f..11bd986822 100644 --- a/src/pair_table.cpp +++ b/src/pair_table.cpp @@ -395,20 +395,18 @@ void PairTable::read_table(Table *tb, char *file, char *keyword) union_int_float_t rsq_lookup; int rerror = 0; - int cerror = 0; - reader.skip_line(); for (int i = 0; i < tb->ninput; i++) { - line = reader.next_line(4); - + line = reader.next_line(); try { ValueTokenizer values(line); values.next_int(); rfile = values.next_double(); tb->efile[i] = conversion_factor * values.next_double(); tb->ffile[i] = conversion_factor * values.next_double(); - } catch (TokenizerException &) { - ++cerror; + } catch (TokenizerException &e) { + error->one(FLERR, "Error parsing pair table '{}' line {} of {}. {}\nLine was: {}", keyword, + i + 1, tb->ninput, e.what(), line); } rnew = rfile; @@ -474,14 +472,6 @@ void PairTable::read_table(Table *tb, char *file, char *keyword) "{} of {} distance values in table {} with relative error\n" "WARNING: over {} to re-computed values", rerror, tb->ninput, EPSILONR, keyword); - - // warn if data was read incompletely, e.g. columns were missing - - if (cerror) - error->warning(FLERR, - "{} of {} lines in table {} were incomplete\n" - "WARNING: or could not be parsed completely", - cerror, tb->ninput, keyword); } /* ---------------------------------------------------------------------- From e2dd08a93e7cb738478e447541ae9d1846df8ad6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 26 May 2022 21:40:33 -0400 Subject: [PATCH 36/46] Better handle file- or path-names with spaces --- cmake/Modules/generate_lmpgitversion.cmake | 6 ++++-- unittest/formats/compressed_dump_test.h | 2 +- unittest/formats/test_dump_atom.cpp | 2 +- unittest/formats/test_dump_custom.cpp | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/cmake/Modules/generate_lmpgitversion.cmake b/cmake/Modules/generate_lmpgitversion.cmake index f066269723..32aaf6f2c5 100644 --- a/cmake/Modules/generate_lmpgitversion.cmake +++ b/cmake/Modules/generate_lmpgitversion.cmake @@ -31,5 +31,7 @@ set(temp "${temp}const char *LAMMPS_NS::LAMMPS::git_descriptor() { return \"${te set(temp "${temp}#endif\n\n") message(STATUS "Generating lmpgitversion.h...") -file(WRITE "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${temp}" ) -execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h.tmp" "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h") + +string(REPLACE "\\ " " " LAMMPS_GIT_HEADER "${LAMMPS_STYLE_HEADERS_DIR}/lmpgitversion.h") +file(WRITE "${LAMMPS_GIT_HEADER}.tmp" "${temp}" ) +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${LAMMPS_GIT_HEADER}.tmp" "${LAMMPS_GIT_HEADER}") diff --git a/unittest/formats/compressed_dump_test.h b/unittest/formats/compressed_dump_test.h index d9803005e5..b209097264 100644 --- a/unittest/formats/compressed_dump_test.h +++ b/unittest/formats/compressed_dump_test.h @@ -102,7 +102,7 @@ public: BEGIN_HIDE_OUTPUT(); std::string converted_file = compressed_file.substr(0, compressed_file.find_last_of('.')); std::string cmdline = - fmt::format("{} -d -c {} > {}", COMPRESS_EXECUTABLE, compressed_file, converted_file); + fmt::format("\"{}\" -d -c {} > {}", COMPRESS_EXECUTABLE, compressed_file, converted_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return converted_file; diff --git a/unittest/formats/test_dump_atom.cpp b/unittest/formats/test_dump_atom.cpp index c9e5223f19..d1b22d7827 100644 --- a/unittest/formats/test_dump_atom.cpp +++ b/unittest/formats/test_dump_atom.cpp @@ -100,7 +100,7 @@ public: std::string convert_binary_to_text(std::string binary_file) { BEGIN_HIDE_OUTPUT(); - std::string cmdline = fmt::format("{} {}", BINARY2TXT_EXECUTABLE, binary_file); + std::string cmdline = fmt::format("\"{}\" {}", BINARY2TXT_EXECUTABLE, binary_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return fmt::format("{}.txt", binary_file); diff --git a/unittest/formats/test_dump_custom.cpp b/unittest/formats/test_dump_custom.cpp index ee297b194e..39cb4ffd27 100644 --- a/unittest/formats/test_dump_custom.cpp +++ b/unittest/formats/test_dump_custom.cpp @@ -100,7 +100,7 @@ public: std::string convert_binary_to_text(std::string binary_file) { BEGIN_HIDE_OUTPUT(); - std::string cmdline = fmt::format("{} {}", BINARY2TXT_EXECUTABLE, binary_file); + std::string cmdline = fmt::format("\"{}\" {}", BINARY2TXT_EXECUTABLE, binary_file); system(cmdline.c_str()); END_HIDE_OUTPUT(); return fmt::format("{}.txt", binary_file); From 3615639bddd7672b32f6aa5b3fe46da9dcacabce Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 27 May 2022 20:05:18 -0400 Subject: [PATCH 37/46] Check for a working internet connection. With this check we only do automatic downloads if the check passes --- cmake/CMakeLists.txt | 66 +++++++++++++++------------ cmake/Modules/LAMMPSUtils.cmake | 17 +++++++ cmake/Modules/Packages/COMPRESS.cmake | 6 ++- 3 files changed, 59 insertions(+), 30 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index cffc854f0f..34b5f1344e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -138,6 +138,9 @@ if(MSVC) add_compile_options(/Zc:__cplusplus) add_compile_options(/wd4244) add_compile_options(/wd4267) + if(LAMMPS_EXCEPTIONS) + add_compile_options(/EHsc) + endif() add_compile_definitions(_CRT_SECURE_NO_WARNINGS) endif() @@ -418,18 +421,50 @@ endif() # tweak jpeg library names to avoid linker errors with MinGW cross-compilation set(JPEG_NAMES libjpeg libjpeg-62) find_package(JPEG QUIET) -if((NOT JPEG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) +find_package(PNG QUIET) +find_package(ZLIB QUIET) + +check_for_internet_connection(HAVE_INTERNET) + +# if we have a working internet connection. download and build missing libs +if(HAVE_INTERNET AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) + include(ExternalCMakeProject) + if(NOT JPEG_FOUND) set(LIBJPEG_URL https://sourceforge.net/projects/libjpeg-turbo/files/2.1.3/libjpeg-turbo-2.1.3.tar.gz) set(LIBJPEG_MD5 85244dedeaf06f636a9e7ddea6d236d8) mark_as_advanced(LIBJPEG_URL) mark_as_advanced(LIBJPEG_MD5) - include(ExternalCMakeProject) ExternalCmakeProject(libjpeg ${LIBJPEG_URL} ${LIBJPEG_MD5} libjpeg-turbo . CMakeLists.jpeg) add_library(JPEG::JPEG ALIAS jpeg-static) target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-src") target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-build") set(JPEG_FOUND TRUE) + endif() + if(NOT ZLIB_FOUND) + set(LIBZ_URL http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz) + set(LIBZ_MD5 1c9f62f0778697a09d36121ead88e08e) + mark_as_advanced(LIBZ_URL) + mark_as_advanced(LIBZ_MD5) + ExternalCmakeProject(libz ${LIBZ_URL} ${LIBZ_MD5} zlib . CMakeLists.zlib) + add_library(ZLIB::ZLIB ALIAS zlibstatic) + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-src") + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-build") + set(ZLIB_FOUND TRUE) + set(ZLIB_INCLUDE_DIR "${CMAKE_BINARY_DIR}/_deps/libz-src;${CMAKE_BINARY_DIR}/_deps/libz-build") + endif() + if(NOT PNG_FOUND) + set(LIBPNG_URL http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz) + set(LIBPNG_MD5 6c7519f6c75939efa0ed3053197abd54) + mark_as_advanced(LIBPNG_URL) + mark_as_advanced(LIBPNG_MD5) + ExternalCmakeProject(libpng ${LIBPNG_URL} ${LIBPNG_MD5} libpng . CMakeLists.png) + add_library(PNG::PNG ALIAS png_static) + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-src") + target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-build") + set(PNG_FOUND TRUE) + endif() endif() + option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) if(NOT JPEG_FOUND) @@ -444,33 +479,6 @@ if(WITH_JPEG) endif() endif() -find_package(PNG QUIET) -find_package(ZLIB QUIET) -if((NOT ZLIB_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) - set(LIBZ_URL http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz) - set(LIBZ_MD5 1c9f62f0778697a09d36121ead88e08e) - mark_as_advanced(LIBZ_URL) - mark_as_advanced(LIBZ_MD5) - include(ExternalCMakeProject) - ExternalCmakeProject(libz ${LIBZ_URL} ${LIBZ_MD5} zlib . CMakeLists.zlib) - add_library(ZLIB::ZLIB ALIAS zlibstatic) - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-src") - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-build") - set(ZLIB_FOUND TRUE) - set(ZLIB_INCLUDE_DIR "${CMAKE_BINARY_DIR}/_deps/libz-src;${CMAKE_BINARY_DIR}/_deps/libz-build") -endif() -if((NOT PNG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) - set(LIBPNG_URL http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz) - set(LIBPNG_MD5 6c7519f6c75939efa0ed3053197abd54) - mark_as_advanced(LIBPNG_URL) - mark_as_advanced(LIBPNG_MD5) - include(ExternalCMakeProject) - ExternalCmakeProject(libpng ${LIBPNG_URL} ${LIBPNG_MD5} libpng . CMakeLists.png) - add_library(PNG::PNG ALIAS png_static) - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-src") - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-build") - set(PNG_FOUND TRUE) -endif() if(PNG_FOUND AND ZLIB_FOUND) option(WITH_PNG "Enable PNG support" ON) else() diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index 943c3d851e..a6df81fa42 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -105,6 +105,23 @@ function(FetchPotentials pkgfolder potfolder) endif() endfunction(FetchPotentials) +# Check and record if we have a working internet connection +function(check_for_internet_connection variable) + message("Checking internet connection... ") + if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (NOT CMAKE_CROSSCOMPILING)) + execute_process(COMMAND ping www.google.com -n 2 + OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE PING_STATUS) + else() + execute_process(COMMAND ping www.google.com -c 2 + OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE PING_STATUS) + endif() + if(PING_STATUS EQUAL 0) + set(${variable} TRUE PARENT_SCOPE) + else() + set(${variable} FALSE PARENT_SCOPE) + endif() +endfunction(check_for_internet_connection) + # set CMAKE_LINUX_DISTRO and CMAKE_DISTRO_VERSION on Linux if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND (EXISTS /etc/os-release)) file(STRINGS /etc/os-release distro REGEX "^NAME=") diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index d9e2ccf7ad..363ee5b79a 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,5 +1,9 @@ if(NOT ZLIB_FOUND) - find_package(ZLIB REQUIRED) + find_package(ZLIB) + if(NOT ZLIB_FOUND) + message(WARNING "zlib library not found skipping COMPRESS package") + return() + endif() endif() target_link_libraries(lammps PRIVATE ZLIB::ZLIB) From d0edd7129c801a683da11fb130e8488f58ceae56 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 28 May 2022 04:54:01 -0400 Subject: [PATCH 38/46] update workflows --- .github/workflows/codeql-analysis.yml | 2 ++ .github/workflows/compile-msvc.yml | 6 ++-- .github/workflows/unittest-gcc.yml | 50 +++++++++++++++++++++++++++ .github/workflows/unittest-macos.yml | 2 ++ 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/unittest-gcc.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f9503e0e1f..7ea31fcf14 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -5,6 +5,8 @@ on: push: branches: [develop] + workflow_dispatch: + jobs: analyze: name: Analyze diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index b31c262e32..405bb46ae6 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -3,12 +3,14 @@ name: "Native Windows Compilation and Unit Tests" on: push: - branches: [develop] + branches: [collected-small-changes] + + workflow_dispatch: jobs: build: name: Windows Compilation Test - if: ${{ github.repository == 'lammps/lammps' }} + if: ${{ github.repository == 'akohlmey/lammps' }} runs-on: windows-latest steps: diff --git a/.github/workflows/unittest-gcc.yml b/.github/workflows/unittest-gcc.yml new file mode 100644 index 0000000000..a8dcdff07d --- /dev/null +++ b/.github/workflows/unittest-gcc.yml @@ -0,0 +1,50 @@ +# GitHub action to build LAMMPS on Windows with GCC and Ninja +name: "Native Windows Compilation /w GCC and Unit Tests using Ninja" + +on: + push: + branches: [collected-small-changes] + +jobs: + build: + name: Windows Compilation Test + if: ${{ github.repository == 'akohlmey/lammps' }} + runs-on: windows-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + with: + fetch-depth: 2 + + - name: Select Python version + uses: actions/setup-python@v2 + with: + python-version: '3.10' + + - name: Building LAMMPS via CMake + shell: bash + run: | + choco install ninja + python3 -m pip install numpy + python3 -m pip install pyyaml + cmake -C cmake/presets/windows.cmake \ + -D PKG_PYTHON=on \ + -S cmake -B build \ + -D BUILD_SHARED_LIBS=on \ + -D LAMMPS_EXCEPTIONS=on \ + -D ENABLE_TESTING=on \ + -D CMAKE_BUILD_TYPE=Release \ + -G Ninja + cmake --build build + + - name: Run LAMMPS executable + shell: bash + run: | + ./build/lmp.exe -h + ./build/lmp.exe -in bench/in.lj + + - name: Run Unit Tests + working-directory: build + shell: bash + run: ctest -V diff --git a/.github/workflows/unittest-macos.yml b/.github/workflows/unittest-macos.yml index a222380f60..2d903af646 100644 --- a/.github/workflows/unittest-macos.yml +++ b/.github/workflows/unittest-macos.yml @@ -5,6 +5,8 @@ on: push: branches: [develop] + workflow_dispatch: + jobs: build: name: MacOS Unit Test From 81c327edd8a583426eadfc117df4da8143f2079a Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 28 May 2022 11:56:26 -0400 Subject: [PATCH 39/46] add missing override. remove redundant functionality and disable warnings differently this removes an inconsistent overload due to mismatch of arguments --- src/DIELECTRIC/pppm_dielectric.cpp | 25 +++---------------------- src/DIELECTRIC/pppm_dielectric.h | 2 -- src/DIELECTRIC/pppm_disp_dielectric.cpp | 25 +++---------------------- src/DIELECTRIC/pppm_disp_dielectric.h | 3 +-- 4 files changed, 7 insertions(+), 48 deletions(-) diff --git a/src/DIELECTRIC/pppm_dielectric.cpp b/src/DIELECTRIC/pppm_dielectric.cpp index 7f32a0a3f3..92bd89ebd9 100644 --- a/src/DIELECTRIC/pppm_dielectric.cpp +++ b/src/DIELECTRIC/pppm_dielectric.cpp @@ -58,6 +58,9 @@ PPPMDielectric::PPPMDielectric(LAMMPS *_lmp) : PPPM(_lmp) phi = nullptr; potflag = 0; + // no warnings about non-neutral systems from qsum_qsq() + warn_nonneutral = 2; + avec = dynamic_cast( atom->style_match("dielectric")); if (!avec) error->all(FLERR,"pppm/dielectric requires atom style dielectric"); } @@ -463,25 +466,3 @@ void PPPMDielectric::slabcorr() efield[i][2] += ffact * eps[i]*(dipole_all - qsum*x[i][2]); } } - -/* ---------------------------------------------------------------------- - compute qsum,qsqsum,q2 and ignore error/warning if not charge neutral - called whenever charges are changed -------------------------------------------------------------------------- */ - -void PPPMDielectric::qsum_qsq() -{ - const double * const q = atom->q; - const int nlocal = atom->nlocal; - double qsum_local(0.0), qsqsum_local(0.0); - - for (int i = 0; i < nlocal; i++) { - qsum_local += q[i]; - qsqsum_local += q[i]*q[i]; - } - - MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); - - q2 = qsqsum * force->qqrd2e; -} diff --git a/src/DIELECTRIC/pppm_dielectric.h b/src/DIELECTRIC/pppm_dielectric.h index 92a93daa90..96ebdb1524 100644 --- a/src/DIELECTRIC/pppm_dielectric.h +++ b/src/DIELECTRIC/pppm_dielectric.h @@ -34,8 +34,6 @@ class PPPMDielectric : public PPPM { double *phi; int potflag; // 1/0 if per-atom electrostatic potential phi is needed - void qsum_qsq(); - protected: void slabcorr() override; diff --git a/src/DIELECTRIC/pppm_disp_dielectric.cpp b/src/DIELECTRIC/pppm_disp_dielectric.cpp index e525ba7384..d4d84e0f62 100644 --- a/src/DIELECTRIC/pppm_disp_dielectric.cpp +++ b/src/DIELECTRIC/pppm_disp_dielectric.cpp @@ -65,6 +65,9 @@ PPPMDispDielectric::PPPMDispDielectric(LAMMPS *_lmp) : PPPMDisp(_lmp) mu_flag = 0; + // no warnings about non-neutral systems from qsum_qsq() + warn_nonneutral = 2; + efield = nullptr; phi = nullptr; potflag = 0; @@ -837,25 +840,3 @@ double PPPMDispDielectric::memory_usage() bytes += nmax * sizeof(double); return bytes; } - -/* ---------------------------------------------------------------------- - compute qsum,qsqsum,q2 and give error/warning if not charge neutral - called initially, when particle count changes, when charges are changed -------------------------------------------------------------------------- */ - -void PPPMDispDielectric::qsum_qsq() -{ - const double * const q = atom->q; - const int nlocal = atom->nlocal; - double qsum_local(0.0), qsqsum_local(0.0); - - for (int i = 0; i < nlocal; i++) { - qsum_local += q[i]; - qsqsum_local += q[i]*q[i]; - } - - MPI_Allreduce(&qsum_local,&qsum,1,MPI_DOUBLE,MPI_SUM,world); - MPI_Allreduce(&qsqsum_local,&qsqsum,1,MPI_DOUBLE,MPI_SUM,world); - - q2 = qsqsum * force->qqrd2e; -} diff --git a/src/DIELECTRIC/pppm_disp_dielectric.h b/src/DIELECTRIC/pppm_disp_dielectric.h index b89be02f92..ce20e292aa 100644 --- a/src/DIELECTRIC/pppm_disp_dielectric.h +++ b/src/DIELECTRIC/pppm_disp_dielectric.h @@ -30,8 +30,7 @@ class PPPMDispDielectric : public PPPMDisp { ~PPPMDispDielectric() override; double memory_usage() override; void compute(int, int) override; - void qsum_qsq(); - void slabcorr(int); + void slabcorr(int) override; double **efield; double *phi; From 4c36c79652bffb8cb7e016ecafb27fa15b4d866e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 28 May 2022 15:03:26 -0400 Subject: [PATCH 40/46] remove feature for automatic jpeg/png/zlib library download and build this is a post-stable feature and would require a general rewrite of offline processing --- cmake/CMakeLists.txt | 58 +++------------------------ cmake/Modules/LAMMPSUtils.cmake | 17 -------- cmake/Modules/Packages/COMPRESS.cmake | 8 +--- cmake/presets/windows.cmake | 1 - doc/src/Build_settings.rst | 13 +++--- 5 files changed, 11 insertions(+), 86 deletions(-) diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 34b5f1344e..2566497c0e 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -421,55 +421,9 @@ endif() # tweak jpeg library names to avoid linker errors with MinGW cross-compilation set(JPEG_NAMES libjpeg libjpeg-62) find_package(JPEG QUIET) -find_package(PNG QUIET) -find_package(ZLIB QUIET) - -check_for_internet_connection(HAVE_INTERNET) - -# if we have a working internet connection. download and build missing libs -if(HAVE_INTERNET AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16)) - include(ExternalCMakeProject) - if(NOT JPEG_FOUND) - set(LIBJPEG_URL https://sourceforge.net/projects/libjpeg-turbo/files/2.1.3/libjpeg-turbo-2.1.3.tar.gz) - set(LIBJPEG_MD5 85244dedeaf06f636a9e7ddea6d236d8) - mark_as_advanced(LIBJPEG_URL) - mark_as_advanced(LIBJPEG_MD5) - ExternalCmakeProject(libjpeg ${LIBJPEG_URL} ${LIBJPEG_MD5} libjpeg-turbo . CMakeLists.jpeg) - add_library(JPEG::JPEG ALIAS jpeg-static) - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-src") - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libjpeg-build") - set(JPEG_FOUND TRUE) - endif() - if(NOT ZLIB_FOUND) - set(LIBZ_URL http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz) - set(LIBZ_MD5 1c9f62f0778697a09d36121ead88e08e) - mark_as_advanced(LIBZ_URL) - mark_as_advanced(LIBZ_MD5) - ExternalCmakeProject(libz ${LIBZ_URL} ${LIBZ_MD5} zlib . CMakeLists.zlib) - add_library(ZLIB::ZLIB ALIAS zlibstatic) - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-src") - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-build") - set(ZLIB_FOUND TRUE) - set(ZLIB_INCLUDE_DIR "${CMAKE_BINARY_DIR}/_deps/libz-src;${CMAKE_BINARY_DIR}/_deps/libz-build") - endif() - if(NOT PNG_FOUND) - set(LIBPNG_URL http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz) - set(LIBPNG_MD5 6c7519f6c75939efa0ed3053197abd54) - mark_as_advanced(LIBPNG_URL) - mark_as_advanced(LIBPNG_MD5) - ExternalCmakeProject(libpng ${LIBPNG_URL} ${LIBPNG_MD5} libpng . CMakeLists.png) - add_library(PNG::PNG ALIAS png_static) - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-src") - target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-build") - set(PNG_FOUND TRUE) - endif() -endif() - option(WITH_JPEG "Enable JPEG support" ${JPEG_FOUND}) if(WITH_JPEG) - if(NOT JPEG_FOUND) - find_package(JPEG REQUIRED) - endif() + find_package(JPEG REQUIRED) target_compile_definitions(lammps PRIVATE -DLAMMPS_JPEG) if(CMAKE_VERSION VERSION_LESS 3.12) target_include_directories(lammps PRIVATE ${JPEG_INCLUDE_DIRS}) @@ -479,18 +433,16 @@ if(WITH_JPEG) endif() endif() +find_package(PNG QUIET) +find_package(ZLIB QUIET) if(PNG_FOUND AND ZLIB_FOUND) option(WITH_PNG "Enable PNG support" ON) else() option(WITH_PNG "Enable PNG support" OFF) endif() if(WITH_PNG) - if(NOT PNG_FOUND) - find_package(PNG REQUIRED) - endif() - if(NOT ZLIB_FOUND) - find_package(ZLIB REQUIRED) - endif() + find_package(PNG REQUIRED) + find_package(ZLIB REQUIRED) target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB) target_compile_definitions(lammps PRIVATE -DLAMMPS_PNG) endif() diff --git a/cmake/Modules/LAMMPSUtils.cmake b/cmake/Modules/LAMMPSUtils.cmake index a6df81fa42..943c3d851e 100644 --- a/cmake/Modules/LAMMPSUtils.cmake +++ b/cmake/Modules/LAMMPSUtils.cmake @@ -105,23 +105,6 @@ function(FetchPotentials pkgfolder potfolder) endif() endfunction(FetchPotentials) -# Check and record if we have a working internet connection -function(check_for_internet_connection variable) - message("Checking internet connection... ") - if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (NOT CMAKE_CROSSCOMPILING)) - execute_process(COMMAND ping www.google.com -n 2 - OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE PING_STATUS) - else() - execute_process(COMMAND ping www.google.com -c 2 - OUTPUT_QUIET ERROR_QUIET RESULT_VARIABLE PING_STATUS) - endif() - if(PING_STATUS EQUAL 0) - set(${variable} TRUE PARENT_SCOPE) - else() - set(${variable} FALSE PARENT_SCOPE) - endif() -endfunction(check_for_internet_connection) - # set CMAKE_LINUX_DISTRO and CMAKE_DISTRO_VERSION on Linux if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND (EXISTS /etc/os-release)) file(STRINGS /etc/os-release distro REGEX "^NAME=") diff --git a/cmake/Modules/Packages/COMPRESS.cmake b/cmake/Modules/Packages/COMPRESS.cmake index 363ee5b79a..bdcf1aa3f8 100644 --- a/cmake/Modules/Packages/COMPRESS.cmake +++ b/cmake/Modules/Packages/COMPRESS.cmake @@ -1,10 +1,4 @@ -if(NOT ZLIB_FOUND) - find_package(ZLIB) - if(NOT ZLIB_FOUND) - message(WARNING "zlib library not found skipping COMPRESS package") - return() - endif() -endif() +find_package(ZLIB REQUIRED) target_link_libraries(lammps PRIVATE ZLIB::ZLIB) find_package(PkgConfig QUIET) diff --git a/cmake/presets/windows.cmake b/cmake/presets/windows.cmake index 5a3ac217f1..ce5387cef9 100644 --- a/cmake/presets/windows.cmake +++ b/cmake/presets/windows.cmake @@ -9,7 +9,6 @@ set(WIN_PACKAGES CLASS2 COLLOID COLVARS - COMPRESS CORESHELL DIELECTRIC DIFFRACTION diff --git a/doc/src/Build_settings.rst b/doc/src/Build_settings.rst index bdae796bae..7e627a052f 100644 --- a/doc/src/Build_settings.rst +++ b/doc/src/Build_settings.rst @@ -297,15 +297,15 @@ requires the following settings: .. code-block:: bash -D WITH_JPEG=value # yes or no - # default = yes + # default = yes if CMake finds JPEG files, else no -D WITH_PNG=value # yes or no - # default = yes + # default = yes if CMake finds PNG and ZLIB files, else no -D WITH_FFMPEG=value # yes or no # default = yes if CMake can find ffmpeg, else no - Usually these settings are all that is needed. If those libraries - or executables are installed but CMake cannot find the graphics header, - library, or executable files, you can set these variables accordingly: + Usually these settings are all that is needed. If CMake cannot + find the graphics header, library, executable files, you can set + these variables: .. code-block:: bash @@ -317,9 +317,6 @@ requires the following settings: -D ZLIB_LIBRARY=path # path to libz.a (.so) file -D FFMPEG_EXECUTABLE=path # path to ffmpeg executable - Otherwise, CMake will attempt to download, build, and link with - jpeg, png, and zlib libraries statically from source code. - .. tab:: Traditional make .. code-block:: make From 90730f0d3c14b0143d33e02aea9026301a64ed3c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 29 May 2022 02:01:21 -0400 Subject: [PATCH 41/46] update windows version history --- src/platform.cpp | 6 ++++++ unittest/python/python-capabilities.py | 1 + 2 files changed, 7 insertions(+) diff --git a/src/platform.cpp b/src/platform.cpp index 5e396d3f63..667481b94d 100644 --- a/src/platform.cpp +++ b/src/platform.cpp @@ -195,6 +195,8 @@ std::string platform::os_info() if (build == "6002") { buf = "Windows Vista"; + } else if (build == "6003") { + buf = "Windows Server 2008"; } else if (build == "7601") { buf = "Windows 7"; } else if (build == "9200") { @@ -227,8 +229,12 @@ std::string platform::os_info() buf = "Windows 10 21H1"; } else if (build == "19044") { buf = "Windows 10 21H2"; + } else if (build == "20348") { + buf = "Windows Server 2022"; } else if (build == "22000") { buf = "Windows 11 21H2"; + } else if (build == "22621") { + buf = "Windows 11 22H2"; } else { const char *entry = "ProductName"; RegGetValue(HKEY_LOCAL_MACHINE, subkey, entry, RRF_RT_REG_SZ, nullptr, &value, diff --git a/unittest/python/python-capabilities.py b/unittest/python/python-capabilities.py index 4c14cac37d..3ac66ebdc6 100644 --- a/unittest/python/python-capabilities.py +++ b/unittest/python/python-capabilities.py @@ -38,6 +38,7 @@ class PythonCapabilities(unittest.TestCase): system = platform.system() osinfo = self.lmp.get_os_info() + print("System: %s LAMMPS OS Info: %s" % (system, osinfo)) self.assertEqual(osinfo.find(system),0) def test_has_gzip_support(self): From 562cd12d8223ad662244a74f1c912b50f4e7c221 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 29 May 2022 15:04:41 -0400 Subject: [PATCH 42/46] revert github action build to LAMMPS repo and develop branch --- .github/workflows/compile-msvc.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/compile-msvc.yml b/.github/workflows/compile-msvc.yml index 405bb46ae6..15fcf1099d 100644 --- a/.github/workflows/compile-msvc.yml +++ b/.github/workflows/compile-msvc.yml @@ -3,14 +3,14 @@ name: "Native Windows Compilation and Unit Tests" on: push: - branches: [collected-small-changes] + branches: [develop] workflow_dispatch: jobs: build: name: Windows Compilation Test - if: ${{ github.repository == 'akohlmey/lammps' }} + if: ${{ github.repository == 'lammps/lammps' }} runs-on: windows-latest steps: From fa79a6673412959960058d869b778642939afda6 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 29 May 2022 19:53:11 -0400 Subject: [PATCH 43/46] feof() returns non-zero not necessarily 1 --- unittest/formats/test_text_file_reader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/unittest/formats/test_text_file_reader.cpp b/unittest/formats/test_text_file_reader.cpp index 4965daab5d..325166a2b4 100644 --- a/unittest/formats/test_text_file_reader.cpp +++ b/unittest/formats/test_text_file_reader.cpp @@ -111,7 +111,7 @@ TEST_F(TextFileReaderTest, usefp) delete reader; // check that we reached EOF and the destructor didn't close the file. - ASSERT_EQ(feof(fp), 1); + ASSERT_NE(feof(fp), 0); ASSERT_EQ(fclose(fp), 0); } From cc86e9e8a8b667cba0a46a23f8bb497db9d80c7e Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sun, 29 May 2022 19:56:39 -0400 Subject: [PATCH 44/46] remove windows+gcc test (for now) --- .github/workflows/unittest-gcc.yml | 50 ------------------------------ 1 file changed, 50 deletions(-) delete mode 100644 .github/workflows/unittest-gcc.yml diff --git a/.github/workflows/unittest-gcc.yml b/.github/workflows/unittest-gcc.yml deleted file mode 100644 index a8dcdff07d..0000000000 --- a/.github/workflows/unittest-gcc.yml +++ /dev/null @@ -1,50 +0,0 @@ -# GitHub action to build LAMMPS on Windows with GCC and Ninja -name: "Native Windows Compilation /w GCC and Unit Tests using Ninja" - -on: - push: - branches: [collected-small-changes] - -jobs: - build: - name: Windows Compilation Test - if: ${{ github.repository == 'akohlmey/lammps' }} - runs-on: windows-latest - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - fetch-depth: 2 - - - name: Select Python version - uses: actions/setup-python@v2 - with: - python-version: '3.10' - - - name: Building LAMMPS via CMake - shell: bash - run: | - choco install ninja - python3 -m pip install numpy - python3 -m pip install pyyaml - cmake -C cmake/presets/windows.cmake \ - -D PKG_PYTHON=on \ - -S cmake -B build \ - -D BUILD_SHARED_LIBS=on \ - -D LAMMPS_EXCEPTIONS=on \ - -D ENABLE_TESTING=on \ - -D CMAKE_BUILD_TYPE=Release \ - -G Ninja - cmake --build build - - - name: Run LAMMPS executable - shell: bash - run: | - ./build/lmp.exe -h - ./build/lmp.exe -in bench/in.lj - - - name: Run Unit Tests - working-directory: build - shell: bash - run: ctest -V From de5c2629ac9635431eaad4c451437d28996490e5 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 31 May 2022 06:53:19 -0400 Subject: [PATCH 45/46] small tweak --- doc/src/Intro_citing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/src/Intro_citing.rst b/doc/src/Intro_citing.rst index 9f761a7616..e10b1857f1 100644 --- a/doc/src/Intro_citing.rst +++ b/doc/src/Intro_citing.rst @@ -30,8 +30,8 @@ initial versions of LAMMPS is: `S. Plimpton, Fast Parallel Algorithms for Short-Range Molecular Dynamics, J Comp Phys, 117, 1-19 (1995). `_ -DOI for the LAMMPS code -^^^^^^^^^^^^^^^^^^^^^^^ +DOI for the LAMMPS source code +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ LAMMPS developers use the `Zenodo service at CERN `_ to create digital object identifies (DOI) for stable releases of the From b8599ccb422657154e98fcd0e2b139076565ba64 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 31 May 2022 11:52:16 -0400 Subject: [PATCH 46/46] fix small local vs. ghost atom access inconsistency in pair style bop --- src/MANYBODY/pair_bop.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/MANYBODY/pair_bop.cpp b/src/MANYBODY/pair_bop.cpp index 2a9702507d..b1d128db24 100644 --- a/src/MANYBODY/pair_bop.cpp +++ b/src/MANYBODY/pair_bop.cpp @@ -200,6 +200,7 @@ void PairBOP::compute(int eflag, int vflag) int newton_pair = force->newton_pair; int nlocal = atom->nlocal; + double **x = atom->x; double **f = atom->f; int *type = atom->type; tagint *tag = atom->tag; @@ -223,7 +224,15 @@ void PairBOP::compute(int eflag, int vflag) temp_ij = BOP_index[i] + jj; j = ilist[neigh_index[temp_ij]]; j_tag = tag[j]; - if (j_tag <= i_tag) continue; + if (i_tag > j_tag) { + if ((i_tag+j_tag) % 2 == 0) continue; + } else if (i_tag < j_tag) { + if ((i_tag+j_tag) % 2 == 1) continue; + } else { + if (x[j][2] < x[i][2]) continue; + if (x[j][2] == x[i][2] && x[j][1] < x[i][1]) continue; + if (x[j][2] == x[i][2] && x[j][1] == x[i][1] && x[j][0] < x[i][0]) continue; + } jtype = map[type[j]]; int param_ij = elem2param[itype][jtype]; sigB_0 = SigmaBo(ii,jj); @@ -253,7 +262,15 @@ void PairBOP::compute(int eflag, int vflag) temp_ij = BOP_index2[i] + jj; j = ilist[neigh_index2[temp_ij]]; j_tag = tag[j]; - if (j_tag <= i_tag) continue; + if (i_tag > j_tag) { + if ((i_tag+j_tag) % 2 == 0) continue; + } else if (i_tag < j_tag) { + if ((i_tag+j_tag) % 2 == 1) continue; + } else { + if (x[j][2] < x[i][2]) continue; + if (x[j][2] == x[i][2] && x[j][1] < x[i][1]) continue; + if (x[j][2] == x[i][2] && x[j][1] == x[i][1] && x[j][0] < x[i][0]) continue; + } PairList2 & p2_ij = pairlist2[temp_ij]; dpr2 = -p2_ij.dRep / p2_ij.r; ftmp1 = dpr2 * p2_ij.dis[0];