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

48 lines
2 KiB
C
Raw 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 "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 */