Télécharger ckon.eso

Retour à la liste

Numérotation des lignes :

ckon
  1. C CKON SOURCE CB215821 25/04/23 21:15:04 12247
  2. SUBROUTINE CKON(KIZX)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : CKON
  8. C
  9. C DESCRIPTION : Subroutine appellée par KONV
  10. C
  11. C Modelisation 2D/3D des equations d'Euler
  12. C
  13. C Calcul de flux aux interfaces
  14. C
  15. C LANGUAGE : FORTRAN 77 + ESOPE 2000 (avec estensions CISI)
  16. C
  17. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  18. C
  19. C************************************************************************
  20. C
  21. C
  22. C APPELES (E/S) : ACMO, ERREUR, ACME, ACMM, LEKTAB, CRTABL, ECMM,
  23. C ECMO, ECMF
  24. C
  25. C
  26. C APPELES (Calcul) : CKON1 (2D, gaz "calorically perfect")
  27. C CKON2 (3D, gaz "calorically perfect")
  28. C CKON3 (2D, gaz "thermally perfect")
  29. C CKON4 (3D, gaz "thermally perfect")
  30. C
  31. C************************************************************************
  32. C
  33. C*** ENTREE
  34. C
  35. C Phrase d'appel (GIBIANE) :
  36. C
  37. C KONV TAB ;
  38. C
  39. C (NB: KIZX qui appairesse dans CKON(KIZX) est le pointeur de la
  40. C table TAB)
  41. C
  42. C La table de sous type KIZX a été généré par EQEX et
  43. C s'appelle RV.*KONV; elle contient differents arguments:
  44. C
  45. C 1) la table RV, généré par EQEX:
  46. C
  47. C KIZX . 'EQEX'
  48. C
  49. C 2) la table des options
  50. C
  51. C KIZX . 'KOPT'
  52. C
  53. C 3) la table domaine de KONV,
  54. C
  55. C KIZX . 'NOMZONE'
  56. C KIZX . 'DOMZ '
  57. C
  58. C 4) tous les inconnues du probleme global
  59. C
  60. C KIZX . 'EQEX' . 'INCO'
  61. C
  62. C 5) la methode de calcul
  63. C
  64. C KIZX . 'KOPT' . 'IDCEN'
  65. C
  66. C 6) mono-espece, multi-especes, multi-especes "thermally perfect"
  67. C
  68. C KIZX . 'KOPT' . 'IDEUL'
  69. C
  70. C
  71. C 7) le variables primales de KONV,
  72. C i.e. les arguments de l'operateur KONV:
  73. C
  74. C KIZX . 'ARG1 '
  75. C
  76. C KIZX . 'ARG2 '
  77. C
  78. C ...
  79. C
  80. C
  81. C 8) la liste des variables duales, i.e. les inconnues traites par
  82. C KONV:
  83. C
  84. C KIZX . 'LISTINCO'
  85. C
  86. C
  87. C**** SORTIE
  88. C
  89. C 1) les Flux aux faces, sont conservés dans la table
  90. C
  91. C KIZX . 'EQEX' . 'KIZG'
  92. C
  93. C 2) la table PASDETPS (***A CHANGER***)
  94. C
  95. C
  96. C***********************************************************************
  97. C
  98. C************************************************************************
  99. C
  100. C HISTORIQUE (Anomalies et modifications éventuelles)
  101. C
  102. C HISTORIQUE :
  103. C
  104. C************************************************************************
  105. C
  106. IMPLICIT INTEGER(I-N)
  107. INTEGER KIZX, IEQEX, IKOPT, IDOMA, INCO
  108. & , IND, INDMET, INDEUL
  109. & , NBRINC
  110. & , NORD, NORDP1, IROF, IVITF, IPF, IGAMF
  111. & , IFRMAF
  112. & , LINCO
  113. & , MELEMC, MELEMF, MELEFE
  114. & , ICHPSU, ICHPDI
  115. & , KIZG, IZG1, IZG2, IZG3, IZG4, IZG5
  116. & , NLCEMI
  117. & , MTABT
  118. & , INDIC, NBCOMP, NESP, IPGAZ, NSCA, ISCAF
  119. & , IRET, IENT, I1, I2, IESP, JGM, JGN
  120. & , N, NAT, NC, NSOUPO, NCELL
  121. C
  122. REAL*8 DT, DIAMEL, XVAL
  123. CHARACTER*(8) TYPE,NOMZ,MOTLU
  124. CHARACTER*(8) ARG
  125. CHARACTER*(40) MESERR
  126. CHARACTER*(4) NOMTOT(2)
  127. LOGICAL LOGME, LOGNC, LOGAN, XLOGI, LOGSCA
  128. C
  129. C**** Variables en ACCTAB
  130. C
  131. INTEGER IVALI, IRETI,IVALR, IRETR, MMODEL, INEFMD
  132. REAL*8 XVALI, XVALR
  133. LOGICAL LOGII, LOGIR
  134. CHARACTER*(8) MTYPI, MTYPR, CHARR
  135. C
  136. C**** Segment des proprietes du gaz
  137. C
  138. SEGMENT PROPHY
  139. REAL*8 ACV(NORDP1,NESP+1), R(NESP+1), H0K(NESP+1)
  140. & ,ACVTOG(NORDP1), ACVTOD(NORDP1)
  141. ENDSEGMENT
  142. C
  143. C**** Les Includes.
  144. C
  145.  
  146. -INC PPARAM
  147. -INC CCOPTIO
  148. -INC SMCHPOI
  149. -INC SMCOORD
  150. -INC SMLMOTS
  151. POINTEUR MLMOEU.MLMOTS, MLMOSC.MLMOTS
  152. -INC SMLREEL
  153. -INC SMELEME
  154. C
  155. C**** Initialisation des variables pour la gestion des erreurs.
  156. C
  157. LOGNC = .FALSE.
  158. LOGAN = .FALSE.
  159. MESERR = ' '
  160.  
  161. C
  162. C**** Lecture de KIZX . 'EQEX'. (C'est le pointeur de la table RV)
  163. C
  164. IEQEX = 0
  165. TYPE = 'TABLE '
  166. CALL ACMO(KIZX,'EQEX',TYPE,IEQEX)
  167. IF(IERR .NE. 0) GOTO 9999
  168. IF(TYPE .NE. 'TABLE ')THEN
  169. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  170. C
  171. C******* Message d'erreur standard
  172. C -301 0 %m1:40
  173. C
  174. CALL ERREUR(-301)
  175. C
  176. C******* Message d'erreur standard
  177. C 21 2
  178. C Données incompatibles
  179. C
  180. CALL ERREUR(21)
  181. GO TO 9999
  182. ENDIF
  183. C
  184. C**** Lecture de KIZX . 'KOPT' (les optiones de KONV)
  185. C
  186. IKOPT = 0
  187. TYPE = 'TABLE '
  188. CALL ACMO(KIZX,'KOPT',TYPE,IKOPT)
  189. IF(IERR .NE. 0) GOTO 9999
  190. IF(TYPE .NE. 'TABLE ')THEN
  191. MOTERR(1:40) = 'EULER, subroutine ckon.eso, EQEX = ? '
  192. C
  193. C******* Message d'erreur standard
  194. C -301 0 %m1:40
  195. C
  196. CALL ERREUR(-301)
  197. C
  198. C On EQEX on a pas controlles qu'il n'y a pas KOPT
  199. C
  200. C******* Message d'erreur standard
  201. C 5 3
  202. C Erreur anormale.contactez votre support
  203. C
  204. CALL ERREUR(5)
  205. GO TO 9999
  206. ENDIF
  207. C
  208. C**** Lecture de KIZX . 'NOMZONE' (le domaine de KONV: le nom)
  209. C
  210. CALL ACMM(KIZX,'NOMZONE',NOMZ)
  211. IF(IERR .NE. 0)GOTO 9999
  212. C
  213. C**** Lecture de KIZX . 'DOMZ ' (le domaine de KONV: le pointeur)
  214. C
  215. IDOMA = 0
  216. TYPE = ' '
  217. CALL ACMO(KIZX,'DOMZ ',TYPE,MMODEL)
  218. IF(IERR .NE. 0) GOTO 9999
  219. IF(TYPE .NE. 'MMODEL ')THEN
  220. MOTERR(1:40) = 'EULER, subroutine ckon.eso, ZONE = ? '
  221. C
  222. C******* Message d'erreur standard
  223. C -301 0 %m1:40
  224. C
  225. CALL ERREUR(-301)
  226. C
  227. C******* Message d'erreur standard
  228. C 5 3
  229. C Erreur anormale.contactez votre support
  230. C
  231. CALL ERREUR(5)
  232. GO TO 9999
  233. ELSE
  234. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  235. ENDIF
  236. C
  237. C**** Lecture de KIZX . 'EQEX' . 'INCO'.
  238. C Le pointeur de la table qui contient toutes les inconnues du
  239. C probleme
  240. C
  241. TYPE = 'TABLE '
  242. CALL ACMO(IEQEX,'INCO',TYPE,INCO)
  243. IF(IERR .NE. 0) GOTO 9999
  244. IF(TYPE .NE. 'TABLE ')THEN
  245. MOTERR(1:40) = 'EULER, subroutine ckon.eso, INCO = ? '
  246. C
  247. C******* Message d'erreur standard
  248. C -301 0 %m1:40
  249. C
  250. CALL ERREUR(-301)
  251. C
  252. C******* Message d'erreur standard
  253. C 21 2
  254. C Données incompatibles
  255. C
  256. CALL ERREUR(21)
  257. GO TO 9999
  258. ENDIF
  259. C
  260. C
  261. C**** Model de gaz:
  262. C EULER mono-espece "calorically perfect" (IDEUL = 1)
  263. C EULER multi-espece "calorically perfect" (IDEUL = 2)
  264. C EULER multi-espece "thermally perfect" (IDEUL = 3)
  265. C
  266. CALL ACME(IKOPT,'IDEUL',INDEUL)
  267. IF(IERR .NE. 0) GOTO 9999
  268. IF((INDEUL .LT. 1) .OR. (INDEUL .GT. 3))THEN
  269. MOTERR(1:40) = 'EULER, subroutine ckon.eso, IDEUL = ? '
  270. C
  271. C******** Message d'erreur standard
  272. C -301 0 %m1:40
  273. C
  274. CALL ERREUR(-301)
  275. C
  276. C******* Message d'erreur standard
  277. C 5 3
  278. C Erreur anormale.contactez votre support
  279. C
  280. CALL ERREUR(5)
  281. GOTO 9999
  282. ENDIF
  283. IF(INDEUL .LE. 2)THEN
  284. C
  285. C*******************************************************************
  286. C******************* GAZ CALORICALLY PERFECT ***********************
  287. C*******************************************************************
  288. C
  289. IF(INDEUL .EQ.1)THEN
  290. LOGME = .FALSE.
  291. ELSE
  292. LOGME = .TRUE.
  293. ENDIF
  294. C
  295. C******* Lecture des options de KONV dans KIZX . 'KOPT'
  296. C
  297. C******* Metode utilisée
  298. C
  299. CALL ACME(IKOPT,'IDCEN',IND)
  300. IF(IERR .NE. 0) GOTO 9999
  301. IF(IND .EQ. 9)THEN
  302. C
  303. C********** GODUNOV
  304. C
  305. INDMET = 1
  306. ELSEIF(IND .EQ. 10)THEN
  307. C
  308. C********** Van Leer FVS
  309. C
  310. INDMET = 2
  311. ELSEIF(IND .EQ. 11)THEN
  312. C
  313. C********** Van Leer-HANEL FVS
  314. C
  315. INDMET = 3
  316. ELSEIF(IND .EQ. 12)THEN
  317. C
  318. C********** HUS (Van Leer FVS + Osher FDS)
  319. C
  320. INDMET = 4
  321. ELSEIF(IND .EQ. 13)THEN
  322. C
  323. C********** HUS (Van Leer-HANEL FVS + Osher FDS)
  324. C
  325. INDMET = 5
  326. ELSEIF(IND .EQ. 14)THEN
  327. C
  328. C********** AUSM
  329. C
  330. C INDMET = 6
  331. C ELSE
  332. C
  333. C********** Message d'erreur standard
  334. C 251 2
  335. C Tentative d'utilisation d'une option non implémentée
  336. C
  337. CALL ERREUR(251)
  338. ENDIF
  339. C
  340. C******* Lecture des arguments de KONV KIZX . 'ARG*'
  341. C
  342. C Lecture du MCHAML 'FACEL' contenant la masse volumique.
  343. C
  344. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  345. C
  346. MOTLU=' '
  347. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  348. IF(IERR.NE.0) GOTO 9999
  349. C
  350. C******* On va lire le pointeur du MCHAML
  351. C
  352. TYPE='MCHAML '
  353. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  354. IF(IERR.NE.0) GOTO 9999
  355. IF(TYPE .NE. 'MCHAML ')THEN
  356. C
  357. C********** Message d'erreur standard
  358. C 37 2
  359. C On ne trouve pas d'objet de type %m1:8
  360. C
  361. MOTERR(1:8) = 'MCHAML '
  362. CALL ERREUR(37)
  363. GOTO 9999
  364. ENDIF
  365. C
  366. C******* Lecture du MCHAML 'FACEL' vitesse
  367. C
  368. MOTLU=' '
  369. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  370. IF(IERR.NE.0)GOTO 9999
  371. C
  372. TYPE='MCHAML '
  373. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  374. IF(IERR .NE. 0) GOTO 9999
  375. IF(TYPE .NE. 'MCHAML ')THEN
  376. C
  377. C********** Message d'erreur standard
  378. C 37 2
  379. C On ne trouve pas d'objet de type %m1:8
  380. C
  381. MOTERR(1:8) = 'MCHAML '
  382. CALL ERREUR(37)
  383. GOTO 9999
  384. ENDIF
  385. C
  386. C******** Lecture du MCHAML 'FACEL' contenant la pression
  387. C
  388. MOTLU=' '
  389. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  390. IF(IERR .NE. 0) GOTO 9999
  391. C
  392. TYPE='MCHAML '
  393. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  394. IF(IERR .NE. 0) GOTO 9999
  395. IF(TYPE .NE. 'MCHAML ')THEN
  396. C
  397. C********** Message d'erreur standard
  398. C 37 2
  399. C On ne trouve pas d'objet de type %m1:8
  400. C
  401. MOTERR(1:8) = 'MCHAML '
  402. CALL ERREUR(37)
  403. GOTO 9999
  404. ENDIF
  405. C
  406. C******* Lecture du MCHAML 'FACEL' contenant les gamma
  407. C
  408. MOTLU=' '
  409. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  410. IF(IERR .NE. 0) GOTO 9999
  411. C
  412. TYPE='MCHAML '
  413. CALL ACMO(INCO,MOTLU,TYPE,IGAMF)
  414. IF(IERR .NE. 0) GOTO 9999
  415. IF(TYPE .NE. 'MCHAML ')THEN
  416. C
  417. C********** Message d'erreur standard
  418. C 37 2
  419. C On ne trouve pas d'objet de type %m1:8
  420. C
  421. MOTERR(1:8) = 'MCHAML '
  422. CALL ERREUR(37)
  423. GOTO 9999
  424. ENDIF
  425. C
  426. C******* Si LOGME -> MULTIESPECES
  427. C
  428. IF(LOGME)THEN
  429. C
  430. C********** Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  431. C
  432. MOTLU=' '
  433. CALL ACMM(KIZX,'ARG5 ',MOTLU)
  434. IF(IERR .NE. 0) GOTO 9999
  435. C
  436. TYPE='MCHAML '
  437. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  438. IF(IERR .NE. 0) GOTO 9999
  439. IF(TYPE .NE. 'MCHAML ')THEN
  440. C
  441. C********** Message d'erreur standard
  442. C 37 2
  443. C On ne trouve pas d'objet de type %m1:8
  444. C
  445. MOTERR(1:8) = 'MCHAML '
  446. CALL ERREUR(37)
  447. GOTO 9999
  448. ENDIF
  449. C
  450. C********** Lecture de la table qui contient le proprieté du gaz
  451. C
  452. MOTLU=' '
  453. CALL ACMM(KIZX,'ARG6 ',MOTLU)
  454. IF(IERR .NE. 0) GOTO 9999
  455. C
  456. TYPE='TABLE '
  457. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  458. IF(IERR .NE. 0) GOTO 9999
  459. IF(TYPE .NE. 'TABLE ')THEN
  460. C
  461. C************* Message d'erreur standard
  462. C 37 2
  463. C On ne trouve pas d'objet de type %m1:8
  464. C
  465. MOTERR(1:8) = 'TABLE '
  466. CALL ERREUR(37)
  467. GOTO 9999
  468. ENDIF
  469. ENDIF
  470. C
  471. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  472. C
  473. TYPE='LISTMOTS'
  474. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  475. MLMOT1 = LINCO
  476. IF(IERR.NE.0)GOTO 9999
  477. SEGACT MLMOT1
  478. C
  479. C******* Verification du Nombre d'inconnues.
  480. C
  481. C Eulero mono-especie -> NBRINC = 3
  482. C Eulero multi-especies -> NBRINC = 4
  483. C
  484. NBRINC = MLMOT1.MOTS(/2)
  485. IF(LOGME)THEN
  486. IF(NBRINC .NE. 4)THEN
  487. C
  488. C************* Message d'erreur standard
  489. C -301 0 %m1:40
  490. C
  491. MOTERR(1:40) = 'EULERMS: LISTINCO = ? '
  492. CALL ERREUR(-301)
  493. C
  494. C************* Message d'erreur standard
  495. C 21 2 Données incompatibles
  496. C
  497. CALL ERREUR(21)
  498. GO TO 9999
  499. ENDIF
  500. ELSEIF(NBRINC .NE. 3)THEN
  501. C
  502. C********** Message d'erreur standard
  503. C -301 0 %m1:40
  504. C
  505. MOTERR(1:40) = 'EULER: LISTINCO = ? '
  506. CALL ERREUR(-301)
  507. C
  508. C********** Message d'erreur standard
  509. C 21 2 Données incompatibles
  510. C
  511. CALL ERREUR(21)
  512. GO TO 9999
  513. ENDIF
  514. C
  515. C
  516. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  517. C
  518. C
  519. C******* Lecture du MELEME SPG des points CENTRE.
  520. C
  521. C
  522. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  523. C
  524. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  525. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  526. C -> la correspondance global des noeuds saut!
  527. C
  528. C On peut utilizer ACCTAB ou ACMO
  529. C
  530. TYPE = 'MAILLAGE'
  531. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  532. IF(IERR .NE. 0) GOTO 9999
  533. IF(TYPE .NE. 'MAILLAGE')THEN
  534. MOTERR(1:8) = NOMZ
  535. MOTERR(9:40) = ' . CENTRE = ? '
  536. C
  537. C********** Message d'erreur standard
  538. C -301 0 %m1:40
  539. C
  540. CALL ERREUR(-301)
  541. C
  542. C********** Message d'erreur standard
  543. C 21 2
  544. C Données incompatibles
  545. C
  546. CALL ERREUR(21)
  547. GO TO 9999
  548. ENDIF
  549. C
  550. C******* Lecture du MELEME 'FACE' SPG des points FACE
  551. C
  552. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  553. IF(IERR .NE. 0) GOTO 9999
  554. IF(TYPE .NE. 'MAILLAGE')THEN
  555. MOTERR(1:8) = NOMZ
  556. MOTERR(9:40) = ' . FACE = ? '
  557. C
  558. C********** Message d'erreur standard
  559. C -301 0 %m1:40
  560. C
  561. CALL ERREUR(-301)
  562. C
  563. C********** Message d'erreur standard
  564. C 21 2
  565. C Données incompatibles
  566. C
  567. CALL ERREUR(21)
  568. GO TO 9999
  569. ENDIF
  570. C
  571. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  572. C
  573. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  574. IF(IERR .NE. 0) GOTO 9999
  575. IF(TYPE .NE. 'MAILLAGE')THEN
  576. MOTERR(1:8) = NOMZ
  577. MOTERR(9:40) = ' . FACEL = ? '
  578. C
  579. C******* Message d'erreur standard
  580. C -301 0 %m1:40
  581. C
  582. CALL ERREUR(-301)
  583. C
  584. C******* Message d'erreur standard
  585. C 21 2
  586. C Données incompatibles
  587. C
  588. CALL ERREUR(21)
  589. GO TO 9999
  590. ENDIF
  591. C
  592. C**** Lecture du CHPOINT contenant les surfaces des faces.
  593. C
  594. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  595. IF(IERR .NE. 0) GOTO 9999
  596. C
  597. C**** Lecture du CHPOINT contenant les diametres minimums.
  598. C
  599. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  600. IF(IERR .NE. 0) GOTO 9999
  601. C
  602. C
  603. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  604. C i.e. KIZX . 'EQEX' . 'KIZG'
  605. C
  606. C N.B. On recuper le pointeur des flux relatives aux
  607. C inconnues de KONV.
  608. C
  609. TYPE= ' '
  610. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  611. IF(IERR .NE. 0) GOTO 9999
  612. IF(TYPE .NE. 'TABLE ')THEN
  613. CALL CRTABL(KIZG)
  614. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  615. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  616. ENDIF
  617. C
  618. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  619. C ou extraction des leurs pointeurs
  620. C
  621. C
  622. C**** La masse volumique
  623. C
  624. C
  625. TYPE=' '
  626. ARG = MLMOT1.MOTS(1)
  627. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  628. IF(IERR .NE. 0) GOTO 9999
  629. IF(TYPE .NE. 'CHPOINT ')THEN
  630. TYPE = 'FACE'
  631. NBCOMP = 1
  632. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  633. IF(IERR .NE. 0)GOTO 9999
  634. C
  635. C******* Stokage du pointeur dans KIZG
  636. C
  637. ARG = MLMOT1.MOTS(1)
  638. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  639. ELSE
  640. INDIC = 1
  641. NBCOMP = 1
  642. NOMTOT(1) = ' '
  643. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  644. IF(IERR .NE. 0)GOTO 9999
  645. ENDIF
  646. C
  647. C**** Les debits
  648. C
  649. TYPE=' '
  650. ARG = MLMOT1.MOTS(2)
  651. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  652. IF(IERR .NE. 0) GOTO 9999
  653. IF(TYPE .NE. 'CHPOINT ')THEN
  654. TYPE='FACE'
  655. NBCOMP = IDIM
  656. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  657. IF(IERR .NE. 0) GOTO 9999
  658. C
  659. C******* Stokage du pointeur dans KIZG
  660. C
  661. ARG = MLMOT1.MOTS(2)
  662. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  663. ELSE
  664. INDIC = 1
  665. NBCOMP = IDIM
  666. NOMTOT(1) = ' '
  667. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  668. IF(IERR .NE. 0)GOTO 9999
  669. ENDIF
  670. C
  671. C**** L'energie totale volumique
  672. C
  673. TYPE=' '
  674. ARG = MLMOT1.MOTS(3)
  675. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  676. IF(IERR .NE. 0) GOTO 9999
  677. IF(TYPE .NE. 'CHPOINT ')THEN
  678. TYPE='FACE'
  679. NBCOMP = 1
  680. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  681. IF(IERR .NE. 0) GOTO 9999
  682. C
  683. C******* Stokage du pointeur dans KIZG
  684. C
  685. ARG = MLMOT1.MOTS(3)
  686. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  687. ELSE
  688. INDIC = 1
  689. NBCOMP = 1
  690. NOMTOT(1) = ' '
  691. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  692. IF(IERR .NE. 0)GOTO 9999
  693. ENDIF
  694. C
  695. C**** Les Masses Volumiques
  696. C
  697. IF(LOGME)THEN
  698. C
  699. C******* D'abord on extrait de la table de pointeur IPGAZ
  700. C la liste des especes splittes dans les equations
  701. C d'Euler
  702. C
  703. TYPE=' '
  704. CALL ACMO(IPGAZ,'ESPEULE ',TYPE,MLMOT2)
  705. IF(IERR .NE. 0) GOTO 9999
  706. IF(TYPE .NE. 'LISTMOTS')THEN
  707. C
  708. C********** Message d'erreur standard
  709. C -301 0 %m1:40
  710. C
  711. MOTERR(1:40) = 'KONV, ARG6 . ESPEULE = ??? '
  712. CALL ERREUR(-301)
  713. C
  714. C********** Message d'erreur standard
  715. C 21 2
  716. C Données incompatibles
  717. C
  718. CALL ERREUR(21)
  719. GOTO 9999
  720. ENDIF
  721. C
  722. SEGACT MLMOT2
  723. NESP = MLMOT2.MOTS(/2)
  724. C
  725. TYPE=' '
  726. ARG = MLMOT1.MOTS(4)
  727. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  728. IF(IERR .NE. 0) GOTO 9999
  729. IF(TYPE .NE. 'CHPOINT ')THEN
  730. NBCOMP = NESP
  731. TYPE='FACE '
  732. C
  733. C********** On cree le chpoint FACE
  734. C
  735. IPT1 = MELEMF
  736. SEGACT IPT1
  737. N=IPT1.NUM(/2)
  738. SEGDES IPT1
  739. NSOUPO=1
  740. NAT=1
  741. NC = NESP
  742. SEGINI, MCHPOI,MSOUPO,MPOVAL
  743. MCHPOI.JATTRI(1)=2
  744. MCHPOI.IFOPOI=IFOUR
  745. MCHPOI.MTYPOI=TYPE
  746. MCHPOI.MOCHDE(1:30)=' '
  747. MCHPOI.MOCHDE(31:60)=' '
  748. MCHPOI.MOCHDE(61:72)=' '
  749. MCHPOI.IPCHP(1)=MSOUPO
  750. SEGDES MCHPOI
  751. MSOUPO.IGEOC=MELEMF
  752. MSOUPO.IPOVAL=MPOVAL
  753. DO I1 = 1, NC
  754. MSOUPO.NOCOMP(I1) = MLMOT2.MOTS(I1)
  755. ENDDO
  756. SEGDES, MSOUPO,MPOVAL
  757. IZG4 = MCHPOI
  758. C
  759. C********** Stokage du pointeur dans KIZG
  760. C
  761. ARG = MLMOT1.MOTS(4)
  762. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  763. ELSE
  764. INDIC = 1
  765. NBCOMP = NESP
  766. NOMTOT(1) = ' '
  767. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  768. IF(IERR .NE. 0)GOTO 9999
  769. ENDIF
  770. SEGDES MLMOT2
  771. ENDIF
  772.  
  773. C
  774. C**** Calcul des flux et du pas du temps.
  775. C
  776. IF( IDIM .EQ. 2)THEN
  777. CALL CKON1(LOGME,INDMET,
  778. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  779. & ICHPSU,ICHPDI,
  780. & MELEMC,MELEMF,MELEFE,
  781. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  782. & LOGNC,LOGAN,MESERR)
  783. ELSE
  784. CALL CKON2(LOGME,INDMET,
  785. & IROF,IVITF,IPF,IGAMF,IFRMAF,
  786. & ICHPSU,ICHPDI,
  787. & MELEMC,MELEMF,MELEFE,
  788. & IZG1,IZG2,IZG3,IZG4,DT,DIAMEL,NLCEMI,
  789. & LOGNC,LOGAN,MESERR)
  790. ENDIF
  791. C
  792. IF(LOGAN)THEN
  793. C
  794. C******* Anomalie detectée
  795. C
  796. C
  797. C******* Message d'erreur standard
  798. C -301 0
  799. C %m1:40
  800. C
  801. MOTERR(1:40) = MESERR(1:40)
  802. CALL ERREUR(-301)
  803. C
  804. C******* Message d'erreur standard
  805. C 5 3
  806. C Erreur anormale.contactez votre support
  807. C
  808. CALL ERREUR(5)
  809. GOTO 9999
  810. ENDIF
  811. IF(LOGNC)THEN
  812. C
  813. C******* Message d'erreur standard
  814. C -301 0
  815. C %m1:40
  816. C
  817. MOTERR(1:40) = MESERR(1:40)
  818. CALL ERREUR(-301)
  819. C
  820. C******* Message d'erreur standard
  821. C 460 2
  822. C Pas de convergence dans les itérations internes
  823. C
  824. CALL ERREUR(460)
  825. GOTO 9999
  826. ENDIF
  827. C
  828. C**** Ecriture des RESULTATS
  829. C
  830. TYPE = 'TABLE '
  831. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  832. IF(IERR .NE. 0) GOTO 9999
  833. IF(TYPE .NE. 'TABLE ')THEN
  834. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  835. C
  836. C******* Message d'erreur standard
  837. C -301 0 %m1:40
  838. C
  839. CALL ERREUR(-301)
  840. C
  841. C******* Message d'erreur standard
  842. C 5 3
  843. C Erreur anormale.contactez votre support
  844. C
  845. CALL ERREUR(5)
  846. GO TO 9999
  847. ENDIF
  848. C
  849. C******* On remplie la table d'indice PASDETPS
  850. C
  851. CALL ECMF(MTABT,'DELTAT',DT)
  852. CALL ECMM(MTABT,'OPER','KONV')
  853. CALL ECMM(MTABT,'ZONE',NOMZ)
  854. CALL ECMF(MTABT,'DTCONV',DT)
  855. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  856. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  857. CALL ECME(MTABT,'NUEL',NLCEMI)
  858. C
  859. C**** Ecriture des CHPOINTs increments dans la table KIZG
  860. C déjà faite
  861. C
  862. SEGDES MLMOT1
  863. C
  864. ELSE
  865. C*******************************************************************
  866. C*******************************************************************
  867. C******************* GAZ THERMALLY PERFECT *************************
  868. C*******************************************************************
  869. C*******************************************************************
  870. C
  871. C*****************************
  872. C******* Metode utilisée *****
  873. C*****************************
  874. C
  875. C******* Metode utilisée
  876. C
  877. CALL ACME(IKOPT,'IDCEN',IND)
  878. IF(IERR .NE. 0) GOTO 9999
  879. C
  880. C IND METHODE (voir EQEX)
  881. C
  882. C 9 GODUNOV
  883. C 10 VANLEER (Van Leer FVS)
  884. C 11 VLH (Van Leer-HANEL FVS)
  885. C 12 HUSVL (Van Leer FVS + Osher FDS))
  886. C 13 HUSVLH (Van Leer-HANEL FVS + Osher FDS)
  887. C 14 AUSM (AUSM+, de Liou)
  888. C 15 CG (Colella-Glaz)
  889. C Pour l'instant van Leer - Hanel, Colella-Glaz
  890. C
  891. IF(IND .EQ. 11)THEN
  892. INDMET = 1
  893. ELSEIF(IND .EQ. 15)THEN
  894. INDMET = 2
  895. ELSE
  896. C
  897. C********** Message d'erreur standard
  898. C 251 2
  899. C Tentative d'utilisation d'une option non implémentée
  900. C
  901. CALL ERREUR(251)
  902. ENDIF
  903. C
  904. C********************************************************
  905. C******* Lecture des arguments de KONV KIZX . 'ARG*'*****
  906. C********************************************************
  907. C
  908. C
  909. C**** Lecture de la table qui contient le proprieté du gaz
  910. C Cette table est controlle par l'operateur PRIM
  911. C
  912. MOTLU=' '
  913. CALL ACMM(KIZX,'ARG1 ',MOTLU)
  914. IF(IERR .NE. 0) GOTO 9999
  915. C
  916. TYPE='TABLE '
  917. CALL ACMO(INCO,MOTLU,TYPE,IPGAZ)
  918. IF(IERR .NE. 0) GOTO 9999
  919. IF(TYPE .NE. 'TABLE ')THEN
  920. C
  921. C******* Message d'erreur standard
  922. C 37 2
  923. C On ne trouve pas d'objet de type %m1:8
  924. C
  925. MOTERR(1:8) = 'TABLE '
  926. CALL ERREUR(37)
  927. GOTO 9999
  928. ENDIF
  929. C
  930. C******* Degree des polynoms cv(T)
  931. C
  932. MTYPI = 'MOT '
  933. MTYPR = ' '
  934. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'NORD',LOGII,IRETI,
  935. & MTYPR,NORD,XVALR,CHARR,LOGIR,IRETR)
  936. IF(MTYPR .NE. 'ENTIER ')THEN
  937. C
  938. C******* Message d'erreur standard
  939. C -301 0 %m1:40
  940. C
  941. MOTERR(1:40) = 'ARG1 . NORD = ??? '
  942. CALL ERREUR(-301)
  943. C
  944. C******* Message d'erreur standard
  945. C 21 2
  946. C Données incompatibles
  947. C
  948. CALL ERREUR(21)
  949. GOTO 9999
  950. ENDIF
  951. NORDP1 = NORD + 1
  952. C
  953. C******* Nom de l'espece qui n'est pas dans les equations d'Euler
  954. C
  955. MTYPI = 'MOT '
  956. MTYPR = ' '
  957. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,'ESPNEULE',LOGII,IRETI,
  958. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  959. IF(MTYPR .NE. 'MOT ')THEN
  960. C
  961. C******* Message d'erreur standard
  962. C -301 0 %m1:40
  963. C
  964. MOTERR(1:40) = 'ARG1 . ESPNEULE = ??? '
  965. CALL ERREUR(-301)
  966. C
  967. C******* Message d'erreur standard
  968. C 21 2
  969. C Données incompatibles
  970. C
  971. CALL ERREUR(21)
  972. GOTO 9999
  973. ENDIF
  974. C
  975. C**** Les especes qui sont dans les Equations d'Euler
  976. C
  977. MTYPR = ' '
  978. CALL ACMO(IPGAZ,'ESPEULE',MTYPR,MLMOEU)
  979. IF(MTYPR .EQ. ' ')THEN
  980. NESP = 0
  981. IFRMAF = 0
  982. JGN = LOCOMP
  983. JGM = 1
  984. SEGINI MLMOT2
  985. MLMOT2.MOTS(1) = CHARR
  986. LOGME = .FALSE.
  987. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  988. C
  989. C******* Message d'erreur standard
  990. C -301 0 %m1:40
  991. C
  992. MOTERR(1:40) = 'ARG1 . ESPEULE = ??? '
  993. CALL ERREUR(-301)
  994. C
  995. C******* Message d'erreur standard
  996. C 21 2
  997. C Données incompatibles
  998. C
  999. CALL ERREUR(21)
  1000. GOTO 9999
  1001. ELSE
  1002. LOGME = .TRUE.
  1003. SEGACT MLMOEU
  1004. NESP = MLMOEU.MOTS(/2)
  1005. JGN = LOCOMP
  1006. JGM = NESP + 1
  1007. SEGINI MLMOT2
  1008. DO I1 = 1, NESP
  1009. MLMOT2.MOTS(I1) = MLMOEU.MOTS(I1)
  1010. ENDDO
  1011. MLMOT2.MOTS(NESP+1)=CHARR
  1012. ENDIF
  1013. C
  1014. C**** Les scalaires passifs
  1015. C
  1016. MTYPR = ' '
  1017. CALL ACMO(IPGAZ,'SCALPASS',MTYPR,MLMOSC)
  1018. IF(MTYPR .EQ. ' ')THEN
  1019. LOGSCA = .FALSE.
  1020. NSCA = 0
  1021. ISCAF = 0
  1022. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  1023. C
  1024. C******* Message d'erreur standard
  1025. C -301 0 %m1:40
  1026. C
  1027. MOTERR(1:40) = 'ARG1 . SCALPASS = ??? '
  1028. CALL ERREUR(-301)
  1029. C
  1030. C******* Message d'erreur standard
  1031. C 21 2
  1032. C Données incompatibles
  1033. C
  1034. CALL ERREUR(21)
  1035. GOTO 9999
  1036. ELSE
  1037. LOGSCA = .TRUE.
  1038. SEGACT MLMOSC
  1039. NSCA = MLMOSC.MOTS(/2)
  1040. ENDIF
  1041. C
  1042. C**** On rempli les segment PROPHY
  1043. C Ordre: IPGAZ . 'ESPEULE' + IPGAZ . 'ESPNEULE'
  1044. C On controlle aussi la compatibilite des
  1045. C donnes de la table
  1046. C
  1047. SEGINI PROPHY
  1048. C
  1049. C**** N.B. NOMTOT est un CHARACTER*(4)
  1050. C
  1051. DO I1 = 1, NESP+1
  1052. NOMTOT(1) = MLMOT2.MOTS(I1)
  1053. C
  1054. C******* CALL ACMF(...) ne marche pas parce que on a
  1055. C des blanches dans nos composantes
  1056. C
  1057. MTYPI = 'MOT '
  1058. MTYPR = ' '
  1059. CALL ACCTAB(IPGAZ,MTYPI,IVALI,XVALI,NOMTOT(1), LOGII,IRETI,
  1060. & MTYPR,IVALR,XVALR,CHARR,LOGIR,IESP)
  1061. C
  1062. C******* En IESP a la table IPGAZ.NOMTOT(1)
  1063. C
  1064. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'TABLE ')) THEN
  1065.  
  1066. C
  1067. C********** Message d'erreur standard
  1068. C -301 0 %m1:40
  1069. C
  1070. MOTERR = ' '
  1071. MOTERR(1:7) = 'ARG1 . '
  1072. MOTERR(8:11) = NOMTOT(1)
  1073. MOTERR(13:17) = '= ???'
  1074. CALL ERREUR(-301)
  1075. C
  1076. C********** Message d'erreur standard
  1077. C 21 2
  1078. C Données incompatibles
  1079. C
  1080. CALL ERREUR(21)
  1081. GOTO 9999
  1082. ENDIF
  1083. C
  1084. C******* R
  1085. C
  1086. MTYPI = 'MOT '
  1087. MTYPR = ' '
  1088. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'R' , LOGII,IRETI,
  1089. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1090. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1091.  
  1092. C
  1093. C********** Message d'erreur standard
  1094. C -301 0 %m1:40
  1095. C
  1096. MOTERR = ' '
  1097. MOTERR(1:7) = 'ARG1 . '
  1098. MOTERR(8:11) = NOMTOT(1)
  1099. MOTERR(13:23) = ' . R = ??? '
  1100. CALL ERREUR(-301)
  1101. C
  1102. C********** Message d'erreur standard
  1103. C 21 2
  1104. C Données incompatibles
  1105. C
  1106. CALL ERREUR(21)
  1107. GOTO 9999
  1108. ENDIF
  1109. PROPHY.R(I1)=XVALR
  1110. C
  1111. C******* H0K
  1112. C
  1113. MTYPI = 'MOT '
  1114. MTYPR = ' '
  1115. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'H0K' , LOGII,IRETI,
  1116. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1117. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'FLOTTANT')) THEN
  1118.  
  1119. C
  1120. C********** Message d'erreur standard
  1121. C -301 0 %m1:40
  1122. C
  1123. MOTERR = ' '
  1124. MOTERR(1:7) = 'ARG1 . '
  1125. MOTERR(8:11) = NOMTOT(1)
  1126. MOTERR(13:25) = ' . H0K = ??? '
  1127. CALL ERREUR(-301)
  1128. C
  1129. C********** Message d'erreur standard
  1130. C 21 2
  1131. C Données incompatibles
  1132. C
  1133. CALL ERREUR(21)
  1134. GOTO 9999
  1135. ENDIF
  1136. PROPHY.H0K(I1)=XVALR
  1137. C
  1138. C******* A
  1139. C
  1140. MTYPI = 'MOT '
  1141. MTYPR = ' '
  1142. CALL ACCTAB(IESP,MTYPI,IVALI,XVALI, 'A' , LOGII,IRETI,
  1143. & MTYPR,IVALR, XVALR ,CHARR,LOGIR,IRETR)
  1144. IF((IERR .NE. 0) .OR. (MTYPR .NE. 'LISTREEL')) THEN
  1145.  
  1146. C
  1147. C********** Message d'erreur standard
  1148. C -301 0 %m1:40
  1149. C
  1150. MOTERR = ' '
  1151. MOTERR(1:7) = 'ARG1 . '
  1152. MOTERR(8:11) = NOMTOT(1)
  1153. MOTERR(13:23) = ' . A = ??? '
  1154. CALL ERREUR(-301)
  1155. C
  1156. C********** Message d'erreur standard
  1157. C 21 2
  1158. C Données incompatibles
  1159. C
  1160. CALL ERREUR(21)
  1161. GOTO 9999
  1162. ENDIF
  1163. MLREEL = IRETR
  1164. SEGACT MLREEL
  1165. C
  1166. C******* Dans le calcul, c'est plus utile ACV dans la forme
  1167. C ACV(,exponente,espece)
  1168. C
  1169. DO I2 = 1, NORDP1
  1170. PROPHY.ACV(I2,I1)= MLREEL.PROG(I2)
  1171. ENDDO
  1172. SEGDES MLREEL
  1173. ENDDO
  1174. SEGSUP MLMOT2
  1175. C
  1176. C**** La table IPGAZ donc a ete controllee et PROPHY est rempli
  1177. C
  1178. C
  1179. C**** Lecture du MCHAML 'FACEL' contenant la masse volumique.
  1180. C
  1181. C D'abord on va lire son nom in KIZX . 'ARG1 ' -> MOTLU
  1182. C
  1183. MOTLU=' '
  1184. CALL ACMM(KIZX,'ARG2 ',MOTLU)
  1185. IF(IERR.NE.0) GOTO 9999
  1186. C
  1187. C**** On va lire le pointeur du MCHAML
  1188. C
  1189. TYPE='MCHAML '
  1190. CALL ACMO(INCO,MOTLU,TYPE,IROF)
  1191. IF(IERR.NE.0) GOTO 9999
  1192. IF(TYPE .NE. 'MCHAML ')THEN
  1193. C
  1194. C******* Message d'erreur standard
  1195. C 37 2
  1196. C On ne trouve pas d'objet de type %m1:8
  1197. C
  1198. MOTERR(1:8) = 'MCHAML '
  1199. CALL ERREUR(37)
  1200. GOTO 9999
  1201. ENDIF
  1202. C
  1203. C**** Lecture du MCHAML 'FACEL' vitesse
  1204. C
  1205. MOTLU=' '
  1206. CALL ACMM(KIZX,'ARG3 ',MOTLU)
  1207. IF(IERR.NE.0)GOTO 9999
  1208. C
  1209. TYPE='MCHAML '
  1210. CALL ACMO(INCO,MOTLU,TYPE,IVITF)
  1211. IF(IERR .NE. 0) GOTO 9999
  1212. IF(TYPE .NE. 'MCHAML ')THEN
  1213. C
  1214. C******* Message d'erreur standard
  1215. C 37 2
  1216. C On ne trouve pas d'objet de type %m1:8
  1217. C
  1218. MOTERR(1:8) = 'MCHAML '
  1219. CALL ERREUR(37)
  1220. GOTO 9999
  1221. ENDIF
  1222. C
  1223. C***** Lecture du MCHAML 'FACEL' contenant la temperature
  1224. C
  1225. MOTLU=' '
  1226. CALL ACMM(KIZX,'ARG4 ',MOTLU)
  1227. IF(IERR .NE. 0) GOTO 9999
  1228. C
  1229. TYPE='MCHAML '
  1230. CALL ACMO(INCO,MOTLU,TYPE,IPF)
  1231. IF(IERR .NE. 0) GOTO 9999
  1232. IF(TYPE .NE. 'MCHAML ')THEN
  1233. C
  1234. C******* Message d'erreur standard
  1235. C 37 2
  1236. C On ne trouve pas d'objet de type %m1:8
  1237. C
  1238. MOTERR(1:8) = 'MCHAML '
  1239. CALL ERREUR(37)
  1240. GOTO 9999
  1241. ENDIF
  1242. C
  1243. C
  1244. C**** Multi-especes (LOGME = .TRUE.)
  1245. C Scalaires à transporter (LOGSCA = .TRUE.)
  1246. C
  1247. C
  1248. IF(LOGME .AND. LOGSCA)THEN
  1249. C
  1250. C********** On controle si KIZX . 'ARG5' et KIZX . 'ARG6' existent
  1251. C
  1252. TYPE = ' '
  1253. MOTLU=' '
  1254. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1255. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1256. IF(TYPE .EQ. 'MOT')THEN
  1257. C
  1258. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1259. C
  1260. C
  1261. TYPE='MCHAML '
  1262. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1263. IF(IERR .NE. 0) GOTO 9999
  1264. IF(TYPE .NE. 'MCHAML ')THEN
  1265. C
  1266. C************* Message d'erreur standard
  1267. C 37 2
  1268. C On ne trouve pas d'objet de type %m1:8
  1269. C
  1270. MOTERR(1:8) = 'MCHAML '
  1271. CALL ERREUR(37)
  1272. GOTO 9999
  1273. ENDIF
  1274. ELSE
  1275. C
  1276. C********** Message d'erreur standard
  1277. C 21 2
  1278. C Données incompatibles
  1279. C
  1280. CALL ERREUR(21)
  1281. GO TO 9999
  1282. ENDIF
  1283. C
  1284. TYPE = ' '
  1285. MOTLU=' '
  1286. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG6', .TRUE.,0,
  1287. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1288. IF(TYPE .EQ. 'MOT')THEN
  1289. C
  1290. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1291. C
  1292. C
  1293. TYPE='MCHAML '
  1294. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1295. IF(IERR .NE. 0) GOTO 9999
  1296. IF(TYPE .NE. 'MCHAML ')THEN
  1297. C
  1298. C************* Message d'erreur standard
  1299. C 37 2
  1300. C On ne trouve pas d'objet de type %m1:8
  1301. C
  1302. MOTERR(1:8) = 'MCHAML '
  1303. CALL ERREUR(37)
  1304. GOTO 9999
  1305. ENDIF
  1306. ELSE
  1307. C
  1308. C********** Message d'erreur standard
  1309. C 21 2
  1310. C Données incompatibles
  1311. C
  1312. CALL ERREUR(21)
  1313. GO TO 9999
  1314. ENDIF
  1315. C
  1316. ELSEIF(LOGME)THEN
  1317. C
  1318. C********** On controle si KIZX . 'ARG5' existe
  1319. C
  1320. TYPE = ' '
  1321. MOTLU=' '
  1322. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1323. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1324. IF(TYPE .EQ. 'MOT')THEN
  1325. C
  1326. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1327. C
  1328. C
  1329. TYPE='MCHAML '
  1330. CALL ACMO(INCO,MOTLU,TYPE,IFRMAF)
  1331. IF(IERR .NE. 0) GOTO 9999
  1332. IF(TYPE .NE. 'MCHAML ')THEN
  1333. C
  1334. C************* Message d'erreur standard
  1335. C 37 2
  1336. C On ne trouve pas d'objet de type %m1:8
  1337. C
  1338. MOTERR(1:8) = 'MCHAML '
  1339. CALL ERREUR(37)
  1340. GOTO 9999
  1341. ENDIF
  1342. ELSE
  1343. C
  1344. C********** Message d'erreur standard
  1345. C 21 2
  1346. C Données incompatibles
  1347. C
  1348. CALL ERREUR(21)
  1349. GO TO 9999
  1350. ENDIF
  1351. ELSEIF(LOGSCA)THEN
  1352. C
  1353. C********** On controle si KIZX . 'ARG5' existe
  1354. C
  1355. TYPE = ' '
  1356. MOTLU=' '
  1357. CALL ACCTAB(KIZX,'MOT',0,0.D0,'ARG5', .TRUE.,0,
  1358. & TYPE,IENT,XVAL,MOTLU,XLOGI,IRET)
  1359. IF(TYPE .EQ. 'MOT')THEN
  1360. C
  1361. C************* Lecture du MCHAML 'FACEL' contenant les fractiones massiques
  1362. C
  1363. TYPE='MCHAML '
  1364. CALL ACMO(INCO,MOTLU,TYPE,ISCAF)
  1365. IF(IERR .NE. 0) GOTO 9999
  1366. IF(TYPE .NE. 'MCHAML ')THEN
  1367. C
  1368. C************* Message d'erreur standard
  1369. C 37 2
  1370. C On ne trouve pas d'objet de type %m1:8
  1371. C
  1372. MOTERR(1:8) = 'MCHAML '
  1373. CALL ERREUR(37)
  1374. GOTO 9999
  1375. ENDIF
  1376. ELSE
  1377. C
  1378. C********** Message d'erreur standard
  1379. C 21 2
  1380. C Données incompatibles
  1381. C
  1382. CALL ERREUR(21)
  1383. GO TO 9999
  1384. ENDIF
  1385. ENDIF
  1386. C
  1387. C******* Lecture de Nom des Inconnues de KONV (KIZX . 'LISTINCO')
  1388. C
  1389. TYPE='LISTMOTS'
  1390. CALL ACMO(KIZX,'LISTINCO',TYPE,LINCO)
  1391. MLMOT1 = LINCO
  1392. IF(IERR.NE.0)GOTO 9999
  1393. SEGACT MLMOT1
  1394. C
  1395. C******* Verification du Nombre d'inconnues.
  1396. C
  1397. C Eulero mono-espece (+ scalaires passifs) -> NBRINC = 3 (+1)
  1398. C Eulero multi-especies (+ scalaires passifs) -> NBRINC = 4 (+1)
  1399. C
  1400. NBRINC = MLMOT1.MOTS(/2)
  1401. NCELL = 3
  1402. IF(LOGME) NCELL = NCELL + 1
  1403. IF(LOGSCA) NCELL = NCELL + 1
  1404. IF(NBRINC .NE. NCELL)THEN
  1405. C
  1406. C********** Message d'erreur standard
  1407. C -301 0 %m1:40
  1408. C
  1409. MOTERR(1:40) ='EULERMST: LISTINCO = ? '
  1410. CALL ERREUR(-301)
  1411. C
  1412. C*********** Message d'erreur standard
  1413. C 21 2 Données incompatibles
  1414. C
  1415. CALL ERREUR(21)
  1416. GO TO 9999
  1417. ENDIF
  1418. C
  1419. C******* Table DOMAINE en IDOMA (pointeur de la zone de KONV)
  1420. C
  1421. C
  1422. C******* Lecture du MELEME SPG des points CENTRE.
  1423. C
  1424. C
  1425. C CALL LEKTAB(IDOMA,'CENTRE',MELEMC)
  1426. C
  1427. C******* Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  1428. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  1429. C -> la correspondance global des noeuds saut!
  1430. C
  1431. C On peut utilizer ACCTAB ou ACMO
  1432. C
  1433. TYPE = 'MAILLAGE'
  1434. CALL ACMO(IDOMA,'CENTRE',TYPE,MELEMC)
  1435. IF(IERR .NE. 0) GOTO 9999
  1436. IF(TYPE .NE. 'MAILLAGE')THEN
  1437. MOTERR(1:8) = NOMZ
  1438. MOTERR(9:40) = ' . CENTRE = ? '
  1439. C
  1440. C********** Message d'erreur standard
  1441. C -301 0 %m1:40
  1442. C
  1443. CALL ERREUR(-301)
  1444. C
  1445. C********** Message d'erreur standard
  1446. C 21 2
  1447. C Données incompatibles
  1448. C
  1449. CALL ERREUR(21)
  1450. GO TO 9999
  1451. ENDIF
  1452. C
  1453. C******* Lecture du MELEME 'FACE' SPG des points FACE
  1454. C
  1455. CALL ACMO(IDOMA,'FACE',TYPE,MELEMF)
  1456. IF(IERR .NE. 0) GOTO 9999
  1457. IF(TYPE .NE. 'MAILLAGE')THEN
  1458. MOTERR(1:8) = NOMZ
  1459. MOTERR(9:40) = ' . FACE = ? '
  1460. C
  1461. C********** Message d'erreur standard
  1462. C -301 0 %m1:40
  1463. C
  1464. CALL ERREUR(-301)
  1465. C
  1466. C********** Message d'erreur standard
  1467. C 21 2
  1468. C Données incompatibles
  1469. C
  1470. CALL ERREUR(21)
  1471. GO TO 9999
  1472. ENDIF
  1473. C
  1474. C******* Lecture du MELEME 'FACEL' de connect. FACE -> CENTRE
  1475. C
  1476. CALL ACMO(IDOMA,'FACEL',TYPE,MELEFE)
  1477. IF(IERR .NE. 0) GOTO 9999
  1478. IF(TYPE .NE. 'MAILLAGE')THEN
  1479. MOTERR(1:8) = NOMZ
  1480. MOTERR(9:40) = ' . FACEL = ? '
  1481. C
  1482. C******* Message d'erreur standard
  1483. C -301 0 %m1:40
  1484. C
  1485. CALL ERREUR(-301)
  1486. C
  1487. C******* Message d'erreur standard
  1488. C 21 2
  1489. C Données incompatibles
  1490. C
  1491. CALL ERREUR(21)
  1492. GO TO 9999
  1493. ENDIF
  1494. C
  1495. C**** Lecture du CHPOINT contenant les surfaces des faces.
  1496. C
  1497. CALL LEKTAB(IDOMA,'XXSURFAC',ICHPSU)
  1498. IF(IERR .NE. 0) GOTO 9999
  1499. C
  1500. C**** Lecture du CHPOINT contenant les diametres minimums.
  1501. C
  1502. CALL LEKTAB(IDOMA,'XXDIEMIN',ICHPDI)
  1503. IF(IERR .NE. 0) GOTO 9999
  1504. C
  1505. C
  1506. C**** Lecture de la TABLE contenant les FLUX aux interfaces,
  1507. C i.e. KIZX . 'EQEX' . 'KIZG'
  1508. C
  1509. C N.B. On recuper le pointeur des flux relatives aux
  1510. C inconnues de KONV.
  1511. C
  1512. TYPE= ' '
  1513. CALL ACMO(IEQEX,'KIZG',TYPE,KIZG)
  1514. IF(IERR .NE. 0) GOTO 9999
  1515. IF(TYPE .NE. 'TABLE ')THEN
  1516. CALL CRTABL(KIZG)
  1517. CALL ECMM(KIZG,'SOUSTYPE','KIZG')
  1518. CALL ECMO(IEQEX,'KIZG','TABLE ',KIZG)
  1519. ENDIF
  1520. C
  1521. C**** Creation des CHPOINTs increment IZG1-2-3-4 pour les FLUX
  1522. C ou extraction des leurs pointeurs
  1523. C
  1524. C
  1525. C**** La masse volumique
  1526. C
  1527. C
  1528. TYPE=' '
  1529. ARG = MLMOT1.MOTS(1)
  1530. CALL ACMO(KIZG,ARG,TYPE,IZG1)
  1531. IF(IERR .NE. 0) GOTO 9999
  1532. IF(TYPE .NE. 'CHPOINT ')THEN
  1533. TYPE = 'FACE'
  1534. NBCOMP = 1
  1535. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG1)
  1536. IF(IERR .NE. 0)GOTO 9999
  1537. C
  1538. C******* Stokage du pointeur dans KIZG
  1539. C
  1540. ARG = MLMOT1.MOTS(1)
  1541. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG1)
  1542. ELSE
  1543. INDIC = 1
  1544. NBCOMP = 1
  1545. NOMTOT(1) = ' '
  1546. CALL QUEPOI(IZG1,MELEMF,INDIC,NBCOMP,NOMTOT)
  1547. IF(IERR .NE. 0)GOTO 9999
  1548. ENDIF
  1549. C
  1550. C**** Les debits
  1551. C
  1552. TYPE=' '
  1553. ARG = MLMOT1.MOTS(2)
  1554. CALL ACMO(KIZG,ARG,TYPE,IZG2)
  1555. IF(IERR .NE. 0) GOTO 9999
  1556. IF(TYPE .NE. 'CHPOINT ')THEN
  1557. TYPE='FACE'
  1558. NBCOMP = IDIM
  1559. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG2)
  1560. IF(IERR .NE. 0) GOTO 9999
  1561. C
  1562. C******* Stokage du pointeur dans KIZG
  1563. C
  1564. ARG = MLMOT1.MOTS(2)
  1565. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG2)
  1566. ELSE
  1567. INDIC = 1
  1568. NBCOMP = IDIM
  1569. NOMTOT(1) = ' '
  1570. CALL QUEPOI(IZG2,MELEMF,INDIC,NBCOMP,NOMTOT)
  1571. IF(IERR .NE. 0)GOTO 9999
  1572. ENDIF
  1573. C
  1574. C**** L'energie totale volumique
  1575. C
  1576. TYPE=' '
  1577. ARG = MLMOT1.MOTS(3)
  1578. CALL ACMO(KIZG,ARG,TYPE,IZG3)
  1579. IF(IERR .NE. 0) GOTO 9999
  1580. IF(TYPE .NE. 'CHPOINT ')THEN
  1581. TYPE='FACE'
  1582. NBCOMP = 1
  1583. CALL CRCHPT(TYPE,MELEMF,NBCOMP,IZG3)
  1584. IF(IERR .NE. 0) GOTO 9999
  1585. C
  1586. C******* Stokage du pointeur dans KIZG
  1587. C
  1588. ARG = MLMOT1.MOTS(3)
  1589. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG3)
  1590. ELSE
  1591. INDIC = 1
  1592. NBCOMP = 1
  1593. NOMTOT(1) = ' '
  1594. CALL QUEPOI(IZG3,MELEMF,INDIC,NBCOMP,NOMTOT)
  1595. IF(IERR .NE. 0)GOTO 9999
  1596. ENDIF
  1597. C
  1598. C**** Les Masses Volumiques et les (scalaires passifs * \rho)
  1599. C
  1600. IF(LOGME .AND. LOGSCA)THEN
  1601. C
  1602. C********** Masses volumiques
  1603. C
  1604. TYPE=' '
  1605. ARG = MLMOT1.MOTS(4)
  1606. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1607. IF(IERR .NE. 0) GOTO 9999
  1608. IF(TYPE .NE. 'CHPOINT ')THEN
  1609. NBCOMP = NESP
  1610. TYPE='FACE '
  1611. C
  1612. C********** On cree le chpoint FACE
  1613. C
  1614. IPT1 = MELEMF
  1615. SEGACT IPT1
  1616. N=IPT1.NUM(/2)
  1617. SEGDES IPT1
  1618. NSOUPO=1
  1619. NAT=1
  1620. NC = NESP
  1621. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1622. MCHPOI.JATTRI(1)=2
  1623. MCHPOI.IFOPOI=IFOUR
  1624. MCHPOI.MTYPOI=TYPE
  1625. MCHPOI.MOCHDE(1:30)=' '
  1626. MCHPOI.MOCHDE(31:60)=' '
  1627. MCHPOI.MOCHDE(61:72)=' '
  1628. MCHPOI.IPCHP(1)=MSOUPO
  1629. SEGDES MCHPOI
  1630. MSOUPO.IGEOC=MELEMF
  1631. MSOUPO.IPOVAL=MPOVAL
  1632. DO I1 = 1, NC
  1633. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1634. ENDDO
  1635. SEGDES, MSOUPO,MPOVAL
  1636. IZG4 = MCHPOI
  1637. C
  1638. C********** Stokage du pointeur dans KIZG
  1639. C
  1640. ARG = MLMOT1.MOTS(4)
  1641. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1642. ELSE
  1643. INDIC = 1
  1644. NBCOMP = NESP
  1645. NOMTOT(1) = ' '
  1646. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1647. IF(IERR .NE. 0)GOTO 9999
  1648. ENDIF
  1649. C
  1650. C********** Les scalaires passifs
  1651. C
  1652. TYPE=' '
  1653. ARG = MLMOT1.MOTS(5)
  1654. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1655. IF(IERR .NE. 0) GOTO 9999
  1656. IF(TYPE .NE. 'CHPOINT ')THEN
  1657. NBCOMP = NSCA
  1658. TYPE='FACE '
  1659. C
  1660. C********** On cree le chpoint FACE
  1661. C
  1662. IPT1 = MELEMF
  1663. SEGACT IPT1
  1664. N=IPT1.NUM(/2)
  1665. SEGDES IPT1
  1666. NSOUPO=1
  1667. NAT=1
  1668. NC = NSCA
  1669. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1670. MCHPOI.JATTRI(1)=2
  1671. MCHPOI.IFOPOI=IFOUR
  1672. MCHPOI.MTYPOI=TYPE
  1673. MCHPOI.MOCHDE(1:30)=' '
  1674. MCHPOI.MOCHDE(31:60)=' '
  1675. MCHPOI.MOCHDE(61:72)=' '
  1676. MCHPOI.IPCHP(1)=MSOUPO
  1677. SEGDES MCHPOI
  1678. MSOUPO.IGEOC=MELEMF
  1679. MSOUPO.IPOVAL=MPOVAL
  1680. DO I1 = 1, NC
  1681. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1682. ENDDO
  1683. SEGDES, MSOUPO,MPOVAL
  1684. IZG5 = MCHPOI
  1685. C
  1686. C********** Stokage du pointeur dans KIZG
  1687. C
  1688. ARG = MLMOT1.MOTS(5)
  1689. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1690. ELSE
  1691. INDIC = 1
  1692. NBCOMP = NSCA
  1693. NOMTOT(1) = ' '
  1694. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1695. IF(IERR .NE. 0)GOTO 9999
  1696. ENDIF
  1697. C
  1698. ELSEIF(LOGME)THEN
  1699. C
  1700. C********** Masses volumiques
  1701. C
  1702. TYPE=' '
  1703. ARG = MLMOT1.MOTS(4)
  1704. CALL ACMO(KIZG,ARG,TYPE,IZG4)
  1705. IF(IERR .NE. 0) GOTO 9999
  1706. IF(TYPE .NE. 'CHPOINT ')THEN
  1707. NBCOMP = NESP
  1708. TYPE='FACE '
  1709. C
  1710. C********** On cree le chpoint FACE
  1711. C
  1712. IPT1 = MELEMF
  1713. SEGACT IPT1
  1714. N=IPT1.NUM(/2)
  1715. SEGDES IPT1
  1716. NSOUPO=1
  1717. NAT=1
  1718. NC = NESP
  1719. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1720. MCHPOI.JATTRI(1)=2
  1721. MCHPOI.IFOPOI=IFOUR
  1722. MCHPOI.MTYPOI=TYPE
  1723. MCHPOI.MOCHDE(1:30)=' '
  1724. MCHPOI.MOCHDE(31:60)=' '
  1725. MCHPOI.MOCHDE(61:72)=' '
  1726. MCHPOI.IPCHP(1)=MSOUPO
  1727. SEGDES MCHPOI
  1728. MSOUPO.IGEOC=MELEMF
  1729. MSOUPO.IPOVAL=MPOVAL
  1730. DO I1 = 1, NC
  1731. MSOUPO.NOCOMP(I1) = MLMOEU.MOTS(I1)
  1732. ENDDO
  1733. SEGDES, MSOUPO,MPOVAL
  1734. IZG4 = MCHPOI
  1735. C
  1736. C********** Stokage du pointeur dans KIZG
  1737. C
  1738. ARG = MLMOT1.MOTS(4)
  1739. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG4)
  1740. ELSE
  1741. INDIC = 1
  1742. NBCOMP = NESP
  1743. NOMTOT(1) = ' '
  1744. CALL QUEPOI(IZG4,MELEMF,INDIC,NBCOMP,NOMTOT)
  1745. IF(IERR .NE. 0)GOTO 9999
  1746. ENDIF
  1747. IZG5 = 0
  1748. ELSEIF(LOGSCA)THEN
  1749. C
  1750. C********** Masses volumiques
  1751. C
  1752. IZG4 = 0
  1753. TYPE=' '
  1754. ARG = MLMOT1.MOTS(4)
  1755. CALL ACMO(KIZG,ARG,TYPE,IZG5)
  1756. IF(IERR .NE. 0) GOTO 9999
  1757. IF(TYPE .NE. 'CHPOINT ')THEN
  1758. NBCOMP = NSCA
  1759. TYPE='FACE '
  1760. C
  1761. C********** On cree le chpoint FACE
  1762. C
  1763. IPT1 = MELEMF
  1764. SEGACT IPT1
  1765. N=IPT1.NUM(/2)
  1766. SEGDES IPT1
  1767. NSOUPO=1
  1768. NAT=1
  1769. NC = NSCA
  1770. SEGINI, MCHPOI,MSOUPO,MPOVAL
  1771. MCHPOI.JATTRI(1)=2
  1772. MCHPOI.IFOPOI=IFOUR
  1773. MCHPOI.MTYPOI=TYPE
  1774. MCHPOI.MOCHDE(1:30)=' '
  1775. MCHPOI.MOCHDE(31:60)=' '
  1776. MCHPOI.MOCHDE(61:72)=' '
  1777. MCHPOI.IPCHP(1)=MSOUPO
  1778. SEGDES MCHPOI
  1779. MSOUPO.IGEOC=MELEMF
  1780. MSOUPO.IPOVAL=MPOVAL
  1781. DO I1 = 1, NC
  1782. MSOUPO.NOCOMP(I1) = MLMOSC.MOTS(I1)
  1783. ENDDO
  1784. SEGDES, MSOUPO,MPOVAL
  1785. IZG5 = MCHPOI
  1786. C
  1787. C********** Stokage du pointeur dans KIZG
  1788. C
  1789. ARG = MLMOT1.MOTS(4)
  1790. CALL ECMO(KIZG,ARG,'CHPOINT ',IZG5)
  1791. ELSE
  1792. INDIC = 1
  1793. NBCOMP = NSCA
  1794. NOMTOT(1) = ' '
  1795. CALL QUEPOI(IZG5,MELEMF,INDIC,NBCOMP,NOMTOT)
  1796. IF(IERR .NE. 0)GOTO 9999
  1797. ENDIF
  1798. ELSE
  1799. IZG4 = 0
  1800. IZG5 = 0
  1801. ENDIF
  1802. C
  1803. C**** Calcul des flux et du pas du temps.
  1804. C
  1805. IF( IDIM .EQ. 2)THEN
  1806. C
  1807. C
  1808. C***** 2D
  1809. C
  1810. CALL CKON3(LOGME,INDMET,NORDP1,
  1811. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1812. & ICHPSU,ICHPDI,
  1813. & MELEMC,MELEMF,MELEFE,
  1814. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1815. & LOGNC,LOGAN,MESERR)
  1816. ELSE
  1817. C
  1818. C
  1819. C***** 3D
  1820. C
  1821. CALL CKON4(LOGME,INDMET,NORDP1,
  1822. & IROF,IVITF,IPF,IFRMAF,ISCAF,PROPHY,
  1823. & ICHPSU,ICHPDI,
  1824. & MELEMC,MELEMF,MELEFE,
  1825. & IZG1,IZG2,IZG3,IZG4,IZG5,DT,DIAMEL,NLCEMI,
  1826. & LOGNC,LOGAN,MESERR)
  1827. ENDIF
  1828. C
  1829. IF(LOGAN)THEN
  1830. C
  1831. C******* Anomalie detectée
  1832. C
  1833. C
  1834. C******* Message d'erreur standard
  1835. C -301 0
  1836. C %m1:40
  1837. C
  1838. MOTERR(1:40) = MESERR(1:40)
  1839. CALL ERREUR(-301)
  1840. C
  1841. C******* Message d'erreur standard
  1842. C 5 3
  1843. C Erreur anormale.contactez votre support
  1844. C
  1845. CALL ERREUR(5)
  1846. GOTO 9999
  1847. ENDIF
  1848. IF(LOGNC)THEN
  1849. C
  1850. C******* Message d'erreur standard
  1851. C -301 0
  1852. C %m1:40
  1853. C
  1854. MOTERR(1:40) = MESERR(1:40)
  1855. CALL ERREUR(-301)
  1856. C
  1857. C******* Message d'erreur standard
  1858. C 460 2
  1859. C Pas de convergence dans les itérations internes
  1860. C
  1861. CALL ERREUR(460)
  1862. GOTO 9999
  1863. ENDIF
  1864. C
  1865. C**** Ecriture des RESULTATS
  1866. C
  1867. TYPE = 'TABLE '
  1868. CALL ACMO(IEQEX,'PASDETPS',TYPE,MTABT)
  1869. IF(IERR .NE. 0) GOTO 9999
  1870. IF(TYPE .NE. 'TABLE ')THEN
  1871. MOTERR(1:40) = 'EULER, subroutine ckon.eso, PASDETPS = ?'
  1872. C
  1873. C******* Message d'erreur standard
  1874. C -301 0 %m1:40
  1875. C
  1876. CALL ERREUR(-301)
  1877. C
  1878. C******* Message d'erreur standard
  1879. C 5 3
  1880. C Erreur anormale.contactez votre support
  1881. C
  1882. CALL ERREUR(5)
  1883. GO TO 9999
  1884. ENDIF
  1885. C
  1886. C******* On remplie la table d'indice PASDETPS
  1887. C
  1888. CALL ECMF(MTABT,'DELTAT',DT)
  1889. CALL ECMM(MTABT,'OPER','KONV')
  1890. CALL ECMM(MTABT,'ZONE',NOMZ)
  1891. CALL ECMF(MTABT,'DTCONV',DT)
  1892. CALL ECMF(MTABT,'DTDIFU',1.0D50)
  1893. CALL ECMF(MTABT,'DIAEL',DIAMEL)
  1894. CALL ECME(MTABT,'NUEL',NLCEMI)
  1895. C
  1896. C**** Ecriture des CHPOINTs increments dans la table KIZG
  1897. C déjà faite
  1898. C
  1899. SEGDES MLMOT1
  1900. SEGSUP PROPHY
  1901. IF(LOGME) SEGDES MLMOEU
  1902. IF(LOGSCA) SEGDES MLMOSC
  1903. C
  1904. C
  1905. C
  1906. ENDIF
  1907. 9999 CONTINUE
  1908. RETURN
  1909. END
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920.  
  1921.  
  1922.  
  1923.  
  1924.  
  1925.  
  1926.  
  1927.  

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