55 USE modi_write_file_map
64 CHARACTER(LEN=*),
INTENT(IN) :: HGRID
65 REAL,
DIMENSION(:),
INTENT(IN) :: PGRID_PAR
67 INTEGER,
INTENT(IN) :: KI
71 CHARACTER(LEN=30) :: YVAR
72 INTEGER :: JCAT, JJ, JI, IDX
77 REAL,
DIMENSION(MAX(1,KI-1)) :: ZX1, ZX2, ZX3, ZX4, ZY1, ZY2, ZY3, ZY4
78 REAL :: ZXA, ZXB, ZYA, ZYB
79 REAL,
DIMENSION(NNCAT,NMESHT):: ZWRK
80 REAL(KIND=JPRB) :: ZHOOK_HANDLE
82 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA',0,zhook_handle)
87 CALL init_4points(idxm,zx1(idxm),zx2(idxm),zx3(idxm),zx4(idxm),&
88 zy1(idxm),zy2(idxm),zy3(idxm),zy4(idxm))
99 zyt =
xy0(jcat) + (jj-1) *
xdxt(jcat)
100 zyt = zyt + 0.5 *
xdxt(jcat)
104 zxt =
xx0(jcat) + (ji-1) *
xdxt(jcat)
105 zxt = zxt + 0.5 *
xdxt(jcat)
107 idx = (jj-1) *
nnxc(jcat) + ji
110 IF (
xtopd(jcat,idx).NE.
xnul(jcat) )
THEN 112 CALL get_coord(zxt,zyt,zx1(1),zx2(1),zx3(1),zx4(1),zy1(1),zy2(1),zy3(1),zy4(1),zxa,zya,zxb,zyb)
115 IF (zxt.LT.zxa.OR.zxt.GE.zxb.OR.zyt.LT.zya.OR.zyt.GE.zyb)
THEN 118 CALL get_coord(zxt,zyt,zx1(idxm),zx2(idxm),zx3(idxm),zx4(idxm),&
119 zy1(idxm),zy2(idxm),zy3(idxm),zy4(idxm),zxa,zya,zxb,zyb)
121 DO WHILE (zxt.LT.zxa.OR.zxt.GE.zxb.OR.zyt.LT.zya.OR.zyt.GE.zyb)
124 WRITE(*,*)
'ZXT', zxt,
'ZYT',zyt
125 WRITE(*,*)
'indices Isba:',idxm,
'>=',ki
126 CALL abor1_sfx(
"MAKE_MASK_TOPD_TO_ISBA: PROBLEM")
128 CALL get_coord(zxt,zyt,zx1(idxm),zx2(idxm),zx3(idxm),zx4(idxm),&
129 zy1(idxm),zy2(idxm),zy3(idxm),zy4(idxm),zxa,zya,zxb,zyb)
148 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA',1,zhook_handle)
152 SUBROUTINE init_4points(KDXM,PX1,PX2,PX3,PX4,PY1,PY2,PY3,PY4)
157 INTEGER,
INTENT(IN) :: KDXM
158 REAL,
INTENT(OUT) :: PX1, PX2, PX3, PX4
159 REAL,
INTENT(OUT) :: PY1, PY2, PY3, PY4
160 REAL,
DIMENSION(KI) :: ZDX, ZDY
162 INTEGER :: ILINE, II, IDXN
163 REAL(KIND=JPRB) :: ZHOOK_HANDLE
165 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:INIT_4POINTS',0,zhook_handle)
167 IF (hgrid==
'IGN')
THEN 173 px1=
xxi(idxn)-zdx(idxn)/2.0
174 px2=
xxi(idxn)+zdx(idxn)/2.0
175 px3=
xxi(idxn)-zdx(idxn)/2.0
176 px4=
xxi(idxn)+zdx(idxn)/2.0
177 py1=
xyi(idxn)-zdy(idxn)/2.0
178 py2=
xyi(idxn)-zdy(idxn)/2.0
179 py3=
xyi(idxn)+zdy(idxn)/2.0
180 py4=
xyi(idxn)+zdy(idxn)/2.0
182 iline = int(kdxm/(
nimax))+1
183 ii = kdxm-((iline-1)*
nimax)
184 idxn = (iline-1)*(
nimax+1)+ii
197 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:INIT_4POINTS',1,zhook_handle)
201 SUBROUTINE get_coord(PXT,PYT,PX1,PX2,PX3,PX4,PY1,PY2,PY3,PY4,&
204 REAL,
INTENT(IN) :: PXT, PYT
205 REAL,
INTENT(IN) :: PX1, PX2, PX3, PX4
206 REAL,
INTENT(IN) :: PY1, PY2, PY3, PY4
207 REAL,
INTENT(OUT) :: PXA, PYA, PXB, PYB
209 REAL(KIND=JPRB) :: ZHOOK_HANDLE
211 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:GET_COORD',0,zhook_handle)
213 IF((px3-px1).EQ.0.0)
THEN 220 IF ((px4-px2).EQ.0.0)
THEN 227 IF ((py2-py1).EQ.0.0)
THEN 234 IF ((py4-py3).EQ.0.0)
THEN 241 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:GET_COORD',1,zhook_handle)
247 REAL,
INTENT(IN) :: PX1, PX2, PY1, PY2
248 REAL,
INTENT (OUT) :: PFA, PFB
249 REAL(KIND=JPRB) :: ZHOOK_HANDLE
251 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:GET_LINE_PARAM',0,zhook_handle)
253 pfa = (py2 - py1) / (px2 - px1)
254 pfb = py1 - pfa * px1
256 IF (
lhook)
CALL dr_hook(
'MAKE_MASK_TOPD_TO_ISBA:GET_LINE_PARAM',1,zhook_handle)
real, dimension(:,:), allocatable xtopd
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)
real, dimension(:), allocatable xx0
real, dimension(:), allocatable xyi
integer, dimension(:,:), allocatable nline
subroutine abor1_sfx(YTEXT)
subroutine get_line_param(PX1, PY1, PX2, PY2, PFA, PFB)
real, dimension(:), allocatable xdxt
subroutine make_mask_topd_to_isba(HGRID, PGRID_PAR, KI)
integer, parameter nundef
integer, dimension(:), allocatable nnyc
subroutine get_luout(HPROGRAM, KLUOUT)
real, dimension(:), allocatable xnul
real, dimension(:), allocatable xxi
integer, dimension(:), allocatable nnxc
subroutine get_coord(PIN, PDIN, POUT, KSIZE)
real, dimension(:), allocatable xy0
subroutine write_file_map(PVAR, HVAR)
subroutine init_4points(KDXM, PX1, PX2, PX3, PX4, PY1, PY2, PY3, PY4)
integer, dimension(:,:), allocatable nmaskt