Télécharger pre32.eso

Retour à la liste

Numérotation des lignes :

pre32
  1. C PRE32 SOURCE OF166741 24/12/13 21:17:05 12097
  2. SUBROUTINE PRE32(ORDTEM)
  3. C************************************************************************
  4. C
  5. C PROJET : CASTEM 2000
  6. C
  7. C NOM : PRE32
  8. C
  9. C DESCRIPTION : Voir PRE3
  10. C
  11. C Gaz "thermally perfect" , mono/multi-especes.
  12. C
  13. C 2me ordre en espace (1er ou 2me ordre en temps)
  14. C
  15. C Creations des object MCHAML IROF, IVITF, IPF,
  16. C IYF, ISCAF
  17. C
  18. C LANGAGE : FORTRAN 77 + ESOPE 2000 (avec extensions CISI)
  19. C
  20. C AUTEUR : A. BECCANTINI, DRN/DMT/SEMT/TTMF
  21. C
  22. C************************************************************************
  23. C
  24. C
  25. C APPELES (Outils) : LIRTAB, ACMO, LEKTAB, QUETYP, ERREUR, LIROBJ,
  26. C ACMM, ACCTAB, QUEPO1, ECROBJ
  27. C
  28. C APPELES (Calcul) : PRE321 (2D), PRE322 (3D)
  29. C
  30. C************************************************************************
  31. C
  32. C HISTORIQUE (Anomalies et modifications éventuelles)
  33. C
  34. C HISTORIQUE : Créée le 18.12.98.
  35. C
  36. C 17.02.2000: transport des scalaires passifs
  37. C
  38. C************************************************************************
  39. C
  40. C**** Les variables
  41. C
  42. IMPLICIT INTEGER(I-N)
  43. INTEGER ORDTEM, ICOND, IRETOU, IERR0
  44. & ,IDOMA, ICEN, IFACE, IFACEL, INORM
  45. & ,IROC, IGRROC, IALROC
  46. & ,IVITC, IGRVC, IALVC
  47. & ,IPC ,IGRPC, IALPC
  48. & ,IGAMC, IROF, IVITF, IPF
  49. & ,IPGAS, NESP, NSCA
  50. & ,IYC, IGRYC, IALYC, IYF
  51. & ,ISCAC, IGRSC, IALSC, ISCAF
  52. & , I1, I2, ICEL, ICOM, INEFMD
  53. & ,MMODEL
  54. REAL*8 VALER, VAL1, VAL2, DELTAT
  55. CHARACTER*(4) NOMGRA(27),NOMLIM(9)
  56. CHARACTER*(8) MTYPR, TYPE
  57. CHARACTER*(40) MESERR
  58. LOGICAL LOGAN,LOGNEG, LOGBOR,LOGTEM
  59. & ,LGAMC,LSCAC,LYC
  60. C
  61. C**** Les Includes
  62. C
  63.  
  64. -INC PPARAM
  65. -INC CCOPTIO
  66. INTEGER JGM, JGN
  67. -INC SMLMOTS
  68. POINTEUR MLMCOM.MLMOTS, MLMESP.MLMOTS, MLMSCA.MLMOTS
  69. POINTEUR MLMVIT.MLMOTS
  70. C
  71. C**** Nom de composantes de gradients (HP. <= 9 composantes)
  72. C
  73. DATA NOMGRA /'P1DX','P1DY','P1DZ',
  74. & 'P2DX','P2DY','P2DZ',
  75. & 'P3DX','P3DY','P3DZ',
  76. & 'P4DX','P4DY','P4DZ',
  77. & 'P5DX','P5DY','P5DZ',
  78. & 'P6DX','P6DY','P6DZ',
  79. & 'P7DX','P7DY','P7DZ',
  80. & 'P8DX','P8DY','P8DZ',
  81. & 'P9DX','P9DY','P9DZ'/
  82. C
  83. DATA NOMLIM /'P1 ',
  84. & 'P2 ',
  85. & 'P3 ',
  86. & 'P4 ',
  87. & 'P5 ',
  88. & 'P6 ',
  89. & 'P7 ',
  90. & 'P8 ',
  91. & 'P9 '/
  92. C
  93. C**** Initialisation des parametres d'erreur
  94. C
  95. LOGAN = .FALSE.
  96. LOGNEG = .FALSE.
  97. LOGBOR = .FALSE.
  98. MESERR = ' '
  99. MOTERR(1:40) = MESERR(1:40)
  100. VALER = 0.0D0
  101. VAL1 = 0.0D0
  102. VAL2 = 0.0D0
  103. C
  104. C**** Lecture de l'objet MODELE
  105. C
  106. ICOND = 1
  107. CALL QUETYP(TYPE,ICOND,IRETOU)
  108. CALL LIROBJ('MMODEL ',MMODEL,ICOND,IRETOU)
  109. CALL ACTOBJ('MMODEL ',MMODEL,1)
  110. IF(IERR.NE.0)GOTO 9999
  111. CALL LEKMOD(MMODEL,IDOMA,INEFMD)
  112. IF(IERR.NE.0)GOTO 9999
  113. C
  114. C**** Lecture du MELEME SPG des points CENTRE.
  115. C
  116. C
  117. C CALL LEKTAB(IDOMA,'CENTRE',IP)
  118. C
  119. C**** Probleme du LEKTAB: si IDOMA.'CENTRE' n'existe pas,
  120. C il crèe IDOMA.'CENTRE' sans recrèer 'FACEL'
  121. C -> la correspondance global des noeuds saut!
  122. C
  123. C On peut utilizer ACCTAB ou ACMO
  124. C
  125. MTYPR = 'MAILLAGE'
  126. CALL ACMO(IDOMA,'CENTRE',MTYPR,ICEN)
  127. IF(IERR.NE.0)GOTO 9999
  128. C
  129. C**** Lecture du MELEME 'FACE'
  130. C
  131. MTYPR = 'MAILLAGE'
  132. CALL ACMO(IDOMA,'FACE',MTYPR,IFACE)
  133. IF(IERR.NE.0)GOTO 9999
  134. C
  135. C**** Lecture du MELEME 'FACEL'
  136. C
  137. MTYPR = 'MAILLAGE'
  138. CALL ACMO(IDOMA,'FACEL',MTYPR,IFACEL)
  139. IF(IERR.NE.0)GOTO 9999
  140. C
  141. C**** Lecture du CHPOINT contenant les normales (tangentes) aux faces
  142. C
  143. IF(IDIM .EQ. 2)THEN
  144. C Que les normales
  145. CALL LEKTAB(IDOMA,'XXNORMAF',INORM)
  146. IF(IERR .NE. 0) GOTO 9999
  147. JGN = 4
  148. JGM = 2
  149. SEGINI MLMVIT
  150. MLMVIT.MOTS(1) = 'UX '
  151. MLMVIT.MOTS(2) = 'UY '
  152. CALL QUEPO1(INORM, IFACE, MLMVIT)
  153. SEGSUP MLMVIT
  154. IF(IERR.NE.0)GOTO 9999
  155. ELSE
  156. C Les normales et les tangentes
  157. MTYPR = ' '
  158. CALL ACMO(IDOMA,'MATROT',MTYPR,INORM)
  159. IF (MTYPR .NE. 'CHPOINT ') THEN
  160. CALL MATRAN(IDOMA,INORM)
  161. IF(IERR .NE. 0) GOTO 9999
  162. ENDIF
  163. JGN = 4
  164. JGM = 9
  165. SEGINI MLMVIT
  166. MLMVIT.MOTS(1) = 'UX '
  167. MLMVIT.MOTS(2) = 'UY '
  168. MLMVIT.MOTS(3) = 'UZ '
  169. MLMVIT.MOTS(4) = 'RX '
  170. MLMVIT.MOTS(5) = 'RY '
  171. MLMVIT.MOTS(6) = 'RZ '
  172. MLMVIT.MOTS(7) = 'MX '
  173. MLMVIT.MOTS(8) = 'MY '
  174. MLMVIT.MOTS(9) = 'MZ '
  175. CALL QUEPO1(INORM, IFACE, MLMVIT)
  176. SEGSUP MLMVIT
  177. IF(IERR.NE.0)GOTO 9999
  178. C
  179. ENDIF
  180. C
  181. C**** N.B. On veut lire les objets sequentiellement.
  182. C Donc on utilise QUETYP pour controler que
  183. C le type de l'objet soit le bon.
  184. C
  185. C
  186. C**** Lecture de la table des proprietes du gaz
  187. C
  188. C Cette table a ete deja controlle dans l'operateur PRIM;
  189. C donc on la controlle pas ici
  190. C
  191. ICOND = 1
  192. CALL QUETYP(MTYPR,ICOND,IRETOU)
  193. IF(IERR .NE. 0)GOTO 9999
  194. IF(MTYPR .NE. 'TABLE ')THEN
  195. C
  196. C******* Message d'erreur standard
  197. C 37 2
  198. C On ne trouve pas d'objet de type %m1:8
  199. C
  200. MOTERR(1:8) = 'TABLE '
  201. CALL ERREUR(37)
  202. GOTO 9999
  203. ELSE
  204. ICOND = 1
  205. CALL LIROBJ(MTYPR,IPGAS,ICOND,IRETOU)
  206. CALL ACTOBJ(MTYPR,IPGAS,1)
  207. IF(IERR .NE. 0)GOTO 9999
  208. ENDIF
  209. C
  210. C**** Les especes qui sont dans les Equations d'Euler
  211. C
  212. MTYPR = ' '
  213. CALL ACMO(IPGAS,'ESPEULE',MTYPR,MLMESP)
  214. IF(MTYPR .EQ. ' ')THEN
  215. NESP = 0
  216. IYC = 0
  217. IGRYC = 0
  218. IALYC = 0
  219. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  220. C
  221. C******* Message d'erreur standard
  222. C -301 0 %m1:40
  223. C
  224. MOTERR(1:40) = 'TAB2 . ESPEULE = ??? '
  225. WRITE(IOIMP,*) MOTERR
  226. C
  227. C******* Message d'erreur standard
  228. C 21 2
  229. C Données incompatibles
  230. C
  231. CALL ERREUR(21)
  232. GOTO 9999
  233. ELSE
  234. SEGACT MLMESP
  235. NESP = MLMESP.MOTS(/2)
  236. SEGDES MLMESP
  237. ENDIF
  238. C
  239. C**** Les scalaires passifs
  240. C
  241. MTYPR = ' '
  242. CALL ACMO(IPGAS,'SCALPASS',MTYPR,MLMSCA)
  243. IF(MTYPR .EQ. ' ')THEN
  244. NSCA = 0
  245. ISCAC = 0
  246. ELSEIF(MTYPR .NE. 'LISTMOTS')THEN
  247. C
  248. C******* Message d'erreur standard
  249. C -301 0 %m1:40
  250. C
  251. MOTERR(1:40) = 'TAB2 . SCALPASS = ??? '
  252. WRITE(IOIMP,*) MOTERR
  253. C
  254. C******* Message d'erreur standard
  255. C 21 2
  256. C Données incompatibles
  257. C
  258. CALL ERREUR(21)
  259. GOTO 9999
  260. ELSE
  261. SEGACT MLMSCA
  262. NSCA = MLMSCA.MOTS(/2)
  263. SEGDES MLMSCA
  264. ENDIF
  265. C
  266. C**** Lecture du CHPOINT ROC
  267. C
  268. ICOND = 1
  269. CALL QUETYP(MTYPR,ICOND,IRETOU)
  270. IF(IERR .NE. 0)GOTO 9999
  271. IF(MTYPR .NE. 'CHPOINT ')THEN
  272. C
  273. C******* Message d'erreur standard
  274. C 37 2
  275. C On ne trouve pas d'objet de type %m1:8
  276. C
  277. MOTERR(1:8) = 'CHPOINT '
  278. CALL ERREUR(37)
  279. GOTO 9999
  280. ELSE
  281. ICOND = 1
  282. CALL LIROBJ(MTYPR,IROC,ICOND,IRETOU)
  283. CALL ACTOBJ(MTYPR,IROC,1)
  284. IF(IERR .NE. 0)GOTO 9999
  285. ENDIF
  286. C
  287. C**** Control du CHPOINT: QUEPO1
  288. C
  289. JGN=4
  290. JGM=1
  291. SEGINI MLMCOM
  292. MLMCOM.MOTS(1)='SCAL'
  293. CALL QUEPO1(IROC, ICEN, MLMCOM)
  294. SEGSUP MLMCOM
  295. IF(IERR .NE. 0)THEN
  296. IERR0 = IERR
  297.  
  298. C
  299. C******* Message d'erreur standard
  300. C -301 0 %m1:40
  301. C
  302. MOTERR(1:40) = 'CHPO1 = ??? '
  303. WRITE(IOIMP,*) MOTERR
  304.  
  305. GOTO 9999
  306. ENDIF
  307. C
  308. C**** Lecture du CHPOINT GRADROC
  309. C
  310. ICOND = 1
  311. CALL QUETYP(MTYPR,ICOND,IRETOU)
  312. IF(IERR .NE. 0)GOTO 9999
  313. IF(MTYPR .NE. 'CHPOINT ')THEN
  314. C
  315. C******* Message d'erreur standard
  316. C 37 2
  317. C On ne trouve pas d'objet de type %m1:8
  318. C
  319. MOTERR(1:8) = 'CHPOINT '
  320. CALL ERREUR(37)
  321. GOTO 9999
  322. ELSE
  323. ICOND = 1
  324. CALL LIROBJ(MTYPR,IGRROC,ICOND,IRETOU)
  325. CALL ACTOBJ(MTYPR,IGRROC,1)
  326. IF (IERR.NE.0) GOTO 9999
  327. ENDIF
  328. C
  329. C**** Control du CHPOINT: QUEPO1
  330. C
  331. JGN=4
  332. JGM=IDIM
  333. SEGINI MLMCOM
  334. MLMCOM.MOTS(1)='P1DX'
  335. MLMCOM.MOTS(2)='P1DY'
  336. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P1DZ'
  337. CALL QUEPO1(IGRROC, ICEN, MLMCOM)
  338. SEGSUP MLMCOM
  339. IF(IERR .NE. 0)THEN
  340. IERR0 = IERR
  341.  
  342. C
  343. C******* Message d'erreur standard
  344. C -301 0 %m1:40
  345. C
  346. MOTERR(1:40) = 'CHPO2 = ??? '
  347. WRITE(IOIMP,*) MOTERR
  348.  
  349. GOTO 9999
  350. ENDIF
  351. C
  352. C**** Lecture du CHPOINT IALROC
  353. C
  354. ICOND = 1
  355. CALL QUETYP(MTYPR,ICOND,IRETOU)
  356. IF(IERR .NE. 0)GOTO 9999
  357. IF(MTYPR .NE. 'CHPOINT ')THEN
  358. C
  359. C******* Message d'erreur standard
  360. C 37 2
  361. C On ne trouve pas d'objet de type %m1:8
  362. C
  363. MOTERR(1:8) = 'CHPOINT '
  364. CALL ERREUR(37)
  365. GOTO 9999
  366. ELSE
  367. ICOND = 1
  368. CALL LIROBJ(MTYPR,IALROC,ICOND,IRETOU)
  369. CALL ACTOBJ(MTYPR,IALROC,1)
  370. IF (IERR.NE.0) GOTO 9999
  371. ENDIF
  372. C
  373. C**** Control du CHPOINT: QUEPO1
  374. C
  375. JGN=4
  376. JGM=1
  377. SEGINI MLMCOM
  378. MLMCOM.MOTS(1)= 'P1 '
  379. CALL QUEPO1(IALROC, ICEN, MLMCOM)
  380. SEGSUP MLMCOM
  381. IF(IERR .NE. 0)THEN
  382. IERR0 = IERR
  383.  
  384. C
  385. C******* Message d'erreur standard
  386. C -301 0 %m1:40
  387. C
  388. MOTERR(1:40) = 'CHPO3 = ??? '
  389. WRITE(IOIMP,*) MOTERR
  390.  
  391. GOTO 9999
  392. ENDIF
  393. C
  394. C
  395. C**** Lecture du CHPOINT VITC
  396. C
  397. ICOND = 1
  398. CALL QUETYP(MTYPR,ICOND,IRETOU)
  399. IF(IERR .NE. 0)GOTO 9999
  400. IF(MTYPR .NE. 'CHPOINT ')THEN
  401. C
  402. C******* Message d'erreur standard
  403. C 37 2
  404. C On ne trouve pas d'objet de type %m1:8
  405. C
  406. MOTERR(1:8) = 'CHPOINT '
  407. CALL ERREUR(37)
  408. GOTO 9999
  409. ELSE
  410. ICOND = 1
  411. CALL LIROBJ(MTYPR,IVITC,ICOND,IRETOU)
  412. CALL ACTOBJ(MTYPR,IVITC,1)
  413. IF (IERR.NE.0) GOTO 9999
  414. ENDIF
  415. C
  416. C**** Control du CHPOINT
  417. C
  418. JGN=4
  419. JGM=IDIM
  420. SEGINI MLMCOM
  421. MLMCOM.MOTS(1) = 'UX '
  422. MLMCOM.MOTS(2) = 'UY '
  423. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'UZ '
  424. CALL QUEPO1(IVITC, ICEN, MLMCOM)
  425. SEGSUP MLMCOM
  426. IF(IERR .NE. 0)THEN
  427. IERR0 = IERR
  428.  
  429. C
  430. C******* Message d'erreur standard
  431. C -301 0 %m1:40
  432. C
  433. MOTERR(1:40) = 'CHPO4 = ??? '
  434. WRITE(IOIMP,*) MOTERR
  435.  
  436. GOTO 9999
  437. ENDIF
  438. C
  439. C**** Lecture du CHPOINT GRADVITC
  440. C
  441. ICOND = 1
  442. CALL QUETYP(MTYPR,ICOND,IRETOU)
  443. IF(IERR .NE. 0)GOTO 9999
  444. IF(MTYPR .NE. 'CHPOINT ')THEN
  445. C
  446. C******* Message d'erreur standard
  447. C 37 2
  448. C On ne trouve pas d'objet de type %m1:8
  449. C
  450. MOTERR(1:8) = 'CHPOINT '
  451. CALL ERREUR(37)
  452. GOTO 9999
  453. ELSE
  454. ICOND = 1
  455. CALL LIROBJ(MTYPR,IGRVC,ICOND,IRETOU)
  456. CALL ACTOBJ(MTYPR,IGRVC,1)
  457. IF (IERR.NE.0) GOTO 9999
  458. ENDIF
  459. C
  460. C**** Control du CHPOINT: QUEPO1
  461. C
  462. JGN=4
  463. IF(IDIM .EQ. 2)THEN
  464. JGM=4
  465. SEGINI MLMCOM
  466. MLMCOM.MOTS(1) = 'P1DX'
  467. MLMCOM.MOTS(2) = 'P1DY'
  468. MLMCOM.MOTS(3) = 'P2DX'
  469. MLMCOM.MOTS(4) = 'P2DY'
  470. ELSE
  471. JGM=9
  472. SEGINI MLMCOM
  473. MLMCOM.MOTS(1) = 'P1DX'
  474. MLMCOM.MOTS(2) = 'P1DY'
  475. MLMCOM.MOTS(3) = 'P1DZ'
  476. MLMCOM.MOTS(4) = 'P2DX'
  477. MLMCOM.MOTS(5) = 'P2DY'
  478. MLMCOM.MOTS(6) = 'P2DZ'
  479. MLMCOM.MOTS(7) = 'P3DX'
  480. MLMCOM.MOTS(8) = 'P3DY'
  481. MLMCOM.MOTS(9) = 'P3DZ'
  482. ENDIF
  483. CALL QUEPO1(IGRVC, ICEN, MLMCOM)
  484. SEGSUP MLMCOM
  485. IF(IERR .NE. 0)THEN
  486. IERR0 = IERR
  487.  
  488. C
  489. C******* Message d'erreur standard
  490. C -301 0 %m1:40
  491. C
  492. MOTERR(1:40) = 'CHPO5 = ??? '
  493. WRITE(IOIMP,*) MOTERR
  494.  
  495. GOTO 9999
  496. ENDIF
  497. C
  498. C**** Lecture du CHPOINT IALVC
  499. C
  500. ICOND = 1
  501. CALL QUETYP(MTYPR,ICOND,IRETOU)
  502. IF(IERR .NE. 0)GOTO 9999
  503. IF(MTYPR .NE. 'CHPOINT ')THEN
  504. C
  505. C******* Message d'erreur standard
  506. C 37 2
  507. C On ne trouve pas d'objet de type %m1:8
  508. C
  509. MOTERR(1:8) = 'CHPOINT '
  510. CALL ERREUR(37)
  511. GOTO 9999
  512. ELSE
  513. ICOND = 1
  514. CALL LIROBJ(MTYPR,IALVC,ICOND,IRETOU)
  515. CALL ACTOBJ(MTYPR,IALVC,1)
  516. IF (IERR.NE.0) GOTO 9999
  517. ENDIF
  518. C
  519. C**** Control du CHPOINT: QUEPO1
  520. C
  521. JGN=4
  522. JGM=IDIM
  523. SEGINI MLMCOM
  524. MLMCOM.MOTS(1) = 'P1 '
  525. MLMCOM.MOTS(2) = 'P2 '
  526. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P3 '
  527. CALL QUEPO1(IALVC, ICEN, MLMCOM)
  528. SEGSUP MLMCOM
  529. IF(IERR .NE. 0)THEN
  530. IERR0 = IERR
  531.  
  532. C
  533. C******* Message d'erreur standard
  534. C -301 0 %m1:40
  535. C
  536. MOTERR(1:40) = 'CHPO6 = ??? '
  537. WRITE(IOIMP,*) MOTERR
  538.  
  539. GOTO 9999
  540. ENDIF
  541. C
  542. C**** Lecture du CHPOINT PC
  543. C
  544. ICOND = 1
  545. CALL QUETYP(MTYPR,ICOND,IRETOU)
  546. IF(IERR .NE. 0)GOTO 9999
  547. IF(MTYPR .NE. 'CHPOINT ')THEN
  548. C
  549. C******* Message d'erreur standard
  550. C 37 2
  551. C On ne trouve pas d'objet de type %m1:8
  552. C
  553. MOTERR(1:8) = 'CHPOINT '
  554. CALL ERREUR(37)
  555. GOTO 9999
  556. ELSE
  557. ICOND = 1
  558. CALL LIROBJ(MTYPR,IPC,ICOND,IRETOU)
  559. CALL ACTOBJ(MTYPR,IPC,1)
  560. IF (IERR.NE.0) GOTO 9999
  561. ENDIF
  562. C
  563. C**** Control du CHPOINT
  564. C
  565. JGN=4
  566. JGM=1
  567. SEGINI MLMCOM
  568. MLMCOM.MOTS(1)='SCAL'
  569. CALL QUEPO1(IPC, ICEN, MLMCOM)
  570. SEGSUP MLMCOM
  571. IF(IERR .NE. 0)THEN
  572. IERR0 = IERR
  573.  
  574. C
  575. C******* Message d'erreur standard
  576. C -301 0 %m1:40
  577. C
  578. MOTERR(1:40) = 'CHPO7 = ??? '
  579. WRITE(IOIMP,*) MOTERR
  580.  
  581. GOTO 9999
  582. ENDIF
  583. C
  584. C**** Lecture du CHPOINT GRADPC
  585. C
  586. ICOND = 1
  587. CALL QUETYP(MTYPR,ICOND,IRETOU)
  588. IF(IERR .NE. 0)GOTO 9999
  589. IF(MTYPR .NE. 'CHPOINT ')THEN
  590. C
  591. C******* Message d'erreur standard
  592. C 37 2
  593. C On ne trouve pas d'objet de type %m1:8
  594. C
  595. MOTERR(1:8) = 'CHPOINT '
  596. CALL ERREUR(37)
  597. GOTO 9999
  598. ELSE
  599. ICOND = 1
  600. CALL LIROBJ(MTYPR,IGRPC,ICOND,IRETOU)
  601. CALL ACTOBJ(MTYPR,IGRPC,1)
  602. IF (IERR.NE.0) GOTO 9999
  603. ENDIF
  604. C
  605. C**** Control du CHPOINT: QUEPO1
  606. C
  607. C
  608. JGN=4
  609. JGM=IDIM
  610. SEGINI MLMCOM
  611. MLMCOM.MOTS(1)='P1DX'
  612. MLMCOM.MOTS(2)='P1DY'
  613. IF(IDIM .EQ. 3) MLMCOM.MOTS(3) = 'P1DZ'
  614. CALL QUEPO1(IGRPC, ICEN, MLMCOM)
  615. IF(IERR .NE. 0)THEN
  616. IERR0 = IERR
  617.  
  618. C
  619. C******* Message d'erreur standard
  620. C -301 0 %m1:40
  621. C
  622. MOTERR(1:40) = 'CHPO8 = ??? '
  623. WRITE(IOIMP,*) MOTERR
  624.  
  625. GOTO 9999
  626. ENDIF
  627. C
  628. C**** Lecture du CHPOINT IALPC
  629. C
  630. ICOND = 1
  631. CALL QUETYP(MTYPR,ICOND,IRETOU)
  632. IF(IERR .NE. 0)GOTO 9999
  633. IF(MTYPR .NE. 'CHPOINT ')THEN
  634. C
  635. C******* Message d'erreur standard
  636. C 37 2
  637. C On ne trouve pas d'objet de type %m1:8
  638. C
  639. MOTERR(1:8) = 'CHPOINT '
  640. CALL ERREUR(37)
  641. GOTO 9999
  642. ELSE
  643. ICOND = 1
  644. CALL LIROBJ(MTYPR,IALPC,ICOND,IRETOU)
  645. CALL ACTOBJ(MTYPR,IALPC,1)
  646. IF (IERR.NE.0) GOTO 9999
  647. ENDIF
  648. C
  649. C**** Control du CHPOINT: QUEPO1
  650. C
  651. JGN=4
  652. JGM=1
  653. SEGINI MLMCOM
  654. MLMCOM.MOTS(1)= 'P1 '
  655. CALL QUEPO1(IALPC, ICEN, MLMCOM)
  656. SEGSUP MLMCOM
  657. IF(IERR .NE. 0)THEN
  658. IERR0 = IERR
  659.  
  660. C
  661. C******* Message d'erreur standard
  662. C -301 0 %m1:40
  663. C
  664. MOTERR(1:40) = 'CHPO9 = ??? '
  665. WRITE(IOIMP,*) MOTERR
  666.  
  667. GOTO 9999
  668. ENDIF
  669. C
  670. C**** Lecture du CHPOINT YC
  671. C
  672. IF(NESP .EQ. 0)THEN
  673. LYC = .FALSE.
  674. ELSEIF(NESP .GT. 0)THEN
  675. ICOND = 1
  676. CALL QUETYP(MTYPR,ICOND,IRETOU)
  677. IF(IERR .NE. 0)GOTO 9999
  678. IF(MTYPR .NE. 'CHPOINT ')THEN
  679. C
  680. C******* Message d'erreur standard
  681. C 37 2
  682. C On ne trouve pas d'objet de type %m1:8
  683. C
  684. MOTERR(1:8) = 'CHPOINT '
  685. CALL ERREUR(37)
  686. GOTO 9999
  687. ELSE
  688. ICOND = 1
  689. CALL LIROBJ(MTYPR,IYC,ICOND,IRETOU)
  690. CALL ACTOBJ(MTYPR,IYC,1)
  691. IF (IERR.NE.0) GOTO 9999
  692. LYC=.TRUE.
  693. ENDIF
  694. C
  695. C**** Control du CHPOINT
  696. C
  697. CALL QUEPO1(IYC, ICEN, MLMESP)
  698. IF(IERR .NE. 0)THEN
  699. IERR0 = IERR
  700.  
  701. C
  702. C******* Message d'erreur standard
  703. C -301 0 %m1:40
  704. C
  705. MOTERR(1:40) = 'CHPO10 = ??? '
  706. WRITE(IOIMP,*) MOTERR
  707.  
  708. GOTO 9999
  709. ENDIF
  710. C
  711. C**** Lecture du CHPOINT GRADYC
  712. C
  713. ICOND = 1
  714. CALL QUETYP(MTYPR,ICOND,IRETOU)
  715. IF(IERR .NE. 0)GOTO 9999
  716. IF(MTYPR .NE. 'CHPOINT ')THEN
  717. C
  718. C******* Message d'erreur standard
  719. C 37 2
  720. C On ne trouve pas d'objet de type %m1:8
  721. C
  722. MOTERR(1:8) = 'CHPOINT '
  723. CALL ERREUR(37)
  724. GOTO 9999
  725. ELSE
  726. ICOND = 1
  727. CALL LIROBJ(MTYPR,IGRYC,ICOND,IRETOU)
  728. CALL ACTOBJ(MTYPR,IGRYC,1)
  729. IF (IERR.NE.0) GOTO 9999
  730. ENDIF
  731. C
  732. C**** Control du CHPOINT: QUEPO1
  733. C
  734. JGN=4
  735. JGM=IDIM*NESP
  736. SEGINI MLMCOM
  737. C NESP < 10
  738. IF(NESP .GE. 10)THEN
  739. WRITE(IOIMP,*) 'NESP >= 10!'
  740. C
  741. C******* Message d'erreur standard
  742. C 21 2
  743. C Données incompatibles
  744. C
  745. CALL ERREUR(21)
  746. GOTO 9999
  747. ENDIF
  748. C
  749. ICEL = 0
  750. DO I1 = 1, NESP, 1
  751. DO I2 = 1, IDIM
  752. ICEL = ICEL + 1
  753. ICOM = 3 * (I1 -1) + I2
  754. MLMCOM.MOTS(ICEL) = NOMGRA(ICOM)
  755. ENDDO
  756. ENDDO
  757. CALL QUEPO1(IGRYC, ICEN, MLMCOM)
  758. SEGSUP MLMCOM
  759. IF(IERR .NE. 0)THEN
  760. IERR0 = IERR
  761.  
  762. C
  763. C******* Message d'erreur standard
  764. C -301 0 %m1:40
  765. C
  766. MOTERR(1:40) = 'CHPO11 = ??? '
  767. WRITE(IOIMP,*) MOTERR
  768.  
  769. GOTO 9999
  770. ENDIF
  771. C
  772. C**** Lecture du CHPOINT IALYC
  773. C
  774. ICOND = 1
  775. CALL QUETYP(MTYPR,ICOND,IRETOU)
  776. IF(IERR .NE. 0)GOTO 9999
  777. IF(MTYPR .NE. 'CHPOINT ')THEN
  778. C
  779. C******* Message d'erreur standard
  780. C 37 2
  781. C On ne trouve pas d'objet de type %m1:8
  782. C
  783. MOTERR(1:8) = 'CHPOINT '
  784. CALL ERREUR(37)
  785. GOTO 9999
  786. ELSE
  787. ICOND = 1
  788. CALL LIROBJ(MTYPR,IALYC,ICOND,IRETOU)
  789. CALL ACTOBJ(MTYPR,IALYC,1)
  790. IF (IERR.NE.0) GOTO 9999
  791. ENDIF
  792. C
  793. C**** Control du CHPOINT: QUEPO1
  794. C
  795. JGN = 4
  796. JGM = NESP
  797. SEGINI MLMCOM
  798. DO I1 = 1, NESP, 1
  799. MLMCOM.MOTS(I1)=NOMLIM(I1)
  800. ENDDO
  801. CALL QUEPO1(IALYC, ICEN, MLMCOM)
  802. SEGSUP MLMCOM
  803. IF(IERR .NE. 0)THEN
  804. IERR0 = IERR
  805.  
  806. C
  807. C******* Message d'erreur standard
  808. C -301 0 %m1:40
  809. C
  810. MOTERR(1:40) = 'CHPO12 = ??? '
  811. WRITE(IOIMP,*) MOTERR
  812.  
  813. GOTO 9999
  814. ENDIF
  815. ENDIF
  816. C
  817. C**** Lecture du CHPOINT ISCAC
  818. C
  819. IF(NSCA .EQ. 0)THEN
  820. LSCAC=.FALSE.
  821. ELSEIF(NSCA .GT. 0)THEN
  822. ICOND = 1
  823. CALL QUETYP(MTYPR,ICOND,IRETOU)
  824. IF(IERR .NE. 0)GOTO 9999
  825. IF(MTYPR .NE. 'CHPOINT ')THEN
  826. C
  827. C******* Message d'erreur standard
  828. C 37 2
  829. C On ne trouve pas d'objet de type %m1:8
  830. C
  831. MOTERR(1:8) = 'CHPOINT '
  832. CALL ERREUR(37)
  833. GOTO 9999
  834. ELSE
  835. ICOND = 1
  836. CALL LIROBJ(MTYPR,ISCAC,ICOND,IRETOU)
  837. CALL ACTOBJ(MTYPR,ISCAC,1)
  838. IF (IERR.NE.0) GOTO 9999
  839. LSCAC=.TRUE.
  840. ENDIF
  841. C
  842. C**** Control du CHPOINT
  843. C
  844. CALL QUEPO1(ISCAC, ICEN, MLMSCA)
  845. IF(IERR .NE. 0)THEN
  846. IERR0 = IERR
  847.  
  848. C
  849. C******* Message d'erreur standard
  850. C -301 0 %m1:40
  851. C
  852. MOTERR(1:40) = 'CHPO13 = ??? '
  853. WRITE(IOIMP,*) MOTERR
  854.  
  855. GOTO 9999
  856. ENDIF
  857. C
  858. C**** Lecture du CHPOINT GRADSC
  859. C
  860. ICOND = 1
  861. CALL QUETYP(MTYPR,ICOND,IRETOU)
  862. IF(IERR .NE. 0)GOTO 9999
  863. IF(MTYPR .NE. 'CHPOINT ')THEN
  864. C
  865. C******* Message d'erreur standard
  866. C 37 2
  867. C On ne trouve pas d'objet de type %m1:8
  868. C
  869. MOTERR(1:8) = 'CHPOINT '
  870. CALL ERREUR(37)
  871. GOTO 9999
  872. ELSE
  873. ICOND = 1
  874. CALL LIROBJ(MTYPR,IGRSC,ICOND,IRETOU)
  875. CALL ACTOBJ(MTYPR,IGRSC,1)
  876. IF (IERR.NE.0) GOTO 9999
  877. ENDIF
  878. C
  879. C**** Control du CHPOINT: QUEPO1
  880. C
  881. JGN=4
  882. JGM=IDIM*NSCA
  883. SEGINI MLMCOM
  884. C NSCA < 10
  885. IF(NSCA .GE. 10)THEN
  886. WRITE(IOIMP,*) 'NSCA >= 10!'
  887. C
  888. C******* Message d'erreur standard
  889. C 21 2
  890. C Données incompatibles
  891. C
  892. CALL ERREUR(21)
  893. GOTO 9999
  894. ENDIF
  895. ICEL = 0
  896. DO I1 = 1, NSCA, 1
  897. DO I2 = 1, IDIM
  898. ICEL = ICEL + 1
  899. ICOM = 3 * (I1 -1) + I2
  900. MLMCOM.MOTS(ICEL) = NOMGRA(ICOM)
  901. ENDDO
  902. ENDDO
  903. CALL QUEPO1(IGRSC, ICEN, MLMCOM)
  904. SEGSUP MLMCOM
  905. IF(IERR .NE. 0)THEN
  906. IERR0 = IERR
  907.  
  908. C
  909. C******* Message d'erreur standard
  910. C -301 0 %m1:40
  911. C
  912. MOTERR(1:40) = 'CHPO14 = ??? '
  913. WRITE(IOIMP,*) MOTERR
  914.  
  915. GOTO 9999
  916. ENDIF
  917. C
  918. C**** Lecture du CHPOINT IALSC
  919. C
  920. ICOND = 1
  921. CALL QUETYP(MTYPR,ICOND,IRETOU)
  922. IF(IERR .NE. 0)GOTO 9999
  923. IF(MTYPR .NE. 'CHPOINT ')THEN
  924. C
  925. C******* Message d'erreur standard
  926. C 37 2
  927. C On ne trouve pas d'objet de type %m1:8
  928. C
  929. MOTERR(1:8) = 'CHPOINT '
  930. CALL ERREUR(37)
  931. GOTO 9999
  932. ELSE
  933. ICOND = 1
  934. CALL LIROBJ(MTYPR,IALSC,ICOND,IRETOU)
  935. CALL ACTOBJ(MTYPR,IALSC,1)
  936. IF (IERR.NE.0) GOTO 9999
  937. ENDIF
  938. C
  939. C**** Control du CHPOINT: QUEPO1
  940. C
  941. JGN = 4
  942. JGM = NSCA
  943. SEGINI MLMCOM
  944. DO I1 = 1, NSCA, 1
  945. MLMCOM.MOTS(I1)=NOMLIM(I1)
  946. ENDDO
  947. CALL QUEPO1(IALSC, ICEN, MLMCOM)
  948. SEGSUP MLMCOM
  949. IF(IERR .NE. 0)THEN
  950. IERR0 = IERR
  951.  
  952. C
  953. C******* Message d'erreur standard
  954. C -301 0 %m1:40
  955. C
  956. MOTERR(1:40) = 'CHPO15 = ??? '
  957. WRITE(IOIMP,*) MOTERR
  958.  
  959. GOTO 9999
  960. ENDIF
  961. ENDIF
  962. IF(ORDTEM .EQ. 1)THEN
  963. LOGTEM = .FALSE.
  964. DELTAT = 0.0D0
  965. IGAMC = 0
  966. LGAMC=.FALSE.
  967. ELSE
  968. C
  969. C**** Lecture du CHPOINT GAMC (dans le cas 2-eme ordre en temps)
  970. C
  971. ICOND = 1
  972. CALL QUETYP(MTYPR,ICOND,IRETOU)
  973. IF(IERR .NE. 0)GOTO 9999
  974. IF(MTYPR .NE. 'CHPOINT ')THEN
  975. C
  976. C******* Message d'erreur standard
  977. C 37 2
  978. C On ne trouve pas d'objet de type %m1:8
  979. C
  980. MOTERR(1:8) = 'CHPOINT '
  981. CALL ERREUR(37)
  982. GOTO 9999
  983. ELSE
  984. ICOND = 1
  985. CALL LIROBJ(MTYPR,IGAMC,ICOND,IRETOU)
  986. CALL ACTOBJ(MTYPR,IGAMC,1)
  987. IF (IERR.NE.0) GOTO 9999
  988. LGAMC=.TRUE.
  989. ENDIF
  990. C
  991. C**** Control du CHPOINT
  992. C
  993. JGN=4
  994. JGM=1
  995. SEGINI MLMCOM
  996. MLMCOM.MOTS(1)= 'SCAL'
  997. CALL QUEPO1(IGAMC, ICEN, MLMCOM)
  998. SEGSUP MLMCOM
  999. IF(IERR .NE. 0)THEN
  1000. IERR0 = IERR
  1001.  
  1002. C
  1003. C******* Message d'erreur standard
  1004. C -301 0 %m1:40
  1005. C
  1006. MOTERR(1:40) = 'CHPO16 = ??? '
  1007. WRITE(IOIMP,*) MOTERR
  1008.  
  1009. GOTO 9999
  1010. ENDIF
  1011. LOGTEM = .TRUE.
  1012. ICOND = 1
  1013. CALL LIRREE(DELTAT,ICOND,IRETOU)
  1014. IF(IERR .NE. 0)GOTO 9999
  1015. ENDIF
  1016. C
  1017. C**** Centre -> Face
  1018. C
  1019. IF(IDIM .EQ. 2)THEN
  1020. C
  1021. C******* Deux Dimensions, Mono/Multi Especes, 2-eme ordre en espace, 1er/2-eme ordre en
  1022. C temps
  1023. C
  1024. CALL PRE321(LOGTEM,LGAMC,LYC,LSCAC,
  1025. & ICEN,IFACE,IFACEL,INORM,
  1026. & IROC, IGRROC, IALROC,
  1027. & IVITC, IGRVC, IALVC,
  1028. & IPC ,IGRPC, IALPC,
  1029. & IYC ,IGRYC, IALYC,
  1030. & ISCAC ,IGRSC, IALSC,
  1031. & IGAMC,
  1032. & DELTAT,
  1033. & IROF,IVITF,IPF,IYF,ISCAF,
  1034. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  1035. ELSE
  1036. C
  1037. C******* Trois Dimensions, Mono/Multi Especes, 1er ordre en espace, 1er ordre en
  1038. C temps
  1039. C
  1040. CALL PRE322(LOGTEM,LGAMC,LYC,LSCAC,
  1041. & ICEN,IFACE,IFACEL,INORM,
  1042. & IROC, IGRROC, IALROC,
  1043. & IVITC, IGRVC, IALVC,
  1044. & IPC ,IGRPC, IALPC,
  1045. & IYC ,IGRYC, IALYC,
  1046. & ISCAC ,IGRSC, IALSC,
  1047. & IGAMC,
  1048. & DELTAT,
  1049. & IROF,IVITF,IPF,IYF,ISCAF,
  1050. & LOGAN,LOGNEG,LOGBOR,MESERR,VALER,VAL1,VAL2)
  1051. ENDIF
  1052. C
  1053. C**** Messages d'erreur
  1054. C
  1055. IF(LOGAN)THEN
  1056. C
  1057. C******* Anomalie detectée
  1058. C
  1059. C
  1060. C******* Message d'erreur standard
  1061. C -301 0
  1062. C %m1:40
  1063. C
  1064. MOTERR(1:40) = MESERR(1:40)
  1065. WRITE(IOIMP,*) MOTERR
  1066. C
  1067. C******* Message d'erreur standard
  1068. C 5 3
  1069. C Erreur anormale.contactez votre support
  1070. C
  1071. CALL ERREUR(5)
  1072. GOTO 9999
  1073. C
  1074. ELSEIF(LOGNEG)THEN
  1075. C
  1076. C******* Message d'erreur standard
  1077. C 41 2
  1078. C %m1:8 = %r1 inférieur à %r2
  1079. C
  1080. MOTERR(1:8) = MESERR(1:8)
  1081. REAERR(1) = REAL(VALER)
  1082. REAERR(2) = 0.0
  1083. CALL ERREUR(41)
  1084. GOTO 9999
  1085. ELSEIF(LOGBOR)THEN
  1086. C
  1087. C******* Message d'erreur standard
  1088. C 42 2
  1089. C %m1:8 = %r1 non compris entre %r2 et %r3
  1090. C
  1091. MOTERR(1:8) = MESERR(1:8)
  1092. REAERR(1) = REAL(VALER)
  1093. REAERR(2) = REAL(VAL1)
  1094. REAERR(3) = REAL(VAL2)
  1095. CALL ERREUR(42)
  1096. GOTO 9999
  1097. ELSE
  1098. C
  1099. C******* Ecriture de ROF, VITF, PF, YF (si existe)
  1100. C
  1101. MTYPR = 'MCHAML '
  1102. IF(ISCAF .NE. 0) THEN
  1103. CALL ACTOBJ(MTYPR,ISCAF,1)
  1104. CALL ECROBJ(MTYPR,ISCAF)
  1105. ENDIF
  1106. IF(IYF .NE. 0) THEN
  1107. CALL ACTOBJ(MTYPR,IYF,1)
  1108. CALL ECROBJ(MTYPR,IYF)
  1109. ENDIF
  1110. CALL ACTOBJ(MTYPR,IPF,1)
  1111. CALL ACTOBJ(MTYPR,IVITF,1)
  1112. CALL ACTOBJ(MTYPR,IROF,1)
  1113.  
  1114. CALL ECROBJ(MTYPR,IPF)
  1115. CALL ECROBJ(MTYPR,IVITF)
  1116. CALL ECROBJ(MTYPR,IROF)
  1117. ENDIF
  1118. C
  1119. 9999 CONTINUE
  1120. END
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  

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