Newer
Older

RODIER Quentin
committed
PRR=PRS(:,:,:,3)*PTSTEP, &
PRI=PRS(:,:,:,4)*PTSTEP, PRIS=PRS(:,:,:,4), &
PRS=PRS(:,:,:,5)*PTSTEP, &
PRG=PRS(:,:,:,6)*PTSTEP, &
TBUDGETS=TBUDGETS,KBUDGETS=SIZE(TBUDGETS), &

RODIER Quentin
committed
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
PRH=PRS(:,:,:,7)*PTSTEP, &
PHLC_HRC=PHLC_HRC, PHLC_HCF=PHLC_HCF, &
PHLI_HRI=PHLI_HRI, PHLI_HCF=PHLI_HCF )
END IF
deallocate( zexn )
!
!
!* 12. 2-MOMENT MIXED-PHASE MICROPHYSICAL SCHEME LIMA
! --------------------------------------------------------------
!
!
!* 12.1 Compute the explicit microphysical sources
!
CASE ('LIMA')
!
DO JK=IKB,IKE
ZDZZ(:,:,JK)=PZZ(:,:,JK+1)-PZZ(:,:,JK)
ENDDO
ZZZ = MZF( PZZ )
IF (LPTSPLIT) THEN
CALL LIMA (1, IKU, 1, &
PTSTEP, TPFILE, &
PRHODREF, PEXNREF, ZDZZ, &
PRHODJ, PPABST, &

RODIER Quentin
committed
NMOD_CCN, NMOD_IFN, NMOD_IMM, &
PDTHRAD, PTHT, PRT, &
PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), PW_ACT, &
PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PINPRC, PINDEP, PINPRR, ZINPRI, PINPRS, PINPRG, PINPRH, &
PEVAP3D, PCLDFR, PICEFR, PRAINFR )

RODIER Quentin
committed
ELSE
IF (OWARM) CALL LIMA_WARM(OACTIT, OSEDC, ORAIN, KSPLITR, PTSTEP, KMI, &
TPFILE, KRR, PZZ, PRHODJ, &
PRHODREF, PEXNREF, PW_ACT, PPABST, &
PDTHRAD, &

RODIER Quentin
committed
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PINPRC, PINPRR, PINDEP, PINPRR3D, PEVAP3D )
!
IF (LCOLD) CALL LIMA_COLD(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
KRR, PZZ, PRHODJ, &
PRHODREF, PEXNREF, PPABST, PW_ACT, &
PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PINPRS, PINPRG, PINPRH )
!
IF (OWARM .AND. LCOLD) CALL LIMA_MIXED(OSEDI, OHHONI, KSPLITG, PTSTEP, KMI, &
KRR, PZZ, PRHODJ, &
PRHODREF, PEXNREF, PPABST, PW_ACT, &
PTHT, PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS, PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END) )
ENDIF
!
!* 12.2 Perform the saturation adjustment
!
IF (LSPRO) THEN
CALL LIMA_NOTADJUST (KMI, TPFILE, HRAD, &
PTSTEP, PRHODJ, PPABSTT, PPABST, PRHODREF, PEXNREF, PZZ, &

RODIER Quentin
committed
PTHT,PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS,PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PCLDFR, PICEFR, PRAINFR, PSRCS )

RODIER Quentin
committed
ELSE IF (LPTSPLIT) THEN
CALL LIMA_ADJUST_SPLIT(YLDIMPHYEX, KRR, KMI, TPFILE, CCONDENS, CLAMBDA3, &

RODIER Quentin
committed
OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT, &
PRHODREF, PRHODJ, PEXNREF, PSIGS, PMFCONV, PPABST, PPABSTT, ZZZ,&

RODIER Quentin
committed
PDTHRAD, PW_ACT, &
PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS, PSRCS, PCLDFR, PICEFR, PRC_MF, PRI_MF, PCF_MF )

RODIER Quentin
committed
ELSE
CALL LIMA_ADJUST(KRR, KMI, TPFILE, &
OSUBG_COND, PTSTEP, &
PRHODREF, PRHODJ, PEXNREF, PPABST, PPABSTT, &

RODIER Quentin
committed
PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
PTHS, PSRCS, PCLDFR, PICEFR, PRAINFR )

RODIER Quentin
committed
ENDIF
!
END SELECT
!
IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN

RODIER Quentin
committed
PINPRC3D=ZFPR(:,:,:,2) / CST%XRHOLW
PINPRR3D=ZFPR(:,:,:,3) / CST%XRHOLW
PINPRS3D=ZFPR(:,:,:,5) / CST%XRHOLW
PINPRG3D=ZFPR(:,:,:,6) / CST%XRHOLW
IF(KRR==7) PINPRH3D=ZFPR(:,:,:,7) / CST%XRHOLW

RODIER Quentin
committed
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
WHERE (PRT(:,:,:,2) > 1.E-04 )
PSPEEDC=ZFPR(:,:,:,2) / (PRT(:,:,:,2) * PRHODREF(:,:,:))
ENDWHERE
WHERE (PRT(:,:,:,3) > 1.E-04 )
PSPEEDR=ZFPR(:,:,:,3) / (PRT(:,:,:,3) * PRHODREF(:,:,:))
ENDWHERE
WHERE (PRT(:,:,:,5) > 1.E-04 )
PSPEEDS=ZFPR(:,:,:,5) / (PRT(:,:,:,5) * PRHODREF(:,:,:))
ENDWHERE
WHERE (PRT(:,:,:,6) > 1.E-04 )
PSPEEDG=ZFPR(:,:,:,6) / (PRT(:,:,:,6) * PRHODREF(:,:,:))
ENDWHERE
IF(KRR==7) THEN
WHERE (PRT(:,:,:,7) > 1.E-04 )
PSPEEDH=ZFPR(:,:,:,7) / (PRT(:,:,:,7) * PRHODREF(:,:,:))
ENDWHERE
ENDIF
ENDIF
! Remove non-physical negative values (unnecessary in a perfect world) + corresponding budgets
call Sources_neg_correct( hcloud, 'NECON', krr, ptstep, ppabst, ptht, prt, pths, prs, psvs, prhodj )
!-------------------------------------------------------------------------------
!
!
!* 13. SWITCH BACK TO THE PROGNOSTIC VARIABLES
! ---------------------------------------
!
PTHS(:,:,:) = PTHS(:,:,:) * PRHODJ(:,:,:)
!
DO JRR = 1,KRR
PRS(:,:,:,JRR) = PRS(:,:,:,JRR) * PRHODJ(:,:,:)
END DO
!
IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') THEN
DO JSV = ISVBEG, ISVEND
PSVS(:,:,:,JSV) = PSVS(:,:,:,JSV) * PRHODJ(:,:,:)
ENDDO
ENDIF
!-------------------------------------------------------------------------------
!
END SUBROUTINE RESOLVED_CLOUD