psevo1
C PSEVO1 SOURCE BP208322 22/09/09 21:15:05 11448 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) ************************************************************************ * * P S E V O 1 * ----------- * * FONCTION: * --------- * * AJOUTE LA CONTRIBUTION DES MODES NEGLIGES * POUR LES DEPLACEMENTS SI ICONT=0 * POUR LES CONTRAINTES SI ICONT=1 * * MODULES UTILISES: * ----------------- * -INC PPARAM -INC CCOPTIO -INC SMATTAC -INC SMCHARG -INC SMCHPOI -INC SMELEME -INC SMLREEL -INC SMSOLUT * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * IMODE (E) OBJET SOLUTION DE SOUS-TYPE MODE. * IPSMO (E) OBJET SOLUTION DE SOUS-TYPE PSEUMODE. * IBOO (E) POINTEUR SUR LE SEGMENT NUMOO. * (S) POINTEUR SUR LE SEGMENT NUMOO. * IPX (E) POINTEUR SUR LE LISTREEL. * ILEX (E) CONTIENT LES FORCES DE LIAISON AUX TEMPS DEMANDES. * ICHAR (E) POINTEUR SUR LE CHARGEMENT. * SEGMENT NUMOO CHARACTER*(LOCHPO) NUDDL(N) ENDSEGMENT * * VARIABLES: * ---------- * PARAMETER (TOLER = 1.D-6) * * * AUTEUR, DATE DE CREATION: * ------------------------- * * LIONEL VIVAN SEPTEMBRE 1988 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * IF (ICHAR.EQ.0 .AND. ILEX.EQ.0) THEN RETURN ENDIF * NUMOO = IBOO SEGACT NUMOO DO 2 I = 1,NP MLREE3 = KLIST(I) SEGACT MLREE3 2 CONTINUE * MLREEL= IPX SEGACT MLREEL * IF (ICHAR.NE.0) THEN MCHARG = ICHAR SEGACT MCHARG NCH = KCHARG(/1) ENDIF * MSOLUT = IPSMO SEGACT MSOLUT * MSOLEN = MSOLIS(10) SEGACT MSOLEN NPS = ISOLEN(/1) * IF (ICONT.EQ.0) MSOLE1 = MSOLIS(5) IF (ICONT.EQ.1) MSOLE1 = MSOLIS(6) SEGACT MSOLE1 * IF (ILEX.NE.0) THEN MSOLE2 = ILEX SEGACT MSOLE2 ENDIF * DO 10 IP = 1,NPS MJONCT = ISOLEN(IP) SEGACT MJONCT MONTYP = MJOTYP * * PSEUDO-MODE D'UNE STRUCTURE MULTISUPPORTEE * IF (MONTYP.EQ.'DEPL') THEN IF (ICHAR.EQ.0) THEN SEGDES MJONCT GOTO 10 ENDIF ICHM = IPCHJO(1) * RECHERCHE DU CHARGEMENT DO 12 IC = 1,NCH ICHARG = KCHARG(IC) SEGACT ICHARG IF(CHATYP.NE.'CHPOINT '.OR.CHAMOB(IC).NE.'STAT' & .OR.CHALIE(IC).NE.'LIE ') THEN SEGDES ICHARG GOTO 12 ENDIF ICHC = ICHPO1 IF (ICHC.EQ.ICHM) THEN * ON A TROUVE LE CHARGEMENT GOTO 100 ENDIF SEGDES ICHARG 12 CONTINUE * * MANQUE LE CHARGEMENT POUR LE PSEUDO-MODE * INTERR(1) = IP SEGDES MJONCT GOTO 10 * * PSEUDO-MODE D'UNE FORCE CONCENTREE * ELSE IF (MONTYP.EQ.'FORC') THEN IF (ICHAR.EQ.0) THEN SEGDES MJONCT GOTO 10 ENDIF ICHM = IPCHJO(1) * RECHERCHE DU CHARGEMENT DO 22 IC = 1,NCH ICHARG = KCHARG(IC) SEGACT ICHARG IF(CHATYP.NE.'CHPOINT '.OR.CHAMOB(IC).NE.'STAT' & .OR.CHALIE(IC).NE.'LIE ') THEN SEGDES ICHARG GOTO 22 ENDIF ICHC = ICHPO1 IF (ICHC.EQ.ICHM) THEN * ON A TROUVE LE CHARGEMENT GOTO 100 ENDIF SEGDES ICHARG 22 CONTINUE * * IL N'Y A PAS DE CHARGEMENT POUR CE TYPE DE PSEUDO-MODE * INTERR(1) = IP SEGDES MJONCT GOTO 10 * * PSEUDO-MODE D'UNE EXCITATION SISMIQUE D'ENSEMBLE * ELSE IF (MONTYP.EQ.'SEIS') THEN IF (ICHAR.EQ.0) THEN SEGDES MJONCT GOTO 10 ENDIF DIRECT = MJODDL IF (DIRECT.EQ.'UX ') THEN IPLAC = 3 ELSE IF (DIRECT.EQ.'UY ') THEN IPLAC = 4 ELSE IPLAC = 5 ENDIF MSO1 = IMODE SEGACT MSO1 MSOLE2 = MSO1.MSOLIS(4) SEGDES MSO1 SEGACT MSOLE2 MMODE = MSOLE2.ISOLEN(1) SEGDES MSOLE2 SEGACT MMODE QPS = -1.D0 * FMMODD(IPLAC) SEGDES MMODE * RECHERCHE DU CHARGEMENT DO 32 IC = 1,NCH ICHARG = KCHARG(IC) SEGACT ICHARG IF(CHATYP.NE.'CHPOINT '.OR.CHAMOB(IC).NE.'STAT' & .OR.CHALIE(IC).NE.'LIE ') THEN SEGDES ICHARG GOTO 32 ENDIF MCHPOI = ICHPO1 SEGACT MCHPOI MSOUPO = IPCHP(1) SEGDES MCHPOI SEGACT MSOUPO MPOVAL = IPOVAL SEGDES MSOUPO SEGACT MPOVAL QXYZ = VPOCHA(1,1) SEGDES MPOVAL EPS = ABS(QPS - QXYZ) IF (EPS.LT.TOLER) THEN * ON A TROUVE LE CHARGEMENT GOTO 100 ENDIF SEGDES ICHARG 32 CONTINUE * * IL N'Y A PAS DE CHARGEMENT CORRESPONDANT AU PSEUDO-MODE * INTERR(1) = IP SEGDES MJONCT GOTO 10 * * PSEUDO-MODE D'UNE FORCE DE CHOC * ELSE IF (MONTYP.EQ.'CHOC') THEN IF (ILEX.EQ.0) THEN SEGDES MJONCT GOTO 10 ENDIF GOTO 100 ENDIF * 100 CONTINUE IF (ICONT.EQ.0) THEN ICHP = MSOLE1.ISOLEN(IP) ELSE ICCC = MSOLE1.ISOLEN(IP) IF (IRETOU.EQ.0) THEN INTERR(1) = IP SEGDES MJONCT GOTO 10 ENDIF ENDIF * IF (ICHAR.NE.0) THEN MLREE1 = ICHPO2 SEGACT MLREE1 MLREE2 = ICHPO3 SEGACT MLREE2 ENDIF * N1 = 1 N2 = 2 DO 110 IT = 1,LDIM IF (MONTYP.EQ.'CHOC') THEN FTEM1 = 0.D0 IPOINP = MJOPOI COMP = MJODDL * RECHERCHE DANS LE CHPOINT DES FORCES DE LIAISON ICHLIA = MSOLE2.ISOLEN(IT) IF (IRET.NE.1) THEN INTERR(1) = IP SEGDES MJONCT GOTO 10 ENDIF ELSE IF (IRETOU.EQ.0) THEN INTERR(1) = IP SEGDES MLREE1 SEGDES MLREE2 SEGDES ICHARG SEGDES MJONCT GOTO 10 ENDIF ENDIF * DO 120 I3 = 1,NP IF (IRET.NE.1) THEN IF (ICHAR.NE.0) THEN SEGDES MLREE1 SEGDES MLREE2 SEGDES ICHARG ENDIF INTERR(1) = IP SEGDES MJONCT GOTO 10 ENDIF XVAL = XFLOT1 * FTEM1 * IF (IIMPI.EQ.1804) THEN PRINT*,'-- PRISE EN COMPTE DES PSEUDO-MODES -- XVAL :',XVAL ENDIF * MLREE3 = KLIST(I3) 120 CONTINUE * 110 CONTINUE IF (ICONT.EQ.1) THEN MCHPO1=ICHP SEGSUP MCHPO1 ENDIF IF (ICHAR.NE.0) THEN SEGDES MLREE1 SEGDES MLREE2 SEGDES ICHARG ENDIF SEGDES MJONCT * 10 CONTINUE * SEGDES MLREEL SEGDES MSOLE1 SEGDES MSOLEN SEGDES MSOLUT IF (ILEX.NE.0) THEN SEGDES MSOLE2 ENDIF IF (ICHAR.NE.0) THEN SEGDES MCHARG ENDIF DO 4 I = 1,NP MLREE3 = KLIST(I) SEGDES MLREE3 4 CONTINUE * * SEGDES NUMOO IBOO = NUMOO * RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales