Closed slaymuel closed 6 years ago
Periodic boundary conditions (for a box where are angles are 90 degrees):
void Atom::pbc(){ //Translate particles according to periodic boundary conditions if(this->pos[0] > base::boxDim){ this->pos[0] = this->pos[0] - base::boxDim; } if(this->pos[0] < 0){ this->pos[0] = this->pos[0] + base::boxDim; } if(this->pos[1] > base::boxDim){ this->pos[1] = this->pos[1] - base::boxDim; } if(this->pos[1] < 0){ this->pos[1] = this->pos[1] + base::boxDim; } if(this->pos[2] > zL){ this->pos[2] = this->com[2] - base::boxDim; } if(this->pos[2] < 0){ this->pos[2] = this->pos[2] + base::boxDim; } }
Distance between atoms then becomes:
double Atom::distance(Atom *a){ //Calculate distance between particles Eigen::Vector3d displacement; disp = a->pos - this->pos; if(disp[0] < -1 * xL/2){ disp[0] += xL; } if(disp[0] > xL/2){ disp[0] -= xL; } if(disp[1] < -1 * yL/2){ disp[1] += yL; } if(disp[1] > yL/2){ disp[1] -= yL; } if(disp[2] < -1 * zL/2){ disp[2] += zL; } if(disp[2] > zL/2){ disp[2] -= zL; } return sqrt(disp.dot(disp)); }
Done
Periodic boundary conditions (for a box where are angles are 90 degrees):
Distance between atoms then becomes: