diff --git a/src/PHYEX/turb/mode_emoist.f90 b/src/PHYEX/turb/mode_emoist.f90 index ccb80699a775ddc5be706875ef6c01e3bf5739ed..35d91d2884230b93a9bcf08f98982d4cf24d4caa 100644 --- a/src/PHYEX/turb/mode_emoist.f90 +++ b/src/PHYEX/turb/mode_emoist.f90 @@ -72,25 +72,25 @@ INTEGER :: KRR ! number of moist var. INTEGER :: KRRI ! number of ice var. LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTHLM ! Conservative pot. temperature -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios, where +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTHLM ! Conservative pot. temperature +REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios, where ! PRM(:,:,:,1) = conservative mixing ratio -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1 -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PAMOIST ! Amoist -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PSRCM ! Normalized 2dn_order +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1 +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PAMOIST ! Amoist +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSRCM ! Normalized 2dn_order ! moment s'r'c/2Sigma_s2 ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PEMOIST ! result +REAL,DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PEMOIST ! result ! !* 0.2 declarations of local variables ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT) :: & +REAL,DIMENSION(D%NIJT,D%NKT) :: & ZA, ZRW ! ZA = coeft A, ZRW = total mixing ratio rw REAL :: ZDELTA ! = Rv/Rd - 1 INTEGER :: JRR ! moist loop counter -INTEGER :: JI,JJ,JK ! loop counter -INTEGER :: IIB,IJB,IIE,IJE,IKT +INTEGER :: JIJ,JK ! loop counter +INTEGER :: IIJB,IIJE,IKT ! !--------------------------------------------------------------------------- ! @@ -101,89 +101,87 @@ INTEGER :: IIB,IJB,IIE,IJE,IKT REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('EMOIST',0,ZHOOK_HANDLE) ! -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJB=D%NIJB +IIJE=D%NIJE IKT=D%NKT ! IF (OOCEAN) THEN IF ( KRR == 0 ) THEN ! Unsalted - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PEMOIST(IIB:IIE,IJB:IJE,:) = 0. - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PEMOIST(IIJB:IIJE,:) = 0. + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PEMOIST(IIB:IIE,IJB:IJE,:) = 1. ! Salted case - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PEMOIST(IIJB:IIJE,:) = 1. ! Salted case + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) END IF ! ELSE ! IF ( KRR == 0 ) THEN ! dry case - PEMOIST(IIB:IIE,IJB:IJE,:) = 0. + PEMOIST(IIJB:IIJE,:) = 0. ELSE IF ( KRR == 1 ) THEN ! only vapor ZDELTA = (CST%XRV/CST%XRD) - 1. - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PEMOIST(IIB:IIE,IJB:IJE,:) = ZDELTA*PTHLM(IIB:IIE,IJB:IJE,:) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PEMOIST(IIJB:IIJE,:) = ZDELTA*PTHLM(IIJB:IIJE,:) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE ! liquid water & ice present ZDELTA = (CST%XRV/CST%XRD) - 1. - ZRW(IIB:IIE,IJB:IJE,:) = PRM(IIB:IIE,IJB:IJE,:,1) + ZRW(IIJB:IIJE,:) = PRM(IIJB:IIJE,:,1) ! IF ( KRRI>0) THEN ! rc and ri case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,3) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,3) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) DO JRR=5,KRR - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,JRR) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,JRR) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ENDDO - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZA(IIB:IIE,IJB:IJE,:) = 1. + ( & ! Compute A - (1.+ZDELTA) * (PRM(IIB:IIE,IJB:IJE,:,1) - PRM(IIB:IIE,IJB:IJE,:,2) - PRM(IIB:IIE,IJB:IJE,:,4)) & - -ZRW(IIB:IIE,IJB:IJE,:) & - ) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZA(IIJB:IIJE,:) = 1. + ( & ! Compute A + (1.+ZDELTA) * (PRM(IIJB:IIJE,:,1) - PRM(IIJB:IIJE,:,2) - PRM(IIJB:IIJE,:,4)) & + -ZRW(IIJB:IIJE,:) & + ) / (1. + ZRW(IIJB:IIJE,:)) ! ! Emoist = ZB + ZC * Amoist ! ZB is computed from line 1 to line 2 ! ZC is computed from line 3 to line 5 ! Amoist* 2 * SRC is computed at line 6 ! - PEMOIST(IIB:IIE,IJB:IJE,:) = ZDELTA * (PTHLM(IIB:IIE,IJB:IJE,:) + PLOCPEXNM(IIB:IIE,IJB:IJE,:)*( & - PRM(IIB:IIE,IJB:IJE,:,2)+PRM(IIB:IIE,IJB:IJE,:,4)))& - / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - +( PLOCPEXNM(IIB:IIE,IJB:IJE,:) * ZA(IIB:IIE,IJB:IJE,:) & - -(1.+ZDELTA) * (PTHLM(IIB:IIE,IJB:IJE,:) + PLOCPEXNM(IIB:IIE,IJB:IJE,:)*( & - PRM(IIB:IIE,IJB:IJE,:,2)+PRM(IIB:IIE,IJB:IJE,:,4)))& - / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - ) * PAMOIST(IIB:IIE,IJB:IJE,:) * 2. * PSRCM(IIB:IIE,IJB:IJE,:) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + PEMOIST(IIJB:IIJE,:) = ZDELTA * (PTHLM(IIJB:IIJE,:) + PLOCPEXNM(IIJB:IIJE,:)*( & + PRM(IIJB:IIJE,:,2)+PRM(IIJB:IIJE,:,4)))& + / (1. + ZRW(IIJB:IIJE,:)) & + +( PLOCPEXNM(IIJB:IIJE,:) * ZA(IIJB:IIJE,:) & + -(1.+ZDELTA) * (PTHLM(IIJB:IIJE,:) + PLOCPEXNM(IIJB:IIJE,:)*( & + PRM(IIJB:IIJE,:,2)+PRM(IIJB:IIJE,:,4)))& + / (1. + ZRW(IIJB:IIJE,:)) & + ) * PAMOIST(IIJB:IIJE,:) * 2. * PSRCM(IIJB:IIJE,:) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE DO JRR=3,KRR - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,JRR) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,JRR) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ENDDO - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZA(IIB:IIE,IJB:IJE,:) = 1. + ( & ! Compute ZA - (1.+ZDELTA) * (PRM(IIB:IIE,IJB:IJE,:,1) - PRM(IIB:IIE,IJB:IJE,:,2)) & - -ZRW(IIB:IIE,IJB:IJE,:) & - ) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZA(IIJB:IIJE,:) = 1. + ( & ! Compute ZA + (1.+ZDELTA) * (PRM(IIJB:IIJE,:,1) - PRM(IIJB:IIJE,:,2)) & + -ZRW(IIJB:IIJE,:) & + ) / (1. + ZRW(IIJB:IIJE,:)) ! ! Emoist = ZB + ZC * Amoist ! ZB is computed from line 1 to line 2 ! ZC is computed from line 3 to line 5 ! Amoist* 2 * SRC is computed at line 6 ! - PEMOIST(IIB:IIE,IJB:IJE,:) = ZDELTA * (PTHLM(IIB:IIE,IJB:IJE,:) + PLOCPEXNM(IIB:IIE,IJB:IJE,:)* & - PRM(IIB:IIE,IJB:IJE,:,2)) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - +( PLOCPEXNM(IIB:IIE,IJB:IJE,:) * ZA(IIB:IIE,IJB:IJE,:) & - -(1.+ZDELTA) * (PTHLM(IIB:IIE,IJB:IJE,:) + PLOCPEXNM(IIB:IIE,IJB:IJE,:)* & - PRM(IIB:IIE,IJB:IJE,:,2)) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - ) * PAMOIST(IIB:IIE,IJB:IJE,:) * 2. * PSRCM(IIB:IIE,IJB:IJE,:) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + PEMOIST(IIJB:IIJE,:) = ZDELTA * (PTHLM(IIJB:IIJE,:) + PLOCPEXNM(IIJB:IIJE,:)* & + PRM(IIJB:IIJE,:,2)) / (1. + ZRW(IIJB:IIJE,:)) & + +( PLOCPEXNM(IIJB:IIJE,:) * ZA(IIJB:IIJE,:) & + -(1.+ZDELTA) * (PTHLM(IIJB:IIJE,:) + PLOCPEXNM(IIJB:IIJE,:)* & + PRM(IIJB:IIJE,:,2)) / (1. + ZRW(IIJB:IIJE,:)) & + ) * PAMOIST(IIJB:IIJE,:) * 2. * PSRCM(IIJB:IIJE,:) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) END IF END IF ! diff --git a/src/PHYEX/turb/mode_etheta.f90 b/src/PHYEX/turb/mode_etheta.f90 index 01297bdb7bcde7e757ab0548131cb9c821d6252c..d6a321be3bd71d78fae96581cde0e5fe071fe6af 100644 --- a/src/PHYEX/turb/mode_etheta.f90 +++ b/src/PHYEX/turb/mode_etheta.f90 @@ -70,31 +70,30 @@ INTEGER :: KRR ! number of moist var. INTEGER :: KRRI ! number of ice var. LOGICAL, INTENT(IN) :: OOCEAN ! switch for Ocean model version ! -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PTHLM ! Conservative pot. temperature -REAL, DIMENSION(D%NIT,D%NJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios, where +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTHLM ! Conservative pot. temperature +REAL, DIMENSION(D%NIJT,D%NKT,KRR), INTENT(IN) :: PRM ! Mixing ratios, where ! PRM(:,:,:,1) = conservative mixing ratio -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1 -REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PATHETA ! Atheta +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PLOCPEXNM ! Lv(T)/Cp/Exner at time t-1 +REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PATHETA ! Atheta ! LOGICAL, INTENT(IN) :: OCOMPUTE_SRC ! flag to define dimensions of SIGS and -REAL, DIMENSION(MERGE(D%NIT,0,OCOMPUTE_SRC),& - MERGE(D%NJT,0,OCOMPUTE_SRC),& +REAL, DIMENSION(MERGE(D%NIJT,0,OCOMPUTE_SRC),& MERGE(D%NKT,0,OCOMPUTE_SRC)), INTENT(IN) :: PSRCM ! Normalized 2dn_order ! moment s'r'c/2Sigma_s2 ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PETHETA ! result +REAL,DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PETHETA ! result ! ! ! !* 0.2 declarations of local variables ! -REAL,DIMENSION(D%NIT,D%NJT,D%NKT) :: & +REAL,DIMENSION(D%NIJT,D%NKT) :: & ZA, ZRW ! ZA = coeft A, ZRW = total mixing ratio rw REAL :: ZDELTA ! = Rv/Rd - 1 INTEGER :: JRR ! moist loop counter -INTEGER :: JI,JJ,JK ! loop counter -INTEGER :: IIB,IJB,IIE,IJE,IKT +INTEGER :: JIJ,JK ! loop counter +INTEGER :: IIJB,IIJE,IKT ! !--------------------------------------------------------------------------- ! @@ -106,80 +105,78 @@ INTEGER :: IIB,IJB,IIE,IJE,IKT REAL(KIND=JPRB) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ETHETA',0,ZHOOK_HANDLE) ! -IIE=D%NIEC -IIB=D%NIBC -IJE=D%NJEC -IJB=D%NJBC +IIJB=D%NIJB +IIJE=D%NIJE IKT=D%NKT ! IF (OOCEAN) THEN ! ocean case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PETHETA(IIB:IIE,IJB:IJE,:) = 1. - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PETHETA(IIJB:IIJE,:) = 1. + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE IF ( KRR == 0) THEN ! dry case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PETHETA(IIB:IIE,IJB:IJE,:) = 1. - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PETHETA(IIJB:IIJE,:) = 1. + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE IF ( KRR == 1 ) THEN ! only vapor ZDELTA = (CST%XRV/CST%XRD) - 1. - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - PETHETA(IIB:IIE,IJB:IJE,:) = 1. + ZDELTA*PRM(IIB:IIE,IJB:IJE,:,1) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + PETHETA(IIJB:IIJE,:) = 1. + ZDELTA*PRM(IIJB:IIJE,:,1) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE ! liquid water & ice present ZDELTA = (CST%XRV/CST%XRD) - 1. - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = PRM(IIB:IIE,IJB:IJE,:,1) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = PRM(IIJB:IIJE,:,1) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ! IF ( KRRI>0 ) THEN ! rc and ri case - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,3) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,3) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) DO JRR=5,KRR - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,JRR) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,JRR) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ENDDO - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZA(IIB:IIE,IJB:IJE,:) = 1. + ( & ! Compute A - (1.+ZDELTA) * (PRM(IIB:IIE,IJB:IJE,:,1) - PRM(IIB:IIE,IJB:IJE,:,2) - PRM(IIB:IIE,IJB:IJE,:,4)) & - -ZRW(IIB:IIE,IJB:IJE,:) & - ) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZA(IIJB:IIJE,:) = 1. + ( & ! Compute A + (1.+ZDELTA) * (PRM(IIJB:IIJE,:,1) - PRM(IIJB:IIJE,:,2) - PRM(IIJB:IIJE,:,4)) & + -ZRW(IIJB:IIJE,:) & + ) / (1. + ZRW(IIJB:IIJE,:)) ! ! Etheta = ZA + ZC * Atheta ! ZC is computed from line 2 to line 5 ! - Atheta * 2. * SRC is computed at line 6 ! - PETHETA(IIB:IIE,IJB:IJE,:) = ZA(IIB:IIE,IJB:IJE,:) & - +( PLOCPEXNM(IIB:IIE,IJB:IJE,:) * ZA(IIB:IIE,IJB:IJE,:) & - -(1.+ZDELTA) * (PTHLM(IIB:IIE,IJB:IJE,:) + PLOCPEXNM(IIB:IIE,IJB:IJE,:)*( & - PRM(IIB:IIE,IJB:IJE,:,2)+PRM(IIB:IIE,IJB:IJE,:,4)))& - / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - ) * PATHETA(IIB:IIE,IJB:IJE,:) * 2. * PSRCM(IIB:IIE,IJB:IJE,:) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + PETHETA(IIJB:IIJE,:) = ZA(IIJB:IIJE,:) & + +( PLOCPEXNM(IIJB:IIJE,:) * ZA(IIJB:IIJE,:) & + -(1.+ZDELTA) * (PTHLM(IIJB:IIJE,:) + PLOCPEXNM(IIJB:IIJE,:)*( & + PRM(IIJB:IIJE,:,2)+PRM(IIJB:IIJE,:,4)))& + / (1. + ZRW(IIJB:IIJE,:)) & + ) * PATHETA(IIJB:IIJE,:) * 2. * PSRCM(IIJB:IIJE,:) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ELSE DO JRR=3,KRR - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZRW(IIB:IIE,IJB:IJE,:) = ZRW(IIB:IIE,IJB:IJE,:) + PRM(IIB:IIE,IJB:IJE,:,JRR) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZRW(IIJB:IIJE,:) = ZRW(IIJB:IIJE,:) + PRM(IIJB:IIJE,:,JRR) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ENDDO - !$mnh_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) - ZA(IIB:IIE,IJB:IJE,:) = 1. + ( & ! Compute A - (1.+ZDELTA) * (PRM(IIB:IIE,IJB:IJE,:,1) - PRM(IIB:IIE,IJB:IJE,:,2)) & - -ZRW(IIB:IIE,IJB:IJE,:) & - ) / (1. + ZRW(IIB:IIE,IJB:IJE,:)) + !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) + ZA(IIJB:IIJE,:) = 1. + ( & ! Compute A + (1.+ZDELTA) * (PRM(IIJB:IIJE,:,1) - PRM(IIJB:IIJE,:,2)) & + -ZRW(IIJB:IIJE,:) & + ) / (1. + ZRW(IIJB:IIJE,:)) ! ! Etheta = ZA + ZC * Atheta ! ZC is computed from line 2 to line 5 ! - Atheta * 2. * SRC is computed at line 6 ! - PETHETA(IIB:IIE,IJB:IJE,:) = ZA(IIB:IIE,IJB:IJE,:) & - +( PLOCPEXNM(IIB:IIE,IJB:IJE,:) * ZA(IIB:IIE,IJB:IJE,:) -(1.+ZDELTA) * (PTHLM(IIB:IIE,IJB:IJE,:) & - + PLOCPEXNM(IIB:IIE,IJB:IJE,:)*PRM(IIB:IIE,IJB:IJE,:,2)) & - / (1. + ZRW(IIB:IIE,IJB:IJE,:)) & - ) * PATHETA(IIB:IIE,IJB:IJE,:) * 2. * PSRCM(IIB:IIE,IJB:IJE,:) - !$mnh_end_expand_array(JI=IIB:IIE,JJ=IJB:IJE,JK=1:IKT) + PETHETA(IIJB:IIJE,:) = ZA(IIJB:IIJE,:) & + +( PLOCPEXNM(IIJB:IIJE,:) * ZA(IIJB:IIJE,:) -(1.+ZDELTA) * (PTHLM(IIJB:IIJE,:) & + + PLOCPEXNM(IIJB:IIJE,:)*PRM(IIJB:IIJE,:,2)) & + / (1. + ZRW(IIJB:IIJE,:)) & + ) * PATHETA(IIJB:IIJE,:) * 2. * PSRCM(IIJB:IIJE,:) + !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) END IF END IF !