The TELEMAC-MASCARET system  trunk
suspension_erosion.f
Go to the documentation of this file.
1 ! *****************************
2  SUBROUTINE suspension_erosion
3 ! *****************************
4 !
5  &(taup,hn,fdm,fd90,ava,npoin,charr,xmve,xmvs,vce,grav,xwc,
6  & zero,zref,ac,fluer,cstaeq,qsc,icq,u2d,v2d,csratio,debug)
7 !
8 !***********************************************************************
9 ! SISYPHE V6P2 01/07/2012
10 !***********************************************************************
11 !
12 !brief COMPUTES THE FLUX OF DEPOSITION AND EROSION.
13 !
14 !history J-M HERVOUET + C VILLARET
15 !+ 17/09/2009
16 !+
17 !+
18 !
19 !history CV
20 !+ 04/05/2010
21 !+ V6P0
22 !+ MODIFICATION FOR FREDSOE: EQUILIBRIUM CONCENTRATIONS
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 13/07/2010
26 !+ V6P0
27 !+ Translation of French comments within the FORTRAN sources into
28 !+ English comments
29 !
30 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
31 !+ 21/08/2010
32 !+ V6P0
33 !+ Creation of DOXYGEN tags for automated documentation and
34 !+ cross-referencing of the FORTRAN sources
35 !
36 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
37 !+ 19/07/2011
38 !+ V6P1
39 !+ Name of variables
40 !+
41 !history MAK (HRW)
42 !+ 31/05/2012
43 !+ V6P2
44 !+ Include CSRATIO
45 !
46 !history PAT (LNHE)
47 !+ 18/06/2012
48 !+ V6P2
49 !+ updated version with HRW's development: Soulsby-van Rijn's concentration
50 !
51 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52 !| AC |<->| CRITICAL SHIELDS PARAMETER (SHOULD BE INPUT ONLY)
53 !| ACLADM |-->| MEAN DIAMETER OF SEDIMENT
54 !| AVA |-->| VOLUME PERCENT OF SEDIMENT CLASS IN THE TOP ACTIVE LAYER
55 !| CHARR |-->| LOGICAL, IF BEDLOAD OR NOT
56 !| CSTAEQ |<->| EQUILIBRIUM CONCENTRATION
57 !| CSRATIO |<->| EQUILIBRIUM CONCENTRATION FOR SOULBY-VAN RIJN EQ.
58 !| DEBUG |-->| FLAG FOR DEBUGGING
59 !| FLUER |<->| EROSION FLUX
60 !| GRAV |-->| ACCELERATION OF GRAVITY
61 !| HN |-->| WATER DEPTH
62 !| ICQ |-->| REFERENCE CONCENTRATION FORMULA
63 !| NPOIN |-->| NUMBER OF POINTS
64 !| QSC |-->| BED LOAD TRANSPORT RATE
65 !| TAUP |-->| SKIN FRICTION
66 !| VCE |-->| FLOW VISCOSITY
67 !| XMVE |-->| FLUID DENSITY
68 !| XMVS |-->| WATER DENSITY
69 !| XWC |-->| SETTLING VELOCITIES
70 !| ZREF |-->| REFERENCE ELEVATION
71 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72 !
73  USE interface_sisyphe, ex_suspension_erosion=>suspension_erosion
74  USE bief
76  IMPLICIT NONE
77 
78  ! 2/ GLOBAL VARIABLES
79  ! -------------------
80  type(bief_obj), INTENT(IN) :: taup,hn,zref,qsc
81  type(bief_obj), INTENT(IN) :: u2d,v2d,csratio
82  INTEGER, INTENT(IN) :: NPOIN,DEBUG,ICQ
83  LOGICAL, INTENT(IN) :: CHARR
84  DOUBLE PRECISION, INTENT(IN) :: XMVE,XMVS,GRAV,XWC,VCE
85  DOUBLE PRECISION, INTENT(IN) :: AVA(npoin),FDM,FD90,ZERO
86  type(bief_obj), INTENT(INOUT) :: fluer,cstaeq
87  DOUBLE PRECISION, INTENT(INOUT) :: AC
88 
89  ! 3/ LOCAL VARIABLES
90  ! -------------------
91 
92  INTEGER I
93 !
94 !======================================================================!
95 !======================================================================!
96 ! PROGRAM !
97 !======================================================================!
98 !======================================================================!
99 !
100 ! COMPUTES THE NEAR BED EQUILIBRIUM CONCENTRATION --> CSTAEQ (MEAN DIAMETER)
101 !
102  IF(icq.EQ.1) THEN
103 !
104  IF(debug > 0) WRITE(lu,*) 'SUSPENSION_FREDSOE'
105  CALL suspension_fredsoe(fdm,taup,npoin,
106  & grav,xmve,xmvs,ac,cstaeq)
107  IF(debug > 0) WRITE(lu,*) 'END SUSPENSION_FREDSOE'
108 !
109  DO i=1,npoin
110  cstaeq%R(i)=cstaeq%R(i)*ava(i)
111  ENDDO
112  CALL os('X=CY ', x=fluer, y=cstaeq, c=xwc)
113 !
114  ELSEIF(icq.EQ.2) THEN
115 !
116  IF(debug > 0) WRITE(lu,*) 'SUSPENSION_BIJKER'
117  CALL suspension_bijker(taup,npoin,charr,qsc,zref,
118  & zero,cstaeq,xmve)
119  IF(debug > 0) WRITE(lu,*) 'END SUSPENSION_BIJKER'
120 ! NO MULTIPLICATION BY AVA BECAUSE AVA HAS ALREADY BEEN TAKEN
121 ! INTO ACCOUNT IN THE BEDLOAD TRANSPORT RATE
122  CALL os('X=CY ', x=fluer, y=cstaeq, c=xwc)
123 !
124  ELSEIF(icq.EQ.3) THEN
125 !
126  IF(debug > 0) WRITE(lu,*) 'SUSPENSION_VANRIJN'
127  CALL suspension_vanrijn(fdm,taup,npoin,grav,xmve,xmvs,
128  & vce,zero,ac,cstaeq,zref)
129  IF(debug > 0) WRITE(lu,*) 'END SUSPENSION_VANRIJN'
130  DO i=1,npoin
131  cstaeq%R(i)=cstaeq%R(i)*ava(i)
132  ENDDO
133  CALL os('X=CY ', x=fluer, y=cstaeq, c=xwc)
134  ELSEIF(icq.EQ.4) THEN
135  IF(debug > 0) WRITE(lu,*) 'SUSPENSION_SANDFLOW'
136  CALL suspension_sandflow(fdm,fd90,npoin,grav,xmve,xmvs,
137  & zero,cstaeq,hn,u2d,v2d,csratio)
138  IF(debug > 0) WRITE(lu,*) 'END SUSPENSION_SANDFLOW'
139  DO i=1,npoin
140  cstaeq%R(i)=cstaeq%R(i)*ava(i)
141  ENDDO
142  CALL os('X=CY ', x=fluer, y=cstaeq, c=xwc)
143 !
144  ENDIF
145 !
146 !======================================================================!
147 !======================================================================!
148 !
149  RETURN
150  END
151 !
152 !#######################################################################
153 !
subroutine suspension_sandflow(FDM, FD90, NPOIN, GRAV, XMVE, XMVS, ZERO, CSTAEQ, HN, U2D, V2D, CSRATIO)
subroutine suspension_vanrijn(FDM, TAUP, NPOIN, GRAV, XMVE, XMVS, VCE, ZERO, AC, CSTAEQ, ZREF)
subroutine suspension_bijker(TAUP, NPOIN, CHARR, QSC, ZREF, ZERO, CSTAEQ, XMVE)
subroutine suspension_erosion(TAUP, HN, FDM, FD90, AVA, NPOIN, CHARR, XMVE, XMVS, VCE, GRAV, XWC, ZERO, ZREF, AC, FLUER, CSTAEQ, QSC, ICQ, U2D, V2D, CSRATIO, DEBUG)
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine suspension_fredsoe(DM, TAUP, NPOIN, GRAV, XMVE, XMVS, AC, CSTAEQ)
Definition: bief.f:3