Skip to content
Snippets Groups Projects
resolved_cloud.f90 56 KiB
Newer Older
  • Learn to ignore specific revisions
  •                                                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(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