diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90 index f60bd4d1b4e64a1502857eb6757cb086cace2347..5042cd5a93b9027bbaf0bc33de860fffc0a81045 100644 --- a/src/ZSOLVER/turb.f90 +++ b/src/ZSOLVER/turb.f90 @@ -776,6 +776,7 @@ IF (KRRL >=1) THEN #else !$acc kernels #endif + !dir$ concurrent ZT(:,:,:) = PTHLT(:,:,:) * ZEXN(:,:,:) !$acc end kernels ! @@ -862,23 +863,26 @@ END IF ! loop end on KRRL >= 1 IF ( KRRL >= 1 ) THEN !$acc kernels IF ( KRRI >= 1 ) THEN - ! Rnp at t - PRT(:,:,:,1) = PRT(:,:,:,1) + PRT(:,:,:,2) + PRT(:,:,:,4) - PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) + PRRS(:,:,:,4) - ! Theta_l at t - PTHLT(:,:,:) = PTHLT(:,:,:) - ZLVOCPEXNM(:,:,:) * PRT(:,:,:,2) & - - ZLSOCPEXNM(:,:,:) * PRT(:,:,:,4) - PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLVOCPEXNM(:,:,:) * PRRS(:,:,:,2) & - - ZLSOCPEXNM(:,:,:) * PRRS(:,:,:,4) - ELSE - ! Rnp at t - PRT(:,:,:,1) = PRT(:,:,:,1) + PRT(:,:,:,2) - PRRS(:,:,:,1) = PRRS(:,:,:,1) + PRRS(:,:,:,2) - ! Theta_l at t - PTHLT(:,:,:) = PTHLT(:,:,:) - ZLOCPEXNM(:,:,:) * PRT(:,:,:,2) - !dir$ concurrent - PRTHLS(:,:,:) = PRTHLS(:,:,:) - ZLOCPEXNM(:,:,:) * PRRS(:,:,:,2) - END IF + DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ! Rnp at t + PRT(JI,JJ,JK,1) = PRT(JI,JJ,JK,1) + PRT(JI,JJ,JK,2) + PRT(JI,JJ,JK,4) + PRRS(JI,JJ,JK,1) = PRRS(JI,JJ,JK,1) + PRRS(JI,JJ,JK,2) + PRRS(JI,JJ,JK,4) + ! Theta_l at t + PTHLT(JI,JJ,JK) = PTHLT(JI,JJ,JK) - ZLVOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,2) & + - ZLSOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,4) + PRTHLS(JI,JJ,JK) = PRTHLS(JI,JJ,JK) - ZLVOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,2) & + - ZLSOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,4) + ENDDO + ELSE + DO CONCURRENT (JI=1:JIU,JJ=1:JJU,JK=1:JKU) + ! Rnp at t + PRT(JI,JJ,JK,1) = PRT(JI,JJ,JK,1) + PRT(JI,JJ,JK,2) + PRRS(JI,JJ,JK,1) = PRRS(JI,JJ,JK,1) + PRRS(JI,JJ,JK,2) + ! Theta_l at t + PTHLT(JI,JJ,JK) = PTHLT(JI,JJ,JK) - ZLOCPEXNM(JI,JJ,JK) * PRT(JI,JJ,JK,2) + PRTHLS(JI,JJ,JK) = PRTHLS(JI,JJ,JK) - ZLOCPEXNM(JI,JJ,JK) * PRRS(JI,JJ,JK,2) + ENDDO + END IF !$acc end kernels END IF !