41 CHARACTER(LEN=*),
INTENT(IN) :: hrec
42 REAL,
INTENT(OUT) :: pfield
43 INTEGER,
INTENT(OUT) :: kresp
44 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
47 CHARACTER(LEN=*),
INTENT(IN) :: hrec
48 INTEGER,
INTENT(OUT) :: kfield
49 INTEGER,
INTENT(OUT) :: kresp
50 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
53 CHARACTER(LEN=*),
INTENT(IN) :: hrec
54 CHARACTER(LEN=40),
INTENT(OUT) :: hfield
55 INTEGER,
INTENT(OUT) :: kresp
56 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
59 CHARACTER(LEN=*),
INTENT(IN) :: hrec
60 LOGICAL,
INTENT(OUT) :: ofield
61 INTEGER,
INTENT(OUT) :: kresp
62 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
67 CHARACTER(LEN=*),
INTENT(IN) :: hrec
68 REAL,
DIMENSION(:),
INTENT(OUT) :: pfield
69 INTEGER,
INTENT(OUT) :: kresp
70 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
71 CHARACTER(LEN=1),
INTENT(IN) :: hdir
74 CHARACTER(LEN=*),
INTENT(IN) :: hrec
75 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pfield
76 INTEGER,
INTENT(OUT) :: kresp
77 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
78 CHARACTER(LEN=1),
INTENT(IN) :: hdir
81 CHARACTER(LEN=*),
INTENT(IN) :: hrec
82 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kfield
83 INTEGER,
INTENT(OUT) :: kresp
84 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
85 CHARACTER(LEN=1),
INTENT(IN) :: hdir
88 CHARACTER(LEN=*),
INTENT(IN) :: hrec
89 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kfield
90 INTEGER,
INTENT(OUT) :: kresp
91 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
92 CHARACTER(LEN=1),
INTENT(IN) :: hdir
95 CHARACTER(LEN=*),
INTENT(IN) :: hrec
96 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: ofield
97 INTEGER,
INTENT(OUT) :: kresp
98 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
99 CHARACTER(LEN=1),
INTENT(IN) :: hdir
104 CHARACTER(LEN=*),
INTENT(IN) :: hrec
105 INTEGER,
INTENT(OUT) :: kyear
106 INTEGER,
INTENT(OUT) :: kmonth
107 INTEGER,
INTENT(OUT) :: kday
108 REAL,
INTENT(OUT) :: ptime
109 INTEGER,
INTENT(OUT) :: kresp
110 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
113 CHARACTER(LEN=*),
INTENT(IN) :: hrec
114 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kyear
115 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kmonth
116 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kday
117 REAL,
DIMENSION(:),
INTENT(OUT) :: ptime
118 INTEGER,
INTENT(OUT) :: kresp
119 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
122 CHARACTER(LEN=*),
INTENT(IN) :: hrec
123 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kyear
124 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kmonth
125 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kday
126 REAL,
DIMENSION(:,:),
INTENT(OUT) :: ptime
127 INTEGER,
INTENT(OUT) :: kresp
128 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
145 USE modi_error_read_surf_nc
147 USE yomhook
,ONLY : lhook, dr_hook
148 USE parkind1
,ONLY : jprb
156 CHARACTER(LEN=*),
INTENT(IN) :: hrec
157 REAL,
INTENT(OUT) :: pfield
158 INTEGER,
INTENT(OUT) :: kresp
159 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
164 CHARACTER(LEN=100) :: yfile
165 INTEGER :: ivar_id,jret,ival,itype,indims
166 INTEGER,
DIMENSION(4) :: iret
167 REAL(KIND=JPRB) :: zhook_handle
169 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX0_NC',0,zhook_handle)
174 IF (nid_nc.NE.0)
THEN
178 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
179 iret(1)=nf_inq_vartype(nid_nc,ivar_id,itype)
180 iret(1)=nf_inq_varndims(nid_nc,ivar_id,indims)
184 IF (itype==nf_double)
THEN
185 iret(2)=nf_get_var_double(nid_nc,ivar_id,pfield)
186 ELSEIF (itype==nf_float)
THEN
187 iret(2)=nf_get_var_real(nid_nc,ivar_id,zfield)
191 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
198 IF ((pfield==xundef).OR.(nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
206 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX0_NC',1,zhook_handle)
216 USE modd_surfex_mpi, ONLY : nrank, npio, xtime_npio_read, nproc, ncomm, &
217 xtime_npio_read, xtime_comm_read
225 USE modi_error_read_surf_nc
228 USE yomhook
,ONLY : lhook, dr_hook
229 USE parkind1
,ONLY : jprb
241 CHARACTER(LEN=*),
INTENT(IN) :: hrec
242 REAL,
DIMENSION(:),
INTENT(OUT) :: pfield
243 INTEGER,
INTENT(OUT) :: kresp
244 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
245 CHARACTER(LEN=1),
INTENT(IN) :: hdir
251 CHARACTER(LEN=100) :: yfile,yout
252 CHARACTER(LEN=100) :: yname
253 INTEGER :: il1, ivar_id,jret,jdim,indims, itype, infompi
254 INTEGER,
DIMENSION(4) :: idimids,idimlen
255 INTEGER,
DIMENSION(4) :: iret
257 REAL*4,
DIMENSION(:),
ALLOCATABLE :: ztab_1d4
258 DOUBLE PRECISION :: xtime0
259 REAL(KIND=JPRB) :: zhook_handle
261 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX1_NC',0,zhook_handle)
278 ALLOCATE(xworkd(il1))
282 IF (nrank==npio)
THEN
286 IF (nid_nc.NE.0)
THEN
290 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
291 iret(2)=nf_inq_vartype(nid_nc,ivar_id,itype)
295 ALLOCATE(xworkd(il1))
297 ELSEIF (hdir/=
'-')
THEN
299 iret(3)=nf_inq_varndims(nid_nc,ivar_id,indims)
300 iret(4)=nf_inq_vardimid(nid_nc,ivar_id,idimids(1:indims))
303 jret=nf_inq_dimlen(nid_nc,idimids(jdim),idimlen(jdim))
305 iret(4)=nf_inq_dimname(nid_nc,idimids(1),yname)
307 IF (trim(yname).NE.
'Number_of_points')
THEN
308 ALLOCATE(xworkd(idimlen(1)*idimlen(2)))
310 ALLOCATE(xworkd(idimlen(1)))
317 IF (itype==nf_double)
THEN
318 iret(1)=nf_get_var_double(nid_nc,ivar_id,xworkd)
319 ELSEIF (itype==nf_float)
THEN
320 ALLOCATE(ztab_1d4(
SIZE(xworkd)))
321 iret(2)=nf_get_var_real(nid_nc,ivar_id,ztab_1d4)
322 xworkd(:) = ztab_1d4(:)
326 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",cwork0)
333 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
343 ELSEIF (hdir/=
'-')
THEN
353 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
357 IF ( nrank==npio )
THEN
361 pfield(:) = xworkd(1:
SIZE(pfield))
363 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
366 ELSEIF (hdir==
'-')
THEN
371 CALL mpi_bcast(xworkd,
SIZE(xworkd)*kind(xworkd)/4,mpi_real,npio,ncomm,infompi)
372 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
376 pfield(:) = xworkd(1:
SIZE(pfield))
391 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX1_NC',1,zhook_handle)
401 USE modd_surfex_mpi, ONLY: nrank, nproc, ncomm, npio, xtime_npio_read, xtime_comm_read
409 USE modi_error_read_surf_nc
412 USE yomhook
,ONLY : lhook, dr_hook
413 USE parkind1
,ONLY : jprb
425 CHARACTER(LEN=*),
INTENT(IN) :: hrec
426 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pfield
427 INTEGER,
INTENT(OUT) :: kresp
428 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
429 CHARACTER(LEN=1),
INTENT(IN) :: hdir
435 CHARACTER(LEN=100) :: yfile,yout
436 CHARACTER(LEN=100) :: yname
438 INTEGER :: ivar_id,jret,jdim,indims,itype, infompi
439 INTEGER,
DIMENSION(4) :: idimids,idimlen
440 INTEGER,
DIMENSION(4) :: iret
441 REAL*4,
DIMENSION(:,:),
ALLOCATABLE :: ztab_2d4
442 DOUBLE PRECISION :: xtime0
443 REAL(KIND=JPRB) :: zhook_handle
445 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX2_NC',0,zhook_handle)
463 ALLOCATE(xworkd2(il1,il2))
467 IF (nrank==npio)
THEN
471 IF (nid_nc.NE.0)
THEN
475 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
476 iret(2)=nf_inq_vartype(nid_nc,ivar_id,itype)
480 ALLOCATE(xworkd2(il1,il2))
482 ELSEIF (hdir/=
'-')
THEN
484 iret(3)=nf_inq_varndims(nid_nc,ivar_id,indims)
485 iret(4)=nf_inq_vardimid(nid_nc,ivar_id,idimids(1:indims))
488 jret=nf_inq_dimlen(nid_nc,idimids(jdim),idimlen(jdim))
491 iret(4)=nf_inq_dimname(nid_nc,idimids(1),yname)
493 IF (trim(yname).NE.
'Number_of_points')
THEN
494 ALLOCATE(xworkd2(idimlen(1)*idimlen(2),idimlen(3)))
496 ALLOCATE(xworkd2(idimlen(1),idimlen(2)))
504 IF (itype==nf_double)
THEN
505 iret(2)=nf_get_var_double(nid_nc,ivar_id,xworkd2)
506 ELSEIF (itype==nf_float)
THEN
507 ALLOCATE(ztab_2d4(
SIZE(xworkd2,1),
SIZE(xworkd2,2)))
508 iret(2)=nf_get_var_real(nid_nc,ivar_id,ztab_2d4)
509 xworkd2(:,:) = ztab_2d4(:,:)
513 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",cwork0)
520 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
530 ELSEIF (hdir/=
'-')
THEN
532 ALLOCATE(xworkd2(1,
SIZE(pfield,2)))
540 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
544 IF ( nrank==npio )
THEN
548 pfield(:,:) = xworkd2(:,1:
SIZE(pfield,2))
550 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
553 ELSEIF (hdir==
'-')
THEN
558 CALL mpi_bcast(xworkd2,
SIZE(xworkd2)*kind(xworkd2)/4,mpi_real,npio,ncomm,infompi)
559 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
563 pfield(:,:) = xworkd2(:,1:
SIZE(pfield,2))
578 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX2_NC',1,zhook_handle)
592 USE modi_error_read_surf_nc
594 USE yomhook
,ONLY : lhook, dr_hook
595 USE parkind1
,ONLY : jprb
603 CHARACTER(LEN=*),
INTENT(IN) :: hrec
604 INTEGER,
INTENT(OUT) :: kfield
605 INTEGER,
INTENT(OUT) :: kresp
606 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
611 CHARACTER(LEN=100):: yfile
612 INTEGER :: ivar_id,jret,jdim,indims
613 INTEGER,
DIMENSION(4) :: iret
614 REAL(KIND=JPRB) :: zhook_handle
616 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFN0_NC',0,zhook_handle)
621 IF (nid_nc.NE.0)
THEN
625 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
629 iret(2)=nf_get_var_int(nid_nc,ivar_id,kfield)
631 iret(3)=nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
638 IF ((kfield==nundef).OR.(nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
646 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFN0_NC',1,zhook_handle)
656 USE modd_surfex_mpi, ONLY : nrank, npio, xtime_npio_read, nproc, ncomm, &
657 xtime_npio_read, xtime_comm_read
665 USE modi_error_read_surf_nc
668 USE yomhook
,ONLY : lhook, dr_hook
669 USE parkind1
,ONLY : jprb
681 CHARACTER(LEN=*),
INTENT(IN) :: hrec
682 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kfield
683 INTEGER,
INTENT(OUT) :: kresp
684 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
685 CHARACTER(LEN=1),
INTENT(IN) :: hdir
691 CHARACTER(LEN=100) :: yfile,yout
692 CHARACTER(LEN=100) :: yname
693 INTEGER :: il1, ivar_id,jret,jdim,indims, itype, infompi
694 INTEGER,
DIMENSION(4) :: idimids,idimlen
695 INTEGER,
DIMENSION(4) :: iret
697 DOUBLE PRECISION :: xtime0
698 REAL(KIND=JPRB) :: zhook_handle
700 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFX1_NC',0,zhook_handle)
717 ALLOCATE(nworkd(il1))
721 IF (nrank==npio)
THEN
725 IF (nid_nc.NE.0)
THEN
729 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
730 iret(2)=nf_inq_vartype(nid_nc,ivar_id,itype)
731 iret(3)=nf_inq_varndims(nid_nc,ivar_id,indims)
732 iret(4)=nf_inq_vardimid(nid_nc,ivar_id,idimids(1:indims))
735 jret=nf_inq_dimlen(nid_nc,idimids(jdim),idimlen(jdim))
738 iret(4)=nf_inq_dimname(nid_nc,idimids(1),yname)
740 IF (trim(yname).NE.
'Number_of_points')
THEN
741 ALLOCATE(nworkd(idimlen(1)*idimlen(2)))
743 ALLOCATE(nworkd(idimlen(1)))
748 IF (itype==nf_int)
THEN
749 iret(1)=nf_get_var_int(nid_nc,ivar_id,nworkd)
752 iret(2) = nf_get_att_text(nid_nc,ivar_id,
"comment",cwork0)
759 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
769 ELSEIF (hdir/=
'-')
THEN
779 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
783 IF ( nrank==npio )
THEN
787 kfield(:) = nworkd(1:
SIZE(kfield))
789 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
792 ELSEIF (hdir==
'-')
THEN
797 CALL mpi_bcast(nworkd,
SIZE(nworkd)*kind(nworkd)/4,mpi_integer,npio,ncomm,infompi)
798 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
802 kfield(:) = nworkd(1:
SIZE(kfield))
817 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFN1_NC',1,zhook_handle)
827 USE modd_surfex_mpi, ONLY: nrank, nproc, ncomm, npio, xtime_npio_read, xtime_comm_read
835 USE modi_error_read_surf_nc
838 USE yomhook
,ONLY : lhook, dr_hook
839 USE parkind1
,ONLY : jprb
851 CHARACTER(LEN=*),
INTENT(IN) :: hrec
852 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kfield
853 INTEGER,
INTENT(OUT) :: kresp
854 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
855 CHARACTER(LEN=1),
INTENT(IN) :: hdir
861 CHARACTER(LEN=100) :: yfile,yout
862 CHARACTER(LEN=100) :: yname
863 INTEGER :: il1, il2, ivar_id,jret,jdim,indims,itype, infompi
864 INTEGER,
DIMENSION(4) :: idimids,idimlen
865 INTEGER,
DIMENSION(4) :: iret
866 REAL*4,
DIMENSION(:,:),
ALLOCATABLE :: ztab_2d4
867 DOUBLE PRECISION :: xtime0
868 REAL(KIND=JPRB) :: zhook_handle
870 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFN2_NC',0,zhook_handle)
888 ALLOCATE(nworkd2(il1,il2))
892 IF (nrank==npio)
THEN
896 IF (nid_nc.NE.0)
THEN
900 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
901 iret(2)=nf_inq_vartype(nid_nc,ivar_id,itype)
902 iret(3)=nf_inq_varndims(nid_nc,ivar_id,indims)
903 iret(4)=nf_inq_vardimid(nid_nc,ivar_id,idimids(1:indims))
906 jret=nf_inq_dimlen(nid_nc,idimids(jdim),idimlen(jdim))
909 iret(4)=nf_inq_dimname(nid_nc,idimids(1),yname)
913 IF (trim(yname).NE.
'Number_of_points')
THEN
914 ALLOCATE(nworkd2(idimlen(1)*idimlen(2),idimlen(3)))
916 ALLOCATE(nworkd2(idimlen(1),idimlen(2)))
919 IF (itype==nf_int)
THEN
920 iret(2)=nf_get_var_int(nid_nc,ivar_id,nworkd2)
923 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",cwork0)
929 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
939 ELSEIF (hdir/=
'-')
THEN
941 ALLOCATE(nworkd2(0,0))
949 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
953 IF ( nrank==npio )
THEN
957 kfield(:,:) = nworkd2(:,:)
959 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
962 ELSEIF (hdir==
'-')
THEN
967 CALL mpi_bcast(nworkd2,
SIZE(nworkd2)*kind(nworkd2)/4,mpi_integer,npio,ncomm,infompi)
968 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
972 kfield(:,:) = nworkd2(:,:)
987 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFN2_NC',1,zhook_handle)
1001 USE modi_error_read_surf_nc
1003 USE yomhook
,ONLY : lhook, dr_hook
1004 USE parkind1
,ONLY : jprb
1008 include
"netcdf.inc"
1012 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1013 CHARACTER(LEN=40),
INTENT(OUT) :: hfield
1014 INTEGER,
INTENT(OUT) :: kresp
1015 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1019 CHARACTER(LEN=100):: yfile
1020 CHARACTER(LEN=40):: yfield
1021 INTEGER :: ivar_id,jret,jdim,indims
1022 INTEGER,
DIMENSION(4) :: iret
1023 REAL(KIND=JPRB) :: zhook_handle
1025 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFC0_NC',0,zhook_handle)
1030 IF (nid_nc.NE.0)
THEN
1034 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
1038 iret(2)=nf_get_var_text(nid_nc,ivar_id,yfield)
1039 hfield=yfield(:len_trim(yfield))
1041 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
1048 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
1055 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFC0_NC',1,zhook_handle)
1067 USE modi_error_read_surf_nc
1071 USE yomhook
,ONLY : lhook, dr_hook
1072 USE parkind1
,ONLY : jprb
1076 include
"netcdf.inc"
1080 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1081 LOGICAL,
INTENT(OUT) :: ofield
1082 INTEGER,
INTENT(OUT) :: kresp
1083 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1087 CHARACTER(LEN=1) :: yfield
1088 CHARACTER(LEN=100) :: yfile
1089 INTEGER :: ivar_id,jret
1090 INTEGER,
DIMENSION(3) :: iret
1091 REAL(KIND=JPRB) :: zhook_handle
1093 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFL0_NC',0,zhook_handle)
1098 IF (nid_nc.NE.0)
THEN
1102 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
1106 iret(2)=nf_get_var_text(nid_nc,ivar_id,yfield)
1108 iret(3) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
1112 IF (yfield ==
"T") ofield=.true.
1113 IF (yfield ==
"F") ofield=.false.
1117 IF ((nid_nc==0).OR.iret(1).NE.nf_noerr)
THEN
1123 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFL0_NC',1,zhook_handle)
1133 USE modd_surfex_mpi, ONLY : nrank, nproc, ncomm, npio, xtime_npio_read, xtime_comm_read
1139 USE modi_error_read_surf_nc
1143 USE yomhook
,ONLY : lhook, dr_hook
1144 USE parkind1
,ONLY : jprb
1148 include
"netcdf.inc"
1156 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1157 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: ofield
1158 INTEGER,
INTENT(OUT) :: kresp
1159 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1160 CHARACTER(LEN=1),
INTENT(IN) :: hdir
1166 CHARACTER(LEN=100) :: yfile
1167 CHARACTER(LEN=1),
DIMENSION(:),
ALLOCATABLE :: ytab_1d
1169 INTEGER :: ivar_id,jret,jdim,indims
1171 INTEGER,
DIMENSION(1) :: idimids,idimlen
1172 INTEGER,
DIMENSION(2) :: iret
1173 INTEGER,
DIMENSION(:),
POINTER :: imask
1174 DOUBLE PRECISION :: xtime0
1175 REAL(KIND=JPRB) :: zhook_handle
1177 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFL1_NC',0,zhook_handle)
1189 xtime0 = mpi_wtime()
1193 ALLOCATE(lworkd(
SIZE(ofield)))
1196 IF (nrank==npio)
THEN
1200 IF (nid_nc.NE.0)
THEN
1204 iret(1)=nf_inq_varid(nid_nc,hrec,ivar_id)
1205 iret(1)=nf_inq_varndims(nid_nc,ivar_id,indims)
1206 iret(1)=nf_inq_vardimid(nid_nc,ivar_id,idimids)
1208 jret=nf_inq_dimlen(nid_nc,idimids(jdim),idimlen(jdim))
1210 ALLOCATE(ytab_1d(idimlen(1)))
1214 iret(1)=nf_get_var_text(nid_nc,ivar_id,ytab_1d)
1216 DO jret=1,
SIZE(lworkd)
1217 IF (ytab_1d(jret) ==
"T") lworkd(jret)=.true.
1218 IF (ytab_1d(jret) ==
"F") lworkd(jret)=.false.
1221 iret(2) = nf_get_att_text(nid_nc,ivar_id,
"comment",cwork0)
1228 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
1245 xtime_npio_read = xtime_npio_read + (mpi_wtime() - xtime0)
1248 IF (nproc>1 .AND. hdir/=
'A')
THEN
1250 xtime0 = mpi_wtime()
1252 CALL mpi_bcast(lworkd,
SIZE(lworkd),mpi_logical,npio,ncomm,infompi)
1254 xtime_comm_read = xtime_comm_read + (mpi_wtime() - xtime0)
1260 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFL1_NC',1,zhook_handle)
1273 USE modi_error_read_surf_nc
1277 USE yomhook
,ONLY : lhook, dr_hook
1278 USE parkind1
,ONLY : jprb
1282 include
"netcdf.inc"
1286 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1287 INTEGER,
INTENT(OUT) :: kyear
1288 INTEGER,
INTENT(OUT) :: kmonth
1289 INTEGER,
INTENT(OUT) :: kday
1290 REAL,
INTENT(OUT) :: ptime
1291 INTEGER,
INTENT(OUT) :: kresp
1292 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1297 CHARACTER(LEN=18) :: yrecfm
1298 CHARACTER(LEN=100) :: yfile
1299 INTEGER :: ivar_id,jret,jdim,indims,jwrk
1300 INTEGER,
DIMENSION(1) :: idimids,idimlen
1301 INTEGER,
DIMENSION(5) :: iret
1302 INTEGER,
DIMENSION(:),
POINTER :: imask
1304 REAL(KIND=JPRB) :: zhook_handle
1306 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT0_NC',0,zhook_handle)
1314 yrecfm=trim(hrec)//
'-YEAR'
1315 ELSEIF (jwrk == 2)
THEN
1316 yrecfm = trim(hrec)//
'-MONTH'
1317 ELSEIF (jwrk == 3)
THEN
1318 yrecfm = trim(hrec)//
'-DAY'
1319 ELSEIF (jwrk == 4)
THEN
1320 yrecfm=trim(hrec)//
'-TIME'
1324 IF (nid_nc.NE.0)
THEN
1328 jret=nf_inq_varid(nid_nc,yrecfm,ivar_id)
1333 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kyear)
1334 ELSEIF (jwrk==2)
THEN
1335 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kmonth)
1336 ELSEIF (jwrk==3)
THEN
1337 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kday)
1338 ELSEIF (jwrk==4)
THEN
1339 iret(jwrk)=nf_get_var_double(nid_nc,ivar_id,ptime)
1342 iret(5) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
1350 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
1356 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT0_NC',1,zhook_handle)
1368 USE modi_error_read_surf_nc
1372 USE yomhook
,ONLY : lhook, dr_hook
1373 USE parkind1
,ONLY : jprb
1377 include
"netcdf.inc"
1381 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1382 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kyear
1383 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kmonth
1384 INTEGER,
DIMENSION(:),
INTENT(OUT) :: kday
1385 REAL,
DIMENSION(:),
INTENT(OUT) :: ptime
1386 INTEGER,
INTENT(OUT) :: kresp
1387 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1392 CHARACTER(LEN=18) :: yrecfm
1393 CHARACTER(LEN=100) :: yfile
1394 INTEGER :: ivar_id,jret,jdim,indims,jwrk
1395 INTEGER,
DIMENSION(1) :: idimids,idimlen
1396 INTEGER,
DIMENSION(5) :: iret
1397 INTEGER,
DIMENSION(:),
POINTER :: imask
1399 REAL(KIND=JPRB) :: zhook_handle
1401 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT1_NC',0,zhook_handle)
1409 yrecfm=trim(hrec)//
'-YEAR'
1410 ELSEIF (jwrk == 2)
THEN
1411 yrecfm = trim(hrec)//
'-MONTH'
1412 ELSEIF (jwrk == 3)
THEN
1413 yrecfm = trim(hrec)//
'-DAY'
1414 ELSEIF (jwrk == 4)
THEN
1415 yrecfm=trim(hrec)//
'-TIME'
1419 IF (nid_nc.NE.0)
THEN
1423 jret=nf_inq_varid(nid_nc,yrecfm,ivar_id)
1428 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kyear)
1429 ELSEIF (jwrk==2)
THEN
1430 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kmonth)
1431 ELSEIF (jwrk==3)
THEN
1432 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kday)
1433 ELSEIF (jwrk==4)
THEN
1434 iret(jwrk)=nf_get_var_double(nid_nc,ivar_id,ptime)
1437 iret(5) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
1445 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
1451 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT1_NC',1,zhook_handle)
1463 USE modi_error_read_surf_nc
1467 USE yomhook
,ONLY : lhook, dr_hook
1468 USE parkind1
,ONLY : jprb
1472 include
"netcdf.inc"
1476 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1477 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kyear
1478 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kmonth
1479 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: kday
1480 REAL,
DIMENSION(:,:),
INTENT(OUT) :: ptime
1481 INTEGER,
INTENT(OUT) :: kresp
1482 CHARACTER(LEN=100),
INTENT(OUT) :: hcomment
1487 CHARACTER(LEN=18) :: yrecfm
1488 CHARACTER(LEN=100) :: yfile
1489 INTEGER :: ivar_id,jret,jdim,indims,jwrk
1490 INTEGER,
DIMENSION(1) :: idimids,idimlen
1491 INTEGER,
DIMENSION(5) :: iret
1492 INTEGER,
DIMENSION(:),
POINTER :: imask
1494 REAL(KIND=JPRB) :: zhook_handle
1496 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT2_NC',0,zhook_handle)
1504 yrecfm=trim(hrec)//
'-YEAR'
1505 ELSEIF (jwrk == 2)
THEN
1506 yrecfm = trim(hrec)//
'-MONTH'
1507 ELSEIF (jwrk == 3)
THEN
1508 yrecfm = trim(hrec)//
'-DAY'
1509 ELSEIF (jwrk == 4)
THEN
1510 yrecfm=trim(hrec)//
'-TIME'
1514 IF (nid_nc.NE.0)
THEN
1518 jret=nf_inq_varid(nid_nc,yrecfm,ivar_id)
1523 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kyear)
1524 ELSEIF (jwrk==2)
THEN
1525 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kmonth)
1526 ELSEIF (jwrk==3)
THEN
1527 iret(jwrk)=nf_get_var_int(nid_nc,ivar_id,kday)
1528 ELSEIF (jwrk==4)
THEN
1529 iret(jwrk)=nf_get_var_double(nid_nc,ivar_id,ptime)
1532 iret(5) = nf_get_att_text(nid_nc,ivar_id,
"comment",hcomment)
1540 IF ((nid_nc==0).OR.iret(jret).NE.nf_noerr)
THEN
1546 IF (lhook) CALL dr_hook(
'MODE_READ_SURF_NC:READ_SURFT2_NC',1,zhook_handle)
subroutine read_surfx0_nc(HREC, PFIELD, KRESP, HCOMMENT)
subroutine read_surfl0_nc(HREC, OFIELD, KRESP, HCOMMENT)
subroutine read_surfn2_nc(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfn0_nc(HREC, KFIELD, KRESP, HCOMMENT)
subroutine error_read_surf_nc(HREC, KRESP)
subroutine read_surfx2_nc(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfn1_nc(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surft1_nc(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine read_surft0_nc(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine read_surft2_nc(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine read_surfl1_nc(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfx1_nc(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine read_surfc0_nc(HREC, HFIELD, KRESP, HCOMMENT)