/*************************************************************************/ /* */ /* 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 "math.h" #include "mdvar.h" #include "parameters.h" #include "mddata.h" #include "split.h" #include "global.h" /* this routine computes kinetic energy in each of the three spatial dimensions, and puts the computed values in the SUM array */ void KINETI(double *SUM, double HMAS, double OMAS, long ProcID) { long dir, mol; double S; /* loop over the three directions */ for (dir = XDIR; dir <= ZDIR; dir++) { S=0.0; /* loop over the molecules */ for (mol = StartMol[ProcID]; mol < StartMol[ProcID+1]; mol++) { double *tempptr = VAR[mol].F[VEL][dir]; S += ( tempptr[H1] * tempptr[H1] + tempptr[H2] * tempptr[H2] ) * HMAS + (tempptr[O] * tempptr[O]) * OMAS; } LOCK(gl->KinetiSumLock); SUM[dir]+=S; UNLOCK(gl->KinetiSumLock); } /* for */ } /* end of subroutine KINETI */