The TELEMAC-MASCARET system  trunk
point_sisyphe.f
Go to the documentation of this file.
1 ! ************************
2  SUBROUTINE point_sisyphe
3 ! ************************
4 !
5 !
6 !***********************************************************************
7 ! SISYPHE V8P0 18/09/2018
8 !***********************************************************************
9 !
10 !brief ALLOCATES STRUCTURES.
11 !
12 !history C. LENORMANT; J.-M. HERVOUET
13 !+ 11/09/1995
14 !+
15 !+
16 !
17 !history C. MACHET
18 !+ 10/06/2002
19 !+
20 !+
21 !
22 !history JMH
23 !+ 16/06/2008
24 !+
25 !+ ADDED BOUNDARY_COLOUR
26 !
27 !history JMH
28 !+ 16/09/2009
29 !+
30 !+ AVAIL(NPOIN,10,NSICLA)
31 !
32 !history JMH
33 !+ 18/09/2009
34 !+ V6P0
35 !+ SEE AVAI AND LAYTHI
36 !
37 !history JMH
38 !+ 19/08/2010
39 !+ V6P0
40 !+ SEE MS_VASE (FOR MIXED SEDIMENTS)
41 !
42 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
43 !+ 13/07/2010
44 !+ V6P0
45 !+ Translation of French comments within the FORTRAN sources into
46 !+ English comments
47 !
48 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
49 !+ 21/08/2010
50 !+ V6P0
51 !+ Creation of DOXYGEN tags for automated documentation and
52 !+ cross-referencing of the FORTRAN sources
53 !
54 !history MAK (HRW)
55 !+ 31/05/2012
56 !+ V6P2
57 !+ Added bief object for CSRATIO
58 !
59 !history JWI (HRW)
60 !+ 31/05/2012
61 !+ V6P2
62 !+ Added line to use wave orbital velocities directly if found in hydro file
63 !
64 !history PAT (LNHE)
65 !+ 18/06/2012
66 !+ V6P2
67 !+ updated version with HRW's development
68 !
69 !history CV (LNHE)
70 !+ 01/07/2012
71 !+ V6P2
72 !+ added bloc ZFCL_MS for evolution for each class due to sloping bed effects
73 !
74 !history J-M HERVOUET (EDF R&D, LNHE)
75 !+ 08/03/2013
76 !+ V6P3
77 !+ Allocation of ZFCL_MS under condition of SLIDE.
78 !
79 !history R KOPMANN (BAW)
80 !+ 10/05/2016
81 !+ V7P2
82 ! + CALFA,SALFA dependent of grain classes
83 !
84 !!history P TASSI, F CORDIER, S PAVAN
85 !+ 18/09/2018
86 !+ V8P0
87 ! + Allocates memory for SANFRA
88 !
89 !history B.GLANDER (BAW)
90 !+ 06/12/2018
91 !+ V7P2
92 !+ add new variable ZRL (reference level for Nestor)
93 !
94 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95 !
96  USE bief
99  IMPLICIT NONE
100 
101 
102  ! 2/ LOCAL VARIABLES
103  ! ------------------
104  INTEGER :: I,K,NTR,IELM0,IELM1,IELBT,IELM0_SUB
105  INTEGER :: CFG(2),CFGBOR(2)
106 
107 !-----------------------------------------------------------------------
108 !
109 !-----------------------------------------------------------------------
110 
111  WRITE(lu,12)
112 
113  ! ************************************** !
114  ! I - DISCRETISATION AND TYPE OF STORAGE !
115  ! ************************************** !
116  ! IELMT, IELMH_SIS AND IELMU_SIS HARD-CODED IN LECDON
117  ielm0 = 10
118  ielm1 = 11
119  ielbt = ielbor(ielmt,1)
120  ielm0_sub = 10*(ielmt/10)
121 
122  cfg(1) = optass
123  cfg(2) = produc
124  cfgbor(1) = 1 ! CFG IMPOSED FOR BOUNDARY MATRICES
125  cfgbor(2) = 1 ! CFG IMPOSED FOR BOUNDARY MATRICES
126 
127  IF(vf) equa(1:15)='SAINT-VENANT VF'
128 
129  ! ******************************************* !
130  ! II - ALLOCATES THE MESH STRUCTURE !
131  ! ******************************************* !
132  IF(.NOT.(ASSOCIATED(mesh%X))) THEN
133  CALL almesh(mesh,'MESH_S',ielmt,spheri,cfg,
134  & sis_files(sisgeo)%FMT,sis_files(sisgeo)%LU,equa,
135  & 0)
136  END IF
137 
138  ikle => mesh%IKLE
139  x => mesh%X%R
140  y => mesh%Y%R
141  nelem => mesh%NELEM
142  nelmax=> mesh%NELMAX
143  nptfr => mesh%NPTFR
144  nptfrx=> mesh%NPTFRX
145  typelm=> mesh%TYPELM
146  npoin => mesh%NPOIN
147  npmax => mesh%NPMAX
148  mxptvs=> mesh%MXPTVS
149  mxelvs=> mesh%MXELVS
150  lv => mesh%LV
151 
152 
153  ! ******************** !
154  ! III - REAL ARRAYS !
155  ! ******************** !
156  CALL bief_allvec(1,s , 'S ', 0 , 1, 1,mesh) ! VOID STRUCTURE
157  CALL bief_allvec(1,e , 'E ', ielmt, 1, 2,mesh) ! RESULT
158  CALL bief_allvec(1,z , 'Z ', ielmt, 1, 2,mesh) ! RESULT
159  CALL bief_allvec(1,del_z , 'DEL_Z ', ielmt, 1, 2,mesh) ! INCREMENT OF Z IF HYDRO
160  CALL bief_allvec(1,zf_c , 'ZF_C ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
161  CALL bief_allvec(1,zf_s , 'ZF_S ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
162  CALL bief_allvec(1,esomt , 'ESOMT ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
163  CALL bief_allvec(1,emax , 'EMAX ', ielmt, 1, 2,mesh) ! VARIABLES E SUMMED UP
164  CALL bief_allvec(1,q , 'Q ', ielmt, 1, 2,mesh) ! FLOWRATE
165  CALL bief_allvec(1,qu , 'QU ', ielmt, 1, 2,mesh) ! X FLOWRATE
166  CALL bief_allvec(1,qv , 'QV ', ielmt, 1, 2,mesh) ! Y FLOWRATE
167  CALL bief_allvec(1,del_qu, 'DEL_QU', ielmt, 1, 2,mesh) ! INCREMENT OF QU IF HYDRO
168  CALL bief_allvec(1,del_qv, 'DEL_QV', ielmt, 1, 2,mesh) ! INCREMENT OF QV IF HYDRO
169  CALL bief_allvec(1,del_uw, 'DEL_UW', ielmt, 1, 2,mesh) ! INCREMENT OF QV IF HYDRO
170  CALL bief_allvec(1,u2d , 'U2D ', ielmt, 1, 2,mesh) ! X VELOCITY
171  CALL bief_allvec(1,v2d , 'V2D ', ielmt, 1, 2,mesh) ! Y VELOCITY
172  CALL bief_allvec(1,qs , 'QS ', ielmt, 1, 2,mesh) ! TRANSPORT RATE
173  CALL bief_allvec(1,qsx , 'QSX ', ielmt, 1, 2,mesh) ! X TRANSPORT RATE
174  CALL bief_allvec(1,qsy , 'QSY ', ielmt, 1, 2,mesh) ! Y TRANSPORT RATE
175  CALL bief_allvec(1,qs_c , 'QS_C ', ielmt, 1, 2,mesh) ! BEDLOAD RATE
176  CALL bief_allvec(1,qsxc , 'QSXC ', ielmt, 1, 2,mesh) ! X BEDLOAD RATE
177  CALL bief_allvec(1,qsyc , 'QSYC ', ielmt, 1, 2,mesh) ! Y BEDLOAD RATE
178  CALL bief_allvec(1,qs_s , 'QS_S ', ielmt, 1, 2,mesh) ! SUSPENSION RATE
179  CALL bief_allvec(1,qsxs , 'QSXS ', ielmt, 1, 2,mesh) ! X SUSPENSION RATE
180  CALL bief_allvec(1,qsys , 'QSYS ', ielmt, 1, 2,mesh) ! Y SUSPENSION RATE
181  CALL bief_allvec(1,hiding, 'HIDING', ielmt, 1, 2,mesh) ! HIDING FACTOR
182  CALL bief_allvec(1,zf , 'ZF ', ielmt, 1, 2,mesh) ! BED ELEVATIONS
183  CALL bief_allvec(1,zr , 'ZR ', ielmt, 1, 2,mesh) ! NON-ERODABLE BED ELEVATIONS
184  CALL bief_allvec(1,radsec, 'RADSEC', ielmt, 1, 2,mesh) ! RADIUS SECONDARY CURRENTS
185  CALL bief_allvec(1,zref , 'ZREF ', ielmt, 1, 2,mesh) ! REFERENCE ELEVATION
186  CALL bief_allvec(1,chestr, 'CHESTR', ielmt, 1, 2,mesh) ! FRICTION COEFFICIENT
187  CALL bief_allvec(1,coefpn, 'COEFPN', ielmt, 1, 2,mesh) ! SLOPE EFFECT
188  CALL bief_allvec(1,cf , 'CF ', ielmt, 1, 2,mesh) ! ADIMENSIONAL FRICTION
189  CALL bief_allvec(1,tob , 'TOB ', ielmt, 1, 2,mesh) ! TOTAL FRICTION
190  CALL bief_allvec(1,tobw , 'TOBW ', ielmt, 1, 2,mesh) ! WAVE VARIABLE
191  CALL bief_allvec(1,mu , 'MU ', ielmt, 1, 2,mesh) ! SKIN FRICTION
192  CALL bief_allvec(1,ksp , 'KSP ', ielmt, 1, 2,mesh) ! SKIN ROUGHNESS
193  CALL bief_allvec(1,ks , 'KS ', ielmt, 1, 2,mesh) ! TOTAL ROUGHNESS
194  CALL bief_allvec(1,ksr , 'KSR ', ielmt, 1, 2,mesh) ! RIPPLE INDUCED ROUGHNESS
195  CALL bief_allvec(1,thetaw, 'THETAW', ielmt, 1, 2,mesh) ! WAVE VARIABLE
196  CALL bief_allvec(1,fw , 'FW ', ielmt, 1, 2,mesh) ! WAVE VARIABLE
197  CALL bief_allvec(1,uw , 'UW ', ielmt, 1, 2,mesh) ! WAVE VARIABLE
198  CALL bief_allvec(1,hw , 'HW ', ielmt, 1, 2,mesh)
199  CALL bief_allvec(1,tw , 'TW ', ielmt, 1, 2,mesh)
200  CALL bief_allvec(1,dzf_gf, 'DZF_GF', ielmt, 1, 2,mesh) ! BED LEVEL CHANGE FOR GRAIN-FEEDING
201  CALL bief_allvec(1,acladm, 'ACLADM', ielmt, 1, 2,mesh) ! MEAN DIAMETER IN ACTIVE LAYER
202  CALL bief_allvec(1,unladm, 'UNLADM', ielmt, 1, 2,mesh) ! MEAN DIAMETER IN 2ND LAYER
203  CALL bief_allvec(1,hcpl , 'HCPL ', ielmt, 1, 2,mesh) ! WATER DEPTH SAVED FOR CONSTANT FLOW DISCHARGE
204  CALL bief_allvec(1,ecpl , 'ECPL ', ielmt, 1, 2,mesh) ! EVOLUTION SAVED FOR CONSTANT FLOW DISCHARGE
205  CALL bief_allvec(1,elay , 'ELAY ', ielmt, 1, 2,mesh) ! ACTIVE LAYER THICKNESS
206  CALL bief_allvec(1,estrat, 'ESTRAT', ielmt, 1, 2,mesh) ! 2ND LAYER THICKNESS
207  CALL bief_allvec(1,kx , 'KX ', ielmt, 1, 1,mesh)
208  CALL bief_allvec(1,ky , 'KY ', ielmt, 1, 1,mesh)
209  CALL bief_allvec(1,kz , 'KZ ', ielmt, 1, 1,mesh)
210  CALL bief_allvec(1,uconv , 'UCONV ', ielmt, 1, 1,mesh)
211  CALL bief_allvec(1,vconv , 'VCONV ', ielmt, 1, 1,mesh)
212  CALL bief_allvec(1,unorm , 'UNORM ', ielmt, 1, 2,mesh)
213  CALL bief_allvec(1,disp , 'DISP ', ielmt, 3, 1,mesh)
214  CALL bief_allvec(1,disp_c, 'DISP_C', ielmt, 3, 1,mesh)
215  CALL bief_allvec(1,maskb , 'MASKB ', ielm0, 1, 2,mesh)
216  CALL bief_allvec(1,mask , 'MASK ', ielbt, 1, 2,mesh)
217  CALL bief_allvec(1,afbor , 'AFBOR ', ielbt, 1, 1,mesh)
218  CALL bief_allvec(1,bfbor , 'BFBOR ', ielbt, 1, 1,mesh)
219  CALL bief_allvec(1,flbor , 'FLBOR ', ielbt, 1, 1,mesh)
220  CALL bief_allvec(1,q2bor , 'Q2BOR ', ielbt, 1, 1,mesh)
221  CALL bief_allvec(1,zrl , 'ZRL ', ielmt, 1, 2,mesh) ! reference level for Nestor
222 !
223 ! BOUNDARY FLUX FOR CALL TO CVDFTR
224  CALL bief_allvec(1,flbor_sis , 'FLBORS', ielbt, 1, 1,mesh)
225  CALL bief_allvec(1,flbortra , 'FLBTRA', ielbt, 1, 1,mesh)
226  CALL bief_allvec(1,cstaeq, 'CSTAEQ', ielmt, 1, 2,mesh)
227 ! MAK ADDITION
228  CALL bief_allvec(1,csratio, 'CSRATIO', ielmt, 1, 2,mesh)
229  CALL bief_allvec(1,hn , 'HN ', ielmh_sis, 1, 2,mesh) ! WATER DEPTH
230  CALL bief_allvec(1,hclip , 'HCLIP ', ielmh_sis, 1, 2,mesh) ! CLIPPING WATER DEPTH
231  CALL bief_allvec(1,hprop , 'HPROP ', ielmh_sis, 1, 1,mesh)
232  CALL bief_allvec(1,volu2d, 'VOLU2D', ielmh_sis, 1, 1,mesh)
233  CALL bief_allvec(1,v2dpar, 'V2DPAR', ielmh_sis, 1, 1,mesh)
234  CALL bief_allvec(1,unsv2d, 'UNSV2D', ielmh_sis, 1, 1,mesh)
235  CALL bief_allvec(1,mpm_aray,'MPMARAY', ielmt, 1, 2,mesh) ! MPM Array
236  CALL bief_allvec(1,flulim ,'FLULIM' ,mesh%NSEG,1,0,mesh)
237 !
238  IF(msk) THEN
239  CALL bief_allvec(1,maskel,'MASKEL', ielm0 , 1 , 2 ,mesh)
240  CALL bief_allvec(1,msktmp,'MSKTMP', ielm0 , 1 , 2 ,mesh)
241  CALL bief_allvec(1,maskpt,'MASKPT', ielmt , 1 , 2 ,mesh)
242  ELSE
243  CALL bief_allvec(1,maskel,'MASKEL', 0 , 1 , 0 ,mesh)
244  CALL bief_allvec(1,msktmp,'MSKTMP', 0 , 1 , 0 ,mesh)
245  CALL bief_allvec(1,maskpt,'MASKPT', 0 , 1 , 0 ,mesh)
246  ENDIF
247 !
248 ! FOR MIXED SEDIMENTS
249 !
250  IF(sedco(1).OR.sedco(2)) THEN
251 ! replacement of NCOUCH_TASS in NOMBLAY
252 !
253  CALL bief_allvec(1,fluer_vase,'FRMIXT',ielmt,1,2,mesh)
254  CALL bief_allvec(1,toce_mixte ,'TCMIXT',
255  & ielmt,nomblay,2,mesh)
256  CALL bief_allvec(1,ms_sable ,'MSSABL',
257  & ielmt,nomblay,2,mesh)
258  CALL bief_allvec(1,ms_vase ,'MSVASE',
259  & ielmt,nomblay,2,mesh)
260  ELSE
261  CALL bief_allvec(1,fluer_vase ,'FRMIXT',0,1,0,mesh)
262  CALL bief_allvec(1,toce_mixte ,'TCMIXT',0,1,0,mesh)
263  CALL bief_allvec(1,ms_sable ,'MSSABL',0,1,0,mesh)
264  CALL bief_allvec(1,ms_vase ,'MSVASE',0,1,0,mesh)
265  ENDIF
266  ! *********************** !
267  ! IV - INTEGER ARRAYS ! (_IMP_)
268  ! *********************** !
269  CALL bief_allvec(2, liebor, 'LIEBOR', ielbor(ielm1,1), 1, 1,mesh)
270  CALL bief_allvec(2, liqbor, 'LIQBOR', ielbor(ielm1,1), 1, 1,mesh)
271  CALL bief_allvec(2, limtec, 'LIMTEC', ielbor(ielm1,1), 1, 1,mesh)
272  CALL bief_allvec(2, numliq, 'NUMLIQ', ielbor(ielm1,1), 1, 1,mesh)
273  CALL bief_allvec(2, clt , 'CLT ', ielbor(ielmt,1), 1, 1,mesh)
274  CALL bief_allvec(2, clu , 'CLU ', ielbor(ielmt,1), 1, 1,mesh)
275  CALL bief_allvec(2, clv , 'CLV ', ielbor(ielmt,1), 1, 1,mesh)
276  CALL bief_allvec(2, limdif, 'LIMDIF', ielbor(ielmt,1), 1, 1,mesh)
277  CALL bief_allvec(2, licbor, 'LICBOR', ielbor(ielmt,1), 1, 1,mesh)
278  CALL bief_allvec(2, lihbor, 'LIHBOR', ielbor(ielmt,1), 1, 1,mesh)
280  & 'BNDCOL', ielbor(ielmt,1), 1, 1,mesh)
281  CALL bief_allvec(2, limpro, 'LIMPRO', ielbor(ielmt,1), 6, 1,mesh)
282  CALL bief_allvec(2, indic , 'INDIC ', ielm1 , 1, 1,mesh)
283  CALL bief_allvec(2, it1 , 'IT1 ', ielm1 , 1, 2,mesh)
284  CALL bief_allvec(2, it2 , 'IT2 ', ielm1 , 1, 2,mesh)
285  CALL bief_allvec(2, it3 , 'IT3 ', ielm1 , 1, 2,mesh)
286  CALL bief_allvec(2, it4 , 'IT4 ', ielm1 , 1, 2,mesh)
287 ! NUMBER OF LAYERS
288  CALL bief_allvec(2, nlayer, 'NLAYE ', ielmt , 1, 2,mesh)
289 
290  IF(vf) THEN
291  CALL bief_allvec(2,breach,'BREACH',ielm1,1,2,mesh)
292  ELSE
293  CALL bief_allvec(2,breach,'BREACH',0,1,0,mesh)
294  ENDIF
295 
296  IF(msk) THEN
297  CALL bief_allvec(2,ifamas,'IFAMAS',
298  & ielm0,bief_nbfel(ielm0,mesh),1,mesh)
299  ELSE
300  CALL bief_allvec(2,ifamas,'IFAMAS',0,1,0,mesh)
301  ENDIF
302 
303  ! ******************* !
304  ! V - BLOCK OF ARRAYS !
305  ! ******************* !
306  ALLOCATE(avail(npoin,nomblay,nsicla)) ! FRACTION OF EACH CLASS FOR EACH LAYER
307  ALLOCATE(es(npoin,nomblay)) ! THICKNESS OF EACH CLASS
308  ALLOCATE(es_sable(npoin,nomblay)) ! THICKNESS OF EACH CLASS
309  ALLOCATE(es_vase(npoin,nomblay)) ! THICKNESS OF EACH CLASS
310  ALLOCATE(conc(npoin,nomblay)) ! THICKNESS OF EACH CLASS
311 !
312  ALLOCATE(ivide(npoin,nomblay+1)) ! FRACTION OF EACH CLASS FOR EACH LAYER
313 !
314  ALLOCATE(sanfra(npoin)) ! SAND FRACTION CONTENT
315 !
316 !
317  CALL allblo(masktr, 'MASKTR') ! MASK OF THE BOUNDARY CONDITIONS
318  CALL allblo(ebor , 'EBOR ') ! BOUNDARY CONDITIONS
319  CALL allblo(qbor , 'QBOR ') ! BOUNDARY CONDITIONS
320  CALL allblo(avai , 'AVAI ') ! FRACTION OF EACH CLASS FOR THE TWO FIRST LAYERS
321  CALL allblo(laythi, 'LAYTHI') ! LAYER THICKNESSES
322  CALL allblo(layconc, 'LAYCONC') ! LAYER THICKNESSES
323 !
324  CALL allblo(qscl , 'QSCL ') ! TRANSPORT RATE FOR EACH CLASS
325  CALL allblo(qscl_c, 'QSCL_C') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS
326  CALL allblo(qsclxc, 'QSCLXC') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS ALONG X
327  CALL allblo(qsclyc, 'QSCLYC') ! BEDLOAD TRANSPORT RATE FOR EACH CLASS ALONG Y
328  CALL allblo(zfcl , 'ZFCL ') ! EVOLUTION FOR EACH CLASS
329  CALL allblo(zfcl_c, 'ZFCL_C') ! EVOLUTION FOR EACH CLASS DUE TO BEDLOAD TRANSPORT
330 !
331  CALL allblo(cbor , 'CBOR ') ! BOUNDARY CONDITIONS
332  CALL allblo(qscl_s, 'QSCL_S') ! SUSPENDED TRANSPORT RATE FOR EACH CLASS
333  CALL allblo(qsclxs, 'QSCLXS') ! SUSPENDED TRANSPORT RATE FOR EACH CLASS ALONG X
334  CALL allblo(qsclys, 'QSCLYS') ! SUSPENDED TRANSPORT RATE FOR EACH CLASS ALONG Y
335  CALL allblo(zfcl_s, 'ZFCL_S') ! EVOLUTION FOR EACH CLASS DUE TO SUSPENDED TRANSPORT
336  CALL allblo(fludp , 'FLUDP ') ! DEPOSITION FLUX
337  CALL allblo(fludpt, 'FLUDPT') ! DEPOSITION FLUX FOR IMPLICITATION
338  CALL allblo(fluer , 'FLUER ') ! EROSION FLUX
339  CALL allblo(fluert, 'FLUERT') ! EROSION FLUX FOR IMPLICITATION
340  CALL allblo(cs , 'CS ') ! CONCENTRATION AT TIME N
341  CALL allblo(ctild , 'CTILD ') ! CONCENTRATION AT TIME N+1/2 (=> ADVECTION STEP)
342  CALL allblo(cst , 'CST ') ! CONCENTRATION AT TIME N+1 (=> RESULT)
343 !
344  CALL allblo(zfcl_ms, 'ZFCL_MS') ! EVOLUTION FOR EACH CLASS DUE TO SLOPING BED EFFECTS
345  CALL allblo(calfa_cl, 'CALFA ') ! CALFA FOR EACH CLASS
346  CALL allblo(salfa_cl, 'SALFA ') ! SALFA FOR EACH CLASS
347 !
348  CALL bief_allvec_in_block(masktr,5 ,1,'MSKTR ',ielbt,1,2,mesh)
349  CALL bief_allvec_in_block(ebor ,nsicla,1,'EBOR ',ielbt,1,2,mesh)
350  CALL bief_allvec_in_block(qbor ,nsicla,1,'QBOR ',ielbt,1,2,mesh)
351 !
352 ! FLUXES AT BOUNDARY FOR EVERY CLASS
353 !
354  CALL allblo(flbcla,'FLBCLA')
355  CALL bief_allvec_in_block(flbcla,nsicla,1,'FLBC ',ielbt,1,2,mesh)
356 !
357 ! AVAI ALLOCATED WITH SIZE 0 AND POINTING TO
358 ! RELEVANT SECTIONS OF AVAIL
359 !
361  & 1,'AVAI ',0,1,0,mesh)
362  DO i=1,nsicla
363  DO k=1,nomblay
364  DEALLOCATE(avai%ADR(k+(i-1)*nomblay)%P%R)
365  avai%ADR(k+(i-1)*nomblay)%P%R=>avail(1:npoin,k,i)
366  avai%ADR(k+(i-1)*nomblay)%P%MAXDIM1=npoin
367  avai%ADR(k+(i-1)*nomblay)%P%DIM1=npoin
368  ENDDO
369  ENDDO
370 !
371 ! LAYTHI ALLOCATED WITH SIZE 0 AND POINTING TO RELEVANT SECTIONS OF ES
372 !
373  CALL bief_allvec_in_block(laythi,nomblay,1,'LAYTHI',0,1,0,mesh)
374  DO k=1,nomblay
375  DEALLOCATE(laythi%ADR(k)%P%R)
376  laythi%ADR(k)%P%R=>es(1:npoin,k)
377  laythi%ADR(k)%P%MAXDIM1=npoin
378  laythi%ADR(k)%P%DIM1=npoin
379  ENDDO
380 !
381 ! LAYCONC ALLOCATED WITH SIZE 0 AND POINTING TO RELEVANT SECTIONS OF ES
382 !
383  CALL bief_allvec_in_block(layconc,nomblay,1,'LAYCONC',0,1,0,mesh)
384  DO k=1,nomblay
385  DEALLOCATE(layconc%ADR(k)%P%R)
386  layconc%ADR(k)%P%R=>conc(1:npoin,k)
387  layconc%ADR(k)%P%MAXDIM1=npoin
388  layconc%ADR(k)%P%DIM1=npoin
389  ENDDO
390 !
391  CALL bief_allvec_in_block(qscl ,nsicla,1,'QSCL ',ielmt,1,2,mesh)
392  CALL bief_allvec_in_block(qscl_c,nsicla,1,'QSCL_C',ielmt,1,2,mesh)
393  CALL bief_allvec_in_block(qsclxc,nsicla,1,'QSCLXC',ielmt,1,2,mesh)
394  CALL bief_allvec_in_block(qsclyc,nsicla,1,'QSCLYC',ielmt,1,2,mesh)
395  CALL bief_allvec_in_block(zfcl ,nsicla,1,'ZFCL ',ielmt,1,2,mesh)
396  CALL bief_allvec_in_block(zfcl_c,nsicla,1,'ZFCL_C',ielmt,1,2,mesh)
397  CALL bief_allvec_in_block(calfa_cl,nsicla,1,'CALFA ',
398  & ielmt,1,2,mesh)
399  CALL bief_allvec_in_block(salfa_cl,nsicla,1,'SALFA ',
400  & ielmt,1,2,mesh)
401  CALL bief_allvec_in_block(cbor ,nsicla,1,'CBOR ',ielbt,1,2,mesh)
402  CALL bief_allvec_in_block(qscl_s,nsicla,1,'QSCL_S',ielmt,1,2,mesh)
403  CALL bief_allvec_in_block(qsclxs,nsicla,1,'QSCLXS',ielmt,1,2,mesh)
404  CALL bief_allvec_in_block(qsclys,nsicla,1,'QSCLYS',ielmt,1,2,mesh)
405  CALL bief_allvec_in_block(zfcl_s,nsicla,1,'ZFCL_S',ielmt,1,2,mesh)
406  CALL bief_allvec_in_block(fludp ,nsicla,1,'FLUDP ',ielmt,1,2,mesh)
407  CALL bief_allvec_in_block(fludpt,nsicla,1,'FLUDPT',ielmt,1,2,mesh)
408  CALL bief_allvec_in_block(fluer ,nsicla,1,'FLUER ',ielmt,1,2,mesh)
409  CALL bief_allvec_in_block(fluert,nsicla,1,'FLUERT',ielmt,1,2,mesh)
410  CALL bief_allvec_in_block(cs ,nsicla,1,'CS ',ielmt,1,2,mesh)
411  CALL bief_allvec_in_block(ctild ,nsicla,1,'CTILD ',ielmt,1,2,mesh)
412  CALL bief_allvec_in_block(cst ,nsicla,1,'CST ',ielmt,1,2,mesh)
413 !
414  IF(slide) THEN
416  & 'ZFCLMS',ielmt,1,2,mesh)
417  ELSE
419  & 'ZFCLMS', 0,1,0,mesh)
420  ENDIF
421 !
422 ! *************
423 ! VI - MATRICES
424 ! *************
425 !
426 !
427  CALL bief_allmat(am1_s,'AM1_S ',ielmt,ielmt,cfg ,'Q','Q',mesh) ! SUSPENSION WORK MATRIX
428  CALL bief_allmat(am2_s,'AM2_S ',ielmt,ielmt,cfg ,'Q','Q',mesh) ! SUSPENSION WORK MATRIX
429  CALL bief_allmat(mbor ,'MBOR ',ielbt,ielbt,cfgbor,'Q','Q',mesh) ! SUSPENSION BOUNDRAY MATRIX
430 !
431 !
432 ! ******************
433 ! VII - OTHER ARRAYS
434 ! ******************
435 !
436 ! NTR SHOULD AT LEAST BE THE NUMBER OF VARIABLES IN VARSOR THAT WILL BE READ IN
437 ! VALIDA. HERE UP TO THE LAYER THICKNESSES
438 !
439  ntr = 27+(nomblay+4)*nsicla+2*nomblay+npriv
440  IF(slvsed%SLV == 7) ntr = max(ntr,2+2*slvsed%KRYLOV)
441  IF(slvtra%SLV == 7) ntr = max(ntr,2+2*slvtra%KRYLOV)
442  IF(3*(slvsed%PRECON/3) == slvsed%PRECON) ntr = ntr + 2 ! IF PRECOND. BLOC-DIAG (+2 DIAG)
443  IF(3*(slvtra%PRECON/3) == slvtra%PRECON) ntr = ntr + 2 ! IF PRECOND. BLOC-DIAG (+2 DIAG)
444 !
445 ! W1 NO LONGER USED (IS SENT TO CVDFTR BUT CVDFTR DOES NOTHING WITH IT)
446  CALL bief_allvec(1, w1 , 'W1 ', ielm0 , 1,1,mesh) ! WORK ARRAY
447  CALL bief_allvec(1, te1, 'TE1 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
448  CALL bief_allvec(1, te2, 'TE2 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
449  CALL bief_allvec(1, te3, 'TE3 ', ielm0_sub, 1,1,mesh) ! WORK ARRAY BY ELEMENT
450 !
451  CALL allblo(varcl, 'VARCL ') ! CLANDESTINE VARIABLES
452  CALL allblo(prive, 'PRIVE ') ! USER ARRAY
453  CALL allblo(tb , 'TB ') ! WORKING ARRAY
454  CALL bief_allvec_in_block(tb ,ntr ,1,'T ',ielmt,1,2,mesh)
455 ! A SECOND BLOCK FOR ADVECTION, SEE CVTRVF AND HARDCODED SOLVER 4
456  CALL allblo(tb2 , 'TB2 ') ! WORKING ARRAY
457  IF(optadv.EQ.4) THEN
458  CALL bief_allvec_in_block(tb2 ,7 ,1,'T ',ielmt,1,2,mesh)
459  ELSE
460  CALL bief_allvec_in_block(tb2 ,7 ,1,'T ',0 ,1,0,mesh)
461  ENDIF
462 !
463  CALL bief_allvec_in_block(varcl,nvarcl,1,'CL ',ielmt,1,2,mesh)
464  IF(npriv.GT.0) THEN
465  CALL bief_allvec_in_block(prive,max(npriv,4),
466  & 1,'PRIV ',ielmt,1,2,mesh)
467  ELSE
468  CALL bief_allvec_in_block(prive,4,1,'PRIV ',0,1,0,mesh)
469  ENDIF
470 ! TO AVOID WRITING NON-INITIALISED ARRAYS TO FILES
471  CALL os('X=0 ',x=prive)
472 !
473  ! ************ !
474  ! VIII - ALIAS !
475  ! ************ !
476 !
477  t1 => tb%ADR( 1)%P ! WORK ARRAY
478  t2 => tb%ADR( 2)%P ! WORK ARRAY
479  t3 => tb%ADR( 3)%P ! WORK ARRAY
480  t4 => tb%ADR( 4)%P ! WORK ARRAY
481  t5 => tb%ADR( 5)%P ! WORK ARRAY
482  t6 => tb%ADR( 6)%P ! WORK ARRAY
483  t7 => tb%ADR( 7)%P ! WORK ARRAY
484  t8 => tb%ADR( 8)%P ! WORK ARRAY
485  t9 => tb%ADR( 9)%P ! WORK ARRAY
486  t10 => tb%ADR(10)%P ! WORK ARRAY
487  t11 => tb%ADR(11)%P ! WORK ARRAY
488  t12 => tb%ADR(12)%P ! WORK ARRAY
489  t13 => tb%ADR(13)%P ! WORK ARRAY
490  t14 => tb%ADR(14)%P ! WORK ARRAY
491 !
492 ! **************************************************************
493 ! IX - ALLOCATES A BLOCK CONNECTING A VARIABLE NAME TO ITS ARRAY
494 ! **************************************************************
495 !
496  CALL allblo(varsor, 'VARSOR')
497  CALL addblo(varsor, u2d ) ! 01
498  CALL addblo(varsor, v2d ) ! 02
499  CALL addblo(varsor, hn ) ! 03
500  CALL addblo(varsor, z ) ! 04
501  CALL addblo(varsor, zf ) ! 05
502  CALL addblo(varsor, q ) ! 06
503  CALL addblo(varsor, qu ) ! 07
504  CALL addblo(varsor, qv ) ! 08
505  CALL addblo(varsor, zr ) ! 09
506  CALL addblo(varsor, chestr) ! 10
507  CALL addblo(varsor, tob ) ! 11
508  CALL addblo(varsor, hw ) ! 12
509  CALL addblo(varsor, tw ) ! 13
510  CALL addblo(varsor, thetaw) ! 14
511  CALL addblo(varsor, qs ) ! 15
512  CALL addblo(varsor, qsx ) ! 16
513  CALL addblo(varsor, qsy ) ! 17
514  CALL addblo(varsor, esomt ) ! 18
515  CALL addblo(varsor, ks) ! 19
516  CALL addblo(varsor, mu) ! 20
517  CALL addblo(varsor, acladm) ! 21
518  CALL addblo(varsor, uw ) ! 22
519  CALL addblo(varsor, zrl ) ! 23 reference level for Nestor
520 
521 !
522 ! THE LAST RANK IN VARSOR (SO FAR NVAR)
523 !
524  IF(nvar_sis.NE.varsor%N) THEN
525  WRITE(lu,*) 'MESSAGE TO DEVELOPPERS:'
526  WRITE(lu,*) 'NVAR_SIS DIFFERENT THAN VARSOR SIZE ',varsor%N
527  WRITE(lu,*) 'IN POINT_SISYPHE'
528  CALL plante(1)
529  stop
530  ENDIF
531 
532 ! AVAI: FROM NVAR_SIS+1 TO NVAR_SIS+NOMBLAY*NSICLA
533 !
534  DO i = 1,nomblay*nsicla
535  CALL addblo(varsor, avai%ADR(i)%P)
536  ENDDO
537 ! QSCL: FROM NVAR_SIS+1+NOMBLAY*NSICLA TO NVAR_SIS+(NOMBLAY+1)*NSICLA
538 !
539  DO i = 1, nsicla
540  CALL addblo(varsor, qscl%ADR(i)%P)
541  ENDDO
542 !
543 ! CS: FROM NVAR_SIS+1+(NOMBLAY+1)*NSICLA TO NVAR_SIS+(NOMBLAY+2)*NSICLA
544 !
545  DO i=1,nsicla
546  CALL addblo(varsor, cs%ADR(i)%P)
547  ENDDO
548  CALL addblo(varsor,qs_c) ! NVAR_SIS+1+(NOMBLAY+2)*NSICLA
549  CALL addblo(varsor,qsxc) ! NVAR_SIS+2+(NOMBLAY+2)*NSICLA
550  CALL addblo(varsor,qsyc) ! NVAR_SIS+3+(NOMBLAY+2)*NSICLA
551  CALL addblo(varsor,qs_s) ! NVAR_SIS+4+(NOMBLAY+2)*NSICLA
552  CALL addblo(varsor,qsxs) ! NVAR_SIS+5+(NOMBLAY+2)*NSICLA
553  CALL addblo(varsor,qsys) ! NVAR_SIS+6+(NOMBLAY+2)*NSICLA
554 !
555 ! QSCL_C: FROM NVAR_SIS+6+1+(NOMBLAY+2)*NSICLA TO NVAR_SIS+6+(NOMBLAY+3)*NSICLA
556 !
557  DO i=1,nsicla
558  CALL addblo(varsor,qscl_c%ADR(i)%P)
559  ENDDO
560 !
561 ! QSCL_S: FROM NVAR_SIS+6+1+(NOMBLAY+3)*NSICLA TO NVAR_SIS+6+(NOMBLAY+4)*NSICLA
562 !
563  DO i=1,nsicla
564  CALL addblo(varsor,qscl_s%ADR(i)%P)
565  ENDDO
566 !
567 ! LAYTHI: FROM NVAR_SIS+6+1+(NOMBLAY+4)*NSICLA TO NVAR_SIS+6+(NOMBLAY+4)*NSICLA+NOMBLAY
568 !
569  DO i=1,nomblay
570  CALL addblo(varsor,laythi%ADR(i)%P)
571  ENDDO
572 !
573 ! CONC FROM NVAR_SIS+6+1+(NOMBLAY+4)*NSICLA+NOMBLAY TO NVAR_SIS+6+(NOMBLAY+4)*NSICLA+2*NOMBLAY
574 !
575  DO i=1,nomblay
576  CALL addblo(varsor,layconc%ADR(i)%P)
577  ENDDO
578 !
579 ! PRIVE: FROM NVAR_SIS+6+1+(NOMBLAY+4)*NSICLA+2*NOMBLAY TO
580 ! NVAR_SIS+6+(NOMBLAY+4)*NSICLA+MAX(4,NPRIV)+2*NOMBLAY
581 !
582  DO i=1,max(4,npriv)
583  CALL addblo(varsor,prive%ADR(i)%P)
584  ENDDO
585 !
586  IF(varcl%N.GT.0) THEN
587  DO i=1,varcl%N
588  CALL addblo(varsor,varcl%ADR(i)%P)
589 ! added 1 to include wave orbital velocities
590 ! SORLEO(27+MAX(4,NPRIV)+NSICLA*(NOMBLAY+4)+NOMBLAY+I)=.TRUE.
591  ! 28+1; reference level for Nestor
592  sorleo(29+max(4,npriv)+nsicla*(nomblay+4)+2*nomblay+i)=.true.
593  ENDDO
594  ENDIF
595 !
596 ! BLOCK OF DIFFERENTIATED VARIABLES
597 ! ARRAYS AD1, AD2, ... MUST EXIST BUT WILL
598 ! ONLY BE INTIALISED BY THE AD USER SUBROUTINES AD_GET_TELEMAC2D
599 !
600 ! DIFFERENTIATED VARIABLES
601 !
602  k = 29+max(4,npriv)+nsicla*(nomblay+4)+2*nomblay+varcl%N ! 28+1; reference level for Nestor
603 !
604  IF( nadvar.GT.0 ) THEN
605  CALL allblo(advar ,'ADVAR ')
606  CALL bief_allvec_in_block(advar,nadvar,1,'AD ',ielmt,
607  & 1,2,mesh)
608  DO i=1,nadvar
609 !
610  advar%ADR(i)%P%R = 0.d0
611  CALL ad_get_sisyphe(i,advar%ADR(i)%P)
612 !
613  IF( sorleo(k+i).OR.sorimp(k+i) )
614  & CALL addblo(varsor,advar%ADR(i)%P)
615 !
616  ENDDO
617  ENDIF
618 !
619 !-----------------------------------------------------------------------
620 ! IF REQUIRED, HERE WE CAN READ THE INPUT SECTIONS FILE
621 ! AND MODIFY NCP AND CTRLSC(1:NCP) ACCORDINGLY IN READ_SECTIONS
622 !
623  IF(trim(sis_files(sissec)%NAME).NE.'') THEN
624  WRITE(lu,*)
625  & 'POINT_SISYPHE: SECTIONS DEFINED IN THE SECTIONS INPUT FILE'
627  ELSE ! THE PREVIOUS WAY OF DOING THINGS
628  IF(ncp.NE.0) THEN
629  IF(ncp.NE.0) WRITE(lu,*)
630  & 'POINT_SISYPHE: SECTIONS DEFINED IN THE PARAMETER FILE'
631  ENDIF
632  ENDIF
633 !
634  WRITE(lu,22)
635 !
636 12 FORMAT(1x,///,21x,'*******************************',/,
637  &21x, '* MEMORY ORGANISATION *',/,
638  &21x, '*******************************',/)
639 
640 22 FORMAT(1x,///,21x,'*************************************',/,
641  &21x, '* END OF MEMORY ORGANIZATION: *',/,
642  &21x, '*************************************',/)
643 !
644 !-----------------------------------------------------------------------
645 !
646  RETURN
647  END
type(bief_obj), target del_qu
type(bief_obj), target zf_s
type(bief_obj), target cstaeq
type(bief_obj), target thetaw
type(bief_obj), target hcpl
type(bief_obj), target maskpt
double precision, dimension(:), allocatable sanfra
type(bief_obj), target laythi
type(bief_obj), target msktmp
type(bief_obj), target numliq
type(bief_obj), target limdif
type(bief_obj), target w1
type(bief_obj), target ksp
type(bief_obj), target am2_s
type(bief_obj), target del_uw
type(bief_obj), target unsv2d
type(bief_obj), target vconv
type(bief_obj), target del_qv
type(bief_obj), target indic
type(bief_obj), target e
type(bief_obj), target flbcla
type(bief_obj), target advar
type(bief_obj), target licbor
type(bief_obj), target q2bor
type(bief_obj), target tb
logical, dimension(maxvar) sorleo
type(bief_obj), target unladm
type(bief_obj), pointer t10
type(bief_obj), target ks
type(bief_obj), target zfcl_c
type(bief_obj), target zr
type(bief_obj), target limtec
type(bief_obj), target ctild
type(bief_obj), target qsy
type(bief_obj), target zf_c
integer function bief_nbfel(IELM, MESH)
Definition: bief_nbfel.f:7
subroutine read_sections_sisyphe
type(bief_obj), target hclip
type(bief_obj), target hprop
type(bief_obj), target te3
type(bief_obj), target ms_sable
type(bief_obj), target uconv
type(bief_obj), target tb2
type(bief_obj), target esomt
subroutine allblo(BLO, NOM)
Definition: allblo.f:7
type(bief_obj), target clu
type(bief_obj), target ebor
type(bief_obj), target qsxc
type(bief_obj), target flbortra
type(bief_obj), target varcl
type(bief_obj), target qscl_s
type(bief_obj), target boundary_colour
type(bief_obj), target nlayer
type(bief_obj), pointer t4
type(bief_obj), target fw
type(bief_obj), target calfa_cl
type(bief_obj), target zf
type(bief_obj), pointer t5
type(bief_obj), target cbor
type(bief_obj), target ms_vase
subroutine bief_allvec(NAT, VEC, NOM, IELM, DIM2, STATUT, MESH)
Definition: bief_allvec.f:7
type(bief_obj), target coefpn
type(bief_obj), target qsys
subroutine bief_allvec_in_block(BLO, N, NAT, NOMGEN, IELM, NDIM, STATUT, MESH)
type(bief_obj), target limpro
type(bief_obj), target mask
type(bief_obj), target maskb
type(bief_obj), target qsxs
type(bief_obj), target acladm
type(bief_obj), target it1
type(bief_obj), target avai
type(bief_obj), pointer t13
type(bief_obj), target qsclxc
type(bief_obj), pointer t9
type(bief_obj), target tobw
subroutine ad_get_sisyphe(IVAR, ADOBJ)
Definition: ad_get_sisyphe.F:7
subroutine bief_allmat(MAT, NOM, IELM1, IELM2, CFG, TYPDIA, TYPEXT, MESH)
Definition: bief_allmat.f:7
type(bief_obj), target estrat
type(bief_obj), target qsclxs
type(bief_obj), target cs
double precision, dimension(:,:), allocatable, target ivide
type(bief_obj), target flbor_sis
type(bief_obj), pointer t8
type(bief_obj), target it4
type(bief_obj), target salfa_cl
type(bief_obj), target mu
type(bief_obj), target lihbor
double precision, dimension(:,:), allocatable, target conc
type(bief_obj), target qscl_c
type(bief_obj), target mpm_aray
logical, dimension(maxvar) sorimp
double precision, dimension(:), pointer x
type(bief_obj), pointer t11
type(bief_obj), target zfcl_ms
type(bief_obj), target liebor
type(bief_obj), target varsor
type(bief_obj), target it2
type(bief_obj), target tw
type(bief_obj), pointer t14
integer function ielbor(IELM, I)
Definition: ielbor.f:7
type(bief_obj), target qs
type(bief_obj), target disp_c
type(bief_obj), pointer t1
type(bief_obj), target fluert
type(bief_obj), target fluer_vase
type(bief_obj), target csratio
type(bief_obj), target cf
type(bief_obj), target fludpt
type(bief_obj), target qs_c
type(bief_obj), target fluer
type(bief_obj), target qsyc
type(bief_obj), target qsclyc
type(bief_obj), target maskel
type(bief_obj), target qs_s
type(bief_obj), target del_z
type(bief_obj), target masktr
type(bief_obj), target zfcl
type(bief_obj), target v2d
type(bief_obj), target afbor
type(bief_obj), target hw
subroutine addblo(BLOC, OBJ)
Definition: addblo.f:7
type(bief_obj), target dzf_gf
type(bief_obj), target qbor
type(bief_obj), target bfbor
logical, dimension(nsiclm) sedco
type(bief_obj), target q
type(bief_obj), target z
type(bief_obj), target te1
type(bief_obj), pointer t3
type(bief_obj), target disp
double precision, dimension(:), pointer y
type(bief_obj), target te2
type(bief_obj), target cst
type(bief_obj), target v2dpar
type(bief_obj), target am1_s
double precision, dimension(:,:), allocatable, target es_sable
type(bief_obj), target unorm
type(bief_obj), pointer ikle
type(bief_obj), target qv
type(bief_obj), target liqbor
type(bief_obj), target qu
type(bief_obj), target ifamas
type(bief_obj), pointer t12
type(bief_obj), target ky
double precision, dimension(:,:,:), allocatable, target avail
type(bief_obj), target zrl
type(bief_obj), target chestr
type(bief_obj), target zref
type(bief_obj), pointer t7
type(bief_obj), target kx
type(bief_obj), target fludp
type(bief_obj), target clv
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 qsclys
type(bief_obj), target s
type(bief_obj), target prive
type(bief_obj), target hn
subroutine point_sisyphe
Definition: point_sisyphe.f:4
type(bief_obj), target kz
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), target it3
type(bief_obj), target radsec
type(bief_obj), target breach
type(bief_obj), pointer t2
type(bief_obj), target mbor
type(bief_obj), target volu2d
type(bief_obj), target hiding
double precision, dimension(:,:), allocatable, target es_vase
type(bief_obj), target qscl
type(bief_obj), target flulim
type(bief_obj), target tob
type(bief_obj), target layconc
type(bief_obj), target emax
type(bief_obj), target u2d
type(bief_obj), target flbor
type(bief_mesh), target mesh
type(bief_obj), target zfcl_s
type(bief_obj), target uw
type(bief_obj), target qsx
type(bief_obj), target toce_mixte
type(bief_obj), pointer t6
type(bief_obj), target elay
type(bief_obj), target clt
type(bief_file), dimension(maxlu_sis), target sis_files
type(bief_obj), target ecpl
type(bief_obj), target ksr
double precision, dimension(:,:), allocatable, target es
Definition: bief.f:3