40 USE modi_def_var_netcdf
52 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
54 CHARACTER(LEN=12),
INTENT(IN) :: HREC
55 REAL,
INTENT(IN) :: PFIELD
56 INTEGER,
INTENT(OUT) :: KRESP
57 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
62 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
63 INTEGER,
DIMENSION(0) :: IDIMS
65 INTEGER :: IVAR_ID,JRET
66 REAL(KIND=JPRB) :: ZHOOK_HANDLE
68 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',0,zhook_handle)
73 yatt_title(1) =
"comment" 77 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',1,zhook_handle)
90 iret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
91 iret = nf90_put_var(
nid_nc,ivar_id,pfield)
97 IF (
nid_nc==0 .OR. iret.NE.nf90_noerr) kresp=1
99 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',1,zhook_handle)
116 USE modi_def_var_netcdf
129 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
131 CHARACTER(LEN=12),
INTENT(IN) :: HREC
132 INTEGER,
INTENT(IN) :: KFIELD
133 INTEGER,
INTENT(OUT) :: KRESP
134 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
139 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
140 INTEGER,
DIMENSION(0) :: IDIMS
141 INTEGER :: IVAR_ID, JRET
143 REAL(KIND=JPRB) :: ZHOOK_HANDLE
145 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',0,zhook_handle)
150 yatt_title(1) =
"comment" 154 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',1,zhook_handle)
169 iret=nf90_inq_varid(
nid_nc,hrec,ivar_id)
170 iret=nf90_put_var(
nid_nc,ivar_id,kfield)
176 IF (
nid_nc==0 .OR. iret.NE.nf90_noerr) kresp=1
178 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',1,zhook_handle)
195 USE modi_def_var_netcdf
208 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
210 CHARACTER(LEN=12),
INTENT(IN) :: HREC
211 CHARACTER(LEN=40),
INTENT(IN) :: HFIELD
212 INTEGER,
INTENT(OUT) :: KRESP
213 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
218 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
219 INTEGER,
DIMENSION(1) :: IDIMS, ISTART, ICOUNT
220 CHARACTER(LEN=1),
DIMENSION(:),
ALLOCATABLE :: YFIELD
221 INTEGER :: IVAR_ID, JRET
223 REAL(KIND=JPRB) :: ZHOOK_HANDLE
225 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',0,zhook_handle)
229 yatt_title(1) =
"comment" 233 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',1,zhook_handle)
240 iret = nf90_inq_dimid(
nid_nc,
'char_len',idims(1))
242 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idims, yatt_title, yatt, ivar_id, nf90_char,len_trim(hfield))
245 iret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
248 ALLOCATE(yfield(len(hfield)))
250 yfield(j) = hfield(j:j)
253 icount(1) = len(hfield)
254 iret=nf90_put_var(
nid_nc,ivar_id,yfield,istart,icount)
260 IF (
nid_nc==0 .OR. iret.NE.nf90_noerr) kresp=1
262 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',1,zhook_handle)
279 USE modi_def_var_netcdf
294 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
296 CHARACTER(LEN=12),
INTENT(IN) :: HREC
297 LOGICAL,
INTENT(IN) :: OFIELD
298 INTEGER,
INTENT(OUT):: KRESP
299 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
304 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
305 INTEGER,
DIMENSION(0) :: IDIMS
306 CHARACTER(LEN=1) :: YFIELD
309 REAL(KIND=JPRB) :: ZHOOK_HANDLE
311 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',0,zhook_handle)
323 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',1,zhook_handle)
326 yatt_title(1) =
"comment" 336 iret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
340 iret=nf90_put_var(
nid_nc,ivar_id,yfield)
349 IF (
nid_nc==0 .OR. iret.NE.nf90_noerr) kresp=1
351 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',1,zhook_handle)
357 SUBROUTINE write_surfx1_nc ( HSELECT, HREC,PFIELD,KRESP,HCOMMENT,HDIR,HNAM_DIM)
367 USE modi_def_var_netcdf
386 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
388 CHARACTER(LEN=12),
INTENT(IN) :: HREC
389 REAL,
DIMENSION(:),
INTENT(IN) :: PFIELD
390 INTEGER,
INTENT(OUT):: KRESP
391 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
392 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
396 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HNAM_DIM
401 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
402 INTEGER,
DIMENSION(2) :: IDIMIDS
403 INTEGER,
DIMENSION(2) :: IDIMLEN
404 CHARACTER(LEN=100) :: YNAME
405 CHARACTER(LEN=16) :: YNAM_DIM
406 INTEGER :: IVAR_ID, JDIM, INDIMS
409 INTEGER,
DIMENSION(5) :: IRET
410 REAL(KIND=JPRB) :: ZHOOK_HANDLE
412 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC',0,zhook_handle)
418 yatt_title(1) =
"comment" 421 IF (
PRESENT(hnam_dim))
THEN 424 ynam_dim =
"Number_of_points" 433 IF (gfound .AND.
lhook)
CALL dr_hook(
"WRITE_SURF_NC:WRITE_SURFX1_NC",1,zhook_handle)
443 iret(1) = nf90_inquire(
nid_nc,ndimensions=indims)
444 iret(2) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(1))
446 iret(2) = nf90_inq_dimid(
nid_nc,
'lon',idimids(1))
448 iret(2) = nf90_inq_dimid(
nid_nc,
'xx',idimids(1))
449 iret(3) = nf90_inq_dimid(
nid_nc,
'yy',idimids(2))
451 iret(3) = nf90_inq_dimid(
nid_nc,
'lat',idimids(2))
453 iret0=nf90_inquire_dimension(
nid_nc,idimids(2),len=idimlen(2))
455 iret0=nf90_inquire_dimension(
nid_nc,idimids(1),len=idimlen(1))
457 iret(4)=nf90_inquire_dimension(
nid_nc,idimids(1),
name=yname)
460 IF (iret0==0 .OR. iret(jret).NE.nf90_noerr) kresp=1
479 CALL mpi_bcast(yname,len(yname),mpi_character,
npio,
ncomm,infompi)
480 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,
npio,
ncomm,infompi)
481 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,
npio,
ncomm,infompi)
485 IF (yname.NE.
'lon' .AND. yname.NE.
'xx')
THEN 488 CALL def_var_netcdf( hselect,
nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, ivar_id, nf90_double,1)
491 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
497 CALL def_var_netcdf( hselect,
nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, ivar_id, nf90_double)
500 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
505 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC',1,zhook_handle)
521 INTEGER,
INTENT(IN) :: KDIM
522 INTEGER,
INTENT(IN) :: KNDIMS
524 REAL,
DIMENSION(KDIM) :: ZTAB1D
525 REAL,
DIMENSION(KDIM) :: ZWORK_IGN
527 INTEGER,
DIMENSION(2) :: ISTART, ICOUNT
529 REAL(KIND=JPRB) :: ZHOOK_HANDLE
531 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC:WRITE_DATAX1_NC',0,zhook_handle)
536 IF (
nrank==
npio) ztab1d(1:
SIZE(pfield)) = pfield(:)
555 icount(:) = idimlen(1:2)
556 iret(5)=nf90_put_var(
nid_nc,ivar_id,ztab1d,istart,icount)
561 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC:WRITE_DATAX1_NC',1,zhook_handle)
568 SUBROUTINE write_surfx2_nc ( HSELECT, HREC,PFIELD,KRESP,HCOMMENT,HDIR,HNAM_DIM)
582 USE modi_def_var_netcdf
599 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
601 CHARACTER(LEN=12),
INTENT(IN) :: HREC
602 REAL,
DIMENSION(:,:),
INTENT(IN) :: PFIELD
603 INTEGER,
INTENT(OUT):: KRESP
604 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
605 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
609 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HNAM_DIM
614 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
615 INTEGER,
DIMENSION(3) :: IDIMIDS
616 INTEGER,
DIMENSION(3) :: IDIMLEN
617 CHARACTER(LEN=100) :: YNAME
618 CHARACTER(LEN=18) :: YNAM_DIM
619 INTEGER :: IVAR_ID, JDIM, INDIMS
622 INTEGER,
DIMENSION(5) :: IRET
623 REAL(KIND=JPRB) :: ZHOOK_HANDLE
625 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',0,zhook_handle)
638 yatt_title(1) =
"comment" 641 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',1,zhook_handle)
644 IF (
PRESENT(hnam_dim))
THEN 647 ynam_dim =
"Number_of_Patches" 657 iret(1) = nf90_inquire(
nid_nc,ndimensions=indims)
658 IF ( trim(ynam_dim) ==
"Nemis_snap" )
THEN 659 iret(2) = nf90_inq_dimid(
nid_nc,
"Nsnap_temp",idimids(1))
661 iret(2) = nf90_inq_dimid(
nid_nc,
"Number_of_points",idimids(1))
664 iret(3) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(2))
666 iret(2) = nf90_inq_dimid(
nid_nc,
'lon',idimids(1))
668 iret(2) = nf90_inq_dimid(
nid_nc,
'xx',idimids(1))
669 iret(3) = nf90_inq_dimid(
nid_nc,
'yy',idimids(2))
671 iret(3) = nf90_inq_dimid(
nid_nc,
'lat',idimids(2))
673 iret(4) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(3))
674 iret0=nf90_inquire_dimension(
nid_nc,idimids(3),len=idimlen(3))
677 iret0=nf90_inquire_dimension(
nid_nc,idimids(jdim),len=idimlen(jdim))
680 iret(5)=nf90_inquire_dimension(
nid_nc,idimids(1),
name=yname)
683 IF (iret0==0 .OR. iret(jret).NE.nf90_noerr) kresp=1
696 idimlen(:) =
SIZE(pfield,2)
702 CALL mpi_bcast(yname,len(yname),mpi_character,
npio,
ncomm,infompi)
703 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,
npio,
ncomm,infompi)
704 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,
npio,
ncomm,infompi)
708 IF (yname .NE.
'lon' .AND. yname .NE.
'xx')
THEN 712 nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, ivar_id, nf90_double)
715 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
722 nid_nc, hrec, hrec, idimids(1:3), yatt_title, yatt, ivar_id, nf90_double)
725 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
731 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',1,zhook_handle)
747 INTEGER,
INTENT(IN) :: KDIM1
748 INTEGER,
INTENT(IN) :: KDIM2
749 INTEGER,
INTENT(IN) :: KNDIMS
751 REAL,
DIMENSION(KDIM1,KDIM2) :: ZTAB2D
752 REAL,
DIMENSION(KDIM1,SIZE(PFIELD,2)) :: ZWORK_IGN
754 INTEGER,
DIMENSION(3) :: ISTART, ICOUNT
756 REAL(KIND=JPRB) :: ZHOOK_HANDLE
758 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC:WRITE_DATAX2_NC',0,zhook_handle)
763 IF (
nrank==
npio) ztab2d(1:
SIZE(pfield,1),1:
SIZE(pfield,2)) = pfield(:,:)
782 icount(:) = idimlen(1:3)
783 iret(5)=nf90_put_var(
nid_nc,ivar_id,ztab2d,istart,icount)
787 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC:WRITE_DATAX2_NC',1,zhook_handle)
794 SUBROUTINE write_surfx3_nc ( HSELECT, HREC,PFIELD,KRESP,HCOMMENT,HDIR,HNAM_DIM)
808 USE modi_def_var_netcdf
826 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
828 CHARACTER(LEN=12),
INTENT(IN) :: HREC
829 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PFIELD
830 INTEGER,
INTENT(OUT):: KRESP
831 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
832 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
836 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HNAM_DIM
841 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
842 INTEGER,
DIMENSION(4) :: IDIMIDS
843 INTEGER,
DIMENSION(4) :: IDIMLEN
844 CHARACTER(LEN=100) :: YNAME
845 CHARACTER(LEN=18) :: YNAM_DIM
846 INTEGER :: IVAR_ID, JDIM, INDIMS
849 INTEGER,
DIMENSION(5) :: IRET
850 REAL(KIND=JPRB) :: ZHOOK_HANDLE
852 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX3_NC',0,zhook_handle)
865 yatt_title(1) =
"comment" 868 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX3_NC',1,zhook_handle)
871 IF (
PRESENT(hnam_dim))
THEN 874 CALL abor1_sfx(
"WRITE_SURFX3_NC: TO WRITE A 3D FIELD, HNAM_DIM IS NEEDED")
884 iret(1) = nf90_inquire(
nid_nc,ndimensions=indims)
885 iret(2) = nf90_inq_dimid(
nid_nc,
"Number_of_points",idimids(1))
887 iret(3) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(2))
888 iret(4) = nf90_inq_dimid(
nid_nc,
"Number_of_Patches",idimids(3))
890 iret(2) = nf90_inq_dimid(
nid_nc,
'lon',idimids(1))
892 iret(2) = nf90_inq_dimid(
nid_nc,
'xx',idimids(1))
893 iret(3) = nf90_inq_dimid(
nid_nc,
'yy',idimids(2))
895 iret(3) = nf90_inq_dimid(
nid_nc,
'lat',idimids(2))
897 iret(4) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(3))
898 iret0=nf90_inquire_dimension(
nid_nc,idimids(3),len=idimlen(3))
899 iret(5) = nf90_inq_dimid(
nid_nc,
"Number_of_Patches",idimids(4))
900 iret0=nf90_inquire_dimension(
nid_nc,idimids(4),len=idimlen(4))
903 iret0=nf90_inquire_dimension(
nid_nc,idimids(jdim),len=idimlen(jdim))
906 iret(5)=nf90_inquire_dimension(
nid_nc,idimids(1),
name=yname)
909 IF (iret0==0 .OR. iret(jret).NE.nf90_noerr) kresp=1
922 idimlen(:) =
SIZE(pfield,2)
928 CALL mpi_bcast(yname,len(yname),mpi_character,
npio,
ncomm,infompi)
929 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,
npio,
ncomm,infompi)
930 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,
npio,
ncomm,infompi)
934 IF (yname .NE.
'lon' .AND. yname .NE.
'xx')
THEN 938 nid_nc, hrec, hrec, idimids(1:3), yatt_title, yatt, ivar_id, nf90_double)
941 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
948 nid_nc, hrec, hrec, idimids(1:4), yatt_title, yatt, ivar_id, nf90_double)
951 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
952 CALL write_datax3_nc(idimlen(1)*idimlen(2),idimlen(3),idimlen(4),indims)
957 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',1,zhook_handle)
973 INTEGER,
INTENT(IN) :: KDIM1
974 INTEGER,
INTENT(IN) :: KDIM2
975 INTEGER,
INTENT(IN) :: KDIM3
976 INTEGER,
INTENT(IN) :: KNDIMS
978 REAL,
DIMENSION(KDIM1,KDIM2,KDIM3) :: ZTAB3D
979 REAL,
DIMENSION(KDIM1,SIZE(PFIELD,2),SIZE(PFIELD,3)) :: ZWORK_IGN
981 INTEGER,
DIMENSION(4) :: ISTART, ICOUNT
983 REAL(KIND=JPRB) :: ZHOOK_HANDLE
985 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC:WRITE_DATAX2_NC',0,zhook_handle)
990 IF (
nrank==
npio) ztab3d(1:
SIZE(pfield,1),1:
SIZE(pfield,2),1:
SIZE(pfield,3)) = pfield(:,:,:)
1009 icount(:) = idimlen(1:4)
1010 iret(5)=nf90_put_var(
nid_nc,ivar_id,ztab3d,istart,icount)
1014 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX3_NC:WRITE_DATAX3_NC',1,zhook_handle)
1021 SUBROUTINE write_surfn1_nc ( HSELECT, HREC,KFIELD,KRESP,HCOMMENT,HDIR,HNAM_DIM)
1033 USE modi_def_var_netcdf
1052 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1054 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1055 INTEGER,
DIMENSION(:),
INTENT(IN) :: KFIELD
1056 INTEGER,
INTENT(OUT) :: KRESP
1057 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1058 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
1062 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HNAM_DIM
1068 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
1069 INTEGER,
DIMENSION(2) :: IDIMIDS
1070 INTEGER,
DIMENSION(2) :: IDIMLEN
1071 CHARACTER(LEN=100) :: YNAME
1072 CHARACTER(LEN=16) :: YNAM_DIM
1073 INTEGER :: IVAR_ID, JDIM
1076 INTEGER,
DIMENSION(5) :: IRET
1077 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1079 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC',0,zhook_handle)
1085 yatt_title(1) =
"comment" 1088 IF (
PRESENT(hnam_dim))
THEN 1091 ynam_dim =
"Number_of_points" 1101 IF (gfound .AND.
lhook)
CALL dr_hook(
"WRITE_SURF_NC:WRITE_SURFN1_NC",1,zhook_handle)
1111 iret(2) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(1))
1112 IF (iret(2)/=0)
THEN 1113 iret(2) = nf90_inq_dimid(
nid_nc,
'lon',idimids(1))
1114 IF (iret(2)/=0)
THEN 1115 iret(2) = nf90_inq_dimid(
nid_nc,
'xx',idimids(1))
1116 iret(3) = nf90_inq_dimid(
nid_nc,
'yy',idimids(2))
1118 iret(3) = nf90_inq_dimid(
nid_nc,
'lat',idimids(2))
1120 iret0=nf90_inquire_dimension(
nid_nc,idimids(2),len=idimlen(2))
1122 iret0=nf90_inquire_dimension(
nid_nc,idimids(1),len=idimlen(1))
1124 iret(4)=nf90_inquire_dimension(
nid_nc,idimids(1),
name=yname)
1127 IF (iret0==0 .OR. iret(jret).NE.nf90_noerr) kresp=1
1144 CALL mpi_bcast(yname,len(yname),mpi_character,
npio,
ncomm,infompi)
1145 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,
npio,
ncomm,infompi)
1149 IF (yname.NE.
'lon' .AND. yname.NE.
'xx')
THEN 1152 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, ivar_id, nf90_int)
1155 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
1161 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, ivar_id, nf90_int)
1164 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
1169 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC',1,zhook_handle)
1185 INTEGER,
INTENT(IN) :: KDIM
1187 INTEGER,
DIMENSION(KDIM) :: ITAB1D
1188 INTEGER,
DIMENSION(KDIM) :: IWORK_IGN
1190 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1192 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC:WRITE_DATAN1_NC',0,zhook_handle)
1197 IF (
nrank==
npio ) itab1d(1:
SIZE(kfield)) = kfield(:)
1215 iret(5)=nf90_put_var(
nid_nc,ivar_id,itab1d)
1219 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC:WRITE_DATAN1_NC',1,zhook_handle)
1227 SUBROUTINE write_surfn2_nc ( HSELECT, HREC,KFIELD,KRESP,HCOMMENT,HDIR,HNAM_DIM)
1241 USE modi_def_var_netcdf
1258 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1260 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1261 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KFIELD
1262 INTEGER,
INTENT(OUT) :: KRESP
1263 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1264 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
1268 CHARACTER(LEN=*),
OPTIONAL,
INTENT(IN) :: HNAM_DIM
1273 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
1274 INTEGER,
DIMENSION(3) :: IDIMIDS
1275 INTEGER,
DIMENSION(3) :: IDIMLEN
1276 CHARACTER(LEN=100) :: YNAME
1277 CHARACTER(LEN=16) :: YNAM_DIM
1278 INTEGER :: IVAR_ID, JDIM, INDIMS
1281 INTEGER,
DIMENSION(5) :: IRET
1282 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1284 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',0,zhook_handle)
1297 yatt_title(1) =
"comment" 1300 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',1,zhook_handle)
1303 IF (
PRESENT(hnam_dim))
THEN 1306 ynam_dim =
"Number_of_points" 1316 iret(1) = nf90_inquire(
nid_nc,ndimensions=indims)
1317 iret(2) = nf90_inq_dimid(
nid_nc,trim(ynam_dim),idimids(1))
1318 IF (iret(2)==0)
THEN 1319 iret(3) = nf90_inq_dimid(
nid_nc,
'Number_of_Tile',idimids(2))
1321 iret(2) = nf90_inq_dimid(
nid_nc,
'lon',idimids(1))
1322 IF (iret(2)/=0)
THEN 1323 iret(2) = nf90_inq_dimid(
nid_nc,
'xx',idimids(1))
1324 iret(3) = nf90_inq_dimid(
nid_nc,
'yy',idimids(2))
1326 iret(3) = nf90_inq_dimid(
nid_nc,
'lat',idimids(2))
1328 iret(4) = nf90_inq_dimid(
nid_nc,
'Number_of_Tile',idimids(3))
1329 iret0=nf90_inquire_dimension(
nid_nc,idimids(3),len=idimlen(3))
1332 iret0=nf90_inquire_dimension(
nid_nc,idimids(jdim),len=idimlen(jdim))
1335 iret(5)=nf90_inquire_dimension(
nid_nc,idimids(1),
name=yname)
1338 IF (iret0==0 .OR. iret(jret).NE.nf90_noerr) kresp=1
1351 idimlen(:) =
SIZE(kfield,2)
1357 CALL mpi_bcast(yname,len(yname),mpi_character,
npio,
ncomm,infompi)
1358 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,
npio,
ncomm,infompi)
1359 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,
npio,
ncomm,infompi)
1363 IF (yname .NE.
'lon' .AND. yname .NE.
'xx')
THEN 1366 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, ivar_id, nf90_int)
1369 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
1375 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idimids(1:3), yatt_title, yatt, ivar_id, nf90_int)
1378 jret = nf90_inq_varid(
nid_nc,hrec,ivar_id)
1383 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',1,zhook_handle)
1399 INTEGER,
INTENT(IN) :: KDIM1
1400 INTEGER,
INTENT(IN) :: KDIM2
1401 INTEGER,
INTENT(IN) :: KNDIMS
1403 INTEGER,
DIMENSION(KDIM1,KDIM2) :: ITAB2D
1404 INTEGER,
DIMENSION(KDIM1,KDIM2) :: IWORK_IGN
1405 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1407 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC:WRITE_DATAN2_NC',0,zhook_handle)
1428 iret(5)=nf90_put_var(
nid_nc,ivar_id,itab2d)
1432 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC:WRITE_DATAN2_NC',1,zhook_handle)
1439 SUBROUTINE write_surfl1_nc ( HSELECT, HREC,OFIELD,KRESP,HCOMMENT,HDIR)
1453 USE modi_def_var_netcdf
1472 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1474 CHARACTER(LEN=*),
INTENT(IN) :: HREC
1475 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OFIELD
1476 INTEGER,
INTENT(OUT):: KRESP
1477 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1478 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
1485 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
1486 INTEGER,
DIMENSION(1) :: IDIMIDS
1487 INTEGER,
DIMENSION(1) :: IDIMLEN
1488 INTEGER :: IVAR_ID, JDIM, INDIMS
1490 INTEGER,
DIMENSION(3) :: IRET
1491 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1493 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',0,zhook_handle)
1497 yatt_title(1) =
"comment" 1503 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',1,zhook_handle)
1513 IF (hrec(1:2)==
'L_')
THEN 1514 iret(1) = nf90_inq_dimid(
nid_nc,
'Nb_of_input_data',idimids(1))
1516 iret(1) = nf90_inq_dimid(
nid_nc,
'Number_of_covers',idimids(1))
1518 iret(2) = nf90_inquire_dimension(
nid_nc,idimids(1),len=idimlen(1))
1521 CALL def_var_netcdf(hselect,
nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, ivar_id, nf90_char, 1)
1524 jret = nf90_inq_varid(
nid_nc, hrec, ivar_id)
1532 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',1,zhook_handle)
1538 INTEGER,
INTENT(IN) :: KDIM
1540 CHARACTER(LEN=1),
DIMENSION(KDIM) :: YTAB1D
1541 INTEGER,
DIMENSION(1) :: ISTART, ICOUNT
1542 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1544 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC:WRITE_DATAL1_NC',0,zhook_handle)
1548 DO jret=1,min(
SIZE(ofield),
SIZE(ytab1d))
1549 IF (ofield(jret))
THEN 1560 iret(3)=nf90_put_var(
nid_nc,ivar_id,ytab1d,istart,icount)
1564 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC:WRITE_DATAL1_NC',1,zhook_handle)
1571 SUBROUTINE write_surft0_nc ( HSELECT, HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1583 USE modi_def_var_netcdf
1596 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1598 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1599 INTEGER,
INTENT(IN) :: KYEAR
1600 INTEGER,
INTENT(IN) :: KMONTH
1601 INTEGER,
INTENT(IN) :: KDAY
1602 REAL,
INTENT(IN) :: PTIME
1603 INTEGER,
INTENT(OUT) :: KRESP
1604 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1609 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE, YATT
1610 INTEGER,
DIMENSION(0) :: IDIMIDS
1611 CHARACTER(LEN=12) :: YRECFM
1612 INTEGER :: IVAR_ID, JRET, JWRK
1614 INTEGER,
DIMENSION(4) :: IRET
1615 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1617 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',0,zhook_handle)
1621 yatt_title(1) =
"comment" 1625 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',1,zhook_handle)
1631 yrecfm = trim(hrec)//
'-YEAR' 1632 ELSEIF (jwrk == 2)
THEN 1633 yrecfm = trim(hrec)//
'-MONTH' 1634 ELSEIF (jwrk == 3)
THEN 1635 yrecfm = trim(hrec)//
'-DAY' 1636 ELSEIF (jwrk == 4)
THEN 1637 yrecfm=trim(hrec)//
'-TIME' 1647 CALL def_var_netcdf(hselect,
nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf90_int)
1649 jret = nf90_inq_varid(
nid_nc,yrecfm,ivar_id)
1650 iret(jwrk)=nf90_put_var(
nid_nc,ivar_id,kyear)
1652 ELSEIF (jwrk==2)
THEN 1654 CALL def_var_netcdf(hselect,
nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf90_int)
1656 jret = nf90_inq_varid(
nid_nc,yrecfm,ivar_id)
1657 iret(jwrk)=nf90_put_var(
nid_nc,ivar_id,kmonth)
1659 ELSEIF (jwrk==3)
THEN 1661 CALL def_var_netcdf(hselect,
nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf90_int)
1663 jret = nf90_inq_varid(
nid_nc,yrecfm,ivar_id)
1664 iret(jwrk)=nf90_put_var(
nid_nc,ivar_id,kday)
1666 ELSEIF (jwrk==4)
THEN 1668 CALL def_var_netcdf(hselect,
nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf90_double)
1670 jret = nf90_inq_varid(
nid_nc,yrecfm,ivar_id)
1671 iret(jwrk)=nf90_put_var(
nid_nc,ivar_id,ptime)
1680 IF (
nid_nc==0.OR.iret(jret).NE.nf90_noerr) kresp=1
1683 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',1,zhook_handle)
1688 SUBROUTINE write_surft1_nc ( HSELECT, HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1705 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1707 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1708 INTEGER,
DIMENSION(:),
INTENT(IN) :: KYEAR
1709 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMONTH
1710 INTEGER,
DIMENSION(:),
INTENT(IN) :: KDAY
1711 REAL,
DIMENSION(:),
INTENT(IN) :: PTIME
1712 INTEGER,
INTENT(OUT) :: KRESP
1713 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1717 CHARACTER(LEN=100) :: YNAME
1718 CHARACTER(LEN=12) :: YRECFM
1719 INTEGER :: JRET, JWRK, IDIMID
1720 INTEGER,
DIMENSION(4) :: IRET
1721 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1723 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT1_NC',0,zhook_handle)
1730 yrecfm = trim(hrec)//
'-YEAR' 1731 ELSEIF (jwrk == 2)
THEN 1732 yrecfm = trim(hrec)//
'-MONTH' 1733 ELSEIF (jwrk == 3)
THEN 1734 yrecfm = trim(hrec)//
'-DAY' 1735 ELSEIF (jwrk == 4)
THEN 1736 yrecfm=trim(hrec)//
'-TIME' 1739 jret = nf90_inq_dimid(
nid_nc,
'Number_of_dates ',idimid)
1743 CALL write_surfn1_nc(hselect, yrecfm,kyear,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1744 ELSEIF (jwrk==2)
THEN 1745 CALL write_surfn1_nc(hselect, yrecfm,kmonth,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1746 ELSEIF (jwrk==3)
THEN 1747 CALL write_surfn1_nc(hselect, yrecfm,kday,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1748 ELSEIF (jwrk==4)
THEN 1749 CALL write_surfx1_nc(hselect, yrecfm,ptime,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1754 ELSEIF (jwrk==2)
THEN 1756 ELSEIF (jwrk==3)
THEN 1758 ELSEIF (jwrk==4)
THEN 1768 IF (
nid_nc==0.OR.iret(jret).NE.nf90_noerr) kresp=1
1771 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT1_NC',1,zhook_handle)
1776 SUBROUTINE write_surft2_nc ( HSELECT, HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1793 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
1795 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1796 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KYEAR
1797 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KMONTH
1798 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KDAY
1799 REAL,
DIMENSION(:,:),
INTENT(IN) :: PTIME
1800 INTEGER,
INTENT(OUT) :: KRESP
1801 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1805 CHARACTER(LEN=100) :: YNAME
1806 CHARACTER(LEN=12) :: YRECFM
1807 INTEGER :: JRET, JWRK, IDIMID
1808 INTEGER,
DIMENSION(4) :: IRET
1809 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1811 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT2_NC',0,zhook_handle)
1818 yrecfm = trim(hrec)//
'-YEAR' 1819 ELSEIF (jwrk == 2)
THEN 1820 yrecfm = trim(hrec)//
'-MONTH' 1821 ELSEIF (jwrk == 3)
THEN 1822 yrecfm = trim(hrec)//
'-DAY' 1823 ELSEIF (jwrk == 4)
THEN 1824 yrecfm=trim(hrec)//
'-TIME' 1827 jret = nf90_inq_dimid(
nid_nc,
'Number_of_dates ',idimid)
1831 CALL write_surfn2_nc(hselect, yrecfm,kyear,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1832 ELSEIF (jwrk==2)
THEN 1833 CALL write_surfn2_nc(hselect, yrecfm,kmonth,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1834 ELSEIF (jwrk==3)
THEN 1835 CALL write_surfn2_nc(hselect, yrecfm,kday,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1836 ELSEIF (jwrk==4)
THEN 1837 CALL write_surfx2_nc(hselect, yrecfm,ptime,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1842 ELSEIF (jwrk==2)
THEN 1844 ELSEIF (jwrk==3)
THEN 1846 ELSEIF (jwrk==4)
THEN 1856 IF (
nid_nc==0.OR.iret(jret).NE.nf90_noerr) kresp=1
1859 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT2_NC',1,zhook_handle)
subroutine write_surfn0_nc(HSELECT, HREC, KFIELD, KRESP, HCOMMENT)
subroutine write_surfx0_nc(HSELECT, HREC, PFIELD, KRESP, HCOMMENT)
character(len=28), save cfileout_nc
subroutine handle_err(IRET, HNAME)
subroutine write_surfx2_nc(HSELECT, HREC, PFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_surfx3_nc(HSELECT, HREC, PFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_surfl1_nc(HSELECT, HREC, OFIELD, KRESP, HCOMMENT, HDIR)
quick &counting sorts only inumt inumt name
subroutine write_surft2_nc(HSELECT, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfl0_nc(HSELECT, HREC, OFIELD, KRESP, HCOMMENT)
subroutine abor1_sfx(YTEXT)
subroutine write_datan1_nc(KDIM)
subroutine write_surft0_nc(HSELECT, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_datax1_nc(KDIM, KNDIMS)
integer, parameter nundef
subroutine write_datan2_nc(KDIM1, KDIM2, KNDIMS)
subroutine def_var_netcdf(HSELECT, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, H
subroutine write_surft1_nc(HSELECT, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfc0_nc(HSELECT, HREC, HFIELD, KRESP, HCOMMENT)
subroutine write_surfn1_nc(HSELECT, HREC, KFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
integer, dimension(:), pointer nmask
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_datax2_nc(KDIM1, KDIM2, KNDIMS)
subroutine write_surfn2_nc(HSELECT, HREC, KFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
integer, dimension(:), allocatable nmask_ign
subroutine write_datal1_nc(KDIM)
subroutine write_surfx1_nc(HSELECT, HREC, PFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_datax3_nc(KDIM1, KDIM2, KDIM3, KNDIMS)