From 4a972c43117b20dcff680532d9f18d8cb8860fd7 Mon Sep 17 00:00:00 2001 From: alphataubio Date: Tue, 30 Jul 2024 04:28:40 -0400 Subject: [PATCH] fix recenter/kk works with coords, init, null plus 3 tests --- src/KOKKOS/fix_recenter_kokkos.cpp | 34 ++------ src/KOKKOS/fix_recenter_kokkos.h | 6 +- src/fix_recenter.cpp | 4 - .../tests/fix-timestep-recenter-coords.yaml | 80 +++++++++++++++++++ ...r.yaml => fix-timestep-recenter-init.yaml} | 4 +- .../tests/fix-timestep-recenter-null.yaml | 80 +++++++++++++++++++ 6 files changed, 171 insertions(+), 37 deletions(-) create mode 100644 unittest/force-styles/tests/fix-timestep-recenter-coords.yaml rename unittest/force-styles/tests/{fix-timestep-recenter.yaml => fix-timestep-recenter-init.yaml} (97%) create mode 100644 unittest/force-styles/tests/fix-timestep-recenter-null.yaml diff --git a/src/KOKKOS/fix_recenter_kokkos.cpp b/src/KOKKOS/fix_recenter_kokkos.cpp index d3630bb055..615691e33c 100644 --- a/src/KOKKOS/fix_recenter_kokkos.cpp +++ b/src/KOKKOS/fix_recenter_kokkos.cpp @@ -37,9 +37,6 @@ template FixRecenterKokkos::FixRecenterKokkos(LAMMPS *lmp, int narg, char **arg) : FixRecenter(lmp, narg, arg) { - - utils::logmesg(lmp, "************ FixRecenterKokkos constructor ************\n"); - kokkosable = 1; atomKK = (AtomKokkos *)atom; execution_space = ExecutionSpaceFromDevice::space; @@ -57,25 +54,15 @@ void FixRecenterKokkos::initial_integrate(int /*vflag*/) atomKK->sync(execution_space,datamask_read); atomKK->modified(execution_space,datamask_modify); - x = atomKK->k_x.view(); - mask = atomKK->k_mask.view(); + d_x = atomKK->k_x.view(); + d_mask = atomKK->k_mask.view(); int nlocal = atomKK->nlocal; if (igroup == atomKK->firstgroup) nlocal = atomKK->nfirst; - // FIX RECENTER // target COM // bounding box around domain works for both orthogonal and triclinic - double xtarget = xinit; - double ytarget = yinit; - double ztarget = zinit; - - xflag=yflag=zflag=1; - - // FIXME: only supported in KOKKOS... - // fix ID group-ID recenter INIT INIT INIT shift all - - /* + double xtarget,ytarget,ztarget; double *bboxlo,*bboxhi; if (scaleflag == FRACTION) { @@ -103,8 +90,6 @@ void FixRecenterKokkos::initial_integrate(int /*vflag*/) ztarget = bboxlo[2] + zcom*(bboxhi[2] - bboxlo[2]); else ztarget = zcom; - */ - // current COM // FIXME: make Group kokkos-aware @@ -127,18 +112,14 @@ void FixRecenterKokkos::initial_integrate(int /*vflag*/) shift[2] = zflag ? (ztarget - xcm[2]) : 0.0; distance = sqrt(shift[0]*shift[0] + shift[1]*shift[1] + shift[2]*shift[2]); - // ---- - copymode = 1; - //auto group2bit_copy = group2bit; - Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal), LAMMPS_LAMBDA(int i) { - if (mask[i] & group2bit) { - x(i,0) += shift[0]; - x(i,1) += shift[1]; - x(i,2) += shift[2]; + if (d_mask[i] & group2bit) { + d_x(i,0) += shift[0]; + d_x(i,1) += shift[1]; + d_x(i,2) += shift[2]; } }); @@ -146,7 +127,6 @@ void FixRecenterKokkos::initial_integrate(int /*vflag*/) } - namespace LAMMPS_NS { template class FixRecenterKokkos; #ifdef LMP_KOKKOS_GPU diff --git a/src/KOKKOS/fix_recenter_kokkos.h b/src/KOKKOS/fix_recenter_kokkos.h index e87057eef7..f945802ec0 100644 --- a/src/KOKKOS/fix_recenter_kokkos.h +++ b/src/KOKKOS/fix_recenter_kokkos.h @@ -28,8 +28,6 @@ FixStyle(recenter/kk/host,FixRecenterKokkos); namespace LAMMPS_NS { -//struct TagFixRecenter {}; - template class FixRecenterKokkos : public FixRecenter { public: @@ -38,8 +36,8 @@ class FixRecenterKokkos : public FixRecenter { void initial_integrate(int) override; private: - typename ArrayTypes::t_x_array x; - typename ArrayTypes::t_int_1d mask; + typename ArrayTypes::t_x_array d_x; + typename ArrayTypes::t_int_1d d_mask; }; } // namespace LAMMPS_NS diff --git a/src/fix_recenter.cpp b/src/fix_recenter.cpp index 01ab211e48..76181c04d4 100644 --- a/src/fix_recenter.cpp +++ b/src/fix_recenter.cpp @@ -191,8 +191,6 @@ void FixRecenter::initial_integrate(int /*vflag*/) group->xcm(igroup,masstotal,xcm); - utils::logmesg(lmp, "ok 2c, xcm={},{},{}\n", xcm[0], xcm[1], xcm[2]); - // shift coords by difference between actual COM and requested COM double **x = atom->x; @@ -204,8 +202,6 @@ void FixRecenter::initial_integrate(int /*vflag*/) shift[2] = zflag ? (ztarget - xcm[2]) : 0.0; distance = sqrt(shift[0]*shift[0] + shift[1]*shift[1] + shift[2]*shift[2]); - utils::logmesg(lmp, "ok 2d, shift={},{},{}\n", shift[0], shift[1], shift[2]); - for (int i = 0; i < nlocal; i++) if (mask[i] & group2bit) { x[i][0] += shift[0]; diff --git a/unittest/force-styles/tests/fix-timestep-recenter-coords.yaml b/unittest/force-styles/tests/fix-timestep-recenter-coords.yaml new file mode 100644 index 0000000000..982a3b18e0 --- /dev/null +++ b/unittest/force-styles/tests/fix-timestep-recenter-coords.yaml @@ -0,0 +1,80 @@ +--- +lammps_version: 27 Jun 2024 +tags: generated +date_generated: Tue Jul 30 04:23:44 2024 +epsilon: 2e-13 +skip_tests: +prerequisites: ! | + atom full + fix nve + fix recenter +pre_commands: ! "" +post_commands: ! | + fix move all nve + fix test solute recenter 0.45 0.5 0.55 shift all units fraction +input_file: in.fourmol +natoms: 29 +global_scalar: 4.868395120178045e-05 +global_vector: ! |- + 3 -4.5648814136156624e-05 -3.3198799039568794e-06 1.6591903748613968e-05 +run_pos: ! |2 + 1 -7.5132769500671226e-01 2.4986248943444171e+00 7.9802680459215103e-01 + 2 -1.7083180151387659e-01 2.9686443668858833e+00 1.1032169213735510e-01 + 3 -1.1848576112607669e+00 1.2379598993595067e+00 3.3721005306300700e-01 + 4 -2.0626880309028004e+00 1.4911496856694382e+00 -2.8888576109863040e-01 + 5 -1.3880697339807648e+00 9.3392994263319751e-01 1.3645274273913177e+00 + 6 -2.3255489200431190e-01 2.9053911875515726e-01 -2.6643801066357575e-01 + 7 -1.3943682083900774e-01 -1.5237647264946797e-02 -1.5642438189827357e+00 + 8 6.9348312565712877e-01 -4.8122338188209490e-01 3.2715099339931453e-01 + 9 8.9918032569715922e-01 -2.4533830652762220e-01 1.2485251813785214e+00 + 10 1.5702044248015166e+00 -1.4529974702538417e+00 -1.8252128309559742e-02 + 11 1.3069310971913839e+00 -1.9847774235184412e+00 -9.2407492225500776e-01 + 12 2.5254286066811331e+00 -4.8272460119318827e-01 -6.5820448823105326e-01 + 13 3.5706681986664290e+00 -8.8461121229009532e-01 -6.7501523048492595e-01 + 14 2.1258242373015102e+00 -4.1048363587869696e-01 -1.6984150383718699e+00 + 15 2.4886566213184191e+00 5.6163503542878490e-01 -2.6921687967144270e-01 + 16 2.1938308722699804e+00 -2.4050030016799853e+00 9.4154957635695380e-01 + 17 1.7344856812755074e+00 -2.0823896149143275e+00 2.1613004019555140e+00 + 18 1.6560980731586978e+00 3.0232596451395048e+00 -2.5529495112139315e+00 + 19 1.0547116163558656e+00 2.6329381393140117e+00 -3.2704134554803344e+00 + 20 2.2918852033150059e+00 3.6997999487374611e+00 -2.9680989234057789e+00 + 21 4.4231407100675586e+00 -4.0678259135193509e+00 -2.6560461484816007e+00 + 22 3.8773634581912133e+00 -4.2052030389522610e+00 -3.4962990971238348e+00 + 23 5.2630661876778886e+00 -3.5747868901510587e+00 -2.9116508070860116e+00 + 24 1.5880522609893917e+00 3.1587435945035454e+00 4.1200242979904500e+00 + 25 8.2366303589634160e-01 3.2739214743607290e+00 3.4761708482509213e+00 + 26 2.1000516430182552e+00 4.0191691643247269e+00 4.1861913754165592e+00 + 27 -2.4420064102885943e+00 -4.3489322893595315e+00 3.0748146340599405e+00 + 28 -3.2282283657042123e+00 -4.0126730894614893e+00 2.5479905388509652e+00 + 29 -1.7934721163888576e+00 -3.5888429001718487e+00 3.2396195693813534e+00 +run_vel: ! |2 + 1 8.1705744183262520e-03 1.6516406176274312e-02 4.7902264318912926e-03 + 2 5.4501493445687594e-03 5.1791699408496325e-03 -1.4372931530376343e-03 + 3 -8.2298292722385816e-03 -1.2926551614621412e-02 -4.0984181178163994e-03 + 4 -3.7699042590093445e-03 -6.5722892098813860e-03 -1.1184640360133362e-03 + 5 -1.1021961004346569e-02 -9.8906780939336126e-03 -2.8410737829284312e-03 + 6 -3.9676663166400034e-02 4.6817061464710250e-02 3.7148491979475992e-02 + 7 9.1033953013898092e-04 -1.0128524411938771e-02 -5.1568251805019630e-02 + 8 7.9064712058855725e-03 -3.3507254552631849e-03 3.4557098492564643e-02 + 9 1.5644176117320875e-03 3.7365546102722203e-03 1.5047408822037638e-02 + 10 2.9201446820573192e-02 -2.9249578745486140e-02 -1.5018077424322537e-02 + 11 -4.7835961513517603e-03 -3.7481385134185263e-03 -2.3464104142290176e-03 + 12 2.2696451841920920e-03 -3.4774154398130042e-04 -3.0640770327796979e-03 + 13 2.7531740451952145e-03 5.8171061612840866e-03 -7.9467454022159282e-04 + 14 3.5246182371994239e-03 -5.7939995585585425e-03 -3.9478431172750902e-03 + 15 -1.8547943640123080e-03 -5.8554729942777830e-03 6.2938485140538606e-03 + 16 1.8681499973445179e-02 -1.3262466204585288e-02 -4.5638651457003097e-02 + 17 -1.2896269981100333e-02 9.7527665265956121e-03 3.7296535360836651e-02 + 18 -8.0065794848260612e-04 -8.6270473212553646e-04 -1.4483040697508677e-03 + 19 1.2452390836182341e-03 -2.5061097118772879e-03 7.2998631009712671e-03 + 20 3.5930060229596903e-03 3.6938860309252827e-03 3.2322732687893093e-03 + 21 -1.4689220370766394e-03 -2.7352129761527014e-04 7.0581624215243781e-04 + 22 -7.0694199254630772e-03 -4.2577148924878711e-03 2.8079117614247622e-04 + 23 6.0446963117374731e-03 -1.4000131614795503e-03 2.5819754847014498e-03 + 24 3.1926367902286048e-04 -9.9445664749277913e-04 1.4999996959364468e-04 + 25 1.3789754514817134e-04 -4.4335894884532752e-03 -8.1808136725077560e-04 + 26 2.0485904035218057e-03 2.7813358633836725e-03 4.3245727149206822e-03 + 27 4.5604120293371412e-04 -1.0305523026921115e-03 2.1188058381359324e-04 + 28 -6.2544520861855810e-03 1.4127711176147026e-03 -1.8429821884794668e-03 + 29 6.4110631534402326e-04 3.1273432719593694e-03 3.7253671105656788e-03 +... diff --git a/unittest/force-styles/tests/fix-timestep-recenter.yaml b/unittest/force-styles/tests/fix-timestep-recenter-init.yaml similarity index 97% rename from unittest/force-styles/tests/fix-timestep-recenter.yaml rename to unittest/force-styles/tests/fix-timestep-recenter-init.yaml index 6f450fc056..efc67fd477 100644 --- a/unittest/force-styles/tests/fix-timestep-recenter.yaml +++ b/unittest/force-styles/tests/fix-timestep-recenter-init.yaml @@ -1,7 +1,7 @@ --- lammps_version: 27 Jun 2024 tags: generated -date_generated: Tue Jul 30 03:14:33 2024 +date_generated: Tue Jul 30 04:14:01 2024 epsilon: 2e-13 skip_tests: prerequisites: ! | @@ -11,7 +11,7 @@ prerequisites: ! | pre_commands: ! "" post_commands: ! | fix move all nve - fix test solute recenter INIT INIT INIT shift all + fix test solute recenter INIT INIT INIT shift all units box input_file: in.fourmol natoms: 29 global_scalar: 4.868395120232176e-05 diff --git a/unittest/force-styles/tests/fix-timestep-recenter-null.yaml b/unittest/force-styles/tests/fix-timestep-recenter-null.yaml new file mode 100644 index 0000000000..bb09e1a1d4 --- /dev/null +++ b/unittest/force-styles/tests/fix-timestep-recenter-null.yaml @@ -0,0 +1,80 @@ +--- +lammps_version: 27 Jun 2024 +tags: generated +date_generated: Tue Jul 30 04:25:52 2024 +epsilon: 2e-13 +skip_tests: +prerequisites: ! | + atom full + fix nve + fix recenter +pre_commands: ! "" +post_commands: ! | + fix move all nve + fix test solute recenter NULL NULL NULL shift all units lattice +input_file: in.fourmol +natoms: 29 +global_scalar: 0 +global_vector: ! |- + 3 0 0 0 +run_pos: ! |2 + 1 -2.7045559775384032e-01 2.4912159905679729e+00 -1.6695851791541888e-01 + 2 3.1004029573899528e-01 2.9612354631094391e+00 -8.5466363037021464e-01 + 3 -7.0398551400789477e-01 1.2305509955830618e+00 -6.2777526944456274e-01 + 4 -1.5818159336499285e+00 1.4837407818929933e+00 -1.2538710836062004e+00 + 5 -9.0719763672789266e-01 9.2652103885675297e-01 3.9954210488374786e-01 + 6 2.4831720524855985e-01 2.8313021497871271e-01 -1.2314233331711453e+00 + 7 3.4143527641386412e-01 -2.2646551041391422e-02 -2.5292291414903052e+00 + 8 1.1743552229100009e+00 -4.8863228565853950e-01 -6.3783432910825522e-01 + 9 1.3800524229500313e+00 -2.5274721030406683e-01 2.8353985887095157e-01 + 10 2.0510765220543883e+00 -1.4604063740302866e+00 -9.8323745081712954e-01 + 11 1.7878031944442556e+00 -1.9921863272948861e+00 -1.8890602447625777e+00 + 12 3.0063007039340053e+00 -4.9013350496963293e-01 -1.6231898107386229e+00 + 13 4.0515402959192999e+00 -8.9202011606653986e-01 -1.6400005529924957e+00 + 14 2.6066963345543819e+00 -4.1789253965514156e-01 -2.6634003608794394e+00 + 15 2.9695287185712913e+00 5.5422613165234036e-01 -1.2342022021790127e+00 + 16 2.6747029695228521e+00 -2.4124119054564295e+00 -2.3435746150616148e-02 + 17 2.2153577785283796e+00 -2.0897985186907717e+00 1.1963150794479436e+00 + 18 2.1369701704115704e+00 3.0158507413630606e+00 -3.5179348337215015e+00 + 19 1.5355837136087378e+00 2.6255292355375675e+00 -4.2353987779879052e+00 + 20 2.7727573005678776e+00 3.6923910449610169e+00 -3.9330842459133493e+00 + 21 4.9040128073204299e+00 -4.0752348172957946e+00 -3.6210314709891711e+00 + 22 4.3582355554440841e+00 -4.2126119427287048e+00 -4.4612844196314052e+00 + 23 5.7439382849307599e+00 -3.5821957939275029e+00 -3.8766361295935821e+00 + 24 2.0689243582422630e+00 3.1513346907271012e+00 3.1550389754828800e+00 + 25 1.3045351331492134e+00 3.2665125705842848e+00 2.5111855257433504e+00 + 26 2.5809237402711274e+00 4.0117602605482832e+00 3.2212060529089896e+00 + 27 -1.9611343130357228e+00 -4.3563411931359752e+00 2.1098293115523705e+00 + 28 -2.7473562684513411e+00 -4.0200819932379330e+00 1.5830052163433954e+00 + 29 -1.3126000191359855e+00 -3.5962518039482929e+00 2.2746342468737835e+00 +run_vel: ! |2 + 1 8.1705744183262364e-03 1.6516406176274284e-02 4.7902264318912908e-03 + 2 5.4501493445687802e-03 5.1791699408496447e-03 -1.4372931530376594e-03 + 3 -8.2298292722385660e-03 -1.2926551614621379e-02 -4.0984181178163794e-03 + 4 -3.7699042590093549e-03 -6.5722892098813894e-03 -1.1184640360133316e-03 + 5 -1.1021961004346582e-02 -9.8906780939336109e-03 -2.8410737829284421e-03 + 6 -3.9676663166400034e-02 4.6817061464710256e-02 3.7148491979476124e-02 + 7 9.1033953013898601e-04 -1.0128524411938794e-02 -5.1568251805019748e-02 + 8 7.9064712058855690e-03 -3.3507254552631780e-03 3.4557098492564636e-02 + 9 1.5644176117320919e-03 3.7365546102722177e-03 1.5047408822037646e-02 + 10 2.9201446820573178e-02 -2.9249578745486140e-02 -1.5018077424322538e-02 + 11 -4.7835961513517560e-03 -3.7481385134185202e-03 -2.3464104142290089e-03 + 12 2.2696451841920581e-03 -3.4774154398129452e-04 -3.0640770327796884e-03 + 13 2.7531740451953108e-03 5.8171061612840597e-03 -7.9467454022159748e-04 + 14 3.5246182371994170e-03 -5.7939995585585503e-03 -3.9478431172751327e-03 + 15 -1.8547943640122978e-03 -5.8554729942777769e-03 6.2938485140538701e-03 + 16 1.8681499973445235e-02 -1.3262466204585334e-02 -4.5638651457003243e-02 + 17 -1.2896269981100382e-02 9.7527665265956451e-03 3.7296535360836762e-02 + 18 -8.0065794848261610e-04 -8.6270473212554308e-04 -1.4483040697508777e-03 + 19 1.2452390836182583e-03 -2.5061097118772749e-03 7.2998631009713062e-03 + 20 3.5930060229597072e-03 3.6938860309252974e-03 3.2322732687893115e-03 + 21 -1.4689220370766539e-03 -2.7352129761527648e-04 7.0581624215243120e-04 + 22 -7.0694199254630382e-03 -4.2577148924878598e-03 2.8079117614252034e-04 + 23 6.0446963117374939e-03 -1.4000131614795382e-03 2.5819754847014320e-03 + 24 3.1926367902287864e-04 -9.9445664749276113e-04 1.4999996959365281e-04 + 25 1.3789754514814445e-04 -4.4335894884532700e-03 -8.1808136725080140e-04 + 26 2.0485904035217606e-03 2.7813358633835958e-03 4.3245727149206761e-03 + 27 4.5604120293369819e-04 -1.0305523026921102e-03 2.1188058381358391e-04 + 28 -6.2544520861855151e-03 1.4127711176146864e-03 -1.8429821884794260e-03 + 29 6.4110631534402261e-04 3.1273432719593807e-03 3.7253671105656745e-03 +...