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