diff --git a/docs/TODO b/docs/TODO index c9f936aa706ab8ae252da5d08ea182403a10b458..1cbb2622d674b3cbb3ffc02f63d5b702f344bf3f 100644 --- a/docs/TODO +++ b/docs/TODO @@ -59,6 +59,13 @@ Pb identifiés à corriger plus tard: - séparer l'avance temporelle du découpage en sous-blocs en créant une couche driver supplémentaire. Cette couche pourrait avoir différentes implémentations (filtre LLMICRO seul, filtre LLMICRO + découpage en sous-blocs, filtre LLMICR - mettre le code des interpolations linéaires et bi-linéaires dans des routines avec deux implémentations: avec et sans packing + - shuman, turb, shuman_mf, apl_arome + - peut-on remettre à jour la partie sous le sol des variables pronostiques avant d'entrer dans EDKFi dans Méso-NH? Si oui, on devrait pouvoir + récrire les shuman_mf pour qu'ils produisent les mêmes résultats qu'aujourd'hui mais sans utiliser les valeurs sous le sol ou dans "l'espace infini" + - si les shuman_mf sont récrits, on doit pouvoir limiter les calculs à NKTB:NKTE dans EDKF (gain de temps calcul sur Méso-NH) + - ces nouveaux shuman_mf (renommés phy) pourrait (?) être utilisés dans la turbulence => une seule version de shuman pour toute la physique + - après ce travail, il serait possible de réétudier la possibilité de limiter les calculs dans la turb à NKTB:NKTE + - ce qui permettrait de supprimer les variables avec niveaux supplémentaires dans apl_arome Nettoyage ultérieur : - Budgets/LES diff --git a/src/common/turb/mode_compute_bl89_ml.F90 b/src/common/turb/mode_compute_bl89_ml.F90 index 75b7dd18543d85b62dce489ef17d79ffe8eb4b8e..714e9a41c0bc6c615bdc99995ab18a1ef9a44471 100644 --- a/src/common/turb/mode_compute_bl89_ml.F90 +++ b/src/common/turb/mode_compute_bl89_ml.F90 @@ -91,11 +91,11 @@ IF (LHOOK) CALL DR_HOOK('COMPUTE_BL89_ML',0,ZHOOK_HANDLE) ! CALL DZM_MF(D, PVPT(:,:), ZDELTVPT(:,:)) ZDELTVPT(D%NIJB:D%NIJE,D%NKA)=0. -!$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -WHERE (ABS(ZDELTVPT(D%NIJB:D%NIJE,:))<CSTURB%XLINF) - ZDELTVPT(D%NIJB:D%NIJE,:)=CSTURB%XLINF +!$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +WHERE (ABS(ZDELTVPT(D%NIJB:D%NIJE,1:D%NKT))<CSTURB%XLINF) + ZDELTVPT(D%NIJB:D%NIJE,1:D%NKT)=CSTURB%XLINF END WHERE -!$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! CALL MZM_MF(D, PVPT(:,:), ZHLVPT(:,:)) ! diff --git a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 index b4153303b6e97173d96266d934d47dcacc7389b1..9117475143f5f7e09bdcdcda2ae065b4b9225b81 100644 --- a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 +++ b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 @@ -160,31 +160,33 @@ DO JK=D%NKA,D%NKU,D%NKL (PARAMMF%XSIGMA_MF * ZOMEGA_UP_M(D%NIJB:D%NIJE) * PRHODREF(D%NIJB:D%NIJE,JK)) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE) ENDDO -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZSIGMF(D%NIJB:D%NIJE,:)=SQRT(MAX(ABS(ZSIGMF(D%NIJB:D%NIJE,:)), 1.E-40)) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZSIGMF(D%NIJB:D%NIJE,1:D%NKT)=SQRT(MAX(ABS(ZSIGMF(D%NIJB:D%NIJE,1:D%NKT)), 1.E-40)) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! !* 2. PDF integration ! ------------------------------------------------ ! -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !The mean of the distribution is ZRT_UP !Computation of ZA and ZGAM (=efrc(ZA)) coefficient -ZA(D%NIJB:D%NIJE,:)=(ZRSAT_UP_M(D%NIJB:D%NIJE,:)-ZRT_UP_M(D%NIJB:D%NIJE,:))/(sqrt(2.)*ZSIGMF(D%NIJB:D%NIJE,:)) +ZA(D%NIJB:D%NIJE,1:D%NKT)=(ZRSAT_UP_M(D%NIJB:D%NIJE,1:D%NKT)-ZRT_UP_M(D%NIJB:D%NIJE,1:D%NKT))/& + &(sqrt(2.)*ZSIGMF(D%NIJB:D%NIJE,1:D%NKT)) !Approximation of erf function -ZGAM(D%NIJB:D%NIJE,:)=1-SIGN(1., ZA(D%NIJB:D%NIJE,:))*SQRT(1-EXP(-4*ZA(D%NIJB:D%NIJE,:)**2/CST%XPI)) +ZGAM(D%NIJB:D%NIJE,1:D%NKT)=1-SIGN(1., ZA(D%NIJB:D%NIJE,1:D%NKT))*SQRT(1-EXP(-4*ZA(D%NIJB:D%NIJE,1:D%NKT)**2/CST%XPI)) !computation of cloud fraction -PCF_MF(D%NIJB:D%NIJE,:)=MAX( 0., MIN(1.,0.5*ZGAM(D%NIJB:D%NIJE,:) * ZALPHA_UP_M(D%NIJB:D%NIJE,:))) +PCF_MF(D%NIJB:D%NIJE,1:D%NKT)=MAX( 0., MIN(1.,0.5*ZGAM(D%NIJB:D%NIJE,1:D%NKT) * ZALPHA_UP_M(D%NIJB:D%NIJE,1:D%NKT))) !computation of condensate, then PRC and PRI -ZCOND(D%NIJB:D%NIJE,:)=(EXP(-ZA(D%NIJB:D%NIJE,:)**2)-ZA(D%NIJB:D%NIJE,:)*SQRT(CST%XPI)*ZGAM(D%NIJB:D%NIJE,:))* & - &ZSIGMF(D%NIJB:D%NIJE,:)/SQRT(2.*CST%XPI) * ZALPHA_UP_M(D%NIJB:D%NIJE,:) -ZCOND(D%NIJB:D%NIJE,:)=MAX(ZCOND(D%NIJB:D%NIJE,:), 0.) !due to approximation of ZGAM value, ZCOND could be slightly negative -PRC_MF(D%NIJB:D%NIJE,:)=(1.-ZFRAC_ICE_UP_M(D%NIJB:D%NIJE,:)) * ZCOND(D%NIJB:D%NIJE,:) -PRI_MF(D%NIJB:D%NIJE,:)=( ZFRAC_ICE_UP_M(D%NIJB:D%NIJE,:)) * ZCOND(D%NIJB:D%NIJE,:) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +ZCOND(D%NIJB:D%NIJE,1:D%NKT)=(EXP(-ZA(D%NIJB:D%NIJE,1:D%NKT)**2)-& + &ZA(D%NIJB:D%NIJE,1:D%NKT)*SQRT(CST%XPI)*ZGAM(D%NIJB:D%NIJE,1:D%NKT))* & + &ZSIGMF(D%NIJB:D%NIJE,1:D%NKT)/SQRT(2.*CST%XPI) * ZALPHA_UP_M(D%NIJB:D%NIJE,1:D%NKT) +ZCOND(D%NIJB:D%NIJE,1:D%NKT)=MAX(ZCOND(D%NIJB:D%NIJE,1:D%NKT), 0.) !due to approximation of ZGAM value, ZCOND could be slightly negative +PRC_MF(D%NIJB:D%NIJE,1:D%NKT)=(1.-ZFRAC_ICE_UP_M(D%NIJB:D%NIJE,1:D%NKT)) * ZCOND(D%NIJB:D%NIJE,1:D%NKT) +PRI_MF(D%NIJB:D%NIJE,1:D%NKT)=( ZFRAC_ICE_UP_M(D%NIJB:D%NIJE,1:D%NKT)) * ZCOND(D%NIJB:D%NIJE,1:D%NKT) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD_BIGAUS',1,ZHOOK_HANDLE) diff --git a/src/common/turb/mode_compute_mf_cloud_stat.F90 b/src/common/turb/mode_compute_mf_cloud_stat.F90 index 7fff7687a1ffbc2172dd84938b69c3a611e66b39..81cdabbb396eff7fb774a1e4dcb939645cdb7ec6 100644 --- a/src/common/turb/mode_compute_mf_cloud_stat.F90 +++ b/src/common/turb/mode_compute_mf_cloud_stat.F90 @@ -124,27 +124,27 @@ IF (KRRL > 0) THEN CALL MZM_MF(D, PTHLM(:,:), ZFLXZ(:,:)) CALL GZ_M_W_MF(D, PTHLM(:,:), PDZZ(:,:), ZWK(:,:)) IF (OSTATNW) THEN - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ(D%NIJB:D%NIJE,:) = -2 * CSTURB%XCTV* PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,:)* & - & (PTHL_UP(D%NIJB:D%NIJE,:)-ZFLXZ(D%NIJB:D%NIJE,:)) * ZWK(D%NIJB:D%NIJE,:) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ(D%NIJB:D%NIJE,1:D%NKT) = -2 * CSTURB%XCTV* PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,1:D%NKT)* & + & (PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ(D%NIJB:D%NIJE,1:D%NKT)) * ZWK(D%NIJB:D%NIJE,1:D%NKT) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ(D%NIJB:D%NIJE,:) = -2 * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,:)* & - & (PTHL_UP(D%NIJB:D%NIJE,:)-ZFLXZ(D%NIJB:D%NIJE,:)) * ZWK(D%NIJB:D%NIJE,:) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ(D%NIJB:D%NIJE,1:D%NKT) = -2 * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,1:D%NKT)* & + & (PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ(D%NIJB:D%NIJE,1:D%NKT)) * ZWK(D%NIJB:D%NIJE,1:D%NKT) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) END IF ! ! Avoid negative values - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ(D%NIJB:D%NIJE,:) = MAX(0.,ZFLXZ(D%NIJB:D%NIJE,:)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ(D%NIJB:D%NIJE,1:D%NKT) = MAX(0.,ZFLXZ(D%NIJB:D%NIJE,1:D%NKT)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) CALL MZF_MF(D, ZFLXZ(:,:), PSIGMF(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PSIGMF(D%NIJB:D%NIJE,:) = PSIGMF(D%NIJB:D%NIJE,:) * ZATHETA(D%NIJB:D%NIJE,:)**2 - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PSIGMF(D%NIJB:D%NIJE,1:D%NKT) = PSIGMF(D%NIJB:D%NIJE,1:D%NKT) * ZATHETA(D%NIJB:D%NIJE,1:D%NKT)**2 + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! ! @@ -156,49 +156,50 @@ IF (KRRL > 0) THEN CALL MZM_MF(D, PRTM(:,:), ZFLXZ2(:,:)) CALL GZ_M_W_MF(D, PRTM(:,:), PDZZ(:,:), ZWK2(:,:)) IF (OSTATNW) THEN - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ2(D%NIJB:D%NIJE,:) = -2 * CSTURB%XCTV * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,:)* & - & (PRT_UP(D%NIJB:D%NIJE,:)-ZFLXZ2(D%NIJB:D%NIJE,:)) * ZWK2(D%NIJB:D%NIJE,:) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT) = -2 * CSTURB%XCTV * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,1:D%NKT)* & + & (PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT)) * ZWK2(D%NIJB:D%NIJE,1:D%NKT) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ2(D%NIJB:D%NIJE,:) = -2 * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,:)* & - & (PRT_UP(D%NIJB:D%NIJE,:)-ZFLXZ2(D%NIJB:D%NIJE,:)) * ZWK2(D%NIJB:D%NIJE,:) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT) = -2 * PARAMMF%XTAUSIGMF * PEMF(D%NIJB:D%NIJE,1:D%NKT)* & + & (PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT)) * ZWK2(D%NIJB:D%NIJE,1:D%NKT) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) END IF ! ! Avoid negative values - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ2(D%NIJB:D%NIJE,:) = MAX(0.,ZFLXZ2(D%NIJB:D%NIJE,:)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT) = MAX(0.,ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) CALL MZF_MF(D, ZFLXZ2(:,:), ZWK2(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PSIGMF(D%NIJB:D%NIJE,:) = PSIGMF(D%NIJB:D%NIJE,:) + ZAMOIST(D%NIJB:D%NIJE,:) **2 * ZWK2(D%NIJB:D%NIJE,:) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PSIGMF(D%NIJB:D%NIJE,1:D%NKT) = PSIGMF(D%NIJB:D%NIJE,1:D%NKT) + ZAMOIST(D%NIJB:D%NIJE,1:D%NKT) **2 *ZWK2(D%NIJB:D%NIJE,1:D%NKT) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) IF (OSTATNW) THEN !wc Now including convection covariance contribution in case of OSTATNW=TRUE ! ! 1.2.2 contribution from <Rnp Thl> - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - ZFLXZ3(D%NIJB:D%NIJE,:) = - CSTURB%XCTV * PARAMMF%XTAUSIGMF * & - (PEMF(D%NIJB:D%NIJE,:)*(PRT_UP(D%NIJB:D%NIJE,:)-ZFLXZ2(D%NIJB:D%NIJE,:)) * & - ZWK(D%NIJB:D%NIJE,:) + & - PEMF(D%NIJB:D%NIJE,:)*(PTHL_UP(D%NIJB:D%NIJE,:)-ZFLXZ(D%NIJB:D%NIJE,:)) * & - ZWK2(D%NIJB:D%NIJE,:)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + ZFLXZ3(D%NIJB:D%NIJE,1:D%NKT) = - CSTURB%XCTV * PARAMMF%XTAUSIGMF * & + (PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ2(D%NIJB:D%NIJE,1:D%NKT)) * & + ZWK(D%NIJB:D%NIJE,1:D%NKT) + & + PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-ZFLXZ(D%NIJB:D%NIJE,1:D%NKT)) * & + ZWK2(D%NIJB:D%NIJE,1:D%NKT)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) CALL MZF_MF(D, ZFLXZ3, ZFLXZ) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PSIGMF(D%NIJB:D%NIJE,:) = PSIGMF(D%NIJB:D%NIJE,:) - & - MIN(0.,2.*ZAMOIST(D%NIJB:D%NIJE,:)*ZATHETA(D%NIJB:D%NIJE,:)*ZFLXZ(D%NIJB:D%NIJE,:)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PSIGMF(D%NIJB:D%NIJE,1:D%NKT) = PSIGMF(D%NIJB:D%NIJE,1:D%NKT) - & + MIN(0.,2.*ZAMOIST(D%NIJB:D%NIJE,1:D%NKT)*ZATHETA(D%NIJB:D%NIJE,1:D%NKT)*& + &ZFLXZ(D%NIJB:D%NIJE,1:D%NKT)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ENDIF ! ! 1.3 Vertical part of Sigma_s ! - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PSIGMF(D%NIJB:D%NIJE,:) = SQRT( MAX (PSIGMF(D%NIJB:D%NIJE,:) , 0.) ) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PSIGMF(D%NIJB:D%NIJE,1:D%NKT) = SQRT( MAX (PSIGMF(D%NIJB:D%NIJE,1:D%NKT) , 0.) ) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE PSIGMF(:,:) = 0. END IF diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90 index 8b14a7c6f9bb51b078109d746917159002da2273..baf52171f96f89a9d1977906b4664d9a5b15fa48 100644 --- a/src/common/turb/mode_compute_updraft.F90 +++ b/src/common/turb/mode_compute_updraft.F90 @@ -280,7 +280,7 @@ IF (OENTR_DETR) THEN PFRAC_ICE_UP(:,:)=0. !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - PRSAT_UP(D%NIJB:D%NIJE,:)=PRVM(D%NIJB:D%NIJE,:) ! should be initialised correctly but is (normaly) not used + PRSAT_UP(D%NIJB:D%NIJE,1:D%NKT)=PRVM(D%NIJB:D%NIJE,1:D%NKT) ! should be initialised correctly but is (normaly) not used !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !cloud/dry air mixture cloud content @@ -304,13 +304,13 @@ END DO ! ! Initialisation of updraft characteristics !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PTHL_UP(D%NIJB:D%NIJE,:)=ZTHLM_F(D%NIJB:D%NIJE,:) -PRT_UP(D%NIJB:D%NIJE,:)=ZRTM_F(D%NIJB:D%NIJE,:) -PU_UP(D%NIJB:D%NIJE,:)=ZUM_F(D%NIJB:D%NIJE,:) -PV_UP(D%NIJB:D%NIJE,:)=ZVM_F(D%NIJB:D%NIJE,:) +PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)=ZTHLM_F(D%NIJB:D%NIJE,1:D%NKT) +PRT_UP(D%NIJB:D%NIJE,1:D%NKT)=ZRTM_F(D%NIJB:D%NIJE,1:D%NKT) +PU_UP(D%NIJB:D%NIJE,1:D%NKT)=ZUM_F(D%NIJB:D%NIJE,1:D%NKT) +PV_UP(D%NIJB:D%NIJE,1:D%NKT)=ZVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT,JSV=1:KSV) -PSV_UP(D%NIJB:D%NIJE,:,:)=ZSVM_F(D%NIJB:D%NIJE,:,:) +PSV_UP(D%NIJB:D%NIJE,1:D%NKT,:)=ZSVM_F(D%NIJB:D%NIJE,1:D%NKT,:) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT,JSV=1:KSV) ! Computation or initialisation of updraft characteristics at the KKB level @@ -330,12 +330,12 @@ IF (OENTR_DETR) THEN !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! thetav at mass and flux levels - ZTHVM_F(D%NIJB:D%NIJE,:)=ZTHM_F(D%NIJB:D%NIJE,:)* & - &((1.+ZRVORD*ZRVM_F(D%NIJB:D%NIJE,:))/(1.+ZRTM_F(D%NIJB:D%NIJE,:))) - ZTHVM(D%NIJB:D%NIJE,:)=PTHM(D%NIJB:D%NIJE,:)* & - &((1.+ZRVORD*PRVM(D%NIJB:D%NIJE,:))/(1.+PRTM(D%NIJB:D%NIJE,:))) + ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT)=ZTHM_F(D%NIJB:D%NIJE,1:D%NKT)* & + &((1.+ZRVORD*ZRVM_F(D%NIJB:D%NIJE,1:D%NKT))/(1.+ZRTM_F(D%NIJB:D%NIJE,1:D%NKT))) + ZTHVM(D%NIJB:D%NIJE,1:D%NKT)=PTHM(D%NIJB:D%NIJE,1:D%NKT)* & + &((1.+ZRVORD*PRVM(D%NIJB:D%NIJE,1:D%NKT))/(1.+PRTM(D%NIJB:D%NIJE,1:D%NKT))) - PTHV_UP(D%NIJB:D%NIJE,:)=ZTHVM_F(D%NIJB:D%NIJE,:) + PTHV_UP(D%NIJB:D%NIJE,1:D%NKT)=ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ZW_UP2(:,:)=0. @@ -364,7 +364,7 @@ IF (OENTR_DETR) THEN ! !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - ZG_O_THVREF(D%NIJB:D%NIJE,:)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,:) + ZG_O_THVREF(D%NIJB:D%NIJE,1:D%NKT)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! compute L_up @@ -379,7 +379,7 @@ IF (OENTR_DETR) THEN CALL GZ_M_W_MF(D, PVM, PDZZ, ZWK) CALL MZF_MF(D, ZWK, ZDVDZ) !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - ZSHEAR(D%NIJB:D%NIJE,:) = SQRT(ZDUDZ(D%NIJB:D%NIJE,:)**2 + ZDVDZ(D%NIJB:D%NIJE,:)**2) + ZSHEAR(D%NIJB:D%NIJE,1:D%NKT) = SQRT(ZDUDZ(D%NIJB:D%NIJE,1:D%NKT)**2 + ZDVDZ(D%NIJB:D%NIJE,1:D%NKT)**2) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE ZSHEAR = 0. !no shear in bl89 mixing length @@ -657,7 +657,7 @@ ENDDO IF(OENTR_DETR) THEN !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - PW_UP(D%NIJB:D%NIJE,:)=SQRT(ZW_UP2(D%NIJB:D%NIJE,:)) + PW_UP(D%NIJB:D%NIJE,1:D%NKT)=SQRT(ZW_UP2(D%NIJB:D%NIJE,1:D%NKT)) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !$mnh_expand_array(JI=D%NIJB:D%NIJE) @@ -685,9 +685,9 @@ IF(OENTR_DETR) THEN !$mnh_end_expand_array(JI=D%NIJB:D%NIJE) ENDDO !$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - WHERE (GWORK2(D%NIJB:D%NIJE,:)) - PEMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:) * ZCOEF(D%NIJB:D%NIJE,:) - PFRAC_UP(D%NIJB:D%NIJE,:) = PFRAC_UP(D%NIJB:D%NIJE,:) * ZCOEF(D%NIJB:D%NIJE,:) + WHERE (GWORK2(D%NIJB:D%NIJE,1:D%NKT)) + PEMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT) * ZCOEF(D%NIJB:D%NIJE,1:D%NKT) + PFRAC_UP(D%NIJB:D%NIJE,1:D%NKT) = PFRAC_UP(D%NIJB:D%NIJE,1:D%NKT) * ZCOEF(D%NIJB:D%NIJE,1:D%NKT) ENDWHERE !$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ENDIF diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index 8a4705cb429aa690964be656eabca7ceb36ae678..d27917446ff250e9f940f118016fd8aa5b7d1606 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -237,7 +237,7 @@ ZBUO(:,:) =0. PRI_UP(:,:)=0. PFRAC_ICE_UP(:,:)=0. !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PRSAT_UP(D%NIJB:D%NIJE,:)=PRVM(D%NIJB:D%NIJE,:) ! should be initialised correctly but is (normaly) not used +PRSAT_UP(D%NIJB:D%NIJE,1:D%NKT)=PRVM(D%NIJB:D%NIJE,1:D%NKT) ! should be initialised correctly but is (normaly) not used !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! Initialisation of environment variables at t-dt @@ -257,10 +257,10 @@ CALL MZM_MF(D, PTKEM(:,:), ZTKEM_F(:,:)) ! Initialisation of updraft characteristics !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PTHL_UP(D%NIJB:D%NIJE,:)=ZTHLM_F(D%NIJB:D%NIJE,:) -PRT_UP(D%NIJB:D%NIJE,:)=ZRTM_F(D%NIJB:D%NIJE,:) -PU_UP(D%NIJB:D%NIJE,:)=ZUM_F(D%NIJB:D%NIJE,:) -PV_UP(D%NIJB:D%NIJE,:)=ZVM_F(D%NIJB:D%NIJE,:) +PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)=ZTHLM_F(D%NIJB:D%NIJE,1:D%NKT) +PRT_UP(D%NIJB:D%NIJE,1:D%NKT)=ZRTM_F(D%NIJB:D%NIJE,1:D%NKT) +PU_UP(D%NIJB:D%NIJE,1:D%NKT)=ZUM_F(D%NIJB:D%NIJE,1:D%NKT) +PV_UP(D%NIJB:D%NIJE,1:D%NKT)=ZVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) PSV_UP(:,:,:)=0. !IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) then @@ -287,11 +287,12 @@ CALL MZM_MF(D, PRVM(:,:), ZRVM_F(:,:)) !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! thetav at mass and flux levels -ZTHVM_F(D%NIJB:D%NIJE,:)=ZTHM_F(D%NIJB:D%NIJE,:)*((1.+ZRVORD*ZRVM_F(D%NIJB:D%NIJE,:))/(1.+ZRTM_F(D%NIJB:D%NIJE,:))) -ZTHVM(D%NIJB:D%NIJE,:)=PTHM(D%NIJB:D%NIJE,:)*((1.+ZRVORD*PRVM(D%NIJB:D%NIJE,:))/(1.+PRTM(D%NIJB:D%NIJE,:))) +ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT)=ZTHM_F(D%NIJB:D%NIJE,1:D%NKT)*((1.+ZRVORD*ZRVM_F(D%NIJB:D%NIJE,1:D%NKT))/& + &(1.+ZRTM_F(D%NIJB:D%NIJE,1:D%NKT))) +ZTHVM(D%NIJB:D%NIJE,1:D%NKT)=PTHM(D%NIJB:D%NIJE,1:D%NKT)*((1.+ZRVORD*PRVM(D%NIJB:D%NIJE,1:D%NKT))/(1.+PRTM(D%NIJB:D%NIJE,1:D%NKT))) -PTHV_UP(D%NIJB:D%NIJE,:)= ZTHVM_F(D%NIJB:D%NIJE,:) -PRV_UP(D%NIJB:D%NIJE,:) = ZRVM_F(D%NIJB:D%NIJE,:) +PTHV_UP(D%NIJB:D%NIJE,1:D%NKT)= ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) +PRV_UP(D%NIJB:D%NIJE,1:D%NKT) = ZRVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ZW_UP2(:,:)=ZEPS @@ -323,7 +324,7 @@ PRSAT_UP(D%NIJB:D%NIJE,D%NKB) = ZRSATW(D%NIJB:D%NIJE)*(1-PFRAC_ICE_UP(D%NIJB:D%N !Tout est commente pour tester dans un premier temps la s�paration en deux de la ! boucle verticale, une pour w et une pour PEMF !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -ZG_O_THVREF(D%NIJB:D%NIJE,:)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,:) +ZG_O_THVREF(D%NIJB:D%NIJE,1:D%NKT)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! Definition de l'alimentation au sens de la fermeture de Hourdin et al @@ -612,7 +613,7 @@ DO JK=D%NKB+D%NKL,D%NKE-D%NKL,D%NKL ! Vertical loop ENDDO !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PW_UP(D%NIJB:D%NIJE,:)=SQRT(ZW_UP2(D%NIJB:D%NIJE,:)) +PW_UP(D%NIJB:D%NIJE,1:D%NKT)=SQRT(ZW_UP2(D%NIJB:D%NIJE,1:D%NKT)) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !$mnh_expand_array(JI=D%NIJB:D%NIJE) PEMF(D%NIJB:D%NIJE,D%NKB) =0. @@ -639,9 +640,9 @@ DO JK=1,D%NKT !$mnh_end_expand_array(JI=D%NIJB:D%NIJE) ENDDO !$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -WHERE (GWORK2(D%NIJB:D%NIJE,:)) - PEMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:) * ZCOEF(D%NIJB:D%NIJE,:) - PFRAC_UP(D%NIJB:D%NIJE,:) = PFRAC_UP(D%NIJB:D%NIJE,:) * ZCOEF(D%NIJB:D%NIJE,:) +WHERE (GWORK2(D%NIJB:D%NIJE,1:D%NKT)) + PEMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT) * ZCOEF(D%NIJB:D%NIJE,1:D%NKT) + PFRAC_UP(D%NIJB:D%NIJE,1:D%NKT) = PFRAC_UP(D%NIJB:D%NIJE,1:D%NKT) * ZCOEF(D%NIJB:D%NIJE,1:D%NKT) ENDWHERE !$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) diff --git a/src/common/turb/mode_compute_updraft_rhcj10.F90 b/src/common/turb/mode_compute_updraft_rhcj10.F90 index 84cf4e7ebc17e54c00bb7be618b6b46bf9ed6ef1..4a293bd8d211a5af5313ef9142c9ce030975e028 100644 --- a/src/common/turb/mode_compute_updraft_rhcj10.F90 +++ b/src/common/turb/mode_compute_updraft_rhcj10.F90 @@ -243,7 +243,7 @@ ZBUO =0. PRI_UP(:,:)=0. PFRAC_ICE_UP(:,:)=0. !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PRSAT_UP(D%NIJB:D%NIJE,:)=PRVM(D%NIJB:D%NIJE,:) ! should be initialised correctly but is (normaly) not used +PRSAT_UP(D%NIJB:D%NIJE,1:D%NKT)=PRVM(D%NIJB:D%NIJE,1:D%NKT) ! should be initialised correctly but is (normaly) not used !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! Initialisation of environment variables at t-dt @@ -267,12 +267,12 @@ CALL MZM_MF(D, PTKEM(:,:), ZTKEM_F(:,:)) ! Initialisation of updraft characteristics !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PTHL_UP(D%NIJB:D%NIJE,:)=ZTHLM_F(D%NIJB:D%NIJE,:) -PRT_UP(D%NIJB:D%NIJE,:)=ZRTM_F(D%NIJB:D%NIJE,:) -PU_UP(D%NIJB:D%NIJE,:)=ZUM_F(D%NIJB:D%NIJE,:) -PV_UP(D%NIJB:D%NIJE,:)=ZVM_F(D%NIJB:D%NIJE,:) +PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)=ZTHLM_F(D%NIJB:D%NIJE,1:D%NKT) +PRT_UP(D%NIJB:D%NIJE,1:D%NKT)=ZRTM_F(D%NIJB:D%NIJE,1:D%NKT) +PU_UP(D%NIJB:D%NIJE,1:D%NKT)=ZUM_F(D%NIJB:D%NIJE,1:D%NKT) +PV_UP(D%NIJB:D%NIJE,1:D%NKT)=ZVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PSV_UP(D%NIJB:D%NIJE,:,:)=0. +PSV_UP(D%NIJB:D%NIJE,1:D%NKT,:)=0. ! This updraft is not yet ready to use scalar variables !IF (ONOMIXLG .AND. JSV >= KSV_LGBEG .AND. JSV<= KSV_LGEND) then ! PSV_UP(D%NIJB:D%NIJE,:,:)=ZSVM_F(D%NIJB:D%NIJE,:,:) @@ -303,8 +303,8 @@ DO JK=1,D%NKT ENDDO !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PTHV_UP(D%NIJB:D%NIJE,:)= ZTHVM_F(D%NIJB:D%NIJE,:) -PRV_UP(D%NIJB:D%NIJE,:)= ZRVM_F(D%NIJB:D%NIJE,:) +PTHV_UP(D%NIJB:D%NIJE,1:D%NKT)= ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) +PRV_UP(D%NIJB:D%NIJE,1:D%NKT)= ZRVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ZW_UP2(:,:)=ZEPS @@ -336,7 +336,7 @@ ENDDO ! boucle verticale, une pour w et une pour PEMF !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -ZG_O_THVREF(D%NIJB:D%NIJE,:)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,:) +ZG_O_THVREF(D%NIJB:D%NIJE,1:D%NKT)=CST%XG/ZTHVM_F(D%NIJB:D%NIJE,1:D%NKT) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! Calcul de la fermeture de Julien Pergaut comme limite max de PHY @@ -359,7 +359,7 @@ IF(TURB%CTURBLEN=='RM17') THEN CALL GZ_M_W_MF(D, PVM, PDZZ, ZWK) CALL MZF_MF(D, ZWK, ZDVDZ) !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) - ZSHEAR(D%NIJB:D%NIJE,:) = SQRT(ZDUDZ(D%NIJB:D%NIJE,:)**2 + ZDVDZ(D%NIJB:D%NIJE,:)**2) + ZSHEAR(D%NIJB:D%NIJE,1:D%NKT) = SQRT(ZDUDZ(D%NIJB:D%NIJE,1:D%NKT)**2 + ZDVDZ(D%NIJB:D%NIJE,1:D%NKT)**2) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE ZSHEAR(D%NIJB:D%NIJE,:) = 0. !no shear in bl89 mixing length @@ -613,7 +613,7 @@ DO JK=D%NKB,D%NKE-D%NKL,D%NKL ENDDO ! Fin de la boucle verticale !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) -PW_UP(D%NIJB:D%NIJE,:)=SQRT(ZW_UP2(D%NIJB:D%NIJE,:)) +PW_UP(D%NIJB:D%NIJE,1:D%NKT)=SQRT(ZW_UP2(D%NIJB:D%NIJE,1:D%NKT)) !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) !$mnh_expand_array(JI=D%NIJB:D%NIJE) PEMF(D%NIJB:D%NIJE,D%NKB) =0. diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 index 3c13c549c7911116b8adfcd53727b3930d60f4a3..8483046707840ef4e4ce2fbc0b64845c07df5b90 100644 --- a/src/common/turb/mode_mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -155,19 +155,19 @@ CALL MZM_MF(D, PTHLM(:,:), PFLXZTHMF(:,:)) CALL MZM_MF(D, PRTM(:,:), PFLXZRMF(:,:)) CALL MZM_MF(D, PTHVM(:,:), PFLXZTHVMF(:,:)) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -PFLXZTHMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PTHL_UP(D%NIJB:D%NIJE,:)-PFLXZTHMF(D%NIJB:D%NIJE,:)) -PFLXZRMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PRT_UP(D%NIJB:D%NIJE,:)-PFLXZRMF(D%NIJB:D%NIJE,:)) -PFLXZTHVMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PTHV_UP(D%NIJB:D%NIJE,:)-PFLXZTHVMF(D%NIJB:D%NIJE,:)) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +PFLXZTHMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZTHMF(D%NIJB:D%NIJE,1:D%NKT)) +PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT)) +PFLXZTHVMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHV_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZTHVMF(D%NIJB:D%NIJE,1:D%NKT)) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) IF (OMIXUV) THEN CALL MZM_MF(D, PUM(:,:), PFLXZUMF(:,:)) CALL MZM_MF(D, PVM(:,:), PFLXZVMF(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZUMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PU_UP(D%NIJB:D%NIJE,:)-PFLXZUMF(D%NIJB:D%NIJE,:)) - PFLXZVMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PV_UP(D%NIJB:D%NIJE,:)-PFLXZVMF(D%NIJB:D%NIJE,:)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PU_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT)) + PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PV_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE PFLXZUMF(:,:) = 0. PFLXZVMF(:,:) = 0. @@ -190,10 +190,10 @@ CALL TRIDIAG_MASSFLUX(D,PTHLM,PFLXZTHMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux and THL tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZTHMF(:,:)) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -PFLXZTHMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PTHL_UP(D%NIJB:D%NIJE,:)-PFLXZTHMF(D%NIJB:D%NIJE,:)) -PTHLDT(D%NIJB:D%NIJE,:)= (ZVARS(D%NIJB:D%NIJE,:)-PTHLM(D%NIJB:D%NIJE,:))/PTSTEP -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +PFLXZTHMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZTHMF(D%NIJB:D%NIJE,1:D%NKT)) +PTHLDT(D%NIJB:D%NIJE,1:D%NKT)= (ZVARS(D%NIJB:D%NIJE,1:D%NKT)-PTHLM(D%NIJB:D%NIJE,1:D%NKT))/PTSTEP +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! ! 3.2 Compute the tendency for the conservative mixing ratio @@ -202,10 +202,10 @@ CALL TRIDIAG_MASSFLUX(D,PRTM(:,:),PFLXZRMF,-PEMF,PTSTEP,PIMPL, & PDZZ,PRHODJ,ZVARS ) ! compute new flux and RT tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZRMF(:,:)) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -PFLXZRMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PRT_UP(D%NIJB:D%NIJE,:)-PFLXZRMF(D%NIJB:D%NIJE,:)) -PRTDT(D%NIJB:D%NIJE,:) = (ZVARS(D%NIJB:D%NIJE,:)-PRTM(D%NIJB:D%NIJE,:))/PTSTEP -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT)) +PRTDT(D%NIJB:D%NIJE,1:D%NKT) = (ZVARS(D%NIJB:D%NIJE,1:D%NKT)-PRTM(D%NIJB:D%NIJE,1:D%NKT))/PTSTEP +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! IF (OMIXUV) THEN @@ -218,10 +218,10 @@ IF (OMIXUV) THEN PDZZ,PRHODJ,ZVARS ) ! compute new flux and U tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZUMF(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZUMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PU_UP(D%NIJB:D%NIJE,:)-PFLXZUMF(D%NIJB:D%NIJE,:)) - PUDT(D%NIJB:D%NIJE,:)= (ZVARS(D%NIJB:D%NIJE,:)-PUM(D%NIJB:D%NIJE,:))/PTSTEP - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PU_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT)) + PUDT(D%NIJB:D%NIJE,1:D%NKT)= (ZVARS(D%NIJB:D%NIJE,1:D%NKT)-PUM(D%NIJB:D%NIJE,1:D%NKT))/PTSTEP + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! ! ! 3.4 Compute the tendency for the (non conservative but treated as it for the time beiing) @@ -232,10 +232,10 @@ IF (OMIXUV) THEN PDZZ,PRHODJ,ZVARS ) ! compute new flux and V tendency CALL MZM_MF(D, ZVARS(:,:), PFLXZVMF(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZVMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PV_UP(D%NIJB:D%NIJE,:)-PFLXZVMF(D%NIJB:D%NIJE,:)) - PVDT(D%NIJB:D%NIJE,:)= (ZVARS(D%NIJB:D%NIJE,:)-PVM(D%NIJB:D%NIJE,:))/PTSTEP - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PV_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT)) + PVDT(D%NIJB:D%NIJE,1:D%NKT)= (ZVARS(D%NIJB:D%NIJE,1:D%NKT)-PVM(D%NIJB:D%NIJE,1:D%NKT))/PTSTEP + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE PUDT(:,:)=0. PVDT(:,:)=0. @@ -249,9 +249,10 @@ DO JSV=1,KSV ! ( Resulting fluxes are in flux level (w-point) as PEMF and PTHL_UP ) CALL MZM_MF(D, PSVM(:,:,JSV), PFLXZSVMF(:,:,JSV)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZSVMF(D%NIJB:D%NIJE,:,JSV) = PEMF(D%NIJB:D%NIJE,:)*(PSV_UP(D%NIJB:D%NIJE,:,JSV)-PFLXZSVMF(D%NIJB:D%NIJE,:,JSV)) - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZSVMF(D%NIJB:D%NIJE,1:D%NKT,JSV) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*& + & (PSV_UP(D%NIJB:D%NIJE,1:D%NKT,JSV)-PFLXZSVMF(D%NIJB:D%NIJE,1:D%NKT,JSV)) + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! ! 3.5 Compute the tendency for scalar variables ! (PDZZ and flux in w-point and PRHODJ is mass point, result in mass point) @@ -260,10 +261,11 @@ DO JSV=1,KSV -PEMF,PTSTEP,PIMPL,PDZZ,PRHODJ,ZVARS ) ! compute new flux and Sv tendency CALL MZM_MF(D, ZVARS, PFLXZSVMF(:,:,JSV)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZSVMF(D%NIJB:D%NIJE,:,JSV) = PEMF(D%NIJB:D%NIJE,:)*(PSV_UP(D%NIJB:D%NIJE,:,JSV)-PFLXZSVMF(D%NIJB:D%NIJE,:,JSV)) - PSVDT(D%NIJB:D%NIJE,:,JSV)= (ZVARS(D%NIJB:D%NIJE,:)-PSVM(D%NIJB:D%NIJE,:,JSV))/PTSTEP - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZSVMF(D%NIJB:D%NIJE,1:D%NKT,JSV) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*& + & (PSV_UP(D%NIJB:D%NIJE,1:D%NKT,JSV)-PFLXZSVMF(D%NIJB:D%NIJE,1:D%NKT,JSV)) + PSVDT(D%NIJB:D%NIJE,1:D%NKT,JSV)= (ZVARS(D%NIJB:D%NIJE,1:D%NKT)-PSVM(D%NIJB:D%NIJE,1:D%NKT,JSV))/PTSTEP + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ENDDO ! diff --git a/src/common/turb/mode_mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 index 6f275cf85580ce0b82ff02e66e224f25155690d9..4cb55e936222fe2497c5f34ac01a30b4c32f1a21 100644 --- a/src/common/turb/mode_mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -130,31 +130,31 @@ PVDT = 0. CALL MZM_MF(D, PRTM (:,:), ZRTM_F(:,:)) CALL MZM_MF(D, PTHLM(:,:), ZTHLM_F(:,:)) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZQTM(D%NIJB:D%NIJE,:) = ZRTM_F(D%NIJB:D%NIJE,:)/(1.+ZRTM_F(D%NIJB:D%NIJE,:)) -ZQT_UP(D%NIJB:D%NIJE,:) = PRT_UP(D%NIJB:D%NIJE,:)/(1.+PRT_UP(D%NIJB:D%NIJE,:)) -ZTHS_UP(D%NIJB:D%NIJE,:)= PTHL_UP(D%NIJB:D%NIJE,:)*(1.+PARAMMF%XLAMBDA_MF*ZQT_UP(D%NIJB:D%NIJE,:)) -ZTHSM(D%NIJB:D%NIJE,:) = ZTHLM_F(D%NIJB:D%NIJE,:)*(1.+PARAMMF%XLAMBDA_MF*ZQTM(D%NIJB:D%NIJE,:)) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZQTM(D%NIJB:D%NIJE,1:D%NKT) = ZRTM_F(D%NIJB:D%NIJE,1:D%NKT)/(1.+ZRTM_F(D%NIJB:D%NIJE,1:D%NKT)) +ZQT_UP(D%NIJB:D%NIJE,1:D%NKT) = PRT_UP(D%NIJB:D%NIJE,1:D%NKT)/(1.+PRT_UP(D%NIJB:D%NIJE,1:D%NKT)) +ZTHS_UP(D%NIJB:D%NIJE,1:D%NKT)= PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)*(1.+PARAMMF%XLAMBDA_MF*ZQT_UP(D%NIJB:D%NIJE,1:D%NKT)) +ZTHSM(D%NIJB:D%NIJE,1:D%NKT) = ZTHLM_F(D%NIJB:D%NIJE,1:D%NKT)*(1.+PARAMMF%XLAMBDA_MF*ZQTM(D%NIJB:D%NIJE,1:D%NKT)) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) CALL MZM_MF(D, PTHLM(:,:), PFLXZTHLMF(:,:)) CALL MZM_MF(D, PRTM(:,:), PFLXZRMF(:,:)) CALL MZM_MF(D, PTHVM(:,:), PFLXZTHVMF(:,:)) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -PFLXZTHLMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PTHL_UP(D%NIJB:D%NIJE,:)-PFLXZTHLMF(D%NIJB:D%NIJE,:)) ! ThetaL -PFLXZRMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PRT_UP(D%NIJB:D%NIJE,:)-PFLXZRMF(D%NIJB:D%NIJE,:)) ! Rt -PFLXZTHVMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PTHV_UP(D%NIJB:D%NIJE,:)-PFLXZTHVMF(D%NIJB:D%NIJE,:)) ! ThetaV +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +PFLXZTHLMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHL_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZTHLMF(D%NIJB:D%NIJE,1:D%NKT)) ! ThetaL +PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PRT_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZRMF(D%NIJB:D%NIJE,1:D%NKT)) ! Rt +PFLXZTHVMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PTHV_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZTHVMF(D%NIJB:D%NIJE,1:D%NKT)) ! ThetaV -ZFLXZTHSMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(ZTHS_UP(D%NIJB:D%NIJE,:)-ZTHSM(D%NIJB:D%NIJE,:)) ! Theta S flux -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +ZFLXZTHSMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(ZTHS_UP(D%NIJB:D%NIJE,1:D%NKT)-ZTHSM(D%NIJB:D%NIJE,1:D%NKT)) ! Theta S flux +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) IF (OMIXUV) THEN CALL MZM_MF(D, PUM(:,:), PFLXZUMF(:,:)) CALL MZM_MF(D, PVM(:,:), PFLXZVMF(:,:)) - !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - PFLXZUMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PU_UP(D%NIJB:D%NIJE,:)-PFLXZUMF(D%NIJB:D%NIJE,:)) ! U - PFLXZVMF(D%NIJB:D%NIJE,:) = PEMF(D%NIJB:D%NIJE,:)*(PV_UP(D%NIJB:D%NIJE,:)-PFLXZVMF(D%NIJB:D%NIJE,:)) ! V - !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PU_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZUMF(D%NIJB:D%NIJE,1:D%NKT)) ! U + PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT) = PEMF(D%NIJB:D%NIJE,1:D%NKT)*(PV_UP(D%NIJB:D%NIJE,1:D%NKT)-PFLXZVMF(D%NIJB:D%NIJE,1:D%NKT)) ! V + !$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ELSE PFLXZUMF(:,:) = 0. PFLXZVMF(:,:) = 0. diff --git a/src/common/turb/mode_tridiag_massflux.F90 b/src/common/turb/mode_tridiag_massflux.F90 index a52b6a92fb71d8d908d2f7ab97191af506204ae4..7f2311f9c2befec87c79cc4f255cad2bff049472 100644 --- a/src/common/turb/mode_tridiag_massflux.F90 +++ b/src/common/turb/mode_tridiag_massflux.F90 @@ -161,9 +161,9 @@ INTEGER :: JK, JI ! loop counter REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG_MASSFLUX',0,ZHOOK_HANDLE) CALL MZM_MF(D, PRHODJ, ZMZM_RHODJ) -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZRHODJ_DFDT_O_DZ(D%NIJB:D%NIJE,:) = ZMZM_RHODJ(D%NIJB:D%NIJE,:)*PDFDT(D%NIJB:D%NIJE,:)/PDZZ(D%NIJB:D%NIJE,:) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZRHODJ_DFDT_O_DZ(D%NIJB:D%NIJE,1:D%NKT) = ZMZM_RHODJ(D%NIJB:D%NIJE,1:D%NKT)*PDFDT(D%NIJB:D%NIJE,1:D%NKT)/PDZZ(D%NIJB:D%NIJE,1:D%NKT) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! ZA=0. ZB=0. diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90 index c6cdc66aca75e32e7cc65f3d98a78aa4032baeac..1027e0cfc0b61a34a680d8b87b29dfa0b61aeb06 100644 --- a/src/common/turb/shallow_mf.F90 +++ b/src/common/turb/shallow_mf.F90 @@ -202,15 +202,15 @@ ENDIF ! Thermodynamics functions ZFRAC_ICE(:,:) = 0. IF (KRR.GE.4) THEN - !$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) - WHERE(PRM(D%NIJB:D%NIJE,:,2)+PRM(D%NIJB:D%NIJE,:,4) > 1.E-20) - ZFRAC_ICE(D%NIJB:D%NIJE,:) = PRM(D%NIJB:D%NIJE,:,4) / (PRM(D%NIJB:D%NIJE,:,2)+PRM(D%NIJB:D%NIJE,:,4)) + !$mnh_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) + WHERE(PRM(D%NIJB:D%NIJE,1:D%NKT,2)+PRM(D%NIJB:D%NIJE,1:D%NKT,4) > 1.E-20) + ZFRAC_ICE(D%NIJB:D%NIJE,1:D%NKT) = PRM(D%NIJB:D%NIJE,1:D%NKT,4) / (PRM(D%NIJB:D%NIJE,1:D%NKT,2)+PRM(D%NIJB:D%NIJE,1:D%NKT,4)) ENDWHERE - !$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) + !$mnh_end_expand_where(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ENDIF -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZWK(D%NIJB:D%NIJE,:)=PTHM(D%NIJB:D%NIJE,:)*PEXNM(D%NIJB:D%NIJE,:) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZWK(D%NIJB:D%NIJE,1:D%NKT)=PTHM(D%NIJB:D%NIJE,1:D%NKT)*PEXNM(D%NIJB:D%NIJE,1:D%NKT) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) CALL COMPUTE_FRAC_ICE(HFRAC_ICE,NEB,ZFRAC_ICE(:,:),ZWK(:,:), IERR(:,:)) ! Conservative variables at t-dt @@ -219,9 +219,10 @@ CALL THL_RT_FROM_TH_R_MF(D, CST, KRR,KRRL,KRRI, & ZTHLM, ZRTM ) ! Virtual potential temperature at t-dt -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZTHVM(D%NIJB:D%NIJE,:) = PTHM(D%NIJB:D%NIJE,:)*((1.+CST%XRV / CST%XRD *PRM(D%NIJB:D%NIJE,:,1))/(1.+ZRTM(D%NIJB:D%NIJE,:))) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZTHVM(D%NIJB:D%NIJE,1:D%NKT) = PTHM(D%NIJB:D%NIJE,1:D%NKT)*& + & ((1.+CST%XRV / CST%XRD *PRM(D%NIJB:D%NIJE,1:D%NKT,1))/(1.+ZRTM(D%NIJB:D%NIJE,1:D%NKT))) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) ! !!! 2. Compute updraft !!! --------------- @@ -293,9 +294,9 @@ CALL COMPUTE_MF_CLOUD(D, CST, CSTURB, PARAMMF, OSTATNW, & !!! 3. Compute fluxes of conservative variables and their divergence = tendency !!! ------------------------------------------------------------------------ ! -!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) -ZEMF_O_RHODREF(D%NIJB:D%NIJE,:)=PEMF(D%NIJB:D%NIJE,:)/PRHODREF(D%NIJB:D%NIJE,:) -!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=D%NKTB:D%NKTE) +!$mnh_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) +ZEMF_O_RHODREF(D%NIJB:D%NIJE,1:D%NKT)=PEMF(D%NIJB:D%NIJE,1:D%NKT)/PRHODREF(D%NIJB:D%NIJE,1:D%NKT) +!$mnh_end_expand_array(JI=D%NIJB:D%NIJE,JK=1:D%NKT) IF ( PIMPL_MF > 1.E-10 ) THEN CALL MF_TURB(D, KSV, OMIXUV, &