7 USE yomhook
,ONLY : lhook, dr_hook
8 USE parkind1
,ONLY : jprb
40 INTEGER,
INTENT (IN) :: kyear, kmonth, kday, khour
41 CHARACTER(LEN=50) :: ymonth,yday,yyear,yhour
42 CHARACTER(LEN=200),
INTENT(INOUT) :: hmfile
43 REAL(KIND=JPRB) :: zhook_handle
45 IF (lhook) CALL dr_hook(
'MODE_EKF:GET_FILE_NAME',0,zhook_handle)
51 IF (khour.EQ.0 .OR. khour.EQ.24 .OR. khour.EQ.48) yhour=
'00'
53 hmfile = trim(hmfile)//yyear(3:4)
54 hmfile = trim(hmfile)//ymonth
55 hmfile = trim(hmfile)//yday
56 hmfile = trim(hmfile)//
'H'
57 hmfile = trim(hmfile)//yhour
60 IF (lhook) CALL dr_hook(
'MODE_EKF:GET_FILE_NAME',1,zhook_handle)
66 haction,hfile,ptab,ptab_in)
76 TYPE(isba_t
),
INTENT(INOUT) :: i
78 CHARACTER(LEN=4),
INTENT(IN) :: haction
79 CHARACTER(LEN=*),
INTENT(IN) :: hfile
80 REAL,
DIMENSION(:,:,:),
INTENT(INOUT) :: ptab
81 REAL,
DIMENSION(:),
INTENT(IN),
OPTIONAL :: ptab_in
82 INTEGER :: ji,jj,jk,jl,jjj,l1,k1
86 REAL(KIND=JPRB) :: zhook_handle
88 IF (lhook) CALL dr_hook(
'MODE_EKF:B_BIG_LOOP',0,zhook_handle)
90 IF (haction==
"READ" .OR. haction==
"WRIT")
THEN
91 OPEN (unit=111,file=hfile,form=
'UNFORMATTED',access=
'SEQUENTIAL',iostat=istat)
104 l1 = jj+i%NPATCH*(jl-1)
105 k1 = jjj+i%NPATCH*(jk-1)
107 IF ( haction==
"READ" )
THEN
108 READ (111) ptab(ji,l1,k1)
109 ELSEIF ( haction==
"WRIT" )
THEN
110 WRITE(111) ptab(ji,l1,k1)
113 ptab(ji,l1,k1) = ptab_in(icpt)
122 IF (haction==
"READ" .OR. haction==
"WRIT")
CLOSE(111)
124 IF (lhook) CALL dr_hook(
'MODE_EKF:B_BIG_LOOP',1,zhook_handle)
137 INTEGER,
INTENT(IN) :: kn
138 REAL,
DIMENSION (KN,KN),
INTENT(INOUT) :: pa
139 REAL,
DIMENSION (KN),
INTENT(IN) :: pp
141 INTEGER :: ji, jj, jk
142 REAL(KIND=JPRB) :: zhook_handle
144 IF (lhook) CALL dr_hook(
'MODE_EKF:INVERSE_MATRIX',0,zhook_handle)
151 zsum = zsum - pa(jj,jk)*pa(jk,ji)
153 pa(jj,ji) = zsum/pp(jj)
163 pa = matmul(transpose(pa),pa)
165 IF (lhook) CALL dr_hook(
'MODE_EKF:INVERSE_MATRIX',1,zhook_handle)
177 INTEGER,
INTENT(IN) :: kn
178 REAL,
DIMENSION(KN,KN),
INTENT(INOUT) :: pa
179 REAL,
DIMENSION(KN),
INTENT(OUT) :: pp
182 REAL(KIND=JPRB) :: zhook_handle
184 IF (lhook) CALL dr_hook(
'MODE_EKF:CHOLDC',0,zhook_handle)
187 zsum = pa(ji,ji)- dot_product(pa(ji,1:ji-1),pa(ji,1:ji-1))
188 IF ( zsum<=0.0 ) CALL
abor1_sfx(
'MODE_EKF: ERROR IN CHOLDC')
190 pa(ji+1:kn,ji) = ( pa(ji,ji+1:kn) - matmul(pa(ji+1:kn,1:ji-1),pa(ji,1:ji-1)) )/pp(ji)
193 IF (lhook) CALL dr_hook(
'MODE_EKF:CHOLDC',1,zhook_handle)
203 INTEGER,
INTENT(IN) :: kn
204 REAL,
DIMENSION (KN,KN),
INTENT(IN) :: pa
205 REAL,
DIMENSION (KN),
INTENT(IN) :: pp,pb
206 REAL,
DIMENSION (KN),
INTENT(INOUT) :: px
208 REAL(KIND=JPRB) :: zhook_handle
210 IF (lhook) CALL dr_hook(
'MODE_EKF:CHOLSL',0,zhook_handle)
213 px(ji) = (pb(ji) - dot_product(pa(ji,1:ji-1),px(1:ji-1)))/pp(ji)
216 px(ji) = (px(ji) - dot_product(pa(ji+1:kn,ji),px(ji+1:kn)))/pp(ji)
219 IF (lhook) CALL dr_hook(
'MODE_EKF:CHOLSL',1,zhook_handle)
226 REAL,
DIMENSION(:),
INTENT(IN) :: pclay
227 REAL,
DIMENSION(:),
INTENT(OUT) :: pcofswi
228 REAL(KIND=JPRB) :: zhook_handle
230 IF (lhook) CALL dr_hook(
'MODE_EKF:COFSWI',0,zhook_handle)
232 pcofswi(:) = 0.001 * (89.0467 * ((100.*pclay(:))**0.3496) - 37.1342*((100.*pclay(:))**0.5))
234 IF (lhook) CALL dr_hook(
'MODE_EKF:COFSWI',1,zhook_handle)
260 CHARACTER(LEN=*),
INTENT(IN) :: hfile
261 CHARACTER(LEN=28) :: yfilein
262 REAL(KIND=JPRB) :: zhook_handle
264 IF (lhook) CALL dr_hook(
'MODE_EKF:SET_FILEIN',0,zhook_handle)
266 IF ( csurf_filetype ==
"LFI " )
THEN
267 yfilein = trim(hfile)
269 cfilein_lfi = yfilein
271 cfilein_lfi_save = yfilein
273 ELSEIF ( csurf_filetype ==
"FA " )
THEN
274 yfilein = trim(hfile)//
'.fa'
277 cfilein_fa_save = yfilein
279 ELSEIF ( csurf_filetype ==
"ASCII " )
THEN
280 yfilein = trim(hfile)//
'.txt'
283 cfilein_save = yfilein
285 ELSEIF ( csurf_filetype ==
"NC " )
THEN
286 yfilein = trim(hfile)//
'.nc'
289 cfilein_nc_save = yfilein
292 CALL
abor1_sfx(trim(csurf_filetype)//
" is not implemented!")
295 IF (lhook) CALL dr_hook(
'MODE_EKF:SET_FILEIN',1,zhook_handle)
subroutine trans_chaine(HCHAINE, KENTIER, KOPTION)
subroutine abor1_sfx(YTEXT)