30 hrec,pfield,kresp,hcomment)
46 USE modi_def_var_netcdf
48 USE yomhook
,ONLY : lhook, dr_hook
49 USE parkind1
,ONLY : jprb
60 CHARACTER(LEN=12),
INTENT(IN) :: hrec
61 REAL,
INTENT(IN) :: pfield
62 INTEGER,
INTENT(OUT) :: kresp
63 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
67 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
68 INTEGER,
DIMENSION(0) :: idims
70 INTEGER :: ivar_id,jret
71 REAL(KIND=JPRB) :: zhook_handle
73 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',0,zhook_handle)
78 yatt_title(1) =
"comment"
83 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',1,zhook_handle)
92 nid_nc, hrec, hrec, idims, yatt_title, yatt, ivar_id, nf_double)
97 iret = nf_inq_varid(nid_nc,hrec,ivar_id)
98 iret = nf_put_var_double(nid_nc,ivar_id,pfield)
104 IF (nid_nc==0 .OR. iret.NE.nf_noerr) kresp=1
106 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX0_NC',1,zhook_handle)
112 hrec,kfield,kresp,hcomment)
128 USE modi_def_var_netcdf
130 USE yomhook
,ONLY : lhook, dr_hook
131 USE parkind1
,ONLY : jprb
142 CHARACTER(LEN=12),
INTENT(IN) :: hrec
143 INTEGER,
INTENT(IN) :: kfield
144 INTEGER,
INTENT(OUT) :: kresp
145 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
149 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
150 INTEGER,
DIMENSION(0) :: idims
151 INTEGER :: ivar_id, jret
153 REAL(KIND=JPRB) :: zhook_handle
155 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',0,zhook_handle)
160 yatt_title(1) =
"comment"
165 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',1,zhook_handle)
171 IF (nid_nc /= 0)
THEN
176 nid_nc, hrec, hrec, idims, yatt_title, yatt, ivar_id, nf_int)
181 iret=nf_inq_varid(nid_nc,hrec,ivar_id)
182 iret=nf_put_var_int(nid_nc,ivar_id,kfield)
188 IF (nid_nc==0 .OR. iret.NE.nf_noerr) kresp=1
190 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN0_NC',1,zhook_handle)
196 hrec,hfield,kresp,hcomment)
212 USE modi_def_var_netcdf
214 USE yomhook
,ONLY : lhook, dr_hook
215 USE parkind1
,ONLY : jprb
226 CHARACTER(LEN=12),
INTENT(IN) :: hrec
227 CHARACTER(LEN=40),
INTENT(IN) :: hfield
228 INTEGER,
INTENT(OUT) :: kresp
229 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
233 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
234 INTEGER,
DIMENSION(1) :: idims
235 CHARACTER(LEN=1),
DIMENSION(:),
ALLOCATABLE :: yfield
236 INTEGER :: ivar_id, jret
238 REAL(KIND=JPRB) :: zhook_handle
240 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',0,zhook_handle)
244 yatt_title(1) =
"comment"
249 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',1,zhook_handle)
252 IF (nid_nc /= 0)
THEN
256 iret = nf_inq_dimid(nid_nc,
'char_len',idims(1))
259 nid_nc, hrec, hrec, idims, yatt_title, yatt, ivar_id, nf_char,len_trim(hfield))
262 iret = nf_inq_varid(nid_nc,hrec,ivar_id)
265 ALLOCATE(yfield(len(hfield)))
267 yfield(j) = hfield(j:j)
269 iret=nf_put_var_text(nid_nc,ivar_id,yfield)
275 IF (nid_nc==0 .OR. iret.NE.nf_noerr) kresp=1
277 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFC0_NC',1,zhook_handle)
283 hrec,ofield,kresp,hcomment)
299 USE modi_def_var_netcdf
303 USE yomhook
,ONLY : lhook, dr_hook
304 USE parkind1
,ONLY : jprb
315 CHARACTER(LEN=12),
INTENT(IN) :: hrec
316 LOGICAL,
INTENT(IN) :: ofield
317 INTEGER,
INTENT(OUT):: kresp
318 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
322 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
323 INTEGER,
DIMENSION(0) :: idims
324 CHARACTER(LEN=1) :: yfield
327 REAL(KIND=JPRB) :: zhook_handle
329 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',0,zhook_handle)
342 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',1,zhook_handle)
345 yatt_title(1) =
"comment"
348 IF (nid_nc /= 0)
THEN
352 nid_nc, hrec, hrec, idims, yatt_title, yatt, ivar_id, nf_char)
355 iret = nf_inq_varid(nid_nc,hrec,ivar_id)
359 iret=nf_put_var_text(nid_nc,ivar_id,yfield)
368 IF (nid_nc==0 .OR. iret.NE.nf_noerr) kresp=1
370 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL0_NC',1,zhook_handle)
377 hrec,pfield,kresp,hcomment,hdir,hnam_dim)
389 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
390 nworkids, nworklen, lwork0, nblock
392 USE modd_io_surf_nc, ONLY : nid_nc, lmask, nmask, nmask_ign, cfileout_nc,ldef
394 USE modi_def_var_netcdf
398 USE yomhook
,ONLY : lhook, dr_hook
399 USE parkind1
,ONLY : jprb
414 CHARACTER(LEN=12),
INTENT(IN) :: hrec
415 REAL,
DIMENSION(:),
INTENT(IN) :: pfield
416 INTEGER,
INTENT(OUT):: kresp
417 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
418 CHARACTER(LEN=1),
INTENT(IN) :: hdir
422 CHARACTER(LEN=16),
OPTIONAL,
INTENT(IN) :: hnam_dim
425 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
426 INTEGER,
DIMENSION(2) :: idimids
427 INTEGER,
DIMENSION(2) :: idimlen
428 CHARACTER(LEN=100) :: yname
429 CHARACTER(LEN=16) :: ynam_dim
430 INTEGER :: ivar_id, jdim, indims
433 INTEGER,
DIMENSION(5) :: iret
434 REAL(KIND=JPRB) :: zhook_handle
436 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC',0,zhook_handle)
444 yatt_title(1) =
"comment"
447 IF (present(hnam_dim))
THEN
450 ynam_dim =
"Number_of_points"
465 IF (lwork0 .AND. lhook) CALL dr_hook(
"WRITE_SURF_NC:WRITE_SURFX1_NC",1,zhook_handle)
468 IF (nrank==npio)
THEN
470 IF (nid_nc /= 0)
THEN
477 iret(1) = nf_inq_ndims(nid_nc,nworkdims)
478 iret(2) = nf_inq_dimid(nid_nc,trim(ynam_dim),nworkids(1))
480 iret(2) = nf_inq_dimid(nid_nc,
'lon',nworkids(1))
482 iret(2) = nf_inq_dimid(nid_nc,
'xx',nworkids(1))
483 iret(3) = nf_inq_dimid(nid_nc,
'yy',nworkids(2))
485 iret(3) = nf_inq_dimid(nid_nc,
'lat',nworkids(2))
487 nwork0=nf_inq_dimlen(nid_nc,nworkids(2),nworklen(2))
489 nwork0=nf_inq_dimlen(nid_nc,nworkids(1),nworklen(1))
491 iret(4)=nf_inq_dimname(nid_nc,nworkids(1),cwork0)
494 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
500 idimids = nworkids(1:2)
501 idimlen = nworklen(1:2)
525 CALL mpi_bcast(yname,len(yname),mpi_character,npio,ncomm,infompi)
526 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,npio,ncomm,infompi)
527 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,npio,ncomm,infompi)
532 IF (yname.NE.
'lon' .AND. yname.NE.
'xx')
THEN
534 IF (nrank==npio)
THEN
537 nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, nworkb, nf_double,1)
542 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
547 IF (nrank==npio)
THEN
550 nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, nworkb, nf_double)
555 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
562 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC',1,zhook_handle)
576 INTEGER,
INTENT(IN) :: kdim
577 INTEGER,
INTENT(IN) :: kndims
579 REAL,
DIMENSION(KDIM) :: ztab1d
580 REAL,
DIMENSION(KDIM) :: zwork_ign
582 REAL(KIND=JPRB) :: zhook_handle
584 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC:WRITE_DATAX1_NC',0,zhook_handle)
589 IF (nrank==npio) ztab1d(1:
SIZE(pfield)) = pfield(:)
590 ELSEIF(.NOT.
ALLOCATED(nmask_ign))
THEN
606 IF (nrank==npio)
THEN
608 iret(5)=nf_put_var_double(nid_nc,ivar_id,ztab1d)
614 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX1_NC:WRITE_DATAX1_NC',1,zhook_handle)
622 hrec,pfield,kresp,hcomment,hdir,hnam_dim)
634 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
635 nworkids, nworklen, nblock, lwork0
641 USE modi_def_var_netcdf
643 USE yomhook
,ONLY : lhook, dr_hook
644 USE parkind1
,ONLY : jprb
659 CHARACTER(LEN=12),
INTENT(IN) :: hrec
660 REAL,
DIMENSION(:,:),
INTENT(IN) :: pfield
661 INTEGER,
INTENT(OUT):: kresp
662 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
663 CHARACTER(LEN=1),
INTENT(IN) :: hdir
667 CHARACTER(LEN=16),
OPTIONAL,
INTENT(IN) :: hnam_dim
670 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
671 INTEGER,
DIMENSION(3) :: idimids
672 INTEGER,
DIMENSION(3) :: idimlen
673 CHARACTER(LEN=100) :: yname
674 CHARACTER(LEN=16) :: ynam_dim
675 INTEGER :: ivar_id, jdim, indims
678 INTEGER,
DIMENSION(5) :: iret
679 REAL(KIND=JPRB) :: zhook_handle
681 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',0,zhook_handle)
699 yatt_title(1) =
"comment"
702 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',1,zhook_handle)
705 IF (present(hnam_dim))
THEN
708 ynam_dim =
"Number_of_Tile"
711 IF (nrank==npio)
THEN
713 IF (nid_nc /= 0)
THEN
720 iret(1) = nf_inq_ndims(nid_nc,nworkdims)
721 IF ( trim(ynam_dim) ==
"Nemis_snap" )
THEN
722 iret(2) = nf_inq_dimid(nid_nc,
"Nsnap_temp",nworkids(1))
724 iret(2) = nf_inq_dimid(nid_nc,
"Number_of_points",nworkids(1))
727 iret(3) = nf_inq_dimid(nid_nc,trim(ynam_dim),nworkids(2))
729 iret(2) = nf_inq_dimid(nid_nc,
'lon',nworkids(1))
731 iret(2) = nf_inq_dimid(nid_nc,
'xx',nworkids(1))
732 iret(3) = nf_inq_dimid(nid_nc,
'yy',nworkids(2))
734 iret(3) = nf_inq_dimid(nid_nc,
'lat',nworkids(2))
736 iret(4) = nf_inq_dimid(nid_nc,trim(ynam_dim),nworkids(3))
737 nwork0=nf_inq_dimlen(nid_nc,nworkids(3),nworklen(3))
740 nwork0=nf_inq_dimlen(nid_nc,nworkids(jdim),nworklen(jdim))
743 iret(5)=nf_inq_dimname(nid_nc,nworkids(1),cwork0)
746 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
752 idimids = nworkids(1:3)
753 idimlen = nworklen(1:3)
766 idimlen(:) =
SIZE(pfield,2)
777 CALL mpi_bcast(yname,len(yname),mpi_character,npio,ncomm,infompi)
778 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,npio,ncomm,infompi)
779 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,npio,ncomm,infompi)
784 IF (yname .NE.
'lon' .AND. yname .NE.
'xx')
THEN
786 IF (nrank==npio)
THEN
789 nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, nworkb, nf_double)
794 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
799 IF (nrank==npio)
THEN
802 nid_nc, hrec, hrec, idimids(1:3), yatt_title, yatt, nworkb, nf_double)
807 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
814 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC',1,zhook_handle)
828 INTEGER,
INTENT(IN) :: kdim1
829 INTEGER,
INTENT(IN) :: kdim2
830 INTEGER,
INTENT(IN) :: kndims
832 REAL,
DIMENSION(KDIM1,KDIM2) :: ztab2d
833 REAL,
DIMENSION(KDIM1,SIZE(PFIELD,2)) :: zwork_ign
834 REAL(KIND=JPRB) :: zhook_handle
836 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC:WRITE_DATAX2_NC',0,zhook_handle)
840 IF(.NOT.
ALLOCATED(nmask_ign))
THEN
853 CALL
unpack_same_rank(nmask_ign,zwork_ign(1:
SIZE(nmask_ign),:),ztab2d(:,1:
SIZE(pfield,2)))
856 IF (nrank==npio)
THEN
858 iret(5)=nf_put_var_double(nid_nc,ivar_id,ztab2d)
863 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFX2_NC:WRITE_DATAX2_NC',1,zhook_handle)
871 hrec,kfield,kresp,hcomment,hdir,hnam_dim)
883 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
884 nworkids, nworklen, lwork0
886 USE modd_io_surf_nc, ONLY : nid_nc, lmask, nmask, nmask_ign, cfileout_nc, ldef
888 USE modi_def_var_netcdf
892 USE yomhook
,ONLY : lhook, dr_hook
893 USE parkind1
,ONLY : jprb
908 CHARACTER(LEN=12),
INTENT(IN) :: hrec
909 INTEGER,
DIMENSION(:),
INTENT(IN) :: kfield
910 INTEGER,
INTENT(OUT) :: kresp
911 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
912 CHARACTER(LEN=1),
INTENT(IN) :: hdir
916 CHARACTER(LEN=16),
OPTIONAL,
INTENT(IN) :: hnam_dim
920 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
921 INTEGER,
DIMENSION(2) :: idimids
922 INTEGER,
DIMENSION(2) :: idimlen
923 CHARACTER(LEN=100) :: yname
924 CHARACTER(LEN=16) :: ynam_dim
925 INTEGER :: ivar_id, jdim
928 INTEGER,
DIMENSION(5) :: iret
929 REAL(KIND=JPRB) :: zhook_handle
931 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC',0,zhook_handle)
937 yatt_title(1) =
"comment"
940 IF (present(hnam_dim))
THEN
943 ynam_dim =
"Number_of_points"
957 IF (lwork0 .AND. lhook) CALL dr_hook(
"WRITE_SURF_NC:WRITE_SURFN1_NC",1,zhook_handle)
960 IF (nrank==npio)
THEN
962 IF (nid_nc /= 0)
THEN
969 iret(2) = nf_inq_dimid(nid_nc,trim(ynam_dim),nworkids(1))
971 iret(2) = nf_inq_dimid(nid_nc,
'lon',nworkids(1))
973 iret(2) = nf_inq_dimid(nid_nc,
'xx',nworkids(1))
974 iret(3) = nf_inq_dimid(nid_nc,
'yy',nworkids(2))
976 iret(3) = nf_inq_dimid(nid_nc,
'lat',nworkids(2))
978 nwork0=nf_inq_dimlen(nid_nc,nworkids(2),nworklen(2))
980 nwork0=nf_inq_dimlen(nid_nc,nworkids(1),nworklen(1))
982 iret(4)=nf_inq_dimname(nid_nc,nworkids(1),cwork0)
985 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
990 idimids = nworkids(1:2)
991 idimlen = nworklen(1:2)
1013 CALL mpi_bcast(yname,len(yname),mpi_character,npio,ncomm,infompi)
1014 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,npio,ncomm,infompi)
1019 IF (yname.NE.
'lon' .AND. yname.NE.
'xx')
THEN
1021 IF (nrank==npio)
THEN
1024 nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, nworkb, nf_int)
1029 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
1034 IF (nrank==npio)
THEN
1037 nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, nworkb, nf_int)
1042 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
1049 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC',1,zhook_handle)
1063 INTEGER,
INTENT(IN) :: kdim
1065 INTEGER,
DIMENSION(KDIM) :: itab1d
1066 INTEGER,
DIMENSION(KDIM) :: iwork_ign
1068 REAL(KIND=JPRB) :: zhook_handle
1070 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC:WRITE_DATAN1_NC',0,zhook_handle)
1075 IF ( nrank==npio ) itab1d(1:
SIZE(kfield)) = kfield(:)
1076 ELSEIF(.NOT.
ALLOCATED(nmask_ign))
THEN
1092 IF (nrank==npio)
THEN
1094 iret(5)=nf_put_var_int(nid_nc,ivar_id,itab1d)
1099 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN1_NC:WRITE_DATAN1_NC',1,zhook_handle)
1108 hrec,kfield,kresp,hcomment,hdir,hnam_dim)
1120 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
1121 nworkids, nworklen, nblock, lwork0
1127 USE modi_def_var_netcdf
1129 USE yomhook
,ONLY : lhook, dr_hook
1130 USE parkind1
,ONLY : jprb
1134 include
"netcdf.inc"
1145 CHARACTER(LEN=12),
INTENT(IN) :: hrec
1146 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kfield
1147 INTEGER,
INTENT(OUT) :: kresp
1148 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1149 CHARACTER(LEN=1),
INTENT(IN) :: hdir
1153 CHARACTER(LEN=16),
OPTIONAL,
INTENT(IN) :: hnam_dim
1156 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
1157 INTEGER,
DIMENSION(3) :: idimids
1158 INTEGER,
DIMENSION(3) :: idimlen
1159 CHARACTER(LEN=100) :: yname
1160 CHARACTER(LEN=16) :: ynam_dim
1161 INTEGER :: ivar_id, jdim, indims
1164 INTEGER,
DIMENSION(5) :: iret
1165 REAL(KIND=JPRB) :: zhook_handle
1167 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',0,zhook_handle)
1185 yatt_title(1) =
"comment"
1188 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',1,zhook_handle)
1191 IF (present(hnam_dim))
THEN
1194 ynam_dim =
"Number_of_points"
1197 IF (nrank==npio)
THEN
1199 IF (nid_nc /= 0)
THEN
1206 iret(1) = nf_inq_ndims(nid_nc,nworkdims)
1207 iret(2) = nf_inq_dimid(nid_nc,trim(ynam_dim),nworkids(1))
1208 IF (iret(2)==0)
THEN
1209 iret(3) = nf_inq_dimid(nid_nc,
'Number_of_Tile',nworkids(2))
1211 iret(2) = nf_inq_dimid(nid_nc,
'lon',nworkids(1))
1212 IF (iret(2)/=0)
THEN
1213 iret(2) = nf_inq_dimid(nid_nc,
'xx',nworkids(1))
1214 iret(3) = nf_inq_dimid(nid_nc,
'yy',nworkids(2))
1216 iret(3) = nf_inq_dimid(nid_nc,
'lat',nworkids(2))
1218 iret(4) = nf_inq_dimid(nid_nc,
'Number_of_Tile',nworkids(3))
1219 nwork0=nf_inq_dimlen(nid_nc,nworkids(3),nworklen(3))
1222 nwork0=nf_inq_dimlen(nid_nc,nworkids(jdim),nworklen(jdim))
1225 iret(5)=nf_inq_dimname(nid_nc,nworkids(1),cwork0)
1228 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
1234 idimids = nworkids(1:3)
1235 idimlen = nworklen(1:3)
1248 idimlen(:) =
SIZE(kfield,2)
1259 CALL mpi_bcast(yname,len(yname),mpi_character,npio,ncomm,infompi)
1260 CALL mpi_bcast(indims,kind(indims)/4,mpi_integer,npio,ncomm,infompi)
1261 CALL mpi_bcast(idimlen,kind(idimlen)*
SIZE(idimlen)/4,mpi_integer,npio,ncomm,infompi)
1266 IF (yname .NE.
'lon' .AND. yname .NE.
'xx')
THEN
1268 IF (nrank==npio)
THEN
1271 nid_nc, hrec, hrec, idimids(1:2), yatt_title, yatt, nworkb, nf_int)
1276 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
1281 IF (nrank==npio)
THEN
1284 nid_nc, hrec, hrec, idimids(1:3), yatt_title, yatt, nworkb, nf_int)
1289 jret = nf_inq_varid(nid_nc,hrec,ivar_id)
1296 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC',1,zhook_handle)
1310 INTEGER,
INTENT(IN) :: kdim1
1311 INTEGER,
INTENT(IN) :: kdim2
1312 INTEGER,
INTENT(IN) :: kndims
1314 INTEGER,
DIMENSION(KDIM1,KDIM2) :: itab2d
1315 INTEGER,
DIMENSION(KDIM1,KDIM2) :: iwork_ign
1316 REAL(KIND=JPRB) :: zhook_handle
1318 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC:WRITE_DATAN2_NC',0,zhook_handle)
1320 itab2d(:,:) = nundef
1322 IF(.NOT.
ALLOCATED(nmask_ign))
THEN
1335 CALL
unpack_same_rank(nmask_ign,iwork_ign(1:
SIZE(nmask_ign),:),itab2d(:,1:
SIZE(kfield,2)))
1338 IF (nrank==npio)
THEN
1340 iret(5)=nf_put_var_int(nid_nc,ivar_id,itab2d)
1345 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFN2_NC:WRITE_DATAN2_NC',1,zhook_handle)
1353 hrec,ofield,kresp,hcomment,hdir)
1371 USE modi_def_var_netcdf
1375 USE yomhook
,ONLY : lhook, dr_hook
1376 USE parkind1
,ONLY : jprb
1380 include
"netcdf.inc"
1391 CHARACTER(LEN=*),
INTENT(IN) :: hrec
1392 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ofield
1393 INTEGER,
INTENT(OUT):: kresp
1394 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1395 CHARACTER(LEN=1),
INTENT(IN) :: hdir
1401 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
1402 INTEGER,
DIMENSION(1) :: idimids
1403 INTEGER,
DIMENSION(1) :: idimlen
1404 INTEGER :: ivar_id, jdim, indims
1406 INTEGER,
DIMENSION(3) :: iret
1407 REAL(KIND=JPRB) :: zhook_handle
1409 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',0,zhook_handle)
1413 yatt_title(1) =
"comment"
1420 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',1,zhook_handle)
1423 IF (nid_nc /= 0)
THEN
1425 IF (nrank==npio)
THEN
1432 iret(1) = nf_inq_dimid(nid_nc,
'Number_of_covers',idimids(1))
1433 iret(2) = nf_inq_dimlen(nid_nc,idimids(1),idimlen(1))
1437 nid_nc, hrec, hrec, idimids(1:1), yatt_title, yatt, ivar_id, nf_char, 1)
1440 jret = nf_inq_varid(nid_nc, hrec, ivar_id)
1452 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC',1,zhook_handle)
1458 INTEGER,
INTENT(IN) :: kdim
1460 CHARACTER(LEN=1),
DIMENSION(KDIM) :: ytab1d
1461 REAL(KIND=JPRB) :: zhook_handle
1463 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC:WRITE_DATAL1_NC',0,zhook_handle)
1467 DO jret=1,
SIZE(ofield)
1468 IF (ofield(jret))
THEN
1477 iret(3)=nf_put_var_text(nid_nc,ivar_id,ytab1d)
1481 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFL1_NC:WRITE_DATAL1_NC',1,zhook_handle)
1489 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
1505 USE modi_def_var_netcdf
1507 USE yomhook
,ONLY : lhook, dr_hook
1508 USE parkind1
,ONLY : jprb
1512 include
"netcdf.inc"
1519 CHARACTER(LEN=12),
INTENT(IN) :: hrec
1520 INTEGER,
INTENT(IN) :: kyear
1521 INTEGER,
INTENT(IN) :: kmonth
1522 INTEGER,
INTENT(IN) :: kday
1523 REAL,
INTENT(IN) :: ptime
1524 INTEGER,
INTENT(OUT) :: kresp
1525 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1529 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
1530 INTEGER,
DIMENSION(0) :: idimids
1531 CHARACTER(LEN=12) :: yrecfm
1532 INTEGER :: ivar_id, jret, jwrk
1534 INTEGER,
DIMENSION(4) :: iret
1535 REAL(KIND=JPRB) :: zhook_handle
1537 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',0,zhook_handle)
1541 yatt_title(1) =
"comment"
1546 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',1,zhook_handle)
1552 yrecfm = trim(hrec)//
'-YEAR'
1553 ELSEIF (jwrk == 2)
THEN
1554 yrecfm = trim(hrec)//
'-MONTH'
1555 ELSEIF (jwrk == 3)
THEN
1556 yrecfm = trim(hrec)//
'-DAY'
1557 ELSEIF (jwrk == 4)
THEN
1558 yrecfm=trim(hrec)//
'-TIME'
1563 IF (nid_nc /= 0)
THEN
1569 nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf_int)
1571 jret = nf_inq_varid(nid_nc,yrecfm,ivar_id)
1572 iret(jwrk)=nf_put_var_int(nid_nc,ivar_id,kyear)
1574 ELSEIF (jwrk==2)
THEN
1577 nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf_int)
1579 jret = nf_inq_varid(nid_nc,yrecfm,ivar_id)
1580 iret(jwrk)=nf_put_var_int(nid_nc,ivar_id,kmonth)
1582 ELSEIF (jwrk==3)
THEN
1585 nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf_int)
1587 jret = nf_inq_varid(nid_nc,yrecfm,ivar_id)
1588 iret(jwrk)=nf_put_var_int(nid_nc,ivar_id,kday)
1590 ELSEIF (jwrk==4)
THEN
1593 nid_nc, yrecfm, yrecfm, idimids, yatt_title, yatt, ivar_id,nf_double)
1595 jret = nf_inq_varid(nid_nc,yrecfm,ivar_id)
1596 iret(jwrk)=nf_put_var_double(nid_nc,ivar_id,ptime)
1605 IF (nid_nc==0.OR.iret(jret).NE.nf_noerr) kresp=1
1608 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT0_NC',1,zhook_handle)
1614 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
1623 USE yomhook
,ONLY : lhook, dr_hook
1624 USE parkind1
,ONLY : jprb
1628 include
"netcdf.inc"
1634 CHARACTER(LEN=12),
INTENT(IN) :: hrec
1635 INTEGER,
DIMENSION(:),
INTENT(IN) :: kyear
1636 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmonth
1637 INTEGER,
DIMENSION(:),
INTENT(IN) :: kday
1638 REAL,
DIMENSION(:),
INTENT(IN) :: ptime
1639 INTEGER,
INTENT(OUT) :: kresp
1640 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1644 CHARACTER(LEN=100) :: yname
1645 CHARACTER(LEN=12) :: yrecfm
1646 INTEGER :: jret, jwrk, idimid
1647 INTEGER,
DIMENSION(4) :: iret
1648 REAL(KIND=JPRB) :: zhook_handle
1650 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT1_NC',0,zhook_handle)
1657 yrecfm = trim(hrec)//
'-YEAR'
1658 ELSEIF (jwrk == 2)
THEN
1659 yrecfm = trim(hrec)//
'-MONTH'
1660 ELSEIF (jwrk == 3)
THEN
1661 yrecfm = trim(hrec)//
'-DAY'
1662 ELSEIF (jwrk == 4)
THEN
1663 yrecfm=trim(hrec)//
'-TIME'
1666 jret = nf_inq_dimid(nid_nc,
'Number_of_dates ',idimid)
1671 yrecfm,kyear,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1672 ELSEIF (jwrk==2)
THEN
1674 yrecfm,kmonth,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1675 ELSEIF (jwrk==3)
THEN
1677 yrecfm,kday,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1678 ELSEIF (jwrk==4)
THEN
1680 yrecfm,ptime,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1685 yrecfm,kyear,iret(jwrk),hcomment,
'-')
1686 ELSEIF (jwrk==2)
THEN
1688 yrecfm,kmonth,iret(jwrk),hcomment,
'-')
1689 ELSEIF (jwrk==3)
THEN
1691 yrecfm,kday,iret(jwrk),hcomment,
'-')
1692 ELSEIF (jwrk==4)
THEN
1694 yrecfm,ptime,iret(jwrk),hcomment,
'-')
1703 IF (nid_nc==0.OR.iret(jret).NE.nf_noerr) kresp=1
1708 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT1_NC',1,zhook_handle)
1714 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
1723 USE yomhook
,ONLY : lhook, dr_hook
1724 USE parkind1
,ONLY : jprb
1728 include
"netcdf.inc"
1734 CHARACTER(LEN=12),
INTENT(IN) :: hrec
1735 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kyear
1736 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kmonth
1737 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kday
1738 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptime
1739 INTEGER,
INTENT(OUT) :: kresp
1740 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1744 CHARACTER(LEN=100) :: yname
1745 CHARACTER(LEN=12) :: yrecfm
1746 INTEGER :: jret, jwrk, idimid
1747 INTEGER,
DIMENSION(4) :: iret
1748 REAL(KIND=JPRB) :: zhook_handle
1750 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT2_NC',0,zhook_handle)
1757 yrecfm = trim(hrec)//
'-YEAR'
1758 ELSEIF (jwrk == 2)
THEN
1759 yrecfm = trim(hrec)//
'-MONTH'
1760 ELSEIF (jwrk == 3)
THEN
1761 yrecfm = trim(hrec)//
'-DAY'
1762 ELSEIF (jwrk == 4)
THEN
1763 yrecfm=trim(hrec)//
'-TIME'
1766 jret = nf_inq_dimid(nid_nc,
'Number_of_dates ',idimid)
1771 yrecfm,kyear,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1772 ELSEIF (jwrk==2)
THEN
1774 yrecfm,kmonth,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1775 ELSEIF (jwrk==3)
THEN
1777 yrecfm,kday,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1778 ELSEIF (jwrk==4)
THEN
1780 yrecfm,ptime,iret(jwrk),hcomment,
'-',
'Number_of_dates ')
1785 yrecfm,kyear,iret(jwrk),hcomment,
'-')
1786 ELSEIF (jwrk==2)
THEN
1788 yrecfm,kmonth,iret(jwrk),hcomment,
'-')
1789 ELSEIF (jwrk==3)
THEN
1791 yrecfm,kday,iret(jwrk),hcomment,
'-')
1792 ELSEIF (jwrk==4)
THEN
1794 yrecfm,ptime,iret(jwrk),hcomment,
'-')
1803 IF (nid_nc==0.OR.iret(jret).NE.nf_noerr) kresp=1
1808 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_NC:WRITE_SURFT2_NC',1,zhook_handle)
subroutine write_surfl0_nc(DGU, HREC, OFIELD, KRESP, HCOMMENT)
subroutine handle_err(IRET, HNAME)
subroutine write_surfx0_nc(DGU, HREC, PFIELD, KRESP, HCOMMENT)
subroutine write_surfx1_nc(DGU, HREC, PFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_surft1_nc(DGU, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surft2_nc(DGU, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfn1_nc(DGU, HREC, KFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_surfn0_nc(DGU, HREC, KFIELD, KRESP, HCOMMENT)
subroutine write_datan1_nc(KDIM)
subroutine write_datax1_nc(KDIM, KNDIMS)
subroutine write_surfc0_nc(DGU, HREC, HFIELD, KRESP, HCOMMENT)
subroutine write_datan2_nc(KDIM1, KDIM2, KNDIMS)
subroutine write_surfx2_nc(DGU, HREC, PFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_datax2_nc(KDIM1, KDIM2, KNDIMS)
subroutine write_surfn2_nc(DGU, HREC, KFIELD, KRESP, HCOMMENT, HDIR, HNAM_DIM)
subroutine write_surfl1_nc(DGU, HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine def_var_netcdf(DGU, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, HATT_TITLE, HATT_TEXT, KVAR_ID, KTYPE, KLEN)
subroutine write_datal1_nc(KDIM)
subroutine write_surft0_nc(DGU, HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)