7 KINDEX,KISSOX,KISSOY,PVALUE,PNODATA)
46 INTEGER,
INTENT(IN) :: KSSO
47 REAL,
DIMENSION(:),
INTENT(IN) :: PGRID_PAR
48 REAL,
DIMENSION(:),
INTENT(IN) :: PLAT
49 REAL,
DIMENSION(:),
INTENT(IN) :: PLON
50 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KINDEX
51 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KISSOX
52 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KISSOY
54 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: PVALUE
55 REAL,
OPTIONAL,
INTENT(IN) :: PNODATA
73 REAL,
DIMENSION(SIZE(PLAT)) :: ZVALUE
75 REAL,
DIMENSION(SIZE(PLON)) :: ZLON
77 INTEGER,
DIMENSION(SIZE(PLAT)) :: ICI, ICJ
79 INTEGER :: IFACTLON, ISIZELON, IFACTLAT, ISIZELAT, ISIZE_OMP
81 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
85 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_1',0,zhook_handle)
87 IF (
PRESENT(pvalue) .AND.
PRESENT(pnodata))
THEN 95 IF (.NOT.
ALLOCATED(
xlatlim))
THEN 108 zdlon = (zlonmax-zlonmin) / float(
nlon)
109 zdlat = (zlatmax-zlatmin) / float(
nlat)
113 xlonlim(ji) = zlonmin + float(ji-1)*zdlon
118 xlatlim(ji) = zlatmin + float(ji-1)*zdlat
121 xlon0 = 0.5*(zlonmin+zlonmax)
123 ifactlon = floor(sqrt(float(
nlon+1))) + 1
124 isizelon = floor(float(
nlon+1) / ifactlon)
131 ifactlat = floor(sqrt(float(
nlat+1))) + 1
132 isizelat = floor(float(
nlat+1) / ifactlat)
140 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_1',1,zhook_handle)
148 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_2',0,zhook_handle_omp
151 IF (plon(jl)>=
xlon0+360.)
THEN 152 zlon(jl) = plon(jl) - 360.
153 ELSEIF (plon(jl)<=
xlon0-360.)
THEN 154 zlon(jl) = plon(jl) + 360.
160 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_2',1,zhook_handle_omp
170 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_2b',0,zhook_handle)
181 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_2b',1,zhook_handle)
186 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_3',0,zhook_handle_omp
193 IF (zvalue(jl)==znodata) cycle
199 DO jj = ifactlat,1,-1
202 IF (plat(jl)>=
xlatlim(ji))
THEN 213 DO jj = ifactlon,1,-1
216 IF (zlon(jl)>=
xlonlim(ji))
THEN 228 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_3',1,zhook_handle_omp
232 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_4',0,zhook_handle_omp
238 IF (zvalue(jl)==znodata)
THEN 242 ELSEIF ( ici(jl)==0 .OR. icj(jl)==0 )
THEN 255 kindex(1,jl) = (jj-1) *
nlon + ji
262 kissox(1,jl) = 1 + int( float(ksso) * (zlon(jl)-
xlonlim(ji))/(
xlonlim 270 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_LONLAT_REG_4',1,zhook_handle_omp
subroutine get_mesh_index_lonlat_reg(KSSO, PGRID_PAR, PLAT, PLON, KINDEX, KISSOX, KISSOY, PVALUE, PNODATA)
real, dimension(:), allocatable xlatlim
subroutine get_gridtype_lonlat_reg(PGRID_PAR, PLONMIN, PLONMAX, PLATMIN, PLATMAX, KLON, KLAT, KL, PLON, PLAT)
integer, dimension(:), allocatable nfracdlon
integer, dimension(:), allocatable nfracdlat
real, dimension(:), allocatable xlonlim