Skip to content
Snippets Groups Projects
Commit 1e7df09f authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 27/06/2016: 2 gradient_m versions: with or without linearized loops...

Philippe 27/06/2016: 2 gradient_m versions: with or without linearized loops (useful for bound checking)
parent 4ec01958
Branches
Tags
No related merge requests found
...@@ -488,6 +488,7 @@ IF (.NOT. LFLAT) THEN ...@@ -488,6 +488,7 @@ IF (.NOT. LFLAT) THEN
! PGX_M_U = ( DXM(PY) - MZF ( MXM( DZM(PY) /PDZZ ) * PDZX ) )/PDXX ! PGX_M_U = ( DXM(PY) - MZF ( MXM( DZM(PY) /PDZZ ) * PDZX ) )/PDXX
!$acc data pcopyin (pdzz,pdzx,pdxx,py) !$acc data pcopyin (pdzz,pdzx,pdxx,py)
!$acc kernels !$acc kernels
#ifndef _OPT_LINEARIZED_LOOPS
DO JK=1+JPVEXT_TURB,IKU-JPVEXT_TURB DO JK=1+JPVEXT_TURB,IKU-JPVEXT_TURB
DO JI=1+JPHEXT,IIU DO JI=1+JPHEXT,IIU
PGX_M_U(JI,:,JK)= & PGX_M_U(JI,:,JK)= &
...@@ -501,31 +502,31 @@ IF (.NOT. LFLAT) THEN ...@@ -501,31 +502,31 @@ IF (.NOT. LFLAT) THEN
) / PDXX(JI,:,JK) ) / PDXX(JI,:,JK)
END DO END DO
END DO END DO
!!$ JIJKOR = 1 + JPHEXT + IIU*IJU*(JPVEXT_TURB+1 - 1) #else
!!$ JIJKEND = IIU*IJU*(IKU-JPVEXT_TURB) JIJKOR = 1 + JPHEXT + IIU*IJU*(JPVEXT_TURB+1 - 1)
!!$!CDIR NODEP JIJKEND = IIU*IJU*(IKU-JPVEXT_TURB)
!!$!OCL NOVREC !CDIR NODEP
!!$ DO JIJK=JIJKOR , JIJKEND !OCL NOVREC
!!$! indexation DO JIJK=JIJKOR , JIJKEND
!!$ JI_1JK = JIJK - 1 ! indexation
!!$ JIJK_1 = JIJK - IIU*IJU*KL JI_1JK = JIJK - 1
!!$ JI_1JK_1 = JIJK - 1 - IIU*IJU*KL JIJK_1 = JIJK - IIU*IJU*KL
!!$ JIJKP1 = JIJK + IIU*IJU*KL JI_1JK_1 = JIJK - 1 - IIU*IJU*KL
!!$ JI_1JKP1 = JIJK - 1 + IIU*IJU*KL JIJKP1 = JIJK + IIU*IJU*KL
!!$! JI_1JKP1 = JIJK - 1 + IIU*IJU*KL
!!$ PGX_M_U(JIJK,1,1)= & !
!!$ ( PY(JIJK,1,1)-PY(JI_1JK,1,1) & PGX_M_U(JIJK,1,1)= &
!!$ -( (PY(JIJK,1,1)-PY(JIJK_1,1,1)) / PDZZ(JIJK,1,1) & ( PY(JIJK,1,1)-PY(JI_1JK,1,1) &
!!$ +(PY(JI_1JK,1,1)-PY(JI_1JK_1,1,1)) / PDZZ(JI_1JK,1,1) & -( (PY(JIJK,1,1)-PY(JIJK_1,1,1)) / PDZZ(JIJK,1,1) &
!!$ ) * PDZX(JIJK,1,1)* 0.25 & +(PY(JI_1JK,1,1)-PY(JI_1JK_1,1,1)) / PDZZ(JI_1JK,1,1) &
!!$ -( (PY(JIJKP1,1,1)-PY(JIJK,1,1)) / PDZZ(JIJKP1,1,1) & ) * PDZX(JIJK,1,1)* 0.25 &
!!$ +(PY(JI_1JKP1,1,1)-PY(JI_1JK,1,1)) / PDZZ(JI_1JKP1,1,1) & -( (PY(JIJKP1,1,1)-PY(JIJK,1,1)) / PDZZ(JIJKP1,1,1) &
!!$ ) * PDZX(JIJKP1,1,1)* 0.25 & +(PY(JI_1JKP1,1,1)-PY(JI_1JK,1,1)) / PDZZ(JI_1JKP1,1,1) &
!!$ ) / PDXX(JIJK,1,1) ) * PDZX(JIJKP1,1,1)* 0.25 &
!!$ END DO ) / PDXX(JIJK,1,1)
END DO
#endif
! !
! acc kernels
DO JI=1+JPHEXT,IIU DO JI=1+JPHEXT,IIU
PGX_M_U(JI,:,KKU)= ( PY(JI,:,KKU)-PY(JI-1,:,KKU) ) / PDXX(JI,:,KKU) PGX_M_U(JI,:,KKU)= ( PY(JI,:,KKU)-PY(JI-1,:,KKU) ) / PDXX(JI,:,KKU)
PGX_M_U(JI,:,KKA)= -999. PGX_M_U(JI,:,KKA)= -999.
...@@ -533,7 +534,7 @@ IF (.NOT. LFLAT) THEN ...@@ -533,7 +534,7 @@ IF (.NOT. LFLAT) THEN
! !
PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:) PGX_M_U(1,:,:)=PGX_M_U(IIU-2*JPHEXT+1,:,:)
!$acc end kernels !$acc end kernels
!$acc end data !$acc end data
ELSE ELSE
! PGX_M_U = DXM(PY) / PDXX ! PGX_M_U = DXM(PY) / PDXX
PGX_M_U(1+JPHEXT:IIU,:,:) = ( PY(1+JPHEXT:IIU,:,:)-PY(JPHEXT:IIU-1,:,:) ) & PGX_M_U(1+JPHEXT:IIU,:,:) = ( PY(1+JPHEXT:IIU,:,:)-PY(JPHEXT:IIU-1,:,:) ) &
...@@ -639,7 +640,6 @@ IJU=SIZE(PY,2) ...@@ -639,7 +640,6 @@ IJU=SIZE(PY,2)
IKU=SIZE(PY,3) IKU=SIZE(PY,3)
IF (.NOT. LFLAT) THEN IF (.NOT. LFLAT) THEN
! PGY_M_V = ( DYM(PY) - MZF ( MYM( DZM(PY) /PDZZ ) * PDZY ) )/PDYY ! PGY_M_V = ( DYM(PY) - MZF ( MYM( DZM(PY) /PDZZ ) * PDZY ) )/PDYY
!$acc kernels !$acc kernels
DO JK=1+JPVEXT_TURB,IKU-JPVEXT_TURB DO JK=1+JPVEXT_TURB,IKU-JPVEXT_TURB
DO JJ=1+JPHEXT,IJU DO JJ=1+JPHEXT,IJU
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment