Télécharger thcond.eso

Retour à la liste

Numérotation des lignes :

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

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