Télécharger corio1.eso

Retour à la liste

Numérotation des lignes :

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

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