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)
232 USE yomhook
,ONLY : lhook, dr_hook
233 USE parkind1
,ONLY : jprb
235 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
254 USE modi_read_surfx0_mnh
267 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
268 CHARACTER(LEN=*),
INTENT(IN) :: hrec
269 REAL,
INTENT(OUT) :: pfield
270 INTEGER,
INTENT(OUT) :: kresp
271 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
272 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
276 CHARACTER(LEN=16) :: yrec
277 CHARACTER(LEN=1) :: ydir
281 REAL(KIND=JPRB) :: zhook_handle
283 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,xwork0,nworkb,cworkb)
300 IF (hprogram==
'AROME ')
THEN
302 CALL read_surfx0_aro(yrec,xwork0,nworkb,cworkb)
306 IF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
307 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
308 hprogram==
'NC ')
THEN
310 IF (nrank==npio)
THEN
318 IF (hprogram==
'OFFLIN')
THEN
322 ELSEIF (hprogram==
'LFI ')
THEN
326 ELSEIF (hprogram==
'ASCII ')
THEN
329 yrec,xwork0,nworkb,cworkb)
331 ELSEIF (hprogram==
'FA ')
THEN
334 yrec,xwork0,nworkb,cworkb)
336 ELSEIF (hprogram==
'NC ')
THEN
345 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
351 IF (ydir/=
'A' .AND. nproc>1)
THEN
354 CALL mpi_bcast(xwork0,kind(xwork0)/4,mpi_real,npio,ncomm,infompi)
356 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
366 IF (present(hcomment)) hcomment = cworkb
370 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX0',1,zhook_handle)
376 hprogram,hrec,pfield,kresp,hcomment,hdir)
382 USE yomhook
,ONLY : lhook, dr_hook
383 USE parkind1
,ONLY : jprb
386 USE modd_assim, ONLY : lassim, lread_all, cassim_isba
404 USE modi_read_surfx1_mnh
407 USE modi_get_iok_assim
413 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
416 CHARACTER(LEN=*),
INTENT(IN) :: hrec
417 REAL,
DIMENSION(:),
INTENT(OUT) :: pfield
418 INTEGER,
INTENT(OUT) :: kresp
419 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
420 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
426 CHARACTER(LEN=100) :: ycomment
427 CHARACTER(LEN=16) :: yrec
428 CHARACTER(LEN=1) :: ydir
430 REAL(KIND=JPRB) :: zhook_handle
432 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',0,zhook_handle)
436 IF (present(hdir)) ydir = hdir
440 IF (lassim .AND. cassim_isba/=
"OI " .AND. .NOT.lread_all)
THEN
446 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',1,zhook_handle)
452 IF (hprogram==
'MESONH')
THEN
454 CALL read_surfx1_mnh(yrec,il,pfield,kresp,ycomment,ydir)
458 IF (hprogram==
'AROME ')
THEN
460 CALL read_surfx1_aro(yrec,il,pfield,kresp,ycomment,ydir)
464 IF (hprogram==
'OFFLIN')
THEN
470 IF (hprogram==
'LFI ')
THEN
476 IF (hprogram==
'NC ')
THEN
482 IF (hprogram==
'ASCII ')
THEN
485 yrec,pfield,kresp,ycomment,ydir)
489 IF (hprogram==
'FA ')
THEN
495 IF (present(hcomment)) hcomment = ycomment
496 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX1',1,zhook_handle)
502 hprogram,hrec,pfield,kresp,hcomment,hdir)
508 USE yomhook
,ONLY : lhook, dr_hook
509 USE parkind1
,ONLY : jprb
512 USE modd_assim, ONLY : lassim, lread_all, cassim_isba
530 USE modi_read_surfx2_mnh
533 USE modi_get_iok_assim
539 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
542 CHARACTER(LEN=*),
INTENT(IN) :: hrec
543 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pfield
544 INTEGER,
INTENT(OUT) :: kresp
545 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
546 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
552 CHARACTER(LEN=100) :: ycomment
553 CHARACTER(LEN=16) :: yrec
554 CHARACTER(LEN=1) :: ydir
555 INTEGER :: il1, il2, iok
556 REAL(KIND=JPRB) :: zhook_handle
558 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',0,zhook_handle)
562 IF (present(hdir)) ydir = hdir
567 IF (lassim .AND. cassim_isba/=
"OI " .AND. .NOT.lread_all)
THEN
573 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',1,zhook_handle)
579 IF (hprogram==
'MESONH')
THEN
581 CALL read_surfx2_mnh(yrec,il1,il2,pfield,kresp,ycomment,ydir)
585 IF (hprogram==
'AROME ')
THEN
587 CALL read_surfx2_aro(yrec,il1,il2,pfield,kresp,ycomment,ydir)
591 IF (hprogram==
'OFFLIN')
THEN
597 IF (hprogram==
'LFI ')
THEN
603 IF (hprogram==
'NC ')
THEN
609 IF (hprogram==
'ASCII ')
THEN
612 yrec,pfield,kresp,ycomment,ydir)
616 IF (hprogram==
'FA ')
THEN
622 IF (present(hcomment)) hcomment = ycomment
623 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX2',1,zhook_handle)
629 hprogram,hrec,pfield,kresp,hcomment,hdir)
635 USE yomhook
,ONLY : lhook, dr_hook
636 USE parkind1
,ONLY : jprb
646 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
649 CHARACTER(LEN=*),
INTENT(IN) :: hrec
650 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: pfield
651 INTEGER,
INTENT(OUT) :: kresp
652 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
653 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
659 CHARACTER(LEN=100) :: ycomment
660 CHARACTER(LEN=16) :: yrec
661 CHARACTER(LEN=1) :: ydir
662 INTEGER :: il1, il2, il3
663 REAL(KIND=JPRB) :: zhook_handle
665 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX3',0,zhook_handle)
669 IF (present(hdir)) ydir = hdir
679 IF (hprogram==
'OFFLIN')
THEN
697 IF (present(hcomment)) hcomment = ycomment
699 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFX3',1,zhook_handle)
705 hprogram,hrec,kfield,kresp,hcomment,hdir)
711 USE yomhook
,ONLY : lhook, dr_hook
712 USE parkind1
,ONLY : jprb
714 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
733 USE modi_read_surfn0_mnh
746 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
747 CHARACTER(LEN=*),
INTENT(IN) :: hrec
748 INTEGER,
INTENT(OUT) :: kfield
749 INTEGER,
INTENT(OUT) :: kresp
750 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
751 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
755 CHARACTER(LEN=16) :: yrec
756 CHARACTER(LEN=1) :: ydir
759 REAL(KIND=JPRB) :: zhook_handle
761 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFN0',0,zhook_handle)
770 IF (present(hdir)) ydir = hdir
772 IF (hprogram==
'MESONH')
THEN
774 CALL read_surfn0_mnh(yrec,nwork0,nworkb,cworkb)
778 IF (hprogram==
'AROME ')
THEN
780 CALL read_surfn0_aro(yrec,nwork0,nworkb,cworkb)
784 IF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
785 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
786 hprogram==
'NC ' )
THEN
788 IF (nrank==npio)
THEN
796 IF (hprogram==
'OFFLIN')
THEN
802 IF (hprogram==
'LFI ')
THEN
808 IF (hprogram==
'NC ')
THEN
814 IF (hprogram==
'ASCII ')
THEN
817 yrec,nwork0,nworkb,cworkb)
821 IF (hprogram==
'FA ')
THEN
824 yrec,nwork0,nworkb,cworkb)
831 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
837 IF (ydir/=
'A' .AND. nproc>1)
THEN
840 CALL mpi_bcast(nwork0,kind(nwork0)/4,mpi_integer,npio,ncomm,infompi)
842 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
852 IF (present(hcomment)) hcomment = cworkb
856 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFN0',1,zhook_handle)
862 hprogram,hrec,kfield,kresp,hcomment,hdir)
868 USE yomhook
,ONLY : lhook, dr_hook
869 USE parkind1
,ONLY : jprb
887 USE modi_read_surfn1_mnh
894 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
897 CHARACTER(LEN=*),
INTENT(IN) :: hrec
898 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kfield
899 INTEGER,
INTENT(OUT) :: kresp
900 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
901 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
907 CHARACTER(LEN=100) :: ycomment
908 CHARACTER(LEN=16) :: yrec
909 CHARACTER(LEN=1) :: ydir
911 REAL(KIND=JPRB) :: zhook_handle
913 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFN1',0,zhook_handle)
917 IF (present(hdir)) ydir = hdir
921 IF (hprogram==
'MESONH')
THEN
923 CALL read_surfn1_mnh(yrec,il,kfield,kresp,ycomment,ydir)
927 IF (hprogram==
'AROME ')
THEN
929 CALL read_surfn1_aro(yrec,il,kfield,kresp,ycomment,ydir)
933 IF (hprogram==
'OFFLIN')
THEN
939 IF (hprogram==
'LFI ')
THEN
945 IF (hprogram==
'NC ')
THEN
951 IF (hprogram==
'ASCII ')
THEN
954 yrec,kfield,kresp,ycomment,ydir)
958 IF (hprogram==
'FA ')
THEN
961 yrec,il,kfield,kresp,ycomment,ydir)
965 IF (present(hcomment)) hcomment = ycomment
966 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFN1',1,zhook_handle)
972 hprogram,hrec,hfield,kresp,hcomment,hdir)
978 USE yomhook
,ONLY : lhook, dr_hook
979 USE parkind1
,ONLY : jprb
981 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
1000 USE modi_read_surfc0_mnh
1013 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1014 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1015 CHARACTER(LEN=*),
INTENT(OUT) :: hfield
1016 INTEGER,
INTENT(OUT) :: kresp
1017 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1018 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1022 CHARACTER(LEN=16) :: yrec
1023 CHARACTER(LEN=1) :: ydir
1026 REAL(KIND=JPRB) :: zhook_handle
1028 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFC0',0,zhook_handle)
1037 IF (present(hdir)) ydir = hdir
1039 IF (hprogram==
'MESONH')
THEN
1041 CALL read_surfc0_mnh(yrec,cwork0(1:40),nworkb,cworkb)
1043 ELSE IF (hprogram==
'AROME ')
THEN
1045 CALL read_surfc0_aro(yrec,cwork0(1:40),nworkb,cworkb)
1047 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1048 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1049 hprogram==
'NC ' )
THEN
1051 IF (nrank==npio)
THEN
1054 xtime0 = mpi_wtime()
1059 IF (hprogram==
'OFFLIN')
THEN
1063 ELSE IF (hprogram==
'LFI ')
THEN
1067 ELSE IF (hprogram==
'NC ')
THEN
1071 ELSE IF (hprogram==
'ASCII ')
THEN
1074 yrec,cwork0(1:40),nworkb,cworkb)
1076 ELSE IF (hprogram==
'FA ')
THEN
1079 yrec,cwork0(1:40),nworkb,cworkb)
1086 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1092 IF (ydir/=
'A' .AND. nproc>1)
THEN
1093 xtime0 = mpi_wtime()
1095 CALL mpi_bcast(cwork0(1:40),40,mpi_character,npio,ncomm,infompi)
1097 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1103 hfield = cwork0(1:len(hfield))
1107 IF (present(hcomment)) hcomment = cworkb
1111 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFC0',1,zhook_handle)
1117 hprogram,hrec,ofield,kresp,hcomment,hdir)
1123 USE yomhook
,ONLY : lhook, dr_hook
1124 USE parkind1
,ONLY : jprb
1126 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
1145 USE modi_read_surfl0_mnh
1158 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1159 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1160 LOGICAL,
INTENT(OUT) :: ofield
1161 INTEGER,
INTENT(OUT) :: kresp
1162 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1163 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1167 CHARACTER(LEN=16) :: yrec
1168 CHARACTER(LEN=1) :: ydir
1171 REAL(KIND=JPRB) :: zhook_handle
1173 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFL0',0,zhook_handle)
1182 IF (present(hdir)) ydir = hdir
1184 IF (hprogram==
'MESONH')
THEN
1186 CALL read_surfl0_mnh(yrec,lwork0,nworkb,cworkb)
1188 ELSE IF (hprogram==
'AROME ')
THEN
1190 CALL read_surfl0_aro(yrec,lwork0,nworkb,cworkb)
1192 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1193 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1194 hprogram==
'NC ' )
THEN
1196 IF (nrank==npio)
THEN
1199 xtime0 = mpi_wtime()
1204 IF (hprogram==
'OFFLIN')
THEN
1208 ELSE IF (hprogram==
'LFI ')
THEN
1212 ELSE IF (hprogram==
'NC ')
THEN
1216 ELSE IF (hprogram==
'ASCII ')
THEN
1219 yrec,lwork0,nworkb,cworkb)
1221 ELSE IF (hprogram==
'FA ')
THEN
1224 yrec,lwork0,nworkb,cworkb)
1231 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1237 IF (ydir/=
'A' .AND. nproc>1)
THEN
1238 xtime0 = mpi_wtime()
1240 CALL mpi_bcast(lwork0,1,mpi_logical,npio,ncomm,infompi)
1242 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1252 IF (present(hcomment)) hcomment = cworkb
1256 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFL0',1,zhook_handle)
1262 hprogram,hrec,ofield,kresp,hcomment,hdir)
1268 USE yomhook
,ONLY : lhook, dr_hook
1269 USE parkind1
,ONLY : jprb
1287 USE modi_read_surfl1_mnh
1294 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1297 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1298 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: ofield
1299 INTEGER,
INTENT(OUT) :: kresp
1300 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1301 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1307 CHARACTER(LEN=100) :: ycomment
1308 CHARACTER(LEN=16) :: yrec
1309 CHARACTER(LEN=1) :: ydir
1311 REAL(KIND=JPRB) :: zhook_handle
1313 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFL1',0,zhook_handle)
1317 IF (present(hdir)) ydir = hdir
1321 IF (hprogram==
'MESONH')
THEN
1323 CALL read_surfl1_mnh(yrec,il,ofield,kresp,ycomment,ydir)
1325 ELSE IF (hprogram==
'AROME ')
THEN
1327 CALL read_surfl1_aro(yrec,il,ofield,kresp,ycomment,ydir)
1329 ELSE IF (hprogram==
'OFFLIN')
THEN
1333 ELSE IF (hprogram==
'LFI ')
THEN
1337 ELSE IF (hprogram==
'NC ')
THEN
1341 ELSE IF (hprogram==
'ASCII ')
THEN
1344 yrec,ofield,kresp,ycomment,ydir)
1346 ELSE IF (hprogram==
'FA ')
THEN
1349 yrec,il,ofield,kresp,ycomment,ydir)
1353 IF (present(hcomment)) hcomment = ycomment
1354 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFL1',1,zhook_handle)
1360 hprogram,hrec,tfield,kresp,hcomment,hdir)
1366 USE yomhook
,ONLY : lhook, dr_hook
1367 USE parkind1
,ONLY : jprb
1371 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
1390 USE modi_read_surft0_mnh
1405 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1406 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1409 TYPE(date_time),
INTENT(INOUT) :: tfield
1410 INTEGER,
INTENT(OUT) :: kresp
1411 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1412 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1416 CHARACTER(LEN=16) :: yrec
1417 CHARACTER(LEN=1) :: ydir
1422 REAL(KIND=JPRB) :: zhook_handle
1424 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT0',0,zhook_handle)
1433 IF (present(hdir)) ydir = hdir
1439 IF (hprogram==
'MESONH')
THEN
1441 CALL read_surft0_mnh(yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1443 ELSE IF (hprogram==
'AROME ')
THEN
1445 CALL read_surft0_aro(yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1447 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1448 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1449 hprogram==
'NC ' )
THEN
1451 IF (nrank==npio)
THEN
1454 xtime0 = mpi_wtime()
1459 IF (hprogram==
'OFFLIN')
THEN
1461 CALL
read_surft_ol(yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1463 ELSE IF (hprogram==
'LFI ')
THEN
1465 CALL
read_surft_lfi(yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1467 ELSE IF (hprogram==
'NC ')
THEN
1469 CALL
read_surft_nc(yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1471 ELSE IF (hprogram==
'ASCII ')
THEN
1474 yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1476 ELSE IF (hprogram==
'FA ')
THEN
1479 yrec,nworkd(1),nworkd(2),nworkd(3),xwork0,nworkb,cworkb)
1486 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1492 IF (ydir/=
'A' .AND. nproc>1)
THEN
1493 xtime0 = mpi_wtime()
1495 CALL mpi_bcast(nworkd(1),kind(nworkd)/4,mpi_integer,npio,ncomm,infompi)
1496 CALL mpi_bcast(nworkd(2),kind(nworkd)/4,mpi_integer,npio,ncomm,infompi)
1497 CALL mpi_bcast(nworkd(3),kind(nworkd)/4,mpi_integer,npio,ncomm,infompi)
1498 CALL mpi_bcast(xwork0,kind(xwork0)/4,mpi_real,npio,ncomm,infompi)
1500 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1508 IF (present(hcomment)) hcomment = cworkb
1514 WRITE(iluout,*)
'-------'
1515 WRITE(iluout,*)
'WARNING'
1516 WRITE(iluout,*)
'-------'
1518 WRITE(iluout,*)
'Date is not present file'
1519 WRITE(iluout,*)
'Forcing value is kept'
1522 tfield%TDATE%YEAR = nworkd(1)
1523 tfield%TDATE%MONTH = nworkd(2)
1524 tfield%TDATE%DAY = nworkd(3)
1525 tfield%TIME = xwork0
1534 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT0',1,zhook_handle)
1540 hprogram,hrec,tfield,kresp,hcomment,hdir)
1546 USE yomhook
,ONLY : lhook, dr_hook
1547 USE parkind1
,ONLY : jprb
1551 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
1564 USE modi_read_surft1_mnh
1580 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1581 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1582 TYPE(date_time),
DIMENSION(:),
INTENT(INOUT)::tfield
1583 INTEGER,
INTENT(OUT) :: kresp
1584 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1585 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1589 CHARACTER(LEN=16) :: yrec
1590 CHARACTER(LEN=1) :: ydir
1596 REAL(KIND=JPRB) :: zhook_handle
1598 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT1',0,zhook_handle)
1602 il1 =
SIZE(tfield,1)
1608 IF (present(hdir)) ydir = hdir
1611 ALLOCATE(nworkd2(il1,3))
1612 ALLOCATE(xworkd(il1))
1615 IF (hprogram==
'MESONH')
THEN
1617 CALL read_surft1_mnh(yrec,il1,nworkd2(:,1),nworkd2(:,2),nworkd2(:,3),xworkd,nworkb,cworkb)
1619 ELSE IF (hprogram==
'AROME ')
THEN
1621 CALL read_surft1_aro(yrec,il1,nworkd2(:,1),nworkd2(:,2),nworkd2(:,3),xworkd,nworkb,cworkb)
1623 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1624 hprogram==
'FA ' .OR. hprogram==
'LFI ' .OR. &
1625 hprogram==
'NC ')
THEN
1627 IF (nrank==npio)
THEN
1630 xtime0 = mpi_wtime()
1635 IF (hprogram==
'OFFLIN')
THEN
1636 CALL
abor1_sfx(
'READ_SURFT1: NOT AVAILABLE FOR OFFLIN')
1637 ELSE IF (hprogram==
'FA ')
THEN
1638 CALL
abor1_sfx(
'READ_SURFT1: NOT AVAILABLE FOR FA')
1639 ELSE IF (hprogram==
'ASCII ')
THEN
1642 yrec,nworkd2(:,1),nworkd2(:,2),nworkd2(:,3),xworkd,nworkb,cworkb)
1644 ELSE IF (hprogram==
'LFI ')
THEN
1646 CALL
read_surft_lfi(yrec,nworkd2(:,1),nworkd2(:,2),nworkd2(:,3),xworkd,nworkb,cworkb)
1648 ELSE IF (hprogram==
'NC ')
THEN
1650 CALL
read_surft_nc(yrec,nworkd2(:,1),nworkd2(:,2),nworkd2(:,3),xworkd,nworkb,cworkb)
1655 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1663 IF (ydir/=
'A' .AND. nproc>1)
THEN
1664 xtime0 = mpi_wtime()
1666 CALL mpi_bcast(nworkd2(:,1),il1*kind(nworkd2)/4,mpi_integer,npio,ncomm,infompi)
1667 CALL mpi_bcast(nworkd2(:,2),il1*kind(nworkd2)/4,mpi_integer,npio,ncomm,infompi)
1668 CALL mpi_bcast(nworkd2(:,3),il1*kind(nworkd2)/4,mpi_integer,npio,ncomm,infompi)
1669 CALL mpi_bcast(xworkd,il1*kind(xworkd)/4,mpi_real,npio,ncomm,infompi)
1671 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1678 IF (present(hcomment)) hcomment = cworkb
1682 WRITE(iluout,*)
'-------'
1683 WRITE(iluout,*)
'WARNING'
1684 WRITE(iluout,*)
'-------'
1686 WRITE(iluout,*)
'Date is not present file'
1687 WRITE(iluout,*)
'Forcing value is kept'
1690 tfield(:)%TDATE%YEAR = nworkd2(:,1)
1691 tfield(:)%TDATE%MONTH = nworkd2(:,2)
1692 tfield(:)%TDATE%DAY = nworkd2(:,3)
1693 tfield(:)%TIME = xworkd(:)
1703 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT1',1,zhook_handle)
1709 hprogram,hrec,tfield,kresp,hcomment,hdir)
1715 USE yomhook
,ONLY : lhook, dr_hook
1716 USE parkind1
,ONLY : jprb
1718 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_read, xtime_comm_read
1749 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
1750 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1751 TYPE(date_time),
DIMENSION(:,:),
INTENT(INOUT) :: tfield
1752 INTEGER,
INTENT(OUT) :: kresp
1753 CHARACTER(LEN=*),
OPTIONAL,
INTENT(OUT) :: hcomment
1754 CHARACTER(LEN=1),
OPTIONAL,
INTENT(IN) :: hdir
1758 CHARACTER(LEN=16) :: yrec
1759 CHARACTER(LEN=1) :: ydir
1765 REAL(KIND=JPRB) :: zhook_handle
1767 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT2',0,zhook_handle)
1776 IF (present(hdir)) ydir = hdir
1778 il1 =
SIZE(tfield,1)
1779 il2 =
SIZE(tfield,2)
1782 ALLOCATE(xworkd2(il1,il2))
1783 ALLOCATE(nworkd3(il1,il2,3))
1786 IF (hprogram==
'MESONH')
THEN
1787 CALL
abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR MESONH')
1788 ELSE IF (hprogram==
'AROME ')
THEN
1789 CALL
abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR AROME')
1790 ELSEIF (hprogram==
'OFFLIN' .OR. hprogram==
'ASCII ' .OR. &
1791 hprogram==
'FA ' .OR. hprogram==
'LFI ' )
THEN
1793 IF (nrank==npio)
THEN
1796 xtime0 = mpi_wtime()
1801 IF (hprogram==
'OFFLIN')
THEN
1802 CALL
abor1_sfx(
'READ_SURFT2: NOT AVAILABLE FOR OFFLIN')
1803 ELSE IF (hprogram==
'LFI ')
THEN
1805 CALL
read_surft_lfi(yrec,nworkd3(:,:,1),nworkd3(:,:,2),nworkd3(:,:,3),&
1806 xworkd2,nworkb,cworkb)
1808 ELSE IF (hprogram==
'ASCII ')
THEN
1811 yrec,nworkd3(:,:,1),nworkd3(:,:,2),nworkd3(:,:,3),&
1812 xworkd2,nworkb,cworkb)
1814 ELSE IF (hprogram==
'FA ')
THEN
1817 yrec,il1,il2,nworkd3(:,:,1),nworkd3(:,:,2),nworkd3(:,:,3),&
1818 xworkd2,nworkb,cworkb)
1820 ELSE IF (hprogram==
'NC ')
THEN
1822 CALL
read_surft_nc(yrec,nworkd3(:,:,1),nworkd3(:,:,2),nworkd3(:,:,3),&
1823 xworkd2,nworkb,cworkb)
1828 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1836 IF (ydir/=
'A' .AND. nproc>1)
THEN
1837 xtime0 = mpi_wtime()
1839 CALL mpi_bcast(nworkd3(:,:,1),il1*il2*kind(nworkd3)/4,mpi_integer,npio,ncomm,infompi)
1840 CALL mpi_bcast(nworkd3(:,:,2),il1*il2*kind(nworkd3)/4,mpi_integer,npio,ncomm,infompi)
1841 CALL mpi_bcast(nworkd3(:,:,3),il1*il2*kind(nworkd3)/4,mpi_integer,npio,ncomm,infompi)
1842 CALL mpi_bcast(xworkd2,il1*il2*kind(xworkd2)/4,mpi_real,npio,ncomm,infompi)
1844 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1851 IF (present(hcomment)) hcomment = cworkb
1855 WRITE(iluout,*)
'-------'
1856 WRITE(iluout,*)
'WARNING'
1857 WRITE(iluout,*)
'-------'
1859 WRITE(iluout,*)
'Date is not present file'
1860 WRITE(iluout,*)
'Forcing value is kept'
1863 tfield(:,:)%TDATE%YEAR = nworkd3(:,:,1)
1864 tfield(:,:)%TDATE%MONTH = nworkd3(:,:,2)
1865 tfield(:,:)%TDATE%DAY = nworkd3(:,:,3)
1866 tfield(:,:)%TIME = xworkd2(:,:)
1876 IF (lhook) CALL dr_hook(
'MODI_READ_SURF:READ_SURFT2',1,zhook_handle)
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 get_iok_assim(HREC, KOK)
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)