Télécharger toconv.eso

Retour à la liste

Numérotation des lignes :

toconv
  1. C TOCONV SOURCE CB215821 20/11/25 13:41:07 10792
  2. SUBROUTINE TOCONV (IPTAB1)
  3. C
  4. C***********************************************************************
  5. C
  6. C
  7. C FONCTION:
  8. C ---------
  9. C
  10. C en "0D/1D" sur des éléments de type POINT.
  11. C
  12. C
  13. C ENTREE :
  14. C -------
  15. C
  16. C TAB1 : TABLE de pointeur IPTAB1 (soustype 'OPER_0D')
  17. C contenant les indices suivants :
  18. C
  19. C TAB1 . 'GEOINF' : TABLE des informations géométriques de soustype
  20. C 'GEOINF' (type ENTIER).
  21. C TAB1 . 'INCO' : TABLE de soustype 'INCO' contenant l'ensemble
  22. C des champs à l'itération précédant l'itération
  23. C courante (type ENTIER).
  24. C TAB1 . 'MULT1' : Valeurs du champ multiplicateur (type CHPOINT ou
  25. C MOT) (de support 'CELL')
  26. C TAB1 . 'FLUX' : Nom de la composante débit de masse (type MOT)
  27. C (doit être un indice de la table 'INCO').
  28. C (de support 'JUNCTION' ou 'JULIQ')
  29. C TAB1 . 'OPTION' : Traitement centré ou décentré de l'opération
  30. C (type MOT = 'CENTRE' ou 'DECENTRE')
  31. C TAB1 . 'DUAL' : Nom de l'inconnue duale (doit être un indice de
  32. C la table de soustype 'INCO') (type MOT).
  33. C (de support 'CELL')
  34. C (TAB1 . 'PRIMAL'): Nom de l'inconnue primale (doit être un indice
  35. C de la table de soustype 'INCO')
  36. C (type MOT) (indice facultatif).
  37. C (de support 'CELL')
  38. C
  39. C
  40. C RESULTAT :
  41. C ---------
  42. C
  43. C TAB1 . 'LHS' : Matrice élémentaire associée à l'opération
  44. C (type RIGIDITE).
  45. C
  46. C AUTEUR, DATE DE CREATION:
  47. C -------------------------
  48. C
  49. C Laurent DADA décembre 1996
  50. C
  51. C
  52. C LANGAGE:
  53. C --------
  54. C
  55. C ESOPE + FORTRAN77
  56. C
  57. C
  58. C SUBROUTINES APPELEES :
  59. C ---------------------
  60. C
  61. C TCONVC, TCONVD
  62. C
  63. C***********************************************************************
  64. C
  65. C Variables internes :
  66. C -------------------
  67. C
  68. C MPOVA1 : pointeur sur MPOVAL du CHPO MULT1
  69. C MPOVA2 : pointeur sur MPOVAL du CHPO FLUX
  70. C IPTJUN : pointeur sur maillage JUNCTION ou JULIQ
  71. C IPTD1 : pointeur sur maillage DUAL
  72. C IPTP1 : pointeur sur maillage PRIMAL
  73. C IPJUCE : pointeur sur maillage des connectivités JUNCTION/CELL
  74. C NOMDU1 : nom de l'inconnue DUAL
  75. C NOMPR1 : nom de l'inconnue PRIMAL
  76. C NOMFL1 : nom de l'inconnue FLUX
  77. C
  78. C***********************************************************************
  79. C
  80. IMPLICIT INTEGER(I-N)
  81. IMPLICIT REAL*8 (A-H,O-Z)
  82. C
  83.  
  84. -INC PPARAM
  85. -INC CCOPTIO
  86. -INC SMTABLE
  87. -INC SMCHPOI
  88. -INC SMELEME
  89. POINTEUR IPTD1.MELEME,IPTJUN.MELEME,IPJUCE.MELEME
  90. -INC SMRIGID
  91.  
  92. C
  93. CHARACTER*8 TYPE,MOTI,MOT1,NOMPR1,NOMDU1,NOSUP1,NOSUD1,NOMMU1
  94. CHARACTER*8 NOMFL1,NOSUF1,NOOPT1,JCEL
  95. LOGICAL LPRIMA
  96. C
  97. C Lecture de la table GEOINF dans la table OPER_0D
  98. C
  99. TYPE = 'TABLE '
  100. CALL ACMO (IPTAB1,'GEOINF',TYPE,IPTABG)
  101. IF (IERR.NE.0) RETURN
  102. C
  103. MOTI = 'SOUSTYPE'
  104. CALL ACMM (IPTABG,MOTI,MOT1)
  105. IF (IERR.NE.0) RETURN
  106. IF (MOT1(1:6).NE.'GEOINF') THEN
  107. MOTERR(1:8) = 'GEOINF '
  108. MOTERR(9:16) = 'GEOINF '
  109. CALL ERREUR (790)
  110. RETURN
  111. ENDIF
  112. C
  113. C Lecture de la table INCO dans la table OPER_0D
  114. C
  115. TYPE = 'TABLE '
  116. CALL ACMO (IPTAB1,'INCO',TYPE,IPTAB2)
  117. IF (IERR.NE.0) RETURN
  118. C
  119. MOTI = 'SOUSTYPE'
  120. CALL ACMM (IPTAB2,MOTI,MOT1)
  121. IF (IERR.NE.0) RETURN
  122. IF (MOT1(1:4).NE.'INCO') THEN
  123. MOTERR(1:8) = 'INCO '
  124. MOTERR(9:16) = 'INCO '
  125. CALL ERREUR (790)
  126. RETURN
  127. ENDIF
  128. C
  129. C Lecture de la table SUPPORT dans la table INCO
  130. C
  131. TYPE = 'TABLE '
  132. CALL ACMO (IPTAB2,'SUPPORT',TYPE,IPTABS)
  133. IF (IERR.NE.0) RETURN
  134. C
  135. C Récupération du CHPOINT multiplicateur
  136. C
  137. TYPE = ' '
  138. CALL ACMO (IPTAB1,'MULT1',TYPE,IPR1)
  139. IF (IERR.NE.0) RETURN
  140. IF (TYPE.EQ.'MOT ') THEN
  141. CALL ACMM (IPTAB1,'MULT1',NOMMU1)
  142. IF (IERR.NE.0) RETURN
  143. C récupération du CHPOINT multiplicateur dans la table INCO
  144. TYPE = 'CHPOINT '
  145. CALL ACMO (IPTAB2,NOMMU1,TYPE,IPCH1)
  146. IF (IERR.NE.0) RETURN
  147. ELSEIF (TYPE.EQ.'CHPOINT ') THEN
  148. IPCH1 = IPR1
  149. ELSE
  150. MOTERR(1:8) = 'MULT1 '
  151. MOTERR(9:16) = TYPE
  152. CALL ERREUR (787)
  153. RETURN
  154. ENDIF
  155. C
  156. C Test du CHPOINT multiplicateur
  157. C
  158. MCHPOI = IPCH1
  159. SEGACT MCHPOI
  160. MSOUPO = IPCHP(1)
  161. SEGDES MCHPOI
  162. SEGACT MSOUPO
  163. NC = NOHARM(/1)
  164. IF (NC.NE.1) THEN
  165. MOTERR(1:8) = 'MULT1 '
  166. MOTERR(9:16) = 'CHPOINT '
  167. CALL ERREUR (784)
  168. SEGDES MSOUPO
  169. RETURN
  170. ENDIF
  171. IPT1 = IGEOC
  172. MPOVA1 = IPOVAL
  173. SEGDES MSOUPO
  174. C
  175. C Lecture de la composante FLUX
  176. C
  177. TYPE = ' '
  178. CALL ACMO (IPTAB1,'FLUX',TYPE,IFLU1)
  179. IF (TYPE.EQ.'MOT ') THEN
  180. CALL ACMM (IPTAB1,'FLUX',NOMFL1)
  181. IF (IERR.NE.0) RETURN
  182. ELSE
  183. MOTERR(1:8) = 'FLUX '
  184. MOTERR(9:16) = TYPE
  185. CALL ERREUR (787)
  186. RETURN
  187. ENDIF
  188. C
  189. C Lecture de l'inconnue DUAL
  190. C
  191. TYPE = ' '
  192. CALL ACMO (IPTAB1,'DUAL',TYPE,IDU1)
  193. IF (TYPE.EQ.'MOT ') THEN
  194. CALL ACMM (IPTAB1,'DUAL',NOMDU1)
  195. IF (IERR.NE.0) RETURN
  196. ELSE
  197. MOTERR(1:8) = 'DUAL '
  198. MOTERR(9:16) = TYPE
  199. CALL ERREUR (787)
  200. RETURN
  201. ENDIF
  202. C
  203. C Lecture éventuelle de l'inconnue PRIMAL
  204. C
  205. NOMPR1 = ' '
  206. LPRIMA = .FALSE.
  207. TYPE = ' '
  208. CALL ACMO (IPTAB1,'PRIMAL',TYPE,IPR1)
  209. IF (TYPE.EQ.'MOT ') THEN
  210. LPRIMA = .TRUE.
  211. CALL ACMM (IPTAB1,'PRIMAL',NOMPR1)
  212. IF (IERR.NE.0) RETURN
  213. ENDIF
  214. C
  215. C Lecture du nom du support de la composante FLUX
  216. C Arrêt si différent de 'JUNCTION' ou de 'JULIQ'
  217. C Lecture du MAILLAGE de l'inconnue FLUX
  218. C Lecture des valeurs CHPOINT de composante FLUX
  219. C
  220. CALL ACMM (IPTABS,NOMFL1,NOSUF1)
  221. IF (IERR.NE.0) RETURN
  222. IF (NOSUF1.EQ.'JUNCTION') THEN
  223. JCEL = 'JUNCEL '
  224. ELSEIF (NOSUF1.EQ.'JULIQ ') THEN
  225. JCEL = 'JULCEL '
  226. ELSE
  227. MOTERR(1:8) = 'FLUX '
  228. MOTERR(9:16) = 'CHPOINT '
  229. CALL ERREUR (788)
  230. RETURN
  231. ENDIF
  232. C
  233. C TYPE = 'MAILLAGE'
  234. C CALL ACMO (IPTABG,NOSUF1,TYPE,IPTJUN)
  235. C IF (IERR.NE.0) RETURN
  236. C
  237. TYPE = 'CHPOINT '
  238. CALL ACMO (IPTAB2,NOMFL1,TYPE,IPCH2)
  239. IF (IERR.NE.0) RETURN
  240. MCHPOI = IPCH2
  241. SEGACT MCHPOI
  242. MSOUPO = IPCHP(1)
  243. SEGDES MCHPOI
  244. SEGACT MSOUPO
  245. IPTJUN = IGEOC
  246. MPOVA2 = IPOVAL
  247. SEGDES MSOUPO
  248. C
  249. C Lecture du nom du support de l'inconnue DUAL
  250. C Lecture du MAILLAGE de l'inconnue DUAL
  251. C
  252. CALL ACMM (IPTABS,NOMDU1,NOSUD1)
  253. IF (IERR.NE.0) RETURN
  254. C
  255. TYPE = 'MAILLAGE'
  256. CALL ACMO (IPTABG,NOSUD1,TYPE,IPTD1)
  257. IF (IERR.NE.0) RETURN
  258. C
  259. C Lecture éventuelle du nom du support de l'inconnue PRIMAL
  260. C
  261. NOSUP1 = ' '
  262. IF (LPRIMA) THEN
  263. CALL ACMM (IPTABS,NOMPR1,NOSUP1)
  264. IF (IERR.NE.0) RETURN
  265. C
  266. TYPE = 'MAILLAGE'
  267. CALL ACMO (IPTABG,NOSUP1,TYPE,IPTP1)
  268. IF (IERR.NE.0) RETURN
  269. ENDIF
  270. C
  271. C Lecture du MAILLAGE des connectivités JCEL de la table GEOINF
  272. C Arrêt si les éléments ne sont pas des SEG3
  273. C
  274. TYPE = 'MAILLAGE'
  275. CALL ACMO (IPTABG,JCEL,TYPE,IPJUCE)
  276. IF (IERR.NE.0) RETURN
  277. SEGACT IPJUCE
  278. IF ((IPJUCE.ITYPEL).NE.3) THEN
  279. MOTERR(1:8) = JCEL(1:8)
  280. MOTERR(9:16) = 'MAILLAGE'
  281. CALL ERREUR (787)
  282. SEGDES IPJUCE
  283. RETURN
  284. ENDIF
  285. SEGDES IPJUCE
  286. C
  287. C Lecture de l'option centrée ou décentrée
  288. C
  289. TYPE = ' '
  290. CALL ACMO (IPTAB1,'OPTION',TYPE,IOP1)
  291. IF (TYPE.EQ.'MOT ') THEN
  292. CALL ACMM (IPTAB1,'OPTION',NOOPT1)
  293. IF (IERR.NE.0) RETURN
  294. ELSE
  295. MOTERR(1:8) = 'OPTION '
  296. MOTERR(9:16) = TYPE
  297. CALL ERREUR (787)
  298. RETURN
  299. ENDIF
  300. C
  301. C Calcul de la RIGIDITE
  302. C
  303. IF (NOOPT1.EQ.'CENTRE') THEN
  304. CALL TCONVC (MRIGID,LPRIMA,IPTD1,NOMPR1,NOMDU1,IPJUCE,
  305. & MPOVA1,IPT1,IPTP1,MPOVA2,NOMFL1,IPTJUN,
  306. & NOSUP1,NOSUD1)
  307. ELSEIF (NOOPT1.EQ.'DECENTRE') THEN
  308. C Arrêt si supports DUAL et PRIMAL différents de 'CELL'
  309. IF (NOSUD1.NE.'CELL') THEN
  310. MOTERR(1:8) = 'DUAL '
  311. MOTERR(9:16) = 'CHPOINT '
  312. CALL ERREUR (788)
  313. RETURN
  314. ENDIF
  315. IF (LPRIMA) THEN
  316. IF (NOSUP1.NE.'CELL') THEN
  317. MOTERR(1:8) = 'PRIMAL '
  318. MOTERR(9:16) = 'CHPOINT '
  319. CALL ERREUR (788)
  320. RETURN
  321. ENDIF
  322. ENDIF
  323. C
  324. CALL TCONVD (MRIGID,IPTD1,LPRIMA,NOMPR1,NOMDU1,IPJUCE,MPOVA1,
  325. &IPT1,IPTJUN,MPOVA2)
  326. ELSE
  327. MOTERR(1:8) = 'OPTION '
  328. MOTERR(9:16) = NOOPT1
  329. CALL ERREUR (787)
  330. RETURN
  331. ENDIF
  332. C
  333. C Ecriture du résultat
  334. C
  335. TYPE = 'RIGIDITE'
  336. CALL ECMO (IPTAB1,'LHS',TYPE,MRIGID)
  337. IF (IERR.NE.0) RETURN
  338. C
  339. END
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  

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