Télécharger kgrav1.eso

Retour à la liste

Numérotation des lignes :

kgrav1
  1. C KGRAV1 SOURCE PV090527 26/04/30 21:15:44 12529
  2. SUBROUTINE KGRAV1 (IPMODL,XRG,IPOIN1,IPRIG,IRET,IDISS,IFLAM)
  3. *
  4. *_______________________________________________________________________
  5. *
  6. * APPELE PAR KP
  7. *
  8. * ENTREES :
  9. * ========
  10. *
  11. * IPMODL: POINTEUR SUR UN MMODEL
  12. * IPOIN1: NUMERO DU POINT(VECTEUR) QUI DEFINIT LE SENS
  13. * LA PESANTEUR
  14. * XRG : COEFFICIENT MULTIPLICATEUR DE RIGIDITE
  15. * IDISS : 0 ---> MATRICE SYMETRIQUE
  16. * 1 ---> MATRICE DISSYMETRIQUE
  17. * IFLAM : 0 ---> SOUS TYPE RIGIDITE
  18. * 1 ---> SOUS TYPE MASSE
  19. *
  20. * SORTIES :
  21. * =========
  22. *
  23. * IPRIG POINTEUR SUR LA RIGIDITE CONSTRUITE
  24. * IRET 1 SI OK, 0 SINON
  25. *
  26. * I. Politopoulos juillet 1995
  27. *_______________________________________________________________________
  28. IMPLICIT INTEGER(I-N)
  29. IMPLICIT REAL*8(A-H,O-Z)
  30.  
  31. -INC PPARAM
  32. -INC CCOPTIO
  33. -INC CCREEL
  34. -INC CCHAMP
  35. -INC SMRIGID
  36. -INC SMELEME
  37. -INC SMCOORD
  38. -INC SMINTE
  39. -INC SMMODEL
  40. LOGICAL lsupfo,lsupdp
  41. C
  42. SEGMENT NOTYPE
  43. CHARACTER*16 TYPE(NBTYPE)
  44. ENDSEGMENT
  45. C
  46. SEGMENT LIMODL(0)
  47. C C
  48. NHRM=NIFOUR
  49. IRET=1
  50. C
  51. C ACTIVATION DU MODELE
  52. C
  53. MMODEL=IPMODL
  54. SEGACT MMODEL
  55. NSOUS=KMODEL(/1)
  56. C
  57. C RECUPERATION DES MODELES
  58. C
  59. SEGINI,LIMODL
  60. DO 100 ISOUS=1,NSOUS
  61. IMODEL=KMODEL(ISOUS)
  62. SEGACT, IMODEL
  63. IF(FORMOD(1).EQ.'MECANIQUE'.OR.(FORMOD(1).EQ.'CHARGEMENT'.AND.
  64. & MATMOD(1).EQ.'PRESSION')) THEN
  65. LIMODL(**)=IMODEL
  66. ELSE
  67. SEGDES,IMODEL
  68. ENDIF
  69. 100 CONTINUE
  70. C
  71. NSOUS = LIMODL(/1)
  72. IF (NSOUS.LE.0) THEN
  73. SEGDES, MMODEL
  74. SEGSUP, LIMODL
  75. CALL ERREUR(610)
  76. RETURN
  77. ENDIF
  78. C
  79. C CREATION DE L'OBJET MATRICE DE RIGIDITE
  80. C
  81. NRIGE=7
  82. NRIGEL=NSOUS
  83. SEGINI MRIGID
  84. IPRIG=MRIGID
  85. IF (IFLAM.EQ.1) THEN
  86. MTYMAT='MASSE'
  87. ELSE
  88. MTYMAT='RIGIDITE'
  89. ENDIF
  90. IFORIG=IFOUR
  91. ICHOLE=0
  92. IMGEO1=0
  93. IMGEO2=0
  94. ISUPEQ=0
  95. C
  96. C BOUCLE SUR LES SOUS ZONES
  97. C
  98. DO 499 ISOUS=1,NSOUS
  99. IRIGEL(4,ISOUS)=0
  100. COERIG(ISOUS)=1.D0
  101. 499 CONTINUE
  102. C_______________________________________________________________________
  103. C
  104. C DEBUT DE LA BOUCLE SUR LES DIFFERENTES SOUS ZONES
  105. C_______________________________________________________________________
  106. C
  107. DO 500 ISOUS=1,NSOUS
  108. C
  109. C ON RECUPERE LINFORMATION GENERALES
  110. C
  111. IMODEL=KMODEL(ISOUS)
  112. SEGACT IMODEL
  113. IPMAIL=IMAMOD
  114. C
  115. C TRAITEMENT DU MODELE
  116. C
  117. MELEME=IMAMOD
  118. MELE=NEFMOD
  119. NFOR=FORMOD(/2)
  120. NMAT=MATMOD(/2)
  121.  
  122. C_______________________________________________________________________
  123. C
  124. C INFORMATION SUR L ELEMENT FINI
  125. C_______________________________________________________________________
  126. C
  127. * CALL ELQUOI(MELE,0,4,IPINF,IMODEL)
  128. IF (IERR.NE.0) THEN
  129. SEGDES IMODEL,MMODEL
  130. SEGSUP MRIGID
  131. IRET=0
  132. RETURN
  133. ENDIF
  134. * INFO=IPINF
  135. MFR =INFELE(13)
  136. LRE =INFELE(9)
  137. LW =INFELE(7)
  138. NDDL =INFELE(15)
  139. IELE=INFELE(14)
  140. * MINTE=INFELE(11)
  141. MINTE=infmod(6)
  142. IPMINT=MINTE
  143. C
  144. C INITIALISATION DE MINTE
  145. C
  146. SEGACT MINTE
  147. NBPGAU=POIGAU(/1)
  148.  
  149. C
  150. C ON RECUPERE LES MELEME
  151. C
  152. MELEME=IPMAIL
  153. SEGACT MELEME
  154.  
  155. NBNN =NUM(/1)
  156. NBELEM=NUM(/2)
  157.  
  158. C
  159. C ---------------------------------------------------------*
  160. C INITIALISATION DU SEGMENT DESCR, SEGMENT DESCRIPTEUR DES *
  161. C DES INCONNUES RELATIVES A LA MATRICE DE RIGIDITE *
  162. C ---------------------------------------------------------*
  163. NLIGRP = INFELE(9)
  164. NLIGRD = INFELE(9)
  165. SEGINI DESCR
  166. IPDSCR=DESCR
  167. if(lnomid(1).ne.0) then
  168. nomid=lnomid(1)
  169. segact nomid
  170. modepl=nomid
  171. ndepl=lesobl(/2)
  172. ndum=lesfac(/2)
  173. lsupdp=.false.
  174. else
  175. lsupdp=.true.
  176. CALL IDPRIM(IMODEL,MFR,MODEPL,NDEPL,NDUM)
  177. endif
  178. if(lnomid(2).ne.0) then
  179. nomid=lnomid(2)
  180. segact nomid
  181. moforc=nomid
  182. nforc=lesobl(/2)
  183. lsupfo=.false.
  184. else
  185. lsupfo=.true.
  186. CALL IDDUAL(IMODEL,MFR,MOFORC,NFORC,NDUM)
  187. endif
  188. C
  189. IF (NDEPL.EQ.0.OR.NFORC.EQ.0.OR.NDEPL.NE.NFORC) THEN
  190. CALL ERREUR(5)
  191. SEGSUP DESCR,MRIGID
  192. SEGDES MMODEL,MELEME
  193. IRET=0
  194. RETURN
  195. ENDIF
  196. C
  197. C REMPLISSAGE DU SEGMENT DESCRIPTEUR
  198. C
  199. IDDL=1
  200. NCOMP=NDEPL
  201. NBNNS=NBNN
  202. IF (MFR.EQ.33) NCOMP=NDEPL-1
  203. IF (IFOUR.EQ.-3) THEN
  204. NCOMP=NDEPL-3
  205. NBNNS=NBNN-1
  206. ENDIF
  207. IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS=NBNN/2
  208. NOMID=MODEPL
  209. SEGACT NOMID
  210. NOMID=MOFORC
  211. SEGACT NOMID
  212. DO 1004 INOEUD=1,NBNNS
  213. DO 1005 ICOMP=1,NCOMP
  214. NOMID=MODEPL
  215. LISINC(IDDL)=LESOBL(ICOMP)
  216. NOMID=MOFORC
  217. LISDUA(IDDL)=LESOBL(ICOMP)
  218. NOELEP(IDDL)=INOEUD
  219. NOELED(IDDL)=INOEUD
  220. IDDL=IDDL+1
  221. 1005 CONTINUE
  222. 1004 CONTINUE
  223. *
  224.  
  225.  
  226. NOMID=MODEPL
  227. SEGDES NOMID
  228. NOMID=MOFORC
  229. SEGDES NOMID
  230. SEGDES DESCR
  231.  
  232. C
  233. C ------------------------------------------------------------*
  234. C INITIALISATION DU SEGMENT IMATRI, CHAPEAU SUR LES SEGMENTS *
  235. C CONTENANT LES MATRICES DE RIGIDITE ELEMENTAIRES *
  236. C ------------------------------------------------------------*
  237. C NBELEM: NB D'ELEMENTS DANS LA SOUS ZONE
  238. NLIGRP=LRE
  239. NLIGRD=LRE
  240. NELRIG=NBELEM
  241. RIGREL=0
  242. SEGINI xMATRI
  243. IPMATR=xMATRI
  244. C
  245. C------------------------------------------------------*
  246. C
  247. C TRAITEMENT DU CHAPEAU DES RIGIDITES, SEGMENT MRIGID *
  248. C------------------------------------------------------*
  249. C
  250.  
  251. IRIGEL(1,ISOUS)=IPMAIL
  252. IRIGEL(2,ISOUS)=0
  253. IRIGEL(3,ISOUS)=IPDSCR
  254. IRIGEL(4,ISOUS)=xMATRI
  255. IRIGEL(5,ISOUS)=NHRM
  256. IF (IDISS.EQ.0) IRIGEL(7,ISOUS)= 0
  257. IF (IDISS.EQ.0) xmatri.symre=0
  258. IF (IDISS.EQ.1) IRIGEL(7,ISOUS)= 2
  259. IF (IDISS.EQ.1) xmatri.symre=2
  260.  
  261.  
  262. C_______________________________________________________________________
  263. C
  264. C coq3/dkt/dst/coq4
  265. C_______________________________________________________________________
  266. C
  267. IF (MELE.EQ.27.OR.MELE.EQ.28.OR.MELE.EQ.93) THEN
  268. c coq3/dkt/dst
  269. CALL KGRAV3(IPMAIL,XRG,IPOIN1,IPMATR,IDISS)
  270. ELSE IF (MELE.EQ.49) THEN
  271. c coq4
  272. CALL KGRAV2(IPMAIL,XRG,IPOIN1,IPMATR,IDISS,IPMINT)
  273. ELSE
  274. SEGSUP xMATRI
  275. IRIGEL(4,ISOUS)=0
  276. MOTERR(1:4)=NOMTP(MELE)
  277. MOTERR(5:12)='KGRAV1'
  278. CALL ERREUR(86)
  279. GOTO 9990
  280. ENDIF
  281. C
  282. C_______________________________________________________________________
  283. C_______________________________________________________________________
  284. C
  285. C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE IA
  286. C_______________________________________________________________________
  287. C
  288.  
  289. SEGDES MELEME
  290. SEGDES IMODEL
  291.  
  292. C
  293. NOMID=MOFORC
  294. if(lsupfo)SEGSUP NOMID
  295. NOMID=MODEPL
  296. if(lsupdp)SEGSUP NOMID
  297. C
  298. SEGDES MINTE
  299. * INFO=IPINF
  300. * SEGSUP INFO
  301. C
  302. C ERREUR DANS KGRAV3
  303. C
  304. IF (IERR.NE.0) THEN
  305. IRET=0
  306. GOTO 888
  307. ENDIF
  308. 500 CONTINUE
  309. 888 CONTINUE
  310. SEGDES MMODEL
  311. SEGDES MRIGID
  312. GOTO 666
  313. C
  314. 9990 CONTINUE
  315. IRET=0
  316.  
  317. C
  318. C ERREUR DANS UNE SOUS ZONE, DESACTIVATION ET RETOUR
  319. C
  320.  
  321. NOMID=MOFORC
  322. if(lsupfo)SEGSUP NOMID
  323. NOMID=MODEPL
  324. if(lsupdp)SEGSUP NOMID
  325. C
  326. SEGDES MELEME
  327. SEGDES IMODEL
  328. C
  329. SEGDES MMODEL
  330. SEGSUP MRIGID
  331. C
  332. SEGDES MINTE
  333. * INFO=IPINF
  334. * SEGSUP INFO
  335. RETURN
  336. 666 CONTINUE
  337. RETURN
  338. END
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  

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