aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/graphite/pr82451.f
blob: 88ff85b1a99ec7b86e037a0995a28d5366412d86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
! { dg-do compile }
! { dg-options "-O2 -floop-nest-optimize" }
      MODULE LES3D_DATA
      PARAMETER ( NSCHEME = 4, ICHEM = 0, ISGSK = 0, IVISC = 1 )
      DOUBLE PRECISION DT, TIME, STATTIME, CFL, RELNO, TSTND, ALREF
      INTEGER IDYN, IMAX, JMAX, KMAX
      PARAMETER( RUNIV =  8.3145D3,
     >        TPRANDLT =    0.91D0)
      DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:,:,:) ::
     >             U, V, W, P, T, H, EK,
     >         UAV, VAV, WAV, PAV, TAV, HAV, EKAV
      DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:,:,:,:) ::
     >             CONC, HF, QAV, COAV, HFAV, DU
      DOUBLE PRECISION,ALLOCATABLE,DIMENSION(:,:,:,:,:) ::
     >             Q
      END MODULE LES3D_DATA
      SUBROUTINE FLUXJ()
      USE LES3D_DATA
      ALLOCATABLE QS(:), FSJ(:,:,:)
      ALLOCATABLE DWDX(:),DWDY(:),DWDZ(:)
      ALLOCATABLE DHDY(:), DKDY(:)
      PARAMETER (  R12I = 1.0D0 / 12.0D0,
     >             TWO3 = 2.0D0 / 3.0D0 )
      ALLOCATE( QS(IMAX-1), FSJ(IMAX-1,0:JMAX-1,ND))
      ALLOCATE( DWDX(IMAX-1),DWDY(IMAX-1),DWDZ(IMAX-1))
      I1 = 1
      DO K = K1,K2
         DO J = J1,J2
            DO I = I1, I2
               FSJ(I,J,5) = FSJ(I,J,5) + PAV(I,J,K) * QS(I)
            END DO
            DO I = I1, I2
               DWDX(I) = DXI * R12I * (WAV(I-2,J,K) - WAV(I+2,J,K) +
     >                        8.0D0 * (WAV(I+1,J,K) - WAV(I-1,J,K)))
            END DO
         END DO
      END DO
      DEALLOCATE( QS, FSJ, DHDY, DKDY)
      END