Télécharger fpco2d.eso

Retour à la liste

Numérotation des lignes :

fpco2d
  1. C FPCO2D SOURCE JK148537 24/12/11 21:15:02 12096
  2. SUBROUTINE FPCO2D(IPTVPR,IPMAIL,IVAFOR,IVACAR)
  3. *____________________________________________________________________
  4. *
  5. * CALCULE LES FORCES DE PRESSIONS SUR LES FACES D ELEMENTS
  6. * COQUES BIDIMENSIONNELS
  7. *
  8. *
  9. * ENTREES :
  10. * ---------
  11. *
  12. * IPTVPR POINTEUR SUR UN MELVAL CONTENANT LES PRESSIONS APPLIQUEES
  13. * (actif)
  14. * IPMAIL POINTEUR SUR UN OBJET GEOMETRIQUE (actif)
  15. * IVAFOR POINTEUR SUR UN MPTVAL ET UN MELVAL DEVANT CONTENIR LES
  16. * FORCES NODALES RESULTANTES
  17. *
  18. *
  19. * JACQUELINE BROCHARD AVRIL 85
  20. * PASSAGE AUX NOUVEAU CHAMELEM PAR JM CAMPENON LE 12 09 90
  21. * REPRISE MILL AVRIL 91 ON SUPPOSE QUE LES PRESSIONS SONT
  22. * DONNEES AUX NOEUDS
  23. *____________________________________________________________________
  24. IMPLICIT INTEGER(I-N)
  25. IMPLICIT REAL*8(A-H,O-Z)
  26. *
  27. -INC CCREEL
  28. -INC SMCHAML
  29. -INC SMELEME
  30. -INC SMCOORD
  31.  
  32. -INC PPARAM
  33. -INC CCOPTIO
  34. *
  35. SEGMENT MPTVAL
  36. INTEGER IPOS(NS) ,NSOF(NS)
  37. INTEGER IVAL(NCOSOU)
  38. CHARACTER*16 TYVAL(NCOSOU)
  39. ENDSEGMENT
  40. *
  41. DIMENSION XE(3,3)
  42. *
  43. MELVA1=IPTVPR
  44. *
  45. MELEME=IPMAIL
  46. SEGACT MELEME
  47. NBELEM=NUM(/2)
  48. IGMN=MIN(2,MELVA1.VELCHE(/1))
  49. DIM3=1.D0
  50. *
  51. * BOUCLE SUR LES ELEMENTS
  52. *
  53. DO 1 IB=1,NBELEM
  54. C
  55. C RECUPERATION DE L'EPAISSEUR
  56. C
  57. IF (IFOUR.EQ.-2) THEN
  58. MPTVAL=IVACAR
  59. IF (IVACAR.NE.0) THEN
  60. C
  61. C DIM3 EST LA DERNIERE COMPOSANTE DE IVACAR
  62. C (CF FPCOQU ET BSIGMP)
  63. C
  64. MELVAL=IVAL(IVAL(/1))
  65. IF (MELVAL.NE.0) THEN
  66. IBMN=MIN(IB,VELCHE(/2))
  67. DIM3=VELCHE(IGMN,IBMN)
  68. ENDIF
  69. ENDIF
  70. ENDIF
  71. *
  72. CALL DOXE(XCOOR,IDIM,2,NUM,IB,XE)
  73. IF (IDIM.EQ.3) THEN
  74. R1=XE(1,1)
  75. R2=XE(1,2)
  76. Z1=XE(3,1)
  77. Z2=XE(3,2)
  78. ELSE
  79. R1=XE(1,1)
  80. R2=XE(1,2)
  81. Z1=XE(2,1)
  82. Z2=XE(2,2)
  83. ENDIF
  84. *
  85. D2=(R2-R1)*(R2-R1)+(Z2-Z1)*(Z2-Z1)
  86. D=SQRT(D2)
  87. UNSD=1.D0/D
  88. A=(R2-R1)*UNSD
  89. B=(Z2-Z1)*UNSD
  90. IF(IFOUR.LT.0) THEN
  91. R1=1.D0
  92. R2=1.D0
  93. ELSEIF(IFOUR.EQ.0.OR.(IFOUR.EQ.1.AND.
  94. + NIFOUR.EQ.0)) THEN
  95. R1=2*XPI*R1
  96. R2=2*XPI*R2
  97. ELSEIF(IFOUR.EQ.1.AND.NIFOUR.NE.0) THEN
  98. R1=XPI*R1
  99. R2=XPI*R2
  100. ENDIF
  101. IF (IFOUR.EQ.-2) THEN
  102. R1=R1*DIM3
  103. R2=R2*DIM3
  104. ENDIF
  105. IF(IFOUR.LE.0) IFO=0
  106. IF(IFOUR.EQ.1) IFO=1
  107. *
  108. IBMN=MIN(IB,MELVA1.VELCHE(/2))
  109. P1=MELVA1.VELCHE(1,IBMN)
  110. P2=MELVA1.VELCHE(IGMN,IBMN)
  111. *
  112. PA=P1*R1
  113. PB=P1*R2+P2*R1-2.D0*P1*R1
  114. PC=(P2-P1)*(R2-R1)
  115. *
  116. FP1=D*(PA*0.5D0+PB*0.15D0+PC/15.D0)
  117. XO1=D2*(PA/12.D0+PB/30.D0+PC/60.D0)
  118. FP2=D*(PA*0.5D0+PB*0.35D0+PC*4.D0/15.D0)
  119. XO2=-D2*(PA/12.D0+PB/20.D0+PC/30.D0)
  120. *
  121. MPTVAL=IVAFOR
  122. MELVAL=IVAL(1)
  123. VELCHE(1,IB)=-B*FP1
  124. VELCHE(2,IB)=-B*FP2
  125. *
  126. MELVAL=IVAL(2)
  127. VELCHE(1,IB)=A*FP1
  128. VELCHE(2,IB)=A*FP2
  129. *
  130. MELVAL=IVAL(3+IFO)
  131. VELCHE(1,IB)=XO1
  132. VELCHE(2,IB)=XO2
  133. *
  134. 1 CONTINUE
  135. RETURN
  136. END
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  

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