normam
C NORMAM SOURCE PV 20/09/26 21:19:00 10724 $ IMPR,IRET) IMPLICIT REAL*8 (A-H,O-Z) IMPLICIT INTEGER (I-N) C*********************************************************************** C NOM : NORMAM C DESCRIPTION : Equilibrage de la matrice avec normp C et normd C C C C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) C mél : gounand@semt2.smts.cea.fr C******************************************************** C*********************************************************************** C SYNTAXE GIBIANE : C ENTREES : C ENTREES/SORTIES : C SORTIES : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 29/04/2003, version initiale C HISTORIQUE : v1, 29/04/2003, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMMATRIK POINTEUR AMORS.PMORS POINTEUR AISA.IZA POINTEUR NORMP.IZA POINTEUR NORMD.IZA POINTEUR NORMP2.IZA POINTEUR NORMD2.IZA * INTEGER IMPR,IRET * * Executable statements * IF (IMPR.GT.5) WRITE(IOIMP,*) 'Entrée dans normam.eso' * On commence par calculer 1/sqrt(normp) qui va nous servir SEGACT NORMP NTTDDL=NORMP.A(/1) NBVA=NTTDDL SEGINI NORMP2 DO ITTDDL=1,NTTDDL NORMP2.A(ITTDDL)=1.D0/(SQRT(NORMP.A(ITTDDL))) ENDDO SEGDES NORMP SEGACT NORMD NBVA=NTTDDL SEGINI NORMD2 DO ITTDDL=1,NTTDDL NORMD2.A(ITTDDL)=1.D0/(SQRT(NORMD.A(ITTDDL))) ENDDO SEGDES NORMD * On norme SEGACT AMORS SEGACT AISA*MOD NTTDD2=AMORS.IA(/1)-1 IF (NTTDD2.NE.NTTDDL) THEN WRITE(IOIMP,*) 'Erreur grave' GOTO 9999 ENDIF DO ITTDDL=1,NTTDDL JSTRT=AMORS.IA(ITTDDL) JSTOP=AMORS.IA(ITTDDL+1)-1 DO J=JSTRT,JSTOP JTTDDL=AMORS.JA(J) VAL=AISA.A(J) VAL=VAL*NORMP2.A(JTTDDL)*NORMD2.A(ITTDDL) AISA.A(J)=VAL ENDDO ENDDO SEGDES AISA SEGDES AMORS SEGSUP NORMP2 SEGSUP NORMD2 * * Normal termination * IRET=0 RETURN * * Format handling * * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine normam' RETURN * * End of subroutine NORMAM * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales