Télécharger fpma1d.eso

Retour à la liste

Numérotation des lignes :

fpma1d
  1. C FPMA1D SOURCE JK148537 24/11/05 21:15:02 12066
  2.  
  3. C=======================================================================
  4. C= Calcul des forces de pressions s'exercant sur les faces d elements =
  5. C= massifs unidimensionnels (1D) =
  6. C= =
  7. C= IPTVPR Pointeur sur un MELVAL contenant les pressions appliquees =
  8. C= =0 si on a donne une valeur constante =
  9. C= IPMAIL Pointeur sur un MELEME de l'ENVELOPPE =
  10. C= IPTINT Pointeur sur un MINTE des caracteristiques d'integration =
  11. C= (ACTIF en ENTREE et en SORTIE sans modification) =
  12. C= IVAFOR Pointeur sur un MPTVAL (MELVAL) contenant les forces =
  13. C= nodales equivalentes =
  14. C= XP Valeur de la pression si constante =
  15. C=======================================================================
  16.  
  17. SUBROUTINE FPMA1D (IPTVPR,IPMAIL,IPTINT,IVAFOR,XP)
  18.  
  19. IMPLICIT INTEGER(I-N)
  20. IMPLICIT REAL*8 (A-H,O-Z)
  21.  
  22.  
  23. -INC PPARAM
  24. -INC CCOPTIO
  25. -INC CCREEL
  26. -INC SMCHAML
  27. -INC SMELEME
  28. -INC SMINTE
  29. -INC SMCOORD
  30.  
  31. C
  32. segment netn(nbpts+1)
  33. segment ietn(letn)
  34. C
  35. SEGMENT WORK
  36. REAL*8 XE(3,NBNN)
  37. ENDSEGMENT
  38.  
  39. SEGMENT MPTVAL
  40. INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU)
  41. CHARACTER*16 TYVAL(NCOSOU)
  42. ENDSEGMENT
  43. real*8 v(1)
  44. C= Quelques constantes (2.Pi et 4.Pi)
  45. PARAMETER (X2Pi=6.283185307179586476925286766559D0)
  46. PARAMETER (X4Pi=12.566370614359172953850573533118D0)
  47.  
  48. IF (IPTVPR.NE.0) THEN
  49. MELVA1=IPTVPR
  50. SEGACT,MELVA1
  51. IVA12=MELVA1.VELCHE(/2)
  52. ENDIF
  53.  
  54. MINTE=IPTINT
  55. C* SEGACT,MINTE <- ACTIF en E/S
  56. NBPGAU=POIGAU(/1)
  57.  
  58. C
  59. idimp1 = IDIM +1
  60. netn = netn1
  61. ietn = ietn1
  62. C
  63. ipt1 = ipmaim
  64. MELEME=IPMAIL
  65. SEGACT,MELEME
  66. NBNN=NUM(/1)
  67. NBELEM=NUM(/2)
  68.  
  69. C*OF IF ((NBPGAU.NE.1).OR.(NBNN.NE.1)) THEN
  70. C*OF WRITE(6,*) 'ERREUR FATALE : FPMA1D'
  71. C*OF RETURN
  72. C*OF ENDIF
  73.  
  74. SEGINI,WORK
  75.  
  76. MPTVAL=IVAFOR
  77. MELVAL=IVAL(1)
  78. C= BOUCLE SUR LES ELEMENTS
  79. DO iElt=1,NBELEM
  80. xflot = 1d0
  81. if (netn1.ne.0) then
  82. do 160 inf=1,num(/1)
  83. ip=num(inf,ielt)
  84. id=netn(ip)+1
  85. if=netn(ip+1)
  86. do 165 itn=id,if
  87. iem=ietn(itn)
  88. jne=0
  89. do 166 i0=1,num(/1)
  90. do 166 i1=1,ipt1.num(/1)
  91. if (num(i0,ielt).eq.ipt1.num(i1,iem)) jne=jne+1
  92. 166 continue
  93. if (jne.eq.num(/1)) goto 170
  94. 165 continue
  95. 160 continue
  96. CALL ERREUR(26)
  97. C IF(JPMAIL.EQ.0.AND.IPCHM1.EQ.0) CALL DTMODL(IPMOD1)
  98. C GOTO 9990
  99. 170 CONTINUE
  100. NBM=IPT1.NUM(/1)
  101. NBMA1=NUM(/1)
  102. XG=0.D0
  103. DO INM=1,NBM
  104. IREFM=(IPT1.NUM(INM,IEM)-1)*idimp1
  105. XG=XG+XCOOR(IREFM+1)
  106. ENDDO
  107. XG=XG/NBM
  108. XK=0.D0
  109. DO INF=1,NBMA1
  110. IREFF=(NUM(INF,IEF)-1)*idimp1
  111. XK=XK+XCOOR(IREFF+1)
  112. ENDDO
  113. XK=XK/NBMA1
  114. V(1)=XG-XK
  115. VN=ABS(V(1))
  116. V(1)=V(1)/VN
  117. endif
  118. if (v(1).le.0d0) xflot =-1d0
  119. CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE)
  120. C= Cas des elements AXISymetriques et SPHEriques
  121. IF (IFOUR.GE.12.AND.IFOUR.LE.14) THEN
  122. T1=X2Pi*XE(1,1)
  123. ELSE IF (IFOUR.EQ.15) THEN
  124. RR=XE(1,1)
  125. T1=X4Pi*RR*RR
  126. ELSE
  127. T1=1.
  128. ENDIF
  129. IF (IPTVPR.NE.0) THEN
  130. IEMN=MIN(iElt,IVA12)
  131. T1=MELVA1.VELCHE(1,IEMN)*T1*xflot
  132. ELSE
  133. T1=XP*T1*xflot
  134. ENDIF
  135. VELCHE(1,iElt)=VELCHE(1,iElt)+T1
  136. ENDDO
  137.  
  138. SEGSUP,WORK
  139.  
  140. C* SEGDES,MINTE <- ACTIF en E/S
  141. SEGDES,MELEME
  142. IF (IPTVPR.NE.0) SEGDES,MELVA1
  143.  
  144. RETURN
  145. END
  146.  
  147.  
  148.  
  149.  

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