Télécharger thcapa1.eso

Retour à la liste

Numérotation des lignes :

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

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