Télécharger tconve.eso

Retour à la liste

Numérotation des lignes :

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

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