Télécharger supcha.eso

Retour à la liste

Numérotation des lignes :

supcha
  1. C SUPCHA SOURCE PV090527 24/10/23 21:15:08 12044
  2. SUBROUTINE SUPCHA
  3. c
  4. c sous routine pour calculer le chargement
  5. c sur les ddl maitres d'un super element
  6. c option CHAR de SUPE
  7. c
  8. c
  9. IMPLICIT INTEGER(I-N)
  10. IMPLICIT REAL*8(A-H,O-Z)
  11. c
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15. -INC SMELEME
  16. -INC SMRIGID
  17. -INC SMSUPER
  18. -INC SMMATRI
  19. -INC SMVECTD
  20. -INC SMCHPOI
  21. -INC TMTRAV
  22. -INC CCREEL
  23. -INC SMLMOTS
  24. c
  25. CHARACTER*4 INC
  26. SEGMENT NOHAR(0)
  27. SEGMENT SNOMIN
  28. CHARACTER*4 NOMIN(0)
  29. ENDSEGMENT
  30. SEGMENT SNOMDU
  31. CHARACTER*4 NOMDU(0)
  32. ENDSEGMENT
  33. c
  34. c
  35. c
  36. CALL LIROBJ ('SUPERELE',MSUPER,1,IRETOU)
  37. IF(IERR.NE.0) RETURN
  38. CALL LIROBJ ('CHPOINT ',MCHPOI,1,IRETOU)
  39. IF(IERR.NE.0) RETURN
  40. SEGACT MSUPER
  41.  
  42. IF (MCROUT.EQ.0) then
  43. * si pas de super element on se contente d'enlever les FLX
  44. JGM=1
  45. JGN=LOCOMP
  46. SEGINI MLMOTS
  47. MOTS(1)='FLX'
  48. CALL ENLEV5(MCHPOI,MLMOTS,ipoin2)
  49. CALL ECROBJ('CHPOINT ',ipoin2)
  50.  
  51.  
  52.  
  53.  
  54. RETURN
  55. ENDIF
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. c
  63. c
  64. c *** mcrout contient la decomposition modifiee de la rigidite
  65. c
  66. MMATRI=MCROUT
  67. c
  68. c *** lecture de la geometrie et du descripteur lies a
  69. c *** la matrice de rigidite condensee du superelement
  70. c
  71. MRIGID=MSURAI
  72. SEGACT MRIGID
  73. nbelem=0
  74. nbnn=1
  75. nbsous=0
  76. nbref=0
  77. segini ipt5
  78. ipt5.itypel=1
  79. in=0
  80. do ir=2,irigel(/2)
  81. meleme=irigel(1,ir)
  82. segact meleme
  83. nbelem=nbelem+num(/2)
  84. segadj ipt5
  85. do ip=1,num(/2)
  86. in=in+1
  87. ipt5.num(1,in)=num(1,ip)
  88. enddo
  89. enddo
  90. * call ecmail(ipt5,0)
  91. segact ipt5
  92. ichr=0
  93. if (nbelem.ne.0) call reduir(mchpoi,ipt5,ichr)
  94. lagdua=msuper.islag
  95. * write (6,*) ' supcha msurai ',msurai,lagdua
  96. xMATRI=IRIGEL(4,1)
  97. IPT1=IRIGEL(1,1)
  98. segact ipt1
  99. * call ecmail(ipt1)
  100. DESCR=IRIGEL(3,1)
  101. SEGACT DESCR
  102. SEGINI SNOMIN,SNOMDU,NOHAR
  103. NOMIN(**)=LISINC(1)
  104. NOMDU(**)=LISDUA(1)
  105. NOHAR(**)=IRIGEL(5,1)
  106. DO 10 I=1,LISINC(/2)
  107. N=NOMIN(/2)
  108. DO 11 J=1,N
  109. IF(LISINC(I).EQ.NOMIN(J)) GO TO 10
  110. 11 CONTINUE
  111. NOMIN(**)=LISINC(I)
  112. NOMDU(**)=LISDUA(I)
  113. NOHAR(**)=IRIGEL(5,1)
  114. 10 CONTINUE
  115. c
  116. c *** dimension de la matrice condensee
  117. c
  118. SEGACT xMATRI
  119. * XMATRI=IMATTT(1)
  120. * SEGACT XMATRI
  121. NLIGRA=RE(/1)
  122. * SEGDES XMATRI
  123. SEGDES xMATRI
  124. c
  125. c *** transformation du chpoint en vecteur
  126. c
  127. mchpo1=mchpoi
  128. if (lagdua.ne.0) then
  129. call copie2(mchpoi,mchpo1)
  130. SEGACT MCHPO1
  131. DO 432 I=1,mchpo1.IPCHP(/1)
  132. MSOUPO=mchpo1.IPCHP(I)
  133. SEGACT MSOUPO*MOD
  134. IPT4=IGEOC
  135. SEGINI,ipt5=ipt4
  136. SEGDES ipt4
  137. IGEOC=ipt5
  138. 432 CONTINUE
  139. call dbbch(mchpo1,lagdua)
  140. * call ecmail(lagdua,0)
  141. * call ecchpo(mchpo1,0)
  142. endif
  143. CALL CHV2(MMATRI,MCHPO1,MVECTD,1)
  144. c
  145. c *** calcul du chargement condense
  146. c
  147.  
  148. SEGACT MVECTD*MOD
  149. SEGACT MMATRI
  150. MILIGN=IILIGN
  151. SEGACT MILIGN
  152. NBNNMA=IPNO(/1)-NLIGRA
  153. NNOEU=ILIGN(/1)
  154. ILA=1
  155.  
  156.  
  157. * attention à la normalisation
  158. MDNOR=IDNORM
  159. SEGACT MDNOR
  160. * boucle sur les ddl s
  161. * write (6,*) ' vectbb -0 ',(vectbb(i),i=1,ipno(/1))
  162. * write (6,*) ' dnor ',(dnor (i),i=1,ipno(/1))
  163. vecmax=0.d0
  164. DO 45 I = 1,IPNO(/1)
  165. VECTBB(I)=VECTBB(I)*DNOR(I)
  166. vecmax=max(vecmax,abs(vectbb(i)))
  167. 45 CONTINUE
  168. vecref=vecmax*XZPREC*XZPREC
  169. * write (6,*) ' vectbb -1 ',(vectbb(i),i=1,ipno(/1))
  170.  
  171. * fin normalisation
  172.  
  173. c
  174. DO 1 I=1,NNOEU
  175. LIGN=ILIGN(I)
  176. SEGACT LIGN
  177. NA=IMMM(/1)
  178. DO 2 J=1,NA
  179. IDEB=IPPVV(J)
  180. IFIN=IPPVV(J+1)-1
  181. AUX=0.D0
  182. DO 21 INDIC=IDEB,IFIN
  183. IDEB2=IVPO(2*INDIC)
  184. IFIN2=IVPO(2*(INDIC+1))-1
  185. DO 23 K=IDEB2,IFIN2
  186. icol=k-ivpo(2*indic)+ivpo(2*indic-1)+
  187. > ila-j -ivpo(2*(ifin)-1)+1
  188. IF(ICOL.ge.ILA) GOTO 24
  189. IF(ICOL.GT.NBNNMA) GOTO 24
  190. AUX=AUX+val(k)*vectbb(icol)
  191. 23 CONTINUE
  192. 24 CONTINUE
  193. 21 CONTINUE
  194. 22 CONTINUE
  195. VECTBB(ILA)=VECTBB(ILA)-AUX
  196. if (abs(vectbb(ila)).lt.vecref) vectbb(ila)=0.d0
  197. ILA=ILA+1
  198. 2 CONTINUE
  199. SEGDES LIGN
  200. 1 CONTINUE
  201. SEGDES MILIGN
  202. c
  203. c *** creation du chpoint resultat
  204. c
  205. SEGACT IPT1
  206. NNNOE=IPT1.NUM(/1)
  207. NNIN=NOMDU(/2)
  208. SEGINI MTRAV
  209. DO 4 I=1,NNNOE
  210. IGEO (I)=IPT1.NUM(I,1)
  211. 4 CONTINUE
  212. DO 5 I=1,NNIN
  213. INCO(I)=NOMDU(I)
  214. NHAR(I)=NOHAR(I)
  215. 5 CONTINUE
  216. DO 6 I=1,NLIGRA
  217. INOEU=NOELED(I)
  218. INC=LISDUA(I)
  219. DO 7 J=1,NNIN
  220. IF(INC.EQ.NOMDU(J)) GO TO 8
  221. 7 CONTINUE
  222. 8 CONTINUE
  223. IBIN(J,INOEU)=1
  224. * on oublie pas de denormaliser si les ddl maitres
  225. * ont ete normalisés
  226. BB(J,INOEU)=VECTBB(NBNNMA+I)/DNOR(NBNNMA+I)
  227. 6 CONTINUE
  228. CALL CRECHP(MTRAV,ISOLU)
  229. if (ichr.ne.0) then
  230. call adchpo(isolu,ichr,iret,1.d0,1.d0)
  231. isolu=iret
  232. endif
  233. if(ierr.ne.0) return
  234. c
  235. c champ de nature discrete
  236. c
  237. MCHPOI = ISOLU
  238. SEGACT, MCHPOI*MOD
  239. JATTRI(1)=2
  240. * call ecmail(lagdua)
  241. * write (6,*) ' avant dbbcf dans supcha '
  242. * call ecchpo(mchpoi)
  243. if (lagdua.ne.0) call dbbcf(mchpoi,lagdua)
  244. * write (6,*) ' apres dbbcf dans supcha '
  245. * call ecchpo(mchpoi)
  246.  
  247. SEGDES MCHPOI
  248. c
  249. ISOLU = MCHPOI
  250. CALL ECROBJ('CHPOINT ',ISOLU)
  251. SEGDES MDNOR
  252. SEGDES DESCR
  253. SEGDES MMATRI
  254. SEGDES MSUPER
  255. SEGDES MRIGID
  256. SEGDES IPT1
  257. SEGSUP SNOMIN,SNOMDU,NOHAR,MVECTD,MTRAV
  258. RETURN
  259. END
  260. c
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  

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