Télécharger tconve.eso

Retour à la liste

Numérotation des lignes :

tconve
  1. C TCONVE SOURCE CB215821 24/04/12 21:17:19 11897
  2.  
  3. C=======================================================================
  4. C= T C O N V E =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul de la matrice de CONDUCTIVITE de sous-type CONVECTION =
  10. C= =
  11. C= Parametres : (E)=Entree (S)=Sortie =
  12. C= ------------ =
  13. C= IPMODE (E) Segment IMODEL (modele elementaire) (ACTIF) =
  14. C= IPCHEL (E) Segment MCHELM de CARACTERISTIQUES (?) =
  15. C= ISUPMA (E) Support du champ de caracteristiques materiau =
  16. C= IPRIGI (E/S) Segment MRIGID CONVECTION (ACTIF) =
  17. C=======================================================================
  18.  
  19. SUBROUTINE TCONVE(IPMODE,IPCHEL,ISUPMA, IPRIGI)
  20.  
  21. IMPLICIT INTEGER(I-N)
  22. IMPLICIT REAL*8 (A-H,O-Z)
  23.  
  24.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC CCREEL
  28.  
  29. -INC SMCHAML
  30. -INC SMCOORD
  31. -INC SMELEME
  32. -INC SMINTE
  33. -INC SMMODEL
  34. -INC SMRIGID
  35.  
  36. INTEGER OOOVAL
  37.  
  38. SEGMENT NOTYPE
  39. CHARACTER*16 TYPE(NBTYPE)
  40. ENDSEGMENT
  41.  
  42. SEGMENT MPTVAL
  43. INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU)
  44. CHARACTER*16 TYVAL(NCOSOU)
  45. ENDSEGMENT
  46.  
  47. PARAMETER ( NINF=3 )
  48. DIMENSION INFOS(NINF)
  49.  
  50. CHARACTER*(8) CMATE
  51. CHARACTER*(LCONMO) CONM
  52. CHARACTER*16 PEAU
  53.  
  54. C= LEFCON Liste des numeros d'elements finis supportant la CONVECTION
  55. C= NEFCON Longueur de cette liste =
  56. C= LEFCOQ Liste des numeros d'elements finis COQUEs
  57. C= NEFCOQ Longueur de cette liste =
  58. PARAMETER ( NEFCON = 13 , NEFCOQ=5 )
  59. DIMENSION LEFCON(NEFCON), LEFCOQ(NEFCOQ)
  60. C ============
  61. C Elements SEG2 SEG3 TRI3 TRI6 QUA4 QUA8 RAC2 RAC3 LIA3 LIA6
  62. C CONVECTION LIA4 LIA8 POI1
  63. DATA LEFCON / 2, 3, 4, 6, 8, 10, 12, 13, 18, 19,
  64. & 20, 21, 1 /
  65. C ============
  66. C Elements COQUEs COQ2 COQ3 COQ6 COQ4 COQ8
  67. DATA LEFCOQ / 44, 27, 56, 49, 41 /
  68.  
  69. C 1 - INITIALISATIONS ET VERIFICATIONS
  70. C ======================================
  71. C 1.0 - Matrice de CONDUCTIVITE
  72. C ===
  73. MRIGID = IPRIGI
  74. c* SEGACT,MRIGID
  75. NRIGE0 = IRIGEL(/2)
  76.  
  77. C 1.1 - Recuperation du sous-modele et de la zone elementaire associee
  78. C ===
  79. IMODEL=IPMODE
  80. c* SEGACT,IMODEL
  81. c
  82. CMATE = CMATEE
  83. MATE = IMATEE
  84. c
  85. CONM = CONMOD
  86. NEF = NEFMOD
  87.  
  88. c Element fini de type COQUE ?
  89. CALL PLACE2(LEFCOQ,NEFCOQ,ICOQ,NEF)
  90.  
  91. NLG = NUMGEO(NEF)
  92.  
  93. IF ((IDIM.EQ.1).AND.(NEF.EQ.2)) NLG = 1
  94. C ERREUR : Element fini non implemente
  95. CALL PLACE2(LEFCON,NEFCON,ICON,NLG)
  96. IF (ICON.EQ.0) THEN
  97. CALL ERREUR(19)
  98. RETURN
  99. ENDIF
  100. c
  101. IPT1 = IMAMOD
  102. SEGACT,IPT1
  103. NBNOE1 = IPT1.NUM(/1)
  104. NBELE1 = IPT1.NUM(/2)
  105.  
  106. IPINTE = 0
  107. IVAMAT = 0
  108. MOMATE = 0
  109. MOTYPE = 0
  110. MMAT1 = 0
  111.  
  112. C 1.2 - Remplissage du tableau INFOS
  113. C ===
  114. IRET = 1
  115. CALL IDENT(IPT1,CONM,IPCHEL,0, INFOS,IRET)
  116. IF (IRET.EQ.0) GOTO 9990
  117.  
  118. C 1.3 - Recuperation d'informations sur l'element fini
  119. C ===
  120. IF(NEF .NE. 45)THEN
  121. CALL TSHAPE(NLG,'GAUSS',IPINTE)
  122. IF (IERR.NE.0) GOTO 9990
  123. ENDIF
  124.  
  125. C 1.4 - Recuperation des caracteristiques materielles (obligatoires)
  126. C ===
  127. nbrobl = 1
  128. nbrfac = 0
  129. SEGINI,nomid
  130. lesobl(1) = 'H '
  131. NMATO = nbrobl
  132. NMATF = nbrfac
  133. NMATT = NMATO + NMATF
  134. MOMATE = nomid
  135. C
  136. NBTYPE = 1
  137. SEGINI,notype
  138. TYPE(1) = 'REAL*8'
  139. MOTYPE = notype
  140.  
  141. C 1.5 - Definition du descripteur IDESCR
  142. C ===
  143. IF (ICOQ .NE. 0) THEN
  144. PEAU = MATMOD(3)
  145. ElSE
  146. PEAU = ' '
  147. ENDIF
  148. CALL TCONV2(ICOQ,PEAU,NBNOE1,IDESCR)
  149. IF (IERR .NE. 0) RETURN
  150. descr = IDESCR
  151. SEGACT,descr
  152. NLIGRP = LISINC(/2)
  153. NLIGRD = LISDUA(/2)
  154. SEGDES,descr
  155.  
  156. C 1.8 - Partitionnement si necessaire de la matrice de conductivite
  157. C determinant ainsi le nombre d'objets elementaires de MRIGID
  158. C ===
  159. LRE = NLIGRD
  160. LTRK = oooval(1,4)
  161. IF (LTRK.EQ.0) LTRK = oooval(1,1)
  162. LTRK=MAX(LTRK,2**24)
  163. * Ajout a la taille en mots de la matrice des infos du segment
  164. LSEG = LRE*LRE*NBELE1 + 16
  165. NBLPRT = (LSEG-1)/LTRK + 1
  166. NBLMAX = (NBELE1-1)/NBLPRT + 1
  167. NBLPRT = (NBELE1-1)/NBLMAX + 1
  168. * write(ioimp,*) ' tconve : nblprt nblmax = ',nblprt,nblmax,nbele1
  169.  
  170. C 2 - Ajout de la matrice de CONVECTION a la matrice globale
  171. C ==========================================================
  172. NRIGEL = NRIGE0 + NBLPRT
  173. SEGADJ,MRIGID
  174.  
  175. meleme = IPT1
  176. nbnn = NBNOE1
  177. nbelem = NBELE1
  178. nbsous = 0
  179. nbref = 0
  180.  
  181. C 3 - Boucle sur les PARTITIONS elementaires de la matrice
  182. C=========================================================
  183. DO irige = 1, NBLPRT
  184. IF (NBLPRT.GT.1) THEN
  185. C Partitionnement du maillage support de la matrice elementaire
  186. SEGACT,IPT1
  187. ielem = (irige-1)*NBLMAX
  188. nbelem = MIN(NBLMAX,NBELE1-ielem)
  189. * write(ioimp,*) ' creation segment ',nbnn,nbelem
  190. SEGINI,meleme
  191. itypel = IPT1.itypel
  192. DO ielt = 1, nbelem
  193. jelt = ielt + ielem
  194. DO inoe = 1, nbnn
  195. num(inoe,ielt) = IPT1.NUM(inoe,jelt)
  196. ENDDO
  197. icolor(ielt) = IPT1.ICOLOR(jelt)
  198. ENDDO
  199. ENDIF
  200. ipmail = meleme
  201.  
  202. C Initialisation de la matrice de rigidite elementaire (xmatri)
  203. NELRIG = nbelem
  204. SEGINI,xmatri
  205. ipmatr = xmatri
  206.  
  207. CALL KOMCHA(IPCHEL,ipmail,CONM,MOMATE,MOTYPE,1,INFOS,3,IVAMAT)
  208. IF (IERR.NE.0) GOTO 9991
  209. IF (ISUPMA.EQ.1) THEN
  210. CALL VALCHE(IVAMAT,NMATT,IPINTE,0,MOMATE,NEF)
  211. IF (IERR.NE.0) THEN
  212. ISUPMA = 0
  213. GOTO 9991
  214. ENDIF
  215. ENDIF
  216.  
  217. C- Calcul de la matrice elementaire pour la paritition elementaire et
  218. C Remplissage de la matrice globale (IPRIGI)
  219. IF(NEF .EQ. 45)THEN
  220. C Elements POI1 sans integration
  221. CALL TCONP1(IPMAIL,IVAMAT,IPMATR)
  222.  
  223. ELSE
  224. C Elements a integration NUMERIQUE
  225. CALL TCONV1(ipmail,IPINTE,IVAMAT,ipmatr,LRE,NLG,NEF)
  226. IF(IERR.NE.0)RETURN
  227. ENDIF
  228.  
  229. 9991 CONTINUE
  230. IF (ISUPMA.EQ.1 .OR. NBLPRT.NE.1) THEN
  231. CALL DTMVAL(IVAMAT,3)
  232. ELSE
  233. CALL DTMVAL(IVAMAT,1)
  234. ENDIF
  235. IF (IERR.NE.0) GOTO 9990
  236.  
  237. xmatri = ipmatr
  238. SEGDES,xmatri
  239.  
  240. jrige = NRIGE0 + irige
  241. COERIG(jrige) = 1.
  242. IRIGEL(1,jrige) = ipmail
  243. IRIGEL(2,jrige) = 0
  244. IRIGEL(3,jrige) = IDESCR
  245. IRIGEL(4,jrige) = ipmatr
  246. IRIGEL(5,jrige) = NIFOUR
  247. IRIGEL(6,jrige) = 0
  248. IRIGEL(7,jrige) = 0
  249. IRIGEL(8,jrige) = 0
  250.  
  251. ENDDO
  252.  
  253. IPRIGI = MRIGID
  254.  
  255. C MENAGE : desactivation/destruction de segments
  256. C ==============================================
  257. 9990 CONTINUE
  258. IF (MOMATE.NE.0) THEN
  259. nomid = MOMATE
  260. SEGSUP,nomid
  261. ENDIF
  262. IF (MOTYPE.NE.0) THEN
  263. notype = MOTYPE
  264. SEGSUP,notype
  265. ENDIF
  266. END
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  

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