74 USE modi_error_read_surf_fa
81 LOGICAL,
INTENT(OUT) :: ONEW
83 LOGICAL :: GOLD, GWORK
84 INTEGER :: INGRIB, INBITS, ISTRON, IPUILA, IRESP
86 REAL(KIND=JPRB) :: ZHOOK_HANDLE
88 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:SFX_FA_VERSION',0,zhook_handle)
92 CALL fanion(iresp,
nunit_fa,
cprefix1d,0,
'VERSION',onew,gwork,ingrib,inbits,istron,ipuila)
95 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:SFX_FA_VERSION',1,zhook_handle)
103 HREC,PFIELD,KRESP,HCOMMENT)
113 USE modi_error_read_surf_fa
124 CHARACTER(LEN=*),
INTENT(IN) :: HREC
125 REAL,
INTENT(OUT) :: PFIELD
126 INTEGER,
INTENT(OUT) :: KRESP
127 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
131 CHARACTER(LEN=50) :: YCOMMENT
132 CHARACTER(LEN=6) :: YMASK
133 CHARACTER(LEN=18) :: YNAME
134 LOGICAL :: GV8, GFOUND
136 REAL(KIND=JPRB) :: ZHOOK_HANDLE
138 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX0_FA',0,zhook_handle)
150 IF (gfound) ymask=
'FULL ' 157 ycomment =
trim(yname)
160 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX0_FA',1,zhook_handle)
181 USE modi_error_read_surf_fa
195 CHARACTER(LEN=*),
INTENT(IN) :: HREC
196 INTEGER,
INTENT(IN) :: KL
197 REAL,
DIMENSION(:),
INTENT(OUT) :: PFIELD
198 INTEGER,
INTENT(OUT) :: KRESP
199 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
200 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
206 CHARACTER(LEN=4) :: YPREFIX
207 CHARACTER(LEN=3) :: YPREF
210 INTEGER :: I, J, INFOMPI
212 INTEGER,
DIMENSION(MPI_STATUS_SIZE,NPROC-1) :: ISTATUS
215 REAL,
DIMENSION(:),
ALLOCATABLE :: ZWORK2, ZWORK
217 REAL(KIND=JPRB) :: ZHOOK_HANDLE
219 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX1_FA',0,zhook_handle)
230 ALLOCATE(zwork(
nfull))
234 IF (ypref==
'CLS' .OR. ypref==
'SUR' .OR. ypref==
'PRO' .OR. ypref==
'ATM')
THEN 240 zwork((j-1)*
ndlux + i) = zwork2((j-1)*
ndlon + i)
244 hcomment =
trim(hrec)
254 hcomment = yprefix//
trim(hrec)
257 ELSEIF (hdir/=
'-')
THEN 269 ELSEIF (hdir==
'A')
THEN 274 pfield(:) = zwork(1:kl)
279 ELSEIF (hdir==
'-')
THEN 285 CALL mpi_bcast(zwork(1:kl),kl*kind(zwork)/4,mpi_real,
npio,
ncomm,infompi)
289 pfield(:) = zwork(1:kl)
299 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX1_FA',1,zhook_handle)
306 SUBROUTINE read_surfx2_fa(HREC,KL1,KL2,PFIELD,KRESP,HCOMMENT,HDIR)
319 USE modi_error_read_surf_fa
333 CHARACTER(LEN=*),
INTENT(IN) :: HREC
334 INTEGER,
INTENT(IN) :: KL1
335 INTEGER,
INTENT(IN) :: KL2
336 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PFIELD
337 INTEGER,
INTENT(OUT) :: KRESP
338 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
339 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
345 CHARACTER(LEN=4) :: YPREFIX
346 CHARACTER(LEN=2) :: YPATCH
347 CHARACTER(LEN=3) :: YNUM
350 INTEGER :: JL, I, INFOMPI
353 INTEGER,
DIMENSION(MPI_STATUS_SIZE,NPROC-1) :: ISTATUS
355 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZWORK2
357 REAL(KIND=JPRB) :: ZHOOK_HANDLE
359 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX2_FA',0,zhook_handle)
370 ALLOCATE(zwork2(
nfull,kl2))
376 WRITE(ynum,
'(I3.3)')jl
379 WRITE(ypatch,
'(I2.2)')jl
380 yprefix=
'S'//ypatch//
'_' 384 hcomment = yprefix//
trim(hrec)
389 hcomment =
'PATCH_'//
trim(hrec)
391 ELSEIF (hdir/=
'-')
THEN 392 ALLOCATE(zwork2(0,0))
403 ELSEIF (hdir==
'A')
THEN 408 pfield(:,:) = zwork2(1:kl1,1:kl2)
413 ELSEIF (hdir==
'-')
THEN 419 CALL mpi_bcast(zwork2(1:kl1,1:kl2),kl1*kl2*kind(zwork2)/4,mpi_real,
npio,
ncomm,infompi)
423 pfield(:,:) = zwork2(1:kl1,1:kl2)
433 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFX2_FA',1,zhook_handle)
441 HREC,KFIELD,KRESP,HCOMMENT)
451 USE modi_error_read_surf_fa
462 CHARACTER(LEN=*),
INTENT(IN) :: HREC
463 INTEGER,
INTENT(OUT) :: KFIELD
464 INTEGER,
INTENT(OUT) :: KRESP
465 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
469 CHARACTER(LEN=50) :: YCOMMENT
470 CHARACTER(LEN=6) :: YMASK
471 CHARACTER(LEN=18) :: YNAME
472 LOGICAL :: GV8, GFOUND
474 REAL(KIND=JPRB) :: ZHOOK_HANDLE
476 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFN0_FA',0,zhook_handle)
488 IF (gfound) ymask=
'FULL ' 497 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFN0_FA',1,zhook_handle)
505 HREC,KL,KFIELD,KRESP,HCOMMENT,HDIR)
521 USE modi_error_read_surf_fa
537 CHARACTER(LEN=*),
INTENT(IN) :: HREC
538 INTEGER,
INTENT(IN) :: KL
539 INTEGER,
DIMENSION(:),
INTENT(OUT) :: KFIELD
540 INTEGER,
INTENT(OUT) :: KRESP
541 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
542 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
548 CHARACTER(LEN=6) :: YMASK
549 CHARACTER(LEN=18) :: YNAME
550 LOGICAL :: GV8, GFOUND
552 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IWORK
553 INTEGER :: I, INFOMPI
555 INTEGER,
DIMENSION(MPI_STATUS_SIZE) :: ISTATUS
559 REAL(KIND=JPRB) :: ZHOOK_HANDLE
561 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFN1_FA',0,zhook_handle)
583 IF (gfound) ymask=
'FULL ' 589 ELSEIF (hdir/=
'-')
THEN 590 ALLOCATE(iwork(
nfull))
598 ELSEIF (hdir/=
'-')
THEN 611 kfield(:) = iwork(1:kl)
616 ELSEIF (hdir==
'-')
THEN 621 CALL mpi_bcast(iwork(1:kl),kl*kind(iwork)/4,mpi_integer,
npio,
ncomm,infompi)
625 kfield(:) = iwork(1:kl)
632 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFN1_FA',1,zhook_handle)
640 HREC,HFIELD,KRESP,HCOMMENT)
650 USE modi_error_read_surf_fa
661 CHARACTER(LEN=*),
INTENT(IN) :: HREC
662 CHARACTER(LEN=40),
INTENT(OUT) :: HFIELD
663 INTEGER,
INTENT(OUT) :: KRESP
664 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
668 CHARACTER(LEN=50) :: YCOMMENT
669 CHARACTER(LEN=6) :: YMASK
670 CHARACTER(LEN=18) :: YNAME
671 CHARACTER,
DIMENSION(40) :: YFIELD
672 LOGICAL :: GV8, GFOUND
674 REAL(KIND=JPRB) :: ZHOOK_HANDLE
677 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFC0_FA',0,zhook_handle)
689 IF (gfound) ymask=
'FULL ' 695 WRITE(hfield,
'(40A1)') yfield(:)
699 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFC0_FA',1,zhook_handle)
706 HREC,OFIELD,KRESP,HCOMMENT)
716 USE modi_error_read_surf_fa
727 CHARACTER(LEN=*),
INTENT(IN) :: HREC
728 LOGICAL,
INTENT(OUT) :: OFIELD
729 INTEGER,
INTENT(OUT) :: KRESP
730 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
734 CHARACTER(LEN=50) :: YCOMMENT
735 CHARACTER(LEN=6) :: YMASK
736 CHARACTER(LEN=18) :: YNAME
737 LOGICAL :: GV8, GFOUND
739 REAL(KIND=JPRB) :: ZHOOK_HANDLE
741 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFL0_FA',0,zhook_handle)
753 IF (gfound) ymask=
'FULL ' 763 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFL0_FA',1,zhook_handle)
770 HREC,KL,OFIELD,KRESP,HCOMMENT,HDIR)
783 USE modi_error_read_surf_fa
798 CHARACTER(LEN=*),
INTENT(IN) :: HREC
799 INTEGER,
INTENT(IN) :: KL
800 LOGICAL,
DIMENSION(:),
INTENT(OUT) :: OFIELD
801 INTEGER,
INTENT(OUT) :: KRESP
802 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
803 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
809 CHARACTER(LEN=6) :: YMASK
810 CHARACTER(LEN=18) :: YNAME
811 LOGICAL :: GV8, GFOUND
815 REAL(KIND=JPRB) :: ZHOOK_HANDLE
817 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFL1_FA',0,zhook_handle)
836 IF (gfound) ymask=
'FULL ' 853 IF (
nproc>1 .AND. hdir/=
'A')
THEN 855 CALL mpi_bcast(ofield,kl,mpi_logical,
npio,
ncomm,infompi)
860 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFL1_FA',1,zhook_handle)
868 HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
878 USE modi_error_read_surf_fa
889 CHARACTER(LEN=*),
INTENT(IN) :: HREC
890 INTEGER,
INTENT(OUT) :: KYEAR
891 INTEGER,
INTENT(OUT) :: KMONTH
892 INTEGER,
INTENT(OUT) :: KDAY
893 REAL,
INTENT(OUT) :: PTIME
894 INTEGER,
INTENT(OUT) :: KRESP
895 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
899 CHARACTER(LEN=50) :: YCOMMENT
900 CHARACTER(LEN=6) :: YMASK
901 CHARACTER(LEN=18) :: YNAME
902 LOGICAL :: GV8, GFOUND
904 INTEGER,
DIMENSION(3) :: ITDATE
905 REAL(KIND=JPRB) :: ZHOOK_HANDLE
907 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFT0_FA',0,zhook_handle)
919 IF (gfound) ymask=
'FULL ' 920 yname=
trim(ymask)//
trim(hrec)//
'%TDATE' 935 IF (gfound) ymask=
'FULL ' 936 yname=
trim(ymask)//
trim(hrec)//
'%TIME' 942 ycomment =
trim(hrec)
945 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFT0_FA',1,zhook_handle)
953 HREC,KL1,KL2,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
964 USE modi_error_read_surf_fa
975 CHARACTER(LEN=*),
INTENT(IN) :: HREC
977 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KYEAR
978 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KMONTH
979 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KDAY
980 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PTIME
981 INTEGER,
INTENT(OUT) :: KRESP
982 CHARACTER(LEN=100),
INTENT(OUT) :: HCOMMENT
986 CHARACTER(LEN=50) :: YCOMMENT
987 CHARACTER(LEN=6) :: YMASK
988 CHARACTER(LEN=18) :: YNAME
989 LOGICAL :: GV8, GFOUND
991 INTEGER,
DIMENSION(3,SIZE(KYEAR,1),SIZE(KYEAR,2)) :: ITDATE
992 REAL(KIND=JPRB) :: ZHOOK_HANDLE
994 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFT2_FA',0,zhook_handle)
1013 IF (gfound) ymask=
'FULL ' 1017 WRITE(
nluout,*)
' READ_SURFT2_FA : time in 2 dimensions not yet implemented : YNAME=',yname
1018 CALL abor1_sfx(
'MODE_READ_SURF_FA:READ_SURFT2_FA: time in 2 dimensions not yet implemented')
1022 IF (
lhook)
CALL dr_hook(
'MODE_READ_SURF_FA:READ_SURFT2_FA',1,zhook_handle)
static const char * trim(const char *name, int *n)
integer, dimension(:), allocatable nreq
subroutine read_surfc0_fa(HREC, HFIELD, KRESP, HCOMMENT)
subroutine facile(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, KCHAMP, LDCOSP)
subroutine read_surfx1_fa(HREC, KL, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine abor1_sfx(YTEXT)
character(len=4), save cprefix1d
subroutine falit_i(KREP, KN, CNOMC, KDATA)
subroutine fanion(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDEXIS, LDCOSP, KNGRIB, KNARG1, KNARG2, KNARG3)
subroutine read_surfl1_fa(HREC, KL, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine error_read_surf_fa(HREC, KRESP)
subroutine read_surfx2_fa(HREC, KL1, KL2, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine falit_i_d(KREP, KN, CNOMC, KSIZE, KDATA)
subroutine falit_r(KREP, KN, CNOMC, PDATA)
subroutine falit_l_d(KREP, KN, CNOMC, KSIZE, LDATA)
subroutine read_surfx0_fa(HREC, PFIELD, KRESP, HCOMMENT)
character(len=1), save cprefix2d
subroutine read_surfn0_fa(HREC, KFIELD, KRESP, HCOMMENT)
subroutine io_buff(HREC, HACTION, OKNOWN)
subroutine read_surfl0_fa(HREC, OFIELD, KRESP, HCOMMENT)
subroutine read_surft2_fa(HREC, KL1, KL2, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine read_surft0_fa(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine falit_c(KREP, KN, CNOMC, KSIZE, CDATA)
subroutine sfx_fa_version(ONEW)
subroutine wlog_mpi(HLOG, PLOG, KLOG, KLOG2, OLOG)
subroutine read_surfn1_fa(HREC, KL, KFIELD, KRESP, HCOMMENT, HDIR)
integer, dimension(:), pointer nmask
subroutine falit_l(KREP, KN, CNOMC, LDATA)