Télécharger fpfiss.eso

Retour à la liste

Numérotation des lignes :

fpfiss
  1. C FPFISS SOURCE OF166741 24/10/03 21:15:16 12022
  2. SUBROUTINE FPFISS(P,IPCHE1,IPMODL,IPVECT,IPPOIN,IPCHE2,
  3. 1 IPTFP,IRET)
  4. C_____________________________________________________________________
  5. C
  6. C CALCULE LES FORCES DE PRESSIONS APPLIQUEES SUR DES LEVRES D UNE
  7. C FISSURE (ELT LINESPRING)
  8. C
  9. C ENTREES :
  10. C ---------
  11. C
  12. C P VALEUR DE LA PRESSION SI ELLE EST CONSTANTE
  13. C IPCHE1 CHPOINT CONTENANT LES VALEURS DES PRESSIONS AUX NOEUDS
  14. C IPMODL OBJET MMODEL SUR LEQUEL S APPLIQUE LA PRESSION
  15. C IPVECT VECTEUR INDIQUANT LA DIRECTION DANS LAQUELLE
  16. C S APPLIQUE LA PRESSION
  17. C IPPOIN POINT OU SE RAPPORTE LE VECTEUR
  18. C IPCHE2 MCHAML CONTENANT LES CARACTERISTIQUES
  19. C
  20. C SORTIE :
  21. C --------
  22. C
  23. C IPTFP CHPOINT DES FORCES NODALES EQUIVALENTES
  24. C IRET 1 OU 0 SUIVANT SUCCES OU NON
  25. C
  26. C REVISION JACQUELINE BROCHARD SEPTEMBRE 86
  27. C PASSAGE AUX NOUVEAUX MCHAMLS PAR JM CAMPENON LE 05 09 90
  28. C
  29. C_____________________________________________________________________
  30. IMPLICIT INTEGER(I-N)
  31. IMPLICIT REAL*8(A-H,O-Z)
  32.  
  33. -INC PPARAM
  34. -INC CCOPTIO
  35. -INC CCHAMP
  36.  
  37. -INC SMCOORD
  38. -INC SMELEME
  39. -INC SMMODEL
  40. -INC SMCHAML
  41. -INC SMCHPOI
  42. -INC SMINTE
  43. C
  44. C SEGMENT DONNANT LE POINTEUR DE MAILLAGE CORRECTE AU MCHAML DE
  45. C CARACTERISTIQUE APRES CREATION D'UN MMODEL
  46. C
  47. logical ltelq
  48. SEGMENT JPMAIL
  49. INTEGER MAIL1 (NSOUS1)
  50. INTEGER MAIL2 (NSOUS1)
  51. ENDSEGMENT
  52. *
  53. SEGMENT NOTYPE
  54. CHARACTER*16 TYPE(NBTYPE)
  55. ENDSEGMENT
  56. C
  57. SEGMENT MPTVAL
  58. INTEGER IPOS(NS) ,NSOF(NS)
  59. INTEGER IVAL(NCOSOU)
  60. CHARACTER*16 TYVAL(NCOSOU)
  61. ENDSEGMENT
  62. C
  63. DIMENSION V(3),XP(3)
  64. DIMENSION BPSS(3,3),XE(3,4),XEL(3,3),V1(3),V2(3),H1(3),H2(3)
  65. CHARACTER*8 MOT
  66. CHARACTER*(NCONCH) CONM
  67. PARAMETER ( NINF=3 )
  68. INTEGER INFOS(NINF)
  69. LOGICAL lsupfo
  70. C
  71. DATA X774/.774596669241483D0/
  72. DATA UN,UNDEMI,ZERO/1.D0,.5D0,0.D0/
  73. DATA MOT/'NOEUD '/
  74.  
  75. lsupfo=.false.
  76. IRET=0
  77. C
  78. C VERIFICATION DU LIEU SUPPORT DU MCHAML DE CARACTERISTIQUES
  79. C
  80. CALL QUESUP(IPMODL,IPCHE2,3,0,ISUP,IRETOU)
  81. IF (ISUP.GT.1) RETURN
  82. C
  83. IFLAG=0
  84. NHRM=NIFOUR
  85. C
  86. C ON RECUPERE LES COORDONNEES DU VECTEUR
  87. C
  88. IREF=(IPVECT-1)*(IDIM+1)
  89. V(1)=XCOOR(IREF+1)
  90. V(2)=XCOOR(IREF+2)
  91. IF (IDIM.EQ.2) THEN
  92. VN=SQRT(V(1)**2+V(2)**2)
  93. IF (VN.EQ.0.) THEN
  94. CALL ERREUR(277)
  95. RETURN
  96. ENDIF
  97. V(1)=V(1)/VN
  98. V(2)=V(2)/VN
  99. ELSE
  100. V(3)=XCOOR(IREF+3)
  101. VN=SQRT(V(1)**2+V(2)**2+V(3)**2)
  102. IF (VN.EQ.0.) THEN
  103. CALL ERREUR(277)
  104. RETURN
  105. ENDIF
  106. V(1)=V(1)/VN
  107. V(2)=V(2)/VN
  108. V(3)=V(3)/VN
  109. ENDIF
  110. C
  111. C LE FLAG SERT A INDIQUER SI L'ON DOIT OU NON DETRUIRE LE MODELE
  112. C EN CAS DE CREATION ( 0 : DESTRUCTION D'UN MMODEL CREE )
  113. C
  114. JPMAIL=0
  115. IF (IPCHE1.NE.0) THEN
  116. C
  117. C ON CREE LE MMODEL S'ACCROCHANT AU CHPOINT
  118. C
  119. CALL NOMCOM(IPCHE1,'SCAL',IPCHE,IRETOU)
  120. IF (IERR.NE.0) RETURN
  121. C
  122. C ON CREE L OBJET MAILLAGE CONTENANT TOUS LES POINT DU CHPOINT
  123. C
  124. MCHPOI=IPCHE
  125. SEGACT MCHPOI
  126. NSOUPO=IPCHP(/1)
  127. IPGEOM = 0
  128. DO 1140 I=1,NSOUPO
  129. MSOUPO=IPCHP(I)
  130. SEGACT MSOUPO
  131. IF (IPGEOM.EQ.0) THEN
  132. IPGEOM = IGEOC
  133. ELSE
  134. IPP2 = IGEOC
  135. ltelq=.false.
  136. CALL FUSE (IPGEOM,IPP2,IPPT,ltelq)
  137. IPGEOM = IPPT
  138. ENDIF
  139. SEGDES MSOUPO
  140. 1140 CONTINUE
  141. SEGDES MCHPOI
  142. C
  143. N1=0
  144. SEGINI MMODEL
  145. IPMOD=MMODEL
  146. C
  147. MMODE1=IPMODL
  148. SEGACT MMODE1
  149. NSOUS1=MMODE1.KMODEL(/1)
  150. C
  151. C BOUCLE SUR LES SOUS ZONE GEOMETRIQUE ELEMENTAIRE
  152. C
  153. IRRT=0
  154. DO 50 ISOUS=1,NSOUS1
  155. IMODE1=MMODE1.KMODEL(ISOUS)
  156. SEGACT IMODE1
  157. ITGEOM=IMODE1.IMAMOD
  158. CALL ECROBJ('MAILLAGE',IPGEOM)
  159. CALL ECRCHA('STRI')
  160. CALL ECRCHA('APPU')
  161. CALL ECROBJ('MAILLAGE',ITGEOM)
  162. CALL EXTREL(IRR,0,IBNOR)
  163. IF (IRR.EQ.0) THEN
  164. C
  165. C ON A VERIFIER L ADHERENCE DU CHPOINT A CE MAILLAGE
  166. C
  167. CALL LIROBJ('MAILLAGE',IPOGEO,1,IRETOU)
  168. IF (IERR.NE.0) THEN
  169. SEGDES MMODE1
  170. SEGDES IMODE1
  171. SEGSUP MMODEL
  172. RETURN
  173. ENDIF
  174. N1=N1+1
  175. SEGADJ MMODEL
  176. C
  177. C CREATION DE L'OBJET IMODEL DE CETTE SOUS ZONE
  178. C
  179. NFOR=IMODE1.FORMOD(/2)
  180. NMAT=IMODE1.MATMOD(/2)
  181. MN3 =IMODE1.INFMOD(/1)
  182. NPARMO=0
  183. nobmod=0
  184. C
  185. SEGINI IMODEL
  186. conmod(17:24)=' '
  187. IMAMOD=IPOGEO
  188. NEFMOD=IMODE1.NEFMOD
  189. CONMOD=IMODE1.CONMOD
  190. IPDPGE=IMODE1.IPDPGE
  191. C
  192. C CREATION D'UN TABLEAU DE CORRESPONDANCE LE IMAMOD DU
  193. C MMODEL (IPMODL) ET DU IMAMOD DU NVX MMODEL QUE L'ON CREE
  194. C
  195. IF (JPMAIL.EQ.0) SEGINI JPMAIL
  196. MAIL1(ISOUS)=ITGEOM
  197. MAIL2(ISOUS)=IPOGEO
  198. DO 47 I=1,MN3
  199. INFMOD(I)=IMODE1.INFMOD(I)
  200. 47 CONTINUE
  201. CONMOD=IMODE1.CONMOD
  202. DO 48 I=1,NFOR
  203. FORMOD(I)=IMODE1.FORMOD(I)
  204. 48 CONTINUE
  205. DO 49 I=1,NMAT
  206. MATMOD(I)=IMODE1.MATMOD(I)
  207. 49 CONTINUE
  208. KMODEL(N1)=IMODEL
  209. SEGDES IMODEL
  210. ELSE
  211. C
  212. C LE CHPOINT N'ADHERE PAS A CETTE ZONE
  213. C
  214. IRRT=IRRT+1
  215. ENDIF
  216. SEGDES IMODE1
  217. 50 CONTINUE
  218. SEGDES MMODE1
  219. SEGDES MMODEL
  220. C
  221. IF (NSOUPO.GT.1) THEN
  222. MELEME=IPGEOM
  223. SEGSUP MELEME
  224. ENDIF
  225. C
  226. IF (IRRT.EQ.NSOUS1) THEN
  227. C
  228. C L'OBJET MAILLAGE ET LE CHPOINT SONT INCOMPATIBLES
  229. C
  230. MOTERR(1:8)='MAILLAGE'
  231. MOTERR(9:16)='CHPOINT'
  232. CALL ERREUR(135)
  233. MMODEL=IPMOD
  234. SEGSUP MMODEL
  235. RETURN
  236. ENDIF
  237. C
  238. CALL CHAME1(0,IPMOD,IPCHE,' ',IPCH1,3)
  239. IF (IERR.NE.0) THEN
  240. CALL DTMODL(IPMOD)
  241. SEGSUP JPMAIL
  242. RETURN
  243. ENDIF
  244. ELSE
  245. IFLAG=1
  246. IPMOD=IPMODL
  247. CALL ZEROP(IPMOD,MOT,IPCH1)
  248. IF (IERR.NE.0) RETURN
  249. MCHEL1=IPCH1
  250. SEGACT MCHEL1
  251. NSOUS=MCHEL1.ICHAML(/1)
  252. DO 11 ISOUS=1,NSOUS
  253. MCHAM1=MCHEL1.ICHAML(ISOUS)
  254. SEGACT MCHAM1
  255. MELVA1=MCHAM1.IELVAL(1)
  256. SEGACT MELVA1
  257. N1PTEL=MELVA1.VELCHE(/1)
  258. N1EL =MELVA1.VELCHE(/2)
  259. DO 9 IGAU=1,N1PTEL
  260. DO 9 IB=1,N1EL
  261. MELVA1.VELCHE(IGAU,IB)=P
  262. 9 CONTINUE
  263. SEGDES MELVA1
  264. SEGDES MCHAM1
  265. 11 CONTINUE
  266. SEGDES MCHEL1
  267. ENDIF
  268.  
  269. NBROBL=1
  270. NBRFAC=0
  271. SEGINI NOMID
  272. LESOBL(1)='SCAL'
  273. MOSCAL = NOMID
  274.  
  275. NBTYPE=1
  276. SEGINI NOTYPE
  277. TYPE(1)='REAL*8'
  278. MOTYR8 = NOTYPE
  279. C
  280. C ACTIVATION DU MODEL
  281. C
  282. MMODEL=IPMOD
  283. SEGACT MMODEL
  284. NSOUS=KMODEL(/1)
  285. C
  286. C CREATION DU MCHELM DES FORCES NODALES
  287. C
  288. N1=NSOUS
  289. L1=5
  290. N3=6
  291. SEGINI MCHELM
  292. IPCHEL=MCHELM
  293. TITCHE='FORCE'
  294. IFOCHE=IFOUR
  295. C_______________________________________________________________________
  296. C
  297. C BOUCLE SUR LES SOUS ZONES DU MAILLAGE
  298. C_______________________________________________________________________
  299. C
  300. DO 500 ISOUS=1,NSOUS
  301. C
  302. C ON RECUPERE L INFORMATION GENERALE
  303. C
  304. IMODEL=KMODEL(ISOUS)
  305. SEGACT IMODEL
  306. IPMAIL=IMAMOD
  307. CONM =CONMOD
  308. IMACHE(ISOUS)=IPMAIL
  309. C
  310. C TRAITEMENT DU MODEL
  311. C
  312. MELE=NEFMOD
  313. C
  314. C ERREUR L ELEMENT N EST PAS ENCORE IMPLEMENTE
  315. IF (MELE.NE.30) THEN
  316. MOTERR(1:4)=NOMTP(MELE)
  317. MOTERR(5:12)='FPFISS'
  318. CALL ERREUR(86)
  319. SEGDES IMODEL,MMODEL
  320. SEGSUP MCHELM
  321. IF (IFLAG.EQ.0) CALL DTMODL (IPMOD)
  322. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  323. RETURN
  324. ENDIF
  325. C
  326. MELEME=IMAMOD
  327. IPTGEO=MELEME
  328. C
  329. C INFORMATION SUR L'ELEMENT FINI
  330. C
  331. MFR =INFELE(13)
  332. * IPTINT=INFELE(11)
  333. IPTINT=infmod(5)
  334. MINTE=IPTINT
  335. SEGACT,MINTE
  336. C
  337. C CREATION DU TABLEAU INFOS
  338. C
  339. CALL IDENT(IPMAIL,CONM,IPCH1,IPCHE2,INFOS,IRTD)
  340. IF (IRTD.EQ.0) THEN
  341. SEGDES IMODEL,MMODEL
  342. SEGSUP MCHELM
  343. IF (IFLAG.EQ.0) CALL DTMODL (IPMOD)
  344. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  345. RETURN
  346. ENDIF
  347. C
  348. INFCHE(ISOUS,1)=0
  349. INFCHE(ISOUS,2)=0
  350. INFCHE(ISOUS,3)=NHRM
  351. INFCHE(ISOUS,4)=IPTINT
  352. INFCHE(ISOUS,5)=0
  353. INFCHE(ISOUS,6)=3
  354. C
  355. C RECHERCHE DU MELVAL DU CHAMELEM DE PRESSION
  356. C
  357. NCARA=0
  358. NCARF=0
  359. MOCARA=0
  360. NFOR=0
  361. MOFORC=0
  362. C
  363. CALL KOMCHA(IPCH1,IPMAIL,CONM,MOSCAL,MOTYR8,1,INFOS,3,IVASCA)
  364. IF (IERR.NE.0) GOTO 9990
  365. MPTVAL=IVASCA
  366. IPTVPR=IVAL(1)
  367. C
  368. C CALCUL DES FORCES NODALES EQUIVALENTES
  369. C BRANCHEMENT SUIVANT LE TYPE DES ELEMENTS
  370. C
  371. C RECHERCHE DES NOM DE COMPOSANTES
  372. C
  373. if(lnomid(2).ne.0) then
  374. nomid=lnomid(2)
  375. segact nomid
  376. moforc=nomid
  377. nfor=lesobl(/2)
  378. nfac=0
  379. lsupfo=.false.
  380. else
  381. lsupfo=.true.
  382. CALL IDFORC(MFR,IFOUR,MOFORC,NFOR,NFAC)
  383. endif
  384. C
  385. C ELEMENT LINESPRING
  386. C
  387. SEGACT MELEME
  388. NBNN =NUM(/1)
  389. NBELEM=NUM(/2)
  390. IPPORE=0
  391. IF(MFR.EQ.33) IPPORE=NBNN
  392.  
  393. C CREATION DU MCHAML DE LA SOUS ZONE
  394. C
  395. C INIT DU MELVAL DEVANT CONTENIR LES FORCES DE PRESSION
  396. C
  397. N1PTEL=4
  398. N1EL=NBELEM
  399. N2PTEL=0
  400. N2EL=0
  401. C
  402. N2=NFOR
  403. SEGINI MCHAML
  404. ICHAML(ISOUS)=MCHAML
  405. NS=1
  406. NCOSOU=NFOR
  407. SEGINI MPTVAL
  408. IVAFOR=MPTVAL
  409. NOMID=MOFORC
  410. DO 1100 ICOMP=1,NFOR
  411. NOMCHE(ICOMP)=LESOBL(ICOMP)
  412. TYPCHE(ICOMP)='REAL*8'
  413. SEGINI MELVAL
  414. IELVAL(ICOMP)=MELVAL
  415. IVAL(ICOMP)=MELVAL
  416. 1100 CONTINUE
  417. C
  418. C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES POUR LES LINESPRING
  419. C
  420. NBROBL=5
  421. NBRFAC=0
  422. SEGINI NOMID
  423. MOCARA=NOMID
  424. LESOBL(1)='EPAI'
  425. LESOBL(2)='FISS'
  426. LESOBL(3)='VX '
  427. LESOBL(4)='VY '
  428. LESOBL(5)='VZ '
  429. IF (JPMAIL.NE.0) THEN
  430. C
  431. C ON RECUPERE LE IMAMOD DU MMODEL D'ORIGINE POUR QUE LE
  432. C DONNE CORRESPONDE A CELUI DE IPCHE21
  433. C
  434. DO 60 KISOUS=1,NSOUS1
  435. IF (IPMAIL.EQ.MAIL2(KISOUS)) THEN
  436. IPMAI1=MAIL1(KISOUS)
  437. GOTO 61
  438. ENDIF
  439. 60 CONTINUE
  440. C
  441. C NE DOIT NORMALEMENT JAMAIS SE PRODUIRE
  442. C
  443. CALL ERREUR (472)
  444. GOTO 9990
  445. ELSE
  446. IPMAI1=IPMAIL
  447. ENDIF
  448. 61 CONTINUE
  449.  
  450. CALL KOMCHA(IPCHE2,IPMAI1,CONM,MOCARA,MOTYR8,
  451. 1 1,INFOS,3,IVACAR)
  452. IF (IERR.NE.0) GOTO 9990
  453. C
  454. NCARA=NBROBL
  455. NCARF=NBRFAC
  456. NCARR=NCARA+NCARF
  457. C
  458. IF (ISUP.EQ.1) THEN
  459. CALL VALCHE(IVACAR,NCARR,IPTINT,IPPORE,MOCARA,MELE)
  460. ENDIF
  461. C
  462. C ELEMENT LINESPRING
  463. C
  464. CALL FPLISP(IPTVPR,IPTGEO,IPTINT,IVACAR,IVAFOR)
  465. C
  466. C DESACTIVATION DES SEGMENT PROPRE A LA GEOMETRIE ISOUS
  467. C
  468. SEGDES,MINTE
  469. SEGDES IMODEL
  470. SEGDES MCHAML
  471. C
  472. IF (ISUP.EQ.1) THEN
  473. CALL DTMVAL(IVACAR,3)
  474. ELSE
  475. CALL DTMVAL(IVACAR,1)
  476. ENDIF
  477. C
  478. CALL DTMVAL(IVAFOR,1)
  479. C
  480. CALL DTMVAL(IVASCA,1)
  481. C
  482. NOMID=MOFORC
  483. if(lsupfo)SEGSUP NOMID
  484. NOMID=MOCARA
  485. SEGSUP NOMID
  486. C
  487. SEGDES MELEME
  488. C
  489. 500 CONTINUE
  490. SEGDES MMODEL
  491. IF (IFLAG.EQ.0) CALL DTMODL(IPMOD)
  492. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  493. C
  494. NOTYPE = MOTYR8
  495. SEGSUP NOTYPE
  496. NOMID = MOSCAL
  497. SEGSUP NOMID
  498. C
  499. C ON TRANSFORME LE CHAM/ELEM EN CHAM/POIN
  500. C
  501. C* SEGDES MCHELM
  502. CALL CHAMPO(IPCHEL,0,IPTFP,IRETOU)
  503. CALL DTCHAM(IPCHEL)
  504. IF (IRETOU.EQ.0) RETURN
  505. C
  506. C ON COMPARE LE SENS DE LA FORCE AU SENS DU VECTEUR AU POINT INDIQUE
  507. C
  508. MCHPOI=IPTFP
  509. SEGACT MCHPOI
  510. DO 201 I=1,IPCHP(/1)
  511. MSOUPO=IPCHP(I)
  512. SEGACT MSOUPO
  513. MELEME=IGEOC
  514. SEGACT MELEME
  515. DO 202 K=1,NUM(/2)
  516. IF (NUM(1,K).EQ.IPPOIN) GO TO 205
  517. 202 CONTINUE
  518. SEGDES MSOUPO,MELEME
  519. 201 CONTINUE
  520. C
  521. C LE POINT DONNE N APPARTIENT PAS A LA STRUCTURE
  522. C
  523. INTERR(1)=IPPOIN
  524. MOTERR(1:8)=' '
  525. CALL ERREUR(64)
  526. SEGDES MCHPOI
  527. RETURN
  528. C
  529. 205 CONTINUE
  530. SEGDES MELEME
  531. MPOVAL=IPOVAL
  532. SEGACT MPOVAL
  533. FN2=ZERO
  534. DO 210 J=1,IDIM
  535. r_z = VPOCHA(K,J)
  536. FN2=FN2 + r_z*r_z
  537. TEST=TEST+ V(J)*r_z
  538. 210 CONTINUE
  539. FN=SQRT(FN2)
  540. SEGDES MPOVAL,MSOUPO,MCHPOI
  541. C
  542. C ERREUR IMPOSSIBLE D ORIENTER LES FORCES DE PRESSION
  543. C
  544. IF (ABS(TEST).LE.0.025*FN) THEN
  545. CALL ERREUR(192)
  546. RETURN
  547. ENDIF
  548. IF (TEST.LE.0.) THEN
  549. XFLOT=-UN
  550. CALL MUCHPO(IPTFP,XFLOT,IPTFP0,1)
  551. CALL DTCHPO(IPTFP)
  552. IPTFP=IPTFP0
  553. ENDIF
  554. IRET = 1
  555. RETURN
  556. C
  557. C ERREUR DANS UNE SOUS ZONE / DESACTIVATION ET RETOUR
  558. C
  559. 9990 CONTINUE
  560. IRET=0
  561. IF (IFLAG.EQ.0) CALL DTMODL(IPMOD)
  562. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  563. C
  564. SEGSUP MCHELM
  565. C
  566. IF (ISUP.EQ.1) THEN
  567. CALL DTMVAL(IVACAR,3)
  568. ELSE
  569. CALL DTMVAL(IVACAR,1)
  570. ENDIF
  571. C
  572. CALL DTMVAL(IVAFOR,3)
  573. C
  574. CALL DTMVAL(IVASCA,1)
  575. C
  576. NOMID=MOCARA
  577. IF (MOCARA.NE.0) SEGSUP NOMID
  578. NOMID=MOFORC
  579. IF (lsupfo.and.MOFORC.NE.0) SEGSUP NOMID
  580. C
  581. SEGDES,MINTE
  582. SEGDES IMODEL
  583. SEGDES MMODEL
  584.  
  585. RETURN
  586. END
  587.  
  588.  
  589.  

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