28 hrec,pfield,kresp,hcomment)
43 USE modi_error_write_surf_fa
45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
54 CHARACTER(LEN=12),
INTENT(IN) :: hrec
55 REAL,
INTENT(IN) :: pfield
56 INTEGER,
INTENT(OUT):: kresp
57 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
61 CHARACTER(LEN=18):: yname
62 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
63 REAL(KIND=JPRB) :: zhook_handle
65 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:ERROR_WRITE_SURF_FA:WRITE_SURFX0_FA',0,zhook_handle)
71 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX0_FA',1,zhook_handle)
75 CALL faveur(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
77 CALL fagote(kresp,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
80 yname=trim(cprefix1d)//trim(hrec)
81 CALL
faecr_r(kresp,nunit_fa,yname,pfield)
88 CALL fagote(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
91 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX0_FA',1,zhook_handle)
97 hrec,kfield,kresp,hcomment)
112 USE modi_error_write_surf_fa
114 USE yomhook
,ONLY : lhook, dr_hook
115 USE parkind1
,ONLY : jprb
123 CHARACTER(LEN=12),
INTENT(IN) :: hrec
124 INTEGER,
INTENT(IN) :: kfield
125 INTEGER,
INTENT(OUT):: kresp
126 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
130 CHARACTER(LEN=18):: yname
131 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
132 REAL(KIND=JPRB) :: zhook_handle
134 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN0_FA',0,zhook_handle)
140 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN0_FA',1,zhook_handle)
144 CALL faveur(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
146 CALL fagote(kresp,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
149 yname=trim(cprefix1d)//trim(hrec)
150 CALL
faecr_i(kresp,nunit_fa,yname,kfield)
157 CALL fagote(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
160 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN0_FA',1,zhook_handle)
166 hrec,ofield,kresp,hcomment)
181 USE modi_error_write_surf_fa
183 USE yomhook
,ONLY : lhook, dr_hook
184 USE parkind1
,ONLY : jprb
192 CHARACTER(LEN=12),
INTENT(IN) :: hrec
193 LOGICAL,
INTENT(IN) :: ofield
194 INTEGER,
INTENT(OUT):: kresp
195 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
199 CHARACTER(LEN=18):: yname
200 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
201 REAL(KIND=JPRB) :: zhook_handle
203 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL0_FA',0,zhook_handle)
209 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL0_FA',1,zhook_handle)
213 CALL faveur(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
215 CALL fagote(kresp,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
218 yname=trim(cprefix1d)//trim(hrec)
219 CALL
faecr_l(kresp,nunit_fa,yname,ofield)
226 CALL fagote(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
229 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL0_FA',1,zhook_handle)
235 hrec,hfield,kresp,hcomment)
250 USE modi_error_write_surf_fa
252 USE yomhook
,ONLY : lhook, dr_hook
253 USE parkind1
,ONLY : jprb
261 CHARACTER(LEN=12),
INTENT(IN) :: hrec
262 CHARACTER(LEN=40),
INTENT(IN) :: hfield
263 INTEGER,
INTENT(OUT) :: kresp
264 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
268 CHARACTER,
DIMENSION(40) :: yfield
269 CHARACTER(LEN=18) :: yname
270 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
271 REAL(KIND=JPRB) :: zhook_handle
273 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFC0_FA',0,zhook_handle)
279 IF (lwork0.AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFC0_FA',1,zhook_handle)
283 CALL faveur(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
285 CALL fagote(kresp,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
288 READ(hfield,
'(40A1)') yfield
289 yname=trim(cprefix1d)//trim(hrec)
290 CALL
faecr_c(kresp,nunit_fa,yname,40,yfield)
297 CALL fagote(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
300 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFC0_FA',1,zhook_handle)
306 hrec,kl,pfield,kresp,hcomment,hdir)
323 USE modi_error_write_surf_fa
326 USE yomhook
,ONLY : lhook, dr_hook
327 USE parkind1
,ONLY : jprb
339 CHARACTER(LEN=12),
INTENT(IN) :: hrec
340 INTEGER,
INTENT(IN) :: kl
341 REAL,
DIMENSION(KL),
INTENT(IN) :: pfield
342 INTEGER,
INTENT(OUT):: kresp
343 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
344 CHARACTER(LEN=1),
INTENT(IN) :: hdir
350 INTEGER :: i,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
351 REAL :: zmean, zcount
353 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD))) :: zwork
354 REAL(KIND=JPRB) :: zhook_handle
356 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX1_FA',0,zhook_handle)
367 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX1_FA',1,zhook_handle)
373 zwork(1:kl)=pfield(1:kl)
374 zwork(kl+1:nfull)=sum(pfield(1:kl))/
REAL(kl)
377 IF (nrank==npio)
THEN
386 CALL faveur(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
388 CALL fagote(nworkb,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
389 CALL faienc(nworkb,nunit_fa,cprefix1d,0,hrec,zwork,.false.)
392 CALL fagote(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
397 IF(zwork(i)/=xundef)
THEN
398 zmean =zmean+zwork(i)
402 IF (zcount.GT.0.0) zmean=zmean/zcount
403 WHERE(zwork(:)==xundef)zwork(:)=zmean
404 CALL faienc(nworkb,nunit_fa,cprefix1d,0,hrec,zwork,.false.)
411 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
418 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX1_FA',1,zhook_handle)
424 hrec,kl1,kl2,pfield,kresp,hcomment,hdir)
437 cprefix2d, lfanocompact
441 USE modi_error_write_surf_fa
444 USE yomhook
,ONLY : lhook, dr_hook
445 USE parkind1
,ONLY : jprb
457 CHARACTER(LEN=12),
INTENT(IN) :: hrec
458 INTEGER,
INTENT(IN) :: kl1
459 INTEGER,
INTENT(IN) :: kl2
460 REAL,
DIMENSION(KL1,KL2),
INTENT(IN) :: pfield
461 INTEGER,
INTENT(OUT):: kresp
462 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
463 CHARACTER(LEN=1),
INTENT(IN) :: hdir
469 CHARACTER(LEN=4) :: yprefix
470 CHARACTER(LEN=3) :: ypatch
472 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
474 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2)) :: zwork
475 REAL,
DIMENSION(SIZE(PFIELD,2)) :: zmean, zcount
476 REAL(KIND=JPRB) :: zhook_handle
478 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX2_FA',0,zhook_handle)
489 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX2_FA',1,zhook_handle)
494 IF (nrank==npio)
THEN
503 CALL faveur(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
505 CALL fagote(nworkb,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
506 DO jl=1,
SIZE(zwork,2)
507 WRITE(ypatch,
'(I3.3)')jl
508 yprefix=cprefix2d//ypatch//
'_'
509 CALL faienc(nworkb,nunit_fa,yprefix,0,hrec,zwork(:,jl),.false.)
513 CALL fagote(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
518 DO jl=1,
SIZE(zwork,2)
519 IF(zwork(i,jl)/=xundef)
THEN
520 zmean(jl)=zmean(jl)+zwork(i,jl)
521 zcount(jl)=zcount(jl)+1.0
525 WHERE(zcount(:)>0.0)zmean(:)=zmean(:)/zcount(:)
526 DO jl=1,
SIZE(zwork,2)
527 WHERE(zwork(:,jl)==xundef)zwork(:,jl)=zmean(jl)
528 WRITE(ypatch,
'(I3.3)')jl
529 yprefix=cprefix2d//ypatch//
'_'
530 CALL faienc(nworkb,nunit_fa,yprefix,0,hrec,zwork(:,jl),.false.)
538 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
545 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFX2_FA',1,zhook_handle)
551 hrec,kl,kfield,kresp,hcomment,hdir)
563 USE modd_io_surf_fa, ONLY : nunit_fa, nmask, nfull, cprefix1d, lfanocompact
568 USE modi_error_write_surf_fa
571 USE yomhook
,ONLY : lhook, dr_hook
572 USE parkind1
,ONLY : jprb
584 CHARACTER(LEN=12),
INTENT(IN) :: hrec
585 INTEGER,
INTENT(IN) :: kl
586 INTEGER,
DIMENSION(KL),
INTENT(IN) :: kfield
587 INTEGER,
INTENT(OUT):: kresp
588 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
589 CHARACTER(LEN=1),
INTENT(IN) :: hdir
595 CHARACTER(LEN=18) :: yname
596 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
597 INTEGER,
DIMENSION(MAX(NFULL,SIZE(KFIELD))) :: iwork
599 REAL(KIND=JPRB) :: zhook_handle
601 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN1_FA',0,zhook_handle)
610 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN1_FA',1,zhook_handle)
613 IF (hdir/=
'H' .OR. hrec==
"-")
THEN
619 IF (nrank==npio)
THEN
628 CALL faveur(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
630 CALL fagote(nworkb,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
633 yname=trim(cprefix1d)//trim(hrec)
635 CALL
faecr_i_d(nworkb,nunit_fa,yname,kl,iwork(1:kl))
640 CALL fagote(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
646 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
653 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFN1_FA',1,zhook_handle)
660 hrec,kl,ofield,kresp,hcomment,hdir)
677 USE modi_error_write_surf_fa
679 USE yomhook
,ONLY : lhook, dr_hook
680 USE parkind1
,ONLY : jprb
692 CHARACTER(LEN=12),
INTENT(IN) :: hrec
693 INTEGER,
INTENT(IN) :: kl
694 LOGICAL,
DIMENSION(KL),
INTENT(IN) :: ofield
695 INTEGER,
INTENT(OUT):: kresp
696 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
697 CHARACTER(LEN=1),
INTENT(IN) :: hdir
703 CHARACTER(LEN=18):: yname
704 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
706 REAL(KIND=JPRB) :: zhook_handle
708 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL1_FA',0,zhook_handle)
717 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL1_FA',1,zhook_handle)
720 IF (nrank==npio)
THEN
729 CALL faveur(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
731 CALL fagote(nworkb,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
734 yname=trim(cprefix1d)//trim(hrec)
735 CALL
faecr_l_d(nworkb,nunit_fa,yname,kl,ofield)
740 CALL fagote(nworkb,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
746 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
753 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFL1_FA',1,zhook_handle)
759 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
774 USE modi_error_write_surf_fa
776 USE yomhook
,ONLY : lhook, dr_hook
777 USE parkind1
,ONLY : jprb
785 CHARACTER(LEN=12),
INTENT(IN) :: hrec
786 INTEGER,
INTENT(IN) :: kyear
787 INTEGER,
INTENT(IN) :: kmonth
788 INTEGER,
INTENT(IN) :: kday
789 REAL,
INTENT(IN) :: ptime
790 INTEGER,
INTENT(OUT) :: kresp
791 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
795 CHARACTER(LEN=18) :: yname
797 INTEGER :: ihour, imin, isec
798 INTEGER :: ingrib,inbpdg,inbcsp,istron,ipuila,idmopl
799 INTEGER,
DIMENSION(3) :: itdate
800 REAL(KIND=JPRB) :: zhook_handle
802 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT0_FA',0,zhook_handle)
806 IF (hrec==
'DTCUR')
THEN
808 ihour = floor(ptime)/3600
809 imin = floor(ptime)/60 - ihour * 60
810 isec = nint(ptime) - ihour * 3600 - imin * 60
811 CALL fandar(iret,nunit_fa,(/ kyear, kmonth, kday, ihour, imin, isec, 0, 0, 0, 0, 0 /))
817 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT0_FA',1,zhook_handle)
827 CALL faveur(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
829 CALL fagote(kresp,nunit_fa,-1,inbpdg,inbcsp,istron,ipuila,idmopl)
832 yname=trim(cprefix1d)//trim(hrec)//
'%TDATE'
833 CALL
faecr_i_d(kresp,nunit_fa,yname,3,itdate)
838 yname=trim(cprefix1d)//trim(hrec)//
'%TIME'
839 CALL
faecr_r(kresp,nunit_fa,yname,ptime)
846 CALL fagote(kresp,nunit_fa,ingrib,inbpdg,inbcsp,istron,ipuila,idmopl)
849 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT0_FA',1,zhook_handle)
855 hrec,kl1,kl2,kyear,kmonth,kday,ptime,kresp,hcomment)
873 USE modi_error_write_surf_fa
875 USE yomhook
,ONLY : lhook, dr_hook
876 USE parkind1
,ONLY : jprb
888 CHARACTER(LEN=12),
INTENT(IN) :: hrec
889 INTEGER,
INTENT(IN) :: kl1
890 INTEGER,
INTENT(IN) :: kl2
891 INTEGER,
DIMENSION(KL1,KL2),
INTENT(IN) :: kyear
892 INTEGER,
DIMENSION(KL1,KL2),
INTENT(IN) :: kmonth
893 INTEGER,
DIMENSION(KL1,KL2),
INTENT(IN) :: kday
894 REAL,
DIMENSION(KL1,KL2),
INTENT(IN) :: ptime
895 INTEGER,
INTENT(OUT) :: kresp
896 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
900 CHARACTER(LEN=18):: yname
901 INTEGER,
DIMENSION(3,SIZE(KYEAR,1),SIZE(KYEAR,2)) :: itdate
903 REAL(KIND=JPRB) :: zhook_handle
905 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT2_FA',0,zhook_handle)
914 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT2_FA',1,zhook_handle)
917 IF (nrank==npio)
THEN
925 itdate(1,:,:) = kyear(:,:)
926 itdate(2,:,:) = kmonth(:,:)
927 itdate(3,:,:) = kday(:,:)
931 yname=trim(cprefix1d)//trim(hrec)
932 WRITE(nluout,*)
' WRITE_SURFT2_FA : time in 2 dimensions not yet implemented : YNAME=',yname,
'ITDATE=',itdate
933 CALL
abor1_sfx(
'MODE_WRITE_SURF_FA:WRITE_SURFT2_FA: time in 2 dimensions not yet implemented')
936 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
941 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_FA:WRITE_SURFT2_FA',1,zhook_handle)
subroutine error_write_surf_fa(HREC, KRESP)
subroutine faecr_r(KREP, KN, CNOMC, PDATA)
subroutine write_surfx2_fa(HREC, KL1, KL2, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn1_fa(HREC, KL, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine faecr_c(KREP, KN, CNOMC, KSIZE, CDATA)
subroutine write_surfl0_fa(HREC, OFIELD, KRESP, HCOMMENT)
subroutine faecr_i_d(KREP, KN, CNOMC, KSIZE, KDATA)
subroutine faecr_l_d(KREP, KN, CNOMC, KSIZE, LDATA)
subroutine abor1_sfx(YTEXT)
subroutine write_surfx1_fa(HREC, KL, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfc0_fa(HREC, HFIELD, KRESP, HCOMMENT)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
subroutine write_surfl1_fa(HREC, KL, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_surfx0_fa(HREC, PFIELD, KRESP, HCOMMENT)
subroutine faecr_l(KREP, KN, CNOMC, LDATA)
subroutine write_surft0_fa(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfn0_fa(HREC, KFIELD, KRESP, HCOMMENT)
subroutine write_surft2_fa(HREC, KL1, KL2, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine faecr_i(KREP, KN, CNOMC, KDATA)