ortho2
C ORTHO2 SOURCE PV 21/12/18 07:15:10 11240 & ,COMBIN,IPX) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) ************************************************************************ * * O R T H O 2 * ----------- * * FONCTION: * --------- * * R-ORTHOGONALISER UN CHPOINT "X" PAR RAPPORT A UNE SUITE DE * CHPOINTS "U(I)", "R" ETANT UNE RIGIDITE DONNEE. * CAS DE FIGURE OU L'ON NE CONNAIT PAS LES PRODUITS "R.U(I)". * * MODE D'APPEL: * ------------- * * CALL ORTHO2 (IPX0,IPLIS1,IPLIS2,LLIST,IPRIGI,PRECIS,NFOIS * & ,COMBIN,IPX) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPX0 ENTIER (E) POINTEUR DU CHPOINT A "R-ORTHOGONALISER". * IPLIS1 ENTIER (E) POINTEUR DU 'LISTCHPO' CONTENANT LES "U(I)" * IPLIS2 ENTIER (E) POINTEUR DU 'LISTREEL' CONTENANT LES * PRODUITS "U(I).R.U(I)". * LLIST ENTIER (E) NOMBRE DE CHPOINTS "U(I)". * IPRIGI ENTIER (E) POINTEUR DE LA 'RIGIDITE' "R". * PRECIS REEL DP (E) PRECISION DEMANDEE POUR LA * R-ORTHOGONALISATION. * = 0 SI L'ON NE VEUT PAS DE TEST DE * PRECISION. * ON NE VERIFIE PAS QUE "PRECIS >= 0". * NFOIS ENTIER (E) NOMBRE DE FOIS QUE L'ON EFFECTUE LA * "R-ORTHOGONALISATION" (POUR PALIER AUX * ERREURS D'ARRONDIS). * COMBIN SUBROUT. (E) SOUS-PROGRAMME DE COMBINAISON LINEAIRE DE * 2 'CHPOINTS'. 5 ARGUMENTS: * - 'CHPOINT' N.1 , * - REEL D.P. N.1 , * - 'CHPOINT' N.2 , * - REEL D.P. N.2 , * - 'CHPOINT' COMBINAISON LINEAIRE. * IPX ENTIER (S) POINTEUR DU CHPOINT "R-ORTHOGONAL" A LA * SUITE DE CHPOINTS. * * LEXIQUE: (ORDRE ALPHABETIQUE) * -------- * * IPU ENTIER POINTEUR D'UN CHPOINT "U(I)". * IPXX ENTIER POINTEUR DU CHPOINT "X" A UN CERTAIN STADE DE * TRANSFORMATION. * ORTHO LOGIQUE INDIQUE PAR "VRAI" OU "FAUX" SI LA * "R-ORTHOGONALISATION" A ETE EFFECTUEE AVEC * SUCCES. * PREMOD REEL DP PRECISION D'ORTHOGONALISATION, MODULEE EN * FONCTION DE LA TAILLE DU PROBLEME. * UTRUMX REEL DP MAXIMUM DES PRODUITS U(I)T.R.U(I) * UTRU REEL DP PRODUIT U(I)T.R.U(I) ("T" POUR "TRANSPOSE"). * XTRU REEL DP PRODUIT XT.R.U(I) ("T" POUR "TRANSPOSE"). * * REMARQUES: * ---------- * * PRECISION: LA PRECISION DEMANDEE N'EST PAS PRISE TELLE QUELLE. * ELLE EST MODULEE EN FONCTION DE LA TAILLE DU PROBLEME. EN EFFET, * ON NE PEUT PAS DEMANDER AUTANT DE PRECISION POUR UN PROBLEME DE * GRANDE TAILLE, POUR LEQUEL IL Y A D'AVANTAGE D'ERREURS DE * TRONCATURE. * * SOUS-PROGRAMMES APPELES: * ------------------------ * * DIMEN3, DTCHPO, ERREUR, EXTRA1, EXTRA4, MAXIM3, NORME2, YTMX. * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 05 AVRIL 1985 * * LE 26 AOUT 1985 (P. MANIGOT): PRECISION MODULEE EN FONCTION DE LA * TAILLE DU PROBLEME. * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * -INC PPARAM -INC CCOPTIO * * LOGICAL ORTHO * PARAMETER (UN = 1.D0) PARAMETER (RLIM=0.1) EXTERNAL COMBIN * ortho=.false. IPLMOX=0 IPLMOY=0 * TAILLE DU PROBLEME: IF (IERR .NE. 0) RETURN PREMOD = PRECIS * (DBLE(NBRINC)**2) * IF (IERR .NE. 0) RETURN UTRUMX = ABS(UTRUMX) * * ON DONNE AU 'CHPOINT' A ORTHOGONALISER LE MEME ORDRE DE GRANDEUR * QUE CELUI DES 'CHPOINTS' DU 'LISTCHPO': C IPLMOY,IPRX) IF (IERR .NE. 0) RETURN XTRX1=XTRX * DO 100 IB100=1,NFOIS * DO 110 IB110=1,LLIST * * -- ORTHOGONALISATION -- * IF (IERR .NE. 0) RETURN IF (IERR .NE. 0) RETURN IF (IERR .NE. 0) RETURN XXTRU = -1.D0 * XTRU / UTRU CALL COMBIN (IPX,UN,IPU,XXTRU, IPXX) IF (IERR .NE. 0) RETURN * C CALL NORME2 (IPXX,UTRUMX,IPRIGI, IPX,XTRX, C C IPLMOX,IPLMOY,IPRX) C IF (IERR .NE. 0) RETURN C CALL DTCHPO (IPXX) IPX=IPXX XTRX1=XTRX1-((XTRU*XTRU)/UTRU) * 110 CONTINUE RNM=ABS(XTRX1/XTRX) IF(RNM.GE.RLIM) GOTO 1001 NV=LLIST+1 WRITE(IOIMP,1000) NV,RNM 1000 FORMAT(/40X,'OPERATEUR VIBRA OPTION SIMULTANE',/10X, C ' DIFFICULTE D ORTHOGONALISER LE ',I5, C ' IEME VECTEUR NORME APRES ORTHOGONALISATION PAR ', C ' RAPPORT A LA NORME INITIALE ',E12.5) 1001 CONTINUE COEFF=SQRT(1.0E0/RNM) XNOR=XTRX1*ABS(XTRX/XTRX1) * END DO * ORTHO = .TRUE. * IF (PRECIS .NE. 0.D0) THEN * * -- TEST D'ORTHOGONALITE -- * DO 120 IB120=1,LLIST * IF (IERR .NE. 0) RETURN IF (IERR .NE. 0) RETURN IF (ABS(XTRU) .GT. PREMOD*UTRUMX) THEN ORTHO = .FALSE. * --> SORTIE DE BOUCLE N.120 GOTO 122 END IF * 120 CONTINUE * END DO 122 CONTINUE * IF (ORTHO) THEN * --> SORTIE DE BOUCLE N.100 GOTO 102 END IF * END IF * 100 CONTINUE * END DO 102 CONTINUE * IF (.NOT.ORTHO) THEN INTERR(1) = NFOIS REAERR(1) = PREMOD NUMERR = 218 END IF * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales