Télécharger benchmark_imst.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : benchmark_imst.dgibi
  2. ***************************************************************
  3. * *
  4. * NOM : benchmark_imst.dgibi *
  5. * DESCRIPTION : fiche de validation CASTEM2000 *
  6. * Mécanique des Fluides *
  7. * Convection naturelle laminaire *
  8. * en cavité rectangulaire (2D) *
  9. * FONCTIONS *
  10. * TESTEES : 'NS' algorithme semi-implicite *
  11. * option CENTREE *
  12. * approximation de Boussinesq *
  13. * éléments QUA8 'MACRO' *
  14. * *
  15. * AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) *
  16. * e-mail : gounand@semt2.smts.cea.fr *
  17. * *
  18. ***************************************************************
  19. * *
  20. * VERSION : v1, 19/9/97, version initiale *
  21. * HISTORIQUE : v1, 19/9/97, création *
  22. * HISTORIQUE : 15/06/2014 passage EQPR -> EQEX *
  23. * HISTORIQUE : *
  24. * HISTORIQUE : *
  25. * *
  26. ***************************************************************
  27. * *
  28. * Priere de completer la partie HISTORIQUE apres modification *
  29. * du jeu de donnees afin de faciliter la maintenance *
  30. * *
  31. ***************************************************************
  32. *
  33. * DESCRIPTION DETAILLEE :
  34. *
  35. * -- IMST -- Convection naturelle laminaire à Prandtl (Pr) = 0
  36. * Algorithme semi implicite
  37. * opérateur NS (option CENTREE)
  38. *
  39. * phi = 0
  40. * ------------------------
  41. * | |
  42. * T1 = 0 | H | T2 = A
  43. * | L |
  44. * ------------------------
  45. * phi = 0
  46. *
  47. * A = L/H = 4 l'allongement
  48. * U = 0 sur les parois
  49. * Le profil de température est imposé T = T1 + (T2-T1)*(x/L)
  50. *
  51. * La structure de l'écoulement ne dépend que
  52. * du nombre de Grashof Gr :
  53. * Gr = g beta (T2 - T1) H**3 A / nu**2
  54. *
  55. * ^
  56. * | Psi max (valeur max de la fonction de courant)
  57. * |
  58. * |
  59. * -| o o
  60. * | unsteady -> o v
  61. * | (3 cells) . v
  62. * | ----------- o v . o
  63. * | steady -> .^ v o
  64. * | (3 cells) . ^ v .
  65. * | ----------- o ^ o
  66. * -| ^ .
  67. * | steady -> . ^ . <-- steady (2 cells)
  68. * | o
  69. * | (1 cell) .
  70. * |
  71. * | .
  72. * | o
  73. * -|-------------------------------------------> Gr
  74. * I I I
  75. * 1.E4 2.E4 3.E4
  76. **************************************************************
  77. * Références : - Gounand, S. 1997
  78. * Simulation numérique de cellules
  79. * thermoconvectives.
  80. * Rapport CEA/DMT 97/357.
  81. * - Le Garrec, S. 1988
  82. * Convection naturelle en cavité pour des
  83. * fluides à faible nombre de Prandtl.
  84. * Rapport CEA/DMT 88/216.
  85. * - Le Garrec, S. & Magnaud, J.-P.
  86. * Numerical Simulation of oscillatory
  87. * convection in low Prandtl Fluids with
  88. * TRIO-EF.
  89. * A GAMM Workshop Edited by Bernard Roux
  90. * Notes on Numerical Fluid Mechanics,Volume 27
  91. * pp. 189-199. (Vieweg, Braunschweig 1990)
  92. *
  93. ***************************************************************
  94. *
  95. * JEU DE DONNEE :
  96. *
  97. prg = ('CHAINE' 'Benchmark Imst') ;
  98. **** Options
  99. * court = VRAI : le cas-test s'effectue en une dizaine
  100. * de secondes.
  101. * Gr = 5000 => une cellule stationnaire
  102. * la comparaison s'effectue sur le profil
  103. * Uy(x) le long de la médiane horizontale.
  104. * On vérifie également que l'écoulement
  105. * est centrosymétrique.
  106. * court = FAUX : maillage raffiné ;
  107. * Gr = 40000 => bifurcation 3->2 cellules
  108. * environ 1h30 CPU avec les graphiques
  109. *
  110. * graph = VRAI : on trace les graphiques (historiques, champs)
  111. * On a plus de calculs avec cette option
  112. * (fonction de courant, convergence...)
  113. * On mettra donc graph = faux pour la fiche
  114. * de validation
  115. *
  116. * inta = VRAI si on est en interactif ; 0 sinon
  117. *
  118. * discconv : option de discrétisation des termes de
  119. * convection pour les équations de Navier-Stokes
  120. * choix possibles : 'CENTREE', 'SUPG'...
  121. * voir notice de 'NS'
  122. court = VRAI ;
  123. graph = FAUX ;
  124. inta = FAUX ;
  125. typelem = 'QUA8' ;
  126. discconv = 'CENTREE' ;
  127.  
  128. DISCR = 'MACRO' ;
  129. KPRESS = 'CENTRE' ;
  130. * betap : paramètre de stabilisation de la pression
  131. BETAP = 1. ;
  132.  
  133. 'OPTION' 'DIME' 2 'ELEM' typelem ;
  134.  
  135. 'SI' ('NON' inta) ;
  136. 'OPTION' 'TRAC' 'PS' ;
  137. 'OPTION' 'ECHO' 1 ;
  138. 'SINON' ;
  139. **od = 'TEXTE' 'OPTION DONN 3' ;
  140. 'FINSI' ;
  141.  
  142. *************************************************************
  143. **** Définition de quelques procédures :
  144. ** -> SUMMARY : affiche un résumé des paramètres
  145. ** -> CALCPSI : calcul de la fonction de courant
  146. ** (appelée par 'EXEC' via la table 'EQEX')
  147. ** -> MAJHIST : mise à jour d'historiques
  148. ** (appelée par 'EXEC' via la table 'EQEX')
  149. ** -> TRHIST : tracé des historiques
  150. ** -> TRCHAMP : tracé des différents champs
  151. ** (appelée par 'EXEC' via la table 'EQEX')
  152. ** NB : pour simplifier, on ne transmet pas les paramètres à
  153. ** SUMMARY. C'est de la mauvaise programmation...
  154. ** Les autres procédures sont correctes
  155. ** sous toutes réserves
  156. *
  157. ** SUMMARY
  158. 'DEBPROC' SUMMARY ;
  159. 'MESSAGE' ('CHAINE' 'Programme : ' prg) ;
  160. 'SAUTER' 'LIGNE' ;
  161. 'MESSAGE' ('CHAINE' '*** GEOMETRIE :') ;
  162. 'MESSAGE' ('CHAINE' 'Boite carrée : ' l ' x' h) ;
  163. 'MESSAGE' ('CHAINE' ' soient : ' nl 'x' nh '='
  164. (nl '*' nh) ' éléments ' typelem) ;
  165. 'MESSAGE' ('CHAINE' ' soient : ' (nl '*' nh '*' 4)
  166. ' éléments linéaires') ;
  167. 'SAUTER' 'LIGNE' ;
  168. 'MESSAGE' ('CHAINE' '*** PHYSIQUE :') ;
  169. 'MESSAGE' ('CHAINE' 'Rapport d_aspect : ' ('ENTIER' aspect)) ;
  170. 'MESSAGE' ('CHAINE' 'Nombre de Grashof : '('ENTIER' Gr) ) ;
  171. 'MESSAGE' ('CHAINE' 'Température de référence : ' tref
  172. ' comprise entre 0 et ' ('ENTIER' aspect)) ;
  173. 'SAUTER' 'LIGNE' ;
  174. 'MESSAGE' ('CHAINE' '*** NUMERIQUE :') ;
  175. 'MESSAGE' ('CHAINE' 'Discrétisation ' discconv ' des termes de
  176. convection.');
  177. 'MESSAGE' ('CHAINE' ' Alfa = ' alpha) ;
  178. 'MESSAGE' ('CHAINE' ' Béta = ' beta) ;
  179. 'SAUTER' 'LIGNE' ;
  180. rvpdt = rv . 'PASDETPS' ;
  181. 'MESSAGE' ('CHAINE' '*** TEMPS :') ;
  182. 'MESSAGE' ('CHAINE' 'Nb. itérations : ' ((rvpdt . 'NUPASDT')
  183. '-' 1)) ;
  184. 'MESSAGE' ('CHAINE' 'Temps physique : ' (rvpdt . 'TPS')) ;
  185. 'MESSAGE' ('CHAINE' 'Temps CPU : '
  186. ('ENTIER' (thist . 'tpscpu')) ' ms') ;
  187. 'FINPROC' ;
  188.  
  189.  
  190. ** CALCPSI
  191. 'DEBPROC' CALCPSI ;
  192. 'ARGUMENT' trx*'TABLE ' ;
  193. as2 ama1 = 'KOPS' 'MATRIK' ;
  194. trv = (trx . 'EQEX') ;
  195. tinco = (trv . 'INCO') ;
  196. $dom = (trx . 'DOMZ') ;
  197. cdom = 'CONTOUR' ('DOMA' $dom 'MAILLAGE') ;
  198. vitesse = 'KCHT' $dom 'VECT' 'SOMMET'
  199. (tinco . 'UN') ;
  200. sw = 'KOPS' vitesse 'ROT' $dom ;
  201. rk = 'EQEX' $dom 'OPTI' 'EF' 'IMPL'
  202. 'ZONE' $dom 'OPER' 'LAPN' 1.0D0 'INCO' 'PSI'
  203. 'ZONE' $dom 'OPER' 'FIMP' sw 'INCO' 'PSI'
  204. 'CLIM' 'PSI' 'TIMP' cdom 0.0D0 ;
  205. rk . 'INCO' = 'TABLE' 'INCO' ;
  206. rk . 'INCO' . 'PSI' = 'KCHT' $dom 'SCAL' 'SOMMET' 0.0D0 ;
  207. *-*-*-*- A remplacer par EXEC qd ca marchera...
  208. EXEC rk ;
  209. *-*-*-*-
  210. tinco . 'PSI' = (rk . 'INCO' . 'PSI') ;
  211.  
  212. 'FINPROC' as2 ama1 ;
  213.  
  214. ** MAJHIST
  215. 'DEBPROC' MAJHIST ;
  216. 'ARGUMENT' trx*'TABLE ' ;
  217. as2 ama1 = 'KOPS' 'MATRIK' ;
  218. trv = (trx . 'EQEX') ;
  219. tinco = (trv . 'INCO') ;
  220. th = (trv . 'HISTOIRE') ;
  221. tp = (trv . 'PASDETPS') ;
  222. vit = (tinco . 'UN') ; vitm1 = (tinco . 'UN-1') ;
  223. vitref = (tinco . 'UREF') ;
  224. psi = (tinco . 'PSI') ;
  225. npdt = (tp . 'NUPASDT') ;
  226. * Calcul de l'erreur relative (norme Linfini) entre deux
  227. * champs de vitesse successifs
  228. errrel = ('MAXIMUM' (vit '-' vitm1) 'ABS') '/' vitref ;
  229. 'SI' ('MULT' npdt (trv . 'FIDT')) ;
  230. 'MESSAGE' ('CHAINE' 'Pdt : ' npdt
  231. ' |Un - Un_1| Linf = ' errrel) ;
  232. 'FINSI' ;
  233. tinco . 'UN-1' = 'COPIER' vit ;
  234. * Mise à jour des différentes listes
  235. mpsi = 'MAXIMUM' psi 'ABS' ;
  236. th . 'ltps' = ((th . 'ltps') 'ET' ('PROG' (tp . 'TPS'))) ;
  237. th . 'lpsi' = ((th . 'lpsi') 'ET' ('PROG' mpsi)) ;
  238. th . 'lerr' = ((th . 'lerr') 'ET' ('PROG' errrel)) ;
  239. thl = (th . 'lpdt') ;
  240. thl . 'conv' = ((thl . 'conv') 'ET' ('PROG' (tp . 'DTCONV'))) ;
  241. thl . 'diff' = ((thl . 'diff') 'ET' ('PROG' (tp . 'DTDIFU'))) ;
  242. thl . 'min' = ((thl . 'min') 'ET' ('PROG' (tp . 'DELTAT-1'))) ;
  243. 'FINPROC' as2 ama1 ;
  244.  
  245.  
  246. ** TRHIST
  247. 'DEBPROC' TRHIST ;
  248. 'ARGUMENT' th*'TABLE ' ;
  249. * On enlève le premier indice des listes
  250. hltps = 'ENLEVER' (th . 'ltps') 1 ;
  251. hlpsi = 'ENLEVER' (th . 'lpsi') 1 ;
  252. hlerr = 'ENLEVER' (th . 'lerr') 1 ;
  253. thl = (th . 'lpdt') ;
  254. hlpdt = 'ENLEVER' (thl . 'min') 1 ;
  255. hlconv = 'ENLEVER' (thl . 'conv') 1 ;
  256. hldiff = 'ENLEVER' (thl . 'diff') 1 ;
  257. * Pas de temps = fn(t)
  258. evpdt = 'EVOL' 'MANU' 'TEMPS' hltps 'PDT' hlpdt ;
  259. 'DESSIN' evpdt 'MIMA' 'TITR' 'Pas de temps' ;
  260. * LOG10(pas de temps) = fn(t)
  261. ltco = ('LOG' (hlconv '*' alpha)) '/' ('LOG' 10.0D0) ;
  262. ltdi = ('LOG' (hldiff '*' alpha)) '/' ('LOG' 10.0D0) ;
  263. ltmi = ('LOG' hlpdt) '/' ('LOG' 10.0D0) ;
  264. evco = 'COULEUR'
  265. ('EVOL' 'MANU' 'TEMPS' hltps 'dtconv' ltco) 'BLEU' ;
  266. evdi = 'COULEUR'
  267. ('EVOL' 'MANU' 'TEMPS' hltps 'dtdiff' ltdi) 'ROUG' ;
  268. evmi = 'COULEUR'
  269. ('EVOL' 'MANU' 'TEMPS' hltps 'dt' ltmi) 'BLAN' ;
  270. tabt = 'TABLE' ; tabt . 'TITRE' = 'TABLE' ;
  271. tabt . 1 = 'TIRC' ;
  272. tabt . 2 = 'TIRL' ;
  273. tabt . 3 = 'NOLI' ;
  274. tabt . 'TITRE' . 1 = 'CHAINE' 'Pdt convection' ;
  275. tabt . 'TITRE' . 2 = 'CHAINE' 'Pdt diffusion' ;
  276. tabt . 'TITRE' . 3 = 'CHAINE' 'Pdt min(conv, diff)' ;
  277. 'DESSIN' (evco 'ET' evdi 'ET' evmi)
  278. 'MIMA' 'TITR' 'Pas de temps'
  279. 'LEGE' tabt ;
  280. * Max |Fn de courant| = fn(t)
  281. evpsi = 'EVOL' 'MANU' 'TEMPS' hltps 'PSI' hlpsi ;
  282. 'DESSIN' evpsi 'MIMA' 'TITR' 'Max |Fn de courant|' ;
  283. * Max |Erreur Linf Vit.| = fn(t) (convergence)
  284. everr = 'EVOL' 'MANU' 'TEMPS' hltps 'ERRLINF'
  285. (('LOG' hlerr) '/' ('LOG' 10.0D0)) ;
  286. 'DESSIN' everr 'MIMA' 'TITR' 'Log Erreur Linf Vit.' ;
  287. 'FINPROC' ;
  288.  
  289. ** TRCHAMP
  290. 'DEBPROC' TRCHAMP ;
  291. 'ARGUMENT' trx*'TABLE ' ;
  292. as2 ama1 = 'KOPS' 'MATRIK' ;
  293. trv = (trx . 'EQEX') ;
  294. 'SI' ('NON' ('MULT' (trv . 'PASDETPS' . 'NUPASDT')
  295. (trv . 'NPTRC'))) ;
  296. 'QUITTER' TRCHAMP ;
  297. 'FINSI' ;
  298. tinco = (trv . 'INCO') ;
  299. $dom = (trx . 'DOMZ') ;
  300. dom = ('DOMA' $dom 'MAILLAGE') ;
  301. cdom = 'CONTOUR' dom ;
  302. tphy = (trv . 'PASDETPS' . 'TPS') ;
  303. * Vitesses
  304. vitesse = (tinco . 'UN') ; vref = (tinco . 'UREF') ;
  305. titv = ('CHAINE' 'Champ de vitesse (VECT SOMMET) à t = '
  306. tphy) ;
  307. vv = 'VECTEUR' vitesse (0.2D0 '/' vref) 'UX' 'UY' 'JAUNE' ;
  308. 'TRACER' vv cdom 'TITR' titv ;
  309. * Fonction de courant
  310. 'OPTION' 'ISOV' 'SULI' ;
  311. psi = (tinco . 'PSI') ;
  312. titpsi = ('CHAINE' 'Fonction de courant (SCAL SOMMET) à t = '
  313. tphy) ;
  314. 'TRACER' psi dom cdom 14 'TITR' titpsi ;
  315. * Pression
  316. * NB : On n'utilise pas 'ELNO' : on dessine une pression
  317. * constante sur un élément.
  318. pression = (trv . 'INCO' . 'PRESSION') ;
  319. modelp = 'MODELISER' dom 'THERMIQUE' ;
  320. elemp = 'KCHA' $dom 'CHAM' pression ;
  321. titpres = ('CHAINE' 'Pression (SCAL CENTRE) à t = '
  322. tphy) ;
  323. 'TRACER' elemp modelp cdom 'TITR' titpres ;
  324. 'FINPROC' as2 ama1 ;
  325. *
  326. ** Fin de la définition des procédures
  327. **************************************************************
  328.  
  329. **************************************************************
  330. ** Début du 'main'
  331. *
  332. **** Définition des constantes
  333. * l, h, nl, nh : données pour la boite.
  334. * egeom : erreur géométrique pour 'ELIMINATION'
  335. * aspect : rapport d'aspect de la boite
  336. * nu, g, rho : paramètres du fluide
  337. * tg, td : températures sur les murs gauches et droits
  338. h = 1.0D0 ;
  339. 'SI' court ; nh = 3 ; 'SINON' ; nh = 5 ; 'FINSI' ;
  340. aspect = 4.0D0 ;
  341. l = h '*' aspect ;
  342. 'SI' court ;
  343. nl = 'ENTIER' (nh '*' 3) ;
  344. 'SINON' ;
  345. nl = 'ENTIER' (nh '*' aspect) ;
  346. 'FINSI' ;
  347. egeom = 1.0D-4 ;
  348. nu = 1.0D0 ; g = (0.D0 -1.D0) ;
  349. tg = 0.D0 ; td = aspect ;
  350.  
  351. **** Création des maillages
  352. lp = l '/' 2.0D0 ; hp = h '/' 2.0D0 ;
  353. mlp = (-1.0D0) '*' lp ; mhp = (-1.0D0 '*' hp) ;
  354. pmil = lp hp ;
  355. pA = 0.0D0 0.0D0 ; pB = l 0.0D0 ;
  356. pC = l h ; pD = 0.0D0 h ;
  357. pDA = 0.0D0 hp ; pBC = l hp ;
  358. bas = pA 'DROIT' nl pB ; haut = pD 'DROIT' nl pC ;
  359. rwall = pB 'DROIT' nh pC ; lwall = pA 'DROIT' nh pD ;
  360. median = pDA 'DROIT' nl pBC ;
  361. mt = 'DALLER' haut rwall bas lwall ;
  362. mt = chan mt QUAF ;
  363. $mt= MODE mt 'NAVIER_STOKES' DISCR ; DOMA $MT 'IMPR' ;
  364. mt = (DOMA $mt 'MAILLAGE') ; 'TASSER' mt ;
  365. haut = 'CHANGER' haut SEG2 ; bas = 'CHANGER' bas SEG2 ;
  366. lwall = 'CHANGER' lwall SEG2 ; rwall = 'CHANGER' rwall SEG2 ;
  367. median = 'CHANGER' median SEG2 ;
  368. cmt = (lwall 'ET' bas 'ET' rwall 'ET' haut) ;
  369. 'ELIMINATION' (mt 'ET' bas 'ET' rwall 'ET' haut
  370. 'ET' lwall 'ET' cmt 'ET' median) egeom ;
  371.  
  372. **** Initialisation de la table des historiques
  373. *
  374. thist = 'TABLE' 'HIST' ;
  375. TABTPS= 'TEMPS' 'NOEC';
  376. thist . 'tpscpu' = TABTPS.'TEMPS_CPU'.'INITIAL' ;
  377. * Listes
  378. thist . 'ltps' = 'PROG' ;
  379. thist . 'lpsi' = 'PROG' ;
  380. thist . 'lerr' = 'PROG' ;
  381. thist . 'lpdt' = 'TABLE' 'LPDT' ; thl = (thist . 'lpdt') ;
  382. thl . 'conv' = 'PROG' ; thl . 'diff' = 'PROG' ;
  383. thl . 'min' = 'PROG' ;
  384.  
  385. **** Initialisation des tables rv et rvp
  386. rv = 'EQEX' $mt 'OPTI' discconv
  387. 'ZONE' $mt 'OPER' 'NS' 'NU' 'GB' 'TN' 'TREF'
  388. 'INCO' 'UN'
  389. 'OPTI' 'CENTREE'
  390. 'ZONE' $mt 'OPER' 'DFDT' 1. 'UN' 'DELTAT' 'INCO' 'UN'
  391. ;
  392. * Conditions aux limites
  393. rv = 'EQEX' rv
  394. 'CLIM' 'UN' 'UIMP' cmt 0.0D0
  395. 'UN' 'VIMP' cmt 0.0D0 ;
  396. 'SI' graph ;
  397. rv = 'EQEX' rv
  398. 'ZONE' $mt 'OPER' 'CALCPSI'
  399. 'ZONE' $mt 'OPER' 'MAJHIST'
  400. 'ZONE' $mt 'OPER' 'TRCHAMP' ;
  401. 'FINSI' ;
  402.  
  403. RVP = EQEX 'OPTI' 'EF' KPRESS
  404. 'ZONE' $MT OPER KBBT -1. betap INCO 'UN' 'PRES'
  405. ;
  406.  
  407. rvp.'METHINV'.TYPINV=1 ;
  408. rvp.'METHINV'.IMPINV=0 ;
  409. rvp.'METHINV'.NITMAX=300;
  410. rvp.'METHINV'.PRECOND=3 ;
  411. rvp.'METHINV'.RESID =1.e-8 ;
  412. rvp.'METHINV' . 'FCPRECT'=100 ;
  413. rvp.'METHINV' . 'FCPRECI'=100 ;
  414.  
  415. RV.'PROJ' =RVP ;
  416.  
  417. rv . 'INCO' = 'TABLE' 'INCO' ;
  418. rv . 'HISTOIRE' = thist ;
  419.  
  420. **** Initialisation des inconnues
  421. * V -> 0 ; T gradient constant avec tg sur lwall, td sur rwall
  422. rv . 'INCO' . 'UN-1' = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ;
  423. rv . 'INCO' . 'UN' = 'KCHT' $mt 'VECT' 'SOMMET' (0.D0 0.D0) ;
  424. rv . 'INCO' . 'PRES' = 'KCHT' $mt 'SCAL' KPRESS 0.D0 ;
  425. rv . 'INCO' . 'TN' = 'KCHT' $mt 'SCAL' 'SOMMET'
  426. (tg '+' ((('COORDONNEE' 1 mt)
  427. '/' l)
  428. '*' (td '-' tg)) ) ;
  429.  
  430. **** Valeurs des paramètres :
  431. *
  432. ** Physiques
  433. *
  434. * Gr : Nombre de Grashof
  435. * tref : température de référence (approx. de Boussinesq)
  436. * Il faut la dissymétriser pour observer la transition
  437. * 3 -> 2 cellules
  438. * uref : échelle de vitesse (cf. adimensionnement)
  439. * ampvit : facteur d'amplification pour le tracé des vitesses
  440. *
  441. 'SI' court ;
  442. Gr = 5.0D3 ; tref = (tg '+' td) '/' 2.0D0 ;
  443. 'SINON' ;
  444. Gr = 40.0D3 ; tref = tg ;
  445. 'FINSI' ;
  446. uref = (Gr '**' 0.5D0) ;
  447. *
  448. ** Numériques
  449. *
  450. * nbiter : nombre d'itérations
  451. * nptrc : fréquence pour le tracé des champs (.ps ou à l'écran)
  452. * fidt : fréquence d'affichage des messages à l'écran
  453. * alpha : multiplicateur du pas de temps
  454. * pour les éléments MACRO
  455. 'SI' court ;
  456. nbiter = 250 ; nptrc = 125 ; fidt = 50 ;
  457. 'SINON' ;
  458. nbiter = 15000 ; nptrc = 2500 ; fidt = 100 ;
  459. 'FINSI' ;
  460. alpha = 0.9D0 ;
  461. *
  462. ** Remplissage des tables
  463. *
  464. rv . 'INCO' . 'NU' = nu ;
  465. rv . 'INCO' . 'GB' = g '*' Gr ;
  466. rv . 'INCO' . 'TREF' = tref ;
  467. rv . 'INCO' . 'UREF' = uref ;
  468. rv . 'ALFA' = alpha ;
  469. rv . 'FIDT' = fidt ;
  470. rv . 'NPTRC' = nptrc ;
  471. rv . 'ITMA' = nbiter ;
  472. *
  473. **
  474. ***
  475. **** Exécution
  476. SUMMARY ;
  477. 'SI' inta ; 'OPTION' 'DONN' 5 ; 'FINSI' ;
  478. EXEC rv ;
  479. TABTP1= 'TEMPS' 'NOEC';
  480. thist . 'tpscpu' = (thist . 'tpscpu') '+' TABTP1.'TEMPS_CPU'.'INITIAL' ;
  481. 'SI' graph ; TRHIST thist ; 'FINSI' ;
  482. ****
  483. ***
  484. **
  485. *
  486. ** Le cas-test donne-t-il un résultat correct ??
  487. 'SI' court ;
  488. *
  489. ** Vérification de la centrosymétrie sur les vitesse
  490. *
  491. vit = (rv . 'INCO' . 'UN') ;
  492. tvit = vit 'TOURNER' 180.0D0 pmil ;
  493. vit = 'KCHT' $mt 'VECT' 'SOMMET' vit ;
  494. 'ELIMINATION' (('EXTRAIRE' tvit 'MAIL') 'ET' mt) egeom ;
  495. tvit = 'KCHT' $mt 'VECT' 'SOMMET' tvit ;
  496. dv = 'KOPS' vit '-' tvit ;
  497. critere1 = ('MAXIMUM' dv 'ABS') '/' uref ;
  498. * Valeur de critere1 au 2/10/97 : 1.718764099177966D-15
  499. limite1 = 1.0D-12 ;
  500. *
  501. ** Evolution vitesse verticale le long de la médiane
  502. *
  503. evvm = 'EVOL' 'CHPO' vit 'UY' median ;
  504. evym = 'EXTRAIRE' evvm 'ORDO' ;
  505. list (evym *1.e-6);
  506. *
  507. * Résultat obtenu le 2/10/97
  508. * correspondant à critere2 = 1.507288760336422D-16
  509. evvref = 'PROG' 0.0D0 -.2205372973655706D+02
  510. -.1537657415971809D+02 -.9886959157032784D+01 -.4994589224716669D+01
  511. -.1325630316341117D+01 .5065207872228873D+00 .9297558065189220D+00
  512. .5908058903982639D+00 .2945842774751989D-13 -.5908058903982122D+00
  513. -.9297558065189337D+00 -.5065207872229142D+00 .1325630316341034D+01
  514. .4994589224716784D+01 .9886959157032821D+01 .1537657415971808D+02
  515. .2205372973655705D+02 0.0D0 ;
  516. * Résultat obtenu le 15/06/2014
  517. evvref = 'PROG'
  518. -7.24189E-39 -22.049 -15.375 -9.8821 -4.9918 -1.3199 0.50926 0.93264
  519. 0.59143 -1.04084E-12 -0.59143 -0.93264 -0.50926 1.3199 4.9918
  520. 9.8821 15.375 22.049 7.24188E-39 ;
  521. critere2 = ('MAXIMUM' (evym '-' evvref) 'ABS') '/' uref ;
  522. limite2 = 1.0D-4 ;
  523. * pour tenir compte de l'affichage de 5 chiffres significatifs
  524. * Tps CPU (le 2/10/97) ; 1009 centièmes de secondes
  525. * (court = VRAI ; graph = FAUX ; inta = FAUX ;)
  526. TABTP1= 'TEMPS' 'NOEC';
  527. thist . 'tpscpu'= (thist . 'tpscpu') '+' TABTP1.'TEMPS_CPU'.'INITIAL';
  528. *
  529. ** Affichage des messages et des erreurs éventuelles
  530. *
  531. 'OPTION' 'ECHO' 1 ;
  532. 'SAUTER' 2 'LIGNE' ;
  533. 'MESSAGE' 'Debriefing :' ;
  534. 'MESSAGE' '------------' ;
  535. 'SAUTER' 'LIGNE' ;
  536. 'MESSAGE' ('CHAINE'
  537. 'Erreur/Limite de centrosymétrie du champ de vitesses :') ;
  538. 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere1 ' / ' limite1) ;
  539. 'MESSAGE' ('CHAINE'
  540. 'Erreur/Limite Vy sur la médiane horizontale') ;
  541. 'MESSAGE' ('CHAINE' 'FORMAT' '(D24.16)' critere2 ' / ' limite2) ;
  542. 'MESSAGE' ('CHAINE' 'Temps CPU / Temps CPU (30/9/97) : ') ;
  543. 'MESSAGE' ('CHAINE' ('ENTIER' (thist . 'tpscpu')) ' / ~1000'
  544. ' centième(s) de secondes') ;
  545. mess ' ->'
  546. critere1 ' 'limite1' 'critere2' 'limite2 ;
  547. 'SI' ('OU' (critere1 '>' limite1) (critere2 '>' limite2)) ;
  548. 'ERREUR' 5 ;
  549. 'FINSI' ;
  550. 'MESSAGE' 'Tout s_est bien passé' ;
  551. 'OPTION' 'ECHO' 1 ;
  552. 'FINSI' ;
  553. SUMMARY ;
  554. 'SI' inta ; 'OPTION' 'DONN' 5 ; 'FINSI' ;
  555. 'FIN' ;
  556. *
  557. ** Fin du 'main'
  558. **************************************************************
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales