48 USE modi_open_namelist
49 USE modi_close_namelist
57 USE yomhook
,ONLY : lhook, dr_hook
58 USE parkind1
,ONLY : jprb
67 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
68 INTEGER,
INTENT(INOUT) :: kgrid_par
69 INTEGER,
INTENT(OUT) :: kl
70 REAL,
DIMENSION(KGRID_PAR),
INTENT(OUT) :: pgrid_par
77 REAL,
DIMENSION(:),
ALLOCATABLE :: zlat_xy
78 REAL,
DIMENSION(:),
ALLOCATABLE :: zlon_xy
79 REAL,
DIMENSION(:),
ALLOCATABLE :: zlat
80 REAL,
DIMENSION(:),
ALLOCATABLE :: zlon
81 REAL,
DIMENSION(:),
ALLOCATABLE :: zmesh_size
83 REAL,
DIMENSION(:),
ALLOCATABLE :: zlatsup
84 REAL,
DIMENSION(:),
ALLOCATABLE :: zlonsup
85 REAL,
DIMENSION(:),
ALLOCATABLE :: zlatinf
86 REAL,
DIMENSION(:),
ALLOCATABLE :: zloninf
88 REAL,
DIMENSION(:),
ALLOCATABLE :: zxinf
89 REAL,
DIMENSION(:),
ALLOCATABLE :: zxsup
90 REAL,
DIMENSION(:),
ALLOCATABLE :: zyinf
91 REAL,
DIMENSION(:),
ALLOCATABLE :: zysup
100 INTEGER,
DIMENSION(1000) :: nrgri
110 INTEGER,
DIMENSION(:),
ALLOCATABLE :: inlopa
116 REAL,
DIMENSION(:),
POINTER :: zgrid_par
119 REAL(KIND=JPRB) :: zhook_handle
121 namelist/namdim/ndglg
122 namelist/namgem/rmucen, rlocen, rstret
123 namelist/namrgri/nrgri
129 IF (lhook) CALL dr_hook(
'READ_NAM_GRID_GAUSS',0,zhook_handle)
149 CALL
posnam(ilunam,
'NAMGEM',gfound,iluout)
150 IF (gfound)
READ(unit=ilunam,nml=namgem)
153 WRITE(iluout,*)
'****************************************************'
154 WRITE(iluout,*)
'stretching factor RSTRET for the Gaussian grid'
155 WRITE(iluout,*)
'definition must be greater than or equal to 1'
156 WRITE(iluout,*)
'You have set RSTRET=', rstret
157 WRITE(iluout,*)
'Please modify the value of RSTRET in namelist NAMGEM'
158 WRITE(iluout,*)
'****************************************************'
159 CALL
abor1_sfx(
'READ_NAM_GRID_GAUSS: STRETCHING FACTOR MUST BE >= 1.')
162 zlapo = 180. / xpi *
p_asin(rmucen)
163 zlopo = 180. / xpi * rlocen
172 CALL
posnam(ilunam,
'NAMDIM',gfound,iluout)
173 IF (gfound)
READ(unit=ilunam,nml=namdim)
174 CALL
posnam(ilunam,
'NAMRGRI',gfound,iluout)
175 IF (gfound)
READ(unit=ilunam,nml=namrgri)
178 ALLOCATE(inlopa(inlati))
179 inlopa(1:inlati/2) = nrgri(1:inlati/2)
180 inlopa(inlati/2+1:inlati) = nrgri(inlati/2:1:-1)
194 IF (zlapo>89.99 .AND. abs(zlopo)<0.00001)
THEN
200 ALLOCATE(zlat_xy(kl))
201 ALLOCATE(zlon_xy(kl))
219 IF(zcodil==1.0.AND.ityp==0)
THEN
223 CALL
latlon_gauss(zlon_xy,zlat_xy,kl,zlopo,zlapo,zcodil,zlon,zlat)
236 ALLOCATE(zloninf(kl))
237 ALLOCATE(zlatinf(kl))
238 ALLOCATE(zlonsup(kl))
239 ALLOCATE(zlatsup(kl))
252 IF(zcodil==1.0.AND.ityp==0)
THEN
253 zloninf(:) = zxinf(:)
254 zlatinf(:) = zyinf(:)
255 zlonsup(:) = zxsup(:)
256 zlatsup(:) = zysup(:)
258 CALL
latlon_gauss(zxinf,zyinf,kl,zlopo,zlapo,zcodil,zloninf,zlatinf)
259 CALL
latlon_gauss(zxsup,zysup,kl,zlopo,zlapo,zcodil,zlonsup,zlatsup)
267 ALLOCATE(zmesh_size(kl))
268 zmesh_size(:) = xundef
271 zlat_xy,zlon,zlat,zmesh_size)
279 kl,zlat,zlon,zlat_xy,zlon_xy,zmesh_size, &
280 zloninf,zlatinf,zlonsup,zlatsup )
292 DEALLOCATE(zmesh_size)
306 IF (kgrid_par==0)
THEN
307 kgrid_par =
SIZE(zgrid_par)
314 pgrid_par(:) = zgrid_par
317 DEALLOCATE(zgrid_par)
318 IF (lhook) CALL dr_hook(
'READ_NAM_GRID_GAUSS',1,zhook_handle)
subroutine read_nam_grid_gauss(HPROGRAM, KGRID_PAR, KL, PGRID_PAR)
subroutine put_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine gauss_grid_limits(KNLATI, KNLOPA, PXINF, PXSUP, PYINF, PYSUP)
subroutine abor1_sfx(YTEXT)
subroutine mesh_size_gauss(KL, KNLATI, KNLOPA, PLAPO, PLOPO, PCODIL, PLAT_XY, PLAT, PLON, PMESH_SIZE)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine latlon_gauss(PLON_XY, PLAT_XY, KL, PLOPO, PLAPO, PCODIL, PLON, PLAT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine comp_gridtype_gauss(KNLATI, KNLOPA, KL, KTYP, PLAT_XY, PLON_XY)