Télécharger thcond.eso

Retour à la liste

Numérotation des lignes :

thcond
  1. C THCOND SOURCE CB215821 24/04/12 21:17:20 11897
  2.  
  3. C=======================================================================
  4. C= T H C O N D =
  5. C= ----------- =
  6. C= (TCONDU dans le cas de la thermique) =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Creation de la matrice de CONDUCTIVITE THERMIQUE (type RIGIDITE). =
  10. C= =
  11. C= Parametres : (E)=Entree (S)=Sortie =
  12. C= ------------ =
  13. C= IPMODE (E) Segment IMODEL pour un 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 : CONDUCTIVITE (ACTIF) =
  17. C= =
  18. C= Zakaria HABIBI le 30 juin 2008. =
  19. C=======================================================================
  20.  
  21. SUBROUTINE THCOND (IPMODE,IPCHEL,ISUPMA, IPRIGI)
  22.  
  23. IMPLICIT INTEGER(I-N)
  24. IMPLICIT REAL*8(A-H,O-Z)
  25.  
  26.  
  27. -INC PPARAM
  28. -INC CCOPTIO
  29. -INC CCHAMP
  30. -INC CCGEOME
  31.  
  32. -INC SMELEME
  33. -INC SMINTE
  34. -INC SMMODEL
  35. -INC SMRIGID
  36.  
  37. INTEGER OOOVAL
  38.  
  39. SEGMENT NOTYPE
  40. CHARACTER*16 TYPE(NBTYPE)
  41. ENDSEGMENT
  42.  
  43. SEGMENT MPTVAL
  44. INTEGER IPOS(NS),NSOF(NS), IVAL(NCOSOU)
  45. CHARACTER*16 TYVAL(NCOSOU)
  46. ENDSEGMENT
  47.  
  48. CHARACTER*8 CMATE
  49. CHARACTER*(LCONMO) CONM
  50.  
  51. PARAMETER ( NINF=3 )
  52. DIMENSION INFOS(NINF)
  53.  
  54. C= LEFMAS Liste des numeros d'elements finis MASSIFs supportant la =
  55. C la formulation thermohydrique =
  56. C= NEFMAS Longueur de cette liste =
  57. PARAMETER ( NEFMAS = 14 )
  58. DIMENSION LEFMAS(NEFMAS)
  59.  
  60. C ==========
  61. C Elements TRI3 TRI6 QUA4 QUA8 CUB8 CU20 PRI6 PR15 TET4 TE10
  62. C MASSIFs PYR5 PY13 T1D2 T1D3
  63. C ==========
  64. DATA LEFMAS / 4, 6, 8, 10, 14, 15, 16, 17, 23, 24,
  65. & 25, 26, 191, 192 /
  66.  
  67. IPINTE = 0
  68. IPINT1 = 0
  69. MOMATE = 0
  70. MOTYPE = 0
  71.  
  72. C- Matrice de CONDUCTIVITE
  73. MRIGID = IPRIGI
  74. c* SEGACT,MRIGID
  75. NRIGE0 = IRIGEL(/2)
  76.  
  77. C- Recuperation du sous-modele et de la zone elementaire associee
  78. IMODEL = IPMODE
  79. c* SEGACT,IMODEL
  80.  
  81. NEF = NEFMOD
  82. C Test sur l'element fini
  83. IMAS = 0
  84. CALL PLACE2(LEFMAS,NEFMAS,IMAS,NEF)
  85. C ERREUR : Element fini non implemente actuellement
  86. IF (NEF.EQ.22 .OR. IMAS.EQ.0) THEN
  87. CALL ERREUR(19)
  88. GOTO 9990
  89. ENDIF
  90.  
  91. C- Recuperation d'informations sur le maillage elementaire
  92. IPT1 = IMAMOD
  93. SEGACT,IPT1
  94. NBNOE1 = IPT1.NUM(/1)
  95. NBELE1 = IPT1.NUM(/2)
  96.  
  97. C- Quelques informations sur le modele
  98. CONM = CONMOD
  99. CMATE = CMATEE
  100. MATE = IMATEE
  101.  
  102. IRET = 1
  103. CALL IDENT(IPT1,CONM,IPCHEL,0, INFOS,IRET)
  104. IF (IRET.EQ.0) GOTO 9990
  105.  
  106. C- Recuperation d'informations sur l'element fini
  107. CALL TSHAPE(NEF,'GAUSS',IPINTE)
  108. IF (IERR.NE.0) GOTO 9990
  109. MINTE = IPINTE
  110. SEGACT,MINTE
  111.  
  112. IF (MATE.EQ.2 .OR. MATE.EQ.3) THEN
  113. NLG = NUMGEO(NEF)
  114. CALL RESHPT(1,NBNOE1,NLG,NEF,0,IPINT1,IOK)
  115. IF (IOK.EQ.0) GOTO 9990
  116. MINTE1 = IPINT1
  117. SEGACT,MINTE1
  118. ENDIF
  119.  
  120. C- Recuperation des caracteristiques materielles
  121. nomid = LNOMID(6)
  122. SEGACT,nomid
  123. NMATO = lesobl(/2)
  124. NMATF = lesfac(/2)
  125. NMATT = NMATO + NMATF
  126. MOMATE = nomid
  127.  
  128. nbtype = 1
  129. SEGINI,notype
  130. TYPE(1) = 'REAL*8'
  131. MOTYPE = notype
  132.  
  133. C- Definition du descripteur IDESCR
  134. IDESCR = 0
  135. CALL THCOND2(NBNOE1,IDESCR)
  136. descr = IDESCR
  137. SEGACT,descr
  138. NLIGRD = lisdua(/2)
  139. NLIGRP = lisinc(/2)
  140. SEGDES,descr
  141. LRE = NLIGRD
  142.  
  143. C- Partionnement si necessaire de la matrice thermohydrique
  144. C- determinant ainsi le nombre d'objets elementaires de MRIGID
  145. LTRK = oooval(1,4)
  146. IF (LTRK.EQ.0) LTRK = oooval(1,1)
  147. LTRK=MAX(LTRK,2**24)
  148. * Ajout a la taille en mots de la matrice des infos du segment
  149. LSEG = LRE*LRE*NBELE1 + 16
  150. NBLPRT = (LSEG-1)/LTRK + 1
  151. NBLMAX = (NBELE1-1)/NBLPRT + 1
  152. NBLPRT = (NBELE1-1)/NBLMAX + 1
  153. * write(ioimp,*) ' thcond1 : nblprt nblmax = ',nblprt,nblmax,nbele1
  154.  
  155. C Ajout de la matrice de CONDUCTVITE THERMOHYDRIQUE a la matrice globale
  156. C ======================================================================
  157. NRIGEL = NRIGE0 + NBLPRT
  158. SEGADJ,MRIGID
  159.  
  160. descr = IDESCR
  161. meleme = IPT1
  162. nbnn = NBNOE1
  163. nbelem = NBELE1
  164. nbsous = 0
  165. nbref = 0
  166.  
  167. C Boucle sur les PARTITIONS elementaires de la matrice
  168. C=======================================================
  169. DO irige = 1, NBLPRT
  170.  
  171. IF (NBLPRT.GT.1) THEN
  172. C Partitionnement du maillage support de la matrice elementaire
  173. SEGACT,IPT1
  174. ielem = (irige-1)*NBLMAX
  175. nbelem = MIN(NBLMAX,NBELE1-ielem)
  176. * write(ioimp,*) ' creation segment ',nbnn,nbelem
  177. SEGINI,meleme
  178. itypel = IPT1.itypel
  179. DO ielt = 1, nbelem
  180. jelt = ielt + ielem
  181. DO inoe = 1, nbnn
  182. num(inoe,ielt) = IPT1.NUM(inoe,jelt)
  183. ENDDO
  184. icolor(ielt) = IPT1.ICOLOR(jelt)
  185. ENDDO
  186. C Recopie du descripteur
  187. des1 = IDESCR
  188. SEGINI,descr=des1
  189. SEGDES,descr
  190. ENDIF
  191. ipmail = meleme
  192. ipdesc = descr
  193.  
  194. C Initialisation de la matrice de rigidite elementaire (xmatri)
  195. NELRIG = nbelem
  196. SEGINI,xmatri
  197. ipmatr = xmatri
  198.  
  199. IVAMAT = 0
  200. CALL KOMCHA(IPCHEL,ipmail,CONM,MOMATE,MOTYPE,1,INFOS,3,IVAMAT)
  201. IF (IERR.NE.0) GOTO 9991
  202. IF (ISUPMA.EQ.1) THEN
  203. CALL VALCHE(IVAMAT,NMATT,IPINTE,0,MOMATE,NEF)
  204. IF (IERR.NE.0) THEN
  205. ISUPMA = 0
  206. GOTO 9991
  207. ENDIF
  208. ENDIF
  209. C===
  210. C- Calcul de la matrice elementaire pour
  211. C remplissage de la matrice globale (ipmatr)
  212. C =====
  213. C-- Elements MASSIFs a integration NUMERIQUE
  214. IF (IMAS.NE.0) THEN
  215. CALL THNUMAC(NEF,ipmail,ipinte,ipint1,IVAMAT,NMATT,ipmatr,LRE)
  216. ELSE
  217. CALL ERREUR(5)
  218. ENDIF
  219.  
  220. C- Un peu de menage
  221. 9991 CONTINUE
  222. IF (ISUPMA.EQ.1 .OR. NBLPRT.GT.1) THEN
  223. CALL DTMVAL(IVAMAT,3)
  224. ELSE
  225. CALL DTMVAL(IVAMAT,1)
  226. ENDIF
  227. IF (IERR.NE.0) GOTO 9990
  228.  
  229. xmatri = ipmatr
  230. IF (NBLPRT.GT.1) THEN
  231. meleme = ipmail
  232. SEGDES,meleme
  233. ENDIF
  234.  
  235. C- Remplissage de la
  236. jrige = NRIGE0 + irige
  237. COERIG(jrige) = 1.
  238. IRIGEL(1,jrige) = ipmail
  239. IRIGEL(2,jrige) = 0
  240. IRIGEL(3,jrige) = ipdesc
  241. IRIGEL(4,jrige) = ipmatr
  242. IRIGEL(5,jrige) = NIFOUR
  243. IRIGEL(6,jrige) = 0
  244. IRIGEL(7,jrige) = 2
  245. IRIGEL(8,jrige) = 0
  246. xmatri.symre=2
  247. SEGDES,xmatri
  248.  
  249. ENDDO
  250.  
  251. C 4 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS
  252. C ====================================================
  253. 9990 CONTINUE
  254. c* SEGDES,MRIGID
  255. c* SEGDES,IMODEL
  256. SEGDES,IPT1
  257. IF (IPINTE.GT.0) THEN
  258. MINTE = IPINTE
  259. SEGDES,MINTE
  260. ENDIF
  261. IF (IPINT1.GT.0) THEN
  262. MINTE = IPINT1
  263. SEGDES,MINTE
  264. ENDIF
  265. IF (MOMATE.NE.0) THEN
  266. nomid = MOMATE
  267. SEGDES,nomid
  268. ENDIF
  269. IF (MOTYPE.NE.0) THEN
  270. notype = MOTYPE
  271. SEGSUP,notype
  272. ENDIF
  273.  
  274. RETURN
  275. END
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  

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