sigma2
C SIGMA2 SOURCE PV 22/04/26 21:15:07 11344 & IVAMAT,LHOOK,IMAT,MATE,CMATE,NMATT,NSTRS,MFR,IPMINT, & IPMIN1,NDEP,NBPGAU,NBPTEL,MELE,LRE,LW,IREPS2,NPINT,IVASTR & ,UZDPG,RYDPG,RXDPG,IIPDPG,inoer) *---------------------------------------------------------------------* * __________________________ * * | | * * | calcul des contraintes| * * |________________________| * * * * coq3,dkt,coq4,coq8,coq2 ,dst,joint 3d,joints 2d * * * *---------------------------------------------------------------------* * * * entrees : * * ________ * * * * ipmail pointeur sur un segment meleme * * ivadep pointeur sur le chamelem de deplacements * * ivacar pointeur sur les chamelems de caracteristiques * * nelmat taille maxi des melval du materiau (no d'element) * * nbgmat taille maxi des melval du materiau (pt de gauss) * * ivamat pointeur sur un segment mptval pour le materiau ou * * lhook dimension de la matrice de hooke * * imat (2 il y a une matrice de hooke,1 non ) * * mate numero du materiau * * cmate nom du materiau * * nmatt nombre de composante de materiau (imat=1) * * nstrs nombre de composante de contraintes/deformations * * pour une matrice de hooke * * mfr numero de formulation de l'element fini * * ipmint pointeur sur un segment minte * * ipmin1 pointeur sur un segment minte (aux noeuds) * * ndep nombre de composantes de deplacements * * nbpgau nombre de point d'integration pour la rigidite * * nbptel nombre de points par element * * mele numero de l'element fini * * lre nombre de ddl dans la matrice de rigidite * * lw dimension du tableau de travail de l'element * * iresp2 flag pour indiquer si on veut les contraintes * * de piola-kirchhoff * * npint nombre de points d'integration dans l'epaisseur * dans le cas des elements de coque integres * * * sorties : * * ________ * * * * ivastr pointeur sur un segment mptval contenant les * * les melvals de contraints * * *---------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC CCHAMP -INC CCREEL -INC SMCHAML -INC SMINTE -INC SMELEME -INC SMCOORD -INC SMLREEL * SEGMENT WRK1 REAL*8 DDHOOK(LHOOK,LHOOK) ,XDDL(LRE) ,XSTRS(NSTRS) REAL*8 XE(3,NBBB) ,DDHOMU(LHOOK,LHOOK) ENDSEGMENT * SEGMENT WRK2 ENDSEGMENT * SEGMENT WRK3 ENDSEGMENT * SEGMENT WRK4 REAL*8 BPSS(3,3) ,XEL(3,NBBB) ,XDDLOC(LRE) ENDSEGMENT * SEGMENT WRK5 REAL*8 XSTRS1(NSTRS1) ENDSEGMENT * SEGMENT,MVELCH REAL*8 VALMAT(NV1) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * CHARACTER*8 CMATE dimension rel(lre,lre) * * initialisation du point autour duquel se fait le mouvement * en deformation plane generalisee * 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 * MELEME=IPMAIL NBNN=NUM(/1) NBELEM=NUM(/2) * NV1=NMATT SEGINI,MVELCH * NHRM=NIFOUR * MINTE=IPMINT IRTD=1 * NBBB=NBNN SEGINI WRK1 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 GOTO(99,99,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,27,28,99,99,99,99,99,99,99,99,99,99,99,99, 2 41,99,99,44,28,99,99,99,49,99,99,99,99,99,99,41,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,99,85,86,87,88,99,99,99,99,93,99,99,99,99),MELE * GOTO(168,169,170,171,172),MELE-167 * GOTO 99 c_______________________________________________________________________ c c element coq3 c_______________________________________________________________________ c 27 CONTINUE SEGINI WRK3 c c boucle de calcul pour les differents elements c DO 3027 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 4027 IGAU=1,NBNN DO 4027 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4027 CONTINUE c c on cherche les coordonnees des noeuds de l element ib c c c on cherche les coeff des mat de hooke et l epaisseur c MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(1,IBMN) ELSE EPAIST=0.D0 ENDIF c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) THEN DO 9027 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9027 CONTINUE ENDIF ENDIF c IF(IREPS2.EQ.1) c MPTVAL=IVASTR DO 6027 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB,VELCHE(/2)) VELCHE(1,IBMN)=XSTRS(ICOMP) 6027 CONTINUE c 3027 CONTINUE c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9927 CONTINUE SEGSUP WRK3 GOTO 510 c____________________________________________________________________ c c element dkt c____________________________________________________________________ c 28 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(NPINT.NE.0)THEN NSTRS1=6 SEGINI WRK5 ENDIF DO 3028 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 4028 IGAU=1,NBNN DO 4028 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4028 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c bpss stocke la matrice de passage c c on cherche les epaiseurs et on les moyenne, c les excentrements et on les moyenne. c EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=EPAIST+VELCHE(IGMN,IBMN) ENDDO EPAIST=EPAIST/NBPGAU ENDIF * EXCEN=0.D0 MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EXCEN=EXCEN+VELCHE(IGMN,IBMN) ENDDO EXCEN=EXCEN/NBPGAU ENDIF c IF(NPINT.EQ.0)THEN c c coque global c c boucle sur les points de gauss c DO 5028 IGAU=1,NBPTEL & SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * * on modifie la matrice b en cas d'excentrement non nul * IF (EXCEN.NE.0.D0) THEN DO 1528 IJL=1,3 DO 1528 IJC=1,LRE BGENE(IJL,IJC)=BGENE(IJL,IJC)+EXCEN*BGENE(IJL+3,IJC) 1528 CONTINUE ENDIF c c on cherche la matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 9128 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9128 CONTINUE ENDIF ENDIF c c calcul des eps 2 c IF(IREPS2.EQ.1) c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9028 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ICOMP) 9028 CONTINUE 5028 CONTINUE c ELSE c c coque integree c NBPGA1=NBPGAU/NPINT c c boucle sur les points de gauss de la surface c DO 5001 IGAU=1,NBPGA1 & SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) * * on modifie la matrice b en cas d'excentrement non nul * IF (EXCEN.NE.0.D0) THEN DO 1501 IJL=1,3 DO 1501 IJC=1,LRE BGENE(IJL,IJC)=BGENE(IJL,IJC)+EXCEN*BGENE(IJL+3,IJC) 1501 CONTINUE ENDIF c c boucle sur les nappes c DO 5002 INAP=1,NPINT IGAU1=(INAP-1)*NBPGA1+IGAU c c on cherche la matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU1.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU1,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU1.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 9101 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU1,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9101 CONTINUE ENDIF ENDIF c c calcul des eps 2 c IF(IREPS2.EQ.1) c ZZZ=DZEGAU(IGAU1)*(EPAIST/2.D0) XSTRS(1)=XSTRS1(1)+ZZZ*XSTRS1(4) XSTRS(2)=XSTRS1(2)+ZZZ*XSTRS1(5) XSTRS(3)=0.D0 XSTRS(4)=XSTRS1(3)+ZZZ*XSTRS1(6) c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9001 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU1,IBMN)=XSTRS(ICOMP) 9001 CONTINUE c fin de boucle sur les nappes de points 5002 CONTINUE c fin de boucle sur les points dans chaque nappe 5001 CONTINUE c fin de boucle sur les points d'integration ENDIF c fin de boucle sur les elements 3028 CONTINUE * IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9928 CONTINUE SEGSUP,WRK2,WRK4 IF(NPINT.NE.0)SEGSUP WRK5 * GOTO 510 c____________________________________________________________________ c c elements coq6 et coq8 c____________________________________________________________________ c 41 CONTINUE NBNO=NBNN SEGINI WRK2,WRK3 MINTE1=IPMIN1 SEGACT MINTE1 NBPGA1=MINTE1.SHPTOT(/3) NBN1 =MINTE1.SHPTOT(/2) c c boucle de calcul pour les differents elements c DO 3041 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 4041 IGAU=1,NBNN DO 4041 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4041 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c on cherche les epaisseurs et les excentrements, c MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) ENDDO ENDIF * MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) ENDDO ENDIF c c determination des axes locaux aux noeuds c c c boucle sur les points de gauss c DO 3042 IGAU=1,NBPTEL c c calcul de la matrice b c E3=DZEGAU(IGAU) c IF (IRR.EQ.0) THEN INTERR(1)=IB GOTO 9941 ELSE IF (IRR.EQ.-1) THEN INTERR(1)=IB GOTO 9941 ENDIF c c on cherche les coeff des mat de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN DO 9041 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9041 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) ENDIF c c on calcule les contraintes pour le point de gauss c c c on remplit les contraintes c MPTVAL=IVASTR DO 6041 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ICOMP) 6041 CONTINUE c 3042 CONTINUE c 3041 CONTINUE IF (IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9941 CONTINUE SEGSUP,WRK2,WRK3 SEGDES MINTE1 GOTO 510 c____________________________________________________________________ c c element coq2 c____________________________________________________________________ c 44 CONTINUE NBNO=NBNN SEGINI WRK2 NDDD=NDEP IF (IFOUR.EQ.-3) NDDD=NDEP-3 DO 3044 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5044 IGAU=1,NBNN DO 5044 ICOMP=1,NDDD MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5044 CONTINUE IF (IFOUR.EQ.-3) THEN XDDL(IE)=UZDPG XDDL(IE+1)=RYDPG XDDL(IE+2)=RXDPG ENDIF c c on cherche les coordonnees des noeuds de l'element ib c c c on cherche les epaisseurs et les excentrements, c on les moyenne sur l'element. c EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=EPAIST+VELCHE(IGMN,IBMN) ENDDO EPAIST=EPAIST/NBPGAU ENDIF * EXCEN=0.D0 MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EXCEN=EXCEN+VELCHE(IGMN,IBMN) ENDDO EXCEN=EXCEN/NBPGAU ENDIF c c boucle sur les points de gauss c DO 4044 IGAU=1,NBPGAU c c appel a bcoq2 c . EXCEN,1.D0,IRR,XDPGE,YDPGE) c c gestion d'erreur c IF (IRR.EQ.1) THEN INTERR(1)=IB GOTO 9944 ELSE IF (IRR.EQ.2) THEN INTERR(1)=IB GOTO 9944 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1044 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1044 CONTINUE ENDIF ENDIF c c on va séparer l'appel à DBST en 3 parties : c - multiplication de B * DDL c - rajout éventuel de termes quadratiques c - multiplication des deformations par la matrice de Hooke c c CALL DBST(BGENE,DDHOMU,XDDL,LRE,NSTRS,XSTRS) c IF(IREPS2.EQ.1) c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9044 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9044 CONTINUE 4044 CONTINUE 3044 CONTINUE c IF (IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9944 CONTINUE SEGSUP,WRK2 GOTO 510 c____________________________________________________________________ c c element coq4 c____________________________________________________________________ c 49 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 DO 3049 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5049 IGAU=1,NBNN DO 5049 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5049 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c iert=1 nodi troppo vicini IF (IERT.EQ.1) THEN INTERR(1)=IB GOTO 9949 ELSE IF (IERT.EQ.3) THEN IERT = 0 NOPLAN = 1 ELSE NOPLAN = 0 ENDIF c c on cherche les epaisseurs et les excentrements, c on les moyenne sur l'element. c MPTVAL=IVACAR EPAIST=0.D0 MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=EPAIST+VELCHE(IGMN,IBMN) ENDDO EPAIST=EPAIST/NBPGAU ENDIF * EXCEN=0.D0 MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EXCEN=EXCEN+VELCHE(IGMN,IBMN) ENDDO EXCEN=EXCEN/NBPGAU ENDIF c c boucle sur les points de gauss c DO 4049 IGAU=1,NBPGAU c c appel a bcoq4 c if(cmate.eq.'ISOTROPE') then else endif c iert=1 jacobiano <= 0 IF (IERT.EQ.1) THEN INTERR(1)=IB GOTO 9949 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1049 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1049 CONTINUE ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9049 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9049 CONTINUE 4049 CONTINUE 3049 CONTINUE c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9949 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint joi2 c____________________________________________________________________ c 85 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 c DO 3085 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5085 IGAU=1,NBNN DO 5085 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5085 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c c----------------------------------------------------------------- c je n'ai pas besoin de transformer les deplacements c dans le repere local car la matrice b est un operateur qui c s'applique sur une quantite globale, u, pour donner une c quantite locale, epsilon ; ceci, du fait de la presence c de la matrice teta dans l'expression de b. si cela est vrai, c alors il n'est pas necessaire d'appeler matvec. c il faudra simplement appeler dbst avec xddl et non pas avec c xddloc. c----------------------------------------------------------------- ccccccccc call matvec(xddl,xddloc,bpss,8) c c boucle sur les points de gauss c DO 4085 IGAU=1,NBPGAU c c appel a bjo2 pour le calcul de b c . BGENE,DJAC,IRRT) c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9985 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1085 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1085 CONTINUE ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9085 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9085 CONTINUE 4085 CONTINUE 3085 CONTINUE c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9985 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint jgi2 c____________________________________________________________________ c 170 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 NDDD=NDEP IF (IFOUR.EQ.-3) NDDD=NDEP-3 EPAIST=0.D0 DO IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN DO ICOMP=1,NDDD MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 ENDDO ENDDO IF (IFOUR.EQ.-3) THEN XDDL(IE)=UZDPG XDDL(IE+1)=RYDPG XDDL(IE+2)=RXDPG ENDIF c c on cherche les coordonnees des noeuds de l'element ib c c c c boucle sur les points de gauss c DO IGAU=1,NBPGAU c c on cherche l'epaisseur du joint c MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF c c appel a bjo2 pour le calcul de b c CcPPj CALL BJO2GN(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK, CcPPj. EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT) . EPAIST,BGENE,DJAC,XDPGE,YDPGE,IRRT) c irrt=1 jacobien <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB GOTO 9970 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) ENDDO ENDDO ENDDO c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9970 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint jct3 Pour le moment en 2D cisaillement c____________________________________________________________________ c 168 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF DO IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN DO ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 ENDDO ENDDO c c on cherche les coordonnees des noeuds de l'element ib c c c c boucle sur les points de gauss c DO IGAU=1,NBPGAU c c appel a bjt3 pour le calcul de b c . BGENE,DJAC,IRRT) c irrt=1 jacobien <= 0 IF(IRRT.NE.0) THEN INTERR(1)=IB GOTO 9968 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) ENDDO ENDDO ENDDO c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9968 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element de joint generalise jgt3 c____________________________________________________________________ c 171 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF DO IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN DO ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 ENDDO ENDDO c c on cherche les coordonnees des noeuds de l'element ib c c c c boucle sur les points de gauss c DO IGAU=1,NBPGAU c c on cherche l'epaissuer du joint c EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF c c appel a bjt3 pour le calcul de b c CcPPj CALL BJT3G(IGAU,MFR,IFOUR,NIFOUR,XEL,BPSS,SHPTOT,SHPWRK, . EPAIST,BGENE,DJAC,IRRT) c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9971 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) ENDDO ENDDO ENDDO c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9971 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint jgi4 Pour le moment en 2D cisaillement c____________________________________________________________________ c 169 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF c DO IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN DO ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 ENDDO ENDDO c c on cherche les coordonnees des noeuds de l'element ib c c c c boucle sur les points de gauss c DO IGAU=1,NBPGAU c c appel a bjo4 pour le calcul de b c c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9969 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) ENDDO ENDDO ENDDO c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9969 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint jgi4 Pour le moment en 2D cisaillement c____________________________________________________________________ c 172 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF c DO IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO IGAU=1,NBNN DO ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 ENDDO ENDDO c c on cherche les coordonnees des noeuds de l'element ib c c c c boucle sur les points de gauss c DO IGAU=1,NBPGAU c c on cherche l'epaissuer du joint c EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(IGMN,IBMN) ENDIF c c appel a bjo4 pour le calcul de b c CcPPj CALL BJO4G(IGAU,XEL,BPSS,SHPTOT,SHPWRK,EPAIST,BGENE,DJAC,IRRT) . IRRT) c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9972 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF ENDDO ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) ENDDO ENDDO ENDDO c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9972 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint joi3 implementation sans test de planeite c et sans repere local c____________________________________________________________________ c 86 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 c DO 3086 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5086 IGAU=1,NBNN DO 5086 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5086 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c boucle sur les points de gauss c DO 4086 IGAU=1,NBPGAU c c c appel a bjo3 pour le calcul de b c . BGENE,DJAC,IRRT) c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9986 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1086 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1086 CONTINUE ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9086 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9086 CONTINUE 4086 CONTINUE 3086 CONTINUE c c impression d'un eventuel message d'erreur c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9986 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint jot3 c____________________________________________________________________ c 87 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF c DO 3087 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5087 IGAU=1,NBNN DO 5087 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5087 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c c----------------------------------------------------------------- c je ne pense pas avoir besoin de transformer les deplacements c dans le repere local car la matrice b est un operateur qui c s'applique sur une quantite globale, u, pour donner une c quantite locale, epsilon ; ceci, du fait de la presence c de la matrice teta dans l'expression de b. si cela est vrai, c alors il n'est pas necessaire d'appeler matvec. c il faudra simplement appeler dbst avec xddl et non pas avec c xddloc. c----------------------------------------------------------------- ccccccccc call matvec(xddl,xddloc,bpss,8) c c boucle sur les points de gauss c DO 4087 IGAU=1,NBPGAU c c appel a bjt3 pour le calcul de b c . BGENE,DJAC,IRRT) c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9987 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1087 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1087 CONTINUE ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9087 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9087 CONTINUE 4087 CONTINUE 3087 CONTINUE c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9987 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element joint joi4 c____________________________________________________________________ c 88 CONTINUE NBNO=NBNN SEGINI WRK2,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(4) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF DO 3088 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 5088 IGAU=1,NBNN DO 5088 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 5088 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c c c----------------------------------------------------------------- c je ne pense pas avoir besoin de transformer les deplacements c dans le repere local car la matrice b est un operateur qui c s'applique sur une quantite globale, u, pour donner une c quantite locale, epsilon ; ceci, du fait de la presence c de la matrice teta dans l'expression de b. si cela est vrai, c alors il n'est pas necessaire d'appeler matvec. c il faudra simplement appeler dbst avec xddl et non pas avec c xddloc. c----------------------------------------------------------------- ccccccccc call matvec(xddl,xddloc,bpss,8) c c boucle sur les points de gauss c DO 4088 IGAU=1,NBPGAU c c appel a bjo4 pour le calcul de b c c irrt=1 jacobien <= 0 IF (IRRT.NE.0) THEN INTERR(1)=IB GOTO 9988 ENDIF c c matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) MLREEL=IELCHE(1,IBMN) SEGACT MLREEL SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 1088 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) VALMAT(IM)=VELCHE(1,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 1088 CONTINUE ENDIF ENDIF c c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9088 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGMN,IBMN)=XSTRS(ICOMP) 9088 CONTINUE 4088 CONTINUE 3088 CONTINUE c c impression d'un eventuel message d'erreur IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9988 CONTINUE SEGSUP,WRK2,WRK4 GOTO 510 c____________________________________________________________________ c c element dst c____________________________________________________________________ c 93 CONTINUE NBNO=NBNN SEGINI WRK2,WRK3,WRK4 IF(CMATE.NE.'ISOTROPE')THEN MPTVAL=IVAMAT IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')THEN MELVAL=IVAL(7) ELSE MELVAL=IVAL(2) ENDIF NBGCOS=VELCHE(/1) ENDIF c DO 3093 IB=1,NBELEM c c on cherche les deplacements c MPTVAL=IVADEP IE=1 DO 4093 IGAU=1,NBNN DO 4093 ICOMP=1,NDEP MELVAL=IVAL(ICOMP) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB ,VELCHE(/2)) XDDL(IE)=VELCHE(IGMN,IBMN) IE=IE+1 4093 CONTINUE c c on cherche les coordonnees des noeuds de l'element ib c c bpss stocke la matrice de passage c c on cherche les epaiseurs et on les moyenne, c les excentrements et on les moyenne. c EPAIST=0.D0 MPTVAL=IVACAR MELVAL=IVAL(1) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EPAIST=EPAIST+VELCHE(IGMN,IBMN) ENDDO EPAIST=EPAIST/NBPGAU ENDIF * EXCEN=0.D0 MELVAL=IVAL(2) IF (MELVAL.NE.0) THEN DO IGAU=1,NBPGAU IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) EXCEN=EXCEN+VELCHE(IGMN,IBMN) ENDDO EXCEN=EXCEN/NBPGAU ENDIF c c boucle sur les points de gauss c DO 5093 IGAU=1,NBPTEL * * dans le cas des matériaux orthotropes, les déformations sont d'abord * calculées dans le repère d'orthotropie (les formules utilisées par les * routines rcdst et bmfdst ne sont valables que dans ce repère); elles * sont ensuite exprimées dans le repère local de l'élément. * IF(IMAT.EQ.2)THEN IF(CMATE.NE.'ISOTROPE')THEN IF(IGAU.LE.NBGCOS)THEN MPTVAL=IVAMAT MELVAL=IVAL(2) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) COSA=VELCHE(IGMN,IBMN) MELVAL=IVAL(3) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) SINA=VELCHE(IGMN,IBMN) ENDIF ENDIF ENDIF c c on cherche la matrice de hooke c MPTVAL=IVAMAT IF(IMAT.EQ.2) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN MELVAL=IVAL(1) IBMN=MIN(IB ,IELCHE(/2)) IGMN=MIN(IGAU,IELCHE(/1)) MLREEL=IELCHE(IGMN,IBMN) SEGACT MLREEL SEGDES MLREEL IF(CMATE.EQ.'ORTHOTRO') ENDIF ELSE IF (IMAT.EQ.1) THEN IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) THEN DO 9193 IM=1,NMATT IF (IVAL(IM).NE.0) THEN MELVAL=IVAL(IM) IBMN=MIN(IB ,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 9193 CONTINUE ENDIF ENDIF IF(CMATE.NE.'ISOTROPE')THEN IF(IGAU.LE.NBGCOS)THEN IF(IMAT.EQ.1) THEN COSA=VALMAT(7) SINA=VALMAT(8) ENDIF DO 1393 INO=1,NBNN XX=COSA*XEL(1,INO)+SINA*XEL(2,INO) YY=(-SINA)*XEL(1,INO)+COSA*XEL(2,INO) XE(1,INO)=XX XE(2,INO)=YY 1393 CONTINUE ENDIF c c termes de la matrice de rigidite relatifs c aux cisaillements transverses c c c termes de la matrice b relatifs aux effets c de membrane et de flexion c * ELSE c c termes de la matrice b relatifs aux cisaillements transverses c c c termes de la matrice b relatifs aux effets c de membrane et de flexion c ENDIF * * on modifie la matrice b en cas d'excentrement * IF (EXCEN.NE.0.D0) THEN DO 1593 IJL=1,3 DO 1593 IJC=1,LRE BGENE(IJL,IJC)=BGENE(IJL,IJC)+EXCEN*BGENE(IJL+3,IJC) 1593 CONTINUE ENDIF * c c calcul des eps 2 c IF(IREPS2.EQ.1)THEN IF(CMATE.EQ.'ORTHOTRO')THEN 1 COSA,SINA,XSTRS) ELSE 1 COSA,SINA,XSTRS) ENDIF ENDIF * * changement de repere: ortho -> local * IF(CMATE.EQ.'ORTHOTRO') c c remplissage du segment contenant les contraintes c MPTVAL=IVASTR DO 9093 ICOMP=1,NSTRS MELVAL=IVAL(ICOMP) IBMN=MIN(IB ,VELCHE(/2)) VELCHE(IGAU,IBMN)=XSTRS(ICOMP) 9093 CONTINUE 5093 CONTINUE 3093 CONTINUE c IF (IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:12)=NOMFR(MFR/2+1) INTERR(1)=IFOUR ENDIF 9993 CONTINUE SEGSUP,WRK2,WRK3,WRK4 GOTO 510 c____________________________________________________________________ c____________________________________________________________________ 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='SIGM' * c- Fin du sous-programme 510 CONTINUE SEGSUP MVELCH,WRK1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales