Télécharger jacobi.eso

Retour à la liste

Numérotation des lignes :

jacobi
  1. C JACOBI SOURCE PV090527 23/07/13 21:15:04 11708
  2.  
  3. C=======================================================================
  4. C= J A C O B I =
  5. C= ----------- =
  6. C= Fonction : =
  7. C= ---------- =
  8. C= Calcul du jacobien (DJac) et des derivees des fonctions de forme =
  9. C= par rapport aux coordonnees REELLES x,y,z (SHPTOT(2 a 4,*)) en un =
  10. C= point donne d'un element (en general, un point de Gauss) =
  11. C= =
  12. C= Parametres : (E)=Entree (S)=Sortie =
  13. C= ------------ =
  14. C= XEL(3,NBNO) (E) Coordonnees GLOBALES des noeuds de l element =
  15. C= SHP(6,NBNO) (E/S) Valeurs des fonctions de forme et de leurs =
  16. C= derivees au point considere (point de Gauss) =
  17. C= IDIM (E) Dimension du probleme traite (1 a 3) =
  18. C= Cas particulier de l'element JOI3 : IDIM = 86 =
  19. C= NBNO (E) Nombre de NOEUDS de l element fini =
  20. C= DJac (S) Jacobien calcule en ce point de Gauss =
  21. C= (egal a 0 si probleme en ce point) =
  22. C= =
  23. C= Remarque : =
  24. C= ---------- =
  25. C= Lors de l'entree dans le sous-programme, SHP(2 a 4,*) contient =
  26. C= les DERIVEES des fonctions de forme par rapport aux coordonnees =
  27. C= de REFERENCE Qsi,Eta,Dzeta. =
  28. C= En sortie du sous-programme, SHP(2 a 4,*) contient les DERIVEES =
  29. C= des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. =
  30. C=======================================================================
  31.  
  32. SUBROUTINE JACOBI (XEL,SHP,IDIM,NBNO,DJac)
  33.  
  34. IMPLICIT INTEGER(I-N)
  35. IMPLICIT REAL*8 (A-H,O-Z)
  36.  
  37. DIMENSION XEL(3,*),SHP(6,*)
  38.  
  39. PARAMETER (XUn=1.d0)
  40. -INC CCREEL
  41.  
  42. dJInv=xgrand*xzprec
  43.  
  44. C ===========================
  45. C 1 - Cas de la DIMENSION 1
  46. C ===========================
  47. IF (IDIM.EQ.1) THEN
  48. DJac=XZero
  49. DO i=1,NBNO
  50. DJac=DJac+SHP(2,i)*XEL(1,i)
  51. ENDDO
  52. IF (DJac.NE.XZero) dJInv=XUn/DJac
  53. DO i=1,NBNO
  54. SHP(2,i)=SHP(2,i)*dJInv
  55. ENDDO
  56. C ===========================
  57. C 2 - Cas de la DIMENSION 2
  58. C ===========================
  59. ELSE IF (IDIM.EQ.2) THEN
  60. dXdQsi=XZero
  61. dXdEta=XZero
  62. dYdQsi=XZero
  63. dYdEta=XZero
  64. DO i=1,NBNO
  65. dXdQsi=dXdQsi+SHP(2,i)*XEL(1,i)
  66. dXdEta=dXdEta+SHP(3,i)*XEL(1,i)
  67. dYdQsi=dYdQsi+SHP(2,i)*XEL(2,i)
  68. dYdEta=dYdEta+SHP(3,i)*XEL(2,i)
  69. ENDDO
  70. DJac=dXdQsi*dYdEta-dXdEta*dYdQsi
  71. IF (DJac.NE.XZero) dJInv=XUn/DJac
  72. dQsidX= dYdEta*dJInv
  73. dQsidY=-dXdEta*dJInv
  74. dEtadX=-dYdQsi*dJInv
  75. dEtaDY= dXdQsi*dJInv
  76. DO i=1,NBNO
  77. V1=SHP(2,i)*dQsidX+SHP(3,i)*dEtadX
  78. SHP(3,i)=SHP(2,i)*dQsidY+SHP(3,i)*dEtadY
  79. SHP(2,i)=V1
  80. ENDDO
  81. C ===========================
  82. C 3 - Cas de la DIMENSION 3
  83. C ===========================
  84. ELSE IF (IDIM.EQ.3) THEN
  85. D11=XZero
  86. D21=XZero
  87. D31=XZero
  88. D12=XZero
  89. D22=XZero
  90. D32=XZero
  91. D13=XZero
  92. D23=XZero
  93. D33=XZero
  94. DO i=1,NBNO
  95. shp2=shp(2,i)
  96. shp3=shp(3,i)
  97. shp4=shp(4,i)
  98. xel1=xel(1,i)
  99. xel2=xel(2,i)
  100. xel3=xel(3,i)
  101. D11=D11+SHP2*XEL1
  102. D21=D21+SHP3*XEL1
  103. D31=D31+SHP4*XEL1
  104. D12=D12+SHP2*XEL2
  105. D22=D22+SHP3*XEL2
  106. D32=D32+SHP4*XEL2
  107. D13=D13+SHP2*XEL3
  108. D23=D23+SHP3*XEL3
  109. D33=D33+SHP4*XEL3
  110. ENDDO
  111. DInv11=D22*D33-D23*D32
  112. DInv12=D32*D13-D12*D33
  113. DInv13=D12*D23-D22*D13
  114. DJac=D11*DInv11+D21*DInv12+D31*DInv13
  115. IF (DJac.NE.XZero) dJInv=XUn/DJac
  116. DInv11=DInv11*dJInv
  117. DInv12=DInv12*dJInv
  118. DInv13=DInv13*dJInv
  119. DInv21=(D23*D31-D21*D33)*dJInv
  120. DInv22=(D11*D33-D13*D31)*dJInv
  121. DInv23=(D21*D13-D11*D23)*dJInv
  122. DInv31=(D21*D32-D22*D31)*dJInv
  123. DInv32=(D12*D31-D11*D32)*dJInv
  124. DInv33=(D11*D22-D12*D21)*dJInv
  125. DO i=1,NBNO
  126. shp2=shp(2,i)
  127. shp3=shp(3,i)
  128. shp4=shp(4,i)
  129. V1=DInv11*SHP2+DInv12*SHP3+DInv13*SHP4
  130. V2=DInv21*SHP2+DInv22*SHP3+DInv23*SHP4
  131. V3=DInv31*SHP2+DInv32*SHP3+DInv33*SHP4
  132. SHP(2,i)=V1
  133. SHP(3,i)=V2
  134. SHP(4,i)=V3
  135. ENDDO
  136. C =======================================
  137. C 4 - Cas particulier de l'element JOI3
  138. C =======================================
  139. ELSE IF (IDIM.EQ.86) THEN
  140. dXdQsi=XZero
  141. dYdQsi=XZero
  142. DO i=1,NBNO
  143. dXdQsi=dXdQsi+SHP(2,i)*XEL(1,i)
  144. dYdQsi=dYdQsi+SHP(2,i)*XEL(2,i)
  145. ENDDO
  146. DJac=SQRT(dXdQsi*dXdQsi+dYdQsi*dYdQsi)
  147. ENDIF
  148.  
  149. RETURN
  150. END
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  

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