Télécharger tarig1.eso

Retour à la liste

Numérotation des lignes :

tarig1
  1. C TARIG1 SOURCE JK148537 25/12/12 21:15:11 12418
  2. SUBROUTINE TARIG1(JMOD1,IDESCR,LRE)
  3. * formulation mecanique
  4. * remplissage du DESCR pour ADVE ( voir rigi1)
  5.  
  6. IMPLICIT INTEGER(I-N)
  7. IMPLICIT REAL*8(A-H,O-Z)
  8.  
  9. -INC PPARAM
  10. -INC CCOPTIO
  11. -INC CCHAMP
  12. -INC CCGEOME
  13. -INC CCREEL
  14. -INC SMCOORD
  15. -INC SMELEME
  16. -INC SMRIGID
  17. -INC SMMODEL
  18.  
  19. SEGMENT NOTYPE
  20. CHARACTER*16 TYPE(NBTYPE)
  21. ENDSEGMENT
  22.  
  23. CHARACTER*8 CMATE
  24.  
  25. PARAMETER ( INTTYP=3 )
  26. C INTTYP DEFINIT LE TYPE DE POINTS D'INTEGRATION
  27. C UTILISE PAR RIGI
  28. PARAMETER ( NINF=3 )
  29. INTEGER INFOS(NINF),nrnlin
  30. LOGICAL LDPGE,lsupma,dcmate,dcmat2
  31.  
  32. imodel = jmod1
  33. dcmat2 = .false.
  34. c-----------------------------copie-colle de rigi1------------------
  35. MELE = imodel.NEFMOD
  36. IPMAIL = imodel.IMAMOD
  37.  
  38. CMATE = CMATEE
  39. MATE = IMATEE
  40. INAT = INATUU
  41.  
  42. c** write(ioimp,*) 'RIGI1 : IMODEL = ',imodel,isous,formod(1)
  43. c** write(ioimp,*) ' ',mele,ipmail,cmate, noer
  44. IF (MELE.EQ.259) return
  45. if (noerjk.eq.2 .and. cmate.ne.'NLIN') return
  46.  
  47. IPT1 = IPMAIL
  48. NBNOE1 = IPT1.NUM(/1)
  49. NBELE1 = IPT1.NUM(/2)
  50. C-
  51. NSTRS = INFELE(16)
  52. MFR = INFELE(13)
  53. LW = INFELE( 7)
  54. NDDL = INFELE(15)
  55. IELE = INFELE(14)
  56. LRE = INFELE( 9)
  57. IPORE = INFELE( 8)
  58. LHOOK = INFELE(10)
  59. NBPGAU= INFELE( 6)
  60. C COQUE INTEGREE OU PAS ?
  61. NPINT = INFMOD(1)
  62. IPMINT = INFMOD(2+INTTYP)
  63. IPMIN1 = INFELE(12)
  64. C-
  65. CALL INFDPG(MFR,IFOUR,LDPGE,NDPGE)
  66.  
  67. C RECHERCHE DES NOMS D'INCONNUES ET DES DUAUX
  68. C
  69. MODEPL = imodel.lnomid(1)
  70. IF (MODEPL.EQ.0) THEN
  71. * write(ioimp,*) 'TRIGI2 : MODELE sans LNOMID(1) ?'
  72. call erreur(5)
  73. ENDIF
  74. nomid = MODEPL
  75. NDEPL = nomid.lesobl(/2)
  76. MOFORC = imodel.lnomid(2)
  77. IF (MOFORC.EQ.0) THEN
  78. * write(ioimp,*) 'TRIGI2 : MODELE sans LNOMID(2) ?'
  79. call erreur(5)
  80. ENDIF
  81. nomid = MOFORC
  82. NFORC = nomid.lesobl(/2)
  83. if (ndepl.eq.0 .or. nforc.eq.0 .or. ndepl.ne.nforc) then
  84. moterr = 'pas d inconnue duale ou primale '
  85. call erreur(-385)
  86. interr(1) = imodel
  87. moterr(1:16) = conmod
  88. moterr(17:24) = ' '
  89. call erreur(-386)
  90. call erreur(5)
  91. endif
  92.  
  93.  
  94. nbnn1 = NBNOE1
  95.  
  96. c lre : nb de noeuds par mult
  97. if (nefmod.eq. 22) lre=nbnn1
  98. c lre : nb de noeuds par sure
  99. if (nefmod.eq.259) lre=nbnn1
  100. C
  101. C traitement particulier pour milieu poreux
  102. IPPORE=0
  103. IF (MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) THEN
  104. IPPORE=NBNNE(NUMGEO(MELE))
  105. ENDIF
  106.  
  107. IDECAP=0
  108. IF (MELE.GE.79.AND.MELE.LE.83) THEN
  109. IDECAP=1
  110. LRE = LRE + 2*NBNN1 - IPORE
  111. ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN
  112. IDECAP=1
  113. LRE = LRE + (3*NBNN1 - IPORE)/2 - NBSOM(IELE)
  114. ELSE IF (MELE.GE.173.AND.MELE.LE.177) THEN
  115. IDECAP=2
  116. LRE = LRE + (2*NBNN1 - IPORE)*IDECAP
  117. LHOOK=4
  118. IF(IFOUR.EQ.1) LHOOK=6
  119. ELSE IF (MELE.GE.185.AND.MELE.LE.187) THEN
  120. IDECAP=2
  121. LRE = LRE + ((3*NBNN1 - IPORE)/2 - NBSOM(IELE))*IDECAP
  122. LHOOK=2
  123. IF(IFOUR.EQ.1) LHOOK=3
  124. ELSE IF (MELE.GE.178.AND.MELE.LE.182) THEN
  125. IDECAP=3
  126. LRE = LRE + (2*NBNN1 - IPORE)*IDECAP
  127. LHOOK=4
  128. IF(IFOUR.EQ.1) LHOOK=6
  129. ELSE IF (MELE.GE.188.AND.MELE.LE.190) THEN
  130. IDECAP=3
  131. LRE = LRE + ((3*NBNN1 - IPORE)/2 - NBSOM(IELE))*IDECAP
  132. LHOOK=2
  133. IF(IFOUR.EQ.1) LHOOK=3
  134. ENDIF
  135. C
  136. C REMPLISSAGE DU SEGMENT DESCRIPTEUR
  137. C
  138. NCOMP = NDEPL
  139. NBNNS = NBNOE1
  140. NBNN = NBNOE1
  141. IF (MFR.EQ.33.OR.MFR.EQ.57.OR.MFR.EQ.59) THEN
  142. NCOMP=NDEPL-IDECAP
  143. ENDIF
  144. IF (LDPGE) THEN
  145. NCOMP = NDEPL - NDPGE
  146. NBNN = NBNOE1 + 1
  147. ENDIF
  148. IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS=NBNN/2
  149. if (dcmat2) NCOMP = NDEPL/2
  150.  
  151. NLIGRP = LRE
  152. NLIGRD = LRE
  153. IF ((MFR.NE.61) .AND. (NBNNS*NCOMP .GT. NLIGRD)) THEN
  154. C erreur dans les dimensions de DESCR
  155. C le mode de calcul n'est pas correct
  156. CALL ERREUR(717)
  157. RETURN
  158. ENDIF
  159.  
  160. SEGINI,DESCR
  161. IPDSCR = DESCR
  162.  
  163. IDDL = 1
  164.  
  165. IF (MFR.EQ.61) THEN
  166. NOELEP(1)=1
  167. NOELEP(2)=1
  168. NOELEP(3)=1
  169. NOELEP(4)=3
  170. NOELEP(5)=3
  171. NOELEP(6)=3
  172. NOELEP(7)=2
  173. NOELEP(8)=2
  174.  
  175. DO IE1=1,LRE
  176. NOELED(IE1)=NOELEP(IE1)
  177. ENDDO
  178.  
  179. NOMID=MODEPL
  180. DO IE1=1,3
  181. LISINC(IE1)=LESOBL(IE1)
  182. LISINC(IE1+3)=LESOBL(IE1)
  183. ENDDO
  184. LISINC(7)=LESOBL(4)
  185. LISINC(8)=LESOBL(5)
  186.  
  187. NOMID=MOFORC
  188. DO IE1=1,3
  189. LISDUA(IE1)=LESOBL(IE1)
  190. LISDUA(IE1+3)=LESOBL(IE1)
  191. ENDDO
  192. LISDUA(7)=LESOBL(4)
  193. LISDUA(8)=LESOBL(5)
  194.  
  195. IDDL = 9
  196.  
  197. ELSE
  198. NFAC=(3*NBNN-IPORE)/2
  199.  
  200. DO INOEUD = 1, NBNNS
  201. IF ((MELE.GE.108.AND.MELE.LE.110.AND.INOEUD.GT.NFAC)
  202. & .OR.(MELE.GE.185.AND.MELE.LE.187.AND.INOEUD.GT.NFAC)
  203. & .OR.(MELE.GE.188.AND.MELE.LE.190.AND.INOEUD.GT.NFAC))
  204. & GO TO 1004
  205. DO ICOMP=1,NCOMP
  206. NOMID=MODEPL
  207. LISINC(IDDL)=LESOBL(ICOMP)
  208. if (dcmat2) LISINC(IDDL)=LESOBL(IDDL)
  209. NOMID=MOFORC
  210. LISDUA(IDDL)=LESOBL(ICOMP)
  211. if (dcmat2) LISDUA(IDDL)=LESOBL(IDDL)
  212. NOELEP(IDDL)=INOEUD
  213. NOELED(IDDL)=INOEUD
  214. IDDL=IDDL+1
  215. ENDDO
  216. 1004 CONTINUE
  217. ENDDO
  218.  
  219. ENDIF
  220.  
  221. C CAS DE LA DEFORMATION PLANE GENERALISEE
  222. IF (LDPGE) THEN
  223. DO ICOMP=(NDPGE-1),0,-1
  224. NOMID=MODEPL
  225. LISINC(IDDL)=LESOBL(NDEPL-ICOMP)
  226. NOMID=MOFORC
  227. LISDUA(IDDL)=LESOBL(NFORC-ICOMP)
  228. NOELEP(IDDL)=NBNN
  229. NOELED(IDDL)=NBNN
  230. IDDL=IDDL+1
  231. ENDDO
  232. ENDIF
  233.  
  234. C CAS DES MILIEUX POREUX
  235. C POUR LA PRESSION ON MET D'ABORD LES SOMMETS
  236. IF (MFR.EQ.33) THEN
  237. DO INOEUD=1,NBSOM(IELE)
  238. NOMID=MODEPL
  239. LISINC(IDDL)=LESOBL(NDEPL)
  240. NOMID=MOFORC
  241. LISDUA(IDDL)=LESOBL(NDEPL)
  242. NOELEP(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1)
  243. NOELED(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1)
  244. IDDL=IDDL+1
  245. ENDDO
  246.  
  247. IF (MELE.GE.79.AND.MELE.LE.83) THEN
  248.  
  249. DO INOEUD=1,NBNN
  250. DO INSOM=1,NBSOM(IELE)
  251. IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1105
  252. ENDDO
  253. NOMID=MODEPL
  254. LISINC(IDDL)=LESOBL(NDEPL)
  255. NOMID=MOFORC
  256. LISDUA(IDDL)=LESOBL(NDEPL)
  257. NOELEP(IDDL)=INOEUD
  258. NOELED(IDDL)=INOEUD
  259. IDDL=IDDL+1
  260. 1105 CONTINUE
  261. ENDDO
  262.  
  263. ELSE IF (MELE.GE.108.AND.MELE.LE.110) THEN
  264.  
  265. DO INOEUD=NFAC+1,NBNN
  266. NOMID=MODEPL
  267. LISINC(IDDL)=LESOBL(NDEPL)
  268. NOMID=MOFORC
  269. LISDUA(IDDL)=LESOBL(NDEPL)
  270. NOELEP(IDDL)=INOEUD
  271. NOELED(IDDL)=INOEUD
  272. IDDL=IDDL+1
  273. ENDDO
  274.  
  275. DO INOEUD=1,NFAC
  276. DO INSOM=1,NBSOM(IELE)
  277. IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1110
  278. ENDDO
  279. NOMID=MODEPL
  280. LISINC(IDDL)=LESOBL(NDEPL)
  281. NOMID=MOFORC
  282. LISDUA(IDDL)=LESOBL(NDEPL)
  283. NOELEP(IDDL)=INOEUD
  284. NOELED(IDDL)=INOEUD
  285. IDDL=IDDL+1
  286. 1110 CONTINUE
  287. ENDDO
  288.  
  289. ENDIF
  290.  
  291. ELSE IF (MFR.EQ.57.OR.MFR.EQ.59) THEN
  292.  
  293. DO IPR=1,IDECAP
  294. NDECAP = NDEPL-IDECAP+IPR
  295.  
  296. DO INOEUD=1,NBSOM(IELE)
  297. NOMID=MODEPL
  298. LISINC(IDDL)=LESOBL(NDECAP)
  299. NOMID=MOFORC
  300. LISDUA(IDDL)=LESOBL(NDECAP)
  301. NOELEP(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1)
  302. NOELED(IDDL)=IBSOM(NSPOS(IELE)+INOEUD-1)
  303. IDDL=IDDL+1
  304. ENDDO
  305.  
  306. IF (MELE.GE.173.AND.MELE.LE.182) THEN
  307.  
  308. DO INOEUD=1,NBNN
  309. DO INSOM=1,NBSOM(IELE)
  310. IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1205
  311. ENDDO
  312. NOMID=MODEPL
  313. LISINC(IDDL)=LESOBL(NDECAP)
  314. NOMID=MOFORC
  315. LISDUA(IDDL)=LESOBL(NDECAP)
  316. NOELEP(IDDL)=INOEUD
  317. NOELED(IDDL)=INOEUD
  318. IDDL=IDDL+1
  319. 1205 CONTINUE
  320. ENDDO
  321.  
  322. ELSE IF (MELE.GE.185.AND.MELE.LE.190) THEN
  323.  
  324. DO INOEUD=NFAC+1,NBNN
  325. NOMID=MODEPL
  326. LISINC(IDDL)=LESOBL(NDECAP)
  327. NOMID=MOFORC
  328. LISDUA(IDDL)=LESOBL(NDECAP)
  329. NOELEP(IDDL)=INOEUD
  330. NOELED(IDDL)=INOEUD
  331. IDDL=IDDL+1
  332. ENDDO
  333.  
  334. DO INOEUD=1,NFAC
  335. DO INSOM=1,NBSOM(IELE)
  336. IF(INOEUD.EQ.IBSOM(NSPOS(IELE)+INSOM-1)) GO TO 1710
  337. ENDDO
  338. NOMID=MODEPL
  339. LISINC(IDDL)=LESOBL(NDECAP)
  340. NOMID=MOFORC
  341. LISDUA(IDDL)=LESOBL(NDECAP)
  342. NOELEP(IDDL)=INOEUD
  343. NOELED(IDDL)=INOEUD
  344. IDDL=IDDL+1
  345. 1710 CONTINUE
  346. ENDDO
  347. C
  348. ENDIF
  349.  
  350. ENDDO
  351.  
  352. C CAS DES ELEMENT RACCORD
  353. ELSE IF (MFR.EQ.19.OR.MFR.EQ.21) THEN
  354. CALL IDPRIM(IMODEL,MFR+1000,MODPL,NDEPL,NDUM)
  355. CALL IDDUAL(IMODEL,MFR+1000,MOFRC,NFORC,NDUM)
  356. DO INOEUD=NBNNS+1,NBNN
  357. DO ICOMP=1,NDEPL
  358. NOMID=MODPL
  359. LISINC(IDDL)=LESOBL(ICOMP)
  360. NOMID=MOFRC
  361. LISDUA(IDDL)=LESOBL(ICOMP)
  362. NOELEP(IDDL)=INOEUD
  363. NOELED(IDDL)=INOEUD
  364. IDDL=IDDL+1
  365. ENDDO
  366. ENDDO
  367. NOMID=MODPL
  368. SEGSUP,NOMID
  369. NOMID=MOFRC
  370. SEGSUP,NOMID
  371.  
  372. ENDIF
  373.  
  374. IDESCR = DESCR
  375.  
  376.  
  377. RETURN
  378. END
  379.  
  380.  

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