gem5/splash2/codes/apps/water-nsquared/bndry.C

50 lines
2.1 KiB
C
Raw Permalink Normal View History

/*************************************************************************/
/* */
/* 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"
#include "mddata.h"
#include "split.h"
#include "global.h"
/* 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 */