valpol
C VALPOL SOURCE GOUNAND 08/11/07 21:15:05 6194 $ XCONO1, $ COEMON,EXPMON, $ ORDER1, $ VALEUR, $ IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : VALPOL C PROJET : Noyau lineaire NLIN C DESCRIPTION : Calcule la valeur d'un polynome de R^{ndiml} ou la C valeur d'une de ses derivees en un point de R^{ndiml}. C NDIML : dimension de l'espace C NBMONO : nombre de monomes du polynome C XCONO1 : coordonnees du point C COEMON : coefficient d'un monome C EXPMON : exposants du monome C ORDER1 : ordre de derivation par rapport a C chacune des coordonnees C C LANGAGE : Fortran 77 (sauf pour les E/S) C AUTEUR : Stephane GOUNAND (CEA/DRN/DMT/SEMT/LTMF) C mel : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : - C APPELE PAR : CALPN, NI C*********************************************************************** C ENTREES : NDIML, NBMONO, XCONO1, COEMON, EXPMON, ORDER1 C ENTREES/SORTIES : - C SORTIES : VALEUR C CODE RETOUR (IRET) : = 0 si tout s'est bien passe C*********************************************************************** C VERSION : v1, 16/09/99, version initiale C HISTORIQUE : v1, 16/09/99, creation C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Priere de PRENDRE LE TEMPS de completer les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO INTEGER NDIML,NBMONO REAL*8 XCONO1(NDIML) REAL*8 COEMON(NBMONO) INTEGER EXPMON(NDIML,NBMONO) INTEGER ORDER1(NDIML) * INTEGER IMPR,IRET * INTEGER IMONO,INDIML,IFACT INTEGER NEXPKS,NDERKS REAL*8 VALMON,VAMOEL * * Executable statements * IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entree dans valpol' * * Calcul de la valeur au point de coordonnees XCONO1 de la * derivee definie par ORDER1 du monome definie par EXPMON * DO 1 IMONO=1,NBMONO VALMON=COEMON(IMONO) DO 12 INDIML=1,NDIML NEXPKS=EXPMON(INDIML,IMONO) NDERKS=ORDER1(INDIML) * * d/dx^m (x^n) = 0 si m>n * = n!/(n-m)! x^(n-m) si m<=n * ou n! = factorielle de n et en choisissant * 0! = 1 IF (NDERKS.GT.NEXPKS) THEN VAMOEL=0.D0 ELSEIF (NDERKS.EQ.NEXPKS) THEN VAMOEL=1.D0 DO 222 IFACT=1,NEXPKS VAMOEL=VAMOEL*IFACT 222 CONTINUE ELSE VAMOEL=1.D0 DO 122 IFACT=(NEXPKS-NDERKS+1),NEXPKS,1 VAMOEL=VAMOEL*IFACT 122 CONTINUE VAMOEL=VAMOEL*(XCONO1(INDIML)**(NEXPKS-NDERKS)) ENDIF VALMON=VALMON*VAMOEL 12 CONTINUE 1 CONTINUE * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine valpol' RETURN * * End of subroutine VALPOL * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales