The TELEMAC-MASCARET system  trunk
point_gaia.f
Go to the documentation of this file.
1 ! *********************
2  SUBROUTINE point_gaia
3 ! *********************
4 !
5 !
6 !***********************************************************************
7 ! GAIA
8 !***********************************************************************
9 !
11 !
12 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 !
14  USE bief
17  IMPLICIT NONE
18 
19 
20  ! 2/ LOCAL VARIABLES
21  ! ------------------
22  INTEGER :: I,K,NTR,IELM0,IELM1,IELBT,IELM0_SUB,CHECK_NVAR
23  INTEGER :: CFG(2),CFGBOR(2)
24 
25 !-----------------------------------------------------------------------
26 !
27 !-----------------------------------------------------------------------
28 
29  WRITE(lu,12)
30 
31  ! ************************************** !
32  ! I - DISCRETISATION AND TYPE OF STORAGE !
33  ! ************************************** !
34  ! IELMT, IELMH_GAI AND IELMU_GAI HARD-CODED IN LECDON
35  ielm0 = 10
36  ielm1 = 11
37  ielbt = ielbor(ielmt,1)
38  ielm0_sub = 10*(ielmt/10)
39 
40  cfg(1) = optass
41  cfg(2) = produc
42  cfgbor(1) = 1 ! CFG IMPOSED FOR BOUNDARY MATRICES
43  cfgbor(2) = 1 ! CFG IMPOSED FOR BOUNDARY MATRICES
44 
45  solsys_gai = 0
46  save_uconv => null()
47  save_vconv => null()
48 
49  IF(vf) equa(1:15)='SAINT-VENANT VF'
50 
51  ! ******************************************* !
52  ! II - ALLOCATES THE MESH STRUCTURE !
53  ! ******************************************* !
54  IF(.NOT.(ASSOCIATED(mesh%X))) THEN
55  CALL almesh(mesh,'MESH_S',ielmt,spheri,cfg,
57  & 0)
58  END IF
59 
60  ikle => mesh%IKLE
61  x => mesh%X%R
62  y => mesh%Y%R
63  nelem => mesh%NELEM
64  nelmax=> mesh%NELMAX
65  nptfr => mesh%NPTFR
66  nptfrx=> mesh%NPTFRX
67  typelm=> mesh%TYPELM
68  npoin => mesh%NPOIN
69  npmax => mesh%NPMAX
70  mxptvs=> mesh%MXPTVS
71  mxelvs=> mesh%MXELVS
72  lv => mesh%LV
73 
74 
75  ! ******************** !
76  ! III - REAL ARRAYS !
77  ! ******************** !
78  CALL bief_allvec(1,s , 'S ', 0 , 1, 1,mesh) ! VOID STRUCTURE
79  CALL bief_allvec(1,e , 'E ', ielmt, 1, 2,mesh) ! BED EVOLUTION (KG/M2)
80  CALL bief_allvec(1,z , 'ZCLIP ', ielmt, 1, 2,mesh) ! CLIPPED FREE SURFACE
81  CALL bief_allvec(1,esomt , 'ESOMT ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
82  CALL bief_allvec(1,cumbe , 'CUMBE ', ielmt, 1, 2,mesh) ! VARIABLES BE SUMMED UP
83  CALL bief_allvec(1,emax , 'EMAX ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
84  CALL bief_allvec(1,evol_mb,'EVL_MB', ielmt, 1, 2,mesh) ! TOTAL MASS EVOLUTION DUE TO BEDLOAD
85  CALL bief_allvec(1,evol_ms,'EVL_MS', ielmt, 1, 2,mesh) ! TOTAL MASS EVOLUTION DUE TO SUSPENSION
86  CALL bief_allvec(1,evol_mc,'EVL_MC', ielmt, 1, 2,mesh) ! TOTAL MASS EVOLUTION DUE TO CONSOLIDATION
87  CALL bief_allvec(1,evol_mm,'EVL_MM', ielmt, 1, 2,mesh) ! TOTAL MASS EVOLUTION DUE TO SLIDING
88  CALL bief_allvec(1,q , 'QCLIP ', ielmt, 1, 2,mesh) ! FLOWRATE BASED ON CLIPPED HN
89  CALL bief_allvec(1,qu , 'QUCLIP', ielmt, 1, 2,mesh) ! X FLOWRATE BASED ON CLIPPED HN
90  CALL bief_allvec(1,qv , 'QVCLIP', ielmt, 1, 2,mesh) ! Y FLOWRATE BASED ON CLIPPED HN
91  CALL bief_allvec(1,u2d , 'UCLIP ', ielmt, 1, 2,mesh) ! X VELOCITY BASED ON CLIPPED HN
92  CALL bief_allvec(1,v2d , 'VCLIP ', ielmt, 1, 2,mesh) ! Y VELOCITY BASED ON CLIPPED HN
93  CALL bief_allvec(1,thetac, 'THETAC', ielmt, 1, 2,mesh) ! CURRENT DIRECTION
94  CALL bief_allvec(1,qs , 'QS ', ielmt, 1, 2,mesh) ! TRANSPORT RATE
95  CALL bief_allvec(1,qsx , 'QSX ', ielmt, 1, 2,mesh) ! X TRANSPORT RATE
96  CALL bief_allvec(1,qsy , 'QSY ', ielmt, 1, 2,mesh) ! Y TRANSPORT RATE
97  CALL bief_allvec(1,qs_c , 'QS_C ', ielmt, 1, 2,mesh) ! BEDLOAD RATE
98  CALL bief_allvec(1,qsxc , 'QSXC ', ielmt, 1, 2,mesh) ! X BEDLOAD RATE
99  CALL bief_allvec(1,qsyc , 'QSYC ', ielmt, 1, 2,mesh) ! Y BEDLOAD RATE
100  CALL bief_allvec(1,hiding, 'HIDING', ielmt, 1, 2,mesh) ! HIDING FACTOR
101  CALL bief_allvec(1,zf , 'ZF ', ielmt, 1, 2,mesh) ! BED ELEVATIONS
102  CALL bief_allvec(1,zr , 'ZR ', ielmt, 1, 2,mesh) ! NON-ERODABLE BED ELEVATIONS
103  CALL bief_allvec(1,zrl , 'ZRL ', ielmt, 1, 2,mesh) ! REFERENCE LEVEL FOR NESTOR
104  CALL bief_allvec(1,radsec, 'RADSEC', ielmt, 1, 2,mesh) ! RADIUS SECONDARY CURRENTS
105  CALL bief_allvec(1,zref , 'ZREF ', ielmt, 1, 2,mesh) ! REFERENCE ELEVATION
106  CALL bief_allvec(1,coefpn, 'COEFPN', ielmt, 1, 2,mesh) ! SLOPE EFFECT
107  CALL bief_allvec(1,cf , 'CF ', ielmt, 1, 2,mesh) ! ADIMENSIONAL FRICTION
108  CALL bief_allvec(1,tob , 'TOB ', ielmt, 1, 2,mesh) ! CURRENT SHEAR STRESS
109  CALL bief_allvec(1,taup , 'TAUP ', ielmt, 1, 2,mesh) ! SHEAR STRESS MODIFIED BY SKIN FRICTION
110  CALL bief_allvec(1,tobw , 'TOBW ', ielmt, 1, 2,mesh) ! WAVE SHEAR STRESS
111  CALL bief_allvec(1,tobcw_mean, 'TOBCW_MEAN', ielmt, 1, 2,mesh) ! SHEAR STRESS
112  CALL bief_allvec(1,tobcw_max, 'TOBCW_MAX', ielmt, 1, 2,mesh) ! SHEAR STRESS
113  CALL bief_allvec(1,mu , 'MU ', ielmt, 1, 2,mesh) ! SKIN FRICTION
114  CALL bief_allvec(1,ksp , 'KSP ', ielmt, 1, 2,mesh) ! SKIN ROUGHNESS
115  CALL bief_allvec(1,ks , 'KS ', ielmt, 1, 2,mesh) ! TOTAL ROUGHNESS
116  CALL bief_allvec(1,ksr , 'KSR ', ielmt, 1, 2,mesh) ! RIPPLE INDUCED ROUGHNESS
117  CALL bief_allvec(1,thetaw, 'THETAW', ielmt, 1, 2,mesh) ! WAVE VARIABLE
118  CALL bief_allvec(1,fw , 'FW ', ielmt, 1, 2,mesh) ! WAVE VARIABLE
119  CALL bief_allvec(1,uw , 'UW ', ielmt, 1, 2,mesh) ! WAVE VARIABLE
120  CALL bief_allvec(1,hw , 'HW ', ielmt, 1, 2,mesh)
121  CALL bief_allvec(1,tw , 'TW ', ielmt, 1, 2,mesh)
122  CALL bief_allvec(1,fluerdh, 'FLERDH', ielmt, 1, 2,mesh) ! EROSION FLUX DIVIDE BY THE WATER DEPTH
123  CALL bief_allvec(1,fluer_adv, 'FLERAD', ielmt, 1, 2,mesh) ! EROSION FLUX USED IN THE ADVECTION SCHEME
124  CALL ov('X=0 ', x=fluer_adv%R, dim1=mesh%NPOIN)
125  CALL bief_allvec(1,fludpt_adv, 'FLDPAD', ielmt, 1, 2,mesh) ! DEPOSITION FLUX USED IN THE ADVECTION SCHEME
126  CALL ov('X=0 ', x=fludpt_adv%R, dim1=mesh%NPOIN)
127  CALL bief_allvec(1,fluerdh, 'FLERDH', ielmt, 1, 2,mesh) ! EROSION FLUX DIVIDE BY THE WATER DEPTH
128  CALL bief_allvec(1,acladm, 'ACLADM', ielmt, 1, 2,mesh) ! MEAN DIAMETER IN ACTIVE LAYER
129  CALL bief_allvec(1,unladm, 'UNLADM', ielmt, 1, 2,mesh) ! MEAN DIAMETER IN 2ND LAYER
130  CALL bief_allvec(1,hcpl , 'HCPL ', ielmt, 1, 2,mesh) ! WATER DEPTH SAVED FOR CONSTANT FLOW DISCHARGE
131  CALL bief_allvec(1,ecpl , 'ECPL ', ielmt, 1, 2,mesh) ! EVOLUTION SAVED FOR CONSTANT FLOW DISCHARGE
132  CALL bief_allvec(1,elay , 'ELAY ', ielmt, 1, 2,mesh) ! ACTIVE LAYER THICKNESS
133  CALL bief_allvec(1,estrat, 'ESTRAT', ielmt, 1, 2,mesh) ! 2ND LAYER THICKNESS
134  CALL bief_allvec(1,kx , 'KX ', ielmt, 1, 1,mesh)
135  CALL bief_allvec(1,ky , 'KY ', ielmt, 1, 1,mesh)
136  CALL bief_allvec(1,kz , 'KZ ', ielmt, 1, 1,mesh)
137  CALL bief_allvec(1,uconv_gai, 'UCONV ', ielmt, 1, 1,mesh)
138  CALL bief_allvec(1,vconv_gai, 'VCONV ', ielmt, 1, 1,mesh)
139  CALL bief_allvec(1,unorm , 'UNORM ', ielmt, 1, 2,mesh)
140  CALL bief_allvec(1,maskb , 'MASKB ', ielm0, 1, 2,mesh)
141  CALL bief_allvec(1,mask , 'MASK ', ielbt, 1, 2,mesh)
142  CALL bief_allvec(1,afbor , 'AFBOR ', ielbt, 1, 1,mesh)
143  CALL bief_allvec(1,bfbor , 'BFBOR ', ielbt, 1, 1,mesh)
144  CALL bief_allvec(1,flbor , 'FLBOR ', ielbt, 1, 1,mesh)
145  CALL bief_allvec(1,q2bor , 'Q2BOR ', ielbt, 1, 1,mesh)
146 ! BOUNDARY FLUX FOR CALL TO CVDFTR
147  CALL bief_allvec(1,flbor_gai , 'FLBORS', ielbt, 1, 1,mesh)
148  CALL bief_allvec(1,flbortra , 'FLBTRA', ielbt, 1, 1,mesh)
149 !
150 ! MAK ADDITION
151  CALL bief_allvec(1,csratio, 'CSRATIO', ielmt, 1, 2,mesh)
152  CALL bief_allvec(1,hn , 'HN ', ielmh_gai, 1, 2,mesh) ! CLIPPED WATER DEPTH
153  CALL bief_allvec(1,hn_gai, 'HN_GAI', ielmh_gai, 1, 2,mesh) ! CLIPPED WATER DEPTH SENT TO T2D
154  CALL ov('X=0 ', x=hn_gai%R, dim1=mesh%NPOIN)
155  CALL bief_allvec(1,hprop , 'HPROP ', ielmh_gai, 1, 1,mesh)
156  CALL bief_allvec(1,volu2d, 'VOLU2D', ielmh_gai, 1, 1,mesh)
157  CALL bief_allvec(1,v2dpar, 'V2DPAR', ielmh_gai, 1, 1,mesh)
158  CALL bief_allvec(1,unsv2d, 'UNSV2D', ielmh_gai, 1, 1,mesh)
159  CALL bief_allvec(1,mpm_aray,'MPMARAY', ielmt, 1, 2,mesh) ! MPM Array
160  CALL bief_allvec(1,flulim_gai,'FLULIM' ,mesh%NSEG,1,0,mesh)
161 !
162  IF(msk) THEN
163  CALL bief_allvec(1,maskel,'MASKEL', ielm0 , 1 , 2 ,mesh)
164  CALL bief_allvec(1,msktmp,'MSKTMP', ielm0 , 1 , 2 ,mesh)
165  CALL bief_allvec(1,maskpt,'MASKPT', ielmt , 1 , 2 ,mesh)
166  ELSE
167  CALL bief_allvec(1,maskel,'MASKEL', 0 , 1 , 0 ,mesh)
168  CALL bief_allvec(1,msktmp,'MSKTMP', 0 , 1 , 0 ,mesh)
169  CALL bief_allvec(1,maskpt,'MASKPT', 0 , 1 , 0 ,mesh)
170  ENDIF
171 !
172 ! FOR MIXED SEDIMENTS : chec if ms_sable and ms_vase
173 ! are necessary and change condition in cse
174 !
175  IF(sedco(1).OR.sedco(2)) THEN
176 ! CV V6.2: replacement of NCOUCH_TASS in NOMBLAY
177 !
178  CALL bief_allvec(1,ms_sable ,'MSSABL',
179  & ielmt,nomblay,2,mesh)
180  CALL bief_allvec(1,ms_vase ,'MSVASE',
181  & ielmt,nomblay,2,mesh)
182  ELSE
183  CALL bief_allvec(1,ms_sable ,'MSSABL',0,1,0,mesh)
184  CALL bief_allvec(1,ms_vase ,'MSVASE',0,1,0,mesh)
185  ENDIF
186 !... END MODIF cv
187  ! *********************** !
188  ! IV - INTEGER ARRAYS ! (_IMP_)
189  ! *********************** !
190  CALL bief_allvec(2, liebor, 'LIEBOR', ielbor(ielm1,1), 1, 1,mesh)
191  CALL bief_allvec(2, liqbor, 'LIQBOR', ielbor(ielm1,1), 1, 1,mesh)
192  CALL bief_allvec(2, limtec, 'LIMTEC', ielbor(ielm1,1), 1, 1,mesh)
193  CALL bief_allvec(2, numliq, 'NUMLIQ', ielbor(ielm1,1), 1, 1,mesh)
194  CALL bief_allvec(2, clt , 'CLT ', ielbor(ielmt,1), 1, 1,mesh)
195  CALL bief_allvec(2, clu , 'CLU ', ielbor(ielmt,1), 1, 1,mesh)
196  CALL bief_allvec(2, clv , 'CLV ', ielbor(ielmt,1), 1, 1,mesh)
197  CALL bief_allvec(2, limdif, 'LIMDIF', ielbor(ielmt,1), 1, 1,mesh)
198  CALL bief_allvec(2, lihbor, 'LIHBOR', ielbor(ielmt,1), 1, 1,mesh)
200  & 'BNDCOL', ielbor(ielmt,1), 1, 1,mesh)
201  CALL bief_allvec(2, limpro, 'LIMPRO', ielbor(ielmt,1), 6, 1,mesh)
202  CALL bief_allvec(2, it1 , 'IT1 ', ielm1 , 1, 2,mesh)
203  CALL bief_allvec(2, it2 , 'IT2 ', ielm1 , 1, 2,mesh)
204  CALL bief_allvec(2, it3 , 'IT3 ', ielm1 , 1, 2,mesh)
205  CALL bief_allvec(2, it4 , 'IT4 ', ielm1 , 1, 2,mesh)
206 ! NUMBER OF LAYERS
207  CALL bief_allvec(2, nlayer, 'NLAYE ', ielmt , 1, 2,mesh)
208 
209  IF(vf) THEN
210  CALL bief_allvec(2,breach,'BREACH',ielm1,1,2,mesh)
211  ELSE
212  CALL bief_allvec(2,breach,'BREACH',0,1,0,mesh)
213  ENDIF
214 
215  IF(msk) THEN
216  CALL bief_allvec(2,ifamas,'IFAMAS',
217  & ielm0,bief_nbfel(ielm0,mesh),1,mesh)
218  ELSE
219  CALL bief_allvec(2,ifamas,'IFAMAS',0,1,0,mesh)
220  ENDIF
221 
222  ! ******************* !
223  ! V - BLOCK OF ARRAYS !
224  ! ******************* !
225  ALLOCATE(avail(npoin,nomblay,nsicla)) ! FRACTION OF EACH CLASS FOR EACH LAYER
226  ALLOCATE(es(npoin,nomblay)) ! THICKNESS OF EACH CLASS
227  ALLOCATE(m2t(nsicla,npoin)) ! CONVERSION MASS TO THICKNESS
228  ALLOCATE(mpa2t(nsicla)) ! CONVERSION MASS PER AREA TO THICKNESS
229 !
230  ALLOCATE(ivide(npoin,nomblay+1)) ! FRACTION OF EACH CLASS FOR EACH LAYER
231 !
232  ALLOCATE(sanfra(npoin)) ! SAND FRACTION CONTENT FOR WILCOCK & CROWE TRANSPORT FORMULA
233 !
234 ! FOR ARTELIA BED MODEL
235 !
236  ALLOCATE(ratio_mud_sand(nomblay,npoin)) ! MUD/SAND RATIO
237  ALLOCATE(mass_mud(nmud,nomblay,npoin)) ! FRACTION OF EACH CLASS FOR EACH LAYER
238  ALLOCATE(mass_sand(max(nsand,1),nomblay,npoin)) ! FRACTION OF EACH CLASS FOR EACH LAYER
239  mass_sand = 0.d0
240  mass_mud = 0.d0
241  ALLOCATE(mass_mud_tot(nomblay,npoin))
242  ALLOCATE(mass_sand_tot(nomblay,npoin))
243  ALLOCATE(mass_mix_tot(nomblay,npoin))
244  mass_sand_tot = 0.d0
245  mass_mud_tot = 0.d0
246  mass_mix_tot = 0.d0
247  ALLOCATE(ratio_sand(max(nsand,1),nomblay,npoin))
248  ALLOCATE(ratio_mud(max(nmud,1),nomblay,npoin))
249  ALLOCATE(toce_sand(max(nsand,1),npoin))
250  ALLOCATE(toce_mud(nomblay,npoin))
251  ALLOCATE(conc_mud(nomblay,npoin))
252  ALLOCATE(trans_mass(nomblay,npoin))
253  ALLOCATE(partheniades(nomblay,npoin))
254 ! ? ALLOCATE ONLY IF BED_MODEL = 1?
255  ALLOCATE(qer_mud(max(nmud,1)))
256  ALLOCATE(qer_sand(max(nsand,1)))
257  ALLOCATE(time(max(nsand,1)))
258  ALLOCATE(toce_mix(max(nsand,1),nomblay,npoin))
259  ALLOCATE(cae_ilay(max(nsand,1),nomblay,npoin))
260  ALLOCATE(qe_moy(max(nsand,1)))
261  ALLOCATE(fluer_pur_mud(max(nsand,1),npoin))
262  ALLOCATE(fluer_pur_sand(max(nsand,1),npoin))
263  ALLOCATE(fluer_mix(max(nsand,1),npoin))
264  ALLOCATE(conc_mud_activ_layer(npoin))
265  ALLOCATE(mass_mud_activ_layer(npoin))
266  ALLOCATE(mass_sand_active_layer(npoin))
267  ALLOCATE(mass_sand_masked(npoin))
268  ALLOCATE(evcl_m_tot_sand(npoin))
269  ALLOCATE(ratio_evol_tot_sand(npoin))
270  ALLOCATE(flux_mass_mud(nmud,nomblay,npoin))
271  ALLOCATE(flux_mass_mud_tot(nomblay,npoin))
272  ALLOCATE(flux_mass_sand(max(nsand,1),nomblay,npoin))
273  ALLOCATE(num_transf(npoin))
275  ALLOCATE(flux_neg_sand_activ_layer(max(nsand,1),npoin))
277  ALLOCATE(flux_pos_sand_activ_layer(max(nsand,1),nomblay,npoin))
278 ! ?
279  IF(bilma) THEN
280  ALLOCATE(bedload_b_flux(maxfro,nsicla))
281  ALLOCATE(sumbedload_b(maxfro,nsicla))
282  ENDIF
283  IF(bilma.OR.vsmtype==1) THEN
284  ALLOCATE(mcumucla(nsicla))
285  ENDIF
286 !
287  CALL allblo(masktr, 'MASKTR') ! MASK OF THE BOUNDARY CONDITIONS
288  CALL allblo(ebor , 'EBOR ') ! BOUNDARY CONDITIONS
289  CALL allblo(qbor , 'QBOR ') ! BOUNDARY CONDITIONS
290  CALL allblo(ratios , 'RATIOS') ! MASS FRACTION OF EACH CLASS OF SAND
291  CALL allblo(ratiom , 'RATIOM') ! MASS FRACTION OF EACH CLASS OF MUD
292  CALL allblo(laythi, 'LAYTHI') ! LAYER THICKNESSES
293  CALL allblo(layconc, 'LAYCONC') ! MUD CONCENTRATION IN THE LAYERS
294  CALL allblo(mass_s , 'MASS_S') ! MASS OF EACH CLASS OF SAND
295  CALL allblo(mass_m , 'MASS_M') ! MASS OF EACH CLASS OF MUD
296  CALL allblo(mtransfer, 'MTRANS') ! MASS TRANSFER FOR CONSOLIDATION BETWEEN LAYERS
297  CALL allblo(tocemud, 'TOCEMU') ! CRITICAL EROSION SHEAR STRESS OF THE MUD
298  CALL allblo(parthe, 'PARTHE') ! PARTHENIADES EROSION COEFFICIENT
299 !
300  CALL allblo(qscl , 'QSCL ') ! TRANSPORT RATE FOR EACH CLASS
301  CALL allblo(qscl_c, 'QSCL_C') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS
302  CALL allblo(qsclxc, 'QSCLXC') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS ALONG X
303  CALL allblo(qsclyc, 'QSCLYC') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS ALONG Y
304  CALL allblo(mudb , 'MUDB ') ! MASS OF MUD IN BEDLOAD ADDED IN SUSPENSION
305  CALL allblo(f_mudb, 'F_MUDB') ! FLUX OF MUD IN BEDLOAD ADDED IN SUSPENSION
306  CALL allblo(zfcl_c, 'ZFCL_C') ! EVOLUTION FOR EACH CLASS DUE TO BEDLOAD TRANSPORT
307  CALL allblo(evcl_mb, 'EVC_MB') ! MASS EVOLUTION FOR EACH CLASS DUE TO BEDLOAD TRANSPORT
308  CALL allblo(evcl_ms, 'EVC_MS') ! MASS EVOLUTION FOR EACH CLASS DUE TO BEDLOAD TRANSPORT
309 !
310  CALL allblo(qscl_s, 'QSCL_S') ! SUSPENDED TRANSPORT RATE FOR EACH CLASS
311  CALL allblo(fludp , 'FLUDP ') ! DEPOSITION FLUX
312  CALL allblo(fludpt, 'FLUDPT') ! DEPOSITION FLUX FOR IMPLICITATION
313  CALL allblo(fluer , 'FLUER ') ! EROSION FLUX
314  CALL allblo(fluert, 'FLUERT') ! EROSION FLUX FOR IMPLICITATION
315 !
316  CALL allblo(zfcl_ms, 'ZFCL_MS') ! EVOLUTION FOR EACH CLASS DUE TO SLOPING BED EFFECTS
317  CALL allblo(calfa_cl, 'CALFA ') ! CALFA FOR EACH CLASS
318  CALL allblo(salfa_cl, 'SALFA ') ! SALFA FOR EACH CLASS
319 !
320  CALL allblo(cstaeq , 'CSTAEQ ') !
321  CALL allblo(ratio_toce , 'RATIO_TOCE') !
322 !
323  CALL bief_allvec_in_block(cstaeq,nsicla,1,'CSTAEQ',ielmt,1,2,mesh)
325  & nsicla,1,'RATIO_TOCE',ielmt,1,2,mesh)
326 !
327  CALL bief_allvec_in_block(masktr,5 ,1,'MSKTR ',ielbt,1,2,mesh)
328  CALL bief_allvec_in_block(ebor ,nsicla,1,'EBOR ',ielbt,1,2,mesh)
329  CALL bief_allvec_in_block(qbor ,nsicla,1,'QBOR ',ielbt,1,2,mesh)
330 !
331 ! V6P2 (JMH) FLUXES AT BOUNDARY FOR EVERY CLASS
332 !
333  CALL allblo(flbcla,'FLBCLA')
334  CALL bief_allvec_in_block(flbcla,nsicla,1,'FLBC ',ielbt,1,2,mesh)
335 !
337  & 1,'RATIOS',ielmt,1,2,mesh)
338 !
340  & 1,'RATIOM',ielmt,1,2,mesh)
341 !
342 ! LAYTHI ALLOCATED WITH SIZE 0 AND POINTING TO RELEVANT SECTIONS OF ES
343 !
344  CALL bief_allvec_in_block(laythi,nomblay,1,'LAYTHI',0,1,0,mesh)
345  DO k=1,nomblay
346  DEALLOCATE(laythi%ADR(k)%P%R)
347  laythi%ADR(k)%P%R=>es(1:npoin,k)
348  laythi%ADR(k)%P%MAXDIM1=npoin
349  laythi%ADR(k)%P%DIM1=npoin
350  ENDDO
351 !
352 ! LAYCONC ALLOCATED WITH SIZE 0 AND POINTING TO CONC_MUD
353 !
354  CALL bief_allvec_in_block(layconc,nomblay,1,'LAYCONC',
355  & ielmt,1,2,mesh)
356 !
357 ! MASS_S
358 !
360  & 1,'MASS_S',ielmt,1,2,mesh)
361 !
362 ! MASS_M
363 !
365  & 1,'MASS_M',ielmt,1,2,mesh)
366 !
367 ! MTRANSFER ALLOCATED WITH SIZE 0 AND POINTING TO TRANSF_MASS
368 !
369  CALL bief_allvec_in_block(mtransfer,nomblay,1,'MTRANS',
370  & ielmt,1,2,mesh)
371 !
372 ! TOCEMUD ALLOCATED WITH SIZE 0 AND POINTING TO TOCE_MUD
373 !
374  CALL bief_allvec_in_block(tocemud,nomblay,1,'TOCE_M',
375  & ielmt,1,2,mesh)
376 !
377 ! PARTHE ALLOCATED WITH SIZE 0 AND POINTING TO PARTHENIADES
378 !
379  CALL bief_allvec_in_block(parthe,nomblay,1,'PARTHE',
380  & ielmt,1,2,mesh)
381 !
382  CALL bief_allvec_in_block(qscl ,nsicla,1,'QSCL ',ielmt,1,2,mesh)
383  CALL bief_allvec_in_block(qscl_c,nsicla,1,'QSCL_C',ielmt,1,2,mesh)
384  CALL bief_allvec_in_block(qsclxc,nsicla,1,'QSCLXC',ielmt,1,2,mesh)
385  CALL bief_allvec_in_block(qsclyc,nsicla,1,'QSCLYC',ielmt,1,2,mesh)
386  CALL bief_allvec_in_block(mudb ,nsicla,1,'MUDB ',ielmt,1,2,mesh)
387  CALL bief_allvec_in_block(f_mudb,nsicla,1,'F_MUDB',ielmt,1,2,mesh)
388  CALL bief_allvec_in_block(zfcl_c,nsicla,1,'ZFCL_C',ielmt,1,2,mesh)
389  CALL bief_allvec_in_block(evcl_mb,nsicla,1,'EVC_MB',ielmt,1,2,
390  & mesh)
391  CALL bief_allvec_in_block(evcl_ms,nsicla,1,'EVC_MS',ielmt,1,2,
392  & mesh)
393  CALL bief_allvec_in_block(calfa_cl,nsicla,1,'CALFA ',
394  & ielmt,1,2,mesh)
395  CALL bief_allvec_in_block(salfa_cl,nsicla,1,'SALFA ',
396  & ielmt,1,2,mesh)
397  CALL bief_allvec_in_block(qscl_s,nsicla,1,'QSCL_S',ielmt,1,2,mesh)
398  CALL bief_allvec_in_block(fludp ,nsicla,1,'FLUDP ',ielmt,1,2,mesh)
399  CALL bief_allvec_in_block(fludpt,nsicla,1,'FLUDPT',ielmt,1,2,mesh)
400  CALL bief_allvec_in_block(fluer ,nsicla,1,'FLUER ',ielmt,1,2,mesh)
401  CALL bief_allvec_in_block(fluert,nsicla,1,'FLUERT',ielmt,1,2,mesh)
402 !
403  IF(slide) THEN
405  & 'ZFCLMS',ielmt,1,2,mesh)
406  ELSE
408  & 'ZFCLMS', 0,1,0,mesh)
409  ENDIF
410 !
411 ! *************
412 ! VI - MATRICES
413 ! *************
414 !
415 !
416  CALL bief_allmat(am1_s,'AM1_S ',ielmt,ielmt,cfg ,'Q','Q',mesh) ! SUSPENSION WORK MATRIX
417  CALL bief_allmat(am2_s,'AM2_S ',ielmt,ielmt,cfg ,'Q','Q',mesh) ! SUSPENSION WORK MATRIX
418  CALL bief_allmat(mbor ,'MBOR ',ielbt,ielbt,cfgbor,'Q','Q',mesh) ! SUSPENSION BOUNDRAY MATRIX
419 !
420 !
421 ! ******************
422 ! VII - OTHER ARRAYS
423 ! ******************
424 !
425 ! NTR SHOULD AT LEAST BE THE NUMBER OF VARIABLES IN VARSOR THAT WILL BE READ IN
426 ! VALIDA. HERE UP TO THE LAYER THICKNESSES
427 !
428 ! CV V6P2
429 ! NTR = 27+(NOMBLAY+4)*NSICLA+NOMBLAY+NPRIV
430  ntr = 27+(nomblay+4)*nsicla+2*nomblay+npriv
431 !
432 ! W1 NO LONGER USED (IS SENT TO CVDFTR BUT CVDFTR DOES NOTHING WITH IT)
433  CALL bief_allvec(1, w1 , 'W1 ', ielm0 , 1,1,mesh) ! WORK ARRAY
434  CALL bief_allvec(1, te1, 'TE1 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
435  CALL bief_allvec(1, te2, 'TE2 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
436  CALL bief_allvec(1, te3, 'TE3 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
437 !
438  CALL allblo(varcl, 'VARCL ') ! CLANDESTINE VARIABLES
439  CALL allblo(prive, 'PRIVE ') ! USER ARRAY
440  CALL allblo(tb , 'TB ') ! WORKING ARRAY
441  CALL bief_allvec_in_block(tb ,ntr ,1,'T ',ielmt,1,2,mesh)
442 !
443  CALL bief_allvec_in_block(varcl,nvarcl,1,'CL ',ielmt,1,2,mesh)
444  IF(npriv.GT.0) THEN
445  CALL bief_allvec_in_block(prive,max(npriv,4),
446  & 1,'PRIV ',ielmt,1,2,mesh)
447  ELSE
448  CALL bief_allvec_in_block(prive,4,1,'PRIV ',0,1,0,mesh)
449  ENDIF
450 ! TO AVOID WRITING NON-INITIALISED ARRAYS TO FILES
451  CALL os('X=0 ',x=prive)
452 !
453  ! ************ !
454  ! VIII - ALIAS !
455  ! ************ !
456 !
457  t1 => tb%ADR( 1)%P ! WORK ARRAY
458  t2 => tb%ADR( 2)%P ! WORK ARRAY
459  t3 => tb%ADR( 3)%P ! WORK ARRAY
460  t4 => tb%ADR( 4)%P ! WORK ARRAY
461  t5 => tb%ADR( 5)%P ! WORK ARRAY
462  t6 => tb%ADR( 6)%P ! WORK ARRAY
463  t7 => tb%ADR( 7)%P ! WORK ARRAY
464  t8 => tb%ADR( 8)%P ! WORK ARRAY
465  t9 => tb%ADR( 9)%P ! WORK ARRAY
466  t10 => tb%ADR(10)%P ! WORK ARRAY
467  t11 => tb%ADR(11)%P ! WORK ARRAY
468  t12 => tb%ADR(12)%P ! WORK ARRAY
469  t13 => tb%ADR(13)%P ! WORK ARRAY
470  t14 => tb%ADR(14)%P ! WORK ARRAY
471 !
472 ! **************************************************************
473 ! IX - ALLOCATES A BLOCK CONNECTING A VARIABLE NAME TO ITS ARRAY
474 ! **************************************************************
475 !
476  CALL allblo(varsor, 'VARSOR')
477  CALL addblo(varsor, u2d ) ! 01
478  CALL addblo(varsor, v2d ) ! 02
479  CALL addblo(varsor, hn ) ! 03
480  CALL addblo(varsor, z ) ! 04
481  CALL addblo(varsor, zf ) ! 05
482  CALL addblo(varsor, q ) ! 06
483  CALL addblo(varsor, qu ) ! 07
484  CALL addblo(varsor, qv ) ! 08
485  CALL addblo(varsor, zr ) ! 09
486  CALL addblo(varsor, tob ) ! 10
487  CALL addblo(varsor, hw ) ! 11
488  CALL addblo(varsor, tw ) ! 12
489  CALL addblo(varsor, thetaw) ! 13
490  CALL addblo(varsor, qs ) ! 14
491  CALL addblo(varsor, qsx ) ! 15
492  CALL addblo(varsor, qsy ) ! 16
493  CALL addblo(varsor, cumbe ) ! 17
494  CALL addblo(varsor, ks) ! 18
495  CALL addblo(varsor, mu) ! 19
496  CALL addblo(varsor, acladm) ! 20
497  CALL addblo(varsor, uw ) ! 21
498  CALL addblo(varsor, zrl ) ! 22
499  check_nvar=22
500 ! RATIOS: FROM NVAR_RATIOS+1 TO NVAR_QSCL
501 !
502  DO i = 1,nomblay*nsand
503  CALL addblo(varsor, ratios%ADR(i)%P)
504  ENDDO
505  check_nvar=check_nvar+nomblay*nsand
506 !
507 ! QSCL: FROM NVAR_QSCL+1 TO NVAR_QS_C
508 !
509  DO i = 1, nsicla
510  CALL addblo(varsor, qscl%ADR(i)%P)
511  ENDDO
512  check_nvar=check_nvar+nsicla
513 !
514 ! QS_C: FROM NVAR_QS_C+1 TO NVAR_QSXC
515 !
516  CALL addblo(varsor,qs_c)
517  check_nvar=check_nvar+1
518 !
519 ! QSXC: FROM NVAR_QSXC+1 TO NVAR_QSYC
520 !
521  CALL addblo(varsor,qsxc)
522  check_nvar=check_nvar+1
523 !
524 ! QSYC: FROM NVAR_QYSC+1 TO NVAR_QSCL_C
525 !
526  CALL addblo(varsor,qsyc)
527  check_nvar=check_nvar+1
528 !
529 ! QSCL_C: FROM NVAR_QSCL_C+1 TO NVAR_LAYTHI
530 !
531  DO i=1,nsicla
532  CALL addblo(varsor,qscl_c%ADR(i)%P)
533  ENDDO
534  check_nvar=check_nvar+nsicla
535 !
536 ! LAYTHI: FROM NVAR_LAYTHI+1 TO NVAR_LAYCONC
537 !
538  DO i=1,nomblay
539  CALL addblo(varsor,laythi%ADR(i)%P)
540  ENDDO
541  check_nvar=check_nvar+nomblay
542 !
543 ! LAYCONC: FROM NVAR_LAYCONC+1 TO NVAR_NPRIV
544 !
545  DO i=1,nomblay
546  CALL addblo(varsor,layconc%ADR(i)%P)
547  ENDDO
548  check_nvar=check_nvar+nomblay
549 !
550 ! PRIVE: FROM NVAR_PRIV+1 TO NVAR_RATIOM
551 !
552  DO i=1,max(4,npriv)
553  CALL addblo(varsor,prive%ADR(i)%P)
554  ENDDO
555  check_nvar=check_nvar+max(4,npriv)
556 !
557 ! RATIOM: FROM NVAR_RATIOM+1 TO NVAR_MASS_S
558 !
559  DO i = 1,nomblay*nmud
560  CALL addblo(varsor, ratiom%ADR(i)%P)
561  ENDDO
562  check_nvar=check_nvar+nomblay*nmud
563 !
564 ! MASS_S: FROM NVAR_MASS_S+1 TO NVAR_MASS_M
565 !
566  DO i = 1,nomblay*nsand
567  CALL addblo(varsor, mass_s%ADR(i)%P)
568  ENDDO
569  check_nvar=check_nvar+nomblay*nsand
570 !
571 ! MASS_M: FROM NVAR_MASS_M+1 TO NVAR_MTRANS
572 !
573  DO i = 1,nomblay*nmud
574  CALL addblo(varsor, mass_m%ADR(i)%P)
575  ENDdo!
576  check_nvar=check_nvar+nomblay*nmud
577 !
578 ! MTRANS: FROM NVAR_MTRANS+1 TO NVAR_TOCEMUD
579 !
580  DO i = 1,nomblay
581  CALL addblo(varsor, mtransfer%ADR(i)%P)
582  ENDdo!
583  check_nvar=check_nvar+nomblay
584 !
585 ! TOCEMUD: FROM NVAR_TOCEMUD+1 TO NVAR_PARTHE
586 !
587  DO i = 1,nomblay
588  CALL addblo(varsor, tocemud%ADR(i)%P)
589  ENDdo!
590  check_nvar=check_nvar+nomblay
591 !
592 ! PARTHE: FROM NVAR_PARTHE+1 TO NVAR_VARCL
593 !
594  DO i = 1,nomblay
595  CALL addblo(varsor, parthe%ADR(i)%P)
596  ENDdo!
597  check_nvar=check_nvar+nomblay
598 !
599 ! VARCL: FROM NVAR_VARCL+1 TO NVAR_NADVAR
600 !
601  IF(varcl%N.GT.0) THEN
602  DO i=1,varcl%N
603  CALL addblo(varsor,varcl%ADR(i)%P)
604  sorleo(nvar_varcl+i)=.true.
605  ENDDO
606  ENDIF
607  check_nvar=check_nvar+varcl%N
608 !
609 ! BLOCK OF DIFFERENTIATED VARIABLES
610 ! ARRAYS AD1, AD2, ... MUST EXIST BUT WILL
611 ! ONLY BE INTIALISED BY THE AD USER SUBROUTINES AD_GET_TELEMAC2D
612 !
613 ! DIFFERENTIATED VARIABLES
614 !
615 ! NADVAR: FROM NVAR_NADVAR+1 TO NVAR
616 !
617  IF( nadvar.GT.0 ) THEN
618  CALL allblo(advar ,'ADVAR ')
619  CALL bief_allvec_in_block(advar,nadvar,1,'AD ',ielmt,
620  & 1,2,mesh)
621  DO i=1,nadvar
622  advar%ADR(i)%P%R = 0.d0
623  CALL ad_get_gaia(i,advar%ADR(i)%P)
624 !
625  IF( sorleo(nvar_advar+i).OR.sorimp(nvar_advar+i) )
626  & CALL addblo(varsor,advar%ADR(i)%P)
627 !
628  ENDDO
629  ENDIF
630  check_nvar=check_nvar+nadvar
631 !
632  IF(check_nvar.NE.nvar) THEN
633  WRITE(lu,19) check_nvar,nvar
634  CALL plante(1)
635  stop
636  ENDIF
637 19 FORMAT(1x,'ERROR IN VARSOR: CHECK_NVAR IS',1x,i2,
638  & /,1x,'WHILE IT SHOULD BE EQUAL TO',1x,i2,
639  & /,'CHECK THE CORRESPONDENCE BETWEEN TEXTE/MNEMO AND VARSOR')
640 !
641 !-----------------------------------------------------------------------
642 ! !JAJ #### IF REQUIRED, HERE WE CAN READ THE INPUT SECTIONS FILE
643 ! AND MODIFY NCP AND CTRLSC(1:NCP) ACCORDINGLY IN READ_SECTIONS
644 !
645  IF(trim(gai_files(gaisec)%NAME).NE.'') THEN
646  WRITE(lu,*)
647  & 'POINT_GAIA: SECTIONS DEFINED IN THE SECTIONS INPUT FILE'
648  CALL read_sections_gaia
649  ELSE ! THE PREVIOUS WAY OF DOING THINGS
650  IF(ncp.NE.0) THEN
651  IF(ncp.NE.0) WRITE(lu,*)
652  & 'POINT_GAIA: SECTIONS DEFINED IN THE PARAMETER FILE'
653  ENDIF
654  ENDIF
655 !
656  WRITE(lu,22)
657 !
658 12 FORMAT(1x,///,21x,'*******************************',/,
659  &21x, '* MEMORY ORGANISATION *',/,
660  &21x, '*******************************',/)
661 22 FORMAT(1x,///,21x,'*************************************',/,
662  &21x, '* END OF MEMORY ORGANIZATION: *',/,
663  &21x, '*************************************',/)
664 !
665 !-----------------------------------------------------------------------
666 !
667  RETURN
668  END
double precision, dimension(:,:,:), allocatable cae_ilay
integer, pointer nptfr
Number of boundary points.
type(bief_obj), target esomt
Cumulated bed evolution over time [kg/m2].
type(bief_obj), target hcpl
Water depth saved for constant flow discharge.
type(bief_obj), target kx
Coefficients of the dispersion tensor (dim. npoin)
type(bief_obj), target uw
Orbital wave velocity.
type(bief_obj), target qs
Total solid discharge (bedload+suspension)
double precision, dimension(:), allocatable ratio_evol_tot_sand
Ratio between EVCL_M_TOT_SAND and the mass in the active layer.
type(bief_obj), target s
Void structure.
integer, pointer mxelvs
Maximum number of neighbouring elemnts.
logical bilma
Mass balance.
type(bief_obj), target ms_vase
type(bief_obj), target zfcl_c
Bed evolution per class (due to bedload)
double precision, dimension(:,:), allocatable, target trans_mass
Mass transfer for consolidation between layers, for each bed layer, for each point. It is variable in space for the active layer (layer 1) only. It is a choice related to the way the bed model is done: the active layer is treated along with the others, there are no specialised arrays for the active layer.
type(bief_obj), target liqbor
Type of boundary conditions on sand transport rate.
type(bief_obj), target breach
Array saying whether the non-erodable bottom has been reached (vf)
type(bief_obj), target ecpl
Evolution saved for constant flow discharge.
type(bief_obj), target e
Evolution of the bed mass at each point for each time step [kg/m2].
double precision, dimension(:), allocatable mass_sand_active_layer
Mass of sand in active layer (array defined for temporary work in some subroutines) ...
type(bief_obj), target laythi
Layer thicknesses (for output variables)
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
type(bief_obj), pointer t10
type(bief_obj), target fludpt
Deposition flux for implicitation.
type(bief_obj), target maskel
Mask.
type(bief_obj), target acladm
Mean diameter of active-layer.
type(bief_obj), target ky
type(bief_obj), pointer ikle
Connectivity table.
type(bief_obj), target hn_gai
type(bief_obj), target zfcl_ms
Evolution for each class due to sloping bed effects.
type(bief_obj), target evol_mc
Total mass evolution due to consolidation [kg/m2].
double precision, dimension(:,:), allocatable fluer_mix
double precision, dimension(:,:), allocatable ratio_mud_sand
Ratio of mud to sand, for ilayer,ipoin.
type(bief_obj), target limtec
Type of boundary conditions.
double precision, dimension(:), allocatable evcl_m_tot_sand
Evolution of total (sum from each class) mass of sand for each point.
type(bief_obj), target u2d
Components of depth-averaged velocity.
type(bief_obj), target uconv_gai
Components of velocity vectors.
type(bief_obj), target tob
Bed shear stress [n/m2].
double precision, dimension(:,:), allocatable, target toce_mud
Critical erosion shear stress of the mud, for each bed layer, for each point. It is variable in space...
integer solsys_gai
Choose the advection field in cvdftr.
type(bief_obj), pointer t7
type(bief_obj), target q
Flow rate.
double precision, dimension(:,:,:), allocatable, target mass_mud
Surface mass of mud (kg/m2), for imud,ilayer,ipoin.
type(bief_obj), target calfa_cl
Cosinus of the angle between mean flow q and transport qs.
type(bief_obj), pointer t5
type(bief_obj), target nlayer
Number of layers for each point.
integer produc
Matrix-vector product.
integer, pointer npmax
Maximum number of 2d points in the mesh.
type(bief_obj), target v2d
type(bief_obj), target kz
type(bief_obj), target evcl_mb
Mass evolution for class (due to bedload)
type(bief_obj), target fluer_adv
integer, target nomblay
Number of bed load model layers = NUMSTRAT+1 to take the active layer into account.
type(bief_obj), target it3
double precision, dimension(:), pointer x
2d coordinates of the mesh
integer function bief_nbfel(IELM, MESH)
Definition: bief_nbfel.f:7
type(bief_obj), target zr
Non erodable (rigid) bottom elevation.
type(bief_obj), target evol_mb
Total mass evolution due to bedload [kg/m2].
type(bief_obj), target te3
type(bief_obj), target volu2d
Integral of bases.
double precision, dimension(:), allocatable qer_sand
integer, pointer lv
Vector length (for vectorisation) from mesh object.
type(bief_obj), target qscl_s
Suspended load transport rate for a sediment class.
type(bief_obj), target ratiom
Sediment composition : mud (for output variables)
subroutine allblo(BLO, NOM)
Definition: allblo.f:7
double precision, dimension(:,:), allocatable, target es
Layer thicknesses as double precision.
type(bief_file), dimension(maxlu_gai), target gai_files
For storing information on files.
type(bief_obj), target fluert
Erosion flux for implicitation.
double precision, dimension(:,:), allocatable mass_sand_tot
Surface total mass of sand (kg/m2), for ilayer,ipoin.
double precision, dimension(:,:), allocatable flux_neg_sand_activ_layer
Negative sand transfer to apply in case we have an active layer.
type(bief_obj), target varcl
Block of clandestine variables.
type(bief_obj), target mbor
Boundary matrix.
type(bief_obj), target qscl
Total transport rate for a sediment class : bedload+suspended load.
type(bief_obj), target zrl
Reference level for Nestor.
double precision, dimension(:), pointer save_uconv
Save the velocity fields in the suspension computation.
type(bief_obj), target afbor
Flux condition nu df/dn=afbor * f + bfbor.
type(bief_obj), target clu
double precision, dimension(:,:), allocatable fluer_pur_mud
type(bief_obj), target qsxc
Solid discharge (bedload), along x and y.
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
Definition: bief_allvec.f:7
type(bief_obj), target am1_s
Matrices.
type(bief_obj), target qbor
Imposed solid transport at the boundary In m3/s, for every class.
subroutine point_gaia
Definition: point_gaia.f:4
integer, pointer typelm
Type of element.
subroutine bief_allvec_in_block(BLO, N, NAT, NOMGEN, IELM, NDIM, STATUT, MESH)
type(bief_obj), target evcl_ms
Mass evolution for class (due to suspension)
double precision, dimension(:,:,:), allocatable flux_mass_mud
Flux of mud transfert inbetween layers.
type(bief_obj), target flbor_gai
Flux at the boundaries.
double precision, dimension(:,:), allocatable sumbedload_b
Cumulated bedload on boundary for every class (kg): variable for mass balance.
type(bief_obj), target ratio_toce
Ratio between critical shear stress of pure sediment and mixed sediment in the same layer...
type(bief_obj), target ms_sable
For mixed sediments.
type(bief_obj), target tobcw_max
Maximum of total current + wave shear stress.
type(bief_obj), target qsx
Solid discharge, along x and y.
type(bief_obj), target ks
Total bed roughness.
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.
type(bief_obj), target it4
type(bief_obj), target numliq
Liquid boundary numbering.
type(bief_obj), target thetaw
Wave direction (deg wrt ox axis) !!!!!some say oy axis!!!!!
type(bief_obj), target flulim_gai
Flux limitation per segment.
type(bief_obj), target thetac
Current direction (deg trigo)
type(bief_obj), target flbortra
Flux at the boundaries for tracer.
subroutine bief_allmat(MAT, NOM, IELM1, IELM2, CFG, TYPDIA, TYPEXT, MESH)
Definition: bief_allmat.f:7
integer, pointer nptfrx
Maximum number number of boundary points.
type(bief_obj), target fw
Quadratic friction coefficient (waves)
type(bief_obj), target clt
Boundary conditions for tracer, u and v (modified litbor, liubor,livbor)
type(bief_obj), target it2
type(bief_obj), target qsyc
type(bief_obj), target parthe
Partheniades erosion coefficient (for output variables)
integer optass
Matrix storage.
type(bief_obj), target ratios
Sediment composition : sand (for output variables)
type(bief_obj), target am2_s
type(bief_obj), target qu
X component of the flow rate.
type(bief_obj), target salfa_cl
Sinus of the angle between mean flow q and transport qs.
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...
type(bief_obj), target elay
Active layer thickness.
type(bief_obj), target maskb
Mask.
double precision, dimension(:,:), allocatable mass_mud_tot
Surface total mass of mud (kg/m2), for ilayer,ipoin.
double precision, dimension(:), allocatable qe_moy
integer nsand
Total number of sand.
logical slide
Sediment slide.
type(bief_obj), target te2
type(bief_obj), target w1
Working arrays.
type(bief_obj), target limdif
Type of boundary conditions for diffusion.
double precision, dimension(:,:), allocatable bedload_b_flux
Bedload boundary flux for every class (kg/s): variable for mass balance.
type(bief_obj), target clv
type(bief_obj), target hw
Significant wave height.
type(bief_obj), target estrat
Active stratum thickness.
type(bief_obj), target coefpn
Correction of transport for sloping bed effect.
type(bief_obj), target hprop
Propagation height.
type(bief_obj), pointer t8
type(bief_obj), target flbor
Zf values on boundaries.
subroutine read_sections_gaia
integer function ielbor(IELM, I)
Definition: ielbor.f:7
type(bief_obj), target radsec
Curve radius for secondary currents.
double precision, dimension(:), pointer save_vconv
integer, pointer nelem
Number of elements in the mesh.
type(bief_obj), target tb
Blocks of working arrays.
type(bief_obj), target te1
Work arrays for elements.
type(bief_obj), target bfbor
subroutine ad_get_gaia(IVAR, ADOBJ)
Definition: ad_get_gaia.F:7
type(bief_obj), target hn
Water depth.
type(bief_obj), target unorm
Norm of the mean flow velocity.
type(bief_obj), target unsv2d
Inverse of integral of bases.
double precision, dimension(:), allocatable mass_sand_masked
Contains "hidden" sand mass if more than 30% of mud (because no bedload for sand in that case) ...
type(bief_obj), target masktr
Mask.
double precision, dimension(:,:), allocatable fluer_pur_sand
type(bief_obj), target layconc
Layer concentration (for output variables)
type(bief_obj), target q2bor
Imposed solid transport at the boundary In m2/s, total, read in the boundary conditions file...
double precision, dimension(:,:), allocatable, target partheniades
Partheniades erosion coefficient, for each bed layer, for each point. It is variable in space for the...
logical, dimension(nsiclm) sedco
Cohesive sediments (for each class)
type(bief_obj), pointer t6
logical vf
Use a Finite Volumes formulation.
type(bief_obj), target evol_mm
Total mass evolution due to sliding (maxslope) [kg/m2].
integer, target nsicla
Number of sediment classes of bed material (less than NISCLM)
type(bief_obj), target zref
Reference elevation.
logical spheri
Work in spherical coordinates (hard-coded)
integer vsmtype
For the Continous Vertical Sorting MODEL.
subroutine addblo(BLOC, OBJ)
Definition: addblo.f:7
double precision, dimension(:,:,:), allocatable, target ratio_mud
Ratio of mud to all muds, for imud,ilayer,ipoin.
type(bief_obj), pointer t2
double precision, dimension(:,:), allocatable, target m2t
conversion mass to thickness
type(bief_obj), target z
Free surface elevation.
type(bief_obj), target csratio
Ratio between bottom concentration and average concentration.
type(bief_obj), target qsclyc
type(bief_obj), target qv
Y component of the flow rate.
logical msk
Include masking.
type(bief_obj), target msktmp
Mask.
type(bief_obj), pointer t1
Aliases for work vectors in tb.
type(bief_obj), target mudb
Mass of mud in bedload added in suspension.
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.
type(bief_obj), target mu
Skin friction correction factor for bed roughness: Ratio between shear stress due skin friction and t...
type(bief_obj), target mask
Block of masks.
integer nvarcl
Number of clandestine variable.
type(bief_obj), target qs_c
Solid discharge (bedload)
double precision, dimension(:,:,:), allocatable, target ratio_sand
Ratio of sand to all sands, for isand,ilayer,ipoin.
type(bief_obj), target prive
Block of private vectors.
double precision, dimension(:,:,:), allocatable flux_pos_sand_activ_layer
Positive sand transfer to apply in case we have an active layer.
integer, target gaigeo
type(bief_obj), target qsy
integer maxfro
Maximum number of (liquid boundaries, solid boundaries)
double precision, dimension(:), allocatable qer_mud
type(bief_obj), target mpm_aray
Meyer Peter Mueller factor.
type(bief_obj), target mass_m
Mud mass (for output variables)
type(bief_obj), target qsclxc
Bedload transport rate in the x and y direction for a sediment class [kg*(m-1*s-1)].
double precision, dimension(:,:), allocatable toce_sand
Critical erosion shear stress of the sand, for each sand, for each point.
type(bief_obj), target taup
Shear stress modified by skin friction.
type(bief_obj), pointer t4
type(bief_obj), target cumbe
Cumulated bed evolution over time [m].
type(bief_obj), target ifamas
Like IFABOR but ignoring masked elements.
type(bief_obj), target qscl_c
Bedload transport rate for a sediment class [kg*(m-1*s-1)].
type(bief_obj), target tw
Mean wave period.
double precision, dimension(:,:,:), allocatable flux_pos_mud_activ_layer
Positive mud transfer to apply in case we have an active layer.
integer, dimension(:), allocatable num_transf
Layer of mud of active layer into which mud will be added.
subroutine almesh(MESH, NOM, IELM, SPHERI, CFG, FFORMAT, NFIC, EQUA, REFINE, NPLAN, NPMAX, NPTFRX, NELMAX, PROJECTION, LATI0, LONGI0, CONVERGENCE, RLEVEL)
Definition: almesh.f:8
type(bief_obj), target vconv_gai
type(bief_obj), target ebor
Imposed bed evolution at the boundary [m].
type(bief_obj), target cstaeq
Sediment equilibrium concentration.
type(bief_obj), target varsor
Block of variables for output.
double precision, dimension(:,:), allocatable flux_mass_mud_tot
Same as FLUX_MASS_MUD but summed on the mud layer.
type(bief_obj), target cf
Quadratic friction coefficient.
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target zf
Bottom elevation.
type(bief_obj), target tobw
Wave induced shear stress.
type(bief_mesh), target mesh
Mesh structure.
type(bief_obj), target fluerdh
double precision, dimension(:), allocatable, target mpa2t
conversion mass per area to thickness
character(len=20) equa
Equation solved.
type(bief_obj), target fludpt_adv
type(bief_obj), target mass_s
Sand mass (for output variables)
integer ielmt
Missing comment.
double precision, dimension(:), allocatable mcumucla
cumulated mass through bedload boundary per class per time step (kg/s)
type(bief_obj), target fludp
Deposition flux.
type(bief_obj), target liebor
Type of boundary conditions on bed evolution.
type(bief_obj), target hiding
Hiding factor correction.
double precision, dimension(:,:,:), allocatable flux_mass_sand
Flux of sand transfert inbetween layers.
type(bief_obj), target fluer
Erosion flux.
type(bief_obj), pointer t12
type(bief_obj), target tobcw_mean
Mean of total current + wave shear stress.
integer, pointer mxptvs
Maximum number of neighbouring points.
integer, pointer nelmax
Maximum number of elements in the mesh.
double precision, dimension(:), allocatable time
double precision, dimension(:,:,:), allocatable, target avail
Sediment fraction for each layer, class, point.
type(bief_obj), target ksr
Ripple bed roughness.
type(bief_obj), target ksp
Bed skin roughness.
double precision, dimension(:,:,:), allocatable toce_mix
integer npriv
Number of private arrays, number of private arrays with given name.
type(bief_obj), target tocemud
Critical erosion shear stress of the mud (for output variables)
type(bief_obj), target f_mudb
Flux of mud in bedload added in suspension.
type(bief_obj), target it1
Integer working arrays.
type(bief_obj), target unladm
Mean diameter of under-layer.
type(bief_obj), pointer t14
double precision, dimension(:,:), allocatable mass_mix_tot
Surface total mass of sediments (kg/m2), for ilayer,ipoin.
type(bief_obj), target lihbor
Type of boundary conditions for h.
type(bief_obj), pointer t13
integer, pointer npoin
Number of 2d points in the mesh.
double precision, dimension(:,:), allocatable flux_neg_mud_activ_layer
Negative mud transfer to apply in case we have an active layer.
type(bief_obj), target limpro
Type of boundary conditions for propagation.
double precision, dimension(:,:), allocatable, target ivide
Void index of bed layers.
type(bief_obj), target v2dpar
Integral of bases in parallel.
type(bief_obj), target boundary_colour
Last column of the boundary condition file.
type(bief_obj), pointer t11
type(bief_obj), pointer t9
type(bief_obj), target emax
Maximum evolution to be defined by the user for automatic.
type(bief_obj), pointer t3
double precision, dimension(:), allocatable conc_mud_activ_layer
Concentation of mud in active layer (array defined for temporary work in some subroutines) ...
double precision, dimension(:), allocatable sanfra
sand fraction for Wilcock & Crowe transport formula
type(bief_obj), target flbcla
Fluxes at boundary for every class.
Definition: bief.f:3
type(bief_obj), target mtransfer
Mass transfer for consolidation between layers (for output variables)
type(bief_obj), target maskpt
Mask on points.