36 USE yomhook
,ONLY : lhook, dr_hook
37 USE parkind1
,ONLY : jprb
39 USE modi_regrot_lonlat_rot
46 INTEGER,
INTENT(IN) :: kgrid_par
47 INTEGER,
INTENT(IN) :: kl
48 REAL,
DIMENSION(KGRID_PAR),
INTENT(IN) :: pgrid_par
49 REAL,
DIMENSION(KL),
INTENT(IN) :: plat
50 REAL,
DIMENSION(KL),
INTENT(IN) :: plon
51 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kindex
52 INTEGER,
INTENT(IN) :: ksso
53 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kissox
54 INTEGER,
DIMENSION(KL),
INTENT(OUT) :: kissoy
68 REAL,
DIMENSION(SIZE(PLON)) :: zlon
69 REAL,
DIMENSION(SIZE(PLAT)) :: zlat
70 REAL(KIND=JPRB) :: zhook_handle
74 IF (lhook) CALL dr_hook(
'GET_MESH_INDEX_LONLAT_ROT',0,zhook_handle)
75 IF (.NOT.
ALLOCATED(xlatlim))
THEN
81 zwest,zsouth,zdlon,zdlat,xpolon,xpolat, &
89 ALLOCATE(xlonlim(nlon+1))
91 xlonlim(ji) = zwest + float(ji-1)*zdlon
93 xlonlim = xlonlim - zdlon/2.
95 ALLOCATE(xlatlim(nlat+1))
97 xlatlim(ji) = zsouth + float(ji-1)*zdlat
99 xlatlim = xlatlim - zdlat/2.
101 xlon0 = 0.5*(minval(xlonlim)+maxval(xlonlim))
114 WHERE (zlon(:)>180.) zlon(:)=zlon(:)-360.
115 WHERE (zlon(:)<-180.) zlon(:)=zlon(:)+360.
117 zlon(:) = zlon(:)+nint((xlon0-zlon(:))/360.)*360.
124 IF (kl/=nlon*nlat)
THEN
132 IF ( zlon(jl)<xlonlim(1) .OR. zlon(jl)>=xlonlim(nlon+1) &
133 .OR. zlat(jl)<xlatlim(1) .OR. zlat(jl)>=xlatlim(nlat+1) )
THEN
141 ji = count(zlon(jl)>=xlonlim(:))
142 jj = count(zlat(jl)>=xlatlim(:))
143 kindex(jl) = (jj-1) * nlon + ji
150 kissox(jl) = 1 + int( float(ksso) * (zlon(jl)-xlonlim(ji))/(xlonlim(ji+1)-xlonlim(ji)) )
151 kissoy(jl) = 1 + int( float(ksso) * (zlat(jl)-xlatlim(jj))/(xlatlim(jj+1)-xlatlim(jj)) )
154 IF (lhook) CALL dr_hook(
'GET_MESH_INDEX_LONLAT_ROT',1,zhook_handle)
subroutine get_gridtype_lonlat_rot(PGRID_PAR, PWEST, PSOUTH, PDLON, PDLAT, PPOLON, PPOLAT, KLON, KLAT, KL, PLON, PLAT)
subroutine get_mesh_index_lonlat_rot(KGRID_PAR, KL, PGRID_PAR, PLAT, PLON, KINDEX, KSSO, KISSOX, KISSOY)
subroutine regrot_lonlat_rot(PXREG, PYREG, PXROT, PYROT, KXDIM, KYDIM, KX, KY, PXCEN, PYCEN, KCALL)