Télécharger valpol.eso

Retour à la liste

Numérotation des lignes :

valpol
  1. C VALPOL SOURCE GOUNAND 08/11/07 21:15:05 6194
  2. SUBROUTINE VALPOL(NDIML,NBMONO,
  3. $ XCONO1,
  4. $ COEMON,EXPMON,
  5. $ ORDER1,
  6. $ VALEUR,
  7. $ IMPR,IRET)
  8. IMPLICIT INTEGER(I-N)
  9. IMPLICIT REAL*8 (A-H,O-Z)
  10. C***********************************************************************
  11. C NOM : VALPOL
  12. C PROJET : Noyau lineaire NLIN
  13. C DESCRIPTION : Calcule la valeur d'un polynome de R^{ndiml} ou la
  14. C valeur d'une de ses derivees en un point de R^{ndiml}.
  15. C NDIML : dimension de l'espace
  16. C NBMONO : nombre de monomes du polynome
  17. C XCONO1 : coordonnees du point
  18. C COEMON : coefficient d'un monome
  19. C EXPMON : exposants du monome
  20. C ORDER1 : ordre de derivation par rapport a
  21. C chacune des coordonnees
  22. C
  23. C LANGAGE : Fortran 77 (sauf pour les E/S)
  24. C AUTEUR : Stephane GOUNAND (CEA/DRN/DMT/SEMT/LTMF)
  25. C mel : gounand@semt2.smts.cea.fr
  26. C***********************************************************************
  27. C APPELES : -
  28. C APPELE PAR : CALPN, NI
  29. C***********************************************************************
  30. C ENTREES : NDIML, NBMONO, XCONO1, COEMON, EXPMON, ORDER1
  31. C ENTREES/SORTIES : -
  32. C SORTIES : VALEUR
  33. C CODE RETOUR (IRET) : = 0 si tout s'est bien passe
  34. C***********************************************************************
  35. C VERSION : v1, 16/09/99, version initiale
  36. C HISTORIQUE : v1, 16/09/99, creation
  37. C HISTORIQUE :
  38. C HISTORIQUE :
  39. C***********************************************************************
  40. C Priere de PRENDRE LE TEMPS de completer les commentaires
  41. C en cas de modification de ce sous-programme afin de faciliter
  42. C la maintenance !
  43. C***********************************************************************
  44.  
  45. -INC PPARAM
  46. -INC CCOPTIO
  47. INTEGER NDIML,NBMONO
  48. REAL*8 XCONO1(NDIML)
  49. REAL*8 COEMON(NBMONO)
  50. INTEGER EXPMON(NDIML,NBMONO)
  51. INTEGER ORDER1(NDIML)
  52. REAL*8 VALEUR
  53. *
  54. INTEGER IMPR,IRET
  55. *
  56. INTEGER IMONO,INDIML,IFACT
  57. INTEGER NEXPKS,NDERKS
  58. REAL*8 VALMON,VAMOEL
  59. *
  60. * Executable statements
  61. *
  62. IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entree dans valpol'
  63. *
  64. * Calcul de la valeur au point de coordonnees XCONO1 de la
  65. * derivee definie par ORDER1 du monome definie par EXPMON
  66. *
  67. VALEUR=0.D0
  68. DO 1 IMONO=1,NBMONO
  69. VALMON=COEMON(IMONO)
  70. DO 12 INDIML=1,NDIML
  71. NEXPKS=EXPMON(INDIML,IMONO)
  72. NDERKS=ORDER1(INDIML)
  73. *
  74. * d/dx^m (x^n) = 0 si m>n
  75. * = n!/(n-m)! x^(n-m) si m<=n
  76. * ou n! = factorielle de n et en choisissant
  77. * 0! = 1
  78. IF (NDERKS.GT.NEXPKS) THEN
  79. VAMOEL=0.D0
  80. ELSEIF (NDERKS.EQ.NEXPKS) THEN
  81. VAMOEL=1.D0
  82. DO 222 IFACT=1,NEXPKS
  83. VAMOEL=VAMOEL*IFACT
  84. 222 CONTINUE
  85. ELSE
  86. VAMOEL=1.D0
  87. DO 122 IFACT=(NEXPKS-NDERKS+1),NEXPKS,1
  88. VAMOEL=VAMOEL*IFACT
  89. 122 CONTINUE
  90. VAMOEL=VAMOEL*(XCONO1(INDIML)**(NEXPKS-NDERKS))
  91. ENDIF
  92. VALMON=VALMON*VAMOEL
  93. 12 CONTINUE
  94. VALEUR=VALEUR+VALMON
  95. 1 CONTINUE
  96. *
  97. * Normal termination
  98. *
  99. IRET=0
  100. RETURN
  101. *
  102. * Format handling
  103. *
  104. *
  105. * Error handling
  106. *
  107. 9999 CONTINUE
  108. IRET=1
  109. WRITE(IOIMP,*) 'An error was detected in subroutine valpol'
  110. RETURN
  111. *
  112. * End of subroutine VALPOL
  113. *
  114. END
  115.  
  116.  

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