ortho1
C ORTHO1 SOURCE CHAT 05/01/13 02:06:32 5004
& ,NFOIS,COMBIN,IPX)
IMPLICIT INTEGER(I-N)
IMPLICIT REAL*8 (A-H,O-Z)
************************************************************************
*
* O R T H O 1
* -----------
*
* 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 CONNAIT DEJA LES PRODUITS "R.U(I)".
*
* MODE D'APPEL:
* -------------
*
* CALL ORTHO1 (IPX0,IPLIS1,IPLIS2,IPLIS3,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)".
* IPLIS3 ENTIER (E) POINTEUR DU 'LISTCHPO' CONTENANT LES
* PRODUITS "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)
* --------
*
* IPRU ENTIER POINTEUR D'UN CHPOINT "R.U(I)".
* 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.
*
* CE SOUS-PROGRAMME A ETE CREE PAR ANALOGIE AVEC "ORTHO2" ET NE
* POURRA ETRE TESTE QUE LORSQUE L'OPERATEUR "YTX" EXISTERA.
*
* SOUS-PROGRAMMES APPELES:
* ------------------------
*
* DIMEN3, DTCHPO, ERREUR, EXTRA1, EXTRA4, MAXIM3, NORME2, YTX1.
*
* 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
-INC SMLMOTS
*
*
LOGICAL ORTHO
*
PARAMETER (UN = 1.D0)
PARAMETER (RLIM=0.1)
EXTERNAL COMBIN
*
* 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':
IPLMOX=0
IPLMOY=0
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
IF (IERR .NE. 0) RETURN
XXTRU = -1.D0 * XTRU / UTRU
*
*
*
*
111 CALL COMBIN (IPX,UN,IPU,XXTRU, IPXX)
IF (IERR .NE. 0) RETURN
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)
* END DO
*
ORTHO = .TRUE.
*
GOTO 100
*
C 112 IF (PRECIS .NE. 0.D0) THEN
*
* -- TEST D'ORTHOGONALITE --SUPPRIME FEVR.88
*
C DO 120 IB120=1,LLIST
*
C CALL EXTRA4 (IPLIS3,IB120, IPRU)
C IF (IERR .NE. 0) RETURN
C CALL XTY1 (IPX,IPRU,IPLMOX,IPLMOY, XTRU)
C IF (IERR .NE. 0) RETURN
C IF (ABS(XTRU) .GT. PREMOD*UTRUMX) THEN
C ORTHO = .FALSE.
C --> SORTIE DE BOUCLE N.120
C GOTO 122
C END IF
C
C 120 CONTINUE
C END DO
C 122 CONTINUE
*
C IF (ORTHO) THEN
* --> SORTIE DE BOUCLE N.100
C GOTO 102
C END IF
C
C END IF
*
100 CONTINUE
* END DO
102 CONTINUE
MLMOTS =IPLMOX
MLMOT1 =IPLMOY
SEGSUP MLMOTS,MLMOT1
*
IF (.NOT.ORTHO) THEN
INTERR(1) = NFOIS
REAERR(1) = PREMOD
NUMERR = 218
END IF
RETURN
END
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales