Télécharger tdiag.eso

Retour à la liste

Numérotation des lignes :

tdiag
  1. C TDIAG SOURCE CB215821 20/11/25 13:40:49 10792
  2. SUBROUTINE TDIAG (IPTAB1)
  3. C
  4. C***********************************************************************
  5. C
  6. C
  7. C FONCTION:
  8. C ---------
  9. C
  10. C Discrétisation de l'opération IDENTITE en "0D" sur des
  11. C éléments de type POINT.
  12. C
  13. C
  14. C ENTREE :
  15. C ----------
  16. C
  17. C IPTAB1 : TABLE de soustype 'OPER_0D' contenant les indices
  18. C suivants :
  19. C
  20. C TAB1 . 'MAILLAGE': maillage des connectivités entre le spg de
  21. C l'inc. primale et le spg de l'inc. duale
  22. C (type MAILLAGE).
  23. C TAB1 . 'INCO' : TABLE de soustype 'INCO' contenant l'ensemble
  24. C des champs à l'itération précédant l'itération
  25. C courante (type ENTIER).
  26. C TAB1 . 'COEF' : Valeurs de la diagonale ou des coefficients de
  27. C couplage (type CHPOINT ou MOT).
  28. C TAB1 . 'PRIMAL' : Nom de l'inconnue primale (doit être un indice
  29. C de la table de soustype 'INCO' (type MOT).
  30. C TAB1 . 'DUAL' : Nom de l'inconnue duale (doit être un indice de
  31. C la table de soustype 'INCO') (type MOT).
  32. C TAB1 . 'TYPEL' : Mot indiquant quel type de spg on a entre l'inc.
  33. C primale et l'inc. duale (type MOT).
  34. C 3 possibilités pour l'instant :
  35. C - TAB1 . 'TYPEL' = 'P=D' (ou 'D=P')
  36. C ==> spg primale = spg duale
  37. C - TAB1 . 'TYPEL' = 'PD'
  38. C - TAB1 . 'TYPEL' = 'DP'
  39. C Selon que TAB1 . 'MAILLAGE' soit un maillage
  40. C entre Primale et Duale ou l'inverse
  41. C
  42. C RESULTATS :
  43. C ----------
  44. C
  45. C TAB1 . 'LHS' : Matrice élémentaire associée à l'opération
  46. C (type RIGIDITE).
  47. C
  48. C REMARQUES:
  49. C ----------
  50. C
  51. C Si aucun nom de composante primale n'est donné le résultat est
  52. C une matrice diagonale.
  53. C Si un nom de composante primale, différent du nom de la composante
  54. C duale, est donné, le résultat est une matrice de couplage.
  55. C Si les supports des composantes primales et duales sont différents
  56. C le résultat sera également une matrice de couplage.
  57. C
  58. C
  59. C AUTEUR, DATE DE CREATION:
  60. C -------------------------
  61. C
  62. C Laurent DADA décembre 1996
  63. C
  64. C AUTEUR, DATE DE MODIFICATION:
  65. C -----------------------------
  66. C
  67. C Alexandre BLEYER Novembre 2002
  68. C Modifications : - creation des matrices elementaires simplifiee
  69. C - utilisation d'un maillage de connectivite
  70. C entre l'inc. duale et l'inc. primale
  71. C
  72. C
  73. C LANGAGE:
  74. C --------
  75. C
  76. C ESOPE + FORTRAN77
  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 CCGEOME
  87. -INC SMCOORD
  88. -INC SMTABLE
  89. POINTEUR IPTAB1.MTABLE,IPTABI.MTABLE
  90. -INC SMCHPOI
  91. -INC SMELEME
  92. POINTEUR IPTMAIL.MELEME
  93. -INC SMRIGID
  94. C
  95. CHARACTER*8 TYPE,MOTI,MOT1,NOMPR1,NOMDU1,NOSUP1,NOSUD1,NOMMU1
  96. CHARACTER*8 TYPEL,MOTYP,TYPOBJ
  97. CHARACTER*4 NAMD1,NAMP1
  98.  
  99. C Recuperation du maillage des connectivite
  100. TYPOBJ='MAILLAGE'
  101. CALL ACMO (IPTAB1,'MAILLAGE',TYPOBJ,IPTMAIL)
  102. IF (IERR.NE.0) RETURN
  103. C
  104. C Lecture de la table INCO dans la table OPER_0D
  105. C
  106. TYPE = 'TABLE '
  107. CALL ACMO (IPTAB1,'INCO',TYPE,IPTABI)
  108. IF (IERR.NE.0) RETURN
  109. C
  110. MOTI = 'SOUSTYPE'
  111. CALL ACMM (IPTABI,MOTI,MOT1)
  112. IF (IERR.NE.0) RETURN
  113. IF (MOT1(1:4).NE.'INCO') THEN
  114. MOTERR(1:8) = 'INCO '
  115. MOTERR(9:16) = 'INCO '
  116. CALL ERREUR (790)
  117. RETURN
  118. ENDIF
  119. C
  120. C Récupération du CHPOINT multiplicateur
  121. C
  122. TYPE = ' '
  123. CALL ACMO (IPTAB1,'COEF',TYPE,IPR1)
  124. IF (IERR.NE.0) RETURN
  125. IF (TYPE.EQ.'MOT ') THEN
  126. CALL ACMM (IPTAB1,'COEF',NOMMU1)
  127. IF (IERR.NE.0) RETURN
  128. C récupération du CHPOINT multiplicateur dans la table INCO
  129. TYPE = 'CHPOINT '
  130. CALL ACMO (IPTABI,NOMMU1,TYPE,IPCH1)
  131. IF (IERR.NE.0) RETURN
  132. ELSEIF (TYPE.EQ.'CHPOINT ') THEN
  133. IPCH1 = IPR1
  134. ELSE
  135. MOTERR(1:8) = 'COEF '
  136. MOTERR(9:16) = TYPE
  137. CALL ERREUR (787)
  138. RETURN
  139. ENDIF
  140. C
  141. C Lecture de l'inconnue PRIMALE
  142. C
  143. TYPE = ' '
  144. CALL ACMO (IPTAB1,'PRIMAL',TYPE,IPR1)
  145. IF (TYPE.EQ.'MOT ') THEN
  146. CALL ACMM (IPTAB1,'PRIMAL',NOMPR1)
  147. IF (IERR.NE.0) RETURN
  148. ENDIF
  149. C
  150. C Lecture de l'inconnue DUALE
  151. C
  152. TYPE = ' '
  153. CALL ACMO (IPTAB1,'DUAL',TYPE,IDU1)
  154. IF (TYPE.EQ.'MOT ') THEN
  155. CALL ACMM (IPTAB1,'DUAL',NOMDU1)
  156. IF (IERR.NE.0) RETURN
  157. ENDIF
  158. C
  159. C Lecture de l'ordre PRIMAL/DUAL par rapport au
  160. C maillage des connectivites
  161. C
  162. TYPE = ' '
  163. CALL ACMO (IPTAB1,'TYPEL',TYPE,ITYPL1)
  164. IF (TYPE.EQ.'MOT ') THEN
  165. CALL ACMM (IPTAB1,'TYPEL',TYPEL)
  166. IF (IERR.NE.0) RETURN
  167. ENDIF
  168. C
  169. C Suivant TYPEL, on construit les differentes matrices
  170. C
  171. IF ((TYPEL.EQ.'P=D').OR.(TYPEL.EQ.'D=P')) THEN
  172. CALL TDIAG1(NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
  173. IF (IERR.NE.0) RETURN
  174. ELSEIF(TYPEL.EQ.'PD') THEN
  175. ITY1=1
  176. CALL TDIAG2(ITY1,NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
  177. IF (IERR.NE.0) RETURN
  178. ELSEIF(TYPEL.EQ.'DP') THEN
  179. ITY1=2
  180. CALL TDIAG2(ITY1,NOMDU1,NOMPR1,IPTMAIL,IPCH1,MRIGID)
  181. IF (IERR.NE.0) RETURN
  182. ELSE
  183. CALL ERREUR (19)
  184. RETURN
  185. ENDIF
  186. C
  187. C Ecriture du résultat - Remplissage de l'indice 'LHS'
  188. C
  189. TYPE = 'RIGIDITE'
  190. CALL ECMO (IPTAB1,'LHS',TYPE,MRIGID)
  191. IF (IERR.NE.0) RETURN
  192. C
  193. END
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  

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