Télécharger fpfiss.eso

Retour à la liste

Numérotation des lignes :

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

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