bsigm3
C BSIGM3 SOURCE CB215821 24/04/12 21:15:08 11897 & MELE,CMATE,IVASTR,ISOUS,NBPGAU,NBPTEL,IPMINT,NFOR,IVAFOR & ,ADPG,BDPG,CDPG,IIPDPG,IVAMAT,NMATT,MFR,dcmate) *---------------------------------------------------------------------- * _______________________________ * * | | * * | calcul des forces aux noeuds| * * |______________________________| * * * * poutre,tuyau,linespring,tuyau fissure,barre,cerce,tuyo * * poutre de timoschenko,shb8,joi1,zone_cohesive * * *---------------------------------------------------------------------* * * * entrees : * * ________ * * * * ipmail pointeur sur un segment meleme * * lre nombre de ddl dans la matrice de rigidite * * nstrs nombre de composante de contraintes/deformations * * lw dimension du tableau de travail de l'element * * ivacar pointeur sur les chamelems de caracteristiques géo. * * ncarr nombre de caracteristiques geometriques * * ivamat pointeur sur les chamelems de caracteristiques mat. * * nmatt nombre de caracteristiques matériau * * ivect flag indiquant si on a entree les axes locaux * * mele numero de l'element fini * * ivastr pointeur sur un segment mptval contenant les * * les melvals de contraints * * isous numero de la sous-zone * * nbpgau nombre de points d'integration pour les contraintes * * nbptel nombre de points par element * * ipmint pointeur sur un segment minte * * nfor nombre de composantes de forces * * * * sorties : * * ________ * * * * ivafor pointeur sur un segment mptval contenant les * * les melvals de forces * * * *---------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCHAML -INC SMCHPOI -INC SMELEME -INC SMCOORD -INC SMMODEL -INC SMINTE -INC SMLMOTS c SEGMENT WRK1 REAL*8 XFORC(LRE), XSTRS(NSTRS), XE(3,NBBB) ENDSEGMENT * SEGMENT WRK2 REAL*8 SHPWRK(6,NBNN), BGENE(NSTRS,LRE) ENDSEGMENT * SEGMENT WRK3 ENDSEGMENT * SEGMENT WRK4 REAL*8 BPSS(3,3), XEL(3,NBBB), XFOLO(LRE) ENDSEGMENT * SEGMENT WRK5 REAL*8 XGENE(NSTN,LRN) ENDSEGMENT * segment pour shb8 SEGMENT WRK7 REAL*8 PROPEL(24),D(3) REAL*8 rel(24,24),work1(30) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT POINTEUR MPTVA1.MPTVAL,MPTVA2.MPTVAL * CHARACTER*4 lesinc(7),lesdua(7) DATA lesinc/'UX','UY','UZ','RX','RY','RZ','UR'/ DATA lesdua/'FX','FY','FZ','MX','MY','MZ','FR'/ CHARACTER*8 CMATE logical dcmat2,dcmate dcmat2 = .false. MELEME=IPMAIL SEGACT MELEME NBNN=NUM(/1) NBELEM=NUM(/2) * * introduction des coord du point autour duquel se fait le * mouvement de la section en defo plane generalisee * et initialisation des forces au noeud support de la defo * plane generalisee * ADPG=0.D0 BDPG=0.D0 CDPG=0.D0 IF (IFOUR.EQ.-3)THEN IP=IIPDPG SEGACT MCOORD IREF=(IP-1)*(IDIM+1) XDPGE=XCOOR(IREF+1) YDPGE=XCOOR(IREF+2) ELSE XDPGE=0.D0 YDPGE=0.D0 ENDIF * NHRM=NIFOUR MINTE=IPMINT * c_______________________________________________________________________ c_______________________________________________________________________ c c numero des etiquettes : c etiquettes de 1 a 98 pour traitement specifique a l element c dans la zone specifique a chaque element commencant par : c 5 continue c element 5 etiquettes 1005 2005 3005 4005 ... c 44 continue c element 44 etiquettes 1044 2044 3044 4044 ... c_______________________________________________________________________ c IF (MELE.LE.100) &GOTO (99,2,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 1 99,99,99,99,99,99,99,99,29,30,99,99,99,99,99,99,99,99,99,99, 2 99,29,43,99,45,46,99,99,99,30,99,99,99,99,99,99,99,99,99,99, 3 99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 4 99,99,99,29,99,99,99,99,99,99,99,99,99,99,46,96,99,99,99,99 5 ),MELE IF (MELE.LE.200) &GOTO (99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99, 1 99,99,46,124,125,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 2 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 3 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 4 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 5 34),MELE-100 IF (MELE.LE.300) &GOTO (34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 1 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 2 34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34, 3 260,34,34,34,34,265,266,266,266,99,99,271,272),MELE-200 c 34 CONTINUE GOTO 99 C____________________________________________________________________ C C ELEMENT SEG2 (pour IMPEDANCE) C____________________________________________________________________ C 2 CONTINUE IF (CMATE.EQ.'IMPELAST'.OR.CMATE.EQ.'IMPVOIGT'.OR. & CMATE.EQ.'IMPREUSS'.OR .cmate.eq.'IMPCOMPL') THEN * detection impedance "sur mesure" MPTVA1=IVASTR MPTVAL=IVAFOR if (ival(/1).eq.mptva1.ival(/1)*2) dcmat2 = .true. ENDIF DO 310 IB=1,NBELEM C ON CHERCHE LES CONTRAINTES - C MPTVA1=IVASTR numstr = mptva1.ival(/1) C RANGEMENT DANS MELVAL C MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR if (dcmat2) then if(icomp.le.numstr) then melva1 = mptva1.ival(icomp) else melva1 = mptva1.ival(icomp - numstr) endif if (igau.lt.2) then melval = ival(icomp) else melval = ival(icomp + nfor) endif else MELVA1=MPTVA1.IVAL(ICOMP) MELVAL=IVAL(ICOMP) endif IBMN=MIN(IB ,VELCHE(/2)) IBM1=MIN(IB ,MELVA1.VELCHE(/2)) IGM1=MIN(IGAU,MELVA1.VELCHE(/1)) VELCHE(IGAU,IBMN)= MELVA1.VELCHE(IGM1,IBM1) enddo enddo 310 CONTINUE GO TO 510 c_______________________________________________________________________ c_______________________________________________________________________ c c elements poutre et poutre de timoschenko c_______________________________________________________________________ c 29 CONTINUE if (dcmate) goto 2 NBBB=NBNN SEGINI WRK1,WRK3 c NCARR1=NCARR c DO 3029 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l elementib c c c il faudrait aussi modifier le vecteur local de la poutre c c rangement des caracteristiques dans work C C MPTVAL=IVACAR if(mptval.ne.0) then DO 6029 IC=1,NCARR1 MELVAL=IVAL(IC) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) DO 4029 IGAU=1,NBNN IGMN=MIN(IGAU,VELCHE(/1)) 4029 CONTINUE ENDIF 6029 CONTINUE endif c c cas ou on a lu le mot vecteur C IF (IFOUR.NE.-2) THEN C C ENDIF C c cas des tuyaux - on calcule les caracteristiques de la poutre c equivalente c IF(MELE.EQ.42) THEN IF (KERRE.EQ.77) THEN GOTO 510 ENDIF ENDIF c c on cherche les contraintes - c MPTVAL=IVASTR IE=9 DO IGAU=1,2 DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) enddo enddo c c on calcule les forces internes c IF(MELE.EQ.84) THEN IF(CMATE.NE.'SECTION') THEN IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE ENDIF ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE ENDIF ENDIF ELSE IF (IFOUR.EQ.-2.OR.IFOUR.EQ.-1.OR.IFOUR.EQ.-3) THEN ELSE ENDIF ENDIF IF(KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB SEGSUP WRK1,WRK3 GO TO 510 ENDIF c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3029 CONTINUE SEGSUP WRK1,WRK3 GO TO 510 c_______________________________________________________________________ c c elements lisp et lism c_______________________________________________________________________ c 30 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3,WRK4 c DO 3030 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l element ib c c c c on cherche les contraintes c IE=0 MPTVAL=IVASTR DO IGAU=1,NBPGAU DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) enddo enddo c c on cherche les caracteristiques c MPTVAL=IVACAR DO IGAU=1,NBPGAU DO ICOMP=1,NCARR IE=IE+1 MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) ELSE ENDIF enddo enddo c c on calcule b*sigma c ICNT=NBPGAU*NSTRS+1 c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,6 IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3030 CONTINUE SEGSUP WRK1,WRK3,WRK4 GOTO 510 c_______________________________________________________________________ c c element tuyau fissure c_______________________________________________________________________ c 43 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3 c DO 3043 IB=1,NBELEM c c on cherche les contraintes c IE=0 MPTVAL=IVASTR DO IGAU=1,NBPTEL DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) enddo enddo c c on cherche les caracteristiques c MPTVAL=IVACAR DO 5043 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IBMN=MIN(IB ,VELCHE(/2)) ELSE ENDIF 5043 CONTINUE c c on calcule les forces internes c c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3043 CONTINUE SEGSUP WRK1,WRK3 GO TO 510 c_______________________________________________________________________ c c element point (poi1) defos planes generalisees/materiau IMPEDANCE c_______________________________________________________________________ c 45 CONTINUE NBBB=NBNN * * IF ((CMATE.EQ.'IMPELAST').OR.(CMATE.EQ.'IMPVOIGT').OR. & (CMATE.EQ.'IMPREUSS').OR .cmate.eq.'IMPCOMPL'.or. & cmate.eq.'MODAL'.or.cmate.eq.'STATIQUE') THEN mptva1 = ivastr mptval = ivafor segact mptva1,mptval do iv = 1,ival(/1) melva1 = mptva1.ival(iv) melval = ival(iv) segact melva1,melval*mod DO IB=1,NBELEM DO 4145 IGAU=1,NBNN IGMN=MIN(IGAU,MELVA1.VELCHE(/1)) IBMN=MIN(IB ,MELVA1.VELCHE(/2)) valstr = MELVA1.VELCHE(IGMN,IBMN) VELCHE(IGMN,IBMN) = valstr 4145 CONTINUE ENDDO enddo GOTO 510 ENDIF * IF(MELE.EQ.45.AND.IFOUR.NE.-3) THEN GO TO 99 ENDIF * SEGINI WRK1,WRK3 c DO 3045 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l element ib c c c mise a zero des forces internes c c c on cherche l'effort c MPTVAL=IVASTR MELVAL=IVAL(1) IBMN=MIN(IB ,VELCHE(/2)) EFFORT=VELCHE(1,IBMN) c c on calcule les forces internes c ADPG=ADPG+XFORC(3) BDPG=BDPG+XFORC(4) CDPG=CDPG+XFORC(5) c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR-3 IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3045 CONTINUE c SEGSUP WRK1,WRK3 GO TO 510 c_______________________________________________________________________ c c elements barre et cerce c_______________________________________________________________________ c 46 CONTINUE NBBB=NBNN * IF(MELE.EQ.95.AND.IFOUR.NE.0.AND.IFOUR.NE.1) THEN GO TO 99 ENDIF * SEGINI WRK1,WRK3 c DO 3046 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l element ib c C IF(MELE.EQ.123) THEN c c on cherche l'effort c IE=0 MPTVAL=IVASTR DO IGAU=1,NBPTEL DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) enddo enddo c c on calcule les forces internes c c ELSE c c on cherche l'effort c MPTVAL=IVASTR MELVAL=IVAL(1) NPPTEL=VELCHE(/1) IBMN=MIN(IB ,VELCHE(/2)) IF(NPPTEL.EQ.1) THEN EFFORT=VELCHE(1,IBMN) ELSE IF(NPPTEL.EQ.2) THEN EFFOR1=VELCHE(1,IBMN) EFFOR2=VELCHE(2,IBMN) EFFORT=0.5D0*(EFFOR1+EFFOR2) ENDIF c c on calcule les forces internes c ENDIF C IF(KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB SEGSUP WRK1,WRK3 GO TO 510 ENDIF c c rangement dans melval c NFOD=NFOR IF (IFOUR.EQ.-3.AND.MELE.EQ.46) NFOD=NFOR-3 IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOD IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3046 CONTINUE SEGSUP WRK1,WRK3 GO TO 510 C_______________________________________________________________________ C C ELEMENT BARRE 3D EXCENTRE (BAEX) C_______________________________________________________________________ C 124 CONTINUE NBBB=NBNN NSTN=NBNN LRN =LRE SEGINI WRK1,WRK3,WRK5 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C KERRE=0 DO 3124 IB=1,NBELEM C C ON RECUPERE LA SECTION DE L'ELEMENT, SES EXCENTREMENTS ET SON C ORIENTATION. LES CARACTERISTIQUES SONT RANGEES DANS WORK C SELON L'ORDRE SUIVANT: SECT EXCZ EXCY VX VY VZ C MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO C C XGENE STOCKE LA MATRICE DE PASSAGE DE L'ELEMENT EXCENTRE C IF(KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB ENDIF C C MISE A ZERO DES FORCES INTERNES C C C ON CHERCHE L'EFFORT C MPTVAL=IVASTR MELVAL=IVAL(1) IBMN=MIN(IB ,VELCHE(/2)) NPPTEL=VELCHE(/1) IF(NPPTEL.EQ.1) THEN EFFORT=VELCHE(1,IBMN) ELSE IF(NPPTEL.EQ.2) THEN EFFOR1=VELCHE(1,IBMN) EFFOR2=VELCHE(2,IBMN) EFFORT=0.5D0*(EFFOR1+EFFOR2) ENDIF CC EFFORT=SECT*EFFORT C C ON CALCULE LES FORCES INTERNES C C C RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3124 CONTINUE SEGSUP WRK1,WRK3,WRK5 GO TO 510 c cccccccccccccccccccccccccccccccccccccccccccccccccccccc c c element coaxial COS2 (3D pour liaison acier-beton) c c cccccccccccccccccccccccccccccccccccccccccccccccccccccc c 271 continue NBBB=NBNN NSTN=NBNN LRN =LRE SEGINI WRK1,WRK3,WRK4,WRK5 do 2713 ib=1,nbelem C vx1= xe(1,2) - xe(1,1) vy1= xe(2,2) - xe(2,1) vz1=0.d0 if(idim.eq.3) vz1= xe(3,2)-xe(3,1) xl= sqrt( vx1*vx1 + vy1*vy1 + vz1*vz1) vx1= vx1 / xl vy1= vy1/ xl if(idim.eq.3) THEN vz1=vz1 / xl ENDIF IE=0 MPTVAL=IVASTR DO IGAU=1,2 DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) enddo enddo C MPTVAL=IVAcar DO 2712 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IGMN = VELCHE(/1) IBMN=MIN(IB,VELCHE(/2)) SECA =VELCHE(IGMN,IBMN) 2712 CONTINUE diam = sqrt(4.d0*SECA/xpi) C C MISE A ZERO DES FORCES INTERNES C C C C FORCES DANS LA DIRECTION TANGENTIELLE C ag = 1.d0-0.5773502691896257645d0 agg = ag/(2.d0*(1-ag)) FO11 = xpi*diam*xl*(t11/2.d0 + (t21 - t11)/8.d0) FO21 = xpi*diam*xl*(t21/2.d0 + (t11 - t21)/8.d0) C C FORCES DANS LA DIRECTION NORMALE C FO12 = -1.d0*diam*xl*(t12/2.d0 + (t22 - t12)/8.d0) FO22 = -1.d0*diam*xl*(t22/2.d0 + (t12 - t22)/8.d0) c write(6,*) 'xstrs 1',ib,t11,t12,t12 c write(6,*) 'xstrs 2',ib,t21,t22,t22 IF (IDIM.EQ.2) THEN XFORC(1) = (FO11*VX1 + FO12*VY1) + XFORC(1) XFORC(3) = (FO21*VX1 + FO22*VY1) + XFORC(3) XFORC(2) = (FO11*VY1 + FO12*VX1) + XFORC(2) XFORC(4) = (FO21*VY1 + FO22*VX1) + XFORC(4) XFORC(5) = (-1.d0*(FO11*VX1 + FO12*VY1)) + XFORC(5) XFORC(7) = (-1.d0*(FO21*VX1 + FO22*VY1)) + XFORC(7) XFORC(6) = (-1.d0*(FO11*VY1 + FO12*VX1)) + XFORC(6) XFORC(8) = (-1.d0*(FO21*VY1 + FO22*VX1)) + XFORC(8) ELSE IF (IDIM.EQ.3) THEN IF (vy1.EQ.0.0D0.AND.vz1.EQ.0.0D0) THEN vx22 = 0.0D0 vy22 = 1.0D0 vz22 = 0.0D0 ELSE IF ((vx1.EQ.0.0D0.AND.vy1.EQ.0.0D0).OR. . (vx1.EQ.0.0D0.AND.vz1.EQ.0.0D0)) THEN vx22 = 1.0D0 vy22 = 0.0D0 vz22 = 0.0D0 ELSE IF (vy1.NE.0.0D0.AND.vz1.NE.0.0D0) THEN Vx22 = 0.0D0 Vy22 = -vz1 Vz22 = vy1 LLL = 1 ELSE IF (vx1.NE.0.0D0.AND.vz1.NE.0.0D0) THEN Vx22 = -vz1 Vy22 = 0.0D0 Vz22 = vx1 LLL = 1 ELSE IF (vy1.NE.0.0D0.AND.vx1.NE.0.0D0) THEN Vx22 = -vy1 Vy22 = vx1 Vz22 = 0.0D0 LLL = 1 END IF xl22 = sqrt((vx22*vx22) + (vy22*vy22)+ (vz22*vz22)) vx22 = vx22/xl22 vy22 = vy22/xl22 vz22 = vz22/xl22 vx3 = (vy1*Vz22) - (vz1*Vy22) vy3 = (vz1*Vx22) - (vx1*vz22) vz3 = (vx1*vy22) - (vy1*Vx22) xl3 = sqrt((vx3*vx3) + (vy3*vy3)+ (vz3*vz3)) vx3 = vx3/xl3 vy3 = vy3/xl3 vz3 = vz3/xl3 vx2 = (vy3*vz1) - (vz3*vy1) vy2 = (vz3*vx1) - (vx3*vz1) vz2 = (vx3*vy1) - (vy3*vx1) xl2 = sqrt((vx2*vx2) + (vy2*vy2)+ (vz2*vz2)) vx2 = vx2/xl2 vy2 = vy2/xl2 vz2 = vz2/xl2 F1 = FO11*vx1 + FO12*vx2 + FO12*vx3 F2 = FO11*vy1 + FO12*vy2 + FO12*vy3 F3 = FO11*vz1 + FO12*vz2 + FO12*vz3 F4 = FO21*vx1 + FO22*vx2 + FO22*vx3 F5 = FO21*vy1 + FO22*vy2 + FO22*vy3 F6 = FO21*vz1 + FO22*vz2 + FO22*vz3 XFORC(1) = F1 + XFORC(1) XFORC(2) = F2 + XFORC(2) XFORC(3) = F3 + XFORC(3) XFORC(4) = F4 + XFORC(4) XFORC(5) = F5 + XFORC(5) XFORC(6) = F6 + XFORC(6) XFORC(7) = -1.d0*F4 + XFORC(7) XFORC(8) = -1.d0*F5 + XFORC(8) XFORC(9) = -1.d0*F6 + XFORC(9) XFORC(10) = -1.d0*F1 + XFORC(10) XFORC(11) = -1.d0*F2 + XFORC(11) XFORC(12) = -1.d0*F3 + XFORC(12) ENDIF c write(6,*) 'xforc cos2', (xforc(io),io = 1,lre) C C RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR C C NODE=4= NOMBRE DE NOEUDS C ICOMP=NSTRS= NOMBRE DE COMPOSANTES DE CONTRAINTES PAR NOEUD C DO NODE=1,4 DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(NODE,IBMN)=XFORC(IE) enddo enddo 2713 continue SEGSUP WRK1,WRK3,WRK4,WRK5 GO TO 510 C_______________________________________________________________________ C C ELEMENT COAXIAL (COA2) C_______________________________________________________________________ C 272 continue NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK3,WRK4 LW = 24 C DO 2721 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C MISE A ZERO DES FORCES INTERNES C C C REPERE LOCAL C C C BOUCLE SUR LES POINTS DE GAUSS C DO 2722 IGAU=1,NBPGAU C C CALCUL DE LA MATRICE B ET DU JACOBIEN EN IGAU C . BGENE,DJAC,IRRT,IDIM,NBNN,NSTRS,LRE) IF(IRRT.NE.0) THEN INTERR(1)=IB GOTO 9985 END IF C C ON CHERCHE LES CONTRAINTES - C MPTVAL=IVASTR DO 2723 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XSTRS(ICOMP)=VELCHE(IGMN,IBMN) 2723 CONTINUE C C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C vx1= xe(1,2) - xe(1,1) vy1= xe(2,2) - xe(2,1) vz1=0.d0 if(idim.eq.3) vz1= xe(3,2)-xe(3,1) xl= sqrt( vx1*vx1 + vy1*vy1 + vz1*vz1) vx1= vx1 / xl vy1= vy1/ xl if(idim.eq.3) THEN vz1=vz1 / xl ENDIF C C recuperation de la section et calcul du diamètre C MPTVAL=IVACAR DO 2729 ICOMP=1,NCARR MELVAL=IVAL(ICOMP) IGMN = VELCHE(/1) IBMN=MIN(IB,VELCHE(/2)) SECA =VELCHE(IGMN,IBMN) 2729 CONTINUE diam = sqrt(4.d0*SECA/xpi) C C ON CALCULE B*EFFORTS C DJAC=DJAC*POIGAU(IGAU) DO i=1,LRE cc = 0.D0 DO j=1,NSTRS cc = cc + (BGENE(j,i) * XSTRS(j)) ENDDO ENDDO IF (IDIM.EQ.2) THEN ELSE IF (IDIM.EQ.3) THEN IF (vy1.EQ.0.0D0.AND.vz1.EQ.0.0D0) THEN vx22 = 0.0D0 vy22 = 1.0D0 vz22 = 0.0D0 ELSE IF ((vx1.EQ.0.0D0.AND.vy1.EQ.0.0D0).OR. . (vx1.EQ.0.0D0.AND.vz1.EQ.0.0D0)) THEN vx22 = 1.0D0 vy22 = 0.0D0 vz22 = 0.0D0 ELSE IF (vy1.NE.0.0D0.AND.vz1.NE.0.0D0) THEN Vx22 = 0.0D0 Vy22 = -vz1 Vz22 = vy1 LLL = 1 ELSE IF (vx1.NE.0.0D0.AND.vz1.NE.0.0D0) THEN Vx22 = -vz1 Vy22 = 0.0D0 Vz22 = vx1 LLL = 1 ELSE IF (vy1.NE.0.0D0.AND.vx1.NE.0.0D0) THEN Vx22 = -vy1 Vy22 = vx1 Vz22 = 0.0D0 LLL = 1 END IF xl22 = sqrt((vx22*vx22) + (vy22*vy22)+ (vz22*vz22)) vx22 = vx22/xl22 vy22 = vy22/xl22 vz22 = vz22/xl22 vx3 = (vy1*Vz22) - (vz1*Vy22) vy3 = (vz1*Vx22) - (vx1*vz22) vz3 = (vx1*vy22) - (vy1*Vx22) xl3 = sqrt((vx3*vx3) + (vy3*vy3)+ (vz3*vz3)) vx3 = vx3/xl3 vy3 = vy3/xl3 vz3 = vz3/xl3 vx2 = (vy3*vz1) - (vz3*vy1) vy2 = (vz3*vx1) - (vx3*vz1) vz2 = (vx3*vy1) - (vy3*vx1) xl2 = sqrt((vx2*vx2) + (vy2*vy2)+ (vz2*vz2)) vx2 = vx2/xl2 vy2 = vy2/xl2 vz2 = vz2/xl2 DO i=1,LRE ENDDO END IF 2722 CONTINUE c write(6,*) 'xforc coa2', (xforc(io),io = 1,lre) C C RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR C DO NODE=1,NBNN ** AM 30/04/19 ** DO 2724 ICOMP=1,NSTRS DO ICOMP=1,IDIM IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(NODE,IBMN)=XFORC(IE) enddo enddo 2721 CONTINUE 9985 CONTINUE SEGSUP WRK1,WRK2,WRK3,WRK4 GO TO 510 *----------------------------------------------- * element shb8 *------------------------------------------------ 260 CONTINUE NBBB=NBNN SEGINI WRK1,WRK7 DO 3260 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l element ib c c c on cherche les contraintes c IE=0 MPTVAL=IVASTR DO IGAU=1,NBPGAU DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) WORK1(IE)=VELCHE(IGMN,IBMN) enddo enddo c c on cherche les materiaux c yyo=0.d0 ynu=0.d0 MPTVAL=IVAMAT segact mptval DO IGAU=1,NBPGAU DO ICOMP=1,2 MELVAL=IVAL(ICOMP) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) if(icomp.eq.1) yyo=yyo+VELCHE(IGMN,IBMN)/nbpgau if(icomp.eq.2)ynu=ynu+VELCHE(IGMN,IBMN)/nbpgau ENDIF enddo enddo c c on calcule b*sigma c d(1)=yyo d(2)=ynu d(3)=0 c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,Nbnn DO ICOMP=1,3 IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3260 CONTINUE SEGSUP WRK1,WRk7 GO TO 510 C_______________________________________________________________________ C C LIA2 : element de liaison a 2 noeuds (6 ddl par C noeuds) C_______________________________________________________________________ C 125 CONTINUE NBBB=NBNN NSTN=3 LRN =3 SEGINI WRK1,WRK3,WRK5 C KERRE=0 DO 3109 IB=1,NBELEM C C MISE A ZERO DES FORCES INTERNES C C MPTVAL=IVACAR DO IC=1,NCARR IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO C IF(KERRE.NE.0) THEN INTERR(1)=ISOUS INTERR(2)=IB ENDIF C C ON CHERCHE LES CONTRAINTES - C MPTVAL=IVASTR IE=0 DO IGAU=1,2 DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) XSTRS(IE)=VELCHE(IGMN,IBMN) enddo enddo C C ON CALCULE LES FORCES INTERNES !!!! a ameliorer C C C RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3109 CONTINUE SEGSUP WRK1,WRK3,WRK5 GO TO 510 C_______________________________________________________________________ C C JOI1 : element de liaison a 2 noeuds (6 ddl par C noeuds) C_______________________________________________________________________ C 265 CONTINUE NBBB=NBNN NSTN=3 LRN =3 SEGINI WRK1,WRK3,WRK4 C KERRE=0 DO 3110 IB=1,NBELEM C C MISE A ZERO DES FORCES INTERNES C C MPTVAL=IVAMAT DO IC=1,NMATT IF(IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF END DO C C C ON CHERCHE LES CONTRAINTES - C MPTVAL=IVASTR IE=0 DO 7110 ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) XSTRS(IE)=VELCHE(1,IBMN) 7110 CONTINUE C C ON CALCULE LES FORCES INTERNES C C C ON PASSE LES CONTRAINTES DANS LE REPERE GLOBAL C IAW1 = 101 IAW2=IAW1+LRE C C RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3110 CONTINUE SEGSUP WRK1,WRK3,WRK4 GO TO 510 c_______________________________________________________________________ c c element tuyo c_______________________________________________________________________ c 96 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3 c DO 3096 IB=1,NBELEM c c on cherche les coordonnees des noeuds de l elementib c c c il faudrait aussi modifier le vecteur local de la poutre c c mise a zero des forces internes c c c rangement des caracteristiques dans work c MPTVAL=IVACAR DO 6096 IC=1,NCARR IF (IVAL(IC).NE.0) THEN MELVAL=IVAL(IC) IBMN=MIN(IB,VELCHE(/2)) ELSE ENDIF 6096 CONTINUE c c cas ou on a lu le mot vecteur c c c c cas des tuyaux - on calcule les caracteristiques de la poutre c equivalente c *Bizarre ici MELE = 96 ??? IF(MELE.EQ.42) THEN IF (KERRE.EQ.77) THEN GOTO 510 ENDIF ENDIF c c on cherche les contraintes - c MPTVAL=IVASTR IE=9 DO IGAU=1,2 DO ICOMP=1,NSTRS IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) enddo enddo c c on calcule les forces internes c IF(KERRE.EQ.0) GO TO 5096 INTERR(1)=ISOUS INTERR(2)=IB SEGSUP WRK1,WRK3 GO TO 510 5096 CONTINUE c c rangement dans melval c IE=0 MPTVAL=IVAFOR DO IGAU=1,NBNN DO ICOMP=1,NFOR IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XFORC(IE) enddo enddo 3096 CONTINUE SEGSUP WRK1,WRK3 GO TO 510 C_______________________________________________________________________ C C ELEMENTS ZONE_COHESIVE ZOC2,ZOC3,ZOC4 C_______________________________________________________________________ C 266 CONTINUE NDIM = 2 IF(IFOUR.GT.0) NDIM = 3 NBBB=NBNN SEGINI WRK1,WRK2,WRK4 C DO 3266 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C C C MISE A ZERO DES FORCES INTERNES C C C BOUCLE SUR LES POINTS DE GAUSS C DO 6266 IGAU=1,NBPGAU C C . NSTRS,NBNN,LRE,MELE,SHPWRK,BGENE,DJAC,IERT) IF (IERT.NE.0) THEN INTERR(1)=IB GOTO 99266 ENDIF C C ON CHERCHE LES CONTRAINTES - C MPTVAL=IVASTR DO 7266 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XSTRS(ICOMP)=VELCHE(IGMN,IBMN) 7266 CONTINUE C C ON CALCULE B*EFFORTS C DJAC=DJAC*POIGAU(IGAU) 6266 CONTINUE C C TRAITEMENT DE XFORC ET RANGEMENT DANS MELVAL C IE=0 MPTVAL=IVAFOR C DO NODE=1,NBNN DO ICOMP=1,NDIM IE=IE+1 MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(NODE,IBMN)=XFORC(IE) enddo enddo 3266 CONTINUE 99266 CONTINUE SEGSUP WRK1,WRK2,WRK4 GOTO 510 c_______________________________________________________________________ 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(5:12)='BSIGMA' * 510 CONTINUE RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales