The TELEMAC-MASCARET system  trunk
bedload_solidischarge.f
Go to the documentation of this file.
1 ! ********************************
2  SUBROUTINE bedload_solidischarge
3 ! ********************************
4 !
5  &(mesh,u2d,v2d,unorm,hn,tw,uw,mu,tob,cf,tobw,fw,thetaw,
6  & ava,maskpt,maskel,acladm,unladm,ksp,ksr,liqbor,
7  & debug,npoin,nptfr,ielmt,icf,kent,optban,
8  & hidfac,grav,dm,d90,xwc,xmve,xmvs,vce,hmin,
9  & hidi,karman,zero,pi,karim_holly_yang,
10  & susp,msk,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,
11  & t11,t12,ac,hiding,qsc,qss,
12  & slopeff,coefpn,phised,calfa,salfa,beta,zf_c,s,
13  & devia,beta2,seccurrent,
14  & bijk,houle,unsv2d,u3d,v3d,code,sanfra)
15 !
16 !***********************************************************************
17 ! SISYPHE V8P0 12/09/2018
18 !***********************************************************************
19 !
20 !brief
21 !
22 !history E. PELTIER; C. LENORMANT; J.-M. HERVOUET
23 !+ 20/05/1995
24 !+ V5P1
25 !+
26 !
27 !history B. MINH DUC
28 !+ **/12/2001
29 !+ V5P2
30 !+
31 !
32 !history M. GONZALES DE LINARES
33 !+ **/07/2002
34 !+ V5P3
35 !+
36 !
37 !history C. VILLARET
38 !+ **/10/2003
39 !+ V5P4
40 !+
41 !
42 !history F. HUVELIN
43 !+ 14/09/2004
44 !+ V5P5
45 !+
46 !
47 !history J.-M. HERVOUET
48 !+ 11/03/2008
49 !+ V5P9
50 !+ MODIFICATIONS FOR PARALLEL MODE
51 !
52 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
53 !+ 13/07/2010
54 !+ V6P0
55 !+ Translation of French comments within the FORTRAN sources into
56 !+ English comments
57 !
58 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
59 !+ 21/08/2010
60 !+ V6P0
61 !+ Creation of DOXYGEN tags for automated documentation and
62 !+ cross-referencing of the FORTRAN sources
63 !
64 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
65 !+ 19/07/2011
66 !+ V6P1
67 !+ Name of variables
68 !+
69 !history J-M HERVOUET (EDF-LNHE)
70 !+ 22/02/2012
71 !+ V6P2
72 !+ Dirichlet treatment of QBOR removed
73 !+ It is now done in bedload_solvs_ef and vf
74 !+
75 !history R KOPMANN (BAW)
76 !+ 10/05/2016
77 !+ V7P2
78 !+ CALFA,SALFA dependent of grain classes
79 !
80 !history F.CORDIER & P.TASSI (EDF-LNHE)
81 !+ 12/09/2018
82 !+ V8P0
83 !+ PARSING of SANFRA for the formula of WILCOCK and CROWE (2003)
84 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85 !| AC |<->| CRITICAL SHIELDS PARAMETER
86 !| ACLADM |-->| MEAN DIAMETER OF SEDIMENT
87 !| AVA |-->| PERCENT AVAILABLE
88 !| BETA |-->| COEFFICIENT FOR SLOPING BED EFFECT ( KOCH AND FLOKSTRA)
89 !| BETA2 |-->| COEFFICIENT FOR THE DEVIATION (TALMON ET AL.)
90 !| BIJK |-->| COEFFICIENT OF THE BIJKER FORMULA
91 !| CALFA |<->| COSINUS OF THE ANGLE BETWEEN MEAN FLOW AND TRANSPORT
92 !| CF |-->| QUADRATIC FRICTION COEFFICIENT
93 !| COEFPN |<->| CORRECTION OF TRANSORT FOR SLOPING BED EFFECT
94 !| D90 |-->| D90
95 !| DEBUG |-->| FLAG FOR DEBUGGING
96 !| DEVIA |-->| SLOPE EFFECT FORMULA FOR DEVIATION
97 !| DM |-->| SEDIMENT GRAIN DIAMETER
98 !| FW |---| QUADRATIC FRICTION COEFFICIENT (WAVE)
99 !| GRAV |-->| ACCELERATION OF GRAVITY
100 !| HIDFAC |-->| HIDING FACTOR FORMULAS
101 !| HIDI |-->| HIDING FACTOR FOR PARTICULAR SIZE CLASS (HIDFAC =0)
102 !| HIDING |-->| HIDING FACTOR CORRECTION
103 !| HMIN |-->| MINIMUM VALUE OF WATER DEPTH
104 !| HN |-->| WATER DEPTH
105 !| HOULE |-->| LOGICAL, FOR WAVE EFFECTS
106 !| ICF |-->| BED-LOAD OR TOTAL LOAD TRANSPORT FORMULAS
107 !| IELMT |-->| NUMBER OF ELEMENTS
108 !| KARMAN |-->| VON KARMAN CONSTANT
109 !| KENT |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
110 !| KSP |-->| BED SKIN ROUGHNESS
111 !| KSR |-->| RIPPLE BED ROUGHNESS
112 !| LIQBOR |-->| TYPE OF BOUNDARY CONDITION FOR QS
113 !| MASKEL |-->| MASKING OF ELEMENTS
114 !| MASKPT |-->| MASKING PER POINT
115 !| MESH |<->| MESH STRUCTURE
116 !| MSK |-->| IF YES, THERE IS MASKED ELEMENTS
117 !| MU |<->| CORRECTION FACTOR FOR BED ROUGHNESS
118 !| NPOIN |-->| NUMBER OF POINTS
119 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
120 !| OPTBAN |-->| OPTION FOR TIDAL FLATS
121 !| PHISED |-->| ANGLE OF REPOSE OF THE SEDIMENT
122 !| PI |-->| PI
123 !| QSC |<->| BED LOAD TRANSPORT
124 !| QSS |<->| SUSPENDED LOAD TRANSPORT RATE
125 !| S |-->| VOID STRUCTURE
126 !| SALFA |<->| SINUS OF THE ANGLE BETWEEN TRANSPORT RATE AND CURRENT
127 !| SECCURRENT |-->| LOGICAL, PARAMETRISATION FOR SECONDARY CURRENTS
128 !| SLOPEFF |-->| LOGICAL, SLOPING BED EFFECT OR NOT
129 !| SUSP |-->| LOGICAL, SUSPENSION
130 !| T1 |<->| WORK BIEF_OBJ STRUCTURE
131 !| T10 |<->| WORK BIEF_OBJ STRUCTURE
132 !| T11 |<->| WORK BIEF_OBJ STRUCTURE
133 !| T12 |<->| WORK BIEF_OBJ STRUCTURE
134 !| T13 |<->| WORK BIEF_OBJ STRUCTURE
135 !| T2 |<->| WORK BIEF_OBJ STRUCTURE
136 !| T3 |<->| WORK BIEF_OBJ STRUCTURE
137 !| T4 |<->| WORK BIEF_OBJ STRUCTURE
138 !| T5 |<->| WORK BIEF_OBJ STRUCTURE
139 !| T6 |<->| WORK BIEF_OBJ STRUCTURE
140 !| T7 |<->| WORK BIEF_OBJ STRUCTURE
141 !| T8 |<->| WORK BIEF_OBJ STRUCTURE
142 !| T9 |<->| WORK BIEF_OBJ STRUCTURE
143 !| THETAW |-->| ANGLE BETWEEN WAVE AND CURRENT
144 !| TOB |<->| BED SHEAR STRESS (TOTAL FRICTION)
145 !| TOBW |-->| WAVE INDUCED SHEAR STRESS
146 !| TW |-->| WAVE PERIOD
147 !| U2D |<->| MEAN FLOW VELOCITY X-DIRECTION
148 !| UNLADM |-->| MEAN DIAMETER OF ACTIVE STRATUM LAYER
149 !| UNORM |<->| NORM OF THE MEAN FLOW VELOCITY
150 !| UNSV2D |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
151 !| UW |-->| ORBITAL WAVE VELOCITY
152 !| V2D |<->| MEAN FLOW VELOCITY Y-DIRECTION
153 !| VCE |-->| WATER VISCOSITY
154 !| XMVE |-->| FLUID DENSITY
155 !| XMVS |-->| WATER DENSITY
156 !| XWC |-->| SETTLING VELOCITY
157 !| ZERO |-->| ZERO
158 !| ZF_C |<->| BEDLOAD EVOLUTION
159 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
160 !
161  USE interface_sisyphe,
162  & ex_bedload_solidischarge => bedload_solidischarge
163  USE bief
164 !
166  IMPLICIT NONE
167 !
168 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
169 !
170  TYPE(bief_mesh), INTENT(INOUT) :: MESH
171  TYPE(bief_obj), INTENT(IN) :: U2D, V2D, HN, TW, UW
172  TYPE(bief_obj), INTENT(IN) :: UNORM ,MU, KSR ,KSP
173  TYPE(bief_obj), INTENT(IN) :: TOB, CF, TOBW, FW, THETAW
174  TYPE(bief_obj), INTENT(IN) :: MASKPT, MASKEL
175  TYPE(bief_obj), INTENT(IN) :: ACLADM, UNLADM, LIQBOR
176  INTEGER, INTENT(IN) :: DEBUG
177  INTEGER, INTENT(IN) :: NPOIN, NPTFR, IELMT, ICF
178  INTEGER, INTENT(IN) :: KENT, OPTBAN,HIDFAC
179  DOUBLE PRECISION, INTENT(IN) :: GRAV, DM, D90, XWC, XMVE, XMVS
180  DOUBLE PRECISION, INTENT(IN) :: VCE, HMIN
181  DOUBLE PRECISION, INTENT(IN) :: HIDI
182  DOUBLE PRECISION, INTENT(IN) :: KARMAN, ZERO, PI
183  DOUBLE PRECISION, INTENT(IN) :: KARIM_HOLLY_YANG
184  LOGICAL, INTENT(IN) :: SUSP, MSK,SECCURRENT,HOULE
185  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6
186  TYPE(bief_obj), INTENT(INOUT) :: T7,T8,T9,T10,T11,T12
187  DOUBLE PRECISION, INTENT(INOUT) :: AC
188  TYPE(bief_obj), INTENT(INOUT) :: HIDING
189  TYPE(bief_obj), INTENT(INOUT) :: QSC,QSS
190 !
191  INTEGER, INTENT(IN) :: SLOPEFF,DEVIA
192  DOUBLE PRECISION, INTENT(IN) :: PHISED,BETA,BETA2
193  TYPE(bief_obj), INTENT(IN) :: ZF_C,S,UNSV2D
194  TYPE(bief_obj), INTENT(INOUT) :: CALFA,SALFA,COEFPN
195 !
196  DOUBLE PRECISION, INTENT(IN) :: BIJK,AVA(npoin)
197 !
198  TYPE(bief_obj), INTENT(IN) :: U3D,V3D
199  CHARACTER(LEN=24), INTENT(IN) :: CODE
200 !
201  DOUBLE PRECISION, INTENT(IN) :: SANFRA(npoin)
202 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
203 !
204  DOUBLE PRECISION U3DNORM
205 !
206  INTEGER :: I
207 !
208 !======================================================================!
209 ! PROGRAM !
210 !======================================================================!
211 !
212  IF (debug > 0) WRITE(lu,*) 'BEDLOAD_EFFPNT'
213 !
214 ! SLOPE EFFECT
215 !
216  IF(code(1:9).EQ.'TELEMAC3D') THEN
217  DO i=1,npoin
218  u3dnorm=sqrt(u3d%R(i)**2+v3d%R(i)**2)
219  IF(u3dnorm.GE.1.d-12) THEN
220  calfa%R(i)=u3d%R(i)/u3dnorm
221  salfa%R(i)=v3d%R(i)/u3dnorm
222  ELSE
223  calfa%R(i)=1.d0
224  salfa%R(i)=0.d0
225  ENDIF
226  ENDDO
227  ELSE
228  CALL os('X=Y/Z ',x=calfa, y=u2d, z=unorm, c=0.d0,
229  & iopt=2, infini=1.d0, zero=1.d-12)
230  CALL os('X=Y/Z ',x=salfa, y=v2d, z=unorm, c=0.d0,
231  & iopt=2, infini=0.d0, zero=1.d-12)
232  ENDIF
233 !
234  IF(slopeff.EQ.0) CALL os('X=C ',x=coefpn,c=1.d0)
235 !
236  IF(slopeff.NE.0.OR.devia.NE.0) THEN
237  CALL bedload_effpnt
238  & (maskel,liqbor,s,zf_c,npoin,nptfr,ielmt,
239  & kent,beta,pi,msk,mesh,t1,t2,t3,t4,
240  & coefpn,calfa,salfa,slopeff,phised,devia,beta2,
241  & tob,xmvs,xmve,dm,grav,unsv2d)
242  ENDIF
243 !
244  IF (debug > 0) WRITE(lu,*) 'END_BEDLOAD_EFFPNT'
245 !
246 ! MASKING/EXPOSURE COEFFICIENT
247 !
248  IF (debug > 0) WRITE(lu,*) 'BEDLOAD_HIDING_FACTOR'
249 !
250 ! WITH HUNZIKER FORMULATION (6), THE HIDING FACTOR IS COMPUTED
251 ! WITH THE SOLID DISCHARGE (SEE BEDLOAD_HUNZ_MEYER.F)
252 !
253  IF(icf.NE.6) THEN
255  & (acladm, hidfac, npoin, hidi, dm, karim_holly_yang, hiding)
256  ENDIF
257  IF (debug > 0) WRITE(lu,*) 'END_BEDLOAD_HIDING_FACTOR'
258 !
259 ! QSC COMPUTED USING EMPIRICAL FORMULATION : T1 = DQSC/DH !
260 !
261  IF (debug > 0) WRITE(lu,*) 'BEDLOAD_FORMULA'
262 !
263  CALL bedload_formula
264  & (u2d,v2d, unorm,hn, cf, mu,tob, tobw, uw, tw, thetaw, fw,
265  & acladm, unladm, ksp,ksr,ava, npoin, icf, hidfac, xmvs, xmve,
266  & dm, grav, vce, hmin, xwc, d90, karman, zero,
267  & pi, susp, ac, hiding, t1, t2, t3, t4, t5, t6, t7, t8, t9,
268  & t10, t11, t12, qsc, qss, ielmt,seccurrent,
269  & slopeff, coefpn, calfa, salfa, bijk, houle, sanfra)
270  IF (debug > 0) WRITE(lu,*) 'END_BEDLOAD_FORMULA'
271 !
272 ! TIDAL FLATS
273 !
274  IF(optban.EQ.2) THEN
275  IF (debug > 0) WRITE(lu,*) 'TIDAL_FLATS_TREATMENT'
276  CALL os('X=XY ', x=qsc, y=maskpt)
277  IF (debug > 0) WRITE(lu,*) 'END_TIDAL_FLATS_TREATMENT'
278  ENDIF
279 !
280 !-----------------------------------------------------------------------
281 !
282  RETURN
283  END
subroutine bedload_solidischarge(MESH, U2D, V2D, UNORM, HN, TW, UW, MU, TOB, CF, TOBW, FW, THETAW, AVA, MASKPT, MASKEL, ACLADM, UNLADM, KSP, KSR, LIQBOR, DEBUG, NPOIN, NPTFR, IELMT, ICF, KENT, OPTBAN, HIDFAC, GRAV, DM, D90, XWC, XMVE, XMVS, VCE, HMIN, HIDI, KARMAN, ZERO, PI, KARIM_HOLLY_YANG, SUSP, MSK, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, AC, HIDING, QSC, QSS, SLOPEFF, COEFPN, PHISED, CALFA, SALFA, BETA, ZF_C, S, DEVIA, BETA2, SECCURRENT, BIJK, HOULE, UNSV2D, U3D, V3D, CODE, SANFRA)
subroutine bedload_formula(U2D, V2D, UCMOY, HN, CF, MU, TOB, TOBW, UW, TW, THETAW, FW, ACLADM, UNLADM, KSP, KSR, AVA, NPOIN, ICF, HIDFAC, XMVS, XMVE, DM, GRAV, VCE, HMIN, XWC, D90, KARMAN, ZERO, PI, SUSP, AC, HIDING, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TETAP, QSC, QSS, IELMT, SECCURRENT, SLOPEFF, COEFPN, CALFA, SALFA, BIJK, HOULE, SANFRA)
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 os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine bedload_hiding_factor(ACLADM, HIDFAC, NPOIN, HIDI, DM, KARIM_HOLLY_YANG, HIDING)
Definition: bief.f:3