diff --git a/regtest/basic/rt-make-namd/Makefile b/regtest/basic/rt-make-namd/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..3703b27cea227aa053fb6d1d73f861e4384dbcee --- /dev/null +++ b/regtest/basic/rt-make-namd/Makefile @@ -0,0 +1 @@ +include ../../scripts/test.make diff --git a/regtest/basic/rt-make-namd/all.reference b/regtest/basic/rt-make-namd/all.reference new file mode 100644 index 0000000000000000000000000000000000000000..e90cab1ecc48f5d1630a4d4a848dd57d52af680e --- /dev/null +++ b/regtest/basic/rt-make-namd/all.reference @@ -0,0 +1,306 @@ +100 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 0.000000 1.000000 2.000000 +X 3.000000 4.000000 5.000000 +X 6.000000 7.000000 8.000000 +X 9.000000 10.000000 11.000000 +X 12.000000 13.000000 14.000000 +X 15.000000 16.000000 17.000000 +X 18.000000 19.000000 20.000000 +X 21.000000 22.000000 23.000000 +X 24.000000 25.000000 26.000000 +X 27.000000 28.000000 29.000000 +X 30.000000 31.000000 32.000000 +X 33.000000 34.000000 35.000000 +X 36.000000 37.000000 38.000000 +X 39.000000 40.000000 41.000000 +X 42.000000 43.000000 44.000000 +X 45.000000 46.000000 47.000000 +X 48.000000 49.000000 50.000000 +X 51.000000 52.000000 53.000000 +X 54.000000 55.000000 56.000000 +X 57.000000 58.000000 59.000000 +X 60.000000 61.000000 62.000000 +X 63.000000 64.000000 65.000000 +X 66.000000 67.000000 68.000000 +X 69.000000 70.000000 71.000000 +X 72.000000 73.000000 74.000000 +X 75.000000 76.000000 77.000000 +X 78.000000 79.000000 80.000000 +X 81.000000 82.000000 83.000000 +X 84.000000 85.000000 86.000000 +X 87.000000 88.000000 89.000000 +X 90.000000 91.000000 92.000000 +X 93.000000 94.000000 95.000000 +X 96.000000 97.000000 98.000000 +X 99.000000 100.000000 101.000000 +X 102.000000 103.000000 104.000000 +X 105.000000 106.000000 107.000000 +X 108.000000 109.000000 110.000000 +X 111.000000 112.000000 113.000000 +X 114.000000 115.000000 116.000000 +X 117.000000 118.000000 119.000000 +X 120.000000 121.000000 122.000000 +X 123.000000 124.000000 125.000000 +X 126.000000 127.000000 128.000000 +X 129.000000 130.000000 131.000000 +X 132.000000 133.000000 134.000000 +X 135.000000 136.000000 137.000000 +X 138.000000 139.000000 140.000000 +X 141.000000 142.000000 143.000000 +X 144.000000 145.000000 146.000000 +X 147.000000 148.000000 149.000000 +X 150.000000 151.000000 152.000000 +X 153.000000 154.000000 155.000000 +X 156.000000 157.000000 158.000000 +X 159.000000 160.000000 161.000000 +X 162.000000 163.000000 164.000000 +X 165.000000 166.000000 167.000000 +X 168.000000 169.000000 170.000000 +X 171.000000 172.000000 173.000000 +X 174.000000 175.000000 176.000000 +X 177.000000 178.000000 179.000000 +X 180.000000 181.000000 182.000000 +X 183.000000 184.000000 185.000000 +X 186.000000 187.000000 188.000000 +X 189.000000 190.000000 191.000000 +X 192.000000 193.000000 194.000000 +X 195.000000 196.000000 197.000000 +X 198.000000 199.000000 200.000000 +X 201.000000 202.000000 203.000000 +X 204.000000 205.000000 206.000000 +X 207.000000 208.000000 209.000000 +X 210.000000 211.000000 212.000000 +X 213.000000 214.000000 215.000000 +X 216.000000 217.000000 218.000000 +X 219.000000 220.000000 221.000000 +X 222.000000 223.000000 224.000000 +X 225.000000 226.000000 227.000000 +X 228.000000 229.000000 230.000000 +X 231.000000 232.000000 233.000000 +X 234.000000 235.000000 236.000000 +X 237.000000 238.000000 239.000000 +X 240.000000 241.000000 242.000000 +X 243.000000 244.000000 245.000000 +X 246.000000 247.000000 248.000000 +X 249.000000 250.000000 251.000000 +X 252.000000 253.000000 254.000000 +X 255.000000 256.000000 257.000000 +X 258.000000 259.000000 260.000000 +X 261.000000 262.000000 263.000000 +X 264.000000 265.000000 266.000000 +X 267.000000 268.000000 269.000000 +X 270.000000 271.000000 272.000000 +X 273.000000 274.000000 275.000000 +X 276.000000 277.000000 278.000000 +X 279.000000 280.000000 281.000000 +X 282.000000 283.000000 284.000000 +X 285.000000 286.000000 287.000000 +X 288.000000 289.000000 290.000000 +X 291.000000 292.000000 293.000000 +X 294.000000 295.000000 296.000000 +X 297.000000 298.000000 299.000000 +100 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 4.000000 5.000000 6.000000 +X 7.000000 8.000000 9.000000 +X 10.000000 11.000000 12.000000 +X 13.000000 14.000000 15.000000 +X 16.000000 17.000000 18.000000 +X 19.000000 20.000000 21.000000 +X 22.000000 23.000000 24.000000 +X 25.000000 26.000000 27.000000 +X 28.000000 29.000000 30.000000 +X 31.000000 32.000000 33.000000 +X 34.000000 35.000000 36.000000 +X 37.000000 38.000000 39.000000 +X 40.000000 41.000000 42.000000 +X 43.000000 44.000000 45.000000 +X 46.000000 47.000000 48.000000 +X 49.000000 50.000000 51.000000 +X 52.000000 53.000000 54.000000 +X 55.000000 56.000000 57.000000 +X 58.000000 59.000000 60.000000 +X 61.000000 62.000000 63.000000 +X 64.000000 65.000000 66.000000 +X 67.000000 68.000000 69.000000 +X 70.000000 71.000000 72.000000 +X 73.000000 74.000000 75.000000 +X 76.000000 77.000000 78.000000 +X 79.000000 80.000000 81.000000 +X 82.000000 83.000000 84.000000 +X 85.000000 86.000000 87.000000 +X 88.000000 89.000000 90.000000 +X 91.000000 92.000000 93.000000 +X 94.000000 95.000000 96.000000 +X 97.000000 98.000000 99.000000 +X 100.000000 101.000000 102.000000 +X 103.000000 104.000000 105.000000 +X 106.000000 107.000000 108.000000 +X 109.000000 110.000000 111.000000 +X 112.000000 113.000000 114.000000 +X 115.000000 116.000000 117.000000 +X 118.000000 119.000000 120.000000 +X 121.000000 122.000000 123.000000 +X 124.000000 125.000000 126.000000 +X 127.000000 128.000000 129.000000 +X 130.000000 131.000000 132.000000 +X 133.000000 134.000000 135.000000 +X 136.000000 137.000000 138.000000 +X 139.000000 140.000000 141.000000 +X 142.000000 143.000000 144.000000 +X 145.000000 146.000000 147.000000 +X 148.000000 149.000000 150.000000 +X 151.000000 152.000000 153.000000 +X 154.000000 155.000000 156.000000 +X 157.000000 158.000000 159.000000 +X 160.000000 161.000000 162.000000 +X 163.000000 164.000000 165.000000 +X 166.000000 167.000000 168.000000 +X 169.000000 170.000000 171.000000 +X 172.000000 173.000000 174.000000 +X 175.000000 176.000000 177.000000 +X 178.000000 179.000000 180.000000 +X 181.000000 182.000000 183.000000 +X 184.000000 185.000000 186.000000 +X 187.000000 188.000000 189.000000 +X 190.000000 191.000000 192.000000 +X 193.000000 194.000000 195.000000 +X 196.000000 197.000000 198.000000 +X 199.000000 200.000000 201.000000 +X 202.000000 203.000000 204.000000 +X 205.000000 206.000000 207.000000 +X 208.000000 209.000000 210.000000 +X 211.000000 212.000000 213.000000 +X 214.000000 215.000000 216.000000 +X 217.000000 218.000000 219.000000 +X 220.000000 221.000000 222.000000 +X 223.000000 224.000000 225.000000 +X 226.000000 227.000000 228.000000 +X 229.000000 230.000000 231.000000 +X 232.000000 233.000000 234.000000 +X 235.000000 236.000000 237.000000 +X 238.000000 239.000000 240.000000 +X 241.000000 242.000000 243.000000 +X 244.000000 245.000000 246.000000 +X 247.000000 248.000000 249.000000 +X 250.000000 251.000000 252.000000 +X 253.000000 254.000000 255.000000 +X 256.000000 257.000000 258.000000 +X 259.000000 260.000000 261.000000 +X 262.000000 263.000000 264.000000 +X 265.000000 266.000000 267.000000 +X 268.000000 269.000000 270.000000 +X 271.000000 272.000000 273.000000 +X 274.000000 275.000000 276.000000 +X 277.000000 278.000000 279.000000 +X 280.000000 281.000000 282.000000 +X 283.000000 284.000000 285.000000 +X 286.000000 287.000000 288.000000 +X 289.000000 290.000000 291.000000 +X 292.000000 293.000000 294.000000 +X 295.000000 296.000000 297.000000 +X 298.000000 299.000000 300.000000 +X 301.000000 302.000000 303.000000 +100 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 8.000000 9.000000 10.000000 +X 11.000000 12.000000 13.000000 +X 14.000000 15.000000 16.000000 +X 17.000000 18.000000 19.000000 +X 20.000000 21.000000 22.000000 +X 23.000000 24.000000 25.000000 +X 26.000000 27.000000 28.000000 +X 29.000000 30.000000 31.000000 +X 32.000000 33.000000 34.000000 +X 35.000000 36.000000 37.000000 +X 38.000000 39.000000 40.000000 +X 41.000000 42.000000 43.000000 +X 44.000000 45.000000 46.000000 +X 47.000000 48.000000 49.000000 +X 50.000000 51.000000 52.000000 +X 53.000000 54.000000 55.000000 +X 56.000000 57.000000 58.000000 +X 59.000000 60.000000 61.000000 +X 62.000000 63.000000 64.000000 +X 65.000000 66.000000 67.000000 +X 68.000000 69.000000 70.000000 +X 71.000000 72.000000 73.000000 +X 74.000000 75.000000 76.000000 +X 77.000000 78.000000 79.000000 +X 80.000000 81.000000 82.000000 +X 83.000000 84.000000 85.000000 +X 86.000000 87.000000 88.000000 +X 89.000000 90.000000 91.000000 +X 92.000000 93.000000 94.000000 +X 95.000000 96.000000 97.000000 +X 98.000000 99.000000 100.000000 +X 101.000000 102.000000 103.000000 +X 104.000000 105.000000 106.000000 +X 107.000000 108.000000 109.000000 +X 110.000000 111.000000 112.000000 +X 113.000000 114.000000 115.000000 +X 116.000000 117.000000 118.000000 +X 119.000000 120.000000 121.000000 +X 122.000000 123.000000 124.000000 +X 125.000000 126.000000 127.000000 +X 128.000000 129.000000 130.000000 +X 131.000000 132.000000 133.000000 +X 134.000000 135.000000 136.000000 +X 137.000000 138.000000 139.000000 +X 140.000000 141.000000 142.000000 +X 143.000000 144.000000 145.000000 +X 146.000000 147.000000 148.000000 +X 149.000000 150.000000 151.000000 +X 152.000000 153.000000 154.000000 +X 155.000000 156.000000 157.000000 +X 158.000000 159.000000 160.000000 +X 161.000000 162.000000 163.000000 +X 164.000000 165.000000 166.000000 +X 167.000000 168.000000 169.000000 +X 170.000000 171.000000 172.000000 +X 173.000000 174.000000 175.000000 +X 176.000000 177.000000 178.000000 +X 179.000000 180.000000 181.000000 +X 182.000000 183.000000 184.000000 +X 185.000000 186.000000 187.000000 +X 188.000000 189.000000 190.000000 +X 191.000000 192.000000 193.000000 +X 194.000000 195.000000 196.000000 +X 197.000000 198.000000 199.000000 +X 200.000000 201.000000 202.000000 +X 203.000000 204.000000 205.000000 +X 206.000000 207.000000 208.000000 +X 209.000000 210.000000 211.000000 +X 212.000000 213.000000 214.000000 +X 215.000000 216.000000 217.000000 +X 218.000000 219.000000 220.000000 +X 221.000000 222.000000 223.000000 +X 224.000000 225.000000 226.000000 +X 227.000000 228.000000 229.000000 +X 230.000000 231.000000 232.000000 +X 233.000000 234.000000 235.000000 +X 236.000000 237.000000 238.000000 +X 239.000000 240.000000 241.000000 +X 242.000000 243.000000 244.000000 +X 245.000000 246.000000 247.000000 +X 248.000000 249.000000 250.000000 +X 251.000000 252.000000 253.000000 +X 254.000000 255.000000 256.000000 +X 257.000000 258.000000 259.000000 +X 260.000000 261.000000 262.000000 +X 263.000000 264.000000 265.000000 +X 266.000000 267.000000 268.000000 +X 269.000000 270.000000 271.000000 +X 272.000000 273.000000 274.000000 +X 275.000000 276.000000 277.000000 +X 278.000000 279.000000 280.000000 +X 281.000000 282.000000 283.000000 +X 284.000000 285.000000 286.000000 +X 287.000000 288.000000 289.000000 +X 290.000000 291.000000 292.000000 +X 293.000000 294.000000 295.000000 +X 296.000000 297.000000 298.000000 +X 299.000000 300.000000 301.000000 +X 302.000000 303.000000 304.000000 +X 305.000000 306.000000 307.000000 diff --git a/regtest/basic/rt-make-namd/cc.reference b/regtest/basic/rt-make-namd/cc.reference new file mode 100644 index 0000000000000000000000000000000000000000..c2b432516cdeff8a289f2fe7c54ad6cebc178477 --- /dev/null +++ b/regtest/basic/rt-make-namd/cc.reference @@ -0,0 +1,6 @@ +#! FIELDS time d + 0.000000 5.196152 + 0.002000 5.196152 + 0.004000 5.196152 + 0.006000 5.196152 + 0.008000 5.196152 diff --git a/regtest/basic/rt-make-namd/config b/regtest/basic/rt-make-namd/config new file mode 100644 index 0000000000000000000000000000000000000000..df1f95bf3ee289aa8367431334c00cf144754ddf --- /dev/null +++ b/regtest/basic/rt-make-namd/config @@ -0,0 +1 @@ +type=make diff --git a/regtest/basic/rt-make-namd/main.cpp b/regtest/basic/rt-make-namd/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c0ef652482fd7200497509a4d707a433d92b19fd --- /dev/null +++ b/regtest/basic/rt-make-namd/main.cpp @@ -0,0 +1,104 @@ +#include <vector> +#include <fstream> +#include "plumed/wrapper/Plumed.h" +#include <iostream> + +using namespace PLMD; + +int main(){ + Plumed* plumed=new Plumed; + + int natoms=100; + + std::vector<double> all_positions(3*natoms,0.0); + for(unsigned i=0;i<natoms;i++) all_positions[i]=i; + std::vector<double> all_masses(natoms,1.0); + std::vector<double> all_charges(natoms,1.0); + std::vector<double> all_forces(3*natoms,0.0); + std::vector<double> box(9,0.0); + std::vector<double> virial(9,0.0); + + plumed->cmd("setNatoms",&natoms); + plumed->cmd("setLogFile","test.log"); + double dt=0.001; + plumed->cmd("setTimestep",&dt); + plumed->cmd("setNoVirial"); + + std::string file="plumed.dat"; + plumed->cmd("setPlumedDat",file.c_str()); + + plumed->cmd("init"); + std::ofstream ofs("output"); + + std::vector<int> index; + std::vector<double> masses; + std::vector<double> forces; + std::vector<double> positions; + std::vector<double> charges; + + bool first=true; + + for(int step=0;step<10;step++){ + for(unsigned i=0;i<3*natoms;i++) all_positions[i]=i+step; + int* p=nullptr; + int n=0; + plumed->cmd("setStep",&step); + plumed->cmd("prepareDependencies"); + plumed->cmd("createFullList",&n); +//std::cerr<<"n= "<<n<<"\n"; + plumed->cmd("getFullList",&p); + bool redo=(index.size()!=n); + if(first) redo=true; + first=false; + if(!redo) for(int i=0;i<n;i++) if(index[i]!=p[i]) { redo=true; break;}; + if(redo){ + index.resize(n); + masses.resize(n); + for(int i=0;i<n;i++){ + masses[i]=all_masses[p[i]]; + index[i]=p[i]; + }; + positions.resize(3*n); + forces.resize(3*n); + charges.resize(n); + + plumed->cmd("setAtomsNlocal",&n); + plumed->cmd("setAtomsGatindex",(index.empty()?nullptr:&index[0])); +// for(unsigned i=0;i<n;i++) std::cerr<< "I "<<index[i] <<"\n"; + } + plumed->cmd("clearFullList"); + + for(int i=0;i<index.size();i++){ + positions[3*i+0]=all_positions[3*index[i]+0]; + positions[3*i+1]=all_positions[3*index[i]+1]; + positions[3*i+2]=all_positions[3*index[i]+2]; + masses[i]=all_masses[index[i]]; + charges[i]=all_charges[index[i]]; + }; + + plumed->cmd("setBox",&box[0]); + + for(int i=0;i<forces.size();i++) forces[i]=0.0; + +// std::cerr<<"mass "<<&masses[0]<<" "<<(&masses[0]==NULL)<<"\n"; + plumed->cmd("setMasses",(masses.empty()?nullptr:&masses[0])); + plumed->cmd("setCharges",(charges.empty()?nullptr:&charges[0])); + plumed->cmd("setPositions",(positions.empty()?nullptr:&positions[0])); + plumed->cmd("setForces",(forces.empty()?nullptr:&forces[0])); + + plumed->cmd("shareData"); + plumed->cmd("performCalc"); + + std::vector<double> all_forces(3*natoms,0.0); + + for(unsigned i=0;i<all_forces.size();i++) all_forces[i]=0.0; + for(int i=0;i<index.size();i++){ + all_forces[3*index[i]+0]=forces[3*i+0]; + all_forces[3*index[i]+1]=forces[3*i+1]; + all_forces[3*index[i]+2]=forces[3*i+2]; + } + } + + delete plumed; + return 0; +} diff --git a/regtest/basic/rt-make-namd/plumed.dat b/regtest/basic/rt-make-namd/plumed.dat new file mode 100644 index 0000000000000000000000000000000000000000..adc9166543c62843d4e2fcf1fc6de706f6f5cf84 --- /dev/null +++ b/regtest/basic/rt-make-namd/plumed.dat @@ -0,0 +1,5 @@ +d: DISTANCE ATOMS=2,3 +PRINT ARG=d STRIDE=2 FILE=cc +DUMPATOMS ATOMS=2,3 FILE=xyz STRIDE=2 +DUMPATOMS ATOMS=1-100 STRIDE=4 FILE=all + diff --git a/regtest/basic/rt-make-namd/xyz.reference b/regtest/basic/rt-make-namd/xyz.reference new file mode 100644 index 0000000000000000000000000000000000000000..547597b521a371695e0f9fbdc7311212cbcb7e37 --- /dev/null +++ b/regtest/basic/rt-make-namd/xyz.reference @@ -0,0 +1,20 @@ +2 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 3.000000 4.000000 5.000000 +X 6.000000 7.000000 8.000000 +2 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 5.000000 6.000000 7.000000 +X 8.000000 9.000000 10.000000 +2 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 7.000000 8.000000 9.000000 +X 10.000000 11.000000 12.000000 +2 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 9.000000 10.000000 11.000000 +X 12.000000 13.000000 14.000000 +2 + 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 +X 11.000000 12.000000 13.000000 +X 14.000000 15.000000 16.000000