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)
780 USE modd_snow_par
, ONLY : xrhosmax
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)
839 USE modd_snow_par
, ONLY : xrhosmax
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_tg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine read_buffer_land_mask(KLUOUT, HINMODEL, PMASK)
subroutine read_buffer_t2(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_zs_sea(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_wgi(KLUOUT, HINMODEL, PFIELD, PD)
subroutine read_buffer_snow_veg_depth(KLUOUT, HINMODEL, PFIELD)
subroutine abor1_sfx(YTEXT)
subroutine read_buffer_zs(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_sst(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_ts(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_zs_land(KLUOUT, HINMODEL, PFIELD)
subroutine read_buffer_t_teb(KLUOUT, HINMODEL, PTI, PFIELD, PD)
subroutine read_buffer_wg(KLUOUT, HINMODEL, PFIELD, PD)
subroutine read_buffer_tf_teb(KLUOUT, HINMODEL, PTI, PFIELD, PD)
subroutine read_buffer_snow_veg(KLUOUT, HINMODEL, PFIELD)