Télécharger calj22.eso

Retour à la liste

Numérotation des lignes :

calj22
  1. C CALJ22 SOURCE CB215821 26/08/24 21:15:22 12622
  2. SUBROUTINE CALJ22(FN,GR,PG,XYZ,HR,PGSQ,RPG,
  3. *ND,NP,NPG,IAXI,AIRE,AJ)
  4. C************************************************************************
  5. C
  6. C CE SP DIFFERRE DE CALI22 PAR LE RANGEMENT DE HR
  7. C HR(ND,NP)
  8. C
  9. C REMARQUE IMPORTANTE : CE SP NE TRAITE QUE LES ELEMENTS VOLUMIQUES
  10. C => HR(ND ...
  11. C
  12. C
  13. C CALCUL DE L'INVERSE DU JACOBIEN AJ=1/J
  14. C CALCUL DE L'AIRE OU VOLUME AIRE
  15. C CALCUL DE PGSQ(L)
  16. C CALCUL DE RPG(L)
  17. C CALCUL DE DES GRADIENTS HR(ND,NP)
  18. C CALCUL INTERMEDIAIRE DE L'ELEMENT D'AIRE SQ=DET(J)
  19. C DANS LES CAS 2D ET 3D
  20. C
  21. C ND DIMENSION ESPACE
  22. C NP NOMBRE DE NOEUDS DE L'ELEMENT
  23. C NPG NOMBRE DE POINTS D'INTEGRATION
  24. C
  25. C XYZ COORDONNEES
  26. C GR GRADIENT
  27. C B & KAUX TABLEAUX DE TRAVAIL
  28. C************************************************************************
  29. IMPLICIT INTEGER(I-N)
  30. IMPLICIT REAL*8 (A-H,O-Z)
  31. C
  32. REAL*8 FN(NP,NPG),GR(ND,NP,NPG),HR(ND,NP,NPG)
  33. REAL*8 PG(NPG),XYZ(ND,NP),PGSQ(NPG),RPG(NPG)
  34. REAL*8 SQ(64),B(3),AJ(ND,ND,NPG)
  35. DIMENSION KAUX(3)
  36. -INC CCREEL
  37. C
  38. C***
  39.  
  40. DEUPI=2.D0*XPI
  41.  
  42. C WRITE(6,*)' SUB CALJ22 XYZ=',((XYZ(MM1,MM2),MM1=1,ND),MM2=1,NP)
  43.  
  44. DO 1004 L=1,NPG
  45. DO 1003 M=1,ND
  46. DO 10 N=1,ND
  47. AJT=0.D0
  48. DO 11 I=1,NP
  49. AJT=AJT+GR(M,I,L)*XYZ(N,I)
  50. 11 CONTINUE
  51. AJ(N,M,L)=AJT
  52. 10 CONTINUE
  53. 1003 CONTINUE
  54. 1004 CONTINUE
  55. C
  56. DO 20 L=1,NPG
  57. IF(ND.EQ.1)THEN
  58. VINT=AJ(1,1,L)
  59. C VINT=ABS(VINT)
  60. AJ(1,1,L)=1.D0/VINT
  61. ELSEIF(ND.EQ.2)THEN
  62. VINT=AJ(1,1,L)*AJ(2,2,L)-AJ(1,2,L)*AJ(2,1,L)
  63. C VINT=ABS(VINT)
  64. RVINT=1.D0/VINT
  65. D11=AJ(2,2,L)
  66. D12=AJ(1,2,L)
  67. D21=AJ(2,1,L)
  68. D22=AJ(1,1,L)
  69. AJ(1,1,L)= RVINT*D11
  70. AJ(1,2,L)=-RVINT*D12
  71. AJ(2,1,L)=-RVINT*D21
  72. AJ(2,2,L)= RVINT*D22
  73. ELSEIF(ND.EQ.3)THEN
  74. D11=AJ(2,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(2,3,L)
  75. D12=AJ(1,2,L)*AJ(3,3,L)-AJ(3,2,L)*AJ(1,3,L)
  76. D13=AJ(1,2,L)*AJ(2,3,L)-AJ(2,2,L)*AJ(1,3,L)
  77. D21=AJ(2,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(2,3,L)
  78. D22=AJ(1,1,L)*AJ(3,3,L)-AJ(3,1,L)*AJ(1,3,L)
  79. D23=AJ(1,1,L)*AJ(2,3,L)-AJ(2,1,L)*AJ(1,3,L)
  80. D31=AJ(2,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(2,2,L)
  81. D32=AJ(1,1,L)*AJ(3,2,L)-AJ(3,1,L)*AJ(1,2,L)
  82. D33=AJ(1,1,L)*AJ(2,2,L)-AJ(2,1,L)*AJ(1,2,L)
  83. VINT=AJ(1,1,L)*D11-AJ(1,2,L)*D21+AJ(1,3,L)*D31
  84. C VINT=ABS(VINT)
  85. RVINT=1.D0/VINT
  86. AJ(1,1,L)= RVINT*D11
  87. AJ(1,2,L)=-RVINT*D12
  88. AJ(1,3,L)= RVINT*D13
  89. AJ(2,1,L)=-RVINT*D21
  90. AJ(2,2,L)= RVINT*D22
  91. AJ(2,3,L)=-RVINT*D23
  92. AJ(3,1,L)= RVINT*D31
  93. AJ(3,2,L)=-RVINT*D32
  94. AJ(3,3,L)= RVINT*D33
  95. ELSE
  96. VINT=0.D0
  97. ENDIF
  98.  
  99. SQ(L)=ABS(VINT)
  100. C*** CALL DLAIN(ND,ND,AJ(1,1,L),KAUX,B,IER)
  101. C
  102. 20 CONTINUE
  103. C
  104. DO 1006 L=1,NPG
  105. DO 1005 I=1,NP
  106. DO 31 N=1,ND
  107. U=0.D0
  108. DO 32 M=1,ND
  109. U=U+AJ(M,N,L)*GR(M,I,L)
  110. 32 CONTINUE
  111. HR(N,I,L)=U
  112. 31 CONTINUE
  113. 1005 CONTINUE
  114. 1006 CONTINUE
  115. U=0.D0
  116. DO 4 L=1,NPG
  117. U=U+PG(L)*SQ(L)
  118. PGSQ(L)=PG(L)*SQ(L)
  119. 4 CONTINUE
  120. AIRE=U
  121. IF(IAXI.EQ.0)RETURN
  122. C
  123. ID=3-IAXI
  124. IF(IAXI.EQ.3)CALL ARRET(0)
  125. DO 45 L=1,NPG
  126. RPGT =0.D0
  127. DO 46 I=1,NP
  128. RPGT=RPGT+XYZ(ID,I)*FN(I,L)
  129. 46 CONTINUE
  130. RPG(L)=RPGT
  131. 45 CONTINUE
  132. C
  133. U=0.D0
  134. DO 47 L=1,NPG
  135. PGSQ(L)=PGSQ(L)*DEUPI*RPG(L)
  136. U=U+PGSQ(L)
  137. 47 CONTINUE
  138. AIRE=U
  139. C
  140. RETURN
  141. 1002 FORMAT(10(1X,1PE11.4))
  142. 1001 FORMAT(20(1X,I5))
  143. END
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  

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