graamo
C GRAAMO SOURCE CB215821 20/11/25 13:29:49 10792 C GRAAMO SOURCE WP 23/08/94 C SUBROUTINE GRAAMO ( IPLSNO, IPRIGI ) ************************************************************************ * * GRAAMO * ----------- * * FONCTION: * --------- * * ORTHONORMALISER UNE SUITE DE 'CHPOINT' PAR RAPPORT A UNE RIGIDITE * si dans le processus on detecte des vecteurs du noyau on les * enleve * * MODE D'APPEL: * ------------- * * CALL GRAAMO ( IPLSNO, IPRIGI ) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPLSNO ENTIER (E) POINTEUR DE L'OBJET 'LISTCHPO' CONTENANT * LA SUITE DE 'CHPOINT' NON ORTHOGONAUX, * MAIS LINEAIREMENT INDEPENDANTS. * * IPLSNO ENTIER (S) POINTEUR DE L'OBJET 'LISTCHPO' CONTENANT * LA SUITE DE 'CHPOINT' ORTHOGONAUX. * * IPRIGI ENTIER (E) POINTEUR SUR L'OBJET 'RIGIDITE' PAR * RAPPORT AUQUEL ON ORTHOGONALISE. * * * * MODE DE FONCTIONNEMENT: * ----------------------- * * PROCEDE D'ORTHOGONALISATION DE GRAM-SCHMITH. * * AUTEUR, DATE DE CREATION: * ------------------------- * * A.M. JOLIVALT, W. PASILLAS 06 / 07 / 94. ( ESOPE ) * *************************************************** IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLCHPO -INC CCREEL ****** * -- ARGUMENTS -- *** POINTEUR IPLSNO.MLCHPO INTEGER IPRIGI ****** * -- VARIABLES LOCALES -- *** POINTEUR IPLSO.MLCHPO INTEGER ILDIM, IB100, IB200 INTEGER IPTMP, IPTMP1, IPCHPO, IPLMOT CHARACTER*(LOCOMP) MOTCLE ****** * -- ON CREE UNE 'LISTCHPO' VIDE -- *** N1 = 0 SEGINI ,IPLSO segdes iplso ****** * -- DANS LAQUELLE ON INSERE DES VECTEURS ORTHOGONALISES * PAR GRAAM1 ET NORMES PAR NORMA1. -- *** IF ( IERR .NE. 0 ) RETURN SEGACT ,IPLSNO ILDIM = IPLSNO.ICHPOI(/1) DO 100 IB100 = 1, ILDIM IPCHPO = IPLSNO.ICHPOI( IB100 ) IF ( IERR .NE. 0 ) RETURN * on teste si la matrice est singuliere * on ne garde pas les vecteurs du noyau if (abs(xm).gt.1d2*xpetit) then IF ( IERR .NE. 0 ) RETURN IF ( IERR .NE. 0 ) RETURN segact iplso*mod IPLSO.ICHPOI(**) = IPTMP1 segdes iplso endif 100 CONTINUE ****** * -- ON EFFACE L'ANCIENNE LISTE -- *** DO 200 IB200 = 1, ILDIM IPCHPO = IPLSNO.ICHPOI(IB200) IF ( IERR .NE. 0 ) RETURN 200 CONTINUE segsup iplsno ****** * -- ON RETOURNE LA NOUVELLE LISTE -- *** IPLSNO = IPLSO RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales