5 & (maskel,liqbor,s,zf,npoin,nptfr,ielmt,kent,
6 & beta,pi,msk,mesh,dzfdx,dzfdy,cteta,steta,
7 &
coef,calfa,salfa,slopeff,phised,devia,beta2,
8 & tob,xmvs,xmve,dm,grav,unsv2d)
87 TYPE(bief_obj),
INTENT(IN) :: MASKEL,LIQBOR,S,UNSV2D
88 TYPE(bief_obj),
INTENT(IN) :: ZF, TOB
89 INTEGER,
INTENT(IN) :: NPOIN, NPTFR, IELMT, KENT
90 INTEGER,
INTENT(IN) :: SLOPEFF,DEVIA
91 DOUBLE PRECISION,
INTENT(IN) :: BETA, PI, PHISED, BETA2
92 DOUBLE PRECISION,
INTENT(IN) :: XMVS, XMVE, GRAV, DM
93 LOGICAL,
INTENT(IN) :: MSK
94 TYPE(bief_mesh),
INTENT(INOUT) :: MESH
95 TYPE(bief_obj),
INTENT(INOUT) :: DZFDX, DZFDY
96 TYPE(bief_obj),
INTENT(INOUT) :: CTETA,STETA
97 TYPE(bief_obj),
INTENT(INOUT) :: COEF, CALFA, SALFA
102 DOUBLE PRECISION :: C,ZETA,C1,CALPHA,SALPHA,AA,BB
103 DOUBLE PRECISION :: CPSI,SPSI,DZF,TANPHI,CZETA,SZETA,SURBETA2
104 DOUBLE PRECISION :: NORM,TT1
120 CALL os(
'X=Y ',x=cteta,y=calfa)
121 CALL os(
'X=Y ',x=steta,y=salfa)
127 CALL vector(dzfdx,
'=',
'GRADF X',ielmt,1.d0,zf,s,s,
128 & s,s,s,mesh,msk,maskel)
129 CALL vector(dzfdy,
'=',
'GRADF Y',ielmt,1.d0,zf,s,s,
130 & s,s,s,mesh,msk,maskel)
137 CALL os(
'X=XY ',x=dzfdx,y=unsv2d)
138 CALL os(
'X=XY ',x=dzfdy,y=unsv2d)
148 c = 2.d0*(xmvs-xmve)*grav*dm/3.d0
150 tt1=c/max(tob%R(i),1.d-10)
151 aa=steta%R(i)-tt1*dzfdy%R(i)
152 bb=cteta%R(i)-tt1*dzfdx%R(i)
153 norm=max(sqrt(aa**2+bb**2),1.d-10)
160 ELSEIF(devia==2)
THEN 163 c = (xmvs-xmve)*grav*dm*surbeta2**2
165 tt1=sqrt(c/max(tob%R(i),1.d-10))
166 aa=steta%R(i)-tt1*dzfdy%R(i)
167 bb=cteta%R(i)-tt1*dzfdx%R(i)
168 norm=max(sqrt(aa**2+bb**2),1.d-10)
186 & 1.d0-beta*(dzfdx%R(i)*cteta%R(i)+dzfdy%R(i)*steta%R(i)) )
191 ELSEIF(slopeff.EQ.2)
THEN 193 tanphi = tan(phised*pi/180.d0)
198 dzf=sqrt(dzfdx%R(i)**2+dzfdy%R(i)**2)
199 IF(dzf.GT.1.d-12)
THEN 200 calpha=dzfdx%R(i)/dzf
201 salpha=dzfdy%R(i)/dzf
214 cpsi=cteta%R(i)*calpha+steta%R(i)*salpha
215 spsi=steta%R(i)*calpha-cteta%R(i)*salpha
216 c1=(czeta*tanphi)**2-(spsi*szeta)**2
217 coef%R(i)=max((cpsi*szeta+sqrt(max(c1,0.d0)))/tanphi,0.d0)
218 coef%R(i)=max(coef%R(i),0.d0)
231 IF (liqbor%I(k) == kent)
THEN 232 coef%R(mesh%NBOR%I(k)) = 1.d0
233 calfa%R(mesh%NBOR%I(k)) = cteta%R(mesh%NBOR%I(k))
234 salfa%R(mesh%NBOR%I(k)) = steta%R(mesh%NBOR%I(k))
238 IF (liqbor%I(k) == 4)
THEN 239 coef%R(mesh%NBOR%I(k)) = 1.d0
240 calfa%R(mesh%NBOR%I(k)) = cteta%R(mesh%NBOR%I(k))
241 salfa%R(mesh%NBOR%I(k)) = steta%R(mesh%NBOR%I(k))
subroutine bedload_effpnt(MASKEL, LIQBOR, S, ZF, NPOIN, NPTFR, IELMT, KENT, BETA, PI, MSK, MESH, DZFDX, DZFDY, CTETA, STETA, COEF, CALFA, SALFA, SLOPEFF, PHISED, DEVIA, BETA2, TOB, XMVS, XMVE, DM, GRAV, UNSV2D)
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
subroutine parcom(X, ICOM, MESH)
subroutine coef(S3D_IVIDE, S3D_EPAI, TRA01, S3D_NPFMAX, IMAX, NDEB, S3D_RHOS, GRAV, S3D_DTC, DSIG1)