Guest User

Untitled

a guest
Mar 23rd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include <assert.h>
  5. #include <openacc.h>
  6. #include<time.h>
  7. #include <string.h>
  8. #include <malloc.h>
  9.  
  10. #define NX 201
  11. #define NY 101
  12. #define NZ 201
  13. int main(void)
  14. {
  15. clock_t start, end;
  16. double cpu_time_used;
  17. start = clock();
  18. int i, j, k, l, m;
  19. static double tr, w;
  20. static double dt = 9.5e-9, t;
  21. static double cu[NZ];
  22. static double AA[NX][NY][NZ] , CC[NX][NY][NZ] , BB[NX][NY][NZ] ;
  23. static double A[NX][NY][NZ] , B[NX][NY][NZ] , C[NX][NY][NZ] ;
  24. FILE *file;
  25. file = fopen("BB-and-A.csv", "w");
  26. t = 0.;
  27. #pragma acc data copy(B ,A , C,AA , CC,BB,cu )
  28. {
  29. for (l = 1; l < 255; l++) {
  30. #pragma acc kernels
  31. for (i = 1; i < NX - 1; i++) {
  32. for (j = 0; j < NY - 1; j++) {
  33. for (k = 1; k < NZ - 1; k++) {
  34. A[i][j][k] = A[i][j][k]
  35. + 1. * (B[i][j][k] - AA[i][j][k - 1]);
  36.  
  37. }
  38. }
  39. }
  40. #pragma acc kernels
  41. for (i = 1; i < NX - 1; i++) { /* BB */
  42. for (j = 1; j < NY - 1; j++) {
  43. for (k = 0; k < NZ - 1; k++) {
  44. B[i][j][k] = B[i][j][k]
  45. + 1.* (BB[i][j][k] - A[i - 1][j][k]);
  46.  
  47. }
  48. }
  49. }
  50. #pragma acc kernels
  51. for (m = 1; m < NZ - 1; m++) {
  52. tr = t - (double)(m)*5 / 1.5e8;
  53. if (tr <= 0.)
  54. cu[m] = 0.;
  55. else {
  56. w = (tr / 0.25e-6)*(tr / 0.25e-6);
  57. cu[m] =1666*w / (w + 1.)*exp(-tr / 2.5e-6) ;
  58. cu[m] = 2*cu[m];
  59. }
  60. A[10][60][m] = -cu[m];
  61. }
  62. #pragma acc update self(B)
  63. fprintf(file, "%e, %e n", t*1e6, -B[22][60][10] );
  64. t = t + dt;
  65. }
  66. }
  67. end = clock();
  68. cpu_time_used = ((double)(end - start)) / CLOCKS_PER_SEC;
  69. printf("n cpu time %5.5f sec ", cpu_time_used);
  70. fclose(file);
  71. }
Add Comment
Please, Sign In to add comment