7 KINDEX,KISSOX,KISSOY,PVALUE,PNODATA)
49 INTEGER,
INTENT(IN) :: KNBLINES
50 INTEGER,
INTENT(IN) :: KSSO
51 REAL,
DIMENSION(:),
INTENT(IN) :: PGRID_PAR
52 REAL,
DIMENSION(:),
INTENT(IN) :: PLAT
53 REAL,
DIMENSION(:),
INTENT(IN) :: PLON
54 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KINDEX
55 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KISSOX
56 INTEGER,
DIMENSION(:,:),
INTENT(OUT) :: KISSOY
58 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(IN) :: PVALUE
59 REAL,
OPTIONAL,
INTENT(IN) :: PNODATA
65 REAL,
DIMENSION(SIZE(PLAT)) :: ZX, ZY
66 REAL,
DIMENSION(SIZE(PLAT)) :: ZVALUE
70 INTEGER,
DIMENSION(SIZE(PLAT)) :: ICJ
71 INTEGER :: ILGRID, ISIZE_LON, ISIZE_DLAT, INBLINES
72 INTEGER :: IFACTX, ISIZEX, ISIZEY
74 INTEGER :: JGRID, IGRID0
76 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
79 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_1',0,zhook_handle)
81 IF (
PRESENT(pvalue) .AND.
PRESENT(pnodata))
THEN 93 IF (.NOT.
ALLOCATED(
nnlopa))
THEN 104 ALLOCATE(
xxcen(ilgrid))
105 ALLOCATE(
xycen(ilgrid))
123 ALLOCATE(
xxinf(ilgrid))
124 ALLOCATE(
xyinf(ilgrid))
125 ALLOCATE(
xxsup(ilgrid))
126 ALLOCATE(
xysup(ilgrid))
127 ALLOCATE(
xxdif(ilgrid))
128 ALLOCATE(
xydif(ilgrid))
136 ifactx = floor(sqrt(float(
nnlati))) + 1
137 isizex = floor(float(
nnlati) / ifactx)
149 nfracdx(jj) = 1 + (jj-1) * isizex
165 nfracdy(jj,ji) = 1 + (ji-1) * isizey
178 IF (knblines==0)
THEN 179 inblines =
SIZE(plat)
184 isize_dlat =
SIZE(plat)/inblines
187 IF (knblines==0)
THEN 190 isize_lon = isize_dlat
193 IF (
ALLOCATED(
xlon))
THEN 194 IF ( isize_lon/=
SIZE(
xlon) .OR. inblines/=
SIZE(
xlat) )
THEN 205 IF (.NOT.
ALLOCATED(
xlon))
THEN 207 ALLOCATE(
xlon(isize_lon))
208 ALLOCATE(
xlat(inblines))
222 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_1',1,zhook_handle)
223 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_2',0,zhook_handle)
230 xlat(jj) = plat(jj*isize_dlat) *
xdr 252 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_2',1,zhook_handle)
255 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_3',0,zhook_handle_omp)
259 IF (zvalue(jl)==znodata) cycle
270 jgrid = jgrid +
nnlopa(ji-1)
272 IF (zy(jl)>=
xyinf(jgrid))
THEN 291 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_3',1,zhook_handle_omp)
296 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_4',0,zhook_handle_omp)
300 IF (zvalue(jl)==znodata) cycle
303 IF (icj(jl)/=1) igrid0 =
sum(
nnlopa(1:icj(jl)-1))
311 jgrid = igrid0 +
nfracdy(icj(jl),jj-1)
316 IF (zx(jl)<=
xxcen(jgrid)-180. .AND. zx(jl)<
xxsup(jgrid)-360.) zx
318 IF (zx(jl)>=
xxinf(jgrid) .AND. zx(jl)<
xxsup(jgrid))
THEN 334 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_4',1,zhook_handle_omp)
343 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_5',0,zhook_handle_omp)
346 IF (kindex(1,jl)/=0)
THEN 347 kissox(1,jl) = 1 + int( float(ksso) * (zx(jl)-
xxinf(kindex(1,jl)))
352 IF (
lhook)
CALL dr_hook(
'GET_MESH_INDEX_GAUSS_5',1,zhook_handle_omp)
real, dimension(:), allocatable xsinn
subroutine gauss_grid_limits(KNLATI, KNLOPA, PXINF, PXSUP, PYINF, PYSUP)
real, dimension(:), allocatable xxinf
real, dimension(:), allocatable xxcen
real, dimension(:), allocatable xysup
real, dimension(:), allocatable xlon
real, dimension(:), allocatable xycen
real, dimension(:), allocatable xsintc
real, dimension(:), allocatable xydif
subroutine xy_gauss(PCODIL, KSIZE_DLAT, KSIZE_LON, PNODATA, PVALUE, PLAT_XY, PLON_XY)
subroutine get_mesh_index_gauss(KNBLINES, KSSO, PGRID_PAR, PLAT, PLON,
integer, dimension(:), allocatable nfacty
real, dimension(:), allocatable xyinf
integer, dimension(:,:), allocatable nfracdy
real, dimension(:), allocatable xxsup
integer, dimension(:), allocatable nfracgx
real, dimension(:), allocatable xcosn
intent(out) overrides sub arrays one Sort by the least significant key first sum(iindex(1:n))
subroutine get_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
integer, dimension(:), allocatable nfracdx
real, dimension(:), allocatable xsints
integer, dimension(:), allocatable nnlopa
real, dimension(:), allocatable xxdif
real, dimension(:), allocatable xlat
real, dimension(:), allocatable xcost