void sum_epot(t_grpopts *opts, gmx_grppairener_t *grpp, real *epot) { int i; /* Accumulate energies */ epot[F_COUL_SR] = sum_v(grpp->nener, grpp->ener[egCOULSR]); epot[F_LJ] = sum_v(grpp->nener, grpp->ener[egLJSR]); epot[F_LJ14] = sum_v(grpp->nener, grpp->ener[egLJ14]); epot[F_VDW14] = sum_v(grpp->nener, grpp->ener[egVDW14]); epot[F_COUL14] = sum_v(grpp->nener, grpp->ener[egCOUL14]); epot[F_COUL_LR] = sum_v(grpp->nener, grpp->ener[egCOULLR]); epot[F_LJ_LR] = sum_v(grpp->nener, grpp->ener[egLJLR]); /* We have already added 1-2,1-3, and 1-4 terms to F_GBPOL */ epot[F_GBPOL] += sum_v(grpp->nener, grpp->ener[egGB]); /* lattice part of LR doesnt belong to any group * and has been added earlier */ epot[F_BHAM] = sum_v(grpp->nener, grpp->ener[egBHAMSR]); epot[F_BHAM_LR] = sum_v(grpp->nener, grpp->ener[egBHAMLR]); epot[F_EPOT] = 0; for (i = 0; (i < F_EPOT); i++) { if (i != F_DISRESVIOL && i != F_ORIRESDEV) { epot[F_EPOT] += epot[i]; } } }
static void sum_epot(t_grpopts *opts,gmx_enerdata_t *enerd) { gmx_grppairener_t *grpp; real *epot; int i; grpp = &enerd->grpp; epot = enerd->term; /* Accumulate energies */ epot[F_COUL_SR] = sum_v(grpp->nener,grpp->ener[egCOULSR]); epot[F_LJ] = sum_v(grpp->nener,grpp->ener[egLJSR]); epot[F_LJ14] = sum_v(grpp->nener,grpp->ener[egLJ14]); epot[F_COUL14] = sum_v(grpp->nener,grpp->ener[egCOUL14]); epot[F_COUL_LR] = sum_v(grpp->nener,grpp->ener[egCOULLR]); epot[F_LJ_LR] = sum_v(grpp->nener,grpp->ener[egLJLR]); /* lattice part of LR doesnt belong to any group * and has been added earlier */ epot[F_BHAM] = sum_v(grpp->nener,grpp->ener[egBHAMSR]); epot[F_BHAM_LR] = sum_v(grpp->nener,grpp->ener[egBHAMLR]); epot[F_EPOT] = 0; for(i=0; (i<F_EPOT); i++) if (i != F_DISRESVIOL && i != F_ORIRESDEV && i != F_DIHRESVIOL) epot[F_EPOT] += epot[i]; }
int sum_l(int n, ...) { va_list ap; int s; va_start(ap, n); s = sum_v(n, ap); va_end(ap); return s; }
static void run_vararg(long long loops, int *v) { long long i; for (i=0; i<loops; i++) *v = sum_v(v, v+1, v+2, v+3, v+4, v+5, v+6, v+7, v+8, v+9, NULL); }