24 USE yomhook
,ONLY : lhook, dr_hook
25 USE parkind1
,ONLY : jprb
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
72 IF (lhook) CALL dr_hook(
'SXPOST',0,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! '
105 'ASCII ',
'FULL ',
'SURF ',
'READ ')
108 'ASCII ',
'DIM_FULL', ini, iret)
110 'ASCII ',
'GRID_TYPE', cgrid_type, iret)
112 'ASCII ',
'DIM_NATURE', ini_n, iret)
120 'ASCII ',
'NATURE',
'SURF ',
'READ ')
123 'ASCII ',
'PATCH_NUMBER', ipatch, iret)
134 'ASCII ',
'FULL ',
'SURF ',
'READ ')
136 OPEN(unit=45,file=
'SXPOST.nam',form=
'FORMATTED')
139 INQUIRE(file=
'LONLAT.dat',exist=lcoord)
142 OPEN(unit=30,file=
'LONLAT.dat',form=
'FORMATTED')
146 READ(30,*)xlon(ip),xlat(ip)
149 WRITE(*,*)
'LONLAT.DAT file missing !'
150 IF (cgrid_type==
'GAUSS ')
THEN
151 CALL
posnam(nunit,
'FULL '//
' '//
'LONGAUSS',gfound,nluout)
153 CALL
posnam(nunit,
'FULL '//
' '//
'XLON',gfound,nluout)
156 IF (.NOT.gfound)
THEN
157 CALL
err_stop(
'XLON ',cfilein,nluout)
160 READ(nunit,fmt=
'(A50)') ycomment
161 READ(nunit,fmt=*,err=100) xlon(:)
163 IF (cgrid_type==
'GAUSS ')
THEN
164 CALL
posnam(nunit,
'FULL '//
' '//
'LATGAUSS',gfound,nluout)
166 CALL
posnam(nunit,
'FULL '//
' '//
'XLAT',gfound,nluout)
170 READ(nunit,fmt=
'(A50)') ycomment
171 READ(nunit,fmt=*,err=100) xlat(:)
174 WRITE(30,*)xlon(ip),xlat(ip)
194 READ(45,
'(A1,1X,A6,1X,A16)') patchflag,cmask,hrec
197 IF (patchflag ==
'+')
THEN
199 ELSE IF (patchflag ==
'-')
THEN
203 print*,
' WRONG PATCHFLAG IN SXPOST.nam '
204 print*,
' USE + FOR PATCHED VARIABLES '
205 print*,
' USE - FOR UNPATCHED VARIABLES '
207 print*,
' SYNTAX OF SXPOST.nam SHOULD LOOK: '
211 print*,
'+ NATURE TG1 '
213 CALL
abor1_sfx(
'SXPOST: WRONG PATCHFLAG')
219 IF (linitp) cfilein =
'PREP.txt'
221 'ASCII ',cmask_save,
'SURF ',
'READ ')
222 CALL
posnam(nunit,cmask//
' '//hrec,gfound,nluout)
223 IF (.NOT.gfound .AND. linitp)
THEN
228 'ASCII ',cmask_save,
'SURF ',
'READ ')
229 CALL
posnam(nunit,cmask//
' '//hrec,gfound,nluout)
231 IF (.NOT.gfound) CALL
err_stop(hrec,cfilein,nluout)
233 READ(nunit,fmt=
'(A50)') nom_article
234 READ(nunit,fmt=
'(A50)') ycomment
235 READ(nunit,fmt=*,err=100) zwrk
238 WHERE(zloc(:)==999.) zloc(:)=-999.
240 print*,cmask,
' ',hrec,
' ',
'MINVAL = ',minval(zwrk(:)),&
241 ' MAXVAL = ',maxval(zloc(:))
245 IF (patchflag ==
'+')
THEN
247 WRITE(ypas,
'(I2)') jpatch
248 ylvl=adjustl(ypas(:len_trim(ypas)))
249 OPEN(unit=30,file=trim(hrec)//
'_p'//trim(ylvl)//
'.dat',form=
'FORMATTED')
250 ibeg=ini*(jpatch-1)+1
255 WRITE(30,*)xlon(ip),xlat(ip),zwrk(ini*(jpatch-1)+ip)
259 WRITE(30,*)nom_article
270 OPEN(unit=30,file=trim(hrec)//
'.dat',form=
'FORMATTED')
274 WRITE(30,*)xlat(ip),xlon(ip),zwrk(ip)
278 WRITE(30,*)nom_article
296 IF (lhook) CALL dr_hook(
'SXPOST',1,zhook_handle)
302 WRITE(nluout,*)
' ERROR WHEN READING ARTICLE',hrec
305 IF (lhook) CALL dr_hook(
'SXPOST',1,zhook_handle)
310 CHARACTER(LEN=12) :: hrec
311 CHARACTER(LEN=*) :: cfilein
313 REAL(KIND=JPRB) :: zhook_handle
314 IF (lhook) CALL dr_hook(
'ERR_STOP',0,zhook_handle)
316 WRITE(nluout,*)
' ARTICLE ',trim(hrec),
' NOT FOUND IN FILE ', cfilein
319 WRITE(*,*)
' ARTICLE ',trim(hrec),
' NOT FOUND IN FILE ', cfilein
321 CALL
abor1_sfx(
'SXPOST: ARTICLE '//hrec//
' NOT FOUND')
322 IF (lhook) CALL dr_hook(
'ERR_STOP',1,zhook_handle)
subroutine init_io_surf_n(DTCO, DGU, U, HPROGRAM, HMASK, HSCHEME, HACTION)
subroutine abor1_sfx(YTEXT)
subroutine err_stop(HREC, CFILEIN, NLUOUT)
subroutine surfex_deallo_list
subroutine goto_model(KMODEL)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine end_io_surf_n(HPROGRAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine surfex_alloc_list(KMODEL)