valpo2
C VALPO2 SOURCE GOUNAND 08/11/07 21:15:04 6194 $ XCONO1,NBMON,COEMON, $ EXPMON, $ ORDER1, $ VALEUR) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : VALPO2 (Idem VALPOL mais precable) 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 : SHAPEQ 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, 03/05/06, version initiale C HISTORIQUE : v1, 03/05/06, 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*********************************************************************** INTEGER NDIML REAL*8 XCONO1(NDIML) INTEGER NBMON REAL*8 COEMON(NBMON) INTEGER EXPMON(NDIML,NBMON) INTEGER ORDER1(NDIML) * INTEGER IMPR,IRET * INTEGER IMONO,INDIML,IFACT INTEGER NEXPKS,NDERKS REAL*8 VALMON,VAMOEL * * Executable statements * * * Calcul de la valeur au point de coordonnees XCONO1 de la * derivee definie par ORDER1 du monome definie par EXPMON * DO IMON=1,NBMON * VALMON=1.D0 VALMON=COEMON(IMON) * WRITE(IOIMP,*) 'VALMON=',VALMON DO 12 INDIML=1,NDIML NEXPKS=EXPMON(INDIML,IMON) 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 ENDDO * WRITE(6,*) 'VALEUR=',VALEUR * * Normal termination * IRET=0 RETURN * * End of subroutine VALPO2 * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales