dcdread.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright (c) 2021 NVIDIA Corporation. All rights reserved.
  2. using namespace std;
  3. void dcdreadhead(int *natom, int *nframes, std::istream &infile) {
  4. infile.seekg(8,ios::beg);
  5. infile.read((char*)nframes, sizeof(int));
  6. infile.seekg(64*4,ios::cur);
  7. infile.read((char*)natom, sizeof(int));
  8. infile.seekg(1*8,ios::cur);
  9. return;
  10. }
  11. void dcdreadframe(double *x, double *y, double *z, std::istream &infile,
  12. int natom, double& xbox,double& ybox,double& zbox){
  13. double d[6];
  14. for (int i=0;i<6;i++) {
  15. infile.read((char*)&d[i], sizeof(double));
  16. }
  17. xbox=d[0];
  18. ybox=d[2];
  19. zbox=d[5];
  20. float a,b,c;
  21. infile.seekg(1*8,ios::cur);
  22. for (int i=0;i<natom;i++){
  23. infile.read((char*)&a, sizeof(float));
  24. x[i]=a;
  25. }
  26. infile.seekg(1*8,ios::cur);
  27. for (int i=0;i<natom;i++) {
  28. infile.read((char*)&b, sizeof(float));
  29. y[i]=b;
  30. }
  31. infile.seekg(1*8,ios::cur);
  32. for (int i=0;i<natom;i++) {
  33. infile.read((char*)&c, sizeof(float));
  34. z[i]=c;
  35. }
  36. infile.seekg(1*8,ios::cur);
  37. return;
  38. }