68 USE modi_ol_find_file_read
69 USE modi_error_read_surf_ol
81 CHARACTER(LEN=*),
INTENT(IN) :: HREC
82 REAL,
INTENT(OUT) :: PFIELD
83 INTEGER,
INTENT(OUT) :: KRESP
84 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
89 CHARACTER(LEN=100) :: YFILE
90 INTEGER :: IVAR_ID,IFILE_ID,JRET,IVAL,ITYPE,INDIMS
91 INTEGER,
DIMENSION(4) :: IRET
92 REAL(KIND=JPRB) :: ZHOOK_HANDLE
94 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX0_OL',0,zhook_handle)
103 IF (ifile_id.NE.0)
THEN 107 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
108 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,xtype=itype)
109 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,ndims=indims)
113 IF (itype==nf90_double)
THEN 114 iret(2)=nf90_get_var(ifile_id,ivar_id,pfield)
115 ELSEIF (itype==nf90_float)
THEN 116 iret(2)=nf90_get_var(ifile_id,ivar_id,zfield)
125 IF ((pfield==
xundef).OR.(ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 133 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX0_OL',1,zhook_handle)
149 USE modi_ol_find_file_read
150 USE modi_error_read_surf_ol
167 CHARACTER(LEN=*),
INTENT(IN) :: HREC
168 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
169 INTEGER,
INTENT(OUT) :: KRESP
170 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
171 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
177 CHARACTER(LEN=100) :: YFILE,YOUT
178 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS, ITYPE
179 INTEGER,
DIMENSION(2) :: IDIMIDS,IDIMLEN
180 INTEGER,
DIMENSION(2) :: IRET
182 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISTART,ICOUNT,ISTRIDE
183 REAL,
DIMENSION(:),
ALLOCATABLE :: ZWORK
184 REAL*4,
DIMENSION(:),
ALLOCATABLE :: ZTAB_1D4
185 DOUBLE PRECISION :: XTIME0
186 REAL(KIND=JPRB) :: ZHOOK_HANDLE
188 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX1_OL',0,zhook_handle)
205 IF (ifile_id.NE.0)
THEN 209 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
210 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,xtype=itype)
211 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,ndims=indims)
212 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,dimids=idimids(1:indims))
215 jret=nf90_inquire_dimension(ifile_id,idimids(jdim),len=idimlen(jdim))
217 ALLOCATE(zwork(idimlen(1)*idimlen(2)))
219 ALLOCATE(istart(indims))
220 ALLOCATE(icount(indims))
227 ALLOCATE(istride(indims))
229 iret=nf90_inquire_dimension(ifile_id,idimids(jdim),
name=yout)
230 IF ((
index(yout,
'time') > 0).OR.(
index(yout,
'TIME') >0) &
231 .OR.(
index(yout,
'Time')>0.))
THEN 237 icount(jdim)=idimlen(jdim)
242 IF (itype==nf90_double)
THEN 243 iret(1)=nf90_get_var(ifile_id,ivar_id,zwork,istart,icount,istride)
244 ELSEIF (itype==nf90_float)
THEN 245 ALLOCATE(ztab_1d4(idimlen(1)*idimlen(2)))
246 iret(1)=nf90_get_var(ifile_id,ivar_id,ztab_1d4,istart,icount,istride)
247 zwork(:) = ztab_1d4(:)
256 icount(1:indims) = idimlen(1:indims)
258 IF (itype==nf90_double)
THEN 259 iret(1)=nf90_get_var(ifile_id,ivar_id,zwork,istart,icount)
260 ELSEIF (itype==nf90_float)
THEN 261 ALLOCATE(ztab_1d4(idimlen(1)*idimlen(2)))
262 iret(1)=nf90_get_var(ifile_id,ivar_id,ztab_1d4,istart,icount)
263 zwork(:) = ztab_1d4(:)
277 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 281 IF (minval(zwork)==
xundef)
THEN 306 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX1_OL',1,zhook_handle)
321 USE modi_ol_find_file_read
322 USE modi_error_read_surf_ol
339 CHARACTER(LEN=*),
INTENT(IN) :: HREC
340 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
341 INTEGER,
INTENT(OUT) :: KRESP
342 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
343 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
349 CHARACTER(LEN=100) :: YFILE,YOUT
350 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS,ITYPE
351 INTEGER,
DIMENSION(3) :: IDIMIDS,IDIMLEN
352 INTEGER,
DIMENSION(2) :: IRET
353 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISTART,ISTRIDE,ICOUNT
354 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK2
355 REAL*4,
DIMENSION(:,:),
ALLOCATABLE :: ZTAB_2D4
356 DOUBLE PRECISION :: XTIME0
357 REAL(KIND=JPRB) :: ZHOOK_HANDLE
359 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX2_OL',0,zhook_handle)
376 IF (ifile_id.NE.0)
THEN 380 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
381 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,xtype=itype)
382 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,ndims=indims)
383 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,dimids=idimids(1:indims))
386 jret=nf90_inquire_dimension(ifile_id,idimids(jdim),len=idimlen(jdim))
389 ALLOCATE(istart(indims))
390 ALLOCATE(icount(indims))
398 ALLOCATE(istride(indims))
400 iret=nf90_inquire_dimension(ifile_id,idimids(jdim),
name=yout)
401 IF ((
index(yout,
'time') > 0).OR.(
index(yout,
'TIME') >0) &
402 .OR.(
index(yout,
'Time')>0.))
THEN 408 icount(jdim)=idimlen(jdim)
413 ALLOCATE(zwork2(product(icount(1:indims-1)),icount(indims)))
414 IF (itype==nf90_double)
THEN 415 iret(2)=nf90_get_var(ifile_id,ivar_id,zwork2,istart,icount,istride)
416 ELSEIF (itype==nf90_float)
THEN 417 ALLOCATE(ztab_2d4(product(icount(1:indims-1)),icount(indims)))
418 iret(2)=nf90_get_var(ifile_id,ivar_id,ztab_2d4,istart,icount,istride)
419 zwork2(:,:) = ztab_2d4(:,:)
427 icount(1:indims) = idimlen(1:indims)
429 ALLOCATE(zwork2(product(idimlen(1:indims-1)),idimlen(indims)))
430 IF (itype==nf90_double)
THEN 431 iret(2)=nf90_get_var(ifile_id,ivar_id,zwork2)
432 ELSEIF (itype==nf90_float)
THEN 433 ALLOCATE(ztab_2d4(product(idimlen(1:indims-1)),idimlen(indims)))
434 iret(2)=nf90_get_var(ifile_id,ivar_id,ztab_2d4)
435 zwork2(:,:) = ztab_2d4(:,:)
448 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 452 IF (minval(zwork2)==
xundef)
THEN 462 ALLOCATE(zwork2(0,0))
477 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX2_OL',1,zhook_handle)
492 USE modi_ol_find_file_read
493 USE modi_error_read_surf_ol
510 CHARACTER(LEN=*),
INTENT(IN) :: HREC
511 REAL,
DIMENSION(:,:,:),
INTENT(OUT) :: PFIELD
512 INTEGER,
INTENT(OUT) :: KRESP
513 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
514 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
520 CHARACTER(LEN=100) :: YFILE,YOUT
521 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS,ITYPE
522 INTEGER,
DIMENSION(3) :: IDIMIDS,IDIMLEN
523 INTEGER,
DIMENSION(2) :: IRET
524 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ISTART,ISTRIDE,ICOUNT
525 REAL,
DIMENSION(:,:,:),
ALLOCATABLE :: ZWORK3
526 REAL*4,
DIMENSION(:,:,:),
ALLOCATABLE :: ZTAB_3D4
527 DOUBLE PRECISION :: XTIME0
528 REAL(KIND=JPRB) :: ZHOOK_HANDLE
530 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX3_OL',0,zhook_handle)
546 IF (ifile_id.NE.0)
THEN 550 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
551 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,xtype=itype)
552 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,ndims=indims)
553 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,dimids=idimids(1:indims))
555 jret=nf90_inquire_dimension(ifile_id,idimids(jdim),len=idimlen(jdim))
558 ALLOCATE(istart(indims))
559 ALLOCATE(icount(indims))
566 ALLOCATE(istride(indims))
568 iret=nf90_inquire_dimension(ifile_id,idimids(jdim),
name=yout)
569 IF ((
index(yout,
'time') > 0).OR.(
index(yout,
'TIME') >0) &
570 .OR.(
index(yout,
'Time')>0.))
THEN 576 icount(jdim)=idimlen(jdim)
581 ALLOCATE(zwork3(icount(1),icount(2),icount(3)))
583 IF (itype==nf90_double)
THEN 584 iret(2)=nf90_get_var(ifile_id,ivar_id,zwork3,istart,icount,istride)
585 ELSEIF (itype==nf90_float)
THEN 586 ALLOCATE(ztab_3d4(icount(1),icount(2),icount(3)))
587 iret(2)=nf90_get_var(ifile_id,ivar_id,ztab_3d4,istart,icount,istride)
588 zwork3(:,:,:) = ztab_3d4(:,:,:)
596 icount(1:indims) = idimlen(1:indims)
598 ALLOCATE(zwork3(idimlen(1),idimlen(2),idimlen(3)))
599 IF (itype==nf90_double)
THEN 600 iret(2)=nf90_get_var(ifile_id,ivar_id,zwork3)
601 ELSEIF (itype==nf90_float)
THEN 602 ALLOCATE(ztab_3d4(icount(1),icount(2),icount(3)))
603 iret(2)=nf90_get_var(ifile_id,ivar_id,ztab_3d4)
604 zwork3(:,:,:) = ztab_3d4(:,:,:)
618 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 622 IF (minval(zwork3)==
xundef)
THEN 632 ALLOCATE(zwork3(0,0,0))
647 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFX3_OL',1,zhook_handle)
659 USE modi_ol_find_file_read
660 USE modi_error_read_surf_ol
672 CHARACTER(LEN=*),
INTENT(IN) :: HREC
673 INTEGER,
INTENT(OUT) :: KFIELD
674 INTEGER,
INTENT(OUT) :: KRESP
675 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
680 CHARACTER(LEN=100):: YFILE
681 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS
682 INTEGER,
DIMENSION(4) :: IRET
683 REAL(KIND=JPRB) :: ZHOOK_HANDLE
685 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFN0_OL',0,zhook_handle)
694 IF (ifile_id.NE.0)
THEN 698 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
702 iret(2)=nf90_get_var(ifile_id,ivar_id,kfield)
709 IF ((kfield==
nundef).OR.(ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 717 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFN0_OL',1,zhook_handle)
736 CHARACTER(LEN=*),
INTENT(IN) :: HREC
737 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KFIELD
738 INTEGER,
INTENT(OUT) :: KRESP
739 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
740 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
746 REAL,
DIMENSION(SIZE(KFIELD)) :: ZFIELD
747 REAL(KIND=JPRB) :: ZHOOK_HANDLE
749 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFN1_OL',0,zhook_handle)
752 kfield = nint(zfield)
754 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFN1_OL',1,zhook_handle)
764 USE modi_ol_find_file_read
765 USE modi_error_read_surf_ol
779 CHARACTER(LEN=*),
INTENT(IN) :: HREC
780 CHARACTER(LEN=40),
INTENT(OUT) :: HFIELD
781 INTEGER,
INTENT(OUT) :: KRESP
782 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
786 CHARACTER(LEN=100):: YFILE
787 CHARACTER(LEN=100):: YFIELD
788 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS
789 INTEGER,
DIMENSION(4) :: IRET
790 REAL(KIND=JPRB) :: ZHOOK_HANDLE
792 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFC0_OL',0,zhook_handle)
801 IF (ifile_id.NE.0)
THEN 805 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
809 iret(2)=nf90_get_var(ifile_id,ivar_id,yfield)
810 hfield=yfield(:len_trim(yfield))
817 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 824 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFC0_OL',1,zhook_handle)
834 USE modi_ol_find_file_read
835 USE modi_error_read_surf_ol
849 CHARACTER(LEN=*),
INTENT(IN) :: HREC
850 LOGICAL,
INTENT(OUT) :: OFIELD
851 INTEGER,
INTENT(OUT) :: KRESP
852 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
856 CHARACTER(LEN=1) :: YFIELD
857 CHARACTER(LEN=100) :: YFILE
858 INTEGER :: IVAR_ID,IFILE_ID, JRET
859 INTEGER,
DIMENSION(2) :: IRET
860 REAL(KIND=JPRB) :: ZHOOK_HANDLE
862 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFL0_OL',0,zhook_handle)
871 IF (ifile_id.NE.0)
THEN 875 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
879 iret(2)=nf90_get_var(ifile_id,ivar_id,yfield)
881 IF (yfield ==
'T') ofield=.true.
882 IF (yfield ==
'F') ofield=.false.
888 IF ((ifile_id==0).OR.iret(1).NE.nf90_noerr)
THEN 894 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFL0_OL',1,zhook_handle)
906 USE modi_ol_find_file_read
907 USE modi_error_read_surf_ol
925 CHARACTER(LEN=*),
INTENT(IN) :: HREC
926 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: OFIELD
927 INTEGER,
INTENT(OUT) :: KRESP
928 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
929 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
935 CHARACTER(LEN=100) :: YFILE
936 CHARACTER(LEN=1),
DIMENSION(:),
ALLOCATABLE :: YTAB_1D
938 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS
940 INTEGER,
DIMENSION(1) :: IDIMIDS,IDIMLEN
941 INTEGER,
DIMENSION(2) :: IRET
942 INTEGER,
DIMENSION(:),
POINTER :: IMASK
943 DOUBLE PRECISION :: XTIME0
944 REAL(KIND=JPRB) :: ZHOOK_HANDLE
946 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFL1_OL',0,zhook_handle)
963 IF (ifile_id.NE.0)
THEN 967 iret(1)=nf90_inq_varid(ifile_id,hrec,ivar_id)
968 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,ndims=indims)
969 iret(1)=nf90_inquire_variable(ifile_id,ivar_id,dimids=idimids)
971 jret=nf90_inquire_dimension(ifile_id,idimids(jdim),len=idimlen(jdim))
973 ALLOCATE(ytab_1d(idimlen(1)))
977 iret(1)=nf90_get_var(ifile_id,ivar_id,ytab_1d)
980 IF (ytab_1d(jret) ==
'T') ofield(jret)=.true.
981 IF (ytab_1d(jret) ==
'F') ofield(jret)=.false.
989 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 1006 xtime0 = mpi_wtime()
1007 CALL mpi_bcast(ofield,
SIZE(ofield),mpi_logical,
npio,
ncomm,infompi)
1012 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFL1_OL',1,zhook_handle)
1018 SUBROUTINE read_surft0_ol(HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1023 USE modi_ol_find_file_read
1024 USE modi_error_read_surf_ol
1038 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1039 INTEGER,
INTENT(OUT) :: KYEAR
1040 INTEGER,
INTENT(OUT) :: KMONTH
1041 INTEGER,
INTENT(OUT) :: KDAY
1042 REAL,
INTENT(OUT) :: PTIME
1043 INTEGER,
INTENT(OUT) :: KRESP
1044 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
1049 CHARACTER(LEN=18) :: YRECFM
1050 CHARACTER(LEN=100) :: YFILE
1051 INTEGER :: IVAR_ID,IFILE_ID,JRET,JDIM,INDIMS,JWRK
1052 INTEGER,
DIMENSION(1) :: IDIMIDS,IDIMLEN
1053 INTEGER,
DIMENSION(4) :: IRET
1054 INTEGER,
DIMENSION(3) :: ITDATE
1055 INTEGER,
DIMENSION(:),
POINTER :: IMASK
1057 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1059 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFT0_OL',0,zhook_handle)
1066 yrecfm=trim(hrec)//
'-TDATE' 1068 yrecfm=trim(hrec)//
'-TIME' 1074 IF (ifile_id.NE.0)
THEN 1078 jret=nf90_inq_varid(ifile_id,yrecfm,ivar_id)
1083 iret(jwrk)=nf90_get_var(ifile_id,ivar_id,itdate)
1088 iret(jwrk)=nf90_get_var(ifile_id,ivar_id,ptime)
1096 IF ((ifile_id==0).OR.iret(jret).NE.nf90_noerr)
THEN 1102 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_OL:READ_SURFT0_OL',1,zhook_handle)
subroutine read_surfl1_ol(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
quick &counting sorts only inumt inumt name
integer, dimension(:), pointer nmask
subroutine read_surfx2_ol(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine ol_find_file_read(HNAME, IFILE_ID)
subroutine read_surfn0_ol(HREC, KFIELD, KRESP, HCOMMENT)
subroutine read_surfx0_ol(HREC, PFIELD, KRESP, HCOMMENT)
integer, parameter nundef
subroutine read_surfc0_ol(HREC, HFIELD, KRESP, HCOMMENT)
subroutine read_surft0_ol(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine read_surfn1_ol(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx3_ol(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx1_ol(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine error_read_surf_ol(HREC, KRESP)
subroutine read_surfl0_ol(HREC, OFIELD, KRESP, HCOMMENT)