diff options
Diffstat (limited to 'benchmarks/CUDA/DG/src/InitCPU3d.c')
| -rw-r--r-- | benchmarks/CUDA/DG/src/InitCPU3d.c | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/benchmarks/CUDA/DG/src/InitCPU3d.c b/benchmarks/CUDA/DG/src/InitCPU3d.c deleted file mode 100644 index 2fe907f..0000000 --- a/benchmarks/CUDA/DG/src/InitCPU3d.c +++ /dev/null @@ -1,152 +0,0 @@ -#include "mpi.h" -#include "fem.h" - -double InitCPU3d(Mesh *mesh, int Nfields){ - - printf("Np = %d, BSIZE = %d\n", p_Np, BSIZE); - - /* Q */ - int sz = mesh->K*(p_Np)*Nfields*sizeof(float); /* TW BLOCK */ - - mesh->f_Q = (float*) calloc(mesh->K*p_Np*Nfields, sizeof(float)); - mesh->f_rhsQ = (float*) calloc(mesh->K*p_Np*Nfields, sizeof(float)); - mesh->f_resQ = (float*) calloc(mesh->K*p_Np*Nfields, sizeof(float)); - - /* float LIFT */ - sz = p_Np*(p_Nfp)*(p_Nfaces)*sizeof(float); - mesh->f_LIFT = (float*) malloc(sz); - int sk = 0, n, m, f, k; - - for(n=0;n<p_Np;++n){ - for(m=0;m<p_Nfp*p_Nfaces;++m){ - mesh->f_LIFT[sk++] = mesh->LIFT[n][m]; - } - } - - /* float Dr & Ds */ - sz = p_Np*p_Np*sizeof(float); - mesh->f_Dr = (float*) malloc(sz); - mesh->f_Ds = (float*) malloc(sz); - mesh->f_Dt = (float*) malloc(sz); - - sk = 0; - for(n=0;n<p_Np;++n){ - for(m=0;m<p_Np;++m){ - mesh->f_Dr[sk] = mesh->Dr[n][m]; - mesh->f_Ds[sk] = mesh->Ds[n][m]; - mesh->f_Dt[sk] = mesh->Dt[n][m]; - ++sk; - } - } - - /* vgeo */ - double drdx, dsdx, dtdx; - double drdy, dsdy, dtdy; - double drdz, dsdz, dtdz, J; - mesh->vgeo = (float*) calloc(12*mesh->K, sizeof(float)); - - for(k=0;k<mesh->K;++k){ - GeometricFactors3d(mesh, k, - &drdx, &dsdx, &dtdx, - &drdy, &dsdy, &dtdy, - &drdz, &dsdz, &dtdz, &J); - - mesh->vgeo[k*12+0] = drdx; mesh->vgeo[k*12+1] = drdy; mesh->vgeo[k*12+2] = drdz; - mesh->vgeo[k*12+4] = dsdx; mesh->vgeo[k*12+5] = dsdy; mesh->vgeo[k*12+6] = dsdz; - mesh->vgeo[k*12+8] = dtdx; mesh->vgeo[k*12+9] = dtdy; mesh->vgeo[k*12+10] = dtdz; - } - - /* surfinfo (vmapM, vmapP, Fscale, Bscale, nx, ny, nz, 0) */ - sz = mesh->K*p_Nfp*p_Nfaces*7*sizeof(float); - - mesh->surfinfo = (float*) malloc(sz); - - /* local-local info */ - sk = 0; - int skP = -1; - double *nxk = BuildVector(mesh->Nfaces); - double *nyk = BuildVector(mesh->Nfaces); - double *nzk = BuildVector(mesh->Nfaces); - double *sJk = BuildVector(mesh->Nfaces); - - double dt = 1e6; - - sk = 0; - for(k=0;k<mesh->K;++k){ - - GeometricFactors3d(mesh, k, - &drdx, &dsdx, &dtdx, - &drdy, &dsdy, &dtdy, - &drdz, &dsdz, &dtdz, &J); - - Normals3d(mesh, k, nxk, nyk, nzk, sJk); - - for(f=0;f<mesh->Nfaces;++f){ - - dt = min(dt, J/sJk[f]); - - for(m=0;m<p_Nfp;++m){ - int id = m + f*p_Nfp + p_Nfp*p_Nfaces*k; - int idM = mesh->vmapM[id]; - int idP = mesh->vmapP[id]; - int nM = idM%p_Np; - int nP = idP%p_Np; - int kM = (idM-nM)/p_Np; - int kP = (idP-nP)/p_Np; - idM = Nfields*(nM + p_Np*kM); - idP = Nfields*(nP + p_Np*kP); - - /* stub resolve some other way */ - if(mesh->vmapP[id]<0){ - idP = mesh->vmapP[id]; /* -ve numbers */ - } - - mesh->surfinfo[sk++] = idM; - mesh->surfinfo[sk++] = idP; - mesh->surfinfo[sk++] = sJk[f]/(2.*J); - mesh->surfinfo[sk++] = (idM==idP)?-1.:1.; - mesh->surfinfo[sk++] = nxk[f]; - mesh->surfinfo[sk++] = nyk[f]; - mesh->surfinfo[sk++] = nzk[f]; - } - } - } -} - -void cpu_set_data3d(Mesh *mesh, double *Hx, double *Hy, double *Hz, - double *Ex, double *Ey, double *Ez){ - - const int K = mesh->K; - int k, n, sk=0; - - for(k=0;k<K;++k){ - for(n=0;n<p_Np;++n){ - mesh->f_Q[sk++] = Hx[n+k*p_Np]; - mesh->f_Q[sk++] = Hy[n+k*p_Np]; - mesh->f_Q[sk++] = Hz[n+k*p_Np]; - mesh->f_Q[sk++] = Ex[n+k*p_Np]; - mesh->f_Q[sk++] = Ey[n+k*p_Np]; - mesh->f_Q[sk++] = Ez[n+k*p_Np]; - } - } - -} - - -void cpu_get_data3d(Mesh *mesh, double *Hx, double *Hy, double *Hz, - double *Ex, double *Ey, double *Ez){ - const int K = mesh->K; - int k, n, sk=0; - - for(k=0;k<K;++k){ - for(n=0;n<p_Np;++n){ - Hx[n+k*p_Np] = mesh->f_Q[sk++]; - Hy[n+k*p_Np] = mesh->f_Q[sk++]; - Hz[n+k*p_Np] = mesh->f_Q[sk++]; - Ex[n+k*p_Np] = mesh->f_Q[sk++]; - Ey[n+k*p_Np] = mesh->f_Q[sk++]; - Ez[n+k*p_Np] = mesh->f_Q[sk++]; - } - } - -} |
