7 HPROGRAM,KLU,HCTI,HCTIFILETYPE,OIMP_CTI)
67 USE modi_get_grid_coord
71 USE modi_interpol_field
73 USE modi_init_io_surf_n
74 USE modi_end_io_surf_n
90 USE modi_get_surf_mask_n
92 USE modi_get_type_dim_n
103 TYPE(
sso_t),
INTENT(INOUT) :: USS
107 LOGICAL,
INTENT(INOUT) :: OCTI
109 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
110 INTEGER,
INTENT(IN) :: KLU
111 CHARACTER(LEN=28),
INTENT(IN) :: HCTI
112 CHARACTER(LEN=6),
INTENT(IN) :: HCTIFILETYPE
113 LOGICAL,
INTENT(IN) :: OIMP_CTI
119 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLAT, ZDELTA, ZMEAN_INI, &
120 ZTI_MEAN, ZTI_STD, ZTI_SKEW
122 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IMASK
124 LOGICAL :: LREG,LREG10,LREG2
131 CHARACTER(LEN=6 ) :: YFILETYPE, YSCHEME, YSUBROUTINE
132 CHARACTER(LEN=20) :: YFIELD
133 REAL(KIND=JPRB) :: ZHOOK_HANDLE
140 IF (
lhook)
CALL dr_hook(
'PGD_TOPO_INDEX',0,zhook_handle)
141 IF(len_trim(hcti)==0)
THEN 143 ALLOCATE(s%XTI_MIN (0))
144 ALLOCATE(s%XTI_MAX (0))
145 ALLOCATE(s%XTI_MEAN(0))
146 ALLOCATE(s%XTI_STD (0))
147 ALLOCATE(s%XTI_SKEW(0))
160 WRITE(iluout,*)
'*****************************************' 161 WRITE(iluout,*)
'Comput Topographic indexes for TOPMODEL ' 162 WRITE(iluout,*)
'*****************************************' 167 ALLOCATE(s%XTI_MIN (klu))
168 ALLOCATE(s%XTI_MAX (klu))
169 ALLOCATE(s%XTI_MEAN(klu))
170 ALLOCATE(s%XTI_STD (klu))
171 ALLOCATE(s%XTI_SKEW(klu))
186 WRITE(iluout,*)
'PGD_TOPO_INDEX: Wrong dimension of MASK: ',i_dim,klu
187 CALL abor1_sfx(
'PGD_TOPO_INDEX: WRONG DIMENSION OF MASK')
193 'NATURE',klu,imask,ifull,iluout)
195 WRITE(iluout,*)
'PGD_TOPO_INDEX: Wrong dimension of FULL: ',ifull,
nl 196 CALL abor1_sfx(
'PGD_TOPO_INDEX: WRONG DIMENSION OF FULL')
218 yfiletype=hctifiletype
219 IF(hctifiletype==
'NETCDF')
THEN 220 CALL abor1_sfx(
'Use another format than netcdf for cti input file with LIMP_CTI' 223 cfilein = adjustl(adjustr(hcti)//
'.txt')
232 yfiletype,
'FULL ',
'SURF ',
'READ ')
252 ALLOCATE(
xall(u%NDIM_FULL,3,1))
263 ysubroutine =
'A_CTI ' 265 hprogram,yscheme,hctifiletype,ysubroutine,hcti,yfield
281 WHERE(u%XNATURE(:)>0.0.AND.
xskew_work(:)<=-8.0)
290 WHERE(u%XNATURE(:)==0.)
304 IF(hctifiletype==
'DIRECT')
THEN 309 CALL ctireg(lreg,lreg10,lreg2)
315 WRITE(iluout,*)
'WITH DIF, TOPO INDEX USED REGRESSIONS OF ' 317 ALLOCATE(zdelta(ifull))
318 ALLOCATE(zmean_ini(ifull))
319 ALLOCATE(zti_mean(ifull))
320 ALLOCATE(zti_std(ifull))
321 ALLOCATE(zti_skew(ifull))
331 WRITE(iluout,*)
' PAN AND KING (2012) 1km to 10m ' 348 WRITE(iluout,*)
' PAN AND KING (2012) 10m to 2m ' 375 DEALLOCATE(zmean_ini)
376 DEALLOCATE(zti_mean )
378 DEALLOCATE(zti_skew )
389 WRITE(iluout,*)
'*********************************************' 390 WRITE(iluout,*)
'Interpolation if some index not initialized ' 391 WRITE(iluout,*)
'*********************************************' 394 CALL get_grid_coord(ug%G%CGRID, ug%G%NGRID_PAR, ug%G%XGRID_PAR, u%NSIZE_FULL
397 WHERE (u%XNATURE(:)==0..AND.
nsize(:,1)==0)
nsize(:,1) = -1
400 WHERE(u%XNATURE(:)>0..AND.zlat(:)<-60.)
441 WRITE(iluout,*)
'******************************' 442 WRITE(iluout,*)
'End Comput Topographic indexes' 443 WRITE(iluout,*)
'******************************' 447 IF (
lhook)
CALL dr_hook(
'PGD_TOPO_INDEX',1,zhook_handle)
452 SUBROUTINE ctireg(OREG,OREG10,OREG2)
457 USE modi_open_namelist
458 USE modi_close_namelist
468 LOGICAL,
INTENT(OUT) :: OREG,OREG10,OREG2
480 CHARACTER(LEN=28) :: YFILEHDR
490 REAL,
DIMENSION(7) :: ZVAL
492 CHARACTER(LEN=100) :: YSTRING
493 CHARACTER(LEN=100) :: YSTRING1
494 CHARACTER(LEN=100) :: YVAL
497 INTEGER :: IFRACLENGTH
498 CHARACTER(LEN=2) :: YLENGTH
499 CHARACTER(LEN=2) :: YFRACLENGTH
500 CHARACTER(LEN=10) :: YINTERNALFORMAT
502 REAL :: Z1000M, Z100M, Z10M
504 REAL(KIND=JPRB) :: ZHOOK_HANDLE
508 IF (
lhook)
CALL dr_hook(
'PGD_TOPO_INDEX:CTIREG',0,zhook_handle)
515 yfilehdr =adjustl(adjustr(hcti)//
'.hdr')
521 READ (iglb,
'(A100)',end=99) ystring
529 READ (iglb,
'(A100)',end=99) ystring
530 ystring=adjustl(ystring)
535 SELECT CASE (ystring(1:5))
538 ystring1=ystring(10:100)
541 ystring1=ystring(8:100)
544 ystring1=ystring(7:100)
547 ystring1=ystring(7:100)
550 ystring1=ystring(6:100)
553 ystring1=ystring(6:100)
556 ystring1=ystring(6:100)
559 ystring1=ystring(6:100)
565 inindex=
index(ystring1,
'N')
566 isindex=
index(ystring1,
'S')
567 ieindex=
index(ystring1,
'E')
568 iwindex=
index(ystring1,
'W')
569 yval=adjustl(ystring1)
570 IF (inindex/=0) yval=adjustl(ystring1(1:inindex-1))
571 IF (isindex/=0) yval=
'-'//adjustl(ystring1(1:isindex-1))
572 IF (ieindex/=0) yval=adjustl(ystring1(1:ieindex-1))
573 IF (iwindex/=0) yval=
'-'//adjustl(ystring1(1:iwindex-1))
578 ipoint=
index(yval,
'.')
579 IF (ipoint==0) yval=adjustl(adjustr(yval)//
'.')
584 ilength=len_trim(adjustl(adjustr(yval)))
585 ifraclength=ilength-
index(yval,
'.')
586 WRITE(ylength,
'(I2)') ilength
587 WRITE(yfraclength,
'(I2)') ifraclength
588 yinternalformat=
'(F'//ylength//
'.'//yfraclength//
')' 593 READ(yval,adjustl(yinternalformat)) zval(ihead)
605 zglblonmax=zval(4)+nint((zval(5)-zval(4)+180.+1.e-10)/360.)*360.
609 zdlat=(zglblatmax-zglblatmin)/inblat
610 zdlon=(zglblonmax-zglblonmin)/inblon
616 IF(sqrt(zdlat*zdlon)>z100m)
THEN 622 IF(sqrt(zdlat*zdlon)>=z10m.AND.sqrt(zdlat*zdlon)<=z100m)
THEN 630 IF (
lhook)
CALL dr_hook(
'PGD_TOPO_INDEX:CTIREG',1,zhook_handle)
633 CALL abor1_sfx(
'CTIREG: PB READING TOPO INDEX FILE HEADER')
634 IF (
lhook)
CALL dr_hook(
'PGD_TOPO_INDEX:CTIREG',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine pgd_topo_index(DTCO, UG, U, USS, S, OCTI, HPROGRAM, KLU, HCTI, HCTIFILETYPE, OIMP_CTI
integer, dimension(:,:), allocatable nsize_all
subroutine ctireg(OREG, OREG10, OREG2)
real, dimension(:,:,:), allocatable xall
real, dimension(:), allocatable xmax_work
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
real, dimension(:,:), allocatable xsumval
subroutine get_grid_coord(HGRID_IN, KGRID_PAR_IN, PGRID_PAR_IN, K
subroutine close_namelist(HPROGRAM, KLUNAM)
real, dimension(:), allocatable xmean_work
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
real, dimension(:), allocatable xskew_work
integer, dimension(:,:), allocatable nsize
real, dimension(:,:), allocatable xext_all
real, dimension(:), allocatable xmin_work
subroutine treat_field(UG, U, USS, HPROGRAM, HSCHEME, HFILETYPE, HSUBROUTINE, HFILENAME, HFIELD, PPGDARRAY)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
character(len=28), save cfilein
character(len=28), save cfilein_fa
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION
subroutine interpol_field(UG, U, HPROGRAM, KLUOUT, KCODE, PFIELD, HFIELD, PDE
real, dimension(:), allocatable xstd_work
character(len=28), save cfilein_lfi