Skip to content
Snippets Groups Projects
Commit f12010bc authored by ESCOBAR Juan's avatar ESCOBAR Juan
Browse files

Juan 14/09/2020 : gravity_impl.f90 OpenACC optimisation -> DO CONCURRENT

parent 6d98e434
No related branches found
No related tags found
No related merge requests found
...@@ -126,6 +126,9 @@ REAL, DIMENSION(:,:,:,:), allocatable :: ZR ...@@ -126,6 +126,9 @@ REAL, DIMENSION(:,:,:,:), allocatable :: ZR
! !
INTEGER :: JR INTEGER :: JR
! !
INTEGER :: JI,JJ,JK
INTEGER :: JIU,JJU,JKU
!
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
!$acc data present( PTHT, PRHODJ, PRT, PTHVREF, PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD ) !$acc data present( PTHT, PRHODJ, PRT, PTHVREF, PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD )
...@@ -144,6 +147,10 @@ IF (MPPDB_INITIALIZED) THEN ...@@ -144,6 +147,10 @@ IF (MPPDB_INITIALIZED) THEN
CALL MPPDB_CHECK(PRWS, "GRAVITY_IMPL beg:PRWS") CALL MPPDB_CHECK(PRWS, "GRAVITY_IMPL beg:PRWS")
END IF END IF
JIU = size(ptht, 1 )
JJU = size(ptht, 2 )
JKU = size(ptht, 3 )
allocate( zrws_grav( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) ) allocate( zrws_grav( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) )
allocate( zth ( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) ) allocate( zth ( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) )
allocate( zr ( size( prt, 1 ), size( prt, 2 ), size( prt, 3 ), size( prt, 4 ) ) ) allocate( zr ( size( prt, 1 ), size( prt, 2 ), size( prt, 3 ), size( prt, 4 ) ) )
...@@ -154,9 +161,10 @@ allocate( zr ( size( prt, 1 ), size( prt, 2 ), size( prt, 3 ), size( pr ...@@ -154,9 +161,10 @@ allocate( zr ( size( prt, 1 ), size( prt, 2 ), size( prt, 3 ), size( pr
! guess of Theta at future time-step ! guess of Theta at future time-step
!$acc kernels !$acc kernels
ZTH(:,:,:) = (PRTHS(:,:,:) + PRTHS_CLD(:,:,:)) / PRHODJ(:,:,:) * PTSTEP ZTH(:,:,:) = (PRTHS(:,:,:) + PRTHS_CLD(:,:,:)) / PRHODJ(:,:,:) * PTSTEP
DO JR = 1, KRR !
ZR(:,:,:,JR) = (PRRS(:,:,:,JR) + PRRS_CLD(:,:,:,JR)) / PRHODJ(:,:,:) * PTSTEP DO CONCURRENT ( JI=1:JIU,JJ=1:JJU,JK=1:JKU , JR = 1:KRR )
END DO ZR(JI,JJ,JK,JR) = (PRRS(JI,JJ,JK,JR) + PRRS_CLD(JI,JJ,JK,JR)) / PRHODJ(JI,JJ,JK) * PTSTEP
END DO ! CONCURRENT
!$acc end kernels !$acc end kernels
! !
#ifndef MNH_OPENACC #ifndef MNH_OPENACC
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment