#ifndef GPU_MEM_H_ #define GPU_MEM_H_ #include "macrodef.fh" #ifdef WithShell struct Metass { double *crho,* sigma,* R,* drhodx,* drhody,* drhodz,* dsigmadx,* dsigmady,* dsigmadz,* dRdx,* dRdy,* dRdz,* drhodxx,* drhodxy,* drhodxz,* drhodyy,* drhodyz,* drhodzz,* dsigmadxx,* dsigmadxy,* dsigmadxz,* dsigmadyy,* dsigmadyz,* dsigmadzz,* dRdxx,* dRdxy,* dRdxz,* dRdyy,* dRdyz,* dRdzz; //local double *gx,*gy,*gz,*gxx,*gxy,*gxz,*gyy,*gyz,*gzz; }; __constant__ Metass metassc; Metass * metass; #endif //WithShell struct Meta { //SS //---------------in/out------------------- //int * ex; //int* Symmetry,Lev,co; //not array //in //double * T; //not array //in double * X,*Y,*Z; //in double * chi,*dxx,*dyy,*dzz; //inout double * trK ; //in double * gxy,*gxz,*gyz; //in double * Axx,*Axy,*Axz,*Ayy,*Ayz,*Azz; //in double * Gamx,*Gamy,*Gamz ; //in double * Lap, *betax, *betay, *betaz; //inout double * dtSfx, *dtSfy, *dtSfz ; //in double * chi_rhs,*trK_rhs ; //out double * gxx_rhs,*gxy_rhs,*gxz_rhs; //out double * gyy_rhs,*gyz_rhs,*gzz_rhs; //out double * Axx_rhs,*Axy_rhs,*Axz_rhs; //out double * Ayy_rhs,*Ayz_rhs,*Azz_rhs; //out double * Gamx_rhs,*Gamy_rhs,*Gamz_rhs;//out double * Lap_rhs, *betax_rhs, *betay_rhs, *betaz_rhs;//out double * dtSfx_rhs,*dtSfy_rhs,*dtSfz_rhs;//out double * rho,*Sx,*Sy,*Sz ; //in double * Sxx,*Sxy,*Sxz,*Syy,*Syz,*Szz; //in // when out, physical second kind of connection //out double * Gamxxx, *Gamxxy, *Gamxxz; double * Gamxyy, *Gamxyz, *Gamxzz; double * Gamyxx, *Gamyxy, *Gamyxz; double * Gamyyy, *Gamyyz, *Gamyzz; double * Gamzxx, *Gamzxy,* Gamzxz; double * Gamzyy, *Gamzyz, *Gamzzz; //when out, physical Ricci tensor double * Rxx,*Rxy,*Rxz,*Ryy,*Ryz,*Rzz; //out //double * eps; //in double * ham_Res, *movx_Res, *movy_Res, *movz_Res; //inout double * Gmx_Res, *Gmy_Res, *Gmz_Res; //inout //---------------local------------------- double * gxx,*gyy,*gzz , *chix,*chiy,*chiz , *gxxx,*gxyx,*gxzx,*gyyx,*gyzx,*gzzx , *gxxy,*gxyy,*gxzy,*gyyy,*gyzy,*gzzy , *gxxz,*gxyz,*gxzz,*gyyz,*gyzz,*gzzz , *Lapx,*Lapy,*Lapz , *betaxx,*betaxy,*betaxz , *betayx,*betayy,*betayz , *betazx,*betazy,*betazz , *Gamxx,*Gamxy,*Gamxz , *Gamyx,*Gamyy,*Gamyz , *Gamzx,*Gamzy,*Gamzz , *Kx,*Ky,*Kz,*div_beta,*S , *f,*fxx,*fxy,*fxz,*fyy,*fyz,*fzz , *Gamxa,*Gamya,*Gamza,*alpn1,*chin1 , *gupxx,*gupxy,*gupxz , *gupyy,*gupyz,*gupzz; //---------------subroutine---------------- double * fh; double * fh2; /*double *SSS; double *AAS; double *ASA; double *SAA; double *ASS; double *SAS; double *SSA;*/ //---------------GAUGE-------------- #if (GAUGE == 2 || GAUGE == 3 || GAUGE == 4 || GAUGE == 5 || GAUGE == 6 || GAUGE == 7) double * reta; #endif }; //------init constant memory--------- //1-----for compute_rhs_bssn--------- __constant__ Meta metac; __constant__ int ex_c[3]; __constant__ double T_c; __constant__ int Symmetry_c; __constant__ int Lev_c; __constant__ int co_c; __constant__ double eps_c; __constant__ int sst_c; //local __constant__ double dX; //dX,dY,dZ __constant__ double dY; __constant__ double dZ; __constant__ double ZEO = 1.0; __constant__ double ONE = 1.0; __constant__ double TWO = 2.0; __constant__ double FOUR = 4.0; __constant__ double EIGHT = 8.0; __constant__ double HALF = 0.5; __constant__ double THR = 3.0; __constant__ double SYM = 1.0; __constant__ double ANTI = -1.0; __constant__ double FF = 0.75; __constant__ double eta = 2.0; __constant__ double F1o3; __constant__ double F2o3; __constant__ double F3o2 = 1.5; __constant__ double F1o6; __constant__ double F8 = 8.0; __constant__ double F16 = 16.0; __constant__ double PI; /*__constant__ double SSS[3] = {1,1,1}; __constant__ double AAS[3] = {-1,-1,1}; __constant__ double ASA[3] = {-1,1,-1}; __constant__ double SAA[3] = {1,-1,-1}; __constant__ double ASS[3] = {-1,1,1}; __constant__ double SAS[3] = {1,-1,1}; __constant__ double SSA[3] = {1,1,-1};*/ //2--------for fderivs------------ __constant__ int ijk_min[3]; __constant__ int ijk_min2[3]; __constant__ int ijk_min3[3]; __constant__ int ijk_max[3]; __constant__ int ijk_max3[3]; __constant__ double d12dxyz[3]; __constant__ double d2dxyz[3]; //3--------for fdderivs------------ __constant__ double Sdxdx; __constant__ double Sdydy; __constant__ double Sdzdz; __constant__ double Fdxdx; __constant__ double Fdydy; __constant__ double Fdzdz; __constant__ double Sdxdy; __constant__ double Sdxdz; __constant__ double Sdydz; __constant__ double Fdxdy; __constant__ double Fdxdz; __constant__ double Fdydz; //my own __constant__ int STEP_SIZE; /*__constant__ int MATRIX_SIZE; __constant__ int MATRIX_SIZE_FH; __constant__ int SQUARE_SIZE; __constant__ int SQUARE_SIZE_FH; __constant__ int LINE_SIZE_FH;*/ __constant__ int _1D_SIZE[4]; //start from 0 !! __constant__ int _2D_SIZE[4]; ////start from 0 !! __constant__ int _3D_SIZE[4]; ////start from 0 !! int h_1D_SIZE[4]; //start from 0 !! int h_2D_SIZE[4]; ////start from 0 !! int h_3D_SIZE[4]; ////start from 0 !! Meta * meta; #if (GAUGE == 6 || GAUGE == 7) __constant__ int BHN; __constant__ double Porg[9]; __constant__ double Mass[3]; __constant__ double /*r1,r2*/,M,A,/*w1,w2 (== 12)*/,C1,C2; #endif /**/ #endif