11 USE yomhook
,ONLY : lhook, dr_hook
12 USE parkind1
,ONLY : jprb
24 INTEGER,
INTENT(IN) :: kluout
25 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
26 REAL,
DIMENSION(:),
POINTER :: pmask
29 REAL,
DIMENSION(:),
POINTER :: zfield
30 REAL(KIND=JPRB) :: zhook_handle
33 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_LAND_MASK',0,zhook_handle)
34 WRITE (kluout,
'(A)')
' | Reading land mask'
35 SELECT CASE (hinmodel)
37 ALLOCATE (zfield(nni))
41 CALL
abor1_sfx(
'MODE_READ_BUFFER: LAND SEA MASK MISSING')
51 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_LAND_MASK',1,zhook_handle)
65 INTEGER,
INTENT(IN) :: kluout
66 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
67 REAL,
DIMENSION(:),
POINTER :: pfield
70 REAL(KIND=JPRB) :: zhook_handle
75 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS_LAND',0,zhook_handle)
76 WRITE (kluout,
'(A)')
' | Reading land orography'
77 SELECT CASE (hinmodel)
79 ALLOCATE (pfield(nni))
84 CALL
abor1_sfx(
'MODE_READ_BUFFER: LAND OROGRAPHY MISSING')
89 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS_LAND',1,zhook_handle)
104 INTEGER,
INTENT(IN) :: kluout
105 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
106 REAL,
DIMENSION(:),
POINTER :: pfield
109 REAL(KIND=JPRB) :: zhook_handle
114 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS_SEA',0,zhook_handle)
115 WRITE (kluout,
'(A)')
' | Reading sea orography in buffer'
116 SELECT CASE (hinmodel)
118 ALLOCATE (pfield(nni))
123 CALL
abor1_sfx(
'MODE_READ_BUFFER: SEA OROGRAPHY MISSING')
128 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS_SEA',1,zhook_handle)
144 INTEGER,
INTENT(IN) :: kluout
145 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
146 REAL,
DIMENSION(:),
POINTER :: pfield
149 REAL(KIND=JPRB) :: zhook_handle
154 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS',0,zhook_handle)
155 WRITE (kluout,
'(A)')
' | Reading orography'
156 SELECT CASE (hinmodel)
158 ALLOCATE (pfield(nni))
163 CALL
abor1_sfx(
'MODE_READ_BUFFER: OROGRAPHY MISSING')
168 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_ZS',1,zhook_handle)
181 INTEGER,
INTENT(IN) :: kluout
182 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
183 REAL,
DIMENSION(:),
POINTER :: pfield
186 REAL(KIND=JPRB) :: zhook_handle
191 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TS',0,zhook_handle)
192 WRITE (kluout,
'(A)')
' | Reading surface temperature'
194 SELECT CASE (hinmodel)
196 ALLOCATE (pfield(nni))
200 CALL
abor1_sfx(
'MODE_READ_BUFFER: SURFACE TEMPERATURE MISSING')
202 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TS',1,zhook_handle)
216 INTEGER,
INTENT(IN) :: kluout
217 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
218 REAL,
DIMENSION(:),
POINTER :: pfield
221 REAL(KIND=JPRB) :: zhook_handle
226 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SST',0,zhook_handle)
227 WRITE (kluout,
'(A)')
' | Reading sea surface temperature'
229 SELECT CASE (hinmodel)
231 ALLOCATE (pfield(nni))
237 CALL
abor1_sfx(
'MODE_READ_BUFFER: SEA SURFACE TEMPERATURE MISSING')
239 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SST',1,zhook_handle)
253 INTEGER,
INTENT(IN) :: kluout
254 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
255 REAL,
DIMENSION(:),
POINTER :: pfield
258 REAL(KIND=JPRB) :: zhook_handle
263 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_T2',0,zhook_handle)
264 WRITE (kluout,
'(A)')
' | Reading deep soil temperature'
266 SELECT CASE (hinmodel)
269 ALLOCATE (pfield(nni))
274 CALL
abor1_sfx(
'MODE_READ_BUFFER: DEEP SOIL TEMPERATURE MISSING')
276 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_T2',1,zhook_handle)
318 INTEGER,
INTENT(IN) :: kluout
319 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
320 REAL,
DIMENSION(:,:),
POINTER :: pfield
321 REAL,
DIMENSION(:,:),
POINTER :: pd
329 REAL,
DIMENSION(:),
POINTER :: zfield
330 REAL,
DIMENSION(:,:),
ALLOCATABLE:: zwg
331 REAL,
DIMENSION(:),
ALLOCATABLE:: zclay
332 REAL,
DIMENSION(:),
ALLOCATABLE:: zsand
333 REAL,
DIMENSION(:),
ALLOCATABLE:: zwwilt
334 REAL,
DIMENSION(:),
ALLOCATABLE:: zwfc
335 REAL,
DIMENSION(:),
ALLOCATABLE:: zwsat
336 REAL(KIND=JPRB) :: zhook_handle
344 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_WG',0,zhook_handle)
345 ALLOCATE (zfield(nni))
353 WRITE (kluout,
'(A)')
' | The soil model is ISBA'
354 ALLOCATE (zclay(nni))
355 zclay(:) = zfield(:) / 100.
364 ALLOCATE (zfield(nni))
370 CALL
abor1_sfx(
'MODE_READ_BUFFER: (WG) SAND FRACTION MISSING')
372 ALLOCATE (zsand(nni))
373 zsand(:) = zfield(:) / 100.
383 ALLOCATE (zfield(nni))
386 CALL
abor1_sfx(
'MODE_READ_BUFFER: SOIL MOISTURE LEVEL 1 MISSING')
398 ALLOCATE (zfield(nni))
401 CALL
abor1_sfx(
'MODE_READ_BUFFER: SOIL MOISTURE LEVEL 2 MISSING')
416 ALLOCATE (zfield(nni))
419 CALL
abor1_sfx(
'MODE_READ_BUFFER: LEVEL 2 DEPTH MISSING')
427 zwg(:,1) = zwg(:,1) / 10.
428 zwg(:,2) = zwg(:,2) /(1000. * zfield(:))
442 ALLOCATE(pfield(nni,3))
448 ALLOCATE (zwwilt(nni))
449 ALLOCATE (zwsat(nni))
451 zwsat(:) = (-1.08*100. * zsand(:) + 494.305) * 0.001
452 zwwilt(:) = 37.1342e-3 * sqrt( 100. * zclay(:) )
453 zwfc(:) = 89.0467e-3 * (100. * zclay(:) )**0.3496
458 zwg(:,1) = max(min(zwg(:,1),zwsat),0.)
459 zwg(:,2) = max(min(zwg(:,2),zwsat),0.)
461 pfield(:,1) = (zwg(:,1) - zwwilt) / (zwfc - zwwilt)
462 pfield(:,2) = (zwg(:,2) - zwwilt) / (zwfc - zwwilt)
463 pfield(:,3) = pfield(:,2)
469 pfield(:,1) = zwg(:,1) / 20.
470 pfield(:,2) = (zwg(:,1)+zwg(:,2)) / (20. + 100.)
471 pfield(:,3) = pfield(:,2)
475 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_WG',1,zhook_handle)
520 INTEGER,
INTENT(IN) :: kluout
521 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
522 REAL,
DIMENSION(:,:),
POINTER :: pfield
523 REAL,
DIMENSION(:,:),
POINTER :: pd
531 REAL,
DIMENSION(:),
POINTER :: zfield
532 REAL,
DIMENSION(:,:),
ALLOCATABLE:: zwgi
533 REAL,
DIMENSION(:),
ALLOCATABLE:: zclay
534 REAL,
DIMENSION(:),
ALLOCATABLE:: zsand
535 REAL,
DIMENSION(:),
ALLOCATABLE:: zwwilt
536 REAL,
DIMENSION(:),
ALLOCATABLE:: zwfc
537 REAL,
DIMENSION(:),
ALLOCATABLE:: zwsat
538 REAL(KIND=JPRB) :: zhook_handle
545 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_WGI',0,zhook_handle)
546 ALLOCATE (zfield(nni))
554 WRITE (kluout,
'(A)')
' | The soil model is ISBA'
555 ALLOCATE (zclay(nni))
556 zclay(:) = zfield(:) / 100.
565 ALLOCATE (zfield(nni))
571 CALL
abor1_sfx(
'MODE_READ_BUFFER: (WGI) SAND FRACTION MISSING')
573 ALLOCATE (zsand(nni))
574 zsand(:) = zfield(:) / 100.
584 ALLOCATE(zwgi(nni,2))
591 ALLOCATE (zfield(nni))
594 WRITE (kluout,
'(A)')
' -> Soil ice level 1 is present'
595 zwgi(:,1) = zfield(:)
607 ALLOCATE (zfield(nni))
610 WRITE (kluout,
'(A)')
' -> Soil ice level 2 is present'
611 zwgi(:,2) = zfield(:)
626 ALLOCATE (zfield(nni))
629 CALL
abor1_sfx(
'MODE_READ_BUFFER: LEVEL 2 DEPTH FOR ICE MISSING')
637 zwgi(:,1) = zwgi(:,1) / 10.
638 zwgi(:,2) = zwgi(:,2) /(1000. * zfield(:))
652 ALLOCATE(pfield(nni,3))
658 ALLOCATE (zwwilt(nni))
659 ALLOCATE (zwsat(nni))
661 zwsat(:) = (-1.08*100. * zsand(:) + 494.305) * 0.001
662 zwwilt(:) = 37.1342e-3 * sqrt( 100. * zclay(:) )
663 zwfc(:) = 89.0467e-3 * (100. * zclay(:) )**0.3496
668 zwgi(:,1) = max(min(zwgi(:,1),zwsat),0.)
669 zwgi(:,2) = max(min(zwgi(:,2),zwsat),0.)
671 pfield(:,1) = zwgi(:,1) / zwsat
672 pfield(:,2) = zwgi(:,2) / zwsat
673 pfield(:,3) = pfield(:,2)
685 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_WGI',1,zhook_handle)
708 INTEGER,
INTENT(IN) :: kluout
709 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
710 REAL,
DIMENSION(:,:),
POINTER :: pfield
711 REAL,
DIMENSION(:,:),
POINTER :: pd
717 REAL,
DIMENSION(:),
POINTER :: zfield
718 REAL(KIND=JPRB) :: zhook_handle
722 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TG',0,zhook_handle)
723 WRITE (kluout,
'(A)')
' | Reading soil temperature'
730 ALLOCATE(pfield(nni,3))
738 ALLOCATE (zfield(nni))
741 pfield(:,1) = zfield(:)
750 ALLOCATE (zfield(nni))
753 pfield(:,2) = zfield(:)
762 pfield(:,3) = pfield(:,2)
764 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TG',1,zhook_handle)
789 INTEGER,
INTENT(IN) :: kluout
790 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
791 REAL,
DIMENSION(:),
POINTER :: pfield
798 REAL(KIND=JPRB) :: zhook_handle
803 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SNOW_VEG_DEPTH',0,zhook_handle)
804 WRITE (kluout,
'(A)')
' | Reading snow depth'
811 ALLOCATE(pfield(nni))
822 pfield = pfield / xrhosmax
823 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SNOW_VEG_DEPTH',1,zhook_handle)
848 INTEGER,
INTENT(IN) :: kluout
849 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
850 REAL,
DIMENSION(:),
POINTER :: pfield
857 REAL(KIND=JPRB) :: zhook_handle
862 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SNOW_VEG',0,zhook_handle)
863 WRITE (kluout,
'(A)')
' | Reading snow content (kg/m2)'
870 ALLOCATE(pfield(nni))
878 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_SNOW_VEG',1,zhook_handle)
901 INTEGER,
INTENT(IN) :: kluout
902 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
903 REAL,
INTENT(IN) :: pti
904 REAL,
DIMENSION(:,:),
POINTER :: pfield
905 REAL,
DIMENSION(:,:),
POINTER :: pd
911 REAL,
DIMENSION(:),
POINTER :: zfield
912 REAL(KIND=JPRB) :: zhook_handle
916 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_T_TEB',0,zhook_handle)
917 WRITE (kluout,
'(A)')
' | Reading temperature for buildings'
924 ALLOCATE(pfield(nni,3))
932 ALLOCATE (zfield(nni))
935 pfield(:,1) = zfield(:)
954 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_T_TEB',1,zhook_handle)
977 INTEGER,
INTENT(IN) :: kluout
978 CHARACTER(LEN=6),
INTENT(IN) :: hinmodel
979 REAL,
INTENT(IN) :: pti
980 REAL,
DIMENSION(:,:),
POINTER :: pfield
981 REAL,
DIMENSION(:,:),
POINTER :: pd
987 REAL,
DIMENSION(:),
POINTER :: zfield
988 REAL(KIND=JPRB) :: zhook_handle
992 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TF_TEB',0,zhook_handle)
993 WRITE (kluout,
'(A)')
' | Reading soil temperature'
1000 ALLOCATE(pfield(nni,3))
1008 ALLOCATE (zfield(nni))
1019 ALLOCATE (zfield(nni))
1022 pfield(:,2) = zfield(:)
1031 pfield(:,3) = pfield(:,2)
1035 IF (lhook) CALL dr_hook(
'MODE_READ_BUFFER:READ_BUFFER_TF_TEB',1,zhook_handle)
subroutine read_buffer_wgi(KLUOUT, HINMODEL, PFIELD, PD)
subroutine read_buffer_tg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine read_buffer_snow_veg_depth(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_land_mask(KLUOUT, HINMODEL, PMASK)
subroutine read_buffer_ts(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_t_teb(KLUOUT, HINMODEL, PTI, PFIELD, PD)
subroutine read_buffer_sst(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_wg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine abor1_sfx(YTEXT)
subroutine read_buffer_snow_veg(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_tf_teb(KLUOUT, HINMODEL, PTI, PFIELD, PD)
subroutine read_buffer_t2(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_zs_sea(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_zs_land(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_zs(KLUOUT, HINMODEL, PFIELD)