Télécharger kpsoml.eso

Retour à la liste

Numérotation des lignes :

kpsoml
  1. C KPSOML SOURCE CB215821 26/08/24 21:17:05 12622
  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 1004 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. 1004 CONTINUE
  110.  
  111. CALL CALJBC(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,AIRE)
  112.  
  113. IF(IMPR.NE.0)THEN
  114. WRITE(6,*)' SUB kpsoml : AIRE=',AIRE
  115. WRITE(6,*)' SUB kpsoml : LER '
  116. WRITE(6,1001)(IPT1.NUM(I,K),I=1,NP)
  117. WRITE(6,*)' SUB kpsoml : XYZ '
  118. WRITE(6,1002)((XYZ(N,I),N=1,2),I=1,NP)
  119. ENDIF
  120. C
  121. DO 3 J=1,NP
  122. SJ=0.D0
  123. DO 4 L=1,NPG
  124. SJ=SJ+FN(J,L)*PGSQ(L)
  125. 4 CONTINUE
  126. VELCHE(J,K)=SJ
  127. 3 CONTINUE
  128.  
  129. IF(IMPR.NE.0)THEN
  130. WRITE(6,*)' SUB CADGSI : CALCUL DE LA DIAGONALE'
  131. WRITE(6,1003)(K,VELCHE(I,K),I=1,NP)
  132. WRITE(6,*)' FIN DE CADGSI'
  133. ENDIF
  134. C
  135. 10 CONTINUE
  136. SEGDES MELVAL,MCHAML
  137. SEGDES IPT1
  138. SEGSUP IZFFM,IZHR
  139. 1 CONTINUE
  140.  
  141. SEGDES MCHELM
  142. CALL ECROBJ('MCHAML ',MCHELM)
  143. RETURN
  144. 1001 FORMAT(20(1X,I5))
  145. 1002 FORMAT(10(1X,1PE11.4))
  146. 1003 FORMAT(6(1X,I7,1X,1PE11.4))
  147. END
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  

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