Télécharger corio1.eso

Retour à la liste

Numérotation des lignes :

corio1
  1. C CORIO1 SOURCE OF166741 25/02/21 21:15:42 12166
  2. SUBROUTINE CORIO1 (IPMODL,IPCHE1,IPROTA,NUMLI1,NUMLI2, IPRIG)
  3.  
  4. *_______________________________________________________________________
  5. *
  6. * appelé par CORIOL ( opérateur CORIOLIS )
  7. *
  8. * Creation d'une matrice d'amortissement de couplage gyroscopique
  9. * dans le repère tournant (éléments BARR,POUT,TIMO,TUYAU,COQUES 3D)
  10. *
  11. * entrees :
  12. * ========
  13. * ipmodl pointeur sur un mmodel
  14. * ipche1 pointeur sur un mchaml de caracteristique
  15. * iprota point = vecteur vitesse de rotation
  16. *
  17. * sorties :
  18. * =========
  19. * iprig pointeur sur la matrice construite
  20. * = 0 en cas d'erreur (IERR non nul aussi)
  21. *
  22. * Didier COMBESCURE mars 2003
  23. *_______________________________________________________________________
  24.  
  25. IMPLICIT INTEGER(I-N)
  26. IMPLICIT REAL*8(A-H,O-Z)
  27.  
  28. -INC PPARAM
  29. -INC CCOPTIO
  30. -INC CCHAMP
  31. -INC CCGEOME
  32. -INC CCREEL
  33.  
  34. -INC SMRIGID
  35. -INC SMCHAML
  36. -INC SMELEME
  37. -INC SMCOORD
  38. -INC SMINTE
  39. -INC SMMODEL
  40.  
  41. INTEGER oooval
  42.  
  43. SEGMENT NOTYPE
  44. CHARACTER*16 TYPE(NBTYPE)
  45. ENDSEGMENT
  46.  
  47. CHARACTER*8 CMATE
  48. CHARACTER*(NCONCH) CONM
  49. PARAMETER (NINF=3)
  50. INTEGER INFOS(NINF)
  51. DIMENSION VROT(3)
  52. LOGICAL lsupfo,lsupde
  53.  
  54. IPRIG = 0
  55.  
  56. C Activation XCOOR
  57. SEGACT MCOORD
  58.  
  59. C____________________________________________________________________
  60. C
  61. C LECTURE DU VECTEUR ROTATION ET MULTIPLICATION PAR 2 (pour Coriolis)
  62. C____________________________________________________________________
  63. C
  64. C Cas 3D (idim=3)
  65. IF (IFOUR.EQ.2) THEN
  66. IF (IPROTA.EQ.0) THEN
  67. VROT(1) = 0.D0
  68. VROT(2) = 0.D0
  69. VROT(3) = 2.D0
  70. ELSE
  71. VROT(1) = 2.D0 * XCOOR((4*IPROTA) - 3)
  72. VROT(2) = 2.D0 * XCOOR((4*IPROTA) - 2)
  73. VROT(3) = 2.D0 * XCOOR((4*IPROTA) - 1)
  74. ENDIF
  75. C Cas Axi et 2D Fourier (idim=2)
  76. ELSEIF ((IFOUR.EQ.0) .OR. (IFOUR.EQ.1)) THEN
  77. IF (IPROTA.EQ.0) THEN
  78. VROT(1) = 0.D0
  79. VROT(2) = 2.D0
  80. VROT(3) = 0.D0
  81. ELSE
  82. VROT(1) = 0.D0
  83. VROT(2) = 2.D0*XCOOR((3*IPROTA) - 1)
  84. VROT(3) = 0.D0
  85. ENDIF
  86. C Pas d'autres cas ...
  87. C --> ERREUR "Fonction indisponible pour ce mode de calcul"
  88. ELSE
  89. CALL ERREUR(710)
  90. RETURN
  91. ENDIF
  92.  
  93. c_______________________________________________________________________
  94. c
  95. c initialisation du chapeau de l objet rigidite
  96. c_______________________________________________________________________
  97. NRIGEL = 0
  98. SEGINI,MRIGID
  99. IFORIG = IFOUR
  100. ICHOLE = 0
  101. IMGEO1 = 0
  102. IMGEO2 = 0
  103. ISUPEQ = 0
  104. IF (NUMLI2.EQ.0) THEN
  105. MTYMAT = 'AMORTISS'
  106. ELSE
  107. MTYMAT = 'MASSE'
  108. ENDIF
  109.  
  110. C-----------------------------------------------------------------------
  111. C ACTIVATION DU MODELE
  112. C-----------------------------------------------------------------------
  113. MMODEL = IPMODL
  114. SEGACT,MMODEL
  115. NSOUS = KMODEL(/1)
  116. C
  117. C-----------------------------------------------------------------------
  118. C DEBUT DE LA BOUCLE SUR LES DIFFERENTES SOUS ZONES
  119. C-----------------------------------------------------------------------
  120. DO 500 ISOUS = 1, NSOUS
  121.  
  122. IMODEL = KMODEL(ISOUS)
  123. SEGACT,IMODEL
  124.  
  125. C- Quelques initialisations
  126. IPMINT = 0
  127.  
  128. MOMATR = 0
  129. MOCARA = 0
  130. MOTYPM = 0
  131. MOTYPC = 0
  132. ISUPM = 0
  133. ISUPC = 0
  134.  
  135. MODEPL = 0
  136. MOFORC = 0
  137. lsupde = .false.
  138. lsupfo = .false.
  139.  
  140. IDESCR = 0
  141.  
  142. C- Recuperation d'informations sur le maillage elementaire
  143. IPT1 = IMAMOD
  144. SEGACT,IPT1
  145. NBNOE1 = IPT1.NUM(/1)
  146. NBELE1 = IPT1.NUM(/2)
  147.  
  148. C- Quelques informations sur le modele
  149. IIPDPG = imodel.IPDPGE
  150. IIPDPG = IPTPOI(IIPDPG)
  151. CONM = CONMOD
  152. CMATE = CMATEE
  153. MATE = IMATEE
  154. c* INAT = INATUU
  155. c- Tableau infos
  156. iret = 1
  157. CALL IDENT(IPT1,CONM,IPCHE1,0, INFOS,iret)
  158. IF (iret.EQ.0) GOTO 599
  159.  
  160. C- Recuperation d'informations sur l'element fini
  161. MELE = NEFMOD
  162.  
  163. NPINT = MAX(INFMOD(1),1)
  164. C support des champs
  165. IPLAZ = 4
  166. IF (NPINT.EQ.12345) IPLAZ = 1
  167.  
  168. MFR =INFELE(13)
  169. LRE = INFELE(9)
  170. NDDL = INFELE(15)
  171. IF (IFOUR.EQ.1) THEN
  172. LRE = 2*LRE
  173. NDDL = 2*NDDL
  174. ENDIF
  175. LW = INFELE(7)
  176. LHOOK = INFELE(10)
  177. IELE = INFELE(14)
  178. IPMINT = INFMOD(2+IPLAZ)
  179. C* IPMINT = INFELE(11)
  180. IPMIN1 = INFMOD(8)
  181. C* ICARA = INFELE(5)
  182. IPPORE = 0
  183. IF (MFR.EQ.33) IPPORE = NBNOE1
  184. C
  185. C INITIALISATION DE MINTE
  186. MINTE = IPMINT
  187. SEGACT,MINTE
  188. NBPGAU = POIGAU(/1)
  189. *
  190. C- RECHERCHE DES NOMS D'INCONNUES ET DES DUAUX
  191. C-----------------------------------------------------------------------
  192. if (lnomid(1).ne.0) then
  193. MODEPL = lnomid(1)
  194. else
  195. lsupde=.true.
  196. CALL IDPRIM(IMODEL,MFR,MODEPL,NDEPL,NDUM)
  197. endif
  198. nomid = MODEPL
  199. SEGACT,nomid
  200. ndepl = lesobl(/2)
  201. c* ndum=lesfac(/2)
  202.  
  203. if (lnomid(2).ne.0) then
  204. MOFORC = lnomid(2)
  205. else
  206. CALL IDDUAL(IMODEL,MFR,MOFORC,NFORC,NDUM)
  207. lsupfo=.true.
  208. endif
  209. nomid = MOFORC
  210. SEGACT,nomid
  211. nforc=lesobl(/2)
  212. c* ndum=lesfac(/2)
  213. C
  214. IF (NDEPL.EQ.0.OR.NFORC.EQ.0.OR.NDEPL.NE.NFORC) THEN
  215. CALL ERREUR(5)
  216. GOTO 598
  217. ENDIF
  218. C
  219. C REMPLISSAGE DU SEGMENT DESCRIPTEUR
  220. C-------------------------------------
  221. NLIGRP = LRE
  222. NLIGRD = LRE
  223. SEGINI,DESCR
  224. IDESCR = DESCR
  225. C
  226. NCOMP = NDEPL
  227. IF (MFR.EQ.33) NCOMP = NDEPL-1
  228. NBNNS = NBNOE1
  229. IF (MFR.EQ.19.OR.MFR.EQ.21) NBNNS = NBNOE1/2
  230.  
  231. IDDL=1
  232. DO 1004 inoe =1, NBNNS
  233. DO 1005 ICOMP=1,NCOMP
  234. IF (IFOUR.NE.1) THEN
  235. NOMID=MODEPL
  236. LISINC(IDDL)=LESOBL(ICOMP)
  237. NOMID=MOFORC
  238. LISDUA(IDDL)=LESOBL(ICOMP)
  239. NOELEP(IDDL) = inoe
  240. NOELED(IDDL) = inoe
  241. ELSE
  242. NOMID=MODEPL
  243. I = 2*IDDL
  244. LISINC(I-1)=LESOBL(ICOMP)
  245. IF (LESOBL(ICOMP).EQ.'UR ') THEN
  246. LISINC(I)='IUR '
  247. ELSEIF (LESOBL(ICOMP).EQ.'UZ ') THEN
  248. LISINC(I)='IUZ '
  249. ELSEIF (LESOBL(ICOMP).EQ.'UT ') THEN
  250. LISINC(I)='IUT '
  251. ELSEIF (LESOBL(ICOMP).EQ.'RT ') THEN
  252. LISINC(I)='IRT '
  253. ENDIF
  254. NOMID=MOFORC
  255. LISDUA(I-1)=LESOBL(ICOMP)
  256. IF (LESOBL(ICOMP).EQ.'FR ') THEN
  257. LISDUA(I)='IFR '
  258. ELSEIF (LESOBL(ICOMP).EQ.'FZ ') THEN
  259. LISDUA(I)='IFZ '
  260. ELSEIF (LESOBL(ICOMP).EQ.'FT ') THEN
  261. LISDUA(I)='IFT '
  262. ELSEIF (LESOBL(ICOMP).EQ.'MT ') THEN
  263. LISDUA(I)='IMT '
  264. ENDIF
  265. NOELEP(I-1) = inoe
  266. NOELED(I-1) = inoe
  267. NOELEP(I) = inoe
  268. NOELED(I) = inoe
  269. ENDIF
  270. IDDL=IDDL+1
  271. 1005 CONTINUE
  272. 1004 CONTINUE
  273.  
  274. SEGDES,DESCR
  275. IDESCR = DESCR
  276. C
  277. C- Recuperation des composantes MATERIAU
  278. C-----------------------------------------------------------------------
  279. NBROBL = 0
  280. NBRFAC = 0
  281. nomid = 0
  282. notype = 0
  283. LHOTRA = 0
  284. *
  285. * rho dans les cas poutre,tuyau, massif, coque
  286. *
  287. IF (MFR.EQ.1.OR.MFR.EQ.27.OR.MFR.EQ.7.OR.MFR.EQ.13.OR.
  288. & MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
  289. *
  290. IF (CMATE.NE.'SECTION') THEN
  291. NBROBL = 1
  292. SEGINI,nomid
  293. LESOBL(1)='RHO '
  294. NBTYPE = 1
  295. SEGINI NOTYPE
  296. TYPE(1)='REAL*8'
  297. ELSE
  298. LHOTRA=LHOOK
  299. NBROBL=2
  300. SEGINI,nomid
  301. LESOBL(1)='MODS'
  302. LESOBL(2)='MATS'
  303. NBTYPE=2
  304. SEGINI NOTYPE
  305. TYPE(1) = 'POINTEURMMODEL'
  306. TYPE(2) = 'POINTEURMCHAML'
  307. ENDIF
  308. ENDIF
  309. C
  310. MOMATR = nomid
  311. MOTYPM = notype
  312. NMATR = NBROBL
  313. NMATF = NBRFAC
  314. NMATT = NMATR+NMATF
  315. *
  316. * verification du support des composantes recherchees
  317. *
  318. IF (MOMATR.NE.0) THEN
  319. CALL QUESUQ(IMODEL,IPCHE1,4,0,MOMATR,IPLAZ,ISUPM,iret)
  320. IF (ISUPM.GT.1) GOTO 597
  321. ENDIF
  322. *
  323. C- Recuperation des composantes CARACTERISTIQUES
  324. C-----------------------------------------------------------------------
  325. NBROBL = 0
  326. NBRFAC = 0
  327. nomid = 0
  328. notype = 0
  329. IVECT = 0
  330. *
  331. * caracteristiques pour les poutres
  332. IF (MFR.EQ.7 ) THEN
  333. IF (CMATE.EQ.'SECTION') THEN
  334. NBRFAC=4
  335. SEGINI NOMID
  336. LESFAC(1)='OMEG'
  337. LESFAC(2)='VX '
  338. LESFAC(3)='VY '
  339. LESFAC(4)='VZ '
  340. IVECT=1
  341. *
  342. NBTYPE=4
  343. SEGINI NOTYPE
  344. TYPE(1)='REAL*8'
  345. TYPE(2)='REAL*8'
  346. TYPE(3)='REAL*8'
  347. TYPE(4)='REAL*8'
  348. *
  349. ELSE
  350. NBROBL=4
  351. NBRFAC=6
  352. SEGINI NOMID
  353. LESOBL(1)='TORS'
  354. LESOBL(2)='INRY'
  355. LESOBL(3)='INRZ'
  356. LESOBL(4)='SECT'
  357. LESFAC(1)='SECY'
  358. LESFAC(2)='SECZ'
  359. LESFAC(3)='OMEG'
  360. LESFAC(4)='VX '
  361. LESFAC(5)='VY '
  362. LESFAC(6)='VZ '
  363. IVECT=1
  364. *
  365. NBTYPE=10
  366. SEGINI NOTYPE
  367. TYPE(1)='REAL*8'
  368. TYPE(2)='REAL*8'
  369. TYPE(3)='REAL*8'
  370. TYPE(4)='REAL*8'
  371. TYPE(5)='REAL*8'
  372. TYPE(6)='REAL*8'
  373. TYPE(7)='REAL*8'
  374. TYPE(8)='REAL*8'
  375. TYPE(9)='REAL*8'
  376. TYPE(10)='REAL*8'
  377. ENDIF
  378. *
  379. * caracteristiques pour les tuyaux
  380. ELSE IF (MFR.EQ.13) THEN
  381. NBROBL=2
  382. NBRFAC=5
  383. SEGINI NOMID
  384. LESOBL(1)='EPAI'
  385. LESOBL(2)='RAYO'
  386. LESFAC(1)='RACO'
  387. LESFAC(2)='OMEG'
  388. LESFAC(3)='VX '
  389. LESFAC(4)='VY '
  390. LESFAC(5)='VZ '
  391. IVECT=1
  392. *
  393. NBTYPE=7
  394. SEGINI NOTYPE
  395. TYPE(1)='REAL*8'
  396. TYPE(2)='REAL*8'
  397. TYPE(3)='REAL*8'
  398. TYPE(4)='REAL*8'
  399. TYPE(5)='REAL*8'
  400. TYPE(6)='REAL*8'
  401. TYPE(7)='REAL*8'
  402. *
  403. * caracteristiques pour les barres
  404. ELSE IF (MFR.EQ.27) THEN
  405. NBROBL=1
  406. SEGINI NOMID
  407. LESOBL(1)='SECT'
  408. *
  409. NBTYPE=1
  410. SEGINI NOTYPE
  411. TYPE(1)='REAL*8'
  412. *
  413. * epaisseur et excentrement dans le cas des coques
  414. ELSE IF (MFR.EQ.3.OR.MFR.EQ.5.OR.MFR.EQ.9) THEN
  415. NBROBL=1
  416. NBRFAC=1
  417. SEGINI NOMID
  418. LESOBL(1)='EPAI'
  419. LESFAC(1)='EXCE'
  420. *
  421. NBTYPE=1
  422. SEGINI NOTYPE
  423. TYPE(1)='REAL*8'
  424. *
  425. ENDIF
  426. *
  427. MOCARA = nomid
  428. MOTYPC = notype
  429. NCARA = NBROBL
  430. NCARF = NBRFAC
  431. NCARR = NCARA+NCARF
  432.  
  433. * verification du support des composantes recherchees
  434. *
  435. IF (MOCARA.NE.0)THEN
  436. CALL QUESUQ(IMODEL,IPCHE1,4,0,MOCARA,IPLAZ,ISUPC,iret)
  437. IF (ISUPC.GT.1) GOTO 597
  438. ENDIF
  439.  
  440. C- Partionnement si necessaire de la matrice de coriolis
  441. C- determinant ainsi le nombre d'objets elementaires de MRIGID
  442. C-----------------------------------------------------------------------
  443. LTRK = oooval(1,4)
  444. IF (LTRK.EQ.0) LTRK = oooval(1,1)
  445. LTRK=MAX(LTRK,2**24)
  446. * Ajout a la taille en mots de la matrice des infos du segment
  447. LSEG = LRE*LRE*NBELE1 + 16
  448. NBLPRT = (LSEG-1)/LTRK + 1
  449. NBLMAX = (NBELE1-1)/NBLPRT + 1
  450. NBLPRT = (NBELE1-1)/NBLMAX + 1
  451. * write(ioimp,*) ' corio1 : nblprt nblmax = ',nblprt,nblmax,nbele1
  452.  
  453. C Ajout de la matrice de CORIOLIS a la matrice globale
  454. C-----------------------------------------------------------------------
  455. NRIGE0 = IRIGEL(/2)
  456. NRIGEL = NRIGE0 + NBLPRT
  457. SEGADJ,MRIGID
  458.  
  459. descr = IDESCR
  460. meleme = IPT1
  461. nbnn = NBNOE1
  462. nbelem = NBELE1
  463. nbsous = 0
  464. nbref = 0
  465. *
  466. * Boucle sur les PARTITIONS elementaires de la matrice
  467. ************************************************************************
  468. DO 5000 irige = 1, NBLPRT
  469.  
  470. IF (NBLPRT.GT.1) THEN
  471. C- Partitionnement du maillage support de la matrice elementaire
  472. C- (IPT1 peut etre desactive suite a l'appel a KOMCHA !)
  473. SEGACT,IPT1
  474. ielem = (irige-1)*NBLMAX
  475. nbelem = MIN(NBLMAX,NBELE1-ielem)
  476. * write(ioimp,*) ' creation segment ',nbnn,nbelem
  477. SEGINI,meleme
  478. itypel = IPT1.itypel
  479. DO ielt = 1, nbelem
  480. jelt = ielt + ielem
  481. DO inoe = 1, nbnn
  482. num(inoe,ielt) = IPT1.NUM(inoe,jelt)
  483. ENDDO
  484. icolor(ielt) = IPT1.ICOLOR(jelt)
  485. ENDDO
  486. C- Recopie du descripteur
  487. des1 = IDESCR
  488. SEGINI,descr=des1
  489. SEGDES,descr
  490. ENDIF
  491.  
  492. ipmail = meleme
  493. ipdesc = descr
  494.  
  495. C- Initialisation de la matrice de rigidite elementaire (xmatri)
  496. NELRIG = nbelem
  497. SEGINI,xmatri
  498. ipmatr = xmatri
  499.  
  500. C- Recuperation des valeurs des proprietes materiau et geometriques
  501. IVAMAT = 0
  502. IVACAR = 0
  503.  
  504. IF (MOMATR.NE.0) THEN
  505. CALL KOMCHA(IPCHE1,ipmail,CONM,MOMATR,MOTYPM,1,INFOS,3,
  506. & IVAMAT)
  507. IF (IERR.NE.0) GOTO 5100
  508. IF (ISUPM.EQ.1) THEN
  509. CALL VALCHE(IVAMAT,NMATT,IPMINT,IPPORE,MOMATR,MELE)
  510. IF (IERR.NE.0)THEN
  511. ISUPM = 0
  512. GOTO 5100
  513. ENDIF
  514. ENDIF
  515. ENDIF
  516. C
  517. IF (MOCARA.NE.0) THEN
  518. CALL KOMCHA(IPCHE1,ipmail,CONM,MOCARA,MOTYPC,1,INFOS,3,
  519. & IVACAR)
  520. IF (IERR.NE.0) GOTO 5100
  521. IF (ISUPC.EQ.1)THEN
  522. CALL VALCHE(IVACAR,NCARR,IPMINT,IPPORE,MOCARA,MELE)
  523. IF (IERR.NE.0)THEN
  524. ISUPC = 0
  525. GOTO 5100
  526. ENDIF
  527. ENDIF
  528. ENDIF
  529.  
  530. C-----------------------------------------------------------------------
  531. C NUMERO DES ETIQUETTES :
  532. C ETIQUETTES DE 1 A 98 POUR TRAITEMENT SPECIFIQUE A L ELEMENT
  533. C LES ELEMENTS SONT GROUPES COMME SUIT :
  534. C - MASSIF,LIQUIDE 'SURFACE LIBRE' ----------------------> CORIO3
  535. C - COQ3/POUTRE,DKT,COQ4,COQ8,DST ------------------> CORIO2
  536. C ET POUTRE DE TIMOSCHENKO
  537. C______________________________________________________________________
  538. * CABL SEG2 SEG3 TRI3 TRI4 TRI6 TRI7 QUA4 QUA5 QUA8 QUA9
  539. GOTO ( 99, 99, 99, 11, 99, 11, 99, 11, 99, 11, 99
  540. * RAC2 RAC3 CUB8 CU20 PRI6 PR15 LIA3 LIA4 LIA6 LIA8 MULT
  541. & , 99, 99, 11, 11, 11, 11, 99, 99, 99, 99, 99
  542. * TET4 TE10 PYR5 PY13 COQ3 DKT POUT LISP FAC3 FAC4 FAC6
  543. & , 11, 11, 11, 11, 21, 21, 21, 99, 99, 99, 99
  544. * FAC8 LTR3 LQU4 LCU8 LPR6 LTE4 LPY5 COQ8 TUYA TUFI COQ2
  545. & , 99, 99, 99, 99, 99, 99, 99, 21, 21, 99, 21
  546. * POI1 BARR RACO LSU2 COQ4 LISM COF3 RES2 LSU3 LSU4 LICO
  547. & , 99, 21, 99, 99, 21, 99, 99, 99, 99, 99, 99
  548. * COQ6 CVS2 CVS3 CVT3 CVT6 CVQ4 CVQ8 THP5 TH13 THP6 TH15
  549. & , 21, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  550. * THC8 TH20 ICT3 ICQ4 ICT6 ICQ8 ICC8 ICT4 ICP6 IC20 IC10
  551. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  552. * IC15 TRIP QUAP CUBP TETP PRIP TIMO JOI2 JOI3 JOT3 JOI4
  553. & , 99, 99, 99, 99, 99, 99, 21, 99, 99, 99, 99
  554. * JOI6 JOI8 LISC TRIH DST LIC4 CERC TUYO LSE2 LITU HYT3
  555. & , 99, 99, 99, 99, 21, 99, 99, 99, 99, 99, 99
  556. * HYQ4 HYT4 HYP6 HYC8 TRIS QUAS POIS FOR3 JOP3 JOP6 JOP8
  557. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  558. * POL3 POL4 POL5 POL6 POL7 POL8 POL9 PO10 PO11 PO12 PO13
  559. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  560. * PO14 BAR3 BAEX LIA2 QUAH CUBH ROT3 SEF2 TRF3 QUF4 CUF8
  561. & , 99, 21, 99, 99, 99, 99, 99, 99, 99, 99, 99
  562. * PRF6 TEF4 PYF5 MSE3 MTR6 MQU9 MC27 MP18 MT10 MP14 SEF3
  563. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  564. * TRF7 QUF9 CF27 PF21 TF15 PF19 SEG6 TR21 QU36 C216 P126
  565. & , 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99
  566. * TE56 PY91 TRH6
  567. & , 99, 99, 99),MELE
  568. C
  569. 99 CONTINUE
  570. MOTERR(1: 4) = NOMTP(MELE)
  571. MOTERR(5:12) = 'CORI1'
  572. CALL ERREUR(86)
  573. GOTO 5100
  574.  
  575. C_______________________________________________________________________
  576. C
  577. C MASSIF
  578. C_______________________________________________________________________
  579. C
  580. 11 CONTINUE
  581. CALL CORIO3(ipmail,NDDL,LRE,NBPGAU,IPMINT,MELE,MFR,IVAMAT,
  582. & IVACAR,NMATT,ipmatr,VROT,NUMLI1,IIPDPG)
  583. C
  584. GOTO 5100
  585. C_______________________________________________________________________
  586. C
  587. C POUTRE, POUTRE DE TIMOSCHENKO, COQUE, BARRE
  588. C_______________________________________________________________________
  589. C
  590. 21 CONTINUE
  591. CALL CORIO2(ipmail,LRE,LW,MELE,IVAMAT,NMATT,IVACAR,NCARR,
  592. & IVECT,isous,NBPGAU,IPMINT,IPMIN1,NDDL,MATE,
  593. & CMATE,LHOTRA,ipmatr,VROT,NUMLI1,IIPDPG)
  594. GOTO 5100
  595. C_______________________________________________________________________
  596. C
  597. C DESACTIVATION DES SEGMENTS PROPRES A LA ZONE GEOMETRIQUE IA
  598. C_______________________________________________________________________
  599. 5100 CONTINUE
  600. C
  601. IF (ISUPM.EQ.1 .OR. NBLPRT.GT.1) THEN
  602. CALL DTMVAL(IVAMAT,3)
  603. ELSE
  604. CALL DTMVAL(IVAMAT,1)
  605. ENDIF
  606. C
  607. IF (ISUPC.EQ.1 .OR. NBLPRT.GT.1) THEN
  608. CALL DTMVAL(IVACAR,3)
  609. ELSE
  610. CALL DTMVAL(IVACAR,1)
  611. ENDIF
  612. xmatri = ipmatr
  613. IF (NBLPRT.GT.1) THEN
  614. meleme = ipmail
  615. SEGDES,meleme
  616. ENDIF
  617.  
  618. C- Sortie prematuree en cas d'erreur
  619. IF (IERR.NE.0) GOTO 597
  620.  
  621. C- Stockage de la matrice
  622. jrige = NRIGE0 + irige
  623. COERIG(jrige) = 1.
  624. IRIGEL(1,jrige) = ipmail
  625. IRIGEL(2,jrige) = 0
  626. IRIGEL(3,jrige) = ipdesc
  627. IRIGEL(4,jrige) = ipmatr
  628. IRIGEL(5,jrige) = NIFOUR
  629. IRIGEL(6,jrige) = 0
  630. C- Matrice antisymetrique si non 'HARM'
  631. IF (NUMLI1.EQ.0) THEN
  632. IRIGEL(7,jrige) = 1
  633. xmatri.symre=1
  634. ELSE
  635. IRIGEL(7,jrige) = 0
  636. xmatri.symre=0
  637. ENDIF
  638. SEGDES,xmatri
  639. IRIGEL(8,jrige) = 0
  640.  
  641. 5000 CONTINUE
  642. C- Fin de la boucle sur les partitions
  643.  
  644. 597 CONTINUE
  645. IF (MOMATR.NE.0) THEN
  646. nomid = MOMATR
  647. SEGSUP,NOMID
  648. c notype = NOTYPM
  649. notype = MOTYPM
  650. SEGSUP,notype
  651. ENDIF
  652. IF (MOCARA.NE.0) THEN
  653. nomid = MOCARA
  654. SEGSUP,NOMID
  655. c notype = NOTYPC
  656. notype = MOTYPC
  657. SEGSUP,notype
  658. ENDIF
  659. 598 CONTINUE
  660. IF (MODEPL.NE.0) THEN
  661. nomid = MODEPL
  662. SEGDES,nomid
  663. IF (lsupde) SEGSUP,nomid
  664. ENDIF
  665. IF (MOFORC.NE.0) THEN
  666. nomid = MOFORC
  667. SEGDES,nomid
  668. IF (lsupfo) SEGSUP,nomid
  669. ENDIF
  670. c* MINTE = IPMINT
  671. SEGDES,MINTE
  672. 599 CONTINUE
  673. c* IPT1 = IMAMOD
  674. SEGDES,IPT1
  675. SEGDES,IMODEL
  676.  
  677. C- En cas d'erreur
  678. IF (IERR.NE.0) GOTO 999
  679.  
  680. 500 CONTINUE
  681. C* Fin de la boucle sur les modeles elementaires
  682.  
  683. 999 CONTINUE
  684. IF (IERR.NE.0) THEN
  685. SEGSUP,MRIGID
  686. IPRIG = 0
  687. ELSE
  688. SEGDES,MRIGID
  689. IPRIG = MRIGID
  690. ENDIF
  691.  
  692. SEGDES,MMODEL
  693. C Desactivation XCOOR
  694. SEGDES MCOORD
  695.  
  696. RETURN
  697. END
  698.  
  699.  
  700.  

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