intva3
C INTVA3 SOURCE BP208322 09/03/24 21:15:00 6341 ************************************************************************ * * I N T V A 3 * ----------- * * FONCTION: * --------- * * RECHERCHE D'UN MODE PROPRE. * * MODE D'APPEL: * ------------- * * CALL INTVA3 (IPRIGI,IPMASS,INF0,IPMODE) * * PARAMETRES: (E)=ENTREE (S)=SORTIE * ----------- * * IPRIGI ENTIER (E) POINTEUR DE L'OBJET 'RIGIDITE' CONTENANT * LA MATRICE DE RIGIDITE. * IPMASS ENTIER (E) POINTEUR DE L'OBJET 'RIGIDITE' CONTENANT * LA MATRICE MASSE. * INF0 ENTIER (E) NOMBRE DE TERMES DIAGONAUX NEGATIFS DE LA * 'RIGIDITE' "K" DECOMPOSEE EN L.D.LT . * CE NOMBRE N'EST PAS NUL A CAUSE DE LA FACON * DONT SONT INTRODUITS LES BLOCAGES DES * D.D.L. (MULTIPLICATEURS DE LAGRANGE "LX"). * IPMODE ENTIER (S) POINTEUR DE L'OBJET 'SOLUTION' CONTENANT * LE MODE PROPRE TROUVE. * +W2A REEL DP (E) 1ERE BORNE DE L'INTERVALLE ENCADRANT LA * PULSATION PROPRE AU CARRE. * +W2B REEL DP (E) 2EME BORNE DE L'INTERVALLE ENCADRANT LA * PULSATION PROPRE AU CARRE. * * + = PARAMETRE PASSE DANS LE COMMUN "CINTVA". * * LEXIQUE: (ORDRE ALPHABETIQUE) * -------- * * CONVRG LOGIQUE VOIR LE SOUS-PROGRAMME "ITINV". * FREQPP REEL DP FREQUENCE PROPRE CALCULEE. * IPKW2M ENTIER POINTEUR DE LA 'RIGIDITE' "DECALEE" K - W2.M * IPVECP ENTIER POINTEUR DU 'CHPOINT' QUI CONTIENT DES NOMBRES * ALEATOIRES, PUIS UN VECTEUR PROPRE. * ITERMX ENTIER VOIR LE SOUS-PROGRAMME "ITINV". * JREPET ENTIER NOMBRE DE FOIS QUE L'ON EFFECTUE UNE SEQUENCE * D'ITERATIONS INVERSES, AU MAXIMUM. * NUMACC ENTIER VOIR LE SOUS-PROGRAMME "ITINV". * OMEGA2 REEL DP PULSATION PROPRE TROUVEE AU CARRE. * PRECI1 REEL SP VOIR LE SOUS-PROGRAMME "ITINV". * PRECI2 REEL SP VOIR LE SOUS-PROGRAMME "ITINV". * PROPRE REEL DP VOIR LE SOUS-PROGRAMME "ITINV". * W2 REEL DP PULSATION AU CARRE A APPROCHER. * * MODE DE FONCTIONNEMENT: * ----------------------- * * LE CALCUL D'UN VECTEUR PROPRE SE FAIT PAR LA METHODE DES * ITERATIONS INVERSES (DITE AUSSI DE LA PUISSANCE INVERSE), AVEC * DECALAGE INITIAL ("SHIFTING") ET AJUSTEMENT DU DECALAGE TOUTES * LES "ITERMX" ITERATIONS. * DANS LE CAS DE MODES MULTIPLES, IL EST INUTILE DE FAIRE TOUTES * LES ITERATIONS PUISQU'ON CONNAIT LA FREQUENCE ET QU'ON RISQUE * D'ITERER SUR DES COMBINAISONS LINEAIRES DES MODES MULTIPLES. * * * SOUS-PROGRAMMES APPELES: * ------------------------ * * ALEAT1, CREMOD, DECALE, DIAGN1, DTRIGI, ECCHPO, ECMODE, ITINV, * W2FREQ. * * AUTEUR, DATE DE CREATION: * ------------------------- * * PASCAL MANIGOT 24 DECEMBRE 1984 * * LANGAGE: * -------- * * FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCREEL -INC PPARAM -INC CCOPTIO * * REGROUPEMENT DES INFORMATIONS SUR LA SUITE DE PULSATIONS AU CARRE: COMMON/CINTVA/IMULTP,IPW2,W2A,W2I,W2B,NBW2,IPNUM,NUMW2A,NUMW2I, & NUMW2B ,IUN * LOGICAL CONVRG,LIMAGE * PARAMETER (LPROPR = 5) * REAL*8 PROPRE(LPROPR),DEUXPI * PARAMETER (JREPET = 4) PARAMETER (ITERMX = 30) PARAMETER (PRECI1 = 1.D-5) PARAMETER (PRECI2 = 1.D-5) PARAMETER (DEUXPI = (2.D0*XPI)) PARAMETER (NUMACC = 5) * * W2AA = W2A W2BB = W2B * IF(IMULTP.EQ.1) THEN JREPE1=1 ITRMX1=10 ELSE JREPE1=JREPET ITRMX1=ITERMX ENDIF * * DO 100 IB100=1,JREPE1 ***************************************************** IF(IIMPI.EQ.30) WRITE(IOIMP,1000) IB100,JREPE1,ITRMX1,IMULTP 1000 FORMAT(/10X,'SBR INTVA3 IB100,JREPE1,ITRMX1,IMULTP', C 4(I5,1X)) ***************************************************** * * -- CREATION DE (K-W2M) -- * W2 = (W2AA + W2BB) / 2.D0 IF (IIMPI .EQ. 30) THEN FREQ = SQRT(W2) / DEUXPI WRITE (IOIMP,2010) W2,FREQ 2010 FORMAT (//,' DECALAGE DE LA MATRICE DE RIGIDITE ', & 'CORRESPONDANT A LA PULSATION AU CARRE ',1PE12.5, & ' (FREQUENCE: ',1PE12.5,').'///) END IF IF (IERR .NE. 0) RETURN * * -- INITIALISATION DES ITERATIONS: CREATION D'UN 'CHPOINT' * ALEATOIRE -- * IF (IB100 .EQ. 1) THEN * * CALCUL DE M*X * IF (IERR .NE. 0) RETURN * END IF * * DUPLIQUER IPMX QUI EST DETRUIT DANS ITINV * CALL COPIER IF(IERR.NE.0) RETURN ICODE=1 IF(IERR.NE.0) RETURN * * -- RESOLUTION PAR ITERATIONS INVERSES -- * & ,PRECI1,PRECI2,IPMX) IF (IERR .NE. 0) RETURN IF (CONVRG) THEN * --> SORTIE DE BOUCLE N.100 GOTO 102 ELSE IF (IB100 .LT. JREPE1) THEN ** MESSAGE POUR ANNONCER QUE L'ON DEPASSE "ITRMX1" ITERATIONS ** ?????????????????????????????????????????????????????????? IF (IERR .NE. 0) RETURN * AJUSTEMENT DU DECALAGE: IF (NUMW2 .EQ. NUMW2A) THEN W2AA = W2 ELSE * RQ: NUMW2 VAUT NUMW2B W2BB = W2 END IF END IF * 100 CONTINUE * END DO 102 CONTINUE * CALL DTCHPO(IPM1) * IF (.NOT.CONVRG) THEN INTERR(1) = ITRMX1 * JREPE1 NUMERR = 151 END IF * * -- FREQUENCE PROPRE -- * IF (IERR .NE. 0) RETURN PROPRE(1) = FREQPP * IF (IIMPI .EQ. 747) THEN WRITE (IOIMP,*) 'FREQUENCE PROPRE CALCULEE = ',FREQPP WRITE (IOIMP,*) '-------------------------' WRITE (IOIMP,*) 'CHPOINT PROPRE:' END IF * * RQ: LE MODE PROPRE CORRESPOND AU COUPLE (FREQPP,IPVECP), * "IPVECP" ETANT UN POINTEUR SUR UN SEGMENT DE 'CHPOINT'. * * -- CREATION DE L'OBJET REPRESENTANT LE MODE -- * FREQ = SQRT(ABS(W2)) / DEUXPI IF(LIMAGE) THEN FREQ = SIGN (FREQ,W2) ENDIF NUMOD2 = 0 c CALL CREMOD (PROPRE,IPVECP,IPKW2M,INF0,FREQ,NUMOD2,IPMODE) IF (IERR .NE. 0) RETURN * * IMPRESSION DU MODE( ON N'IMPRIME PAS LE CHPOINT) IF (IIMPI.EQ.2) THEN WRITE (IOIMP,2000) 2000 FORMAT ('1MODE PROPRE CALCULE:'/' --------------------'//) ENDIF * * -- SUPPRESSION DES OBJETS DE TRAVAIL -- * * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales