5 &(slope,zf,zr,xel,yel,nelem,nelmax,npoin,ikle,evol,unsv2d,mesh,
6 & zfcl_ms,avail,nomblay,nsicla)
76 INTEGER,
INTENT(IN) :: NELEM,NELMAX,NPOIN,NOMBLAY,NSICLA
77 INTEGER,
INTENT(IN) :: IKLE(nelmax,3)
79 DOUBLE PRECISION,
INTENT(IN ) :: SLOPE
80 DOUBLE PRECISION,
INTENT(INOUT) :: ZF(npoin)
81 DOUBLE PRECISION,
INTENT(IN) :: ZR(npoin)
82 DOUBLE PRECISION,
INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
83 DOUBLE PRECISION,
INTENT(INOUT) :: AVAIL(npoin,nomblay,nsicla)
85 TYPE(bief_obj),
INTENT(INOUT) :: EVOL,ZFCL_MS
86 TYPE(bief_obj),
INTENT(IN) :: UNSV2D
87 TYPE(bief_mesh) :: MESH
91 INTEGER IELEM,I1,I2,I3,I,IG1,IG2,IR1,IR2,J
92 DOUBLE PRECISION X2,X3,Y2,Y3,Z2,Z3,A,B,L,ZC,DEUXSURF,TANSL
93 DOUBLE PRECISION Q(3),QG1,QG2,QR1,QR2
95 DOUBLE PRECISION EZ1,EZ2,EZ3
99 INTRINSIC sqrt,min,max,tan
103 pi = 4.d0 * atan( 1.d0 )
104 tansl = tan( pi*slope/180.d0 )
109 CALL os(
'X=0 ',x=evol)
136 zc=(zf(i1)+zf(i2)+zf(i3))/3.d0
140 a=(z2*y3-z3*y2)/deuxsurf
141 b=(z3*x2-z2*x3)/deuxsurf
145 l=min(1.d0,tansl/max(sqrt(a**2+b**2),1.d-8))
149 IF(zf(i1).GT.zc) l=max(l,(zr(i1)-zc)/max(zf(i1)-zc,1.d-8))
150 IF(zf(i2).GT.zc) l=max(l,(zr(i2)-zc)/max(zf(i2)-zc,1.d-8))
151 IF(zf(i3).GT.zc) l=max(l,(zr(i3)-zc)/max(zf(i3)-zc,1.d-8))
159 evol%R(i1)=evol%R(i1)+(1.d0-l)*(zc-zf(i1))*deuxsurf/6.d0
160 evol%R(i2)=evol%R(i2)+(1.d0-l)*(zc-zf(i2))*deuxsurf/6.d0
161 evol%R(i3)=evol%R(i3)+(1.d0-l)*(zc-zf(i3))*deuxsurf/6.d0
172 CALL os(
'X=0 ',x=zfcl_ms%ADR(i)%P)
196 zc=(zf(i1)+zf(i2)+zf(i3))/3.d0
200 a=(z2*y3-z3*y2)/deuxsurf
201 b=(z3*x2-z2*x3)/deuxsurf
205 l=min(1.d0,tansl/max(sqrt(a**2+b**2),1.d-8))
213 ez1 = max(zr(i1),zf(i1)-
es(i1,1))
214 ez2 = max(zr(i2),zf(i2)-
es(i2,1))
215 ez3 = max(zr(i3),zf(i3)-
es(i3,1))
216 IF(zf(i1).GT.zc) l=max(l,(ez1-zc)/max(zf(i1)-zc,1.d-8))
217 IF(zf(i2).GT.zc) l=max(l,(ez2-zc)/max(zf(i2)-zc,1.d-8))
218 IF(zf(i3).GT.zc) l=max(l,(ez3-zc)/max(zf(i3)-zc,1.d-8))
228 q(1)=(1.d0-l)*(zc-zf(i1))*deuxsurf/6.d0
229 q(2)=(1.d0-l)*(zc-zf(i2))*deuxsurf/6.d0
230 q(3)=(1.d0-l)*(zc-zf(i3))*deuxsurf/6.d0
232 evol%R(i1)=evol%R(i1)+q(1)
233 evol%R(i2)=evol%R(i2)+q(2)
234 evol%R(i3)=evol%R(i3)+q(3)
245 IF(q(1).GE.0.d0)
THEN 246 IF(q(2).GE.0.d0)
THEN 255 IF(q(3).GE.0.d0)
THEN 275 IF(q(2).GT.0.d0)
THEN 276 IF(q(3).GT.0.d0)
THEN 312 zfcl_ms%ADR(i)%P%R(ig1)=zfcl_ms%ADR(i)%P%R(ig1)
313 & +qg1*avail(ig1,1,i)
314 zfcl_ms%ADR(i)%P%R(ig2)=zfcl_ms%ADR(i)%P%R(ig2)
315 & +qg2*avail(ig2,1,i)
316 zfcl_ms%ADR(i)%P%R(ir1)=zfcl_ms%ADR(i)%P%R(ir1)
317 & -qg1*avail(ig1,1,i)
318 & -qg2*avail(ig2,1,i)
327 zfcl_ms%ADR(i)%P%R(ig1)=zfcl_ms%ADR(i)%P%R(ig1)
328 & +qg1*avail(ig1,1,i)
329 zfcl_ms%ADR(i)%P%R(ir1)=zfcl_ms%ADR(i)%P%R(ir1)
330 & +qr1*avail(ig1,1,i)
331 zfcl_ms%ADR(i)%P%R(ir2)=zfcl_ms%ADR(i)%P%R(ir2)
332 & +qr2*avail(ig1,1,i)
343 CALL parcom(zfcl_ms%ADR(i)%P,2,mesh)
352 zfcl_ms%ADR(i)%P%R(j)=zfcl_ms%ADR(i)%P%R(j)*
353 & unsv2d%R(j)/mofac/10.d0
371 evol%R(i)=evol%R(i)*unsv2d%R(i)/mofac/10.d0
subroutine maxslope(SLOPE, ZF, ZR, XEL, YEL, NELEM, NELMAX, NPOIN, IKLE, EVOL, UNSV2D, MESH, ZFCL_MS, AVAIL, NOMBLAY, NSICLA)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine parcom(X, ICOM, MESH)
double precision, dimension(:,:), allocatable, target es