The TELEMAC-MASCARET system  trunk
bedload_evol.f
Go to the documentation of this file.
1 ! ***********************
2  SUBROUTINE bedload_evol
3 ! ***********************
4 !
5  &(s,elay,ava,coefpn,calfa,salfa,limtec,ebor,
6  & maskel,mask,v2dpar,unsv2d,debug,npoin,nptfr,
7  & ielmt,kent,kdir,kddl,
8  & dts,
9  & vf,entet,msk,mesh,
10  & qs,t1,t2,t3,t4,t8,
11  & t11,t12,t13,csf_sable,breach,qsx,qsy,zfcl,slopeff,icla,
12  & flbcla,liqbor,qbor,maxadv)
13 !
14 !***********************************************************************
15 ! SISYPHE V7P0 03/06/2014
16 !***********************************************************************
17 !
18 !brief COMPUTES THE EVOLUTION FOR THE BEDLOAD TRANSPORT.
19 !
20 !history F. HUVELIN
21 !+ 14/09/2004
22 !+ V6P0
23 !+
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 13/07/2010
27 !+ V6P0
28 !+ Translation of French comments within the FORTRAN sources into
29 !+ English comments
30 !
31 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
32 !+ 21/08/2010
33 !+ V6P0
34 !+ Creation of DOXYGEN tags for automated documentation and
35 !+ cross-referencing of the FORTRAN sources
36 !
37 !history C.VILLARET (EDF-LNHE), P.TASSI (EDF-LNHE)
38 !+ 19/07/2011
39 !+ V6P1
40 !+ Name of variables
41 !+
42 !history J-M HERVOUET (EDF-LNHE)
43 !+ 27/01/2012
44 !+ V6P2
45 !+ Argument ICLA added
46 !
47 !history J-M HERVOUET (EDF-LNHE)
48 !+ 09/01/2013
49 !+ V6P3
50 !+ Pointer FLULIM added to avoid a hidden temporary array allocation
51 !
52 !history R.ATA (EDF-LNHE)
53 !+ 02/06/2014
54 !+ V7P0
55 !+ Corrections of normals and nubo tables
56 !+ after changes in FV data structure of Telemac2d
57 !+
58 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59 !| AVA |-->| PERCENT AVAILABLE
60 !| BREACH |<->| INDICATOR FOR NON ERODIBLE BED (FINITE VOLUMES SHEMES)
61 !| CALFA |<->| COSINUS OF THE ANGLE BETWEEN MEAN FLOW AND TRANSPORT
62 !| COEFPN |<->| CORRECTION OF TRANSORT FOR SLOPING BED EFFECT
63 !| DEBUG |-->| FLAG FOR DEBUGGING
64 !| DTS |<->| TIME STEP FOR SUSPENSION
65 !| EBOR |<->| BOUNDARY CONDITION FOR BED EVOLUTION (DIRICHLET)
66 !| ELAY |<->| THICKNESS OF SURFACE LAYER
67 !| ELAY0 |<->| ACTIVE LAYER THICKNESS
68 !| ENTET |-->| LOGICAL, IF YES INFORMATION IS GIVEN ON MASS CONSERVATION
69 !| FLBCLA |-->| BLOCK OF FLUXES AT BOUNDARY FOR EACH CLASS
70 !| ICLA |-->| CLASS NUMBER
71 !| IELMT |-->| NUMBER OF ELEMENTS
72 !| KDDL |-->| CONVENTION FOR DEGREE OF FREEDOM
73 !| KDIR |-->| CONVENTION FOR DIRICHLET POINT
74 !| KENT |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
75 !| LIMTEC |<->| TYPE OF BOUNDARY CONDITION
76 !| LIQBOR |-->| TYPE OF BOUNDARY CONDITION FOR BEDLOAD DISCHARGE
77 !| MASK |-->| BLOCK OF MASKS, EVERY ONE FOR A TYPE OF BOUNDARY
78 !| MASKEL |-->| MASKING OF ELEMENTS
79 !| MAXADV |-->| MAXIMUM NUMBER OF ITERATIONS (IN POSITIVE_DEPTHS)
80 !| MESH |<->| MESH STRUCTURE
81 !| MSK |-->| IF YES, THERE IS MASKED ELEMENTS
82 !| NPOIN |-->| NUMBER OF POINTS
83 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
84 !| QBOR |-->| PRESCRIBED BEDLOAD DISCHARGE
85 !| QS |<->| EDLOAD TRANSPORT RATE
86 !| QSX |<->| SOLID DISCHARGE X
87 !| QSY |<->| SOLID DISCHARGE Y
88 !| S |-->| VOID STRUCTURE
89 !| SALFA |<->| SINUS OF THE ANGLE BETWEEN TRANSPORT RATE AND CURRENT
90 !| SLOPEFF |-->| LOGICAL, SLOPING BED EFFECT OR NOT
91 !| T1 |<->| WORK BIEF_OBJ STRUCTURE
92 !| T11 |<->| WORK BIEF_OBJ STRUCTURE
93 !| T12 |<->| WORK BIEF_OBJ STRUCTURE
94 !| T13 |<->| WORK BIEF_OBJ STRUCTURE
95 !| T2 |<->| WORK BIEF_OBJ STRUCTURE
96 !| T3 |<->| WORK BIEF_OBJ STRUCTURE
97 !| T4 |<->| WORK BIEF_OBJ STRUCTURE
98 !| T8 |<->| WORK BIEF_OBJ STRUCTURE
99 !| UNSV2D |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
100 !| V2DPAR |-->| INTEGRAL OF TEST FUNCTIONS, ASSEMBLED IN PARALLEL
101 !| VF |-->| LOGICAL, FINITE VOLUMES OR NOT
102 !| ZFCL |<->| BED EVOLUTION PER CLASS, DUE TO SUSPENDED SEDIMENT
103 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104 !
105  USE interface_sisyphe, ex_bedload_evol => bedload_evol
106  USE bief
108  IMPLICIT NONE
109 !
110 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
111 !
112  TYPE(bief_obj), INTENT(IN) :: S,UNSV2D,ELAY
113  TYPE(bief_obj), INTENT(IN) :: COEFPN,CALFA,SALFA
114  TYPE(bief_obj), INTENT(IN) :: MASKEL,MASK,V2DPAR
115  INTEGER, INTENT(IN) :: DEBUG,SLOPEFF,NPOIN,NPTFR,ICLA
116  INTEGER, INTENT(IN) :: IELMT,KENT,KDIR,KDDL
117  INTEGER, INTENT(IN) :: MAXADV
118  DOUBLE PRECISION, INTENT(IN) :: DTS
119  DOUBLE PRECISION, INTENT(IN) :: AVA(npoin)
120  LOGICAL, INTENT(IN) :: VF,ENTET,MSK
121  TYPE(bief_mesh), INTENT(INOUT) :: MESH
122  TYPE(bief_obj), INTENT(INOUT) :: QS,EBOR,FLBCLA
123  TYPE(bief_obj), INTENT(INOUT) :: T1, T2, T3, T4
124  TYPE(bief_obj), INTENT(INOUT) :: T8,T11, T12, T13
125  DOUBLE PRECISION, INTENT(IN) :: CSF_SABLE
126  TYPE(bief_obj), INTENT(INOUT) :: BREACH, QSX, QSY, ZFCL,LIMTEC
127  TYPE(bief_obj), INTENT(IN) :: LIQBOR,QBOR
128 !
129 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
130 !
131  INTEGER :: J
132  DOUBLE PRECISION, POINTER :: FLULIM(:)
133 !
134 !=======================================================================
135 ! PROGRAM
136 !=======================================================================
137 !
138 ! POINTER TO A WORK ARRAY
139 !
140  flulim => mesh%MSEG%X%R(mesh%NSEG+1:2*mesh%NSEG)
141 !
142 ! SLOPE EFFECT
143 !
144  IF(slopeff.EQ.1) CALL os('X=XY ', x=qs , y=coefpn)
145  CALL os('X=YZ ', x=qsx, y=qs, z=calfa)
146  CALL os('X=YZ ', x=qsy, y=qs, z=salfa)
147 !
148 ! TREATMENT OF NON ERODABLE BOTTOM
149 !
150  IF(vf) THEN
151  IF(debug.GT.0) WRITE(lu,*) 'CALLING BEDLOAD_NERBED_VF'
152  CALL bedload_nerbed_vf
153  & (mesh,limtec,kddl,elay%R,v2dpar%R,qsx,qsy,ava,npoin,
154  & mesh%NSEG,nptfr,dts,qs,t1,t2,t3,breach,csf_sable,
155  & mesh%NUBO%I,mesh%VNOIN%R)
156  IF(debug.GT.0) WRITE(lu,*) 'RETURN FROM BEDLOAD_NERBED_VF'
157  CALL os('X=YZ ', x=qsx, y=qs, z=calfa)
158  CALL os('X=YZ ', x=qsy, y=qs, z=salfa)
159  ENDIF
160 !
161 ! SOLVES THE BED-EVOLUTION EQUATION : F.V.
162 !
163  IF(vf) THEN
164  IF(debug.GT.0) WRITE(lu,*) 'CALLING BEDLOAD_SOLVS_VF'
165  CALL bedload_solvs_vf(mesh,qsx,qsy,limtec,unsv2d,ebor,
166  & breach,mesh%NSEG,nptfr,npoin,
167  & kent,kdir,kddl,dts,zfcl,t11,
168  & csf_sable,flbcla%ADR(icla)%P,ava,
169  & liqbor,qbor,mesh%NUBO%I,mesh%VNOIN%R)
170  IF(debug.GT.0) WRITE(lu,*) 'RETURN FROM BEDLOAD_SOLVS_VF'
171 !
172 ! SOLVES THE BED-EVOLUTION EQUATION : F.E.
173 !
174  ELSE
175  DO j=1,npoin
176 ! T13 IS THE SEDIMENT HEIGHT (EXCLUDING VOIDS, SO *CSF_SABLE)
177  t13%R(j)=ava(j)*elay%R(j)*csf_sable
178  ENDDO
179  IF(debug.GT.0) WRITE(lu,*) 'BEDLOAD_SOLVS_FE'
180  CALL bedload_solvs_fe(mesh,s,ebor,maskel,mask,
181  & qsx,qsy,ielmt,npoin,nptfr,kent,kdir,kddl,
182  & limtec,dts,msk,entet,t1,t2,t3,t4,t8,
183  & zfcl,t12,t13,mesh%GLOSEG%I,
184  & mesh%GLOSEG%DIM1,mesh%MSEG%X,
185  & flulim,mesh%NSEG,unsv2d,csf_sable,icla,
186  & flbcla%ADR(icla)%P,ava,liqbor,qbor,
187  & maxadv)
188  IF(debug.GT.0) WRITE(lu,*) 'END_BEDLOAD_SOLVS_FE'
189  ENDIF
190 !
191 !======================================================================!
192 !======================================================================!
193 !
194  RETURN
195  END
196 
subroutine bedload_nerbed_vf
subroutine bedload_evol(S, ELAY, AVA, COEFPN, CALFA, SALFA, LIMTEC, EBOR, MASKEL, MASK, V2DPAR, UNSV2D, DEBUG, NPOIN, NPTFR, IELMT, KENT, KDIR, KDDL, DTS, VF, ENTET, MSK, MESH, QS, T1, T2, T3, T4, T8, T11, T12, T13, CSF_SABLE, BREACH, QSX, QSY, ZFCL, SLOPEFF, ICLA, FLBCLA, LIQBOR, QBOR, MAXADV)
Definition: bedload_evol.f:14
subroutine bedload_solvs_fe(MESH, S, EBOR, MASKEL, MASK, QSX, QSY, IELMT, NPOIN, NPTFR, KENT, KDIR, KDDL, LIMTEC, DT, MSK, ENTET, T1, T2, T3, T4, T8, ZFCL, HZ, HZN, GLOSEG, DIMGLO, FLODEL, FLULIM, NSEG, UNSV2D, CSF_SABLE, ICLA, FLBCLA, AVA, LIQBOR, QBOR, MAXADV)
subroutine breach
Definition: breach.f:4
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine bedload_solvs_vf(MESH, QSX, QSY, LIMTEC, UNSV2D, EBOR, BREACH, NSEG, NPTFR, NPOIN, KENT, KDIR, KDDL, DT, ZFCL, FLUX, CSF_SABLE, FLBCLA, AVA, LIQBOR, QBOR, NUBO, VNOIN)
Definition: bief.f:3