59 USE yomhook
,ONLY : lhook, dr_hook
60 USE parkind1
,ONLY : jprb
64 USE modi_io_buff_clean
76 CHARACTER(LEN=3),
INTENT(IN) :: hwrite
77 CHARACTER(LEN=6),
INTENT(IN) :: cfiletype
103 REAL,
DIMENSION(:),
ALLOCATABLE :: zsinla, zahybr, zbhybr
105 REAL,
DIMENSION(:),
ALLOCATABLE :: zlat_xy, zdx, zdy
107 REAL,
DIMENSION(0:1),
PARAMETER :: zniva = (/0.,0./)
109 REAL,
DIMENSION(0:1),
PARAMETER :: znivb = (/0.,1./)
111 REAL,
PARAMETER :: zrefer = 101325.
113 INTEGER,
DIMENSION(11) :: idate
114 INTEGER,
DIMENSION(:),
ALLOCATABLE :: inlopa, inozpa
126 REAL(KIND=JPRB) :: zhook_handle
130 IF (lhook) CALL dr_hook(
'WRITE_HEADER_FA',0,zhook_handle)
143 IF (ug%CGRID==
"CONF PROJ ")
THEN
146 zlatmin,zlonmin,ilon,ilat )
149 ALLOCATE(zdx(icount))
150 ALLOCATE(zdy(icount))
156 ALLOCATE(inozpa((1+ilat)/2))
164 zsinla(3) = zlopo*zrad
165 zsinla(4) = zlapo*zrad
166 zsinla(5) = xlonc*zrad
167 zsinla(6) = xlatc*zrad
182 ityptr = -int(
REAL(ilon-1)/2.)
183 itronc = int(
REAL(ilat-1)/2.)
188 ELSEIF (ug%CGRID==
"CARTESIAN ")
THEN
190 CALL
abor1_sfx(
'WRITE_HEADER_FA: CARTESIAN NOT YET IMPLEMENTED')
192 ELSEIF (ug%CGRID==
"LONLAT REG")
THEN
195 zlatmin,zlatmax,ilon,ilat )
200 WRITE(iluout,*)
' When Fa is used, NDIM_FULL must be >= 289, here NDIM_FULL = ',il
201 CALL
abor1_sfx(
' WRITE_HEADER_FA: LONLAT REG, With Fa, NDIM_FULL must be >= 289')
206 ALLOCATE(inozpa((1+ilat)/2))
208 itronc= min(int((
REAL(ilat-2)/2.0)),21)
209 ityptr=-min(int((
REAL(ilon-2)/2.0)),21)
219 zsinla(5) =(zlonmin+(zlonmax-zlonmin)/2.)*zrad
220 zsinla(6) =(zlatmin+(zlatmax-zlatmin)/2.)*zrad
221 zsinla(7) =((zlonmax-zlonmin)/
REAL(ilon))*zrad
222 zsinla(8) =((zlatmax-zlatmin)/
REAL(ilat))*zrad
223 zsinla(9) =(zlonmax-zlonmin)*zrad
224 zsinla(10)=(zlatmax-zlatmin)*zrad
225 zsinla(13)=zlonmin*zrad
226 zsinla(14)=zlatmin*zrad
227 zsinla(15)=zlonmax*zrad
228 zsinla(16)=zlatmax*zrad
239 ELSEIF (ug%CGRID==
"GAUSS ")
THEN
243 ALLOCATE(inlopa(inlati))
244 ALLOCATE(zsinla(inlati))
245 ALLOCATE(inozpa(inlati))
247 ALLOCATE(zlat_xy(il))
250 pcodil=zcodil,knlopa=inlopa,plat_xy=zlat_xy )
253 IF (zlapo>89.99 .AND. abs(zlopo)<0.00001)
THEN
259 zslapo=sin(zlapo*zrad)
260 zclopo=cos(zlopo*zrad)
261 zslopo=sin(zlopo*zrad)
263 iwork = int(
REAL(inlati)/2.0)
267 itronc=int(
REAL(inxlon-1)/2.)
269 itronc=int(
REAL(inxlon-3)/2.)
276 zsinla(jlat)=sin(zlat_xy(icount)*zrad)
277 icount=icount+inlopa(jlat)
282 ELSEIF (ug%CGRID==
"IGN ")
THEN
284 CALL
abor1_sfx(
'WRITE_HEADER_FA: IGN NOT YET IMPLEMENTED')
286 ELSEIF (ug%CGRID==
"LONLATVAL ")
THEN
288 CALL
abor1_sfx(
'WRITE_HEADER_FA: LONLATVAL NOT YET IMPLEMENTED')
292 ALLOCATE(zahybr(0:1))
293 ALLOCATE(zbhybr(0:1))
294 zahybr(0:1)=zniva(0:1)
295 zbhybr(0:1)=znivb(0:1)
298 CALL fanmsg(0,nluout)
299 CALL facade(cdnomc,ityptr,zslapo,zclopo,zslopo,zcodil,itronc,inlati,inxlon, &
300 inlopa,inozpa,zsinla,1,zrefer,zahybr,zbhybr,.true.)
302 CALL faitou(iret,nunit_fa,.true.,cfileout_fa,
'UNKNOWN', &
303 .true.,.false.,iverbfa,0,inb,cdnomc)
310 CALL fandar(iret,nunit_fa,idate)
321 IF (lhook) CALL dr_hook(
'WRITE_HEADER_FA',1,zhook_handle)
subroutine get_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine abor1_sfx(YTEXT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine get_gridtype_conf_proj(PGRID_PAR, PLAT0, PLON0, PRPK, PBETA, PLATOR, PLONOR, KIMAX, KJMAX, PX, PY, PDX, PDY, KL)
subroutine get_gridtype_lonlat_reg(PGRID_PAR, PLONMIN, PLONMAX, PLATMIN, PLATMAX, KLON, KLAT, KL, PLON, PLAT)