The TELEMAC-MASCARET system  trunk
init_sediment.f
Go to the documentation of this file.
1 ! ************************
2  SUBROUTINE init_sediment
3 ! ************************
4 !
5  &(nsicla,elay,zf,zr,npoin,avail,fracsed_gf,ava0,
6  & lgrafed,calwc,xmvs,xmve,grav,vce,xwc,fdm,
7  & calac,ac,sedco,es,es_sable, es_vase ,nomblay,conc_vase,
8  & ms_sable,ms_vase,acladm,unladm,toce_sable,
9  & conc,debu,mixte)
10 !
11 !***********************************************************************
12 ! SISYPHE V7P2 27/06/2016
13 !***********************************************************************
14 !
15 !brief
16 !
17 !history C. VILLARET (LNHE)
18 !+ 30/12/2008
19 !+
20 !+
21 !
22 !history JMH
23 !+ 16/09/2009
24 !+ V6P0
25 !+ AVAIL(NPOIN,10,NSICLA)
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
40 !+ 19/07/2011
41 !+ V6P1
42 !+ Name of variables
43 !+
44 !
45 !history P.TASSI (EDF-LNHE)
46 !+ 30/05/2012
47 !+ V6P2
48 !+ Case DSTAR > 150 AC(I) = 0.045D0
49 !+
50 !
51 !history P.TASSI (EDF-LNHE)
52 !+ 06/07/2012
53 !+ V6P2
54 !+ Line MIXTE=.FALSE. added.
55 !
56 !history R.KOPMANN (BAW)
57 !+ 27/06/2016
58 !+ V7P2
59 !+ CONTINUOUS APPROSIMATION CRITICAL SHILEDS CURVE DSTAR > 72 AC(I) = 0.045D0
60 !
61 !history U.MERKEL AND R.KOPMANN (BAW)
62 !+ 07/12/2017
63 !+ V7P2
64 !+ CALL TO CVSP_INIT
65 !
66 !history R.KOPMANN (BAW)
67 !+ 15/02/2019
68 !+ V7P2
69 !+ CALCULATION INITIAL VOLUME FOR SINGLE CLASS MODE
70 !+ ZEROING VARIABLES FOR MASS BALANCE
71 !
72 !history R.KOPMANN (BAW)
73 !+ 17/04/2019
74 !+ V8P2
75 !+ INITIALISING ES(:,1)=ELAY(:) IN CASE OF NSICLA=1
76 !
77 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78 !| AC |<->| CRITICAL SHIELDS PARAMETER
79 !| ACLADM |-->| MEAN DIAMETER OF SEDIMENT
80 !| AT0 |<->| TIME IN S
81 !| AVAIL |<->| VOLUME PERCENT OF EACH CLASS
82 !| CALAC |-->| IF YES, SHIELDS PARAMETER FOUND IN PARAMETER FILE
83 !| CALWC |-->| IF YES, SETTLING VELOCITIES FOUND IN PARAMETER FILE
84 !| CONC_VASE |<->| MUD CONCENTRATION FOR EACH LAYER
85 !| ELAY |<->| THICKNESS OF SURFACE LAYER
86 !| ES |<->| LAYER THICKNESSES AS DOUBLE PRECISION
87 !| ES_SABLE |<->| LAYER THICKNESSES OF SAND AS DOUBLE PRECISION
88 !| ES_VASE |<->| LAYER THICKNESSES OF MUD AS DOUBLE PRECISION
89 !| FDM |-->| DIAMETER DM FOR EACH CLASS
90 !| FRACSED_GF |-->|
91 !| GRAV |-->| ACCELERATION OF GRAVITY
92 !| LGRAFED |-->|
93 !| MS_SABLE |<->| MASS OF SAND PER LAYER (KG/M2)
94 !| MS_VASE |<->| MASS OF MUD PER LAYER (KG/M2)
95 !| ES_SABLE |<->| THICKNESS OF SAND LAYER (M)
96 !| ES_VASE |<->| THICKNESS OF MUD LAYER (M)
97 !| MIXTE |<->| SEDIMENT MIXTE (SABLE /VASE)
98 !| NOMBLAY |-->| NUMBER OF BED LAYERS
99 !| NPOIN |-->| NUMBER OF POINTS
100 !| NSICLA |-->| NUMBER OF SEDIMENT CLASSES
101 !| SEDCO |-->| LOGICAL, SEDIMENT COHESIVE OR NOT
102 !| UNLADM |-->| MEAN DIAMETER OF ACTIVE STRATUM LAYER
103 !| VCE |-->| WATER VISCOSITY
104 !| XMVE |-->| FLUID DENSITY
105 !| XMVS |-->| WATER DENSITY
106 !| XWC |-->| SETTLING VELOCITY
107 !| ZF |-->| ELEVATION OF BOTTOM
108 !| ZR |-->| NON ERODABLE BED
109 !| CONC |<->| CONCENTRATION OF BED LAYER
110 !| DEBU |-->| FLAG, RESTART ON SEDIMENTOLOGICAL FILE
111 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112 !
113  USE bief
114  USE interface_sisyphe, ex_init_sediment => init_sediment
115  USE declarations_sisyphe, ONLY : vsmtype
116  & ,alt_model, pro_max_max, cvsmpperiod,nit,voltot,volu2d,volini
117  & ,rmascl,vcumucl,volnestorcl
118 
119  USE interface_parallel, ONLY : p_dsum
121  IMPLICIT NONE
122 !
123 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
124 !
125  INTEGER, INTENT(IN) :: NSICLA,NPOIN,NOMBLAY
126  TYPE(bief_obj), INTENT(INOUT) :: ELAY,ZF,ZR
127  TYPE(bief_obj), INTENT(INOUT) :: MS_SABLE, MS_VASE
128  TYPE(bief_obj), INTENT(INOUT) :: ACLADM, UNLADM
129  LOGICAL, INTENT(IN) :: LGRAFED,CALWC
130  LOGICAL, INTENT(IN) :: CALAC
131  DOUBLE PRECISION, INTENT(IN) :: XMVS,XMVE,GRAV,VCE
132  DOUBLE PRECISION, INTENT(INOUT) :: AVA0(nsicla)
133  DOUBLE PRECISION, INTENT(INOUT) :: AVAIL(npoin,nomblay,nsicla)
134  DOUBLE PRECISION, INTENT(INOUT) :: FRACSED_GF(nsicla)
135  DOUBLE PRECISION, INTENT(INOUT) :: FDM(nsicla),XWC(nsicla)
136  DOUBLE PRECISION, INTENT(INOUT) :: AC(nsicla),TOCE_SABLE
137  LOGICAL, INTENT(IN) :: SEDCO(nsicla), DEBU
138  LOGICAL, INTENT(IN) :: MIXTE
139  DOUBLE PRECISION, INTENT(IN) :: CONC_VASE(nomblay)
140  DOUBLE PRECISION, INTENT(INOUT) :: ES(npoin,nomblay)
141  DOUBLE PRECISION, INTENT(INOUT) :: ES_SABLE(npoin,nomblay)
142  DOUBLE PRECISION, INTENT(INOUT) :: ES_VASE(npoin,nomblay)
143  DOUBLE PRECISION, INTENT(INOUT) :: CONC(npoin,nomblay)
144 !
145 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
146 !
147  INTEGER :: I,J
148  DOUBLE PRECISION :: DENS,DSTAR
149 !
150 !======================================================================!
151 !======================================================================!
152 ! PROGRAM !
153 !======================================================================!
154 !======================================================================!
155 !
156 ! ------ BED COMPOSITION
157 !
158  CALL os('X=Y-Z ',x=elay,y=zf,z=zr)
159 !
160 ! ONLY ONE CLASS
161 !
162  IF(nsicla.EQ.1) THEN
163  DO i=1,npoin
164  avail(i,1,1) = 1.d0
165  acladm%R(i) = fdm(1)
166  ENDDO
167 !
168  IF(nomblay.EQ.1) THEN
169  DO i=1,npoin
170  es(i,1) = elay%R(i)
171  ENDDO
172  ENDIF
173 !
174 ! COMPUTES THE INITIAL VOLUME OF SEDIMENTS
175  voltot(1)=0.d0
176  DO j=1,npoin
177  voltot(1) = voltot(1) + elay%R(j)*volu2d%R(j)
178  ENDDO
179  IF(ncsize.GT.1) THEN
180  voltot(1) = p_dsum(voltot(1))
181  ENDIF
182  volini(1) = voltot(1)
183 ! INITIALISING VOLUMES
184  rmascl = 0.d0
185  vcumucl = 0.d0
186  volnestorcl = 0.d0
187 !
188 ! PURE MUD ONLY
189  IF(sedco(1)) CALL init_mixte(xmvs,npoin,avail,nsicla,es,
190  & es_sable, es_vase,
191  & elay%R,nomblay,conc_vase,
192  & ms_sable%R,ms_vase%R,zf%R,
193  & zr%R,ava0,conc,debu,.false.)
194 !
195  ELSE
196 !
197 ! NON-COHESIVE, MULTI-CLASSES
198 !
199  IF(.NOT.mixte) THEN
200 !
201 !
202  CALL init_avai
203 ! CALL MEAN_GRAIN_SIZE
204 ! THIS PART CAN BE INTEGRATED INTO INIT_AVAI
205  DO j=1,npoin
206  acladm%R(j) = 0.d0
207  unladm%R(j) = 0.d0
208  DO i=1,nsicla
209  IF(avail(j,1,i).GT.0.d0) THEN
210  acladm%R(j) = acladm%R(j) + fdm(i)*avail(j,1,i)
211  unladm%R(j) = unladm%R(j) + fdm(i)*avail(j,2,i)
212  ENDIF
213  ENDDO
214  acladm%R(j)=max(acladm%R(j),0.d0)
215  unladm%R(j)=max(unladm%R(j),0.d0)
216  ENDDO
217  ELSE
218 !
219  CALL init_mixte(xmvs,npoin,avail,nsicla,es,
220  & es_sable, es_vase, elay%R,
221  & nomblay,conc_vase,ms_sable%R,
222  & ms_vase%R,zf%R,zr%R,ava0,conc,debu,mixte)
223  DO i=1,npoin
224  acladm%R(i) = fdm(1)
225  ENDDO
226  ENDIF
227 !
228  ENDIF
229 !
230  IF(lgrafed) THEN
231  DO i=1, nsicla
232  fracsed_gf(i)=ava0(i)
233  ENDDO
234  ENDIF
235 !
236 ! SETTLING VELOCITY
237 !
238  IF(.NOT.calwc) THEN
239  dens = (xmvs - xmve) / xmve
240  DO i = 1, nsicla
241  CALL vitchu_sisyphe(xwc(i),dens,fdm(i),grav,vce)
242  ENDDO
243  ENDIF
244 !
245 ! SHIELDS PARAMETER
246 !
247  IF(.NOT.calac) THEN
248  dens = (xmvs - xmve )/ xmve
249  DO i = 1, nsicla
250  dstar = fdm(i)*(grav*dens/vce**2)**(1.d0/3.d0)
251  IF (dstar <= 4.d0) THEN
252  ac(i) = 0.24d0/dstar
253  ELSEIF (dstar <= 10.d0) THEN
254  ac(i) = 0.14d0*dstar**(-0.64d0)
255  ELSEIF (dstar <= 20.d0) THEN
256  ac(i) = 0.04d0*dstar**(-0.1d0)
257 ! CORRECTION 27/06/2016
258 ! ELSEIF (DSTAR <= 150.D0) THEN
259  ELSEIF (dstar <= 72.d0) THEN
260  ac(i) = 0.013d0*dstar**0.29d0
261  ELSE
262 ! CORRECTION 30/05/2012
263 ! AC(I) = 0.055D0
264  ac(i) = 0.045d0
265  ENDIF
266  ENDDO
267  ENDIF
268 !
269 ! FOR MIXED SEDIMENTS
270 !
271  IF(mixte) toce_sable=ac(1)*fdm(1)*grav*(xmvs - xmve)
272 !
273 !-----------------------------------------------------------------------
274 !
275  IF(vsmtype.EQ.1) THEN
276  WRITE(lu,*) ' '
277  WRITE(lu,*) '--------------------------------------------------'
278  WRITE(lu,*) 'C-VSM MODEL'
279  WRITE(lu,*) 'CONTINUOUS VERTICAL GRAIN SORTING STRATIGRAPHY'
280  WRITE(lu,*) ' '
281  WRITE(lu,*) 'ACTIVE LAYER THICKNESS MODEL:', alt_model
282 !
283  IF (pro_max_max .GT. 250) THEN
284  WRITE(lu,*) 'HIGH NUMBER OF SECTIONS IS EXPENSIVE',pro_max_max
285  WRITE(lu,*) 'BETTER < 250 and > 4 + 4 x NUMBER OF FRACTIONS'
286  ENDIF
287 !
288  IF ((cvsmpperiod / nit) .GT. 5) THEN
289  WRITE(lu,*) 'HIGH NUMBER OF FULL CVSM PRINTOUTS'
290  WRITE(lu,*) 'ATTENTION: DISK SPACE AND SIMULATION TIME'
291  WRITE(lu,*) 'ADAPT C-VSM FULL PRINTOUT PERIOD'
292  ENDIF
293 !
294  WRITE(lu,*) ' '
295  CALL cvsp_init()
296  WRITE(lu,*)'CVSM INITIALISED!'
297  WRITE(lu,*) '--------------------------------------------------'
298  ENDIF
299 !
300 !-----------------------------------------------------------------------
301 !
302  RETURN
303  END
subroutine vitchu_sisyphe(WS, DENS, DM, GRAV, VCE)
Definition: vitchu_sisyphe.f:7
double precision function p_dsum(MYPART)
Definition: p_dsum.F:7
subroutine init_mixte(XMVS, NPOIN, AVAIL, NSICLA, ES, ES_SABLE, ES_VASE, ELAY, NOMBLAY, CONC_VASE, MS_SABLE, MS_VASE, ZF, ZR, AVA0, CONC, DEBU, MIXTE)
Definition: init_mixte.f:8
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine cvsp_init
Definition: cvsp_init.f:4
subroutine init_avai
Definition: init_avai.f:4
Definition: bief.f:3
subroutine init_sediment(NSICLA, ELAY, ZF, ZR, NPOIN, AVAIL, FRACSED_GF, AVA0, LGRAFED, CALWC, XMVS, XMVE, GRAV, VCE, XWC, FDM, CALAC, AC, SEDCO, ES, ES_SABLE, ES_VASE, NOMBLAY, CONC_VASE, MS_SABLE, MS_VASE, ACLADM, UNLADM, TOCE_SABLE, CONC, DEBU, MIXTE)
Definition: init_sediment.f:11