diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90 index 58580edaae23c8224a095675af6f3d4575ab2958..8da04e62e39528cbc163f6ecb66329684dcf72e6 100644 --- a/src/MNH/ice_adjust.f90 +++ b/src/MNH/ice_adjust.f90 @@ -478,38 +478,46 @@ ENDDO ! end of the iterative loop ! ------------------------------------------------- ! !$acc kernels +#ifdef MNH_COMPILER_NVHPC +!$acc loop independent collapse(3) +#endif +DO CONCURRENT (JI=1:IIU,JJ=1:IJU,JK=1:IKU) + ! !* 5.0 compute the variation of mixing ratio ! ! Rc - Rc* -ZW1(:,:,:) = (ZRC(:,:,:) - PRC(:,:,:)) / PTSTEP ! Pcon = ---------- +ZW1(JI,JJ,JK) = (ZRC(JI,JJ,JK) - PRC(JI,JJ,JK)) / PTSTEP ! Pcon = ---------- ! 2 Delta t -ZW2(:,:,:) = (ZRI(:,:,:) - PRI(:,:,:)) / PTSTEP ! idem ZW1 but for Ri +ZW2(JI,JJ,JK) = (ZRI(JI,JJ,JK) - PRI(JI,JJ,JK)) / PTSTEP ! idem ZW1 but for Ri ! !* 5.1 compute the sources ! -GTEMP(:,:,:) = ZW1(:,:,:) < 0.0 -WHERE( GTEMP(:,:,:) ) - ZW1(:,:,:) = MAX ( ZW1(:,:,:), -PRCS(:,:,:) ) -ELSEWHERE - ZW1(:,:,:) = MIN ( ZW1(:,:,:), PRVS(:,:,:) ) -END WHERE -PRVS(:,:,:) = PRVS(:,:,:) - ZW1(:,:,:) -PRCS(:,:,:) = PRCS(:,:,:) + ZW1(:,:,:) -PTHS(:,:,:) = PTHS(:,:,:) + & - ZW1(:,:,:) * ZLV(:,:,:) / (ZCPH(:,:,:) * PEXNREF(:,:,:)) -! -GTEMP(:,:,:) = ZW2(:,:,:) < 0.0 -WHERE( GTEMP(:,:,:) ) - ZW2(:,:,:) = MAX ( ZW2(:,:,:), -PRIS(:,:,:) ) -ELSEWHERE - ZW2(:,:,:) = MIN ( ZW2(:,:,:), PRVS(:,:,:) ) -END WHERE -PRVS(:,:,:) = PRVS(:,:,:) - ZW2(:,:,:) -PRIS(:,:,:) = PRIS(:,:,:) + ZW2(:,:,:) -PTHS(:,:,:) = PTHS(:,:,:) + & - ZW2(:,:,:) * ZLS(:,:,:) / (ZCPH(:,:,:) * PEXNREF(:,:,:)) + +GTEMP(JI,JJ,JK) = ZW1(JI,JJ,JK) < 0.0 +IF( GTEMP(JI,JJ,JK) )THEN + ZW1(JI,JJ,JK) = MAX ( ZW1(JI,JJ,JK), -PRCS(JI,JJ,JK) ) +ELSE + ZW1(JI,JJ,JK) = MIN ( ZW1(JI,JJ,JK), PRVS(JI,JJ,JK) ) +ENDIF +PRVS(JI,JJ,JK) = PRVS(JI,JJ,JK) - ZW1(JI,JJ,JK) +PRCS(JI,JJ,JK) = PRCS(JI,JJ,JK) + ZW1(JI,JJ,JK) +PTHS(JI,JJ,JK) = PTHS(JI,JJ,JK) + & + ZW1(JI,JJ,JK) * ZLV(JI,JJ,JK) / (ZCPH(JI,JJ,JK) * PEXNREF(JI,JJ,JK)) +! +GTEMP(JI,JJ,JK) = ZW2(JI,JJ,JK) < 0.0 +IF( GTEMP(JI,JJ,JK) )THEN + ZW2(JI,JJ,JK) = MAX ( ZW2(JI,JJ,JK), -PRIS(JI,JJ,JK) ) +ELSE + ZW2(JI,JJ,JK) = MIN ( ZW2(JI,JJ,JK), PRVS(JI,JJ,JK) ) +ENDIF +PRVS(JI,JJ,JK) = PRVS(JI,JJ,JK) - ZW2(JI,JJ,JK) +PRIS(JI,JJ,JK) = PRIS(JI,JJ,JK) + ZW2(JI,JJ,JK) +PTHS(JI,JJ,JK) = PTHS(JI,JJ,JK) + & + ZW2(JI,JJ,JK) * ZLS(JI,JJ,JK) / (ZCPH(JI,JJ,JK) * PEXNREF(JI,JJ,JK)) +ENDDO + !$acc end kernels ! !