47 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
50 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
51 CHARACTER(LEN=*),
INTENT(IN) :: HREC
52 REAL,
INTENT(OUT) :: PFIELD
53 INTEGER,
INTENT(OUT) :: KRESP
54 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
55 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
60 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
63 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
64 CHARACTER(LEN=*),
INTENT(IN) :: HREC
65 REAL,
DIMENSION(:),
INTENT(OUT) ::PFIELD
66 INTEGER,
INTENT(OUT) :: KRESP
67 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
68 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
75 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
78 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
79 CHARACTER(LEN=*),
INTENT(IN) :: HREC
80 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
81 INTEGER,
INTENT(OUT) :: KRESP
82 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
83 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
92 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
95 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
96 CHARACTER(LEN=*),
INTENT(IN) :: HREC
97 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PFIELD
98 INTEGER,
INTENT(OUT) :: KRESP
99 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
100 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
107 HPROGRAM,HREC,KFIELD,KRESP,HCOMMENT,HDIR)
110 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
111 CHARACTER(LEN=*),
INTENT(IN) :: HREC
112 INTEGER,
INTENT(OUT) :: KFIELD
113 INTEGER,
INTENT(OUT) :: KRESP
114 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
115 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
120 HPROGRAM,HREC,KFIELD,KRESP,HCOMMENT,HDIR)
123 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
124 CHARACTER(LEN=*),
INTENT(IN) :: HREC
125 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KFIELD
126 INTEGER,
INTENT(OUT) :: KRESP
127 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
128 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
135 HPROGRAM,HREC,HFIELD,KRESP,HCOMMENT,HDIR)
138 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
139 CHARACTER(LEN=*),
INTENT(IN) :: HREC
140 CHARACTER(LEN=*),
INTENT(OUT) :: HFIELD
141 INTEGER,
INTENT(OUT) :: KRESP
142 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
143 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
148 HPROGRAM,HREC,OFIELD,KRESP,HCOMMENT,HDIR)
151 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
152 CHARACTER(LEN=*),
INTENT(IN) :: HREC
153 LOGICAL,
INTENT(OUT) :: OFIELD
154 INTEGER,
INTENT(OUT) :: KRESP
155 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
156 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
161 HPROGRAM,HREC,OFIELD,KRESP,HCOMMENT,HDIR)
164 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
165 CHARACTER(LEN=*),
INTENT(IN) :: HREC
166 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: OFIELD
167 INTEGER,
INTENT(OUT) :: KRESP
168 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
169 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
176 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
181 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
182 CHARACTER(LEN=*),
INTENT(IN) :: HREC
184 INTEGER,
INTENT(OUT) :: KRESP
185 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
186 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
191 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
196 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
197 CHARACTER(LEN=*),
INTENT(IN) :: HREC
198 type(
date_time),
DIMENSION(:),
INTENT(INOUT) :: tfield
199 INTEGER,
INTENT(OUT) :: KRESP
200 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
201 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
206 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
211 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
212 CHARACTER(LEN=*),
INTENT(IN) ::HREC
213 type(
date_time),
DIMENSION(:,:),
INTENT(INOUT)::tfield
214 INTEGER,
INTENT(OUT) :: KRESP
215 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
216 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
226 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
253 USE modi_read_surfx0_mnh
256 USE modi_read_surfx0_aro
268 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
269 CHARACTER(LEN=*),
INTENT(IN) :: HREC
270 REAL,
INTENT(OUT) :: PFIELD
271 INTEGER,
INTENT(OUT) :: KRESP
272 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
273 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
277 CHARACTER(LEN=100) :: YCOMMENT
278 CHARACTER(LEN=16) :: YREC
279 CHARACTER(LEN=1) :: YDIR
283 REAL(KIND=JPRB) :: ZHOOK_HANDLE
285 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX0',0,zhook_handle)
292 IF (
PRESENT(hdir)) ydir = hdir
294 IF (hprogram==
'MESONH')
THEN 296 CALL read_surfx0_mnh(yrec,pfield,kresp,ycomment)
300 IF (hprogram==
'AROME ')
THEN 302 CALL read_surfx0_aro(yrec,pfield,kresp,ycomment)
306 IF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
307 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
308 hprogram==
'NC ')
THEN 316 IF (hprogram==
'OFFLIN')
THEN 320 ELSEIF (hprogram==
'LFI ')
THEN 324 ELSEIF (hprogram==
'ASCII ')
THEN 327 yrec,pfield,kresp,ycomment)
329 ELSEIF (hprogram==
'FA ')
THEN 332 yrec,pfield,kresp,ycomment)
334 ELSEIF (hprogram==
'NC ')
THEN 347 IF (ydir/=
'A' .AND.
nproc>1)
THEN 349 CALL mpi_bcast(pfield,kind(pfield)/4,mpi_real,
npio,
ncomm,infompi)
356 IF (
PRESENT(hcomment)) hcomment = ycomment
358 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX0',1,zhook_handle)
363 SUBROUTINE read_surfx1 (HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
373 USE modd_assim
, ONLY : lassim, lread_all, cassim_isba
391 USE modi_read_surfx1_mnh
394 USE modi_read_surfx1_aro
397 USE modi_get_iok_assim
404 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
407 CHARACTER(LEN=*),
INTENT(IN) :: HREC
408 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
409 INTEGER,
INTENT(OUT) :: KRESP
410 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
411 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
417 CHARACTER(LEN=100) :: YCOMMENT
418 CHARACTER(LEN=16) :: YREC
419 CHARACTER(LEN=1) :: YDIR
421 REAL(KIND=JPRB) :: ZHOOK_HANDLE
423 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',0,zhook_handle)
427 IF (
PRESENT(hdir)) ydir = hdir
431 IF (lassim .AND. cassim_isba/=
"OI " .AND. .NOT.lread_all)
THEN 433 CALL get_iok_assim(yrec,iok)
437 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',1,zhook_handle)
443 IF (hprogram==
'MESONH')
THEN 445 CALL read_surfx1_mnh(yrec,il,pfield,kresp,ycomment,ydir)
449 IF (hprogram==
'AROME ')
THEN 451 CALL read_surfx1_aro(yrec,il,pfield,kresp,ycomment,ydir)
455 IF (hprogram==
'OFFLIN')
THEN 461 IF (hprogram==
'LFI ')
THEN 467 IF (hprogram==
'NC ')
THEN 473 IF (hprogram==
'ASCII ')
THEN 476 yrec,pfield,kresp,ycomment,ydir)
480 IF (hprogram==
'FA ')
THEN 486 IF (
PRESENT(hcomment)) hcomment = ycomment
487 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',1,zhook_handle)
492 SUBROUTINE read_surfx2 (HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
502 USE modd_assim
, ONLY : lassim, lread_all, cassim_isba
520 USE modi_read_surfx2_mnh
523 USE modi_read_surfx2_aro
526 USE modi_get_iok_assim
533 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
536 CHARACTER(LEN=*),
INTENT(IN) :: HREC
537 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
538 INTEGER,
INTENT(OUT) :: KRESP
539 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
540 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
546 CHARACTER(LEN=100) :: YCOMMENT
547 CHARACTER(LEN=16) :: YREC
548 CHARACTER(LEN=1) :: YDIR
549 INTEGER :: IL1, IL2, IOK
550 REAL(KIND=JPRB) :: ZHOOK_HANDLE
552 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',0,zhook_handle)
556 IF (
PRESENT(hdir)) ydir = hdir
561 IF (lassim .AND. cassim_isba/=
"OI " .AND. .NOT.lread_all)
THEN 563 CALL get_iok_assim(yrec,iok)
567 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',1,zhook_handle)
573 IF (hprogram==
'MESONH')
THEN 575 CALL read_surfx2_mnh(yrec,il1,il2,pfield,kresp,ycomment,ydir)
579 IF (hprogram==
'AROME ')
THEN 581 CALL read_surfx2_aro(yrec,il1,il2,pfield,kresp,ycomment,ydir)
585 IF (hprogram==
'OFFLIN')
THEN 591 IF (hprogram==
'LFI ')
THEN 597 IF (hprogram==
'NC ')
THEN 603 IF (hprogram==
'ASCII ')
THEN 609 IF (hprogram==
'FA ')
THEN 615 IF (
PRESENT(hcomment)) hcomment = ycomment
616 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',1,zhook_handle)
622 HPROGRAM,HREC,PFIELD,KRESP,HCOMMENT,HDIR)
639 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
642 CHARACTER(LEN=*),
INTENT(IN) :: HREC
643 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PFIELD
644 INTEGER,
INTENT(OUT) :: KRESP
645 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
646 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
652 CHARACTER(LEN=100) :: YCOMMENT
653 CHARACTER(LEN=16) :: YREC
654 CHARACTER(LEN=1) :: YDIR
655 INTEGER :: IL1, IL2, IL3
656 REAL(KIND=JPRB) :: ZHOOK_HANDLE
658 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX3',0,zhook_handle)
662 IF (
PRESENT(hdir)) ydir = hdir
672 IF (hprogram==
'OFFLIN')
THEN 690 IF (
PRESENT(hcomment)) hcomment = ycomment
692 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFX3',1,zhook_handle)
698 HPROGRAM,HREC,KFIELD,KRESP,HCOMMENT,HDIR)
726 USE modi_read_surfn0_mnh
729 USE modi_read_surfn0_aro
742 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
743 CHARACTER(LEN=*),
INTENT(IN) :: HREC
744 INTEGER,
INTENT(OUT) :: KFIELD
745 INTEGER,
INTENT(OUT) :: KRESP
746 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
747 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
751 CHARACTER(LEN=100) :: YCOMMENT
752 CHARACTER(LEN=16) :: YREC
753 CHARACTER(LEN=1) :: YDIR
755 INTEGER,
DIMENSION(6) :: IDIMS
757 REAL(KIND=JPRB) :: ZHOOK_HANDLE
759 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFN0',0,zhook_handle)
766 IF (
PRESENT(hdir)) ydir = hdir
768 IF (hprogram==
'MESONH')
THEN 770 CALL read_surfn0_mnh(yrec,kfield,kresp,ycomment)
774 IF (hprogram==
'AROME ')
THEN 776 CALL read_surfn0_aro(yrec,kfield,kresp,ycomment)
780 IF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
781 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
782 hprogram==
'NC ' )
THEN 790 IF (hprogram==
'OFFLIN')
THEN 796 IF (hprogram==
'LFI ')
THEN 802 IF (hprogram==
'NC ')
THEN 808 IF (hprogram==
'ASCII ')
THEN 811 yrec,kfield,kresp,ycomment)
815 IF (hprogram==
'FA ')
THEN 818 yrec,kfield,kresp,ycomment)
829 IF (ydir/=
'A' .AND.
nproc>1)
THEN 831 CALL mpi_bcast(kfield,kind(kfield)/4,mpi_integer,
npio,
ncomm,infompi)
833 IF (hprogram==
'LFI '.AND.
trim(hrec)==
"DIM_FULL")
THEN 843 CALL mpi_bcast(idims,
SIZE(idims)*kind(idims)/4,mpi_integer,
npio,
ncomm,infompi)
860 IF (
PRESENT(hcomment)) hcomment = ycomment
863 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFN0',1,zhook_handle)
869 HPROGRAM,HREC,KFIELD,KRESP,HCOMMENT,HDIR)
894 USE modi_read_surfn1_mnh
897 USE modi_read_surfn1_aro
905 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
908 CHARACTER(LEN=*),
INTENT(IN) :: HREC
909 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KFIELD
910 INTEGER,
INTENT(OUT) :: KRESP
911 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
912 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
918 CHARACTER(LEN=100) :: YCOMMENT
919 CHARACTER(LEN=16) :: YREC
920 CHARACTER(LEN=1) :: YDIR
922 REAL(KIND=JPRB) :: ZHOOK_HANDLE
924 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFN1',0,zhook_handle)
928 IF (
PRESENT(hdir)) ydir = hdir
932 IF (hprogram==
'MESONH')
THEN 934 CALL read_surfn1_mnh(yrec,il,kfield,kresp,ycomment,ydir)
938 IF (hprogram==
'AROME ')
THEN 940 CALL read_surfn1_aro(yrec,il,kfield,kresp,ycomment,ydir)
944 IF (hprogram==
'OFFLIN')
THEN 950 IF (hprogram==
'LFI ')
THEN 956 IF (hprogram==
'NC ')
THEN 962 IF (hprogram==
'ASCII ')
THEN 965 yrec,kfield,kresp,ycomment,ydir)
969 IF (hprogram==
'FA ')
THEN 972 yrec,il,kfield,kresp,ycomment,ydir)
976 IF (
PRESENT(hcomment)) hcomment = ycomment
977 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFN1',1,zhook_handle)
983 HPROGRAM,HREC,HFIELD,KRESP,HCOMMENT,HDIR)
1010 USE modi_read_surfc0_mnh
1013 USE modi_read_surfc0_aro
1026 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1027 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1028 CHARACTER(LEN=*),
INTENT(OUT) :: HFIELD
1029 INTEGER,
INTENT(OUT) :: KRESP
1030 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1031 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1035 CHARACTER(LEN=40) :: YFIELD
1036 CHARACTER(LEN=100) :: YCOMMENT
1037 CHARACTER(LEN=16) :: YREC
1038 CHARACTER(LEN=1) :: YDIR
1041 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1043 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFC0',0,zhook_handle)
1050 IF (
PRESENT(hdir)) ydir = hdir
1052 IF (hprogram==
'MESONH')
THEN 1054 CALL read_surfc0_mnh(yrec,yfield,kresp,ycomment)
1057 ELSE IF (hprogram==
'AROME ')
THEN 1059 CALL read_surfc0_aro(yrec,yfield,kresp,ycomment)
1062 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1063 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1064 hprogram==
'NC ' )
THEN 1069 xtime0 = mpi_wtime()
1072 IF (hprogram==
'OFFLIN')
THEN 1076 ELSE IF (hprogram==
'LFI ')
THEN 1080 ELSE IF (hprogram==
'NC ')
THEN 1084 ELSE IF (hprogram==
'ASCII ')
THEN 1087 yrec,yfield,kresp,ycomment)
1089 ELSE IF (hprogram==
'FA ')
THEN 1092 yrec,yfield,kresp,ycomment)
1103 IF (ydir/=
'A' .AND.
nproc>1)
THEN 1104 xtime0 = mpi_wtime()
1105 CALL mpi_bcast(yfield,40,mpi_character,
npio,
ncomm,infompi)
1110 hfield = yfield(1:len(hfield))
1114 IF (
PRESENT(hcomment)) hcomment = ycomment
1116 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFC0',1,zhook_handle)
1122 HPROGRAM,HREC,OFIELD,KRESP,HCOMMENT,HDIR)
1149 USE modi_read_surfl0_mnh
1152 USE modi_read_surfl0_aro
1165 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1166 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1167 LOGICAL,
INTENT(OUT) :: OFIELD
1168 INTEGER,
INTENT(OUT) :: KRESP
1169 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1170 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1174 CHARACTER(LEN=100) :: YCOMMENT
1175 CHARACTER(LEN=16) :: YREC
1176 CHARACTER(LEN=1) :: YDIR
1179 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1181 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFL0',0,zhook_handle)
1188 IF (
PRESENT(hdir)) ydir = hdir
1190 IF (hprogram==
'MESONH')
THEN 1192 CALL read_surfl0_mnh(yrec,ofield,kresp,ycomment)
1194 ELSE IF (hprogram==
'AROME ')
THEN 1196 CALL read_surfl0_aro(yrec,ofield,kresp,ycomment)
1198 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1199 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1200 hprogram==
'NC ' )
THEN 1205 xtime0 = mpi_wtime()
1208 IF (hprogram==
'OFFLIN')
THEN 1212 ELSE IF (hprogram==
'LFI ')
THEN 1216 ELSE IF (hprogram==
'NC ')
THEN 1220 ELSE IF (hprogram==
'ASCII ')
THEN 1223 yrec,ofield,kresp,ycomment)
1225 ELSE IF (hprogram==
'FA ')
THEN 1228 yrec,ofield,kresp,ycomment)
1239 IF (ydir/=
'A' .AND.
nproc>1)
THEN 1240 xtime0 = mpi_wtime()
1241 CALL mpi_bcast(ofield,1,mpi_logical,
npio,
ncomm,infompi)
1248 IF (
PRESENT(hcomment)) hcomment = ycomment
1250 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFL0',1,zhook_handle)
1255 SUBROUTINE read_surfl1 (HPROGRAM,HREC,OFIELD,KRESP,HCOMMENT,HDIR)
1280 USE modi_read_surfl1_mnh
1283 USE modi_read_surfl1_aro
1290 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1293 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1294 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: OFIELD
1295 INTEGER,
INTENT(OUT) :: KRESP
1296 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1297 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1303 CHARACTER(LEN=100) :: YCOMMENT
1304 CHARACTER(LEN=16) :: YREC
1305 CHARACTER(LEN=1) :: YDIR
1308 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1310 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFL1',0,zhook_handle)
1314 IF (
PRESENT(hdir)) ydir = hdir
1318 IF (hprogram==
'MESONH')
THEN 1320 CALL read_surfl1_mnh(yrec,il,ofield,kresp,ycomment,ydir)
1322 ELSE IF (hprogram==
'AROME ')
THEN 1325 IF (yrec(1:2)==
"L_".AND.il==1)
THEN 1326 CALL read_surfl0_aro(yrec,gdata,kresp,ycomment)
1329 CALL read_surfl1_aro(yrec,il,ofield,kresp,ycomment,ydir)
1332 ELSE IF (hprogram==
'OFFLIN')
THEN 1336 ELSE IF (hprogram==
'LFI ')
THEN 1340 ELSE IF (hprogram==
'NC ')
THEN 1344 ELSE IF (hprogram==
'ASCII ')
THEN 1347 yrec,ofield,kresp,ycomment,ydir)
1349 ELSE IF (hprogram==
'FA ')
THEN 1352 yrec,il,ofield,kresp,ycomment,ydir)
1356 IF (
PRESENT(hcomment)) hcomment = ycomment
1357 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFL1',1,zhook_handle)
1363 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
1392 USE modi_read_surft0_mnh
1395 USE modi_read_surft0_aro
1410 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1411 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1414 TYPE(
date_time),
INTENT(INOUT) :: TFIELD
1415 INTEGER,
INTENT(OUT) :: KRESP
1416 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1417 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1421 CHARACTER(LEN=100) :: YCOMMENT
1423 INTEGER,
DIMENSION(3) :: IWORK
1424 CHARACTER(LEN=16) :: YREC
1425 CHARACTER(LEN=1) :: YDIR
1430 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1432 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT0',0,zhook_handle)
1439 IF (
PRESENT(hdir)) ydir = hdir
1441 IF (hprogram==
'MESONH')
THEN 1443 CALL read_surft0_mnh(yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1445 ELSE IF (hprogram==
'AROME ')
THEN 1447 CALL read_surft0_aro(yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1449 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1450 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1451 hprogram==
'NC ' )
THEN 1456 xtime0 = mpi_wtime()
1459 IF (hprogram==
'OFFLIN')
THEN 1461 CALL read_surft_ol(yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1463 ELSE IF (hprogram==
'LFI ')
THEN 1465 CALL read_surft_lfi(yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1467 ELSE IF (hprogram==
'NC ')
THEN 1469 CALL read_surft_nc(yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1471 ELSE IF (hprogram==
'ASCII ')
THEN 1474 yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1476 ELSE IF (hprogram==
'FA ')
THEN 1479 yrec,iwork(1),iwork(2),iwork(3),zwork,kresp,ycomment)
1490 IF (ydir/=
'A' .AND.
nproc>1)
THEN 1491 xtime0 = mpi_wtime()
1492 CALL mpi_bcast(iwork(1),kind(iwork)/4,mpi_integer,
npio,
ncomm,infompi)
1493 CALL mpi_bcast(iwork(2),kind(iwork)/4,mpi_integer,
npio,
ncomm,infompi)
1494 CALL mpi_bcast(iwork(3),kind(iwork)/4,mpi_integer,
npio,
ncomm,infompi)
1495 CALL mpi_bcast(zwork,kind(zwork)/4,mpi_real,
npio,
ncomm,infompi)
1502 IF (
PRESENT(hcomment)) hcomment = ycomment
1506 WRITE(iluout,*)
'-------' 1507 WRITE(iluout,*)
'WARNING' 1508 WRITE(iluout,*)
'-------' 1510 WRITE(iluout,*)
'Date is not present file' 1511 WRITE(iluout,*)
'Forcing value is kept' 1514 tfield%TDATE%YEAR = iwork(1)
1515 tfield%TDATE%MONTH = iwork(2)
1516 tfield%TDATE%DAY = iwork(3)
1520 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT0',1,zhook_handle)
1526 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
1549 USE modi_read_surft1_mnh
1552 USE modi_read_surft1_aro
1568 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1569 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1570 TYPE(
date_time),
DIMENSION(:),
INTENT(INOUT)::TFIELD
1571 INTEGER,
INTENT(OUT) :: KRESP
1572 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1573 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1577 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IWORK2
1578 REAL,
DIMENSION(:),
ALLOCATABLE :: ZWORK2
1579 CHARACTER(LEN=16) :: YREC
1580 CHARACTER(LEN=1) :: YDIR
1584 CHARACTER(LEN=100) :: YCOMMENT
1587 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1589 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT1',0,zhook_handle)
1591 il1 =
SIZE(tfield,1)
1597 IF (
PRESENT(hdir)) ydir = hdir
1599 ALLOCATE(iwork2(il1,3))
1600 ALLOCATE(zwork2(il1))
1602 IF (hprogram==
'MESONH')
THEN 1604 CALL read_surft1_mnh(yrec,il1,iwork2(:,1),iwork2(:,2),iwork2(:,3),zwork2,kresp,ycomment)
1606 ELSE IF (hprogram==
'AROME ')
THEN 1608 CALL read_surft1_aro(yrec,il1,iwork2(:,1),iwork2(:,2),iwork2(:,3),zwork2,kresp,ycomment)
1610 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1611 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1612 hprogram==
'NC ')
THEN 1617 xtime0 = mpi_wtime()
1620 IF (hprogram==
'OFFLIN')
THEN 1621 CALL abor1_sfx(
'READ_SURFT1: NOT AVAILABLE FOR OFFLIN')
1622 ELSE IF (hprogram==
'FA ')
THEN 1623 CALL abor1_sfx(
'READ_SURFT1: NOT AVAILABLE FOR FA')
1624 ELSE IF (hprogram==
'ASCII ')
THEN 1627 yrec,iwork2(:,1),iwork2(:,2),iwork2(:,3),zwork2,kresp,ycomment)
1629 ELSE IF (hprogram==
'LFI ')
THEN 1631 CALL read_surft_lfi(yrec,iwork2(:,1),iwork2(:,2),iwork2(:,3),zwork2,kresp,ycomment)
1633 ELSE IF (hprogram==
'NC ')
THEN 1635 CALL read_surft_nc(yrec,iwork2(:,1),iwork2(:,2),iwork2(:,3),zwork2,kresp,ycomment)
1646 IF (ydir/=
'A' .AND.
nproc>1)
THEN 1647 xtime0 = mpi_wtime()
1648 CALL mpi_bcast(iwork2(:,1),il1*kind(iwork2)/4,mpi_integer,
npio,
ncomm,infompi)
1649 CALL mpi_bcast(iwork2(:,2),il1*kind(iwork2)/4,mpi_integer,
npio,
ncomm,infompi)
1650 CALL mpi_bcast(iwork2(:,3),il1*kind(iwork2)/4,mpi_integer,
npio,
ncomm,infompi)
1651 CALL mpi_bcast(zwork2,il1*kind(zwork2)/4,mpi_real,
npio,
ncomm,infompi)
1658 IF (
PRESENT(hcomment)) hcomment = ycomment
1662 WRITE(iluout,*)
'-------' 1663 WRITE(iluout,*)
'WARNING' 1664 WRITE(iluout,*)
'-------' 1666 WRITE(iluout,*)
'Date is not present file' 1667 WRITE(iluout,*)
'Forcing value is kept' 1670 tfield(:)%TDATE%YEAR = iwork2(:,1)
1671 tfield(:)%TDATE%MONTH = iwork2(:,2)
1672 tfield(:)%TDATE%DAY = iwork2(:,3)
1673 tfield(:)%TIME = zwork2(:)
1679 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT1',1,zhook_handle)
1685 HPROGRAM,HREC,TFIELD,KRESP,HCOMMENT,HDIR)
1722 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
1723 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1724 TYPE(
date_time),
DIMENSION(:,:),
INTENT(INOUT) :: TFIELD
1725 INTEGER,
INTENT(OUT) :: KRESP
1726 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: HCOMMENT
1727 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: HDIR
1731 INTEGER,
DIMENSION(:,:,:),
ALLOCATABLE :: IWORK3
1732 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK3
1733 CHARACTER(LEN=16) :: YREC
1734 CHARACTER(LEN=1) :: YDIR
1738 CHARACTER(LEN=100) :: YCOMMENT
1741 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1743 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT2',0,zhook_handle)
1750 IF (
PRESENT(hdir)) ydir = hdir
1752 il1 =
SIZE(tfield,1)
1753 il2 =
SIZE(tfield,2)
1755 ALLOCATE(zwork3(il1,il2))
1756 ALLOCATE(iwork3(il1,il2,3))
1758 IF (hprogram==
'MESONH')
THEN 1759 CALL abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR MESONH')
1760 ELSE IF (hprogram==
'AROME ')
THEN 1761 CALL abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR AROME')
1762 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1763 hprogram==
'FA ' .OR. hprogram==
'LFI ' )
THEN 1768 xtime0 = mpi_wtime()
1771 IF (hprogram==
'OFFLIN')
THEN 1772 CALL abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR OFFLIN')
1773 ELSE IF (hprogram==
'LFI ')
THEN 1775 CALL read_surft_lfi(yrec,iwork3(:,:,1),iwork3(:,:,2),iwork3(:,:,3),&
1776 zwork3,kresp,ycomment)
1778 ELSE IF (hprogram==
'ASCII ')
THEN 1781 yrec,iwork3(:,:,1),iwork3(:,:,2),iwork3(:,:,3),&
1782 zwork3,kresp,ycomment)
1784 ELSE IF (hprogram==
'FA ')
THEN 1787 yrec,il1,il2,iwork3(:,:,1),iwork3(:,:,2),iwork3(:,:,3),&
1788 zwork3,kresp,ycomment)
1790 ELSE IF (hprogram==
'NC ')
THEN 1792 CALL read_surft_nc(yrec,iwork3(:,:,1),iwork3(:,:,2),iwork3(:,:,3),&
1793 zwork3,kresp,ycomment)
1804 IF (ydir/=
'A' .AND.
nproc>1)
THEN 1805 xtime0 = mpi_wtime()
1806 CALL mpi_bcast(iwork3(:,:,1),il1*il2*kind(iwork3)/4,mpi_integer,
npio,
ncomm,infompi)
1807 CALL mpi_bcast(iwork3(:,:,2),il1*il2*kind(iwork3)/4,mpi_integer,
npio,
ncomm,infompi)
1808 CALL mpi_bcast(iwork3(:,:,3),il1*il2*kind(iwork3)/4,mpi_integer,
npio,
ncomm,infompi)
1809 CALL mpi_bcast(zwork3,il1*il2*kind(zwork3)/4,mpi_real,
npio,
ncomm,infompi)
1816 IF (
PRESENT(hcomment)) hcomment = ycomment
1820 WRITE(iluout,*)
'-------' 1821 WRITE(iluout,*)
'WARNING' 1822 WRITE(iluout,*)
'-------' 1824 WRITE(iluout,*)
'Date is not present file' 1825 WRITE(iluout,*)
'Forcing value is kept' 1828 tfield(:,:)%TDATE%YEAR = iwork3(:,:,1)
1829 tfield(:,:)%TDATE%MONTH = iwork3(:,:,2)
1830 tfield(:,:)%TDATE%DAY = iwork3(:,:,3)
1831 tfield(:,:)%TIME = zwork3(:,:)
1837 IF (
lhook)
CALL dr_hook(
'MODI_READ_SURF:READ_SURFT2',1,zhook_handle)
static const char * trim(const char *name, int *n)
subroutine read_surfx2(HPROGRAM, HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx1(HPROGRAM, HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx0(HPROGRAM, HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surft2(HPROGRAM, HREC, TFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfc0(HPROGRAM, HREC, HFIELD, KRESP, HCOMMENT, HDIR)
subroutine abor1_sfx(YTEXT)
subroutine read_surfn1(HPROGRAM, HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfn0(HPROGRAM, HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfl0(HPROGRAM, HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_surfl1(HPROGRAM, HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx3(HPROGRAM, HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surft1(HPROGRAM, HREC, TFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surft0(HPROGRAM, HREC, TFIELD, KRESP, HCOMMENT, HDIR)