Skip to content
Snippets Groups Projects
spawn_field2.f90 44.3 KiB
Newer Older
  • Learn to ignore specific revisions
  •     IF( IRESP /= 0 ) THEN
          YRECFM='SRC'
          CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,          &
                      YCOMMENT,IRESP)
        END IF
        IF(IRESP == 0) PSRCT(KIB2:KIE2,KJB2:KJE2,:) =                    &
                                            ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
    
        YRECFM='SIGS'                  ! subgrid condensation
        CALL FMREAD(HSONFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
        IF(IRESP == 0) PSIGS(KIB2:KIE2,KJB2:KJE2,:) =                    &
                                            ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
      END IF
    END IF
    !
    !*       2.2.4  secondary prognostic variables correction
    !
    IF (CONF_MODEL(1)%NRR > 1 .AND. HTURB /= 'NONE')  PSRCT(:,:,:) = MIN( 1.0, MAX( 0.0, PSRCT(:,:,:)) )
    !
    IF ( CONF_MODEL(1)%NRR == 0 ) THEN
      PHUT (:,:,:)= 0.
    END IF
    !-------------------------------------------------------------------------------
    !
    CALL GOTO_MODEL(IMI)
    
    CALL GO_TOMODEL_ll(IMI, IINFO_ll)
    
    CONTAINS 
    !      
          SUBROUTINE COMPUTE_THV_HU(OUSERV,PR,PTH,PPABS,PTHV,PHU)
    !
    IMPLICIT NONE
    !
    !*       0.1   Declarations of dummy arguments :
    !
    LOGICAL, INTENT(IN)   :: OUSERV
    REAL, DIMENSION(:,:,:),   INTENT(IN)   :: PTH,PPABS
    REAL, DIMENSION(:,:,:,:), INTENT(IN)   :: PR
    REAL, DIMENSION(:,:,:),   INTENT(OUT)  :: PTHV,PHU
    !
    !*       0.2    Declarations of local variables 
    !
    REAL, DIMENSION(SIZE(PR,1),SIZE(PR,2),SIZE(PR,3)) :: ZSUMR ! sum of water ratios
    !
    IF (OUSERV) THEN
      ZSUMR(:,:,:) = 0.
      IRR=SIZE(PR,4)
      DO JRR=1,IRR
        ZSUMR(:,:,:) = ZSUMR(:,:,:) + PR(:,:,:,JRR)
      END DO
      PTHV(:,:,:)=PTH(:,:,:)*(1.+XRV/XRD*PR(:,:,:,1))/(1.+ZSUMR(:,:,:))
      PHU (:,:,:)=100.*PPABS(:,:,:)/(XRD/XRV/MAX(PR(:,:,:,1),1.E-16)+1.) &
                   /SM_FOES(PTH(:,:,:)*(PPABS(:,:,:)/XP00)**(XRD/XCPD))
    ELSE
      PTHV(:,:,:)=PTH(:,:,:)
      PHU (:,:,:)=0.
    END IF
    !
    !
    END SUBROUTINE COMPUTE_THV_HU
    !
    END SUBROUTINE SPAWN_FIELD2