#include "PmeKSpace.h"#include <math.h>#include <stdlib.h>#include <alloca.h>#include "SimParameters.h"#include "Node.h"#include "ComputeMoaMgr.decl.h"Go to the source code of this file.
Defines | |
| #define | ALLOCA(TYPE, NAME, SIZE) TYPE *NAME = (TYPE *) alloca((SIZE)*sizeof(TYPE)) |
Functions | |
| void | dftmod (double *bsp_mod, double *bsp_arr, int nfft) |
| void | compute_b_moduli (double *bm, int K, int order) |
| void | compute_energy_orthogonal_nodehelper (int first, int last, void *result, int paraNum, void *param) |
|
|
Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved. Definition at line 19 of file PmeKSpace.C. Referenced by ProxyMgr::recvNodeAwareSpanningTree(). |
|
||||||||||||||||
|
Definition at line 41 of file PmeKSpace.C. References compute_b_spline(), dftmod(), and order. Referenced by PmeKSpace::PmeKSpace(). 00041 {
00042 int i;
00043 double fr[3];
00044
00045 double *M = new double[3*order];
00046 double *dM = new double[3*order];
00047 double *scratch = new double[K];
00048
00049 fr[0]=fr[1]=fr[2]=0.0;
00050 compute_b_spline(fr,M,dM,order);
00051 for (i=0; i<order; i++) bm[i] = M[i];
00052 for (i=order; i<K; i++) bm[i] = 0.0;
00053 dftmod(scratch, bm, K);
00054 for (i=0; i<K; i++) bm[i] = 1.0/scratch[i];
00055
00056
00057 delete [] scratch;
00058 delete [] dM;
00059 delete [] M;
00060 }
|
|
||||||||||||||||||||||||
|
Definition at line 213 of file PmeKSpace.C. References PmeKSpace::compute_energy_orthogonal_subset(). 00213 {
00214 CmiAssert(first==last);
00215 void **params = (void **)param;
00216 PmeKSpace *kspace = (PmeKSpace *)params[0];
00217 float *q_arr = (float *)params[1];
00218 double *recips = (double *)params[2];
00219 double *partialEnergy = (double *)params[3];
00220 double *partialVirial = (double *)params[4];
00221 int *unitDist = (int *)params[5];
00222
00223 int i = first;
00224 int unit = unitDist[0];
00225 int remains = unitDist[1];
00226 int k1from, k1to;
00227 if(i<remains){
00228 k1from = i*(unit+1);
00229 k1to = k1from+unit;
00230 }else{
00231 k1from = remains*(unit+1)+(i-remains)*unit;
00232 k1to = k1from+unit-1;
00233 }
00234 double *pEnergy = partialEnergy+i;
00235 double *pVirial = partialVirial+i*6;
00236 kspace->compute_energy_orthogonal_subset(q_arr, recips, pVirial, pEnergy, k1from, k1to);
00237 }
|
|
||||||||||||||||
|
Definition at line 21 of file PmeKSpace.C. References j. Referenced by compute_b_moduli(). 00021 {
00022 int j, k;
00023 double twopi, arg, sum1, sum2;
00024 double infft = 1.0/nfft;
00025 /* Computes the modulus of the discrete fourier transform of bsp_arr, */
00026 /* storing it into bsp_mod */
00027 twopi = 2.0 * M_PI;
00028
00029 for (k = 0; k <nfft; ++k) {
00030 sum1 = 0.;
00031 sum2 = 0.;
00032 for (j = 0; j < nfft; ++j) {
00033 arg = twopi * k * j * infft;
00034 sum1 += bsp_arr[j] * cos(arg);
00035 sum2 += bsp_arr[j] * sin(arg);
00036 }
00037 bsp_mod[k] = sum1*sum1 + sum2*sum2;
00038 }
00039 }
|
1.3.9.1