Skip to content
Snippets Groups Projects
resolved_cloud.f90 56.5 KiB
Newer Older
                                               KRR, PZZ, PRHODJ,                                 &
                                               PRHODREF, PEXNREF, PPABST, PW_ACT,                &
                                               PTHM, PPABSM,                                     &
                                               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, PPABSM, PPABST, PRHODREF, PEXNREF, PZZ, &
                         PTHT,PRT, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),        &
                         PTHS,PRS, PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),        &
                         PCLDFR, PSRCS                                           )
   ELSE IF (LPTSPLIT) THEN
    CALL LIMA_ADJUST_SPLIT(YLDIMPHYEX, KRR, KMI, TPFILE, CCONDENS, CLAMBDA3,                     &
                     OSUBG_COND, OSIGMAS, PTSTEP, PSIGQSAT,                          &
                     PRHODREF, PRHODJ, PEXNREF, PPABST, PSIGS, PMFCONV, PPABST, ZZZ, &
                     PDTHRAD, PW_ACT,                                                &
                     PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),                &
                     PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),                          &
                     PTHS, PSRCS, PCLDFR, PRC_MF, PCF_MF                             )
   ELSE
    CALL LIMA_ADJUST(KRR, KMI, TPFILE,                                &
                     OSUBG_COND, PTSTEP,                              &
                     PRHODREF, PRHODJ, PEXNREF, PPABST, PPABST,       &
                     PRT, PRS, PSVT(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END), &
                     PSVS(:,:,:,NSV_LIMA_BEG:NSV_LIMA_END),           &
                     PTHS, PSRCS, PCLDFR                              )
   ENDIF
!
END SELECT
!
IF(HCLOUD=='ICE3' .OR. HCLOUD=='ICE4' ) THEN
  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
  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