8 hprogram,hfile,hfiletype,ogrid,hgrid,kgrid_par,pgrid_par)
53 USE modd_surfex_omp, ONLY : nindx2sfx, nwork, nwork2, xwork, xwork2, xwork3, &
54 nwork_full, nwork2_full, xwork_full, xwork2_full
56 USE modd_pgd_grid, ONLY : nl, xgrid_par, ngrid_par, xmeshlength
61 USE modi_grid_from_file
62 USE modi_open_namelist
64 USE modi_close_namelist
66 USE modi_read_nam_gridtype
72 USE yomhook
,ONLY : lhook, dr_hook
73 USE parkind1
,ONLY : jprb
88 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
89 CHARACTER(LEN=28),
INTENT(IN) :: hfile
90 CHARACTER(LEN=6),
INTENT(IN) :: hfiletype
91 LOGICAL,
INTENT(IN) :: ogrid
92 CHARACTER(LEN=10),
INTENT(OUT) :: hgrid
93 INTEGER,
INTENT(OUT) :: kgrid_par
94 REAL,
DIMENSION(:),
POINTER :: pgrid_par
103 REAL(KIND=JPRB) :: zhook_handle
113 IF (lhook) CALL dr_hook(
'PGD_GRID',0,zhook_handle)
121 yinifiletype = hfiletype
130 IF (.NOT. ogrid)
THEN
138 CALL
posnam(ilunam,
'NAM_PGD_GRID',gfound,iluout)
139 IF (gfound)
READ(unit=ilunam,nml=nam_pgd_grid)
154 CALL
test_nam_var_surf(iluout,
'CGRID',cgrid,
'CONF PROJ ',
'NONE ',
'LONLAT REG',
'CARTESIAN ',
'GAUSS ',&
155 'IGN ',
'LONLATVAL ',
'LONLAT ROT')
156 CALL
test_nam_var_surf(iluout,
'YINIFILETYPE',yinifiletype,
' ',
'MESONH',
'LFI ',
'ASCII ',
'NC ')
167 IF (len_trim(yinifiletype)>0 .AND. len_trim(yinifile)>0 )
THEN
168 IF (yinifiletype==
'MESONH' .OR. yinifiletype==
'LFI ' .OR. yinifiletype==
'ASCII ' .OR. yinifiletype==
'NC ')
THEN
170 hprogram,yinifile,yinifiletype,ogrid,cgrid,ngrid_par,xgrid_par,nl)
172 CALL
abor1_sfx(
'PGD_GRID: FILE TYPE NOT SUPPORTED '//hfiletype//
' FOR FILE '//hfile)
180 IF (cgrid==
'NONE ' .OR. cgrid==
' ')
THEN
181 CALL
abor1_sfx(
'PGD_GRID: GRID TYPE NOT INITIALIZED, CGRID='//cgrid)
198 IF (.NOT.
ALLOCATED(nindex))
THEN
199 ALLOCATE(nindex(u%NDIM_FULL))
202 nindx2sfx = u%NDIM_FULL
203 ALLOCATE(nwork(u%NDIM_FULL))
204 ALLOCATE(xwork(u%NDIM_FULL))
205 ALLOCATE(nwork2(u%NDIM_FULL,10))
206 ALLOCATE(xwork2(u%NDIM_FULL,10))
207 ALLOCATE(xwork3(u%NDIM_FULL,10,10))
208 IF (nrank==npio)
THEN
209 ALLOCATE(nwork_full(u%NDIM_FULL))
210 ALLOCATE(xwork_full(u%NDIM_FULL))
211 ALLOCATE(nwork2_full(u%NDIM_FULL,10))
212 ALLOCATE(xwork2_full(u%NDIM_FULL,10))
214 ALLOCATE(nwork_full(0))
215 ALLOCATE(xwork_full(0))
216 ALLOCATE(nwork2_full(0,0))
217 ALLOCATE(xwork2_full(0,0))
220 kgrid_par = ngrid_par
221 ALLOCATE(pgrid_par(kgrid_par))
222 pgrid_par = xgrid_par
229 ALLOCATE(ug%XLAT (nl))
230 ALLOCATE(ug%XLON (nl))
231 ALLOCATE(ug%XMESH_SIZE (nl))
232 ALLOCATE(ug%XJPDIR (nl))
233 CALL
latlon_grid(cgrid,ngrid_par,nl,iluout,xgrid_par,ug%XLAT,ug%XLON,ug%XMESH_SIZE,ug%XJPDIR)
241 xmeshlength = sum( sqrt(ug%XMESH_SIZE) ) / nl
244 xmeshlength = xmeshlength *180. / xpi / xradius
245 IF (lhook) CALL dr_hook(
'PGD_GRID',1,zhook_handle)
subroutine grid_from_file(HPROGRAM, HFILE, HFILETYPE, OGRID, HGRID, KGRID_PAR, PGRID_PAR, KL)
subroutine latlon_grid(HGRID, KGRID_PAR, KL, KLUOUT, PGRID_PAR, PLAT, PLON, PMESH_SIZE, PDIR)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine read_nam_gridtype(HPROGRAM, HGRID, KGRID_PAR, PGRID_PAR, KL)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine pgd_grid(UG, U, HPROGRAM, HFILE, HFILETYPE, OGRID, HGRID, KGRID_PAR, PGRID_PAR)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)
subroutine default_grid(HPROGRAM, HGRID)