33 hrec,pfield,kresp,hcomment)
47 USE modi_error_write_surf_lfi
49 USE yomhook
,ONLY : lhook, dr_hook
50 USE parkind1
,ONLY : jprb
58 CHARACTER(LEN=12),
INTENT(IN) :: hrec
59 REAL,
INTENT(IN) :: pfield
60 INTEGER,
INTENT(OUT):: kresp
61 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
65 REAL(KIND=JPRB) :: zhook_handle
67 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',0,zhook_handle)
73 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
76 CALL fmwritx0(cfileout_lfi,hrec,cluout_lfi,1,pfield,4,100,hcomment,kresp)
79 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
85 hrec,kfield,kresp,hcomment)
96 lmnh_compatible, niu, nib, nie, nju, njb, nje
100 USE modi_error_write_surf_lfi
102 USE yomhook
,ONLY : lhook, dr_hook
103 USE parkind1
,ONLY : jprb
111 CHARACTER(LEN=12),
INTENT(IN) :: hrec
112 INTEGER,
INTENT(IN) :: kfield
113 INTEGER,
INTENT(OUT):: kresp
114 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
118 REAL(KIND=JPRB) :: zhook_handle
120 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',0,zhook_handle)
124 IF (lmnh_compatible .AND. hrec==
'IMAX')
THEN
129 IF (lmnh_compatible .AND. hrec==
'JMAX')
THEN
137 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
140 CALL fmwritn0(cfileout_lfi,hrec,cluout_lfi,1,kfield,4,100,hcomment,kresp)
143 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
149 hrec,ofield,kresp,hcomment)
163 USE modi_error_write_surf_lfi
165 USE yomhook
,ONLY : lhook, dr_hook
166 USE parkind1
,ONLY : jprb
174 CHARACTER(LEN=12),
INTENT(IN) :: hrec
175 LOGICAL,
INTENT(IN) :: ofield
176 INTEGER,
INTENT(OUT):: kresp
177 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
181 REAL(KIND=JPRB) :: zhook_handle
183 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',0,zhook_handle)
189 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
192 CALL fmwritl0(cfileout_lfi,hrec,cluout_lfi,1,ofield,4,100,hcomment,kresp)
196 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
202 hrec,hfield,kresp,hcomment)
212 USE modd_io_surf_lfi, ONLY : cfileout_lfi, cluout_lfi, lmnh_compatible, lcartesian
216 USE modi_error_write_surf_lfi
218 USE yomhook
,ONLY : lhook, dr_hook
219 USE parkind1
,ONLY : jprb
227 CHARACTER(LEN=12),
INTENT(IN) :: hrec
228 CHARACTER(LEN=40),
INTENT(IN) :: hfield
229 INTEGER,
INTENT(OUT) :: kresp
230 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
234 REAL(KIND=JPRB) :: zhook_handle
236 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',0,zhook_handle)
242 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
245 CALL fmwritc0(cfileout_lfi,hrec,cluout_lfi,1,hfield,4,100,hcomment,kresp)
247 IF (hrec==
"GRID_TYPE") lmnh_compatible = (hfield==
"CARTESIAN " .OR. hfield==
"CONF PROJ ")
248 IF (hrec==
"GRID_TYPE" .AND. lmnh_compatible) lcartesian=(hfield==
"CARTESIAN ")
252 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
258 hrec,pfield,kresp,hcomment,hdir)
271 lmnh_compatible, niu, nib, nie, nju, njb, nje
275 USE modi_error_write_surf_lfi
277 USE modi_get_surf_undef
279 USE yomhook
,ONLY : lhook, dr_hook
280 USE parkind1
,ONLY : jprb
292 CHARACTER(LEN=12),
INTENT(IN) :: hrec
293 REAL,
DIMENSION(:),
INTENT(IN) :: pfield
294 INTEGER,
INTENT(OUT):: kresp
295 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
296 CHARACTER(LEN=1),
INTENT(IN) :: hdir
302 CHARACTER(LEN=20) :: yrec
304 DOUBLE PRECISION :: xtime0
306 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD))) :: zwork
307 REAL,
DIMENSION(NIU,NJU) :: zwork2d
308 REAL(KIND=JPRB) :: zhook_handle
310 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',0,zhook_handle)
323 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
328 IF (nrank==npio)
THEN
340 IF (.NOT. lmnh_compatible)
THEN
341 CALL fmwritx1(cfileout_lfi,hrec,cluout_lfi,nfull,zwork,4,100,hcomment,nworkb)
345 zwork2d(:,:) = zundef
348 zwork2d(nib+ji-1,njb+jj-1) = zwork(ji+(nie-nib+1)*(jj-1))
352 IF (hrec==
'DX ' .OR. hrec==
'XX ')
THEN
355 ELSEIF (hrec==
'DY ' .OR. hrec==
'YY ')
THEN
358 ELSEIF (njb==nje)
THEN
361 ELSEIF (nib==nie)
THEN
365 CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,
SIZE(zwork2d),zwork2d,4,100,hcomment,nworkb)
372 CALL fmwritx1(cfileout_lfi,hrec,cluout_lfi,
SIZE(pfield),pfield,4,100,hcomment,nworkb)
379 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
386 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
400 CHARACTER(LEN=12),
INTENT(IN) :: hrec
401 CHARACTER(LEN=20),
INTENT(IN) :: hrec2
402 REAL,
DIMENSION(:),
INTENT(IN) :: pfield
403 INTEGER,
INTENT(OUT):: kresp
404 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
405 INTEGER,
INTENT(IN) :: ku
406 INTEGER,
INTENT(IN) :: kb
407 INTEGER,
INTENT(IN) :: ke
411 REAL,
DIMENSION(KU) :: zwork
412 REAL(KIND=JPRB) :: zhook_handle
414 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',0,zhook_handle)
422 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
425 zwork(1) = - pfield(1)*0.5
426 zwork(2) = pfield(1)*0.5
427 zwork(3) = pfield(1)*1.5
431 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
434 zwork(kb+1:ke) = 0.5 * pfield(1:ke-2) + 0.5 * pfield(2:ke-1)
435 zwork(kb) = 1.5 * pfield(1) - 0.5 * pfield(2)
436 zwork(kb-1) = 2. * zwork(kb) - zwork(kb+1)
437 zwork(ke+1) = 2. * zwork(ke) - zwork(ke-1)
443 CALL fmwritx1(cfileout_lfi,hrec2,cluout_lfi,ku,zwork,4,100,hcomment,kresp)
446 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
453 hrec,pfield,kresp,hcomment,hdir)
465 lmnh_compatible, niu, nib, nie, nju, njb, nje
469 USE modi_error_write_surf_lfi
471 USE modi_get_surf_undef
473 USE yomhook
,ONLY : lhook, dr_hook
474 USE parkind1
,ONLY : jprb
486 CHARACTER(LEN=12),
INTENT(IN) :: hrec
487 REAL,
DIMENSION(:,:),
INTENT(IN) :: pfield
488 INTEGER,
INTENT(OUT):: kresp
489 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
490 CHARACTER(LEN=1),
INTENT(IN) :: hdir
496 DOUBLE PRECISION :: xtime0
498 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2)) :: zwork
499 REAL(KIND=JPRB) :: zhook_handle
501 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',0,zhook_handle)
514 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
519 IF (nrank==npio)
THEN
531 IF (.NOT. lmnh_compatible)
THEN
532 CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,
SIZE(zwork),zwork,4,100,hcomment,nworkb)
539 CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,
SIZE(pfield),pfield,4,100,hcomment,nworkb)
546 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
554 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
564 USE yomhook
,ONLY : lhook, dr_hook
565 USE parkind1
,ONLY : jprb
571 CHARACTER(LEN=12),
INTENT(IN) :: hrec
572 REAL,
DIMENSION(:,:),
INTENT(IN) :: pfield
573 INTEGER,
INTENT(OUT):: kresp
574 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
580 REAL,
DIMENSION(NIU,NJU,SIZE(PFIELD,2)) :: zwork3d
581 REAL(KIND=JPRB) :: zhook_handle
583 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',0,zhook_handle)
590 zwork3d(nib+ji-1,njb+jj-1,:) = pfield(ji+(nie-nib+1)*(jj-1),:)
595 CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,
SIZE(zwork3d,3)*niu,zwork3d(:,nje,:),4,100,hcomment,kresp)
596 ELSEIF (nie==nib)
THEN
597 CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,
SIZE(zwork3d,3)*nju,zwork3d(nie,:,:),4,100,hcomment,kresp)
599 CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,
SIZE(zwork3d),zwork3d,4,100,hcomment,kresp)
604 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',1,zhook_handle)
611 hrec,kfield,kresp,hcomment,hdir)
626 USE modi_error_write_surf_lfi
629 USE yomhook
,ONLY : lhook, dr_hook
630 USE parkind1
,ONLY : jprb
642 CHARACTER(LEN=12),
INTENT(IN) :: hrec
643 INTEGER,
DIMENSION(:),
INTENT(IN) :: kfield
644 INTEGER,
INTENT(OUT):: kresp
645 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
646 CHARACTER(LEN=1),
INTENT(IN) :: hdir
652 INTEGER,
DIMENSION(MAX(NFULL,SIZE(KFIELD))) :: iwork
653 DOUBLE PRECISION :: xtime0
654 REAL(KIND=JPRB) :: zhook_handle
656 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',0,zhook_handle)
667 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
672 IF (nrank==npio)
THEN
681 CALL fmwritn1(cfileout_lfi,hrec,cluout_lfi,nfull,iwork,4,100,hcomment,nworkb)
683 CALL fmwritn1(cfileout_lfi,hrec,cluout_lfi,
SIZE(kfield),kfield,4,100,hcomment,nworkb)
691 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
698 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
704 hrec,ofield,kresp,hcomment,hdir)
721 USE modi_error_write_surf_lfi
723 USE yomhook
,ONLY : lhook, dr_hook
724 USE parkind1
,ONLY : jprb
736 CHARACTER(LEN=12),
INTENT(IN) :: hrec
737 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ofield
738 INTEGER,
INTENT(OUT):: kresp
739 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
740 CHARACTER(LEN=1),
INTENT(IN) :: hdir
747 DOUBLE PRECISION :: xtime0
748 REAL(KIND=JPRB) :: zhook_handle
750 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',0,zhook_handle)
759 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
762 IF (nrank==npio)
THEN
770 WRITE(iluout,*)
'Error: 1D logical vector for writing on an horizontal grid:'
771 WRITE(iluout,*)
'this option is not coded in WRITE_SURFL1_LFI'
772 CALL
abor1_sfx(
'MODE_WRITE_SURF_LFI: 1D LOGICAL VECTOR FOR WRITING NOT CODED IN WRITE_SURFL1_LFI')
777 CALL fmwritl1(cfileout_lfi,hrec,cluout_lfi,
SIZE(ofield),ofield,4,100,hcomment,nworkb)
785 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
792 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
798 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
811 USE modi_get_surf_undef
813 USE modi_error_write_surf_lfi
815 USE yomhook
,ONLY : lhook, dr_hook
816 USE parkind1
,ONLY : jprb
824 CHARACTER(LEN=12),
INTENT(IN) :: hrec
825 INTEGER,
INTENT(IN) :: kyear
826 INTEGER,
INTENT(IN) :: kmonth
827 INTEGER,
INTENT(IN) :: kday
828 REAL,
INTENT(IN) :: ptime
829 INTEGER,
INTENT(OUT) :: kresp
830 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
834 CHARACTER(LEN=12) :: yrec
835 INTEGER,
DIMENSION(3) :: itdate
836 REAL(KIND=JPRB) :: zhook_handle
838 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',0,zhook_handle)
844 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
851 yrec=trim(hrec)//
'%TDATE'
852 CALL fmwritn1(cfileout_lfi,yrec,cluout_lfi,3,itdate,4,100,hcomment,kresp)
855 yrec=trim(hrec)//
'%TIME'
856 CALL fmwritx0(cfileout_lfi,yrec,cluout_lfi,1,ptime,4,100,hcomment,kresp)
859 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
865 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
880 USE modi_error_write_surf_lfi
882 USE yomhook
,ONLY : lhook, dr_hook
883 USE parkind1
,ONLY : jprb
895 CHARACTER(LEN=12),
INTENT(IN) :: hrec
896 INTEGER,
DIMENSION(:),
INTENT(IN) :: kyear
897 INTEGER,
DIMENSION(:),
INTENT(IN) :: kmonth
898 INTEGER,
DIMENSION(:),
INTENT(IN) :: kday
899 REAL,
DIMENSION(:),
INTENT(IN) :: ptime
900 INTEGER,
INTENT(OUT) :: kresp
901 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
905 CHARACTER(LEN=12) :: yrec
906 INTEGER,
DIMENSION(3,SIZE(KYEAR)) :: itdate
907 DOUBLE PRECISION :: xtime0
908 REAL(KIND=JPRB) :: zhook_handle
910 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',0,zhook_handle)
919 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
922 IF (nrank==npio)
THEN
932 itdate(1,:) = kyear(:)
933 itdate(2,:) = kmonth(:)
934 itdate(3,:) = kday(:)
936 yrec=trim(hrec)//
'%TDATE'
937 CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,
SIZE(itdate),itdate,4,100,hcomment,nworkb)
939 yrec=trim(hrec)//
'%TIME'
940 CALL fmwritx1(cfileout_lfi,yrec,cluout_lfi,
SIZE(ptime),ptime,4,100,hcomment,nworkb)
947 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
954 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
960 hrec,kyear,kmonth,kday,ptime,kresp,hcomment)
975 USE modi_error_write_surf_lfi
977 USE yomhook
,ONLY : lhook, dr_hook
978 USE parkind1
,ONLY : jprb
990 CHARACTER(LEN=12),
INTENT(IN) :: hrec
991 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kyear
992 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kmonth
993 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: kday
994 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptime
995 INTEGER,
INTENT(OUT) :: kresp
996 CHARACTER(LEN=100),
INTENT(IN) :: hcomment
1000 CHARACTER(LEN=12) :: yrec
1001 DOUBLE PRECISION :: xtime0
1002 REAL(KIND=JPRB) :: zhook_handle
1004 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',0,zhook_handle)
1013 IF (lwork0 .AND. lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
1016 IF (nrank==npio)
THEN
1019 xtime0 = mpi_wtime()
1027 yrec=trim(hrec)//
'%YEAR'
1028 CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,
SIZE(kyear),kyear,4,100,hcomment,nworkb)
1030 yrec=trim(hrec)//
'%MONTH'
1031 CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,
SIZE(kmonth),kmonth,4,100,hcomment,nworkb)
1033 yrec=trim(hrec)//
'%DAY'
1034 CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,
SIZE(kday),kday,4,100,hcomment,nworkb)
1036 yrec=trim(hrec)//
'%TIME'
1037 CALL fmwritx2(cfileout_lfi,yrec,cluout_lfi,
SIZE(ptime),ptime,4,100,hcomment,nworkb)
1044 xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
1051 IF (lhook) CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
subroutine write_surft2_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfx0_lfi(HREC, PFIELD, KRESP, HCOMMENT)
subroutine write_surfc0_lfi(HREC, HFIELD, KRESP, HCOMMENT)
subroutine get_surf_undef(PUNDEF)
subroutine abor1_sfx(YTEXT)
subroutine write_surft0_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surft1_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine write_in_lfi_x2_for_mnh(HREC, PFIELD, KRESP, HCOMMENT)
subroutine write_surfl1_lfi(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_surfx1_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfl0_lfi(HREC, OFIELD, KRESP, HCOMMENT)
subroutine error_write_surf_lfi(HREC, KRESP)
subroutine write_in_lfi_x1_for_mnh(HREC, HREC2, PFIELD, KRESP, HCOMMENT, KU, KB, KE)
subroutine write_surfx2_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn1_lfi(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn0_lfi(HREC, KFIELD, KRESP, HCOMMENT)