Télécharger thcapa1.eso

Retour à la liste

Numérotation des lignes :

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

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