Newer
Older
! Orilam Scalar Variables
!
IF (NSV_AEREND>=NSV_AERBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'ppp'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_AERBEG,NSV_AEREND
TZFIELD%CMNHNAME = TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T'

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! Dust Scalar Variables
!
IF (NSV_DSTEND>=NSV_DSTBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'ppp'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_DSTBEG,NSV_DSTEND
TZFIELD%CMNHNAME = TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T'

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! Sea Salt Scalar Variables
!
IF (NSV_SLTEND>=NSV_SLTBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'ppp'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_SLTBEG,NSV_SLTEND
TZFIELD%CMNHNAME = TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T'

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! LG Scalar Variables
!
IF (NSV_LGEND>=NSV_LGBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'm'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_LGBEG,NSV_LGEND
TZFIELD%CMNHNAME = TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T'

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! LNOx Scalar Variables
!
!PW:TODO/bug1?: LINOX or LINOXT?
!PW:TODO/bug2?: Same name of variable in a loop!
IF (NSV_LNOXEND>=NSV_LNOXBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'ppp' !PW: TODO: not sure (depends if LINOX or LINOXT)
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_LNOXBEG,NSV_LNOXEND
TZFIELD%CMNHNAME = 'LINOX'

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! Passive scalar variables
!
IF (NSV_PPEND>=NSV_PPBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'kg kg-1'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_PPBEG,NSV_PPEND
WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
#ifdef MNH_FOREFIRE
!
! ForeFire variables
!
IF (NSV_FFEND>=NSV_FFBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'kg kg-1'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_FFBEG,NSV_FFEND
WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
#endif
!
! Passive scalar variables
!
IF (NSV_CSEND>=NSV_CSBEG) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'kg kg-1'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = NSV_CSBEG,NSV_CSEND
WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'SVT',JSV

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
TZFIELD%CCOMMENT = 'X_Y_Z_'//TRIM(TZFIELD%CMNHNAME)
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PSVT(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
!
! Passive scalar variables
!
IF (NSV_PP>=1) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'm-3'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = 1,NSV_PP
WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'ATC',JSV+NSV_PPBEG-1

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','ATC',JSV+NSV_PPBEG-1
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PATC(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
#ifdef MNH_FOREFIRE
!
! ForeFire variables
!
IF (NSV_FF>=1) THEN
TZFIELD%CSTDNAME = ''
TZFIELD%CUNITS = 'm-3'
TZFIELD%CDIR = 'XY'
TZFIELD%NGRID = 1
TZFIELD%NTYPE = TYPEREAL
TZFIELD%NDIMS = 3
TZFIELD%LTIMEDEP = .TRUE.
!
DO JSV = 1,NSV_FF
WRITE(TZFIELD%CMNHNAME,'(A3,I3.3)')'ATC',JSV+NSV_FFBEG-1

WAUTELET Philippe
committed
TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME)
WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','ATC',JSV+NSV_FFBEG-1
CALL IO_READ_FIELD(TPSONFILE,TZFIELD,ZWORK3D,IRESP)
IF(IRESP==0) PATC(KIB2:KIE2,KJB2:KJE2,:,JSV)=ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
END DO
END IF
#endif
END IF
!
! Secondary pronostic variables
!
IF (HTURB /= 'NONE' .AND. IRR>1) THEN
CALL IO_READ_FIELD(TPSONFILE,'SRCT',ZWORK3D,IRESP) ! turbulent flux SRC at time t
IF(IRESP == 0) PSRCT(KIB2:KIE2,KJB2:KJE2,:) = &
ZWORK3D(KIB1:KIE1,KJB1:KJE1,:)
CALL IO_READ_FIELD(TPSONFILE,'SIGS',ZWORK3D,IRESP) ! subgrid condensation
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)
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
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