Télécharger fpfiss.eso

Retour à la liste

Numérotation des lignes :

fpfiss
  1. C FPFISS SOURCE CB215821 26/08/24 21:16:39 12622
  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 9991 IGAU=1,N1PTEL
  254. DO 9 IB=1,N1EL
  255. MELVA1.VELCHE(IGAU,IB)=P
  256. 9 CONTINUE
  257. 9991 CONTINUE
  258. SEGDES MELVA1
  259. SEGDES MCHAM1
  260. 11 CONTINUE
  261. SEGDES MCHEL1
  262. ENDIF
  263.  
  264. NBROBL=1
  265. NBRFAC=0
  266. SEGINI NOMID
  267. LESOBL(1)='SCAL'
  268. MOSCAL = NOMID
  269.  
  270. NBTYPE=1
  271. SEGINI NOTYPE
  272. TYPE(1)='REAL*8'
  273. MOTYR8 = NOTYPE
  274. C
  275. C ACTIVATION DU MODEL
  276. C
  277. MMODEL=IPMOD
  278. SEGACT MMODEL
  279. NSOUS=KMODEL(/1)
  280. C
  281. C CREATION DU MCHELM DES FORCES NODALES
  282. C
  283. N1=NSOUS
  284. L1=5
  285. N3=6
  286. SEGINI MCHELM
  287. IPCHEL=MCHELM
  288. TITCHE='FORCE'
  289. IFOCHE=IFOUR
  290. C_______________________________________________________________________
  291. C
  292. C BOUCLE SUR LES SOUS ZONES DU MAILLAGE
  293. C_______________________________________________________________________
  294. C
  295. DO 500 ISOUS=1,NSOUS
  296. C
  297. C ON RECUPERE L INFORMATION GENERALE
  298. C
  299. IMODEL=KMODEL(ISOUS)
  300. SEGACT IMODEL
  301. IPMAIL=IMAMOD
  302. CONM =CONMOD
  303. IMACHE(ISOUS)=IPMAIL
  304. C
  305. C TRAITEMENT DU MODEL
  306. C
  307. MELE=NEFMOD
  308. C
  309. C ERREUR L ELEMENT N EST PAS ENCORE IMPLEMENTE
  310. IF (MELE.NE.30) THEN
  311. MOTERR(1:4)=NOMTP(MELE)
  312. MOTERR(5:12)='FPFISS'
  313. CALL ERREUR(86)
  314. SEGDES IMODEL,MMODEL
  315. SEGSUP MCHELM
  316. IF (IFLAG.EQ.0) CALL DTMODL (IPMOD)
  317. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  318. RETURN
  319. ENDIF
  320. C
  321. MELEME=IMAMOD
  322. IPTGEO=MELEME
  323. C
  324. C INFORMATION SUR L'ELEMENT FINI
  325. C
  326. MFR =INFELE(13)
  327. * IPTINT=INFELE(11)
  328. IPTINT=infmod(5)
  329. MINTE=IPTINT
  330. SEGACT,MINTE
  331. C
  332. C CREATION DU TABLEAU INFOS
  333. C
  334. CALL IDENT(IPMAIL,CONM,IPCH1,IPCHE2,INFOS,IRTD)
  335. IF (IRTD.EQ.0) THEN
  336. SEGDES IMODEL,MMODEL
  337. SEGSUP MCHELM
  338. IF (IFLAG.EQ.0) CALL DTMODL (IPMOD)
  339. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  340. RETURN
  341. ENDIF
  342. C
  343. INFCHE(ISOUS,1)=0
  344. INFCHE(ISOUS,2)=0
  345. INFCHE(ISOUS,3)=NHRM
  346. INFCHE(ISOUS,4)=IPTINT
  347. INFCHE(ISOUS,5)=0
  348. INFCHE(ISOUS,6)=3
  349. C
  350. C RECHERCHE DU MELVAL DU CHAMELEM DE PRESSION
  351. C
  352. NCARA=0
  353. NCARF=0
  354. MOCARA=0
  355. NFOR=0
  356. MOFORC=0
  357. C
  358. CALL KOMCHA(IPCH1,IPMAIL,CONM,MOSCAL,MOTYR8,1,INFOS,3,IVASCA)
  359. IF (IERR.NE.0) GOTO 9990
  360. MPTVAL=IVASCA
  361. IPTVPR=IVAL(1)
  362. C
  363. C CALCUL DES FORCES NODALES EQUIVALENTES
  364. C BRANCHEMENT SUIVANT LE TYPE DES ELEMENTS
  365. C
  366. C RECHERCHE DES NOM DE COMPOSANTES
  367. C
  368. if(lnomid(2).ne.0) then
  369. nomid=lnomid(2)
  370. segact nomid
  371. moforc=nomid
  372. nfor=lesobl(/2)
  373. nfac=0
  374. lsupfo=.false.
  375. else
  376. lsupfo=.true.
  377. CALL IDFORC(MFR,IFOUR,MOFORC,NFOR,NFAC)
  378. endif
  379. C
  380. C ELEMENT LINESPRING
  381. C
  382. SEGACT MELEME
  383. NBNN =NUM(/1)
  384. NBELEM=NUM(/2)
  385. IPPORE=0
  386. IF(MFR.EQ.33) IPPORE=NBNN
  387.  
  388. C CREATION DU MCHAML DE LA SOUS ZONE
  389. C
  390. C INIT DU MELVAL DEVANT CONTENIR LES FORCES DE PRESSION
  391. C
  392. N1PTEL=4
  393. N1EL=NBELEM
  394. N2PTEL=0
  395. N2EL=0
  396. C
  397. N2=NFOR
  398. SEGINI MCHAML
  399. ICHAML(ISOUS)=MCHAML
  400. NSR=1
  401. NCOSOR=NFOR
  402. SEGINI MPTVAL
  403. IVAFOR=MPTVAL
  404. NOMID=MOFORC
  405. DO 1100 ICOMP=1,NFOR
  406. NOMCHE(ICOMP)=LESOBL(ICOMP)
  407. TYPCHE(ICOMP)='REAL*8'
  408. SEGINI MELVAL
  409. IELVAL(ICOMP)=MELVAL
  410. IVAL(ICOMP)=MELVAL
  411. 1100 CONTINUE
  412. C
  413. C TRAITEMENT DES CHAMPS DE CARACTERISTIQUES POUR LES LINESPRING
  414. C
  415. NBROBL=5
  416. NBRFAC=0
  417. SEGINI NOMID
  418. MOCARA=NOMID
  419. LESOBL(1)='EPAI'
  420. LESOBL(2)='FISS'
  421. LESOBL(3)='VX '
  422. LESOBL(4)='VY '
  423. LESOBL(5)='VZ '
  424. IF (JPMAIL.NE.0) THEN
  425. C
  426. C ON RECUPERE LE IMAMOD DU MMODEL D'ORIGINE POUR QUE LE
  427. C DONNE CORRESPONDE A CELUI DE IPCHE21
  428. C
  429. DO 60 KISOUS=1,NSOUS1
  430. IF (IPMAIL.EQ.MAIL2(KISOUS)) THEN
  431. IPMAI1=MAIL1(KISOUS)
  432. GOTO 61
  433. ENDIF
  434. 60 CONTINUE
  435. C
  436. C NE DOIT NORMALEMENT JAMAIS SE PRODUIRE
  437. C
  438. CALL ERREUR (472)
  439. GOTO 9990
  440. ELSE
  441. IPMAI1=IPMAIL
  442. ENDIF
  443. 61 CONTINUE
  444.  
  445. CALL KOMCHA(IPCHE2,IPMAI1,CONM,MOCARA,MOTYR8,
  446. 1 1,INFOS,3,IVACAR)
  447. IF (IERR.NE.0) GOTO 9990
  448. C
  449. NCARA=NBROBL
  450. NCARF=NBRFAC
  451. NCARR=NCARA+NCARF
  452. C
  453. IF (ISUP.EQ.1) THEN
  454. CALL VALCHE(IVACAR,NCARR,IPTINT,IPPORE,MOCARA,MELE)
  455. ENDIF
  456. C
  457. C ELEMENT LINESPRING
  458. C
  459. CALL FPLISP(IPTVPR,IPTGEO,IPTINT,IVACAR,IVAFOR)
  460. C
  461. C DESACTIVATION DES SEGMENT PROPRE A LA GEOMETRIE ISOUS
  462. C
  463. SEGDES,MINTE
  464. SEGDES IMODEL
  465. SEGDES MCHAML
  466. C
  467. IF (ISUP.EQ.1) THEN
  468. CALL DTMVAL(IVACAR,3)
  469. ELSE
  470. CALL DTMVAL(IVACAR,1)
  471. ENDIF
  472. C
  473. CALL DTMVAL(IVAFOR,1)
  474. C
  475. CALL DTMVAL(IVASCA,1)
  476. C
  477. NOMID=MOFORC
  478. if(lsupfo)SEGSUP NOMID
  479. NOMID=MOCARA
  480. SEGSUP NOMID
  481. C
  482. SEGDES MELEME
  483. C
  484. 500 CONTINUE
  485. SEGDES MMODEL
  486. IF (IFLAG.EQ.0) CALL DTMODL(IPMOD)
  487. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  488. C
  489. NOTYPE = MOTYR8
  490. SEGSUP NOTYPE
  491. NOMID = MOSCAL
  492. SEGSUP NOMID
  493. C
  494. C ON TRANSFORME LE CHAM/ELEM EN CHAM/POIN
  495. C
  496. C* SEGDES MCHELM
  497. CALL CHAMPO(IPCHEL,0,IPTFP,IRETOU)
  498. CALL DTCHAM(IPCHEL)
  499. IF (IRETOU.EQ.0) RETURN
  500. C
  501. C ON COMPARE LE SENS DE LA FORCE AU SENS DU VECTEUR AU POINT INDIQUE
  502. C
  503. MCHPOI=IPTFP
  504. SEGACT MCHPOI
  505. DO 201 I=1,IPCHP(/1)
  506. MSOUPO=IPCHP(I)
  507. SEGACT MSOUPO
  508. MELEME=IGEOC
  509. SEGACT MELEME
  510. DO 202 K=1,NUM(/2)
  511. IF (NUM(1,K).EQ.IPPOIN) GO TO 205
  512. 202 CONTINUE
  513. SEGDES MSOUPO,MELEME
  514. 201 CONTINUE
  515. C
  516. C LE POINT DONNE N APPARTIENT PAS A LA STRUCTURE
  517. C
  518. INTERR(1)=IPPOIN
  519. MOTERR(1:8)=' '
  520. CALL ERREUR(64)
  521. SEGDES MCHPOI
  522. RETURN
  523. C
  524. 205 CONTINUE
  525. SEGDES MELEME
  526. MPOVAL=IPOVAL
  527. SEGACT MPOVAL
  528. FN2=ZERO
  529. DO 210 J=1,IDIM
  530. r_z = VPOCHA(K,J)
  531. FN2=FN2 + r_z*r_z
  532. TEST=TEST+ V(J)*r_z
  533. 210 CONTINUE
  534. FN=SQRT(FN2)
  535. SEGDES MPOVAL,MSOUPO,MCHPOI
  536. C
  537. C ERREUR IMPOSSIBLE D ORIENTER LES FORCES DE PRESSION
  538. C
  539. IF (ABS(TEST).LE.0.025*FN) THEN
  540. CALL ERREUR(192)
  541. RETURN
  542. ENDIF
  543. IF (TEST.LE.0.) THEN
  544. XFLOT=-UN
  545. CALL MUCHPO(IPTFP,XFLOT,IPTFP0,1)
  546. CALL DTCHPO(IPTFP)
  547. IPTFP=IPTFP0
  548. ENDIF
  549. IRET = 1
  550. RETURN
  551. C
  552. C ERREUR DANS UNE SOUS ZONE / DESACTIVATION ET RETOUR
  553. C
  554. 9990 CONTINUE
  555. IRET=0
  556. IF (IFLAG.EQ.0) CALL DTMODL(IPMOD)
  557. IF (JPMAIL.NE.0) SEGSUP JPMAIL
  558. C
  559. SEGSUP MCHELM
  560. C
  561. IF (ISUP.EQ.1) THEN
  562. CALL DTMVAL(IVACAR,3)
  563. ELSE
  564. CALL DTMVAL(IVACAR,1)
  565. ENDIF
  566. C
  567. CALL DTMVAL(IVAFOR,3)
  568. C
  569. CALL DTMVAL(IVASCA,1)
  570. C
  571. NOMID=MOCARA
  572. IF (MOCARA.NE.0) SEGSUP NOMID
  573. NOMID=MOFORC
  574. IF (lsupfo.and.MOFORC.NE.0) SEGSUP NOMID
  575. C
  576. SEGDES,MINTE
  577. SEGDES IMODEL
  578. SEGDES MMODEL
  579.  
  580. RETURN
  581. END
  582.  
  583.  
  584.  
  585.  

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