Télécharger tshape.eso

Retour à la liste

Numérotation des lignes :

tshape
  1. C TSHAPE SOURCE OF166741 23/12/05 21:15:08 11801
  2.  
  3. C=======================================================================
  4. C= T S H A P E =
  5. C= ----------- =
  6. C= =
  7. C= Fonction : =
  8. C= ---------- =
  9. C= Calcul des fonctions de forme et de leurs derivees soit aux noeuds =
  10. C= soit aux points de Gauss d'un element fini MASSIF a integration =
  11. C= numerique (branchement vers les sous-programmes adequats). =
  12. C= =
  13. C= Parametres : (E)=Entree (S)=Sortie =
  14. C= ------------ =
  15. C= NEF (E) Numero de l'ELEMENT FINI dans NOMTP (cf. CCHAMP) =
  16. C= POINTS (E) Chaine de caracteres indiquant si l'on souhaite les =
  17. C= valeurs aux noeuds (='NOEUD'), aux points de Gauss =
  18. C= (='GAUSS') ou au centre de gravite (='GRAVITE') de =
  19. C= l'element fini considere =
  20. C= IPINTE (S) Pointeur sur le segment MINTE (ACTIF en S) =
  21. C= =
  22. C= Remarque : Il s'agit des derivees par rapport aux coordonnees de =
  23. C= ---------- l'element de reference (Eta,Qsi,Dzeta). =
  24. C=======================================================================
  25. SUBROUTINE TSHAPE (NEF,POINTS,IPINTE)
  26.  
  27. IMPLICIT INTEGER(I-N)
  28. IMPLICIT REAL*8(A-H,O-Z)
  29.  
  30. c-INC PPARAM
  31. c-INC CCOPTIO
  32.  
  33. -INC SMINTE
  34.  
  35. PARAMETER (NELSTH = 20, NTINTE = 3, NEFMAX = 33)
  36. PARAMETER (NINTEG = NELSTH * NTINTE)
  37.  
  38. C Nom des EF : SEG2 RAC2 COQ2 BARRe T1D2 TUY2 SEG3 RAC3
  39. C (voir NOMTP) T1D3 TUY3 TRI3 LIA3 COQ3 TRI6 LIA6 QUA4
  40. C LIA4 QUA8 LIA8 CUB8 CU20 PRI6 PR15 TET4
  41. C TE10 PYR5 PY13 COQ4 COQ8 COQ6 POI1 POI1
  42. C JOI1
  43.  
  44. C Liste des Elements Finis (NEF) traites ici (voir NUMGEO)
  45. INTEGER LISNEF(NEFMAX)
  46. SAVE LISNEF
  47. DATA LISNEF / 2, 12, 44, 46, 191, 269, 3, 13,
  48. & 192, 270, 4, 18, 27, 6, 20, 8,
  49. & 19, 10, 21, 14, 15, 16, 17, 23,
  50. & 24, 25, 26, 49, 41, 56, 1, 45,
  51. & 265 /
  52.  
  53. C Element Support THermique associe a chaque Element Fini
  54. INTEGER LELSTH(NEFMAX)
  55. SAVE LELSTH
  56. DATA LELSTH / 1, 1, 1, 1, 1, 1, 2, 2,
  57. & 2, 2, 3, 3, 3, 4, 4, 5,
  58. & 5, 6, 6, 7, 8, 9, 10, 11,
  59. & 12, 13, 14, 15, 16, 17, 18, 18,
  60. & 19 /
  61.  
  62. C Tableau des pointeurs MINTE pour chaque ELement Support THermique
  63. C et chaque Support (<0 si non defini, 0 si non utile et >0 sinon)
  64. INTEGER IPINTH(NELSTH,NTINTE)
  65. SAVE IPINTH
  66. DATA IPINTH / NINTEG * -3 /
  67.  
  68. CHARACTER*(*) POINTS
  69.  
  70. C 1 - Les valeurs ne peuvent etre donnees qu'aux noeuds, aux points
  71. C === d'integration (Gauss) ou au centre de gravite.
  72. ITINTE = 0
  73. IF ( POINTS(1:5).EQ.'NOEUD' ) THEN
  74. ITINTE = 1
  75. ELSE IF ( POINTS(1:5).EQ.'GAUSS' ) THEN
  76. ITINTE = 2
  77. ELSE IF ( POINTS(1:7).EQ.'GRAVITE' ) THEN
  78. ITINTE = 3
  79. ELSE
  80. CALL ERREUR(19)
  81. RETURN
  82. ENDIF
  83. c if (itinte .gt. ntinte) then
  84. c write(ioimp,*) 'TSHAPE : redimensionner NTINTE'
  85. c call erreur(5)
  86. c return
  87. c endif
  88.  
  89. C 2 - Determination de l'element support thermique pour l'ELEMENT FINI
  90. C ===
  91. IELSTH = 0
  92. CALL PLACE2(LISNEF,NEFMAX,ielsth,NEF)
  93. IF (ielsth.EQ.0) THEN
  94. CALL ERREUR(19)
  95. RETURN
  96. ENDIF
  97. IELSTH = LELSTH(ielsth)
  98. c if (ielsth.gt. nelsth) then
  99. c write(ioimp,*) 'TSHAPE : redimensionner NELSTH'
  100. c call erreur(5)
  101. c endif
  102.  
  103. C 3 - Recuperation/Construction du segment SMINTE demande
  104. C ===
  105. C- Si pointeur deja construit, on le recupere, on l'active et retour.
  106. IPINTE = IPINTH(IELSTH,ITINTE)
  107. IF (IPINTE.GE.0) THEN
  108. IF (IPINTE.NE.0) THEN
  109. MINTE = IPINTE
  110. SEGACT,MINTE*NOMOD
  111. ENDIF
  112. RETURN
  113. ENDIF
  114.  
  115. C- Sinon il faut l'evaluer via le sousprogramme associe a l'element.
  116. IPINTE = -3
  117. IF ( IELSTH .EQ. 1 ) THEN
  118. CALL TSEG2F(ITINTE,IPINTE)
  119. ELSE IF ( IELSTH .EQ. 2) THEN
  120. CALL TSEG3(ITINTE,IPINTE)
  121. ELSE IF ( IELSTH .EQ. 3) THEN
  122. CALL TTRI3F(ITINTE,IPINTE)
  123. ELSE IF ( IELSTH .EQ. 4) THEN
  124. CALL TTRI6(ITINTE,IPINTE)
  125. ELSE IF ( IELSTH .EQ. 5) THEN
  126. CALL TQUA4(ITINTE,IPINTE)
  127. ELSE IF ( IELSTH .EQ. 6) THEN
  128. CALL TQUA8(ITINTE,IPINTE)
  129. ELSE IF ( IELSTH .EQ. 7) THEN
  130. CALL TCUB8(ITINTE,IPINTE)
  131. ELSE IF ( IELSTH .EQ. 8) THEN
  132. CALL TCU20(ITINTE,IPINTE)
  133. ELSE IF ( IELSTH .EQ. 9) THEN
  134. CALL TPRI6(ITINTE,IPINTE)
  135. ELSE IF ( IELSTH .EQ. 10) THEN
  136. CALL TPR15(ITINTE,IPINTE)
  137. ELSE IF ( IELSTH .EQ. 11) THEN
  138. CALL TTET4F(ITINTE,IPINTE)
  139. ELSE IF ( IELSTH .EQ. 12) THEN
  140. CALL TTE10(ITINTE,IPINTE)
  141. ELSE IF ( IELSTH .EQ. 13) THEN
  142. CALL TPYR5(ITINTE,IPINTE)
  143. ELSE IF ( IELSTH .EQ. 14) THEN
  144. CALL TPY13(ITINTE,IPINTE)
  145. ELSE IF ( IELSTH .EQ. 15) THEN
  146. CALL TCOQ4(ITINTE,IPINTE)
  147. ELSE IF ( IELSTH .EQ. 16) THEN
  148. CALL TCOQ8(ITINTE,IPINTE)
  149. ELSE IF ( IELSTH .EQ. 17) THEN
  150. CALL TCOQ6(ITINTE,IPINTE)
  151. ELSE IF ( IELSTH .EQ. 18) THEN
  152. CALL TPOI1(ITINTE,IPINTE)
  153. ELSE IF ( IELSTH .EQ. 19) THEN
  154. IPINTE = 0
  155. ELSE
  156. C- ERREUR : Element fini non implemente
  157. write(ioimp,*) 'TSHAPE(1) : Element fini non implemente'
  158. call erreur(5)
  159. return
  160. ENDIF
  161.  
  162. C- ERREUR lors de l'appel au sous-programme T_ef_
  163. IF (IPINTE.LT.0) THEN
  164. write(ioimp,*) 'TSHAPE(2) : Erreur lors appel a T_ef_'
  165. call erreur(5)
  166. return
  167. ENDIF
  168.  
  169. IPINTH(IELSTH,ITINTE) = IPINTE
  170. IF (IPINTE.GT.0) THEN
  171. CALL SAVSEG(IPINTE)
  172. MINTE = IPINTE
  173. SEGACT,MINTE*NOMOD
  174. ENDIF
  175.  
  176. c RETURN
  177. END
  178.  
  179.  
  180.  
  181.  

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