36 USE modi_ol_find_file_write
38 USE yomhook
,ONLY : lhook, dr_hook
39 USE parkind1
,ONLY : jprb
47 CHARACTER(LEN=12),
INTENT(IN) :: hrec
48 REAL,
INTENT(IN) :: pfield
49 INTEGER,
INTENT(OUT) :: kresp
50 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
54 INTEGER :: ifile_id,ivar_id,jret
55 INTEGER,
DIMENSION(2) :: iret
56 REAL(KIND=JPRB) :: zhook_handle
58 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_OL',0,zhook_handle)
66 IF (ifile_id /= 0)
THEN
69 iret(1)=nf_inq_varid(ifile_id,hrec,ivar_id)
72 iret(2)=nf_put_var_double(ifile_id,ivar_id,pfield)
78 IF (ifile_id==0 .OR. iret(jret).NE.nf_noerr) kresp=1
81 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_OL',1,zhook_handle)
91 USE modi_ol_find_file_write
93 USE yomhook
,ONLY : lhook, dr_hook
94 USE parkind1
,ONLY : jprb
102 CHARACTER(LEN=12),
INTENT(IN) :: hrec
103 INTEGER,
INTENT(IN) :: kfield
104 INTEGER,
INTENT(OUT) :: kresp
105 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
109 INTEGER :: ifile_id, ivar_id, jret
110 INTEGER,
DIMENSION(2) :: iret
111 REAL(KIND=JPRB) :: zhook_handle
113 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFN0_OL',0,zhook_handle)
121 IF (ifile_id /= 0)
THEN
124 iret(1)=nf_inq_varid(ifile_id,hrec,ivar_id)
127 iret(2)=nf_put_var_int(ifile_id,ivar_id,kfield)
133 IF (ifile_id==0 .OR. iret(jret).NE.nf_noerr) kresp=1
136 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFN0_OL',1,zhook_handle)
146 USE modi_ol_find_file_write
148 USE yomhook
,ONLY : lhook, dr_hook
149 USE parkind1
,ONLY : jprb
157 CHARACTER(LEN=12),
INTENT(IN) :: hrec
158 CHARACTER(LEN=40),
INTENT(IN) :: hfield
159 INTEGER,
INTENT(OUT) :: kresp
160 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
164 CHARACTER(LEN=100) :: yfield
165 INTEGER :: ifile_id, ivar_id, jret
166 INTEGER,
DIMENSION(2) :: iret
167 REAL(KIND=JPRB) :: zhook_handle
169 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFC0_OL',0,zhook_handle)
177 IF (ifile_id /= 0)
THEN
180 iret(1)=nf_inq_varid(ifile_id,hrec,ivar_id)
183 yfield=hfield(:len_trim(hfield))
184 iret(2)=nf_put_var_text(ifile_id,ivar_id,yfield)
190 IF (ifile_id==0 .OR. iret(jret).NE.nf_noerr) kresp=1
193 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFC0_OL',1,zhook_handle)
203 USE modi_ol_find_file_write
206 USE yomhook
,ONLY : lhook, dr_hook
207 USE parkind1
,ONLY : jprb
215 CHARACTER(LEN=12),
INTENT(IN) :: hrec
216 LOGICAL,
INTENT(IN) :: ofield
217 INTEGER,
INTENT(OUT):: kresp
218 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
222 CHARACTER(LEN=1) :: yfield
223 INTEGER :: ifile_id, ivar_id, jret
224 INTEGER,
DIMENSION(2) :: iret
225 REAL(KIND=JPRB) :: zhook_handle
227 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL0_OL',0,zhook_handle)
235 IF (ifile_id /= 0)
THEN
238 iret(1)=nf_inq_varid(ifile_id,hrec,ivar_id)
246 iret(2)=nf_put_var_text(ifile_id,ivar_id,yfield)
253 IF (ifile_id==0 .OR. iret(jret).NE.nf_noerr) kresp=1
256 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL0_OL',1,zhook_handle)
267 USE modd_ol_fileid, ONLY: xid_surf, xid_nature, xid_sea, xid_water, xid_town
271 USE yomhook
,ONLY : lhook, dr_hook
272 USE parkind1
,ONLY : jprb
279 REAL,
INTENT(IN) :: pfield
280 INTEGER,
INTENT(OUT):: kresp
281 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
285 REAL(KIND=JPRB) :: zhook_handle
287 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_TIME_OL',0,zhook_handle)
293 ELSEIF (xtype==2)
THEN
295 ELSEIF (xtype==3)
THEN
297 ELSEIF (xtype==4)
THEN
299 ELSEIF (xtype==5)
THEN
305 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_TIME_OL',1,zhook_handle)
311 INTEGER,
DIMENSION(:),
INTENT(IN) :: ptab
315 REAL(KIND=JPRB) :: zhook_handle
317 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_TIME_OL:WRITE_TIME_DIM',0,zhook_handle)
319 IF (ptab(1).NE.0 .AND. xtype.NE.1)
THEN
321 jret = nf_inq_varid(ptab(1),
'time',ivar_id)
322 IF (jret.EQ.nf_noerr)
THEN
323 jret = nf_put_vars_double(ptab(1),ivar_id,xstartw,1,1,pfield)
331 IF (ptab(jj).NE.ptab(jj-1) .AND. ptab(jj).NE.0)
THEN
332 jret = nf_inq_varid(ptab(jj),
'time',ivar_id)
333 IF (jret.EQ.nf_noerr)
THEN
334 jret = nf_put_vars_double(ptab(jj),ivar_id,xstartw,1,1,pfield)
341 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX0_TIME_OL:WRITE_TIME_DIM',1,zhook_handle)
349 hrec,pfield,kresp,hcomment,hdir)
357 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_write, &
359 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
360 nworkids, nworklen, lwork0
363 xstride, lpartw, xstartw, xcountw
366 USE modi_ol_find_file_write
368 USE yomhook
,ONLY : lhook, dr_hook
369 USE parkind1
,ONLY : jprb
383 CHARACTER(LEN=12),
INTENT(IN) :: hrec
384 REAL,
DIMENSION(:),
INTENT(IN) :: pfield
385 INTEGER,
INTENT(OUT):: kresp
386 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
387 CHARACTER(LEN=1),
INTENT(IN) :: hdir
393 CHARACTER(LEN=100) :: yname
394 INTEGER :: ifile_id, ivar_id, jdim, indims
397 INTEGER,
DIMENSION(4) :: idimids
398 INTEGER,
DIMENSION(4) :: idimlen
399 INTEGER,
DIMENSION(5) :: iret
400 DOUBLE PRECISION :: xtime0
401 REAL,
DIMENSION(:),
ALLOCATABLE :: ztab1d
402 REAL,
DIMENSION(:),
ALLOCATABLE :: zwork_ign
403 REAL(KIND=JPRB) :: zhook_handle
405 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX1_OL',0,zhook_handle)
423 IF (lwork0 .AND. lhook) CALL dr_hook(
"WRITE_SURF_OL:WRITE_SURFX1_OL",1,zhook_handle)
426 IF (nrank==npio)
THEN
438 IF (nwork0 /= 0)
THEN
442 iret(1)=nf_inq_varid(nwork0,hrec,nworkvar)
443 iret(2)=nf_inq_varndims(nwork0,nworkvar,nworkdims)
444 iret(3)=nf_inq_vardimid(nwork0,nworkvar,nworkids(1:nworkdims))
446 jret=nf_inq_dimlen(nwork0,nworkids(jdim),nworklen(jdim))
449 iret(4)=nf_inq_dimname(nwork0,nworkids(1),cwork0)
454 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
468 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
485 CALL mpi_bcast(nwork0,kind(nwork0)/4,mpi_integer,npio,ncomm,infompi)
487 xtime_comm_write = xtime_comm_write + (mpi_wtime() - xtime0)
493 IF (ifile_id/=0)
THEN
495 IF (yname .EQ.
'Number_of_points')
THEN
503 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX1_OL',1,zhook_handle)
515 INTEGER,
INTENT(IN) :: kdim
516 INTEGER,
INTENT(IN) :: kndims
518 REAL,
DIMENSION(KDIM) :: ztab1d
519 REAL,
DIMENSION(KDIM) :: zwork_ign
521 INTEGER,
DIMENSION(KNDIMS) :: istart
522 INTEGER,
DIMENSION(KNDIMS) :: icount
523 INTEGER,
DIMENSION(KNDIMS) :: istride
524 REAL(KIND=JPRB) :: zhook_handle
526 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX1_OL:WRITE_DATAX1_OL',0,zhook_handle)
528 IF(.NOT.
ALLOCATED(nmask_ign))
THEN
544 IF (nrank==npio)
THEN
556 jret=nf_inq_dimname(ifile_id,idimids(jdim),yname)
557 IF ((index(yname,
'time') > 0).OR.(index(yname,
'TIME') >0) &
558 .OR.(index(yname,
'Time')>0.))
THEN
561 istride(jdim)=xstride
564 icount(jdim)=idimlen(jdim)
568 iret(5)=nf_put_vars_double(ifile_id,ivar_id,istart,icount,istride,ztab1d)
570 iret(5)=nf_put_var_double(ifile_id,ivar_id,ztab1d)
578 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
583 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX1_OL:WRITE_DATAX1_OL',1,zhook_handle)
595 USE modd_surfex_mpi, ONLY : nrank, npio, ncomm, nproc, xtime_npio_write, &
598 USE modd_surfex_omp, ONLY : cwork0, nwork0, nworkvar, nworkb, nworkdims, &
599 nworkids, nworklen, nblock
602 lpartw, xstartw, xcountw
604 USE modi_ol_find_file_write
606 USE yomhook
,ONLY : lhook, dr_hook
607 USE parkind1
,ONLY : jprb
619 CHARACTER(LEN=12),
INTENT(IN) :: hrec
620 REAL,
DIMENSION(:,:),
INTENT(IN) :: pfield
621 INTEGER,
INTENT(OUT):: kresp
622 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
623 CHARACTER(LEN=1),
INTENT(IN) :: hdir
629 CHARACTER(LEN=100) :: yname
630 INTEGER :: ifile_id, ivar_id, jdim, indims
633 INTEGER,
DIMENSION(4) :: idimids
634 INTEGER,
DIMENSION(4) :: idimlen
635 INTEGER,
DIMENSION(5) :: iret
636 DOUBLE PRECISION :: xtime0
637 REAL(KIND=JPRB) :: zhook_handle
639 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX2_OL',0,zhook_handle)
651 IF (nrank==npio)
THEN
663 IF ( nwork0 /= 0 )
THEN
668 iret(1)=nf_inq_varid(nwork0,hrec,nworkvar)
669 iret(2)=nf_inq_varndims(nwork0,nworkvar,nworkdims)
671 iret(3)=nf_inq_vardimid(nwork0,nworkvar,nworkids(1:nworkdims))
673 jret=nf_inq_dimlen(nwork0,nworkids(jdim),nworklen(jdim))
674 IF (jret.NE.nf_noerr) nworkb=1
677 iret(4)=nf_inq_dimname(nwork0,nworkids(1),cwork0)
682 IF (nwork0==0 .OR. iret(jret).NE.nf_noerr) nworkb=1
694 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
701 idimlen(:) =
SIZE(pfield,2)
712 CALL mpi_bcast(nwork0,kind(nwork0)/4,mpi_integer,npio,ncomm,infompi)
714 xtime_comm_write = xtime_comm_write + (mpi_wtime() - xtime0)
720 IF (ifile_id/=0)
THEN
722 IF (yname .EQ.
'Number_of_points')
THEN
730 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX2_OL',1,zhook_handle)
744 INTEGER,
INTENT(IN) :: kdim1
745 INTEGER,
INTENT(IN) :: kdim2
746 INTEGER,
INTENT(IN) :: kndims
748 REAL,
DIMENSION(KDIM1,KDIM2) :: ztab2d
749 REAL,
DIMENSION(KDIM1,SIZE(PFIELD,2)) :: zwork_ign
750 INTEGER,
DIMENSION(KNDIMS) :: istart
751 INTEGER,
DIMENSION(KNDIMS) :: istride
752 INTEGER,
DIMENSION(KNDIMS) :: icount
753 REAL(KIND=JPRB) :: zhook_handle
755 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX2_OL:WRITE_DATAX2_OL',0,zhook_handle)
759 IF(.NOT.
ALLOCATED(nmask_ign))
THEN
772 CALL
unpack_same_rank(nmask_ign,zwork_ign(1:
SIZE(nmask_ign),:),ztab2d(:,1:
SIZE(pfield,2)))
775 IF (nrank==npio)
THEN
789 jret=nf_inq_dimname(ifile_id,idimids(jdim),yname)
790 IF ((index(yname,
'time') > 0).OR.(index(yname,
'TIME') >0) &
791 .OR.(index(yname,
'Time')>0.))
THEN
794 istride(jdim)=xstride
797 icount(jdim)=idimlen(jdim)
801 iret(5)=nf_put_vars_double(ifile_id,ivar_id,istart,icount,istride,ztab2d)
803 iret(5)=nf_put_var_double(ifile_id,ivar_id,ztab2d)
811 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
816 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFX2_OL:WRITE_DATAX2_OL',1,zhook_handle)
824 hrec,kfield,kresp,hcomment,hdir)
830 USE yomhook
,ONLY : lhook, dr_hook
831 USE parkind1
,ONLY : jprb
838 CHARACTER(LEN=12),
INTENT(IN) :: hrec
839 INTEGER,
DIMENSION(:),
INTENT(IN) :: kfield
840 INTEGER,
INTENT(OUT) :: kresp
841 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
842 CHARACTER(LEN=1),
INTENT(IN) :: hdir
848 REAL,
DIMENSION(SIZE(KFIELD)) :: zfield
849 REAL(KIND=JPRB) :: zhook_handle
851 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFN1_OL',0,zhook_handle)
855 hrec,zfield,kresp,hcomment,hdir)
857 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFN1_OL',1,zhook_handle)
869 USE modi_ol_find_file_write
872 USE yomhook
,ONLY : lhook, dr_hook
873 USE parkind1
,ONLY : jprb
885 CHARACTER(LEN=*),
INTENT(IN) :: hrec
886 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ofield
887 INTEGER,
INTENT(OUT):: kresp
888 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
889 CHARACTER(LEN=1),
INTENT(IN) :: hdir
895 INTEGER :: ifile_id, ivar_id, jdim, indims
897 INTEGER,
DIMENSION(4) :: idimids
898 INTEGER,
DIMENSION(1) :: idimlen
899 INTEGER,
DIMENSION(4) :: iret
900 DOUBLE PRECISION :: xtime0
901 REAL(KIND=JPRB) :: zhook_handle
903 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL1_OL',0,zhook_handle)
909 IF ( nrank==npio )
THEN
922 IF (ifile_id /= 0)
THEN
926 iret(1)=nf_inq_varid(ifile_id,hrec,ivar_id)
927 iret(2)=nf_inq_varndims(ifile_id,ivar_id,indims)
928 iret(3)=nf_inq_vardimid(ifile_id,ivar_id,idimids(1:indims))
930 jret=nf_inq_dimlen(ifile_id,idimids(jdim),idimlen(jdim))
940 IF (ifile_id==0 .OR. iret(jret).NE.nf_noerr) kresp=1
946 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
951 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL1_OL',1,zhook_handle)
957 INTEGER,
INTENT(IN) :: kdim
959 CHARACTER(LEN=1),
DIMENSION(KDIM) :: ytab1d
960 REAL(KIND=JPRB) :: zhook_handle
962 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL1_OL:WRITE_DATAL1_OL',0,zhook_handle)
965 IF (ofield(jret))
THEN
974 iret(4)=nf_put_var_text(ifile_id,ivar_id,ytab1d)
978 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFL1_OL:WRITE_DATAL1_OL',1,zhook_handle)
992 USE modi_ol_find_file_write
994 USE yomhook
,ONLY : lhook, dr_hook
995 USE parkind1
,ONLY : jprb
1003 CHARACTER(LEN=12),
INTENT(IN) :: hrec
1004 INTEGER,
INTENT(IN) :: kyear
1005 INTEGER,
INTENT(IN) :: kmonth
1006 INTEGER,
INTENT(IN) :: kday
1007 REAL,
INTENT(IN) :: ptime
1008 INTEGER,
INTENT(OUT) :: kresp
1009 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1013 CHARACTER(LEN=12) :: yrecfm
1014 INTEGER :: ifile_id, ivar_id, jret, jwrk
1016 INTEGER,
DIMENSION(3) :: itdate
1017 INTEGER,
DIMENSION(4) :: iret
1018 REAL(KIND=JPRB) :: zhook_handle
1020 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFT0_OL',0,zhook_handle)
1027 yrecfm=trim(hrec)//
'-TDATE'
1030 yrecfm=trim(hrec)//
'-TIME'
1037 IF (ifile_id /= 0)
THEN
1041 iret(1+jwrk*2)=nf_inq_varid(ifile_id,yrecfm,ivar_id)
1046 iret(jwrk)=nf_put_var_int(ifile_id,ivar_id,itdate)
1049 iret(jwrk)=nf_put_var_double(ifile_id,ivar_id,ptime)
1057 IF (ifile_id==0.OR.iret(jret).NE.nf_noerr) kresp=1
1060 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_OL:WRITE_SURFT0_OL',1,zhook_handle)
subroutine write_datax2_ol(KDIM1, KDIM2, KNDIMS)
subroutine write_surft0_ol(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine handle_err(IRET, HNAME)
subroutine write_surfl0_ol(HREC, OFIELD, KRESP, HCOMMENT)
subroutine ol_find_file_write(HNAME, IFILE_ID)
subroutine write_surfc0_ol(HREC, HFIELD, KRESP, HCOMMENT)
subroutine write_datal1_ol(KDIM)
subroutine write_datax1_ol(KDIM, KNDIMS)
subroutine write_surfx0_ol(HREC, PFIELD, KRESP, HCOMMENT)
subroutine write_surfx1_ol(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
subroutine write_time_dim(PTAB)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_surfx2_ol(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfx0_time_ol(PFIELD, KRESP, HCOMMENT)
subroutine write_surfl1_ol(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn1_ol(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn0_ol(HREC, KFIELD, KRESP, HCOMMENT)