lispk2
C LISPK2 SOURCE CHAT 05/01/13 01:22:52 5004 1 NPOINT,MELE,XPREC,XEL,BPSS,REL,I70,I343,I157,I158,ILO11,KERRE) C======================================================================= C C EBERSOLT MARS 85 C ENTREES C XE(3,4) = COORDONNEES DE LA POUTRE LINESPRING C EPAI = EPAISSEUR NOEUDS 1 2 3 4 C V1(3) = VECTEUR ORIENTANT LES NOEUDS 1 2 3 4 C XMAT(15) = MATERIAU C XSTRS(NBGS*NSTRS) = CONTRAINTES DANS LE LINESPRING C XCAR(15) = CARACTERISTIQUES C VAR(NBGS*NSTRS) = CONTRAINTES DANS LE LINESPRING C NSTRS = NOMBRE DE CONTRAINTES C NPOINT = NOMBRE DE POINTS D INTEGRATION C MELE = 30 OU 50 NUMERO DE L ELEMENT C XPREC = PRECISION C TABLEAU DE TRAVAIL C XEL(3,3) = COORDONNEES LOCALES C BPSS(3,3) = MATRICE DE PASSAGE C SORTIES C REL(24,24) = MATRICE DE RIGIDITE AXES GLOBAUX C I70 = INDICERNABILITE DES 2 LEVRES C I343 = LA FISSURE DE PROFONDEUR NEGATIVE C I157 = LES 2 LEVRES SONT TROP ELOIGNEES C I158 = FISSURE TOTALEMENT TRAVERSANTE RIGIDITE NULLE C ILO11=-1 = EN DEHORS DE LA SURFACE DE CHARGE C 1 C EST O.K. C KERRE = 0 O.K. C 30 CONTRAINTE ULTIME NULLE C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) PARAMETER(X774=.774596669241483D0) PARAMETER(IZERO=0) PARAMETER(EPS=1.D-3,PENA=1.D6,PENB=1.D2,EPSINV=1.D-3) PARAMETER(XZER=0,UNDEMI=.5D0,UN=1.D0,DEUX=2.D0,SIX=6.D0) PARAMETER(DOUZE=12.D0,TRSIX=36.D0,QUATRE=4.D0) C DIMENSION XE(3,*),REL(24,*),V1(*),BPSS(3,*),XEL(3,*) DIMENSION XSTRS(*),XMAT(*),XCAR(*),VAR(*) DIMENSION S(3),POIDS(3) C XPRECM = - XPREC * UNDEMI XPRECP = XPREC * UNDEMI ILO11=1 KERRE=0 C S(1)=-X774 S(2)= XZER S(3)= X774 POIDS(1)=5.D0/9.D0 POIDS(2)=8.D0/9.D0 POIDS(3)=5.D0/9.D0 C C MISE A XZER DE LA RIGIDITE ET DES INDICATEURS D ERREUR C I70 =0 I343=0 I157=0 I158=0 C IF(XCAR(2).LT.XZER) THEN I343=1 FIS10=XZER ELSE FIS10=XCAR(2) ENDIF C IF(XCAR(12).LT.XZER) THEN I343=1 FIS30=XZER ELSE FIS30=XCAR(12) ENDIF C C EXTRACTION DE LA MATRICE DE PASSAGE C DO 100 IA=1,3 XEL(IA,1)=XE(IA,1) XEL(IA,2)=XE(IA,2) XEL(IA,3)=XE(IA,1)+V1(IA) 100 CONTINUE DJA1=XZER DJA2=XZER DO 105 IA=1,3 DJA1=DJA1+(XE(IA,1)-XE(IA,4))*BPSS(3,IA) DJA2=DJA2+(XE(IA,2)-XE(IA,3))*BPSS(3,IA) 105 CONTINUE DJAC=DJA1*DJA2 IF(DJAC.LT.0.) I195=1 C C HAUT = LARGEUR ENTRE LES NOEUDS 1,4 ET 2,3 C HAUT=XZER XLARG1=XZER XLARG2=XZER DO 110 IA=1,3 HAUT =(XE(IA,2)-XE(IA,1))*(XE(IA,2)-XE(IA,1))+HAUT XLARG1=(XE(IA,4)-XE(IA,1))*(XE(IA,4)-XE(IA,1))+XLARG1 XLARG2=(XE(IA,3)-XE(IA,2))*(XE(IA,3)-XE(IA,2))+XLARG2 110 CONTINUE HAUT =SQRT(HAUT) XLARG1=SQRT(XLARG1) XLARG2=SQRT(XLARG2) EPS1=XLARG1/HAUT EPS2=XLARG2/HAUT IF(EPS1.GT.EPS.OR.EPS2.GT.EPS) I157=1 DJA1=DJA1/HAUT DJA2=DJA2/HAUT IF(DJA1.LT.1.D-3.AND.DJA2.LT.1.D-3) I70=1 ASUR1=FIS10/EPAI ASUR3=FIS30/EPAI ASUR0=(FIS10 + FIS30 ) / EPAI IF(ASUR1.GT..98.AND.ASUR3.GT..98) I158=1 IF(I158.EQ.1) GOTO 666 C C ON RECUPERE LES VALEURS DU MODULE D YOUNG C YOU = XMAT(1) XNU = XMAT(2) C C PENALISATION NORMALE C DDD = YOU * UNDEMI / ( UN - XNU * XNU ) PEWM=DDD *EPAI*PENA*HAUT/SIX PEWF=PEWM*EPAI*EPAI/DOUZE PEWM2=DEUX*PEWM PEWF2=DEUX*PEWF C C PENALISATION SOUS INTEGRE C PEWM15=DDD*EPAI*PENB*HAUT/QUATRE PEWF15=PEWM15*EPAI*EPAI/DOUZE C C PENALISATION DES TERMES CONCERNANT K I SI FISSURE INEXISTANTE C IF(ASUR0.GT.EPSINV) GOTO 366 REL(3 ,3 )=PEWM2 REL(4 ,4 )=PEWF2 REL(9 ,9 )=PEWM2 REL(10,10)=PEWF2 REL(3 ,9 )=PEWM REL(9 ,3 )=PEWM REL(10,4 )=PEWF REL(4 ,10)=PEWF GOTO 466 366 CONTINUE C C INTEGRATION NORMALE C X1=XZER X2=XZER X3=XZER X4=XZER X5=XZER X6=XZER X7=XZER X8=XZER X9=XZER DO 500 IA=1,NPOINT H1=UNDEMI-UNDEMI*S(IA) H2=UNDEMI+UNDEMI*S(IA) NCC = ( IA - 1 ) * 5 NSS = ( IA - 1 ) * NSTRS NVV = ( IA - 1 ) * 2 NMM = ( IA - 1 ) * 5 C ASURW=XCAR(NCC+2)/EPAI YOU = XMAT(NMM+1) XNU = XMAT(NMM+2) DDD = YOU * UNDEMI / ( UN - XNU * XNU ) DELTA=POIDS(IA)*DDD*HAUT*UNDEMI/DELTA C D11 = DELTA * ALFF D12 = DELTA * ALMF * EPAI / SIX D21 = DELTA * ALMF * EPAI / SIX D22 = DELTA * ALMM * EPAI * EPAI / TRSIX C C CALCUL DES DERIVEES C XN = XSTRS(NSS+1) XM = XSTRS(NSS+4) C C VERIFICATION A L INTERIEUR DE LA SURFACE DE CHARGE OU PAS C IF(VAR(NVV+1).EQ.XZER.AND.Q.LE.XZER) THEN ILOPL=0 ELSE IF(VAR(NVV+1).EQ.XZER.AND.Q.GT.XZER) THEN ILOPL=-1 ILO11=-1 ELSE IF(VAR(NVV+1).GT.XZER.AND.Q.LT.XPRECM) THEN ILOPL=0 ELSE IF(VAR(NVV+1).GT.XZER.AND.Q.GE.XPRECM.AND.Q.LE.XPRECP) THEN ILOPL=1 ELSE IF(VAR(NVV+1).GT.XZER.AND.Q.GT.XPRECP) THEN ILOPL=-1 ILO11=-1 ENDIF C C MATRICE DE RAIDEUR OU MATRICE TANGENTE C IF(ILOPL.EQ.1) THEN DFIDN = A * XN + B * XM + E DFIDM = B * XN + D * XM + F U = D11 * DFIDN + D12 * DFIDM V = D21 * DFIDN + D22 * DFIDM C DENOM = U * DFIDN + V * DFIDM D11 = D11 - U * U / DENOM D12 = D12 - U * V / DENOM D21 = D21 - V * U / DENOM D22 = D22 - V * V / DENOM ENDIF 111 CONTINUE C X1=X1+H1*H1*D11 X2=X2-H1*H1*D12 X3=X3+H1*H1*D22 C X4=X4+H1*H2*D11 X5=X5-H1*H2*D12 X6=X6+H1*H2*D22 C X7=X7+H2*H2*D11 X8=X8-H2*H2*D12 X9=X9+H2*H2*D22 500 CONTINUE C C MISE EN PLACE DANS LA MATRICE DE RIGIDITE C REL(3 ,3 )=X1 REL(3 ,4 )=X2 REL(4 ,3 )=X2 REL(4 ,4 )=X3 C REL(9 ,3 )=X4 REL(9 ,4 )=X5 REL(10,3 )=X5 REL(10,4 )=X6 C REL(3 ,9 )=X4 REL(3 ,10)=X5 REL(4 ,9 )=X5 REL(4 ,10)=X6 C REL(9 ,9 )=X7 REL(9 ,10)=X8 REL(10,9 )=X8 REL(10,10)=X9 C C PENALISATION DES TERMES NE CONCERNANT PAS K I C 466 CONTINUE C IF(MELE.EQ.30) THEN REL(1 ,1 )=PEWM2 REL(2 ,2 )=PEWM2 REL(6 ,6 )=PEWF2 C REL(7 ,7 )=PEWM2 REL(8 ,8 )=PEWM2 REL(12,12)=PEWF2 C REL(1 ,7 )=PEWM REL(7 ,1 )=PEWM REL(2 ,8 )=PEWM REL(8 ,2 )=PEWM REL(6 ,12)=PEWF REL(12,6 )=PEWF C ELSE IF(MELE.EQ.50) THEN REL(1 ,1 )=PEWM15 REL(2 ,2 )=PEWM15 REL(6 ,6 )=PEWF15 C REL(7 ,7 )=PEWM15 REL(8 ,8 )=PEWM15 REL(12,12)=PEWF15 C REL(1 ,7 )=PEWM15 REL(7 ,1 )=PEWM15 REL(2 ,8 )=PEWM15 REL(8 ,2 )=PEWM15 REL(6 ,12)=PEWF15 REL(12,6 )=PEWF15 ENDIF C C DOUBLE SYMETRISATION A PARTIR D UNE MATRICE 12 12 ON A UNE 24 24 C DO 900 IA=1,6 DO 900 IB=1,6 C REL(IA+18,IB+18)= REL(IA ,IB ) REL(IA ,IB+18)=-REL(IA ,IB ) REL(IA+18,IB )=-REL(IA ,IB ) C REL(IA+12,IB+12)= REL(IA+6,IB+6) REL(IA+6 ,IB+12)=-REL(IA+6,IB+6) REL(IA+12,IB+6 )=-REL(IA+6,IB+6) C REL(IA+12,IB+18)= REL(IA+6,IB ) REL(IA+18,IB+12)= REL(IA+6,IB ) C REL(IA ,IB+12)=-REL(IA+6,IB ) REL(IA+12,IB )=-REL(IA+6,IB ) C REL(IA+18,IB+6 )=-REL(IA+6,IB ) REL(IA+6 ,IB+18)=-REL(IA+6,IB ) C 900 CONTINUE C C CHANGEMENT DU REPERE EN FONCTION DE BPSS C C 666 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales