Changeset 04dcc0 for molecuilder/src/molecules.cpp
- Timestamp:
- Aug 4, 2009, 1:47:05 PM (16 years ago)
- Children:
- eeefb3
- Parents:
- f4a346
- File:
-
- 1 edited
-
molecuilder/src/molecules.cpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/molecules.cpp
rf4a346 r04dcc0 67 67 IndexNr = -1; 68 68 ActiveFlag = false; 69 TesselStruct = NULL; 69 70 }; 70 71 … … 79 80 Free((void **)&ListOfBondsPerAtom, "molecule::~molecule: ListOfBondsPerAtom"); 80 81 Free((void **)&NumberOfBondsPerAtom, "molecule::~molecule: NumberOfBondsPerAtom"); 82 if (TesselStruct != NULL) 83 delete(TesselStruct); 81 84 CleanupMolecule(); 82 85 delete(first); … … 710 713 { 711 714 bool status = true; 712 atom *ptr = NULL;713 715 Vector x; 714 716 double *M = ReturnFullMatrixforSymmetric(cell_size); 715 717 double *Minv = x.InverseMatrix(M); 716 double value; 717 718 // cout << "The box matrix is :" << endl; 719 // for (int i=0;i<NDIM;++i) { 720 // for (int j=0;j<NDIM;++j) 721 // cout << M[i*NDIM+j] << "\t"; 722 // cout << endl; 723 // } 724 // cout << "And its inverse is :" << endl; 725 // for (int i=0;i<NDIM;++i) { 726 // for (int j=0;j<NDIM;++j) 727 // cout << Minv[i*NDIM+j] << "\t"; 728 // cout << endl; 729 // } 718 Vector *Center = DetermineCenterOfAll(out); 719 730 720 // go through all atoms 731 ptr = start->next; // start at first in list732 if (ptr != end) { //list not empty?733 while (ptr->next != end) { // continue with second if present734 ptr = ptr->next;735 //ptr->Output(1,1,out);736 // multiply its vector with matrix inverse737 x.CopyVector(&ptr->x);738 x.MatrixMultiplication(Minv);739 // truncate to [0,1] for each axis740 for (int i=0;i<NDIM;i++) {741 value = floor(x.x[i]); // next lower integer742 if (x.x[i] >=0) {743 x.x[i] -= value;744 } else {745 x.x[i] += value+1;746 }747 }748 }721 atom *ptr = start; // start at first in list 722 while (ptr->next != end) { // continue with second if present 723 ptr = ptr->next; 724 //ptr->Output(1,1,out); 725 // multiply its vector with matrix inverse 726 x.CopyVector(&ptr->x); 727 x.SubtractVector(Center); // now, it's centered at origin 728 x.MatrixMultiplication(Minv); 729 // truncate to [0,1] for each axis 730 for (int i=0;i<NDIM;i++) { 731 x.x[i] += 0.5; // set to center of box 732 while (x.x[i] >= 1.) 733 x.x[i] -= 1.; 734 while (x.x[i] < 0.) 735 x.x[i] += 1.; 736 } 737 x.MatrixMultiplication(M); 738 ptr->x.CopyVector(&x); 749 739 } 750 740 delete(M); 751 741 delete(Minv); 742 delete(Center); 752 743 return status; 753 744 };
Note:
See TracChangeset
for help on using the changeset viewer.
