summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/DG/buildsource.m
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-07-15 18:09:46 -0800
committerTor Aamodt <[email protected]>2010-07-15 18:09:46 -0800
commit69f2911e04ffb1b19eef1fafb8c040af271f656e (patch)
tree231d3b6bdc3a202f7c255bfcf7bf2c36e32cee9e /benchmarks/CUDA/DG/buildsource.m
creating branch for adding support for CUDA 3.x and Fermi
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6829]
Diffstat (limited to 'benchmarks/CUDA/DG/buildsource.m')
-rw-r--r--benchmarks/CUDA/DG/buildsource.m106
1 files changed, 106 insertions, 0 deletions
diff --git a/benchmarks/CUDA/DG/buildsource.m b/benchmarks/CUDA/DG/buildsource.m
new file mode 100644
index 0000000..c93d363
--- /dev/null
+++ b/benchmarks/CUDA/DG/buildsource.m
@@ -0,0 +1,106 @@
+
+function buildsource(in_N)
+
+Globals2D;
+
+
+NODETOL = 1e-8;
+
+N = in_N;
+
+Np = (N+1)*(N+2)/2; Nfp = N+1; Nfaces = 3;
+
+[x,y] = Nodes2D(N);
+[r,s] = xytors(x,y);
+
+% find all the nodes that lie on each edge
+fmask1 = find( abs(s+1) < NODETOL)';
+fmask2 = find( abs(r+s) < NODETOL)';
+fmask3 = find( abs(r+1) < NODETOL)';
+Fmask = [fmask1;fmask2;fmask3]';
+
+% vandermonde matrix
+V = Vandermonde2D(N, r, s);
+
+% derivative matrices
+[Dr, Ds] = Dmatrices2D(N, r, s, V);
+
+% lift matrix
+LIFT = Lift2D();
+
+% correct to 0-index
+Fmask = Fmask-1;
+
+
+fid = fopen(sprintf('dataN%02d.h', N), 'w');
+
+fprintf(fid, sprintf('#ifndef DATAN%02d \n\n', N));
+fprintf(fid, sprintf('#define DATAN%02d 1\n\n', N));
+fprintf(fid, 'double p_r[%d] = { ', Np);
+fprintf(fid, '%17.15g ', r(1));
+for n=2:Np
+ fprintf(fid, ', %17.15g ', r(n));
+end
+fprintf(fid, '};\n')
+
+fprintf(fid, 'double p_s[%d] = {', Np);
+fprintf(fid, '%17.15g ', s(1));
+for n=2:Np
+ fprintf(fid, ', %17.15g ', s(n));
+end
+fprintf(fid, '};\n')
+
+fprintf(fid, 'double p_Dr[%d][%d] = {', Np, Np);
+for m=1:Np
+fprintf(fid, '{%17.15g ', Dr(m,1));
+for n=2:Np
+ fprintf(fid, ', %17.15g ', Dr(m,n));
+end
+if(m<Np)
+fprintf(fid, '},\n')
+else
+fprintf(fid, '}};\n')
+end
+end
+
+fprintf(fid, 'double p_Ds[%d][%d] = {', Np, Np);
+for m=1:Np
+fprintf(fid, '{%17.15g ', Ds(m,1));
+for n=2:Np
+ fprintf(fid, ', %17.15g ', Ds(m,n));
+end
+if(m<Np)
+fprintf(fid, '},\n')
+else
+fprintf(fid, '}};\n')
+end
+end
+
+fprintf(fid, 'double p_LIFT[%d][%d] = {', Np, Nfp*Nfaces);
+for m=1:Np
+fprintf(fid, '{%17.15g ', LIFT(m,1));
+for n=2:Nfp*Nfaces
+ fprintf(fid, ', %17.15g ', LIFT(m,n));
+end
+if(m<Np)
+fprintf(fid, '},\n')
+else
+fprintf(fid, '}};\n')
+end
+end
+
+fprintf(fid, 'int p_Fmask[%d][%d] = {', Nfaces, Nfp);
+for m=1:Nfaces
+fprintf(fid, '{%d ', Fmask(1,m));
+for n=2:Nfp
+ fprintf(fid, ', %d ', Fmask(n,m));
+end
+if(m<Nfaces)
+fprintf(fid, '},\n')
+else
+fprintf(fid, '}};\n')
+end
+end
+
+fprintf(fid, sprintf('\n#endif\n'));
+fclose(fid)