108 lines
5.2 KiB
C
108 lines
5.2 KiB
C
|
|
!---------------------------------------------------------------------
|
||
|
|
!---------------------------------------------------------------------
|
||
|
|
!
|
||
|
|
! header.h
|
||
|
|
!
|
||
|
|
!---------------------------------------------------------------------
|
||
|
|
!---------------------------------------------------------------------
|
||
|
|
|
||
|
|
implicit none
|
||
|
|
|
||
|
|
!---------------------------------------------------------------------
|
||
|
|
! The following include file is generated automatically by the
|
||
|
|
! "setparams" utility. it defines
|
||
|
|
! maxcells: the square root of the maximum number of processors
|
||
|
|
! problem_size: 12, 64, 102, 162 (for class t, a, b, c)
|
||
|
|
! dt_default: default time step for this problem size if no
|
||
|
|
! config file
|
||
|
|
! niter_default: default number of iterations for this problem size
|
||
|
|
!---------------------------------------------------------------------
|
||
|
|
|
||
|
|
include 'npbparams_bt.h'
|
||
|
|
|
||
|
|
integer aa, bb, cc, block_size
|
||
|
|
parameter (aa=1, bb=2, cc=3, block_size=5)
|
||
|
|
|
||
|
|
integer grid_points(3)
|
||
|
|
double precision elapsed_time
|
||
|
|
common /global_bt/ elapsed_time, grid_points
|
||
|
|
|
||
|
|
double precision tx1, tx2, tx3, ty1, ty2, ty3, tz1, tz2, tz3
|
||
|
|
double precision dx1, dx2, dx3, dx4, dx5, dy1, dy2, dy3, dy4
|
||
|
|
double precision dy5, dz1, dz2, dz3, dz4, dz5, dssp, dt
|
||
|
|
double precision ce(5,13), dxmax, dymax, dzmax, xxcon1, xxcon2
|
||
|
|
double precision xxcon3, xxcon4, xxcon5, dx1tx1, dx2tx1, dx3tx1
|
||
|
|
double precision dx4tx1, dx5tx1, yycon1, yycon2, yycon3, yycon4
|
||
|
|
double precision yycon5, dy1ty1, dy2ty1, dy3ty1, dy4ty1, dy5ty1
|
||
|
|
double precision zzcon1, zzcon2, zzcon3, zzcon4, zzcon5, dz1tz1
|
||
|
|
double precision dz2tz1, dz3tz1, dz4tz1, dz5tz1, dnxm1, dnym1
|
||
|
|
double precision dnzm1, c1c2, c1c5, c3c4, c1345, conz1, c1, c2
|
||
|
|
double precision c3, c4, c5, c4dssp, c5dssp, dtdssp, dttx1
|
||
|
|
double precision dttx2, dtty1, dtty2, dttz1, dttz2, c2dttx1
|
||
|
|
double precision c2dtty1, c2dttz1, comz1, comz4, comz5, comz6
|
||
|
|
double precision c3c4tx3, c3c4ty3, c3c4tz3, c2iv, con43, con16
|
||
|
|
integer stage_n, bl, r
|
||
|
|
|
||
|
|
common /constants_bt/ tx1,tx2,tx3,ty1,ty2,ty3, tz1,tz2,tz3
|
||
|
|
common /constants_bt/ dx1,dx2,dx3,dx4,dx5,dy1, dy2, dy3, dy4
|
||
|
|
common /constants_bt/ dy5,dz1,dz2,dz3,dz4,dz5, dssp, dt
|
||
|
|
common /constants_bt/ ce,dxmax,dymax,dzmax,xxcon1,xxcon2
|
||
|
|
common /constants_bt/ xxcon3,xxcon4,xxcon5,dx1tx1,dx2tx1,dx3tx1
|
||
|
|
common /constants_bt/ dx4tx1,dx5tx1,yycon1,yycon2,yycon3,yycon4
|
||
|
|
common /constants_bt/ yycon5,dy1ty1,dy2ty1,dy3ty1,dy4ty1,dy5ty1
|
||
|
|
common /constants_bt/ zzcon1,zzcon2,zzcon3,zzcon4,zzcon5,dz1tz1
|
||
|
|
common /constants_bt/ dz2tz1,dz3tz1,dz4tz1,dz5tz1,dnxm1,dnym1
|
||
|
|
common /constants_bt/ dnzm1,c1c2,c1c5,c3c4,c1345,conz1, c1, c2
|
||
|
|
common /constants_bt/ c3,c4,c5,c4dssp,c5dssp,dtdssp, dttx1
|
||
|
|
common /constants_bt/ dttx2,dtty1,dtty2,dttz1,dttz2,c2dttx1
|
||
|
|
common /constants_bt/ c2dtty1,c2dttz1,comz1,comz4,comz5,comz6
|
||
|
|
common /constants_bt/ c3c4tx3,c3c4ty3,c3c4tz3,c2iv,con43,con16
|
||
|
|
common /constants_bt/ stage_n
|
||
|
|
|
||
|
|
integer imax, jmax, kmax
|
||
|
|
|
||
|
|
parameter (imax=problem_size,jmax=problem_size,kmax=problem_size)
|
||
|
|
parameter (bl=1, r=0)
|
||
|
|
!
|
||
|
|
! to improve cache performance, grid dimensions padded by 1
|
||
|
|
! for even number sizes only.
|
||
|
|
!
|
||
|
|
double precision us(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision vs(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision ws(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision qs(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision rho_i(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision square(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision forcing (5,0:imax/2*2,0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision u(5,0:(imax+1)/2*2,0:(jmax+1)/2*2,0:(kmax+1)/2*2)
|
||
|
|
double precision rhs(5,0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
double precision lhs__(5,5,0:imax/2*2,0:jmax/2*2,0:kmax/2*2/bl+r)
|
||
|
|
double precision speed(0:imax/2*2, 0:jmax/2*2, 0:kmax/2*2)
|
||
|
|
common /fields/ u, us, vs, ws, qs, rho_i, speed, square
|
||
|
|
common /fields/ rhs, forcing, lhs__
|
||
|
|
|
||
|
|
double precision cv(-2:problem_size+1)
|
||
|
|
double precision cuf(-2:problem_size+1), q(-2:problem_size+1)
|
||
|
|
double precision ue(-2:problem_size+1,5), buf(-2:problem_size+1,5)
|
||
|
|
common /work_1d_bt/ cv, cuf, q, ue, buf
|
||
|
|
|
||
|
|
double precision tmp1, tmp2, tmp3, tmp11, tmp22
|
||
|
|
double precision t1, t2, t3, tm1, tm2, tm3
|
||
|
|
|
||
|
|
common /work_lhs_bt/ tmp1, tmp2, tmp3, tmp11, tmp22
|
||
|
|
common /work_lhs_bt/ t1, t2, t3, tm1, tm2, tm3
|
||
|
|
double precision tmp_block(5,5), b_inverse(5,5), tmp_vec(5)
|
||
|
|
common /work_solve_bt/ tmp_block, b_inverse, tmp_vec
|
||
|
|
!--------------------------------------------------------------------
|
||
|
|
! fdvm specifications
|
||
|
|
!--------------------------------------------------------------------
|
||
|
|
|
||
|
|
! dvm$ distribute us (block,block,block)
|
||
|
|
! dvm$ align (i,j,k) with us(i,j,k) :: vs, ws, qs, rho_i, square
|
||
|
|
! dvm$ align (*,*,i,j,k) with us(i,j,k) :: lhs__
|
||
|
|
! dvm$ align (*,i,j,k) with us(i,j,k) :: u, rhs
|
||
|
|
! dvm$ align (*,i,j,k) with us(i,j,k) :: forcing
|
||
|
|
|
||
|
|
! dvm$ shadow u(2:2,2:2,2:2,2:2)
|
||
|
|
|