Télécharger calpn.eso

Retour à la liste

Numérotation des lignes :

calpn
  1. C CALPN SOURCE GOUNAND 21/06/02 21:15:07 11022
  2. SUBROUTINE CALPN(MYLRF,
  3. $ PN,
  4. $ IMPR,IRET)
  5. IMPLICIT INTEGER(I-N)
  6. IMPLICIT REAL*8 (A-H,O-Z)
  7. C***********************************************************************
  8. C NOM : CALPN
  9. C PROJET : Noyau linéaire NLIN
  10. C DESCRIPTION : Calcul de la matrice nodale [PN].
  11. C Si {Un} sont les degrés de liberté nodaux
  12. C sur l'élément de référence et
  13. C {a} les coefficients dans la base polynômiale
  14. C alors {Un} = [PN] {a}.
  15. C Explicitement :
  16. C [PN] = ( P1(ksi1) ..... Pn(ksi1))
  17. C ( ... ..... ... )
  18. C ( P1(ksin) ..... Pn(ksin))
  19. C n = nb. ddl sur l'élément (NDFN)
  20. C ksii = coords. du ieme noeud d'approximation
  21. C dans l'espace de référence (de dimension
  22. C NDIML)
  23. C Pi = ieme polynome d'interpolation sur
  24. C l'élément de référence.
  25. C
  26. C
  27. C LANGAGE : Esope
  28. C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  29. C mél : gounand@semt2.smts.cea.fr
  30. C***********************************************************************
  31. C APPELES : VALPOL
  32. C APPELE PAR : KFNREF
  33. C***********************************************************************
  34. C ENTREES : MYLRF
  35. C ENTREES/SORTIES : -
  36. C SORTIES : PN
  37. C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  38. C***********************************************************************
  39. C VERSION : v1, 16/09/99, version initiale
  40. C HISTORIQUE : v1, 16/09/99, création
  41. C HISTORIQUE : v2, 10/05/00, modif. du segment ELREF
  42. C HISTORIQUE :
  43. C HISTORIQUE :
  44. C***********************************************************************
  45. C Prière de PRENDRE LE TEMPS de compléter les commentaires
  46. C en cas de modification de ce sous-programme afin de faciliter
  47. C la maintenance !
  48. C***********************************************************************
  49.  
  50. -INC PPARAM
  51. -INC CCOPTIO
  52. -INC TNLIN
  53. *-INC SELREF
  54. POINTEUR MYLRF.ELREF
  55. *-INC SPOLYNO
  56. POINTEUR MYBPOL.POLYNS
  57. POINTEUR MYPOLY.POLYNO
  58. -INC TMXMAT
  59. POINTEUR PN.MXMAT
  60. *
  61. INTEGER IMPR,IRET
  62. *
  63. INTEGER INDFN,JNDFN
  64. INTEGER NDIML,NDIML2,NDFN,NBMONO,NPOLY
  65. *
  66. * Executable statements
  67. *
  68. IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans calpn'
  69. *
  70. * Initialisations
  71. *
  72. SEGACT MYLRF
  73. NDIML=MYLRF.XCONOD(/1)
  74. NDFN =MYLRF.NPQUAF(/1)
  75. MYBPOL=MYLRF.MBPOLY
  76. SEGACT MYBPOL
  77. NPOLY=MYBPOL.LIPOLY(/1)
  78. IF (NPOLY.NE.NDFN) THEN
  79. WRITE(IOIMP,*) 'Element fini mal défini'
  80. GOTO 9999
  81. ENDIF
  82. LDIM1=NDFN
  83. LDIM2=NDFN
  84. SEGINI PN
  85. *
  86. * On calcule la matrice [PN] colonne par colonne
  87. *
  88. DO 1 JNDFN=1,NDFN
  89. MYPOLY=MYBPOL.LIPOLY(JNDFN)
  90. SEGACT MYPOLY
  91. NDIML2=MYPOLY.EXPMON(/1)
  92. IF (NDIML2.NE.NDIML) THEN
  93. WRITE(IOIMP,*) 'Grosse erreur...(dimensions de segments)'
  94. GOTO 9999
  95. ENDIF
  96. NBMONO=MYPOLY.EXPMON(/2)
  97. DO 12 INDFN=1,NDFN
  98. * Calcul du polynôme JNDFN (ou une de ses dérivées) au point de
  99. * l'élément de référence numéro INDFN
  100. CALL VALPOL(NDIML,NBMONO,
  101. $ MYLRF.XCONOD(1,INDFN),
  102. $ MYPOLY.COEMON,MYPOLY.EXPMON,
  103. $ MYLRF.ORDDER(1,JNDFN),
  104. $ PN.XMAT(INDFN,JNDFN),
  105. $ IMPR,IRET)
  106. IF (IRET.NE.0) GOTO 9999
  107. 12 CONTINUE
  108. SEGDES MYPOLY
  109. 1 CONTINUE
  110. IF (IMPR.GT.3) THEN
  111. WRITE(IOIMP,*) 'On a créé [PN] (',NDFN,'x',NDFN,') :'
  112. DO 3 INDFN=1,NDFN
  113. WRITE(IOIMP,4004) (PN.XMAT(INDFN,JNDFN),JNDFN=1,NDFN)
  114. 3 CONTINUE
  115. ENDIF
  116. SEGDES PN
  117. SEGDES MYBPOL
  118. SEGDES MYLRF
  119. *
  120. * Normal termination
  121. *
  122. IRET=0
  123. RETURN
  124. *
  125. * Format handling
  126. *
  127. 4004 FORMAT (2X,6(1X,1PE13.5))
  128. *
  129. * Error handling
  130. *
  131. 9999 CONTINUE
  132. IRET=1
  133. WRITE(IOIMP,*) 'An error was detected in subroutine calpn'
  134. RETURN
  135. *
  136. * End of subroutine CALPN
  137. *
  138. END
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  

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