The TELEMAC-MASCARET system  trunk
bed1_suspension_deposit.f
Go to the documentation of this file.
1 ! *****************************
2  SUBROUTINE bed1_suspension_deposit
3 ! *****************************
4 !
5  &(code)
6 !
7 !***********************************************************************
8 ! GAIA
9 !***********************************************************************
10 !
14 !
15 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18 !
19  USE bief
22  IMPLICIT NONE
23 !
24 !!-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
25 !
26  CHARACTER(LEN=24), INTENT(IN) :: CODE
27 !
28 !!-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
29 !
30  INTEGER I,IPOIN,IMUD,ISAND,ICLA,ISUSP
31  INTEGER LAYER_DEPOSIT_SAND,LAYER_DEPOSIT_MUD
32 !
33 !!-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
34 !
35  layer_deposit_sand = 1
36  layer_deposit_mud = 1
37  isand = 0
38  imud = 0
39 
40 ! here mass_* is in [kg/m^2] like in the sub suspension_erode
41  DO isusp = 1,nsusp_tel
42  icla = num_isusp_icla(isusp)
43  IF(icla.NE.0) THEN
44  IF(sedco(icla))THEN
45  imud = num_icla_imud(icla)
46 ! IN 3D, TOCD IS NOT USED, BECAUSE VERTICAL TURBULENCE IS COMPUTED
47  DO ipoin=1,npoin
48 !
49  IF(hirano)THEN
50  IF(layer_deposit_mud.EQ.1)THEN
51 ! TOTAL MASS MUD AND CONCENTRATION OF MUD IN THE ACTIVE LAYER BEFORE UPDATE
52  conc_mud_activ_layer(ipoin)=
53  & max(conc_mud(1,ipoin),conc_mud(2,ipoin))
54  mass_mud_activ_layer(ipoin)= 0.d0
55  DO i = 1,nmud
56  mass_mud_activ_layer(ipoin)=
57  & mass_mud_activ_layer(ipoin)+
58  & mass_mud(i,1,ipoin)
59  ENDDO
60  ELSE
61  WRITE(lu,*)'LAYER DEPOSIT MUST BE EGAL',
62  & 'TO 1 WITH HIRANO'
63  CALL plante(1)
64  stop
65  ENDIF
66  ENDIF
67 !
68 ! MASS EVOLUTION DUE TO SUSPENSION
69  evcl_ms%ADR(icla)%P%R(ipoin)=evcl_ms%ADR(icla)%P%R(ipoin)
70  & +fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed
71 ! UPDATE OF MUD MASS WITH EVOLUTION DUE TO SUSPENSION
72 ! (OF THE FIRST LAYER)
73  mass_mud(imud,layer_deposit_mud,ipoin) =
74  & mass_mud(imud,layer_deposit_mud,ipoin)
75  & + fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed
76 !
77 ! UPDATE CONCENTRATION OF MUD IN THE ACTIVE LAYER
78  IF(hirano)THEN
79  IF(mass_mud(imud,layer_deposit_mud,ipoin).GE.
80  & min_sed_mass_comp) THEN
81  conc_mud(1,ipoin)=
82 ! DEPOSIT IS MADE WITH THE LOWER CONCENTRATION OF LAYERS CONC_MUD(2,*)
83  & ( ( conc_mud_activ_layer(ipoin)
84  & * mass_mud_activ_layer(ipoin))
85  & + ( fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed
86  & * conc_mud(2,ipoin)))
87  & / ( mass_mud_activ_layer(ipoin)+
88  & fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed)
89 ! UPDATE CRIT ICAL SHEAR STRESS OF MUD IN ACTIV LAYER IN FUNCTION OF CONCENTRATION OF MUD IN THE ACTIVE LAYER
90 ! SIMPLE INTE RPOLATION BETWEEN TOCE_MUD DISCRETIZATION GIVEN BY USER
91  IF(conc_mud_activ_layer(ipoin)
92  & .LE.conc_mud(2,ipoin)) THEN
93  conc_mud(1,ipoin) = conc_mud(2,ipoin)
94  ELSEIF(conc_mud_activ_layer(ipoin).GE.
95  & conc_mud(nomblay,ipoin))THEN
96  conc_mud(1,ipoin) = conc_mud(nomblay,ipoin)
97  ELSE
98  conc_mud(1,ipoin) = conc_mud_activ_layer(ipoin)
99  ENDIF
100  ELSE
101  conc_mud(1,ipoin) = conc_mud(2,ipoin)
102  ENDIF
103  ENDIF
104  ENDDO
105  ELSE
106  isand = num_icla_isand(icla)
107  DO ipoin = 1,npoin
108 ! MASS EVOLUTION DUE TO SUSPENSION
109  evcl_ms%ADR(icla)%P%R(ipoin)=evcl_ms%ADR(icla)%P%R(ipoin)
110  & +fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed
111 ! UPDATE OF SAND MASS WITH EVOLUTION DUE TO SUSPENSION
112 ! (OF THE FIRST LAYER)
113  mass_sand(isand,layer_deposit_sand,ipoin) =
114  & mass_sand(isand,layer_deposit_sand,ipoin)
115  & + fludp%ADR(icla)%P%R(ipoin)*dt*mofac_bed
116  ENDDO
117  ENDIF
118  ENDIF
119  ENDDO
120 !
121 ! EVOLUTIONS FOR EACH CLASS ARE ADDED: TOTAL MASS EVOLUTION
122 ! FIXME: COMPUTE EVOL_MS IS NOT REALLY USEFULL BECAUSE MASS BALANCE
123 ! IS THEN COMPUTED FOR EACH CLASS AND THE SUM IS LOCALLY COMPUTED
124 !
125 ! INITIALISES
126 !
127  CALL os('X=0 ',x=evol_ms)
128 !
129  DO i=1,nsicla
130  CALL os('X=X+Y ', x=evol_ms, y=evcl_ms%ADR(i)%P)
131  ENDDO
132 !
133  RETURN
134  END
double precision, dimension(:,:,:), allocatable, target mass_mud
Surface mass of mud (kg/m2), for imud,ilayer,ipoin.
integer, target nomblay
Number of bed load model layers = NUMSTRAT+1 to take the active layer into account.
double precision, dimension(:), pointer x
2d coordinates of the mesh
double precision, target dt
Time step It may be different from the one in TELEMAC because of the morphological factor...
double precision, parameter min_sed_mass_comp
Minimum value to detect sediment mass.
type(bief_obj), target evcl_ms
Mass evolution for class (due to suspension)
logical hirano
Hirano model used.
double precision, dimension(:), pointer y
type(bief_obj), target evol_ms
Total mass evolution due to suspension [kg/m2].
double precision, dimension(:,:,:), allocatable, target mass_sand
Surface mass of sand (kg/m2), for isand,ilayer,ipoin.
integer, dimension(:), allocatable num_isusp_icla
Tables to switch from suspended sediment number to class number.
double precision, dimension(:,:), allocatable, target conc_mud
Mud concentration for each bed layer, at each point. It is variable in space for the active layer (la...
double precision mofac_bed
Morphological factor on the bed: distorts the evolution of the morphodynamics with respect to the hyd...
logical, dimension(nsiclm) sedco
Cohesive sediments (for each class)
integer, target nsicla
Number of sediment classes of bed material (less than NISCLM)
double precision, dimension(:), allocatable mass_mud_activ_layer
Mass of mud in active layer (array defined for temporary work in some subroutines) ...
integer nmud
Total number of muds.
integer, dimension(:), allocatable num_icla_imud
Tables to switch from class number to mud number and from class number to sand number.
integer, dimension(:), allocatable num_icla_isand
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target fludp
Deposition flux.
integer nsusp_tel
Number of suspension sediment classes for TELEMAC3D or TELEMAC2D (less than NISCLM) ...
subroutine bed1_suspension_deposit(CODE)
integer, pointer npoin
Number of 2d points in the mesh.
double precision, dimension(:), allocatable conc_mud_activ_layer
Concentation of mud in active layer (array defined for temporary work in some subroutines) ...
Definition: bief.f:3