31 USE modi_end_io_surf_n
32 USE modi_init_io_surf_n
36 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZLOC
37 REAL,
ALLOCATABLE,
DIMENSION(:) :: ZWRK
38 REAL,
ALLOCATABLE,
DIMENSION(:) :: XLON
39 REAL,
ALLOCATABLE,
DIMENSION(:) :: XLAT
40 INTEGER,
ALLOCATABLE,
DIMENSION(:):: IWRK2
41 CHARACTER(LEN=50) :: YCOMMENT
42 CHARACTER(LEN=50) :: NOM_ARTICLE
43 CHARACTER(LEN=12) :: HREC
44 CHARACTER(LEN=1) :: PATCHFLAG
45 CHARACTER(LEN=2) :: YPAS,YLVL
46 CHARACTER(LEN=10) :: CGRID_TYPE
47 CHARACTER(LEN=6) :: CMASK_SAVE
53 LOGICAL :: LGEO=.true.
55 CHARACTER(LEN=28) :: YLUOUT =
'LISTING_SXPOST ' 61 INTEGER :: IFIELD, IWFIELD
62 INTEGER :: IPATCH, JPATCH
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
76 OPEN(unit=
nluout,file=adjustl(adjustr(yluout)//
'.txt'),&
77 form=
'FORMATTED',action=
'WRITE')
79 INQUIRE(file=
'SXPOST.nam', exist=lsxnam)
81 WRITE(*,*)
' > SXPOST.nam missing' 82 CALL abor1_sfx(
'SXPOST: NAMELIST SXPOST.nam MISSING')
85 INQUIRE(file=
'PGD.txt', exist=linits)
86 INQUIRE(file=
'PREP.txt', exist=linitp)
88 IF (.NOT. linitp .AND. .NOT. linits)
THEN 89 WRITE(*,*)
' NO INPUT FILE FOUND FOR SXPOST' 90 WRITE(*,*)
' YOU SHOULD AT LEAST RUN PGD! ' 106 CALL read_surf(
'ASCII ',
'DIM_FULL', ini, iret)
107 CALL read_surf(
'ASCII ',
'GRID_TYPE', cgrid_type, iret)
108 CALL read_surf(
'ASCII ',
'DIM_NATURE', ini_n, iret)
117 CALL read_surf(
'ASCII ',
'PATCH_NUMBER', ipatch, iret)
129 OPEN(unit=45,file=
'SXPOST.nam',form=
'FORMATTED')
132 INQUIRE(file=
'LONLAT.dat',exist=lcoord)
135 OPEN(unit=30,file=
'LONLAT.dat',form=
'FORMATTED')
139 READ(30,*)xlon(ip),xlat(ip)
142 WRITE(*,*)
'LONLAT.DAT file missing !' 143 IF (cgrid_type==
'GAUSS ')
THEN 149 IF (.NOT.gfound)
THEN 153 READ(
nunit,fmt=
'(A50)') ycomment
154 READ(
nunit,fmt=*,err=100) xlon(:)
156 IF (cgrid_type==
'GAUSS ')
THEN 163 READ(
nunit,fmt=
'(A50)') ycomment
164 READ(
nunit,fmt=*,err=100) xlat(:)
167 WRITE(30,*)xlon(ip),xlat(ip)
187 READ(45,
'(A1,1X,A6,1X,A16)') patchflag,
cmask,hrec
190 IF (patchflag ==
'+')
THEN 192 ELSE IF (patchflag ==
'-')
THEN 196 print*,
' WRONG PATCHFLAG IN SXPOST.nam ' 197 print*,
' USE + FOR PATCHED VARIABLES ' 198 print*,
' USE - FOR UNPATCHED VARIABLES ' 200 print*,
' SYNTAX OF SXPOST.nam SHOULD LOOK: ' 204 print*,
'+ NATURE TG1 ' 206 CALL abor1_sfx(
'SXPOST: WRONG PATCHFLAG')
212 IF (linitp)
cfilein =
'PREP.txt' 215 IF (.NOT.gfound .AND. linitp)
THEN 224 READ(
nunit,fmt=
'(A50)') nom_article
225 READ(
nunit,fmt=
'(A50)') ycomment
226 READ(
nunit,fmt=*,err=100) zwrk
229 WHERE(zloc(:)==999.) zloc(:)=-999.
231 print*,
cmask,
' ',hrec,
' ',
'MINVAL = ',minval(zwrk(:)),&
232 ' MAXVAL = ',maxval(zloc(:))
236 IF (patchflag ==
'+')
THEN 238 WRITE(ypas,
'(I2)') jpatch
239 ylvl=adjustl(ypas(:len_trim(ypas)))
240 OPEN(unit=30,file=trim(hrec)//
'_p'//trim(ylvl)//
'.dat',form=
'FORMATTED')
241 ibeg=ini*(jpatch-1)+1
246 WRITE(30,*)xlon(ip),xlat(ip),zwrk(ini*(jpatch-1)+ip)
250 WRITE(30,*)nom_article
261 OPEN(unit=30,file=trim(hrec)//
'.dat',form=
'FORMATTED')
265 WRITE(30,*)xlat(ip),xlon(ip),zwrk(ip)
269 WRITE(30,*)nom_article
293 WRITE(
nluout,*)
' ERROR WHEN READING ARTICLE',hrec
300 SUBROUTINE err_stop(HREC,CFILEIN,NLUOUT)
301 CHARACTER(LEN=12) :: HREC
302 CHARACTER(LEN=*) :: CFILEIN
304 REAL(KIND=JPRB) :: ZHOOK_HANDLE
307 WRITE(nluout,*)
' ARTICLE ',trim(hrec),
' NOT FOUND IN FILE ', cfilein
310 WRITE(*,*)
' ARTICLE ',trim(hrec),
' NOT FOUND IN FILE ', cfilein
312 CALL abor1_sfx(
'SXPOST: ARTICLE '//hrec//
' NOT FOUND')
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine abor1_sfx(YTEXT)
subroutine err_stop(HREC, CFILEIN, NLUOUT)
subroutine goto_model(KMODEL)
subroutine surfex_deallo_list
type(surfex_t), pointer ysc
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine surfex_alloc_list(KMODEL)
character(len=28), save cfilein
subroutine init_io_surf_n(DTCO, U, HPROGRAM, HMASK, HSCHEME, HACTION