Télécharger kpriss.eso

Retour à la liste

Numérotation des lignes :

kpriss
  1. C KPRISS SOURCE PV 20/09/28 21:15:19 10727
  2. SUBROUTINE KPRISS(MELEME,IPM1,IPM2,IPM3,IAXI,IKAS,MACRO,KPRE)
  3. IMPLICIT INTEGER(I-N)
  4. IMPLICIT REAL*8 (A-H,O-Z)
  5. C*****************************************************************************
  6. C
  7. C Ce SP calcule les matrices elementaires de divergence alias C
  8. C
  9. C*****************************************************************************
  10. CHARACTER*8 NOM0
  11.  
  12.  
  13. -INC PPARAM
  14. -INC CCOPTIO
  15. -INC CCGEOME
  16. -INC SMCOORD
  17. -INC SIZFFB
  18. POINTEUR IZF1.IZFFM
  19. -INC SMELEME
  20. -INC CCREEL
  21. DIMENSION KIPM(3),XYZ1(24)
  22.  
  23.  
  24. C OPERATEUR PRESSION
  25. C
  26. DEUPI=1.D0
  27. IF(IAXI.NE.0)DEUPI=2.D0*XPI
  28.  
  29. C write(6,*)' DEUPI=',deupi
  30. IF(IDIM.EQ.2)IPM3=IPM1
  31. KIPM(1)=IPM1
  32. KIPM(2)=IPM2
  33. KIPM(3)=IPM3
  34. SEGACT MELEME,IPM1*MOD,IPM2*MOD,IPM3*MOD
  35.  
  36. NP=NUM(/1)
  37. NEL=NUM(/2)
  38.  
  39. IF(KPRE.NE.2)THEN
  40. IF(MACRO.EQ.0)THEN
  41. IF(KPRE.EQ.3)NOM0=NOMS(ITYPEL)//'PRP0'
  42. IF(KPRE.EQ.4)NOM0=NOMS(ITYPEL)//'PRP1'
  43. ELSE
  44. IF(KPRE.EQ.3)NOM0=NOMS(ITYPEL)//'MCP0'
  45. IF(KPRE.EQ.4)NOM0=NOMS(ITYPEL)//'MCP1'
  46. ENDIF
  47. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  48. C write(6,*)' NOM0=',nom0,' ikas=',ikas,' nel=',nel
  49.  
  50. SEGACT IZFFM*MOD
  51. IZHR=KZHR(1)
  52. SEGACT IZHR*MOD
  53. NES=GR(/1)
  54. NPG=GR(/3)
  55. IZF1=KTP(1)
  56. SEGACT IZF1*MOD
  57. MP1=IZF1.FN(/1)
  58.  
  59. DO 30 KE=1,NEL
  60. DO I=1,NP
  61. J=NUM(I,KE)
  62. DO N=1,IDIM
  63. XYZ(N,I)=XCOOR((J-1)*(IDIM+1) +N)
  64. ENDDO
  65. ENDDO
  66.  
  67. CALL CALJBR
  68. &(FN,GR,PG,XYZ,HR,PGSQ,RPG,NES,IDIM,NP,NPG,IAXI,AIRE,AJ,SGN)
  69. C write(6,*)' Retour caljbr ',mp1,np,npg
  70.  
  71. DO 324 K=1,IDIM
  72. IPM4=KIPM(K)
  73.  
  74. DO M=1,MP1
  75.  
  76. DO I=1,NP
  77. U=0.D0
  78. DO 333 L=1,NPG
  79. U=U+IZF1.FN(M,L)*HR(K,I,L)*PGSQ(L)*DEUPI*RPG(L)
  80. 333 CONTINUE
  81.  
  82. IF(IAXI.NE.0.AND.K.EQ.1)THEN
  83. DO 334 L=1,NPG
  84. U=U+IZF1.FN(M,L)*FN(I,L)*PGSQ(L)*DEUPI
  85. 334 CONTINUE
  86. ENDIF
  87.  
  88. if(ikas.ne.2)then
  89. IPM4.AM(KE,I,M)=IPM4.AM(KE,I,M)+U
  90. else
  91. IPM4.AM(KE,M,I)=IPM4.AM(KE,M,I)+U
  92. endif
  93.  
  94. ENDDO
  95. ENDDO
  96. 324 CONTINUE
  97.  
  98. 37 CONTINUE
  99. 30 CONTINUE
  100.  
  101. SEGSUP IZHR,IZFFM
  102.  
  103.  
  104. C CAS MACRO CENTRE
  105.  
  106. ELSEIF(KPRE.EQ.2)THEN
  107. NOM0=NOMS(ITYPEL)//' '
  108. CALL KALPBG(NOM0,'FONFORM ',IZFFM)
  109.  
  110. SEGACT IZFFM*MOD
  111. IZHR=KZHR(1)
  112. SEGACT IZHR*MOD
  113. NES=GR(/1)
  114. NPG=GR(/3)
  115. IZF1=KTP(1)
  116. SEGACT IZF1*MOD
  117. MPG=IZF1.FN(/2)
  118. NP=GR(/2)
  119.  
  120. DO 40 KE=1,NEL
  121.  
  122. IX=0
  123. DO I=1,NP
  124. J=NUM(I,KE)
  125. DO N=1,IDIM
  126. IX=IX+1
  127. XYZ1(IX)=XCOOR((J-1)*(IDIM+1) +N)
  128. ENDDO
  129. ENDDO
  130.  
  131. CALL CALJBR(FN,GR,PG,XYZ1,HR,PGSQ,RPG,NES,
  132. & IDIM,NP,NPG,IAXI,AIRE,AJ,SGN)
  133.  
  134. DO 424 K=1,IDIM
  135. IPM4=KIPM(K)
  136.  
  137. DO 423 I=1,NP
  138. U=0.D0
  139. DO 433 L=1,NPG
  140. U=U+HR(K,I,L)*PGSQ(L)*DEUPI*RPG(L)
  141. 433 CONTINUE
  142.  
  143. IF(IAXI.NE.0.AND.K.EQ.1)THEN
  144. DO 434 L=1,NPG
  145. U=U+FN(I,L)*PGSQ(L)*DEUPI
  146. 434 CONTINUE
  147. ENDIF
  148.  
  149. if(ikas.ne.2)then
  150. IPM4.AM(KE,I,1)=IPM4.AM(KE,I,1)+U
  151. else
  152. IPM4.AM(KE,1,I)=IPM4.AM(KE,1,I)+U
  153. endif
  154.  
  155. 423 CONTINUE
  156. 424 CONTINUE
  157.  
  158. 40 CONTINUE
  159.  
  160. SEGSUP IZHR,IZFFM
  161.  
  162. ENDIF
  163.  
  164. RETURN
  165. 1002 FORMAT(10(1X,1PE11.4))
  166. 1040 FORMAT(1X,'CALCUL MATRICE AM ',I4/10(1X,1PE11.4))
  167. END
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  

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