51 USE yomhook
,ONLY : lhook, dr_hook
52 USE parkind1
,ONLY : jprb
59 INTEGER,
INTENT(IN) :: kgrid_par
60 REAL,
DIMENSION(KGRID_PAR),
INTENT(IN) :: pgrid_par
61 LOGICAL,
DIMENSION(720,360),
INTENT(OUT) :: olatlonmask
71 REAL,
DIMENSION(720,360) :: zx_mask
72 REAL,
DIMENSION(720,360) :: zy_mask
73 REAL,
DIMENSION(720,360) :: zlon_mask
74 REAL,
DIMENSION(720,360) :: zlat_mask
75 REAL,
DIMENSION(:),
ALLOCATABLE :: zx
76 REAL,
DIMENSION(:),
ALLOCATABLE :: zy
77 REAL,
DIMENSION(:),
ALLOCATABLE :: zdx
78 REAL,
DIMENSION(:),
ALLOCATABLE :: zdy
82 REAL(KIND=JPRB) :: zhook_handle
85 IF (lhook) CALL dr_hook(
'LATLONMASK_LONLATVAL',0,zhook_handle)
86 olatlonmask(:,:) = .false.
105 zxmin = minval(zx(:)-zdx(:)/2.)
106 zxmax = maxval(zx(:)+zdx(:)/2.)
107 zymin = minval(zy(:)-zdy(:)/2.)
108 zymax = maxval(zy(:)+zdy(:)/2.)
120 zlon_mask(:,:)= spread( (/ ( jlon /2. - 0.25 , jlon=1,720 ) /) , dim=2, ncopies=360 )
121 zlat_mask(:,:)= spread( (/ ( (jlat-180)/2. - 0.25 , jlat=1,360 ) /) , dim=1, ncopies=720 )
126 zlon0 = 0.5 * (zxmin+zxmax)
127 zlon_mask(:,:)=zlon_mask(:,:)+nint((zlon0-zlon_mask(:,:))/360.)*360.
132 WHERE ((zlon_mask(:,:) >= zxmin .AND. zlon_mask(:,:) <= zxmax &
133 .OR. zlon_mask(:,:) <= zxmin .AND. zlon_mask(:,:)+0.25 >= zxmin &
134 .OR. zlon_mask(:,:) >= zxmax .AND. zlon_mask(:,:)-0.25 <= zxmax &
135 .OR. zlon_mask(:,:)-0.25 <=zxmin .AND. zlon_mask(:,:)+0.25 >= zxmax) .AND. &
136 (zlat_mask(:,:) >= zymin .AND. zlat_mask(:,:) <= zymax &
137 .OR. zlat_mask(:,:) <= zymin .AND. zlat_mask(:,:)+0.25 >= zymin &
138 .OR. zlat_mask(:,:) >= zymax .AND. zlat_mask(:,:)-0.25 <= zymax &
139 .OR. zlat_mask(:,:)-0.25 <=zymin .AND. zlat_mask(:,:)+0.25 >= zymax))
140 olatlonmask(:,:) = .true.
142 IF (lhook) CALL dr_hook(
'LATLONMASK_LONLATVAL',1,zhook_handle)
subroutine get_gridtype_lonlatval(PGRID_PAR, KL, PX, PY, PDX, PDY)
subroutine latlonmask_lonlatval(KGRID_PAR, PGRID_PAR, OLATLONMASK)