43 INTEGER I, J, K, N, M,END1, END2,CURNBR
46 DOUBLE PRECISION ZC, ZW, ZB
47 DOUBLE PRECISION AT1, AT2, AT3
49 DOUBLE PRECISION X1, X2, Y1, Y2, DX, DY,DS1,DS2,END1X,END1Y
50 DOUBLE PRECISION U1, U2, V1, V2, DELS,CURDIS,DIS,END2X,END2Y
51 DOUBLE PRECISION,
DIMENSION (:),
ALLOCATABLE :: XL, YL, XP, YP
56 IF(
debug.GT.0)
WRITE(
lu,*)
'CALLING LECBREACH' 58 IF(
debug.GT.0)
WRITE(
lu,*)
'BACK FROM LECBREACH' 60 WRITE (
lu,*)
'READING BREACH DATA = OK' 63 zcrbr%R(i) = -huge(100.d0)
65 k =
indbr%ADR(i)%P%I(j)
82 k =
indbr%ADR(i)%P%I(j)
83 IF(
h%R(k).GT.0.d0)
THEN 109 IF(zw.GT.
zdecbr%R(i))
THEN 115 at2 = at1 +
durbr%R(i)
125 k =
indbr%ADR(i)%P%I(j)
126 zf%R(k)=min(
zf%R(k), zb)
130 ELSEIF (
optero%I(i).EQ.2)
THEN 139 firstend:
DO m=1,nponbr%I(i)-1
140 curdis=curdis+pondsb%ADR(i)%P%R(m)
141 IF (curdis .GT. ((finbrw%R(i)-curbrw%R(i))/2.d0))
THEN 143 ds1= curdis - (finbrw%R(i)-curbrw%R(i))/2.d0
144 dx = dkaxcr%ADR(i)%P%R(m+1) - dkaxcr%ADR(i)%P%R(m)
145 dy = dkaycr%ADR(i)%P%R(m+1) - dkaycr%ADR(i)%P%R(m)
146 u1 = dx/pondsb%ADR(i)%P%R(m)
147 u2 = dy/pondsb%ADR(i)%P%R(m)
148 IF(curbrw%R(i).LT.finbrw%R(i))
THEN 149 END1X = DKAXCR%ADR(I)%P%R(M+1) - U1*ds1
150 END1Y = DKAYCR%ADR(I)%P%R(M+1) - U2*ds1
151 ELSEIF(curbrw%R(i).EQ.finbrw%R(i))
THEN 152 END1X = DKAXCR%ADR(I)%P%R(1)- U1*
153 & (pondsb%ADR(i)%P%R(1)/10.d0)
154 END1Y = DKAYCR%ADR(I)%P%R(1)- U2*
155 & (pondsb%ADR(i)%P%R(1)/10.d0)
161 secondend:
DO j=m+1,nponbr%I(i)-1
162 dis=dis+pondsb%ADR(i)%P%R(j)
163 IF (dis .GE. curbrw%R(i))
THEN 165 ds2=dis - curbrw%R(i)
166 dx = dkaxcr%ADR(i)%P%R(j+1) - dkaxcr%ADR(i)%P%R(j)
167 dy = dkaycr%ADR(i)%P%R(j+1) - dkaycr%ADR(i)%P%R(j)
168 u1 = dx/pondsb%ADR(i)%P%R(j)
169 u2 = dy/pondsb%ADR(i)%P%R(j)
170 IF(curbrw%R(i).LT.finbrw%R(i))
THEN 171 END2X = DKAXCR%ADR(I)%P%R(J+1) - U1*ds2
172 END2Y = DKAYCR%ADR(I)%P%R(J+1) - U2*ds2
173 ELSEIF (curbrw%R(i).EQ.finbrw%R(i))
THEN 174 END2X = DKAXCR%ADR(I)%P%R(NPONBR%I(I))+ U1*
175 & (pondsb%ADR(i)%P%R(nponbr%I(i)-1)/10.d0)
176 END2Y = DKAYCR%ADR(I)%P%R(NPONBR%I(I))+ U2*
177 & (pondsb%ADR(i)%P%R(nponbr%I(i)-1)/10.d0)
189 400
FORMAT(1x,
'BREACH: BREACH WIDTH CANNOT BE GREATER ',
190 &
'THAN FINAL WIDTH FOR BREACH: ', 1i6)
194 ALLOCATE(xl(vecz), stat=istat)
199 ALLOCATE(yl(vecz), stat=istat)
205 200
FORMAT(1x,
'ERROR DURING ALLOCATION OF VECTOR: ',
206 &
'ERROR CODE: ',1i6)
213 xl(j)=dkaxcr%ADR(i)%P%R(end1+j-2)
214 yl(j)=dkaycr%ADR(i)%P%R(end1+j-2)
218 ALLOCATE(xp(2*vecz), stat=istat)
223 ALLOCATE(yp(2*vecz), stat=istat)
235 dels=sqrt(dx*dx+dy*dy)
236 IF(dels.GE.0.d0)
THEN 240 WRITE(lu,*)
'PROBLEM IN DEFINITION OF BREACH :',i
246 xp(1) = x1 + v1*polwdt%R(i)/2.d0
247 yp(1) = y1 + v2*polwdt%R(i)/2.d0
248 xp(2*vecz) = x1 - v1*polwdt%R(i)/2.d0
249 yp(2*vecz) = y1 - v2*polwdt%R(i)/2.d0
256 dels=sqrt(dx*dx+dy*dy)
257 IF(dels.GE.0.d0)
THEN 261 WRITE(lu,*)
'PROBLEM IN DEFINITION OF BREACH :',i
267 xp(m) = x2 + v1*polwdt%R(i)/2.d0
268 yp(m) = y2 + v2*polwdt%R(i)/2.d0
269 xp(2*vecz-m+1) = x2 - v1*polwdt%R(i)/2.d0
270 yp(2*vecz-m+1) = y2 - v2*polwdt%R(i)/2.d0
276 IF(
inpoly(mesh%X%R(m), mesh%Y%R(m), xp, yp, 2*vecz))
THEN 282 IF((optnbr%I(i).EQ.2).AND.(tdecbr%R(i).LT.0.d0))
THEN 287 IF(h%R(k).GT.0.d0)
THEN 298 IF(zc.GT.zdecbr%R(i))
THEN 303 IF((optnbr%I(i).EQ.3).AND.(tdecbr%R(i).LT.0.d0))
THEN 304 IF(numpsd%I(i).GT.0)
THEN 305 zw = zf%R(numpsd%I(i)) + h%R(numpsd%I(i))
311 zw = p_max(zw)+p_min(zw)
313 IF(zw.GT.zdecbr%R(i))
THEN 322 at2 = at1 + durbr%R(i)
323 at3= at1 + durbr%R(i)/10.d0
329 zb = zcrbr%R(i)+(zfinbr%R(i)-zcrbr%R(i))/(at3-at1)
333 curbrw%R(i)=finbrw%R(i)
335 curbrw%R(i)=inibrw%R(i)+(finbrw%R(i)-inibrw%R(i))
336 & /(at2-at1)*(at-at1)
340 zf%R(k)=min(zf%R(k), zb)
353 20
FORMAT(1x,
'CREATION OF BREACH : ',i4,/,1x,
354 &
'AT TIME : ',g16.7)
type(bief_obj), target zfinbr
logical function inpoly(X, Y, XSOM, YSOM, NSOM)
type(bief_obj), target zdecbr
type(bief_obj), target durbr
type(bief_obj), target optnbr
type(bief_obj), target zf
type(bief_obj), target optero
subroutine lecbreach(IFIC)
type(bief_obj), target zcrbr
double precision, target at
type(bief_obj), target nbndbr
type(bief_obj), target tdecbr
type(bief_obj), target indbr
type(bief_obj), target numpsd
type(bief_file), dimension(maxlu_t2d), target t2d_files