34 HREC,PFIELD,KRESP,HCOMMENT)
44 USE modi_error_write_surf_lfi
55 CHARACTER(LEN=12),
INTENT(IN) :: HREC
56 REAL,
INTENT(IN) :: PFIELD
57 INTEGER,
INTENT(OUT):: KRESP
58 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
63 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',0,zhook_handle)
71 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
77 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
83 HREC,KFIELD,KRESP,HCOMMENT)
93 USE modi_error_write_surf_lfi
104 CHARACTER(LEN=12),
INTENT(IN) :: HREC
105 INTEGER,
INTENT(IN) :: KFIELD
106 INTEGER,
INTENT(OUT):: KRESP
107 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
112 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',0,zhook_handle)
131 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
137 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
143 HREC,OFIELD,KRESP,HCOMMENT)
152 USE modi_error_write_surf_lfi
163 CHARACTER(LEN=12),
INTENT(IN) :: HREC
164 LOGICAL,
INTENT(IN) :: OFIELD
165 INTEGER,
INTENT(OUT):: KRESP
166 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
171 REAL(KIND=JPRB) :: ZHOOK_HANDLE
173 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',0,zhook_handle)
179 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
186 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
192 HREC,HFIELD,KRESP,HCOMMENT)
201 USE modi_error_write_surf_lfi
212 CHARACTER(LEN=12),
INTENT(IN) :: HREC
213 CHARACTER(LEN=40),
INTENT(IN) :: HFIELD
214 INTEGER,
INTENT(OUT) :: KRESP
215 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
220 REAL(KIND=JPRB) :: ZHOOK_HANDLE
222 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',0,zhook_handle)
228 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
233 IF (hrec==
"GRID_TYPE")
lmnh_compatible = (hfield==
"CARTESIAN " .OR. hfield==
"CONF PROJ ")
238 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
244 HREC,PFIELD,KRESP,HCOMMENT,HDIR)
259 USE modi_error_write_surf_lfi
261 USE modi_get_surf_undef
276 CHARACTER(LEN=12),
INTENT(IN) :: HREC
277 REAL,
DIMENSION(:),
INTENT(IN) :: PFIELD
278 INTEGER,
INTENT(OUT):: KRESP
279 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
280 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
287 CHARACTER(LEN=20) :: YREC
289 DOUBLE PRECISION :: XTIME0
291 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD))) :: ZWORK
292 REAL,
DIMENSION(NIU,NJU) :: ZWORK2D
293 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
295 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',0,zhook_handle)
301 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
326 zwork2d(
nib+ji-1,
njb+jj-1) = zwork(ji+(
nie-
nib+1)*(jj-1))
332 zwork2d(1:
nib-1,:) = zundef
333 zwork2d(:,
nje+1:
nju) = zundef
334 zwork2d(:,1:
njb-1) = zundef
335 zwork2d(
nie+1:
niu,:) = zundef
337 IF (hrec==
'DX ' .OR. hrec==
'XX ')
THEN 340 ELSEIF (hrec==
'DY ' .OR. hrec==
'YY ')
THEN 367 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
381 CHARACTER(LEN=12),
INTENT(IN) :: HREC
382 CHARACTER(LEN=20),
INTENT(IN) :: HREC2
383 REAL,
DIMENSION(:),
INTENT(IN) :: PFIELD
384 INTEGER,
INTENT(OUT):: KRESP
385 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
386 INTEGER,
INTENT(IN) :: KU
387 INTEGER,
INTENT(IN) :: KB
388 INTEGER,
INTENT(IN) :: KE
392 REAL,
DIMENSION(KU) :: ZWORK
393 REAL(KIND=JPRB) :: ZHOOK_HANDLE
395 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',0,zhook_handle)
403 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
406 zwork(1) = - pfield(1)*0.5
407 zwork(2) = pfield(1)*0.5
408 zwork(3) = pfield(1)*1.5
412 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
415 zwork(kb+1:ke) = 0.5 * pfield(1:ke-2) + 0.5 * pfield(2:ke-1)
416 zwork(kb) = 1.5 * pfield(1) - 0.5 * pfield(2)
417 zwork(kb-1) = 2. * zwork(kb) - zwork(kb+1)
418 zwork(ke+1) = 2. * zwork(ke) - zwork(ke-1)
427 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
448 USE modi_error_write_surf_lfi
450 USE modi_get_surf_undef
465 CHARACTER(LEN=12),
INTENT(IN) :: HREC
466 REAL,
DIMENSION(:,:),
INTENT(IN) :: PFIELD
467 INTEGER,
INTENT(OUT):: KRESP
468 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
469 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
476 DOUBLE PRECISION :: XTIME0
478 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2)) :: ZWORK
479 REAL(KIND=JPRB) :: ZHOOK_HANDLE
481 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',0,zhook_handle)
488 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
522 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
539 CHARACTER(LEN=12),
INTENT(IN) :: HREC
540 REAL,
DIMENSION(:,:),
INTENT(IN) :: PFIELD
541 INTEGER,
INTENT(OUT):: KRESP
542 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
548 REAL,
DIMENSION(NIU,NJU,SIZE(PFIELD,2)) :: ZWORK3D
549 REAL(KIND=JPRB) :: ZHOOK_HANDLE
551 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',0,zhook_handle)
558 zwork3d(
nib+ji-1,
njb+jj-1,:) = pfield(ji+(
nie-
nib+1)*(jj-1),:)
563 CALL fmwritx2(
cfileout_lfi,hrec,
cluout_lfi,
SIZE(zwork3d,3)*
niu,zwork3d(:,
nje,:),4,100,hcomment,kresp)
565 CALL fmwritx2(
cfileout_lfi,hrec,
cluout_lfi,
SIZE(zwork3d,3)*
nju,zwork3d(
nie,:,:),4,100,hcomment,kresp)
572 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',1,zhook_handle)
593 USE modi_error_write_surf_lfi
595 USE modi_get_surf_undef
610 CHARACTER(LEN=12),
INTENT(IN) :: HREC
611 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PFIELD
612 INTEGER,
INTENT(OUT):: KRESP
613 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
614 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
621 DOUBLE PRECISION :: XTIME0
623 REAL,
DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2),SIZE(PFIELD,3)) :: ZWORK
624 REAL(KIND=JPRB) :: ZHOOK_HANDLE
626 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',0,zhook_handle)
633 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',1,zhook_handle)
667 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',1,zhook_handle)
686 CHARACTER(LEN=12),
INTENT(IN) :: HREC
687 REAL,
DIMENSION(:,:,:),
INTENT(IN) :: PFIELD
688 INTEGER,
INTENT(OUT):: KRESP
689 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
695 REAL,
DIMENSION(NIU,NJU,SIZE(PFIELD,2),SIZE(PFIELD,3)) :: ZWORK4D
696 REAL(KIND=JPRB) :: ZHOOK_HANDLE
698 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI:WRITE_IN_LFI_X3_FOR_MNH',0,zhook_handle)
705 zwork4d(
nib+ji-1,
njb+jj-1,:,:) = pfield(ji+(
nie-
nib+1)*(jj-1),:,:)
710 CALL fmwritx3(
cfileout_lfi,hrec,
cluout_lfi,
SIZE(zwork4d,3)*
niu,zwork4d(:,
nje,:,:),4,100,hcomment,kresp)
712 CALL fmwritx3(
cfileout_lfi,hrec,
cluout_lfi,
SIZE(zwork4d,3)*
nju,zwork4d(
nie,:,:,:),4,100,hcomment,kresp)
715 CALL abor1_sfx(
"WRITE_SURFX3_LFI: NOT POSSIBLE TO WRITE 4D FIELDS IN LFI")
720 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI:WRITE_IN_LFI_X3_FOR_MNH',1,zhook_handle)
727 HREC,KFIELD,KRESP,HCOMMENT,HDIR)
739 USE modi_error_write_surf_lfi
755 CHARACTER(LEN=12),
INTENT(IN) :: HREC
756 INTEGER,
DIMENSION(:),
INTENT(IN) :: KFIELD
757 INTEGER,
INTENT(OUT):: KRESP
758 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
759 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
766 INTEGER,
DIMENSION(MAX(NFULL,SIZE(KFIELD))) :: IWORK
767 DOUBLE PRECISION :: XTIME0
768 REAL(KIND=JPRB) :: ZHOOK_HANDLE
770 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',0,zhook_handle)
777 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
802 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
808 HREC,OFIELD,KRESP,HCOMMENT,HDIR)
824 USE modi_error_write_surf_lfi
839 CHARACTER(LEN=12),
INTENT(IN) :: HREC
840 LOGICAL,
DIMENSION(:),
INTENT(IN) :: OFIELD
841 INTEGER,
INTENT(OUT):: KRESP
842 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
843 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
851 DOUBLE PRECISION :: XTIME0
852 REAL(KIND=JPRB) :: ZHOOK_HANDLE
854 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',0,zhook_handle)
861 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
872 WRITE(iluout,*)
'Error: 1D logical vector for writing on an horizontal grid:' 873 WRITE(iluout,*)
'this option is not coded in WRITE_SURFL1_LFI' 874 CALL abor1_sfx(
'MODE_WRITE_SURF_LFI: 1D LOGICAL VECTOR FOR WRITING NOT CODED IN WRITE_SURFL1_LFI')
888 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
894 HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
903 USE modi_get_surf_undef
905 USE modi_error_write_surf_lfi
916 CHARACTER(LEN=12),
INTENT(IN) :: HREC
917 INTEGER,
INTENT(IN) :: KYEAR
918 INTEGER,
INTENT(IN) :: KMONTH
919 INTEGER,
INTENT(IN) :: KDAY
920 REAL,
INTENT(IN) :: PTIME
921 INTEGER,
INTENT(OUT) :: KRESP
922 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
927 CHARACTER(LEN=12) :: YREC
928 INTEGER,
DIMENSION(3) :: ITDATE
929 REAL(KIND=JPRB) :: ZHOOK_HANDLE
931 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',0,zhook_handle)
937 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
944 yrec=trim(hrec)//
'%TDATE' 948 yrec=trim(hrec)//
'%TIME' 952 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
958 HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
972 USE modi_error_write_surf_lfi
987 CHARACTER(LEN=12),
INTENT(IN) :: HREC
988 INTEGER,
DIMENSION(:),
INTENT(IN) :: KYEAR
989 INTEGER,
DIMENSION(:),
INTENT(IN) :: KMONTH
990 INTEGER,
DIMENSION(:),
INTENT(IN) :: KDAY
991 REAL,
DIMENSION(:),
INTENT(IN) :: PTIME
992 INTEGER,
INTENT(OUT) :: KRESP
993 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
998 CHARACTER(LEN=12) :: YREC
999 INTEGER,
DIMENSION(3,SIZE(KYEAR)) :: ITDATE
1000 DOUBLE PRECISION :: XTIME0
1001 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1003 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',0,zhook_handle)
1010 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
1016 xtime0 = mpi_wtime()
1021 itdate(1,:) = kyear(:)
1022 itdate(2,:) = kmonth(:)
1023 itdate(3,:) = kday(:)
1025 yrec=trim(hrec)//
'%TDATE' 1028 yrec=trim(hrec)//
'%TIME' 1039 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
1045 HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1059 USE modi_error_write_surf_lfi
1074 CHARACTER(LEN=12),
INTENT(IN) :: HREC
1075 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KYEAR
1076 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KMONTH
1077 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KDAY
1078 REAL,
DIMENSION(:,:),
INTENT(IN) :: PTIME
1079 INTEGER,
INTENT(OUT) :: KRESP
1080 CHARACTER(LEN=100),
INTENT(IN) :: HCOMMENT
1085 CHARACTER(LEN=12) :: YREC
1086 DOUBLE PRECISION :: XTIME0
1087 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1089 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',0,zhook_handle)
1096 IF (gfound .AND.
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
1102 xtime0 = mpi_wtime()
1107 yrec=trim(hrec)//
'%YEAR' 1110 yrec=trim(hrec)//
'%MONTH' 1113 yrec=trim(hrec)//
'%DAY' 1116 yrec=trim(hrec)//
'%TIME' 1127 IF (
lhook)
CALL dr_hook(
'MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
subroutine fmwritl1(HFILEM, HRECFM, HFIPRI, KLENG, OFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine write_surft2_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfc0_lfi(HREC, HFIELD, KRESP, HCOMMENT)
subroutine write_surft0_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfl1_lfi(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfx1_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine fmwritn1(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine write_surft1_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_in_lfi_x3_for_mnh(HREC, PFIELD, KRESP, HCOMMENT)
subroutine get_surf_undef(PUNDEF)
character(len=28), save cluout_lfi
subroutine fmwritn2(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine fmwritx1(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine abor1_sfx(YTEXT)
subroutine write_surfx2_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine fmwritx2(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
integer, dimension(:), pointer nmask
subroutine fmwritn0(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine get_luout(HPROGRAM, KLUOUT)
character(len=28), save cfileout_lfi
subroutine write_in_lfi_x2_for_mnh(HREC, PFIELD, KRESP, HCOMMENT)
subroutine fmwritc0(HFILEM, HRECFM, HFIPRI, KLENG, HFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine write_surfx0_lfi(HREC, PFIELD, KRESP, HCOMMENT)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine write_surfx3_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine fmwritl0(HFILEM, HRECFM, HFIPRI, KLENG, OFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine error_write_surf_lfi(HREC, KRESP)
subroutine fmwritx3(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine write_in_lfi_x1_for_mnh(HREC, HREC2, PFIELD, KRESP, HCOMMENT, KU, KB, KE)
subroutine write_surfn1_lfi(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn0_lfi(HREC, KFIELD, KRESP, HCOMMENT)
subroutine fmwritx0(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
subroutine write_surfl0_lfi(HREC, OFIELD, KRESP, HCOMMENT)