Télécharger inelse.eso

Retour à la liste

Numérotation des lignes :

inelse
  1. C INELSE SOURCE GOUNAND 21/06/02 21:16:30 11022
  2. SUBROUTINE INELSE(MYLRFS,IMPR,IRET)
  3. IMPLICIT REAL*8 (A-H,O-Z)
  4. IMPLICIT INTEGER (I-N)
  5. C***********************************************************************
  6. C NOM : INELSE
  7. C PROJET : Noyau linéaire NLIN
  8. C DESCRIPTION : Remplit le segment des éléments de référence
  9. C avec les éléments de référence de dimension 1
  10. C (segments).
  11. C LANGAGE : ESOPE
  12. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  13. C mél : gounand@semt2.smts.cea.fr
  14. C***********************************************************************
  15. C APPELES : INILRF, INILAG, GBAPCO
  16. C APPELE PAR : INLRFS
  17. C***********************************************************************
  18. C ENTREES : -
  19. C ENTREES/SORTIES : MYLRFS
  20. C SORTIES : -
  21. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  22. C***********************************************************************
  23. C VERSION : v1, 23/03/00, version initiale
  24. C HISTORIQUE : v1, 23/03/00, création
  25. C HISTORIQUE : v2, 10/05/00, modif. du segment ELREF
  26. C HISTORIQUE :
  27. C HISTORIQUE :
  28. C***********************************************************************
  29. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  30. C en cas de modification de ce sous-programme afin de faciliter
  31. C la maintenance !
  32. C***********************************************************************
  33.  
  34. -INC PPARAM
  35. -INC CCOPTIO
  36. -INC TNLIN
  37. *-INC SELREF
  38. POINTEUR MYLRFS.ELREFS
  39. POINTEUR ELCOUR.ELREF
  40. *-INC SPOLYNO
  41. POINTEUR MYBPOL.POLYNS
  42. *
  43. INTEGER IMPR,IRET
  44. * Elément de nom : L2D0SE1
  45. REAL*8 ZERO
  46. PARAMETER (ZERO=0.D0)
  47. * Elément de nom : L2D1SE2
  48. REAL*8 UNS2
  49. PARAMETER (UNS2=0.5D0)
  50. * Elément de nom : H1D1SE2
  51. REAL*8 UN
  52. PARAMETER (UN=1.D0)
  53. *
  54. INTEGER INDDL
  55. *
  56. * Executable statements
  57. *
  58. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans inelse'
  59. *
  60. * Elément de nom : L2D0SE1
  61. * Sur un segment : élément de Lagrange, fonction L2, approximation
  62. * nodale, espace de référence de dimension 1, 1 noeud, 1 degré de
  63. * liberté, degré de l'approximation : 0
  64. *
  65. * In INILRF : SEGINI ELCOUR
  66. CALL INILRF('L2D0SE1','SEGMENT','LAGRANGE','L2',
  67. $ 1,1,1,0,
  68. $ ELCOUR,
  69. $ IMPR,IRET)
  70. IF (IRET.NE.0) GOTO 9999
  71. ELCOUR.XCONOD(1,1)=ZERO
  72. ELCOUR.NPQUAF(1)=2
  73. ELCOUR.NUMCMP(1)=1
  74. * Initialise la correspondance ddl-noeud+ord.der
  75. CALL INILAG(ELCOUR,IMPR,IRET)
  76. IF (IRET.NE.0) GOTO 9999
  77. * Génère une base polynômiale complète (dimension 1, degré 0)
  78. CALL GBAPCO(1,0,MYBPOL,IMPR,IRET)
  79. IF (IRET.NE.0) GOTO 9999
  80. ELCOUR.MBPOLY=MYBPOL
  81. SEGDES ELCOUR
  82. MYLRFS.LISEL(**)=ELCOUR
  83. *
  84. * Elément de nom : L2D1SE2
  85. * Sur un segment : élément de Lagrange, fonction L2, approximation
  86. * nodale, espace de référence de dimension 1, 2 noeuds, 2 degrés de
  87. * liberté, degré de l'approximation : 1
  88. *
  89. * In INILRF : SEGINI ELCOUR
  90. CALL INILRF('L2D1SE2','SEGMENT','LAGRANGE','L2',
  91. $ 1,2,2,1,
  92. $ ELCOUR,
  93. $ IMPR,IRET)
  94. IF (IRET.NE.0) GOTO 9999
  95. ELCOUR.XCONOD(1,1)=-UNS2
  96. ELCOUR.XCONOD(1,2)= UNS2
  97. ELCOUR.NPQUAF(1)=2
  98. ELCOUR.NUMCMP(1)=1
  99. ELCOUR.NPQUAF(2)=2
  100. ELCOUR.NUMCMP(2)=2
  101. * Initialise la correspondance ddl-noeud+ord.der
  102. CALL INILAG(ELCOUR,IMPR,IRET)
  103. IF (IRET.NE.0) GOTO 9999
  104. * Génère une base polynômiale complète (dimension 1, degré 1)
  105. CALL GBAPCO(1,1,MYBPOL,IMPR,IRET)
  106. IF (IRET.NE.0) GOTO 9999
  107. ELCOUR.MBPOLY=MYBPOL
  108. SEGDES ELCOUR
  109. MYLRFS.LISEL(**)=ELCOUR
  110. *
  111. * Elément de nom : H1D1SE2
  112. * Sur un segment : élément de Lagrange, fonction H1, approximation
  113. * nodale, espace de référence de dimension 1, 2 noeuds, 2 degrés de
  114. * liberté, degré de l'approximation : 1
  115. *
  116. * In INILRF : SEGINI ELCOUR
  117. CALL INILRF('H1D1SE2','SEGMENT','LAGRANGE','H1',
  118. $ 1,2,2,1,
  119. $ ELCOUR,
  120. $ IMPR,IRET)
  121. IF (IRET.NE.0) GOTO 9999
  122. ELCOUR.XCONOD(1,1)=-UN
  123. ELCOUR.XCONOD(1,2)=UN
  124. ELCOUR.NPQUAF(1)=1
  125. ELCOUR.NUMCMP(1)=1
  126. ELCOUR.NPQUAF(2)=3
  127. ELCOUR.NUMCMP(2)=1
  128. * Initialise la correspondance ddl-noeud+ord.der
  129. CALL INILAG(ELCOUR,IMPR,IRET)
  130. IF (IRET.NE.0) GOTO 9999
  131. * Génère une base polynômiale complète (dimension 1, degré 1)
  132. CALL GBAPCO(1,1,MYBPOL,IMPR,IRET)
  133. IF (IRET.NE.0) GOTO 9999
  134. ELCOUR.MBPOLY=MYBPOL
  135. SEGDES ELCOUR
  136. MYLRFS.LISEL(**)=ELCOUR
  137. *
  138. * Elément de nom : H1D2SE3
  139. * Sur un segment : élément de Lagrange, fonction H1, approximation
  140. * nodale, espace de référence de dimension 1, 3 noeuds, 3 degrés de
  141. * liberté, degré de l'approximation : 2
  142. *
  143. * In INILRF : SEGINI ELCOUR
  144. CALL INILRF('H1D2SE3','SEGMENT','LAGRANGE','H1',
  145. $ 1,3,3,2,
  146. $ ELCOUR,
  147. $ IMPR,IRET)
  148. IF (IRET.NE.0) GOTO 9999
  149. ELCOUR.XCONOD(1,1)=-UN
  150. ELCOUR.XCONOD(1,2)=ZERO
  151. ELCOUR.XCONOD(1,3)=UN
  152. * Les d.d.l. sont aux noeuds 1,2,3
  153. DO 205 INDDL=1,3
  154. ELCOUR.NPQUAF(INDDL)=INDDL
  155. ELCOUR.NUMCMP(INDDL)=1
  156. 205 CONTINUE
  157. * Initialise la correspondance ddl-noeud+ord.der
  158. CALL INILAG(ELCOUR,IMPR,IRET)
  159. IF (IRET.NE.0) GOTO 9999
  160. * Génère une base polynômiale complète (dimension 1, degré 2)
  161. CALL GBAPCO(1,2,MYBPOL,IMPR,IRET)
  162. IF (IRET.NE.0) GOTO 9999
  163. ELCOUR.MBPOLY=MYBPOL
  164. SEGDES ELCOUR
  165. MYLRFS.LISEL(**)=ELCOUR
  166. *
  167. * Normal termination
  168. *
  169. IRET=0
  170. RETURN
  171. *
  172. * Format handling
  173. *
  174. *
  175. * Error handling
  176. *
  177. 9999 CONTINUE
  178. IRET=1
  179. WRITE(IOIMP,*) 'An error was detected in subroutine inelse'
  180. RETURN
  181. *
  182. * End of subroutine INELSE
  183. *
  184. END
  185.  
  186.  
  187.  
  188.  
  189.  

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