6 SUBROUTINE read_nam_grid_gauss(PGRID_FULL_PAR,KDIM_FULL,HPROGRAM,KGRID_PAR,KL,PGRID_PAR,HDIR)
50 USE modi_open_namelist
51 USE modi_close_namelist
70 REAL,
DIMENSION(:),
POINTER :: PGRID_FULL_PAR
71 INTEGER,
INTENT(IN) :: KDIM_FULL
73 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
74 INTEGER,
INTENT(INOUT) :: KGRID_PAR
75 INTEGER,
INTENT(OUT) :: KL
76 REAL,
DIMENSION(KGRID_PAR),
INTENT(OUT) :: PGRID_PAR
77 CHARACTER(LEN=1),
INTENT(IN) :: HDIR
84 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLAT_XY, ZLAT_XY0
85 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLON_XY, ZLON_XY0
86 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLAT, ZLAT0
87 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLON, ZLON0
88 REAL,
DIMENSION(:),
ALLOCATABLE :: ZMESH_SIZE, ZMESH_SIZE0
90 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLATSUP, ZLATSUP0
91 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLONSUP, ZLONSUP0
92 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLATINF, ZLATINF0
93 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLONINF, ZLONINF0
95 REAL,
DIMENSION(:),
ALLOCATABLE :: ZXINF
96 REAL,
DIMENSION(:),
ALLOCATABLE :: ZXSUP
97 REAL,
DIMENSION(:),
ALLOCATABLE :: ZYINF
98 REAL,
DIMENSION(:),
ALLOCATABLE :: ZYSUP
107 INTEGER,
DIMENSION(1000) :: NRGRI
117 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INLOPA
123 REAL,
DIMENSION(:),
POINTER :: ZGRID_PAR
126 REAL(KIND=JPRB) :: ZHOOK_HANDLE
128 NAMELIST/namdim/ndglg
129 NAMELIST/namgem/rmucen, rlocen, rstret
130 NAMELIST/namrgri/nrgri
136 IF (
lhook)
CALL dr_hook(
'READ_NAM_GRID_GAUSS',0,zhook_handle)
158 CALL posnam(ilunam,
'NAMGEM',gfound,iluout)
159 IF (gfound)
READ(unit=ilunam,nml=namgem)
162 WRITE(iluout,*)
'****************************************************' 163 WRITE(iluout,*)
'stretching factor RSTRET for the Gaussian grid' 164 WRITE(iluout,*)
'definition must be greater than or equal to 1' 165 WRITE(iluout,*)
'You have set RSTRET=', rstret
166 WRITE(iluout,*)
'Please modify the value of RSTRET in namelist NAMGEM' 167 WRITE(iluout,*)
'****************************************************' 168 CALL abor1_sfx(
'READ_NAM_GRID_GAUSS: STRETCHING FACTOR MUST BE >= 1.')
172 zlopo = 180. /
xpi * rlocen
181 CALL posnam(ilunam,
'NAMDIM',gfound,iluout)
182 IF (gfound)
READ(unit=ilunam,nml=namdim)
183 CALL posnam(ilunam,
'NAMRGRI',gfound,iluout)
184 IF (gfound)
READ(unit=ilunam,nml=namrgri)
187 ALLOCATE(inlopa(inlati))
188 inlopa(1:inlati/2) = nrgri(1:inlati/2)
189 inlopa(inlati/2+1:inlati) = nrgri(inlati/2:1:-1)
203 IF (zlapo>89.99 .AND. abs(zlopo)<0.00001)
THEN 209 ALLOCATE(zlat_xy(kl))
210 ALLOCATE(zlon_xy(kl))
228 IF(zcodil==1.0.AND.ityp==0)
THEN 232 CALL latlon_gauss(zlon_xy,zlat_xy,kl,zlopo,zlapo,zcodil,zlon,zlat)
245 ALLOCATE(zloninf(kl))
246 ALLOCATE(zlatinf(kl))
247 ALLOCATE(zlonsup(kl))
248 ALLOCATE(zlatsup(kl))
261 IF(zcodil==1.0.AND.ityp==0)
THEN 262 zloninf(:) = zxinf(:)
263 zlatinf(:) = zyinf(:)
264 zlonsup(:) = zxsup(:)
265 zlatsup(:) = zysup(:)
267 CALL latlon_gauss(zxinf,zyinf,kl,zlopo,zlapo,zcodil,zloninf,zlatinf)
268 CALL latlon_gauss(zxsup,zysup,kl,zlopo,zlapo,zcodil,zlonsup,zlatsup)
281 ALLOCATE(zmesh_size(kl))
285 zlat_xy,zlon,zlat,zmesh_size)
289 ALLOCATE(zlon0(kdim_full),zlat0(kdim_full),zlon_xy0(kdim_full),zlat_xy0(kdim_full),&
290 zmesh_size0(kdim_full),zloninf0(kdim_full),zlatinf0(kdim_full),&
291 zlonsup0(kdim_full),zlatsup0(kdim_full))
295 ALLOCATE(inlopa(inlati))
298 plopo=zlopo,pcodil=zcodil,knlopa=inlopa, &
299 plat=zlat0,plon=zlon0,plat_xy=zlat_xy0,&
300 plon_xy=zlon_xy0,pmesh_size=zmesh_size0,&
301 ploninf=zloninf0,platinf=zlatinf0,&
302 plonsup=zlonsup0,platsup=zlatsup0)
305 ALLOCATE(zlat(kl),zlon(kl),zlat_xy(kl),zlon_xy(kl),zmesh_size(kl))
306 ALLOCATE(zloninf(kl))
307 ALLOCATE(zlatinf(kl))
308 ALLOCATE(zlonsup(kl))
309 ALLOCATE(zlatsup(kl))
321 DEALLOCATE(zlon0,zlat0,zlon_xy0,zlat_xy0,zmesh_size0,zloninf0,zlatinf0,&
331 kl,zlat,zlon,zlat_xy,zlon_xy,zmesh_size, &
332 zloninf,zlatinf,zlonsup,zlatsup )
344 DEALLOCATE(zmesh_size)
354 IF (kgrid_par==0)
THEN 355 kgrid_par =
SIZE(zgrid_par)
362 pgrid_par(:) = zgrid_par
365 DEALLOCATE(zgrid_par)
366 IF (
lhook)
CALL dr_hook(
'READ_NAM_GRID_GAUSS',1,zhook_handle)
subroutine read_nam_grid_gauss(PGRID_FULL_PAR, KDIM_FULL, HPROGRAM, KGRID_PAR, KL, PGRID_PAR, HDIR)
subroutine gauss_grid_limits(KNLATI, KNLOPA, PXINF, PXSUP, PYINF, PYSUP)
subroutine latlon_gauss(PLON_XY, PLAT_XY, KL, PLOPO, PLAPO, PCODIL, PLON, PLAT)
subroutine mesh_size_gauss(KL, KNLATI, KNLOPA, PLAPO, PLOPO, PCODIL, PLAT_XY, PLAT, PLON, PMESH_SIZE)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
integer, dimension(:), allocatable nsize_task
subroutine comp_gridtype_gauss(KNLATI, KNLOPA, KL, KTYP, PLAT_XY, PLON_XY)
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 put_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)