ExaFMM 1
Fast-multipole Method for exascale systems
|
00001 #define NMAX 65536 00002 #define KMAX 16384 00003 #define NTHRE 128 00004 #define NLOAD 32 00005 #define ATYPE 64 00006 #define ATYPE2 (ATYPE * ATYPE) 00007 00008 #define MD_REAL_R2MIN 0.0001f 00009 #define MD_REAL_R2MAX 10.0f 00010 #define MD_LJ_R2MIN 0.25 00011 #define MD_LJ_R2MAX 64.0 00012 00013 typedef union { 00014 float q; 00015 int atype; 00016 } VG_QATYPE; 00017 00018 typedef struct { 00019 int r[3]; 00020 VG_QATYPE qatype; 00021 } VG_XVEC; 00022 00023 typedef struct { 00024 float k[3]; 00025 float factor1; 00026 } VG_KVEC; 00027 00028 typedef struct { 00029 float gscale; 00030 float rscale; 00031 } VG_MATRIX; 00032 00033 typedef union { 00034 int i; 00035 float f; 00036 } FI; 00037 00038 typedef union { 00039 struct{ 00040 FI fi0; 00041 FI fi1; 00042 } fi2; 00043 double d; 00044 } DI2; 00045 00046 void MR3calccoulomb_ij(int ni, double xi[], double qi[], double force[], 00047 int nj, double xj[], double qj[], 00048 double rscale, 00049 int tblno, double xmax, int periodicflag); 00050 00051 void MR3calcvdw_ij(int ni, double xi[], int atypei[], double force[], 00052 int nj, double xj[], int atypej[], 00053 int nat, double gscale[], double rscale[], 00054 int tblno, double xmax, int periodicflag); 00055 00056 void MR3calcewald(int *k, int knum_org, double *x, int n, double *q, 00057 double alpha, double epsilon, double cell[3][3], 00058 double *force, double *tpot, double stress[3][3]); 00059 00060 int get_knum(double ksize); 00061 00062 void init_kvec(double ksize, int *kvec);