Télécharger mhybr.eso

Retour à la liste

Numérotation des lignes :

mhybr
  1. C MHYBR SOURCE CB215821 24/04/12 21:16:43 11897
  2. SUBROUTINE MHYBR
  3. C-----------------------------------------------------------------------
  4. C Cette subroutine permet de creer une matrice de type masse dans le
  5. C cadre d'une formulation variationnelle mixte.
  6. C-----------------------------------------------------------------------
  7. C
  8. C
  9. C-----------------------------------------------------------------------
  10. C OPTION DARCY
  11. C t--> =-1 -->
  12. C La matrice en question integre shp * k * shp
  13. C
  14. C Dans cette option, l'objet rigidite reçoit l'inverse de la matrice
  15. C Comme on ne se sert que de l'inverse de cette matrice, c'est cette
  16. C derniere qui est stockee dans l'objet rigidite.
  17. C
  18. C
  19. C---------------------------
  20. C Phrase d'appel (GIBIANE) :
  21. C---------------------------
  22. C
  23. C MHY1 = MHYB MMODEL CHMAT1 ('DARCY') ('LUMP');
  24. C
  25. C
  26. C
  27. C-----------------------------------------------------------------------
  28. C OPTION MASSE
  29. C t--> -->
  30. C La matrice en question integre shp * shp
  31. C
  32. C
  33. C Le resultat de l'integration est stocke dans l'objet rigidite
  34. C
  35. C---------------------------
  36. C Phrase d'appel (GIBIANE) :
  37. C---------------------------
  38. C
  39. C MHY1 = MHYB MMODEL 'MASSE' ;
  40. C
  41. C
  42. C------------------------
  43. C Operandes et resultat :
  44. C------------------------
  45. C
  46. C MHY1 : Matrice masse hybride
  47. C MMODEL : Objet modele specifiant la formulation
  48. C CHMAT1 : 'CHAMELEM' de sous type 'CARACTERISTIQUES'
  49. C
  50. C la table DOMAINE des connectivités est dans le modèle
  51. C-----------------------------------------------------------------------
  52. C
  53. C Langage : ESOPE + FORTRAN77
  54. C
  55. C Auteurs : 08/93 F.DABBENE
  56. C 12/94 F.DABBENE : Gestion des erreurs
  57. C 02/96 L.V.BENET : introduction de l'option 'MASSE'
  58. C
  59. C-----------------------------------------------------------------------
  60. IMPLICIT INTEGER(I-N)
  61.  
  62. -INC PPARAM
  63. -INC CCOPTIO
  64. -INC SMCHAML
  65. -INC SMELEME
  66. -INC SMMODEL
  67. -INC SMTABLE
  68. -INC SMCOORD
  69. *
  70. SEGMENT IPMAHY
  71. INTEGER MAHYBR(NSOUS)
  72. ENDSEGMENT
  73. *
  74. REAL*8 XVALIN,XVALRE
  75. LOGICAL LOGRE,LOGIN
  76. INTEGER IPCHEL
  77. CHARACTER*8 TAPIND,TYPOBJ,CHARIN,CHARRE,LETYPE,LENOM
  78. CHARACTER*5 MCLE(3)
  79. CHARACTER*5 MOMO
  80. DATA NCLE /3/
  81. DATA MCLE /'DARCY','MASSE','LUMP '/
  82. CALL LIRMOT(MCLE,NCLE,ICLE,0)
  83. *
  84. * Initialisations
  85. *
  86. segact mcoord
  87. ILUMP = 0
  88. IPCHEL = 0
  89. IVALIN = 0
  90. XVALIN = 0.D0
  91. LOGIN = .TRUE.
  92. IOBIN = 0
  93. TAPIND = 'MOT '
  94. TYPOBJ = 'MAILLAGE'
  95. *
  96. * Lecture du MMODEL
  97. *
  98. CALL LIROBJ('MMODEL ',IPMODE,1,IRET)
  99. CALL ACTOBJ('MMODEL ',IPMODE,1)
  100. IF (IERR.NE.0) RETURN
  101. MMODEL = IPMODE
  102. *
  103. * Lecture de la TABLE domaine
  104. *
  105. CALL LEKMOD(MMODEL,IPTABL,INEFMD)
  106. CHARIN = 'MAILLAGE'
  107. CALL LEKTAB(IPTABL,CHARIN, IOBRE)
  108. IF (IERR.NE.0) RETURN
  109. IPGEOM = IOBRE
  110. CALL LEKTAB(IPTABL,'ELTFA',IOBRE)
  111. IF (IERR.NE.0) RETURN
  112. IELTFA = IOBRE
  113. *
  114. * Lecture eventuelle du CHAMELEM de caracteristiques materielles
  115. *
  116. II=0
  117. IF(ICLE.NE.2)II=1
  118. CALL LIROBJ('MCHAML ',IPIN,II,IRCHEL)
  119. IF (IERR.NE.0) RETURN
  120. IF (IRCHEL .EQ. 1) THEN
  121. CALL ACTOBJ('MCHAML ',IPIN,1)
  122. CALL REDUAF(IPIN,IPMODE,IPCHEL,0,IR,KER)
  123. IF(IR .NE. 1) CALL ERREUR(KER)
  124. IF(IERR .NE. 0) RETURN
  125. ENDIF
  126. MCHELM = IPCHEL
  127. *
  128. * Lecture eventuelle des indications pour l'option LUMP
  129. *
  130. IF(ICLE.EQ.3)ILUMP=1
  131. IF(ICLE.EQ.1)THEN
  132. IRET=0
  133. CALL LIRCHA(MOMO,0,IRET)
  134. IF(IRET.GT.0) THEN
  135. IF(MOMO(1:4).NE.'LUMP')THEN
  136. MOTERR=MOMO
  137. CALL ERREUR(7)
  138. RETURN
  139. ENDIF
  140. ILUMP=1
  141. ENDIF
  142. ENDIF
  143. *
  144. *
  145. *- Controle de la formulation
  146. * Recuperation des pointeurs ELTFA pour les zones ou DARCY est defini
  147. *
  148. *
  149. SEGACT MMODEL
  150. NSOUS = KMODEL(/1)
  151. SEGINI IPMAHY
  152. IDARCY = 0
  153. DO 10 ISOUS=1,NSOUS
  154. IMODEL = KMODEL(ISOUS)
  155. SEGACT IMODEL
  156. LETYPE = FORMOD(1)
  157. IF (LETYPE.EQ.'DARCY') THEN
  158. IDARCY = IDARCY + 1
  159. IF(NSOUS.EQ.1) THEN
  160. IPT3=IELTFA
  161. ELSE
  162. IPT2= IELTFA
  163. SEGACT IPT2
  164. IPT3=IPT2.LISOUS(ISOUS)
  165. ENDIF
  166. MAHYBR(ISOUS) = IPT3
  167. ENDIF
  168. 10 CONTINUE
  169. IF (IDARCY.EQ.0) THEN
  170. MOTERR = LETYPE
  171. CALL ERREUR(193)
  172. GOTO 100
  173. ENDIF
  174. *
  175. IF(ICLE.NE.2)THEN
  176. *
  177. *- Controle du MCHAML
  178. *
  179. SEGACT MCHELM
  180. *
  181. * Test du sous type du MCHAML
  182. *
  183. LETYPE = TITCHE
  184. IF (LETYPE.NE.'CARACTER') THEN
  185. MOTERR = 'CARACTERISTIQUES'
  186. CALL ERREUR(291)
  187. GOTO 100
  188. ENDIF
  189. *
  190. * Il manque les CARACTERISTIQUES d'une ou plusieurs parties du MODELE
  191. *
  192. NBMAIC = IMACHE(/1)
  193. IF (NSOUS.GT.NBMAIC) THEN
  194. CALL ERREUR(404)
  195. GOTO 100
  196. ENDIF
  197. *
  198. * Test du support du MCHAML
  199. *
  200. ISUP = 0
  201. ICOND = 0
  202. CALL QUESUP(IPMODE,IPCHEL,ISUP,ICOND,IRET1,IRET2)
  203. IF (IRET1.GT.3) THEN
  204. MOTERR(1:8) = LETYPE
  205. CALL ERREUR(124)
  206. GOTO 100
  207. ENDIF
  208. *
  209. * Si support aux noeuds -> aux points de GAUSS
  210. *
  211. IF (IRET1.EQ.1) THEN
  212. CALL CHASUP(IPMODE,IPCHEL,IPCHE1,IRET,ISUP)
  213. IF (IRET.NE.0) THEN
  214. CALL ERREUR(IRET)
  215. IRET1 = 0
  216. GOTO 100
  217. ENDIF
  218. ELSE
  219. IPCHE1 = IPCHEL
  220. ENDIF
  221. *
  222. * Construction de la matrice masse hybride
  223. *
  224. CALL MHYBR1(IPMODE,IPCHE1,IPMAHY,IPRIGI,IPGEOM,ILUMP)
  225. ELSE
  226. IRET1 = 0
  227. IPCHE1 = 0
  228. IF(IRCHEL.NE.0)CALL ERREUR(21)
  229. CALL MHYBR1(IPMODE,IPCHE1,IPMAHY,IPRIGI,IPGEOM,ILUMP)
  230. ENDIF
  231. IF (IERR.EQ.0) CALL ECROBJ('RIGIDITE',IPRIGI)
  232. *
  233. * Ménage
  234. *
  235. 100 CONTINUE
  236. IF (IRET1.EQ.1) THEN
  237. CALL DTCHAM(IPCHE1)
  238. ENDIF
  239. SEGSUP IPMAHY
  240.  
  241. END
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  

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