1 : C KONFL2 SOURCE PV 09/03/12 21:26:27 6325
2 : SUBROUTINE KONFL2(LOGME,LOGSCA,INDMET,NORDP1,
3 : & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
4 : & ICHPSU,ICHPDI,
5 : & MELEMC,MELEMF,MELEFE,MELLIM,
6 : & ICHFLU,DT,
7 : & LOGNC,LOGAN,MESERR)
8 : C************************************************************************
9 : C
10 : C PROJET : CASTEM 2000
11 : C
12 : C NOM : CKON3
13 : C
14 : C DESCRIPTION : Voir CKON
15 : C
16 : C Cas deux dimensions, gaz "thermally perfect"
17 : C
18 : C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
19 : C
20 : C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
21 : C
22 : C************************************************************************
23 : C
24 : C
25 : C APPELES (Outils
26 : C CASTEM) : KRIPAD, LICHT
27 : C
28 : C APPELES (Calcul) : FVLHTE, FCOLTE
29 : C
30 : C
31 : C************************************************************************
32 : C
33 : C ENTREES
34 : C
35 : C
36 : C 1) PARAMETRES
37 : C
38 : C LOGME : (LOGICAL); .TRUE. -> MULTI-ESPECES
39 : C .FALSE. -> MONO-ESPECE
40 : C
41 : C LOGSCA : (LOGICAL); .TRUE. -> scalaires passifs
42 : C .FALSE. -> no scalaires passifs
43 : C
44 : C INDMET : 1 VLH (van Leer Hanel FVS)
45 : C
46 : C 2 Colella-Glaz FDS
47 : C
48 : C NORDP1 : (ordre des polynoms cv(T)) + 1
49 : C
50 : C 2) Pointeurs des MCHAMLs
51 : C
52 : C IROF : MCHAML sur "FACEL" contenant la masse volumique
53 : C ("gauche" et "droite");
54 : C
55 : C IVITF : MCHAML sur "FACEL" contenant la vitesse dans le repaire
56 : C local (n,t) et les cosinus directeurs des repaire local;
57 : C
58 : C IPF : MCHAML sur "FACEL" contenant la pression;
59 : C
60 : C IFRAMAF : MCHAML sur "FACEL", contenant les fractions massiques
61 : C si LOGME = .TRUE.;
62 : C LOGME = .FALSE. -> IFRAMAF = 0
63 : C
64 : C ISCAF : MCHAML sur "FACEL", contenant les scalires passifs a
65 : C transporter (ou ISCAF = 0)
66 : C
67 : C 3) Pointeur sur la table des proprietes de gaz
68 : C
69 : C PROPHY
70 : C
71 : C 4) Pointeurs de CHPOINTs de la table DOMAINE
72 : C
73 : C ICHPSU : CHPOINT "FACE" contenant la surface des faces
74 : C
75 : C ICHPDI : CHPOINT "CENTRE" contenant le diametre minimum
76 : C de chaque element
77 : C
78 : C
79 : C 5) Pointeurs de MELEME de la table DOMAINE
80 : C
81 : C MELEMC : MELEME 'CENTRE' du SPG des CENTRES
82 : C
83 : C MELEMF : MELEME 'FACE' du SPG des FACES
84 : C
85 : C MELEFE : MELEME 'FACEL' du connectivité FACES -> ELEM
86 : C
87 : C MELLIM : MAILLAGE where the flux (or residu) will not be found
88 : C
89 : C SORTIES (il faudrait dire E/S)
90 : C
91 : C ICHFLU : pointeurs de CHPOINTs "FACE" des flux aux interfaces:
92 : C
93 : C DT : pas de temps pour le respect de la CFL-like condition
94 : C DT < DIAMEL /2 /max(Lambda_i)
95 : C En maillage regulier cette condition garantie la
96 : C non-interaction des ondes
97 : C
98 : C
99 : C LOGNC : (LOGICAL): si .TRUE. la methode de Newton-Rapson, utilisée
100 : C dans pour la solution du probleme Riemann n'a pas bien
101 : C marchéee
102 : C
103 : C LOGAN : (LOGICAL): si .TRUE. une anomalie à été detectée
104 : C
105 : C MESERR : pour l'ecriture des messages d'erreurs
106 : C
107 : C************************************************************************
108 : C
109 : C HISTORIQUE (Anomalies et modifications éventuelles)
110 : C
111 : C HISTORIQUE : 22.12.98 Creation
112 : C
113 : C 08.02.00 Ajout du flux numerique de Colella-Glaz
114 : C
115 : C 21.02.00 Ajout de transport de scalaires passifs
116 : C
117 : C 03.12.03 Ajout le MAILLIM comme le l'entree
118 : C
119 : C************************************************************************
120 : C
121 : C
122 : C N.B.: On suppose qu'on a déjà controllé RO, P > 0
123 : C GAMMA \in (1,3)
124 : C Y \in (0,1)
125 : C Si non il faut le faire!!!
126 : C
127 : C************************************************************************
128 : C
129 : C
130 : C**** Variables de COOPTIO
131 : C
132 : C INTEGER IPLLB, IERPER, IERMAX, IERR, INTERR
133 : C & ,IOTER, IOLEC, IOIMP, IOCAR, IOACQ
134 : C & ,IOPER, IOSGB, IOGRA, IOSAU, IORES
135 : C & ,IECHO, IIMPI, IOSPI
136 : C & ,IDIM
137 : CC & ,MCOORD
138 : C & ,IFOMOD, NIFOUR, IFOUR, NSDPGE, IONIVE
139 : C & ,NGMAXY, IZROSF, ISOTYP, IOSCR,LTEXLU
140 : C & ,NORINC,NORVAL,NORIND,NORVAD
141 : C & ,NUCROU, IPSAUV
142 : C
143 : IMPLICIT INTEGER(I-N)
144 : INTEGER I1, I2
145 : & ,INDMET, NORDP1
146 : & ,IROF,IVITF,IPF,ISCAF,IFRMAF
147 : & ,ICHPSU,ICHPDI,MELEMC,MELEMF,MELEFE
148 : & ,IGEOMC,IGEOMF
149 : & ,ICHFLU
150 : & ,NESP, NFAC, NSCA, NMA, NMA2
151 : & ,NLCF, NGCEG, NGCED, NLCEG, NLCED
152 : & ,NGCF, NLCF1, SPG1, SPG2, NLFL
153 : REAL*8 DT, UNSDT, CELLT
154 : & , ROG, UNG, UTG, PG, GAMG, TG
155 : & , ROD, UND, UTD, PD, GAMD, TD
156 : & , SURF,CNX, CNY, CTX , CTY
157 : & , CELL, DIAMG, DIAMD, DIAM
158 : & , ASON, LAMBDA
159 : & , Y1G, Y1D, RTOTG, RTOTD, CVTOTG, CVTOTD, ETHERG, ETHERD
160 : & , YG, YD, FUNTG, FUNTD, DCV, XST
161 : LOGICAL LOGME, LOGSCA, LOGNC, LOGAN
162 : CHARACTER*(40) MESERR
163 : CHARACTER*(8) TYPE
164 : C
165 : C**** Segment des proprietes du gaz
166 : C
167 : SEGMENT PROPHY
168 : REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
169 : & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
170 : ENDSEGMENT
171 : C
172 : C**** Les Includes
173 : C
174 : C
175 : C**** LES INCLUDES
176 : C
177 : -INC CCOPTIO
178 : -INC SMCOORD
179 : -INC SMCHAML
180 : POINTEUR MELVNX.MELVAL, MELVNY.MELVAL,
181 : & MELT1X.MELVAL, MELT1Y.MELVAL
182 : POINTEUR MELVUN.MELVAL, MELVUT.MELVAL
183 : POINTEUR MELRO.MELVAL, MELP.MELVAL
184 : -INC SMCHPOI
185 : POINTEUR MPOVSU.MPOVAL, MPOVDI.MPOVAL
186 : & , MPOFLU.MPOVAL
187 : POINTEUR MCHAMY.MCHAML, MCHAMS.MCHAML
188 : -INC SMELEME
189 : POINTEUR MELLIM.MELEME
190 : -INC SMLMOTS
191 : -INC SMLENTI
192 : POINTEUR MLELIM.MLENTI
193 : C
194 : C**** Les fractiones massiques.
195 : C
196 : SEGMENT FRAMAS
197 : REAL*8 YET(NMA)
198 : ENDSEGMENT
199 : POINTEUR FRAMAG.FRAMAS, FRAMAD.FRAMAS, SCAG.FRAMAS, SCAD.FRAMAS
200 : C
201 : C**** Les flux aux interface dans le repaire (n,t)
202 : C
203 : SEGMENT IFLUX
204 : REAL*8 FLUX(NMA2)
205 : ENDSEGMENT
206 : POINTEUR IFLU1.IFLUX, IFLU2.IFLUX
207 : C
208 : C**** KRIPAD pour la correspondance global/local des conditions limits
209 : C
209 : CALL KRIPAD(MELLIM,MLELIM)
210 : C
211 : C**** Initialisation des MCHAMLs
212 : C
213 : C**** Masse volumique
214 : C
215 : MCHEL1 = IROF
216 : SEGACT MCHEL1
217 : MCHAM1 = MCHEL1.ICHAML(1)
218 : SEGACT MCHAM1
219 : MELRO = MCHAM1.IELVAL(1)
220 : SEGDES MCHEL1
221 : SEGDES MCHAM1
222 : C
223 : C**** Pression
224 : C
225 : MCHEL1 = IPF
226 : SEGACT MCHEL1
227 : MCHAM1 = MCHEL1.ICHAML(1)
228 : SEGACT MCHAM1
229 : MELP = MCHAM1.IELVAL(1)
230 : SEGDES MCHEL1
231 : SEGDES MCHAM1
232 : C
233 : C**** Vitesse et cosinus directeurs du repere (n,t)
234 : C
235 : MCHEL1 = IVITF
236 : SEGACT MCHEL1
237 : C
238 : C**** La vitesse a comme SPG MELEFE
239 : C Le cosinus directeurs ont comme SPG MELEMF
240 : C
241 : C MCHAM1 -> Cosinus directeurs
242 : C MCHAM2 -> Vitesse
243 : C
244 : SPG1 = MCHEL1.IMACHE(1)
245 : SPG2 = MCHEL1.IMACHE(2)
246 : IF((SPG1 .EQ. MELEMF) .AND. (SPG2 .EQ. MELEFE))THEN
247 : MCHAM1 = MCHEL1.ICHAML(1)
248 : MCHAM2 = MCHEL1.ICHAML(2)
249 : ELSEIF((SPG1 .EQ. MELEFE) .AND. (SPG2 .EQ. MELEMF))THEN
250 : MCHAM1 = MCHEL1.ICHAML(2)
251 : MCHAM2 = MCHEL1.ICHAML(1)
252 : ELSE
253 : LOGAN = .TRUE.
254 : GOTO 9999
255 : ENDIF
256 : SEGACT MCHAM1
257 : MELVNX = MCHAM1.IELVAL(1)
258 : MELVNY = MCHAM1.IELVAL(2)
259 : MELT1X = MCHAM1.IELVAL(3)
260 : MELT1Y = MCHAM1.IELVAL(4)
261 : SEGDES MCHAM1
262 : SEGACT MCHAM2
263 : MELVUN = MCHAM2.IELVAL(1)
264 : MELVUT = MCHAM2.IELVAL(2)
265 : SEGDES MCHAM2
266 : SEGDES MCHEL1
267 : C
268 : C**** Fractions massiques
269 : C
270 : IF(LOGME)THEN
271 : MCHEL1 = IFRMAF
272 : SEGACT MCHEL1
273 : MCHAMY = MCHEL1.ICHAML(1)
274 : SEGACT MCHAMY
275 : C
276 : C******* Numero d'especes dans les equations d'Euler
277 : C
278 : NESP = MCHAMY.IELVAL(/1)
279 : DO I1 = 1, NESP
280 : MELVA1 = MCHAMY.IELVAL(I1)
281 : SEGACT MELVA1
282 : ENDDO
283 : NMA = NESP
284 : SEGINI FRAMAG
285 : SEGINI FRAMAD
286 : SEGDES MCHEL1
287 : ELSE
288 : C
289 : C******* Definition minimale de YET, necessaire pour transmetre YET aux
290 : C subroutines FORTRAN qui calculent les flux
291 : C
292 : NMA = 1
293 : SEGINI FRAMAG
294 : SEGINI FRAMAD
295 : NESP = 0
296 : ENDIF
297 : C
298 : C**** Scalaires passifs
299 : C
300 : IF(LOGSCA)THEN
301 : MCHEL1 = ISCAF
302 : SEGACT MCHEL1
303 : MCHAMS = MCHEL1.ICHAML(1)
304 : SEGACT MCHAMS
305 : NSCA = MCHAMS.IELVAL(/1)
306 : DO I1 = 1, NSCA, 1
307 : MELVA1 = MCHAMS.IELVAL(I1)
308 : SEGACT MELVA1
309 : ENDDO
310 : NMA = NSCA
311 : SEGINI SCAG
312 : SEGINI SCAD
313 : SEGDES MCHEL1
314 : ELSE
315 : C
316 : C******* Definition minimale de YET, necessaire pour transmetre YET aux
317 : C subroutines FORTRAN qui calculent les flux
318 : C
319 : NMA = 1
320 : SEGINI SCAG
321 : SEGINI SCAD
322 : NSCA= 0
323 : ENDIF
324 : C
325 : C**** Initialisation des MELEMEs
326 : C
327 : C 'CENTRE', 'FACEL'
328 : C
329 : IPT2 = MELEFE
330 : SEGACT IPT2
331 : NFAC = IPT2.NUM(/2)
332 : C
333 : C**** KRIPAD pour la correspondance global/local de centre
334 : C
334 : CALL KRIPAD(MELEMC,MLENT1)
335 : C
336 : C**** MLENTI1 a MCORD.XCOORD(/1)/(IDIM+1) elements
337 : C
338 : C Si i est le numero global d'un noeud de ICEN,
339 : C MLENT1.LECT(i) contient sa position, i.e.
340 : C
341 : C I = numero global du noeud centre
342 : C MLENT1.LECT(i) = numero local du noeud centre
343 : C
344 : C MLENT1 déjà activé, i.e.
345 : C
346 : C SEGACT MLENT1
347 : C
348 : C
349 : C**** KRIPAD pour la correspondance global/local de 'FACE'
350 : C
350 : CALL KRIPAD(MELEMF,MLENT2)
351 : C
352 : C**** Initialisation de flux
353 : C
354 : NMA2 = 4 + NESP + NSCA
355 : SEGINI IFLU1
356 : SEGINI IFLU2
357 : C
358 : C**** IFLU2 = segment de travail en FLUVLH; c'est plus rapide le definir ici
359 : C
360 : C
361 : C**** CHPOINTs de la table DOMAINE
362 : C
362 : CALL LICHT(ICHPSU,MPOVSU,TYPE,IGEOMF)
362 : CALL LICHT(ICHPDI,MPOVDI,TYPE,IGEOMC)
363 : C
364 : C**** LICHT active les MPOVALs en *MOD
365 : C
366 : C i.e.
367 : C
368 : C SEGACT MPOVSU*MOD
369 : C SEGACT MPOVDI*MOD
370 : C
371 : C
372 : C**** Les FLUX aux face
373 : C
374 : C La densité
375 : C
375 : CALL LICHT(ICHFLU,MPOFLU,TYPE,IGEOMF)
376 : C
377 : C SEGACT MPOFLU*MOD
378 : C
379 : C**** Activation des MCHAMLs
380 : C
381 : SEGACT MELRO
382 : SEGACT MELP
383 : SEGACT MELVUN
384 : SEGACT MELVUT
385 : SEGACT MELVNX
386 : SEGACT MELVNY
387 : SEGACT MELT1X
388 : SEGACT MELT1Y
389 : C
390 : C**** Initialisation de 1/DT
391 : C
392 : UNSDT = 0.0D0
393 : C
394 : C**** BOUCLE SUR FACEL pour le calcul du FLUX
395 : C
396 : DO NLCF = 1, NFAC
397 : C
398 : C******* NLCF = numero local du centre de facel
399 : C NGCF = numero global du centre de facel
400 : C NLCF1 = numero local du centre de face
401 : C NGCEG = numero global du centre ELT "gauche"
402 : C NLCEG = numero local du centre ELT "gauche"
403 : C NGCED = numero global du centre ELT "droite"
404 : C NLCED = numero local du centre ELT "droite"
405 : C
406 : NGCEG = IPT2.NUM(1,NLCF)
407 : NGCED = IPT2.NUM(3,NLCF)
408 : NGCF = IPT2.NUM(2,NLCF)
409 : NLCF1 = MLENT2.LECT(NGCF)
410 : NLCEG = MLENT1.LECT(NGCEG)
411 : NLCED = MLENT1.LECT(NGCED)
412 : NLFL = MLELIM.LECT(NGCF)
413 : C
414 : C******* NLCF != NLCF1 -> l'auteur (MOI) n'a rien compris.
415 : C
416 : IF(NLCF .NE. NLCF1)THEN
417 : MESERR = 'Il ne faut pas jouer avec la console. '
418 : LOGAN = .TRUE.
419 : GOTO 9999
420 : ENDIF
421 : IF(NLFL .EQ. 0)THEN
422 : C
423 : C******* Recuperation des Etats "gauche" et "droite"
424 : C
425 : ROG = MELRO.VELCHE(1,NLCF)
426 : UNG = MELVUN.VELCHE(1,NLCF)
427 : UTG = MELVUT.VELCHE(1,NLCF)
428 : PG = MELP.VELCHE(1,NLCF)
429 : C
430 : ROD = MELRO.VELCHE(3,NLCF)
431 : UND = MELVUN.VELCHE(3,NLCF)
432 : UTD = MELVUT.VELCHE(3,NLCF)
433 : PD = MELP.VELCHE(3,NLCF)
434 : C
435 : CNX = MELVNX.VELCHE(1,NLCF)
436 : CNY = MELVNY.VELCHE(1,NLCF)
437 : CTX = MELT1X.VELCHE(1,NLCF)
438 : CTY = MELT1Y.VELCHE(1,NLCF)
439 : C
440 : C******* Le fractiones massiques, R et ACVTO
441 : C
442 : RTOTG = 0.0D0
443 : RTOTD = 0.0D0
444 : CVTOTG = 0.0D0
445 : CVTOTD = 0.0D0
446 : Y1G = 1.0D0
447 : Y1D = 1.0D0
448 : ETHERG = 0.0D0
449 : ETHERD = 0.0D0
450 : DO I1= 1, NORDP1, 1
451 : PROPHY.ACVTOG(I1) =0.0D0
452 : PROPHY.ACVTOD(I1) =0.0D0
453 : ENDDO
454 : DO I1 = 1, NESP, 1
455 : MELVA1 = MCHAMY.IELVAL(I1)
456 : YG = MELVA1.VELCHE(1,NLCF)
457 : YD = MELVA1.VELCHE(3,NLCF)
458 : Y1G = Y1G - YG
459 : Y1D = Y1D - YD
460 : FRAMAG.YET(I1) = YG
461 : FRAMAD.YET(I1) = YD
462 : RTOTG = RTOTG + YG * PROPHY.R(I1)
463 : RTOTD = RTOTD + YD * PROPHY.R(I1)
464 : DO I2 = 1, NORDP1
465 : PROPHY.ACVTOG(I2) = PROPHY.ACVTOG(I2) +
466 : & YG * PROPHY.ACV(I2,I1)
467 : PROPHY.ACVTOD(I2) = PROPHY.ACVTOD(I2) +
468 : & YD * PROPHY.ACV(I2,I1)
469 : ENDDO
470 : ENDDO
471 : RTOTG = RTOTG + Y1G * PROPHY.R(NESP+1)
472 : RTOTD = RTOTD + Y1D * PROPHY.R(NESP+1)
473 : DO I2 = 1, NORDP1, 1
474 : PROPHY.ACVTOG(I2) = PROPHY.ACVTOG(I2) +
475 : & Y1G * PROPHY.ACV(I2,NESP+1)
476 : PROPHY.ACVTOD(I2) = PROPHY.ACVTOD(I2) +
477 : & Y1D * PROPHY.ACV(I2,NESP+1)
478 : ENDDO
479 : TG = PG / (ROG * RTOTG)
480 : TD = PD / (ROD * RTOTD)
481 : FUNTG = 1.0D0
482 : FUNTD = 1.0D0
483 : CVTOTG = PROPHY.ACVTOG(1)
484 : ETHERG = CVTOTG * TG
485 : CVTOTD = PROPHY.ACVTOD(1)
486 : ETHERD = CVTOTD * TD
487 : DO I1 = 2, NORDP1, 1
488 : FUNTG = FUNTG * TG
489 : FUNTD = FUNTD * TD
490 : DCV = PROPHY.ACVTOG(I1) * FUNTG
491 : CVTOTG = CVTOTG + DCV
492 : ETHERG = ETHERG + DCV * TG / I1
493 : DCV = PROPHY.ACVTOD(I1) * FUNTD
494 : CVTOTD = CVTOTD + DCV
495 : ETHERD = ETHERD + DCV * TD / I1
496 : ENDDO
497 : GAMG = (CVTOTG + RTOTG) /CVTOTG
498 : GAMD = (CVTOTD + RTOTD) /CVTOTD
499 : C
500 : C******* Les scalaires passifs
501 : C
502 : DO I1 = 1, NSCA, 1
503 : MELVA1 = MCHAMS.IELVAL(I1)
504 : SCAG.YET(I1) = MELVA1.VELCHE(1,NLCF)
505 : SCAD.YET(I1) = MELVA1.VELCHE(3,NLCF)
506 : ENDDO
507 : C
508 : C******* On a defini (ROg,ROUNg,ROUTg,Pg,(Yg)), (ROd,ROUNd,ROUTd,Pd,(Yd))
509 : C et on a déjà verifié ROg, ROd, Pg, Pd > 0 et 0FVLHTE(NESP,NSCA,
518 : & GAMG,ROG,PG,UNG,UTG,ETHERG,
519 : & GAMD,ROD,PD,UND,UTD,ETHERD,
520 : & FRAMAG.YET,FRAMAD.YET,
521 : & SCAG.YET,SCAD.YET,
522 : & IFLU1.FLUX,IFLU2.FLUX,
523 : & CELLT)
524 : ELSEIF(INDMET .EQ. 2)THEN
525 : C
526 : C******* Colella-Glaz FDS (avec Entropy-fix)
527 : C
528 : XST=0.0D0
528 : CALL FCOLTE(NESP,NSCA,NORDP1,XST,
529 : & GAMG,RTOTG,PROPHY.ACVTOG,ROG,PG,TG,UNG,UTG,ETHERG,
530 : & GAMD,RTOTD,PROPHY.ACVTOD,ROD,PD,TD,UND,UTD,ETHERD,
531 : & FRAMAG.YET,FRAMAD.YET,
532 : & SCAG.YET,SCAD.YET,
533 : & IFLU1.FLUX,CELLT,
534 : & LOGNC,MESERR,LOGAN)
535 : ENDIF
536 : C
537 : IF(LOGAN) GOTO 9999
538 : IF(LOGNC) GOTO 9999
539 : C
540 : C******* Ecriture des flux
541 : C
542 : C FLUX(1) = RO Un RO Un
543 : C FLUX(2) = RO Un Un + P -> RO Un Ux + P CNX
544 : C FLUX(3) = RO Un Ut -> RO Un Uy + P CNY
545 : C FLUX(4) = RO Un Et RO Un Et
546 : C
547 : SURF = MPOVSU.VPOCHA(NLCF,1)
548 : MPOFLU.VPOCHA(NLCF,1) =
549 : & (IFLU1.FLUX(1) * SURF )
550 : MPOFLU.VPOCHA(NLCF,2) =
551 : & ((IFLU1.FLUX(2)*CNX+IFLU1.FLUX(3)*CTX) * SURF)
552 : MPOFLU.VPOCHA(NLCF,3) =
553 : & ((IFLU1.FLUX(2)*CNY+IFLU1.FLUX(3)*CTY) * SURF)
554 : MPOFLU.VPOCHA(NLCF,4) =
555 : & (IFLU1.FLUX(4) * SURF)
556 : DO I1 = 1, NESP, 1
557 : MPOFLU.VPOCHA(NLCF,4+I1)=IFLU1.FLUX(4+I1)
558 : & * SURF
559 : ENDDO
560 : DO I1 = 1, NSCA, 1
561 : MPOFLU.VPOCHA(NLCF,4+NESP+I1)=IFLU1.FLUX(4+I1+NESP)
562 : & * SURF
563 : ENDDO
564 : C
565 : C******* Calcul du pas du temps (CFL)
566 : C
567 : C****** a) etat a l'interface
568 : C
569 : DIAMG = MPOVDI.VPOCHA(NLCEG,1)
570 : DIAMD = MPOVDI.VPOCHA(NLCED,1)
571 : DIAM = MIN(DIAMG,DIAMD)
572 : CELL = 1.0D0/DIAM/CELLT
573 : IF(CELL .GT. UNSDT)THEN
574 : UNSDT = CELL
575 : ENDIF
576 : C
577 : C****** b) etat gauche
578 : C
579 : ASON = SQRT(GAMG*PG/ROG)
580 : LAMBDA = ABS(UNG) + ASON
581 : CELL = LAMBDA / DIAM
582 : IF(CELL .GT. UNSDT)THEN
583 : UNSDT = CELL
584 : ENDIF
585 : C
586 : C****** C) etat droite
587 : C
588 : ASON = SQRT(GAMD*PD/ROD)
589 : LAMBDA = ABS(UND) + ASON
590 : CELL = LAMBDA / DIAM
591 : IF(CELL .GT. UNSDT)THEN
592 : UNSDT = CELL
593 : ENDIF
594 : ENDIF
595 : C
596 : C**** Fin boucle sur FACEL
597 : C
598 : ENDDO
599 : C
600 : C**** Pas du temps (condition de non interaction en 1D)
601 : C
602 : DT = 0.5D0 / UNSDT
603 : C
604 : C**** Desactivation des segments et
605 : C on detruit les MCHAMLs
606 : C
607 : C
608 : C**** SEGSUP FRAMAG
609 : C SEGSUP FRAMAD
610 : C
611 : C meme si LOGME = .FALSE.
612 : C
613 : SEGDES FRAMAG
614 : SEGDES FRAMAD
615 : C
616 : SEGDES MLENT1
617 : SEGDES MLENT2
618 : SEGDES IPT2
619 : C
620 : SEGDES IFLU1
621 : SEGDES IFLU2
622 : C
623 : SEGDES MPOVSU
624 : SEGDES MPOVDI
625 : C
626 : SEGDES MPOFLU
627 : C
628 : SEGDES MELRO
629 : SEGDES MELP
630 : SEGDES MELVUN
631 : SEGDES MELVUT
632 : SEGDES MELVNX
633 : SEGDES MELVNY
634 : SEGDES MELT1X
635 : SEGDES MELT1Y
636 : c SEGDES MELLIM
637 : SEGDES MLELIM
638 : C
639 : IF(LOGME) THEN
640 : DO I1 = 1, NESP
641 : MELVA1 = MCHAMY.IELVAL(I1)
642 : SEGDES MELVA1
643 : ENDDO
644 : C
645 : SEGDES MCHAMY
646 : ENDIF
647 : IF(LOGSCA) THEN
648 : DO I1 = 1, NSCA, 1
649 : MELVA1 = MCHAMS.IELVAL(I1)
650 : SEGDES MELVA1
651 : ENDDO
652 : C
653 : SEGDES MCHAMS
654 : ENDIF
655 : C
656 : 9999 CONTINUE
657 : C
658 : RETURN
659 : END
660 : C
661 :
662 :
663 :
664 :
665 :
666 :
667 :
668 :
669 :
670 :
671 :
672 :
673 :
674 :
675 :
676 :
© Cast3M 2003 - All rights reserved.
Disclaimer