2017-04-26 17:20:15 +02:00
|
|
|
/*************************************************************************/
|
|
|
|
/* */
|
|
|
|
/* Copyright (c) 1994 Stanford University */
|
|
|
|
/* */
|
|
|
|
/* All rights reserved. */
|
|
|
|
/* */
|
|
|
|
/* Permission is given to use, copy, and modify this software for any */
|
|
|
|
/* non-commercial purpose as long as this copyright notice is not */
|
|
|
|
/* removed. All other uses, including redistribution in whole or in */
|
|
|
|
/* part, are forbidden without prior written permission. */
|
|
|
|
/* */
|
|
|
|
/* This software is provided with absolutely no warranty and no */
|
|
|
|
/* support. */
|
|
|
|
/* */
|
|
|
|
/*************************************************************************/
|
|
|
|
|
|
|
|
EXTERN_ENV
|
|
|
|
#include "mdvar.h"
|
|
|
|
#include "parameters.h"
|
2017-04-26 18:03:02 +02:00
|
|
|
#include "mddata.h"
|
2017-04-26 17:20:15 +02:00
|
|
|
#include "split.h"
|
2017-04-26 18:03:02 +02:00
|
|
|
#include "global.h"
|
2017-04-26 17:20:15 +02:00
|
|
|
|
|
|
|
/* this routine puts the molecules back inside the box if they are out */
|
|
|
|
void BNDRY(long ProcID)
|
|
|
|
{
|
|
|
|
long mol, dir;
|
|
|
|
double *extra_p;
|
|
|
|
|
|
|
|
/* for each molecule */
|
|
|
|
for (mol = StartMol[ProcID]; mol < StartMol[ProcID+1]; mol++) {
|
|
|
|
/* for each direction */
|
|
|
|
for ( dir = XDIR; dir <= ZDIR; dir++ ) {
|
|
|
|
extra_p = VAR[mol].F[DISP][dir];
|
|
|
|
/* if the oxygen atom is out of the box */
|
|
|
|
if (extra_p[O] > BOXL) {
|
|
|
|
/* move all three atoms back in the box */
|
|
|
|
extra_p[H1] -= BOXL;
|
|
|
|
extra_p[O] -= BOXL;
|
|
|
|
extra_p[H2] -= BOXL;
|
|
|
|
}
|
|
|
|
else if (extra_p[O] < 0.00) {
|
|
|
|
extra_p[H1] += BOXL;
|
|
|
|
extra_p[O] += BOXL;
|
|
|
|
extra_p[H2] += BOXL;
|
|
|
|
}
|
|
|
|
} /* for dir */
|
|
|
|
} /* for mol */
|
|
|
|
} /* end of subroutine BNDRY */
|