Télécharger kpsoml.eso

Retour à la liste

Numérotation des lignes :

kpsoml
  1. C KPSOML SOURCE PV 22/04/21 21:15:06 11344
  2. SUBROUTINE KPSOML
  3. C************************************************************************
  4. C
  5. C OBJET :
  6. C
  7. C CALCUL DE LA MATRICE MASSE ---> Creation d'un CHAML
  8. C
  9. C
  10. C SYNTAXE :
  11. C
  12. C RES = KPSO OBJ1 <'AXI' i> <'IMPR'> ;
  13. C
  14. C OBJ1 : Table DOMAINE
  15. C
  16. C AXI : Calcule en coordonee cylindrique 2D
  17. C i=2 axe de symetrie oy
  18. C
  19. C
  20. C************************************************************************
  21. IMPLICIT INTEGER(I-N)
  22. IMPLICIT REAL*8 (A-H,O-Z)
  23. -INC CCGEOME
  24.  
  25. -INC PPARAM
  26. -INC CCOPTIO
  27. -INC SMELEME
  28. -INC SMTABLE
  29. -INC SMCOORD
  30. -INC SMCHAML
  31. -INC SMCHPOI
  32. -INC SIZFFB
  33. dimension mtabd(1)
  34. CHARACTER*8 NOM0,CHAI,LISMO(1),TYPE,TYPC
  35. DATA LISMO/'IMPR '/
  36. C ***************************************************************
  37.  
  38. IMPR=0
  39. IAXI=0
  40. IF(IFOMOD.EQ.0)IAXI=2
  41.  
  42. CALL LITABS('DOMAINE ',MTABD,1,1,IRET)
  43. IF(IRET.EQ.0)THEN
  44. WRITE(6,*)' On attend une table de soustype DOMAINE'
  45. RETURN
  46. ENDIF
  47. TYPE=' '
  48. CALL ACMO(MTABD(1),'MAILLAGE',TYPE,MELEME)
  49. IF(TYPE.NE.'MAILLAGE')RETURN
  50.  
  51. 19 CONTINUE
  52. CALL LIRCHA(CHAI,0,IRET)
  53. IF(IRET.EQ.0)GO TO 20
  54. CALL OPTLI(IP,LISMO,CHAI,1)
  55. IF(IP.EQ.0)THEN
  56. WRITE(6,*)' On attend le mot cle IMPR '
  57. RETURN
  58. ENDIF
  59. IMPR=1
  60. GO TO 19
  61.  
  62. 20 CONTINUE
  63.  
  64.  
  65. C CREATION DE LA DIAGONALE
  66. CALL CRCHPE(MELEME,1,MCHELM)
  67. SEGACT MCHELM
  68. NBSOUS=IMACHE(/1)
  69.  
  70.  
  71. C
  72. C BOUCLE SUR LES TYPES D'ELEMENTS ET CALCUL
  73. C
  74. DO 1 KSOUS=1,NBSOUS
  75. MCHAML=ICHAML(KSOUS)
  76. SEGACT MCHAML
  77. MELVAL=IELVAL(1)
  78. SEGACT MELVAL*MOD
  79. IPT1=IMACHE(KSOUS)
  80. SEGACT IPT1
  81.  
  82. NP=IPT1.NUM(/1)
  83. NEL=IPT1.NUM(/2)
  84. C
  85. NOM0=NOMS(IPT1.ITYPEL)//' '
  86. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  87. SEGACT IZFFM*MOD
  88. IZHR=KZHR(1)
  89. SEGACT IZHR*MOD
  90. C
  91. NPG=FN(/2)
  92. NES=GR(/1)
  93.  
  94. IF(IMPR.NE.0)THEN
  95. WRITE(6,*)' SUB CADGSI : NES,NP,NPG,IDIM,NEL='
  96. & ,NES,NP,NPG,IDIM,NEL
  97. ENDIF
  98. C
  99. DO 10 K=1,NEL
  100. C
  101. NPGR=0
  102. IF(IAXI.NE.0)NPGR=NPG
  103. C
  104. DO 12 I=1,NP
  105. J=IPT1.NUM(I,K)
  106. DO 12 N=1,IDIM
  107. XYZ(N,I)=XCOOR((J-1)*(IDIM+1) +N)
  108. 12 CONTINUE
  109.  
  110. CALL CALJBC(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,AIRE)
  111.  
  112. IF(IMPR.NE.0)THEN
  113. WRITE(6,*)' SUB kpsoml : AIRE=',AIRE
  114. WRITE(6,*)' SUB kpsoml : LER '
  115. WRITE(6,1001)(IPT1.NUM(I,K),I=1,NP)
  116. WRITE(6,*)' SUB kpsoml : XYZ '
  117. WRITE(6,1002)((XYZ(N,I),N=1,2),I=1,NP)
  118. ENDIF
  119. C
  120. DO 3 J=1,NP
  121. SJ=0.D0
  122. DO 4 L=1,NPG
  123. 4 SJ=SJ+FN(J,L)*PGSQ(L)
  124. 3 VELCHE(J,K)=SJ
  125.  
  126. IF(IMPR.NE.0)THEN
  127. WRITE(6,*)' SUB CADGSI : CALCUL DE LA DIAGONALE'
  128. WRITE(6,1003)(K,VELCHE(I,K),I=1,NP)
  129. WRITE(6,*)' FIN DE CADGSI'
  130. ENDIF
  131. C
  132. 10 CONTINUE
  133. SEGDES MELVAL,MCHAML
  134. SEGDES IPT1
  135. SEGSUP IZFFM,IZHR
  136. 1 CONTINUE
  137.  
  138. SEGDES MCHELM
  139. CALL ECROBJ('MCHAML ',MCHELM)
  140. RETURN
  141. 1001 FORMAT(20(1X,I5))
  142. 1002 FORMAT(10(1X,1PE11.4))
  143. 1003 FORMAT(6(1X,I7,1X,1PE11.4))
  144. END
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  

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