projba
C PROJBA SOURCE CB215821 20/11/25 13:37:15 10792 IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) C======================================================================= C SUBROUTINE APPELE PAR L OPERATEUR PJBA : PROJECTION DU CHPOINT IP1 SUR C LES ELEMENTS DE LA BASE MODALE IP2, SOUS BASE IP4. C LE RESULTAT EST MIS DANS IRET (CHPOINT). C POUR DEBOGUER IMPEC=10 C C PROGRAMME PAR FARVACQUE C APPELE PAR PJBA C APPELLE : ETALPR,ETALCH,ERREUR(108,302,303) C======================================================================= -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMCHPOI -INC SMELEME -INC SMATTAC -INC SMBASEM -INC SMSOLUT -INC CCHAMP SEGMENT ITRAV(2) SEGMENT ITTT(0) SEGMENT ICPR(nbpts) SEGMENT IINC CHARACTER*(LOCOMP) CIINC(0) ENDSEGMENT SEGMENT IIDU CHARACTER*(LOCOMP) CIIDU(NNI1) ENDSEGMENT SEGMENT/MVA/(VA(NNI1,IPR1)*D),MVA1.MVA SEGMENT IPB(IPR1) SEGMENT MCONTR(NNI1,IPR1) SEGMENT/IWRK/(ITRAVV(LDEPL1,2),TRAV(LDEPL)*D) CHARACTER*(LOCOMP) IDDL DATA IMPEC/10/ DATA KZERO/0/ C IRET=0 C C DEPLACEMENT IMPOSE => IDEPI=1 C FORCE IMPOSEE => IDEPI=0 C IDEPI=0 C IDEPI=-1 KDEPI=0 MCHPOI=IP1 SEGACT MCHPOI IF(MTYPOI.EQ.'FLX ') IDEPI=1 C IF(MTYPOI(1).EQ.MOFORC(1).AND.MTYPOI(2).EQ.MOFORC(2)) IDEPI=0 SEGDES MCHPOI C IF(IDEPI.LT.0) THEN C MOTERR(1:8)='CHPOINT' C CALL ERREUR(302) C RETURN C ENDIF C NBNN=1 NBREF=0 NBSOUS=0 MBASEM=IP2 SEGACT MBASEM SEGINI ITRAV SEGINI ITTT MSOBAS=LISBAS(IP4) SEGDES MBASEM SEGACT MSOBAS ITRAV(1)=IBSTRM(2) ITRAV(2)=IBSTRM(3) SEGDES MSOBAS C DO 1 IT=1,2 MSOLUT=ITRAV(IT) IF(MSOLUT.EQ.0) GO TO 1 SEGACT MSOLUT MSOLEN=MSOLIS(5) IF(IT.EQ.2) MSOLE1=MSOLIS(10) MELEME=MSOLIS(3) SEGDES MSOLUT SEGACT MSOLEN LDEPL=ISOLEN(/1) LDEPL1=LDEPL+1 IF(IT.EQ.2) SEGINI IWRK IF(IIMPI.EQ.IMPEC)WRITE(6,8000) IT,MSOLEN,MSOLE1,LDEPL 8000 FORMAT(' *****IT=',I4,' MSOLEN=',I5,' MSOLE1=',I5,' LDEPL=',I5) C C **** ETALPR DU CHPOINT DE LA SOLUTION C IPM=ISOLEN(1) IF(IERR.NE.0) GO TO 5000 MCONTR=KCONTR SEGACT MCONTR NNI1=MCONTR(/1) IPR1=MCONTR(/2) SEGDES MCONTR SEGINI MVA KMVA=MVA SEGDES MVA SEGINI MVA KMVB=MVA SEGDES MVA SEGINI IPB KIPB=IPB SEGDES IPB IINC=KIINC SEGACT IINC SEGINI IIDU DO 6 I=1,NNI1 IDDL=CIINC(I) DO 7 J=1,LNOMDD IF(IDDL.NE.NOMDD(J))GO TO 7 CIIDU(I)=NOMDU(J) GO TO 6 7 CONTINUE MOTERR=IDDL C ON NE TROUVE PAS IDDL DANS CCHAMP GO TO 5000 6 CONTINUE SEGDES IINC,IIDU KINCDU=IIDU IF(IIMPI.EQ.IMPEC)WRITE(6,8002)(CIINC(I),CIIDU(I),I=1,NNI1) 8002 FORMAT(20(1X,A4)) C C **** ON REGARDE SI LES POINTS DE F CORRESPONDENT C **** ON MET F DANS KMVB C IF(IERR.NE.0) GO TO 5000 C C **** SI IT=1 ON INITIALISE MSOUPO,MPOVAL,MELEME C IF(IT.NE.1) GO TO 100 NC=1 SEGINI MSOUPO NOCOMP(1)='FALF' N=LDEPL SEGINI MPOVAL IPOVAL=MPOVAL IGEOC=MELEME SEGDES MSOUPO IF(IDEPI.EQ.1) MSOLE2=MSOLIS(4) 100 CONTINUE IF(IT.EQ.2) SEGACT MSOLE1 ICON1=0 ICON2=0 SEGACT MSOLEN,MELEME C C ****BOUCLE SUR LES CHPOINTS DE DEPL C DO 11 IM=1,LDEPL XRET=0.D0 IPP1=ISOLEN(IM) IPOIN=NUM(1,IM) IF(IIMPI.EQ.IMPEC)WRITE(6,8003) IPP1,IPOIN 8003 FORMAT(' IPP1=',I6,' IPOIN=',I6) IF(IT.EQ.1.OR.IDEPI.NE.1) THEN IF(IERR.NE.0) GO TO 5000 C MVA=KMVA IPB=KIPB MVA1=KMVB SEGACT MVA,MVA1,IPB DO 80 J1=1,NPR2 JJ1=IPB(J1) DO 80 I1=1,NNI1 XRET=XRET+VA(I1,JJ1)*MVA1.VA(I1,JJ1) 80 CONTINUE SEGDES MVA,MVA1,IPB ENDIF C IF(IT.EQ.1) THEN IF(IDEPI.EQ.1) THEN MMODE=MSOLE2.ISOLEN(IM) SEGACT MMODE OM=FMMODD(1) SEGDES MMODE OM=2.D0*XPI*OM OM=OM*OM XRET=-XRET/OM ENDIF VPOCHA(IM,1)=XRET ELSE MJONCT=MSOLE1.ISOLEN(IM) IF(IIMPI.EQ.IMPEC)WRITE(6,8004) MJONCT 8004 FORMAT(' MJONCT=',I6) SEGACT MJONCT IF(MJODDL.EQ.'LX') THEN ITRAVV(IM,1)=IPOIN ICON1=ICON1+1 ELSE ITRAVV(IM,2)=IPOIN ICON2=ICON2+1 IF(IP1.EQ.IPCHJO(1)) THEN XRET=1.D0 KDEPI=1 ENDIF ENDIF SEGDES MJONCT TRAV(IM)=XRET ENDIF 11 CONTINUE SEGDES MSOLEN,MELEME SEGSUP MVA,MVA1,IPB ICPR=KICPR SEGSUP ICPR,IINC,IIDU C GO TO(31,32),IT C 31 SEGDES MPOVAL,MELEME ITTT(**)=MSOUPO GO TO 30 32 CONTINUE ITRAVV(LDEPL1,1)=ICON1 ITRAVV(LDEPL1,2)=ICON2 DO 40 I=1,2 NBELEM=ITRAVV(LDEPL1,I) IF(NBELEM.EQ.0) GO TO 40 SEGINI MELEME NC=1 SEGINI MSOUPO IF(I.EQ.1) NOCOMP(1)='FBET' IF(I.EQ.2) NOCOMP(1)='BETA' N=NBELEM SEGINI MPOVAL IPOVAL=MPOVAL IGEOC=MELEME SEGDES MSOUPO ITTT(**)=MSOUPO IK=0 DO 41 J=1,LDEPL IF(ITRAVV(J,I).EQ.0) GO TO 41 IK=IK+1 NUM(1,IK)=ITRAVV(J,I) VPOCHA(IK,1)=TRAV(J) 41 CONTINUE SEGDES MPOVAL,MELEME 40 CONTINUE SEGDES MSOLE1 SEGSUP IWRK C 30 CONTINUE 1 CONTINUE C C **** CREATION DU CHPOINT C NSOUPO=ITTT(/1) NAT=1 SEGINI MCHPOI DO 60 I=1,NSOUPO IPCHP(I)=ITTT(I) 60 CONTINUE MOCHDE=' J''AI ETE FABRIQUE PAR L''OPERATEUR PROJBA' * Champ de forces nodales: nature discrete JATTRI(1)=2 SEGDES MCHPOI IRET=MCHPOI IF(IDEPI.NE.KDEPI) THEN C *** LA BASE NE CONTIENT PAS LA SOLUTION STATIQUE NECESSAIRE AU C *** CALCUL DE LA REPONSE AU DEPLACEMENT IMPOSE IRET=0 ENDIF 5000 CONTINUE SEGSUP ITTT,ITRAV RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales