C RIGI3 SOURCE CHAT 11/03/16 21:30:53 6902 SUBROUTINE RIGI3(MATE,MELE,IPMAIL,IPMINT,IPMIN1,NBPGAU,LRE, & NSTRS,IVAMAT,IVACAR,CMATE,MFR,NBGMAT,NELMAT,IMAT, & LHOOK,NMATT,LW,NPINT,IPMATR,IIPDPG) *---------------------------------------------------------------------* * __________________________ * * | | * * | CALCUL DE LA RIGIDITE | * * |________________________| * * * * coq3,dkt,coq4,coq8,coq2,dst * * *---------------------------------------------------------------------* * * * ENTREES : * * ________ * * * * MATE Numero du materiau * * MELE Numero de l'element fini * * IPMAIL Pointeur sur un segment MELEME * * IPMINT Pointeur sur un segment MINTE aux points de Gauss * * IPMIN1 pointeur sur un segment MINTE aux noeuds * * NBPGAU Nombre de point d'integration pour la rigidite * * LRE Nombre de ddl dans la matrice de rigidite * * NSTRS Nombre de composante de contraintes/deformations * * IVAMAT Pointeur sur un segment MPTVAL pour le materiau ou * * pour une matrice de hooke * * IVACAR Pointeur sur un segment MPTVAL pour les caracteri- * * stiques * * CMATE Nom du materiau * * MFR Numero de la formulation element fini * * NBGMAT Taille maxi des melval du materiau (pt de gauss) * * NELMAT Taille maxi des melval du materiau (No d'element) * * IMAT (2 il y a une matrice de HOOKE,1 non ) * * NMATT Nombre de composante de materiau (IMAT=1) * * NPINT Nombre de points d'integration dans l'epaisseur * dans le cas des elements de coque integres * * * * SORTIES : * * ________ * * * * IPMATR pointeur sur la rigidite de la sous-zone * * * *---------------------------------------------------------------------* IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC CCOPTIO -INC CCHAMP -INC CCREEL *- -INC SMCHAML -INC SMINTE -INC SMELEME -INC SMRIGID -INC SMMODEL -INC SMCOORD -INC SMLREEL * SEGMENT WRK1 REAL*8 DDHOOK(LHOOK,LHOOK) ,DDHOMU(LHOOK,LHOOK) REAL*8 REL(LRE,LRE) , XE(3,NBBB) ENDSEGMENT * SEGMENT WRK2 REAL*8 SHPWRK(6,NBNO) ,BGENE(LHOOK,LRE) ENDSEGMENT * SEGMENT WRK3 REAL*8 WORK(LW) ENDSEGMENT * SEGMENT WRK4 REAL*8 BPSS(3,3) ,XEL(3,NBBB) ENDSEGMENT * SEGMENT WRK5 REAL*8 BGENE1(LHOOK,LRE),POIG(NBPGA1) 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 * * INITIALISATION DU POINT AUTOUR DUQUEL SE FAIT LE MOUVEMENT * EN DEFORMATION PLANE GENERALISEE * * write(6,*) 'entree dans rigi3 lhook',lhook IF (IFOUR.EQ.-3)THEN IP=IIPDPG C* 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 * XMATRI=IPMATR C* NLIGRP=LRE C* NLIGRD=LRE * NHRM=NIFOUR * MINTE=IPMINT IRTD=1 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 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,99,99,99,99,99,99,99,99,93,99,99,99,99),MELE GOTO 99 C_______________________________________________________________________ C C ELEMENT COQ3 C_______________________________________________________________________ C 27 CONTINUE NBBB=NBNN SEGINI WRK1,WRK3 C C BOUCLE DE CALCUL POUR LES DIFFERENTS ELEMENTS C DO 3027 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C C ON CHERCHE LES COEFF DES MAT DE HOOKE 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 CALL DOHOOO(PROG,LHOOK,DDHOOK) * write(6,*)((ddhook(IU,io),iu=1,4),io=1,4) SEGDES MLREEL ENDIF ELSE IF (IMAT.EQ.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 IF (IB.LE.NELMAT.OR.NBGMAT.GT.1) 1 CALL DOHCOM(VALMAT,NMATT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) * write(6,*)((ddhook(IU,io),iu=1,4),io=1,4) ENDIF C C CHERCHER LES EPAISSEUR ET EXCENTREMENT C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(1,IBMN) IF (IVAL(2).NE.0) THEN MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) EXCEN =VELCHE(1,IBMN) IF (EXCEN.NE.0.D0) THEN CALL ERREUR(474) GO TO 9927 ENDIF ELSE EXCEN=0.D0 ENDIF C C ON CALCULE SA RAIDEUR C CALL COQ3RI(REL,XE,EPAIST,DDHOOK,WORK) C 4027 CONTINUE C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,ib)) 3027 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF 9927 CONTINUE SEGSUP WRK1,WRK3 GOTO 510 C_______________________________________________________________________ C C ELEMENT DKT C_______________________________________________________________________ C 28 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 IF(NPINT.NE.0)THEN NBPGA1=NBPGAU/NPINT IF(NBGMAT.NE.1)THEN NBPGEP=NPINT ELSE NBPGEP=1 ENDIF SEGINI WRK5 DO 1028 IG=1,NBPGA1 POIG(IG)=POIGAU(IG) 1028 CONTINUE Ccccc CALL POIDNW(NPINT,NBPGA1,2,POIG) CALL SIMPSN(NPINT,NBPGA1,2,POIG) ENDIF C DO 3028 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C CALL VPAST(XE,BPSS) C BPSS STOCKE LA MATRICE DE PASSAGE CALL VCORLC (XE,XEL,BPSS) CALL ZERO (REL,LRE,LRE) C C ON CHERCHE LES EPAISEURS ET ON LES MOYENNE, C LES EXCENTREMENTS ET ON LES MOYENNE. C MPTVAL=IVACAR MELVAL=IVAL(1) EPAIST=0.D0 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 * MELVAL=IVAL(2) EXCEN=0.D0 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 1128 IGAU=1,NBPGAU * CALL BMAT28(IGAU,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU, & MELE,MFR,NBNO,LRE,IFOUR,NSTRS,0,1.D0,XEL, & SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) DJAC=DJAC*POIGAU(IGAU) C C ON MODIFIE LA MATRICE B EN CAS D'EXCENTREMENT C IF (EXCEN.NE.0.) 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 LES COEFFICIENTS DE 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 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ENDIF CALL BDBS1(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL,MFR,IFOUR,MATE, 1 IGAU,IMAT,EXCEN) ELSE IF (IMAT.EQ.1) THEN * DO 9028 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 9028 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHCOM(VALMAT,NMATT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) CALL HOOKMU(EPAIST,0.D0,LHOOK,DDHOOK,DDHOMU) CALL BDBS1(BGENE,DJAC,DDHOMU,LRE,NSTRS,REL,MFR,IFOUR,MATE, 1 IGAU,IMAT,EXCEN) ENDIF 1128 CONTINUE C ELSE C C COQUE INTEGREE C C BOUCLE SUR LES POINTS DE GAUSS DE LA SURFACE C DO 1101 IGAU=1,NBPGA1 * CALL BMAT28(IGAU,NBPGAU,POIGAU,QSIGAU,ETAGAU,DZEGAU, & MELE,MFR,NBNO,LRE,IFOUR,LHOOK,0,1.D0,XEL, & SHPTOT,SHPWRK,BGENE,DJAC,XDPGE,YDPGE) C C ON MODIFIE LA MATRICE B EN CAS D'EXCENTREMENT C IF (EXCEN.NE.0.) 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 DANS L'EPAISSEUR C DO 1102 INAP=1,NBPGEP C IGAU1=(INAP-1)*NBPGA1+IGAU C C CALCUL DE LA MATRICE B CORRESPONDANT AUX DEFORMATIONS 3D C IF(NBGMAT.EQ.1.AND.NPINT.NE.1)THEN ZZZ2 = SQRT( (EPAIST**3.D0)/12.D0 ) ZZZ1 = SQRT( EPAIST ) DO 1503 IJL=1,3 DO 1503 IJC=1,LRE BGENE1(IJL,IJC) =ZZZ1*BGENE(IJL,IJC) BGENE1(IJL+3,IJC)=ZZZ2*BGENE(IJL+3,IJC) 1503 CONTINUE DJAC1=DJAC*POIG(IGAU1) ELSE ZZZ=DZEGAU(IGAU1)*(EPAIST/2.D0) DO 1502 IJL=1,3 DO 1502 IJC=1,LRE BGENE1(IJL,IJC)=BGENE(IJL,IJC) BGENE1(IJL+3,IJC)=ZZZ*BGENE(IJL+3,IJC) 1502 CONTINUE DJAC1=DJAC*POIGAU(IGAU1)*(EPAIST/2.D0) ENDIF 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 CALL DHDKTI(PROG,LHOOK,DDHOOK) SEGDES MLREEL * write(6,*)((ddhook(IU,io),iu=1,6),io=1,6) ENDIF ELSE IF (IMAT.EQ.1) THEN DO 9001 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 9001 CONTINUE IF (IGAU1.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHCOM(VALMAT,NMATT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) * write(6,*)((ddhook(IU,io),iu=1,6),io=1,6) ENDIF CALL BDBS1(BGENE1,DJAC1,DDHOOK,LRE,LHOOK,REL,MFR,IFOUR,MATE, 1 IGAU,IMAT,EXCEN) 1102 CONTINUE 1101 CONTINUE ENDIF REL(6,6)=REL(5,5)*1.D-7 REL(12,12)=REL(6,6) REL(18,18)=REL(6,6) ICOM=0 IF(ABS(EXCEN).GT.XPETIT .OR. CMATE.EQ.'COMPOSIT' 1 .OR. IMAT.EQ.2) ICOM=1 CALL TRANSK(REL,BPSS,LRE,3,ICOM) C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,IB)) 3028 CONTINUE IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF SEGSUP WRK1,WRK2,WRK4 IF(NPINT.NE.0)SEGSUP WRK5 GOTO 510 C_______________________________________________________________________ C C ELEMENT COQ8 C_______________________________________________________________________ C 41 CONTINUE NBBB=NBNN NBNO=NBNN SEGINI WRK1,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 COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C CALL ZERO (REL,LRE,LRE) C C ON CHERCHE LES EPAISSEURS ET LES EXCENTREMENTS. C MPTVAL=IVACAR DO 4041 IGAU=1,NBPGAU MELVAL=IVAL(1) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) WORK(IGAU) =VELCHE(IGMN,IBMN) IF (IVAL(2).NE.0) THEN MELVAL=IVAL(2) IGMN=MIN(IGAU,VELCHE(/1)) IBMN=MIN(IB,VELCHE(/2)) WORK(10+IGAU)=VELCHE(IGMN,IBMN) ELSE WORK(10+IGAU)=0.D0 ENDIF 4041 CONTINUE C C DETERMINATION DES AXES LOCAUX AUX NOEUDS C CALL CQ8LOC(XE,NBNN,MINTE1.SHPTOT,WORK(21),IRR) C C BOUCLE SUR LES POINTS DE GAUSS C DO 3042 IGAU=1,NBPGAU E3=DZEGAU(IGAU) CALL BCOQ8E(IGAU,XE,NBNN,WORK(1),WORK(11),BGENE,DJAC, 1 E3,SHPTOT,WORK(21),IRR) C C GESTION D'ERREUR: IRR=0 CORRESPOND A UN VECTEUR NUL (CF. CROSS2) C IRR=-1 CORRESPOND A UN JACOBIEN NUL(CF. SHLJAC) C IF(IRR.EQ.0) THEN CALL ERREUR(241) GOTO 9941 ELSE IF(IRR.EQ.-1)THEN CALL ERREUR(240) GOTO 9941 ENDIF C DJAC=ABS(DJAC)*POIGAU(IGAU) 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 CALL DOHOOO(PROG,LHOOK,DDHOOK) 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)) 1 CALL DOHCOE (VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) ENDIF C C ON CALCULE SA RAIDEUR C CALL COQ8RI(BGENE,DJAC,DDHOOK,LRE,NBPGAU,IGAU,NBNN,REL) C 3042 CONTINUE C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,IB)) 3041 CONTINUE c IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF 9941 CONTINUE SEGSUP WRK1,WRK2,WRK3 SEGDES MINTE1 GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE COQ2 C_______________________________________________________________________ C 44 CONTINUE DIM3=1.D0 NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2 DO 3044 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C CALL ZERO (REL,LRE,LRE) C C BOUCLE SUR LES POINTS DE GAUSS C DO 4044 IGAU=1,NBPGAU MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(1,IBMN) IF (IVAL(2).NE.0) THEN MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) EXCEN =VELCHE(1,IBMN) ELSE EXCEN=0.D0 ENDIF IF (IFOUR.EQ.-2) THEN IF (IVAL(3).NE.0) THEN MELVAL=IVAL(3) IBMN=MIN(IB,VELCHE(/2)) DIM3 =VELCHE(1,IBMN) ELSE DIM3=1.D0 ENDIF ENDIF C C APPEL A BCOQ2 ... C CALL BCOQ2(BGENE,NSTRS,DJAC,IGAU,IFOUR,XE,NHRM,QSIGAU,POIGAU, . EXCEN,DIM3,IRRT,XDPGE,YDPGE) C C GESTION D'ERREUR C LES ERREURS PREVUES SONT LONGEUR DE L'ELEMENT =0 OU RAYON C AU POINT D'INTEGRATION =0 OU RAPPORT R/L TROP PETIT (INFERIEUR C A 1.E-3). C IF(IRRT.EQ.1) THEN INTERR(1)=IB CALL ERREUR(255) GOTO 9944 ELSE IF (IRRT.EQ.2) THEN INTERR(1)=IB CALL ERREUR(256) GOTO 9944 ENDIF 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 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ENDIF CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL) ELSE IF (IMAT.EQ.1) THEN * DO 9044 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 9044 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHCOM(VALMAT,NMATT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) CALL HOOKMU(EPAIST,0.D0,LHOOK,DDHOOK,DDHOMU) CALL BDBST(BGENE,DJAC,DDHOMU,LRE,NSTRS,REL) ENDIF 4044 CONTINUE C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,IB)) 3044 CONTINUE C C IMPRESSION D'UN EVENTUEL MESSAGE D'ERREUR... IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF 9944 CONTINUE SEGSUP WRK1,WRK2 GOTO 510 C_______________________________________________________________________ C C SECTEUR DE CALCUL POUR LE COQ4 C_______________________________________________________________________ C 49 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,WRK2,WRK4 c c ... Si le matériau n'est pas isotrope, dans le cas général les c tensions et le cisaillement NE sont PAS découplées. Ce qui veut c dire qu'on n'a pas le droit de les intégrer différemment ... c DO 3049 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C CALL ZERO (REL,LRE,LRE) CALL CQ4LOC(XE,XEL,BPSS,IRRT,1) C IRRT=1 NODI TROPPO VICINI IF(IRRT.EQ.1) THEN INTERR(1)=IB CALL ERREUR(323) GOTO 9949 ELSE IF(IRRT.EQ.3) THEN IRRT = 0 NOPLAN = 1 ELSE NOPLAN = 0 ENDIF C C BOUCLE SUR LES POINTS DE GAUSS C MPTVAL=IVACAR MELVAL=IVAL(1) IBMN=MIN(IB,VELCHE(/2)) EPAIST=VELCHE(1,IBMN) IF (IVAL(2).NE.0) THEN MELVAL=IVAL(2) IBMN=MIN(IB,VELCHE(/2)) EXCEN =VELCHE(1,IBMN) ELSE EXCEN=0.D0 ENDIF DO 4049 IGAU=1,NBPGAU C C APPEL A BCOQ4 C if(cmate.eq.'ISOTROPE') then CALL BCOQ4(IGAU,XEL,SHPTOT,SHPWRK,BGENE,DJAC,EXCEN,NOPLAN,IRRT, + 0) else CALL BCOQ4O(IGAU,XEL,SHPTOT,SHPWRK,BGENE,DJAC,EXCEN,NOPLAN,IRRT, + 0) endif DJAC=DJAC*POIGAU(IGAU) C IRRT=1 JACOBIANO <= 0 IF(IRRT.EQ.1) THEN INTERR(1)=IB CALL ERREUR(321) GOTO 9949 ENDIF 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 CALL DOHOOO(PROG,LHOOK,DDHOOK) SEGDES MLREEL ENDIF CALL BDBST(BGENE,DJAC,DDHOOK,LRE,NSTRS,REL) ELSE IF (IMAT.EQ.1) THEN * DO 9049 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 9049 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHCIS(VALMAT,CMATE,IFOUR,LHOOK,DDHOOK,IRTD) CALL HOOKMU(EPAIST,0.D0,LHOOK,DDHOOK,DDHOMU) if(cmate.eq.'ISOTROPE') then CALL COQ4RI (IGAU,BGENE,DJAC,EXCEN,NOPLAN,DDHOMU,REL) else CALL COQ4RJ (IGAU,BGENE,DJAC,EXCEN,NOPLAN,DDHOMU,REL) endif ENDIF 4049 CONTINUE C REL(6,6)=REL(5,5)*1.D-7 REL(12,12)=REL(6,6) REL(18,18)=REL(6,6) REL(24,24)=REL(6,6) ICOM=0 IF(ABS(EXCEN).GT.XPETIT .OR.CMATE.EQ.'COMPOSIT' 1 .OR. IMAT.EQ.2) ICOM=1 CALL TRANSK(REL,BPSS,LRE,4,ICOM) C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,IB)) 3049 CONTINUE C C IMPRESSION D'UN EVENTUEL MESSAGE D'ERREUR... IF(IRTD.EQ.0) THEN MOTERR(1:8)=CMATE MOTERR(9:16)=NOMFR(MFR/2+1) INTERR(1)=IFOUR CALL ERREUR(81) ENDIF 9949 CONTINUE SEGSUP WRK1,WRK2,WRK4 GOTO 510 C_______________________________________________________________________ C C ELEMENT DST C_______________________________________________________________________ C 93 CONTINUE NBNO=NBNN NBBB=NBNN SEGINI WRK1,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 DO 3093 IB=1,NBELEM C C ON CHERCHE LES COORDONNEES DES NOEUDS DE L ELEMENT IB C CALL DOXE(XCOOR,IDIM,NBNN,NUM,IB,XE) C CALL VPAST(XE,BPSS) C BPSS STOCKE LA MATRICE DE PASSAGE CALL VCORLC (XE,XEL,BPSS) CALL ZERO (REL,LRE,LRE) C C BOUCLE SUR LES POINTS DE GAUSS C DO 1193 IGAU=1,NBPGAU MPTVAL=IVACAR MELVAL=IVAL(1) IBMN =MIN(IB,VELCHE(/2)) EPAIST=VELCHE(1,IBMN) IF (IVAL(2).NE.0) THEN MELVAL=IVAL(2) IBMN =MIN(IB,VELCHE(/2)) EXCEN =VELCHE(1,IBMN) ELSE EXCEN=0.D0 ENDIF * * 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(CMATE.NE.'ISOTROPE')THEN IF(IGAU.LE.NBGCOS)THEN IF(IMAT.EQ.2)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 LES COEFFICIENTS DE 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 CALL DOHOOO(PROG,LHOOK,DDHOMU) SEGDES MLREEL IF(CMATE.EQ.'ORTHOTRO') + CALL CHGREP1(COSA,SINA,DDHOMU,LHOOK) ENDIF ELSE IF (IMAT.EQ.1) THEN * DO 9093 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 9093 CONTINUE IF (IGAU.LE.NBGMAT.AND.(IB.LE.NELMAT.OR.NBGMAT.GT.1)) 1 CALL DOHDST(VALMAT,CMATE,IFOUR,NSTRS,DDHOOK,IRTD) CALL HOOKMU(EPAIST,0.D0,NSTRS,DDHOOK,DDHOMU) ENDIF * CALL ZERO(BGENE,NSTRS,LRE) IF(CMATE.NE.'ISOTROPE')THEN IF(IGAU.LE.NBGCOS)THEN IF(IMAT.EQ.1.AND.CMATE.EQ.'ORTHOTRO')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 CC C TERMES DE LA MATRICE DE RIGIDITE RELATIFS C AUX CISAILLEMENTS TRANSVERSES C CALL RCDST(XE,NSTRS,LRE,DDHOMU, 1 WORK(1),WORK(10),WORK(19),REL,BGENE,1) C TERMES DE LA MATRICE B RELATIFS AUX EFFETS C DE MEMBRANE ET DE FLEXION C CALL BMFDST(IGAU,XE,NSTRS,QSIGAU,ETAGAU,SHPTOT,SHPWRK, 1 WORK(1),WORK(10),WORK(19),BGENE,DUM) * DO 10 NPOI=1,3 SHPWRK(1,NPOI)=SHPTOT(1,NPOI,IGAU) SHPWRK(2,NPOI)=SHPTOT(2,NPOI,IGAU) SHPWRK(3,NPOI)=SHPTOT(3,NPOI,IGAU) 10 CONTINUE CALL JACOBI(XEL,SHPWRK,2,3,DJAC) CALL ROTB(BGENE,NSTRS,COSA,SINA) ELSE C C TERMES DE LA MATRICE DE RIGIDITE RELATIFS C AUX CISAILLEMENTS TRANSVERSES C CALL RCDST(XEL,NSTRS,LRE,DDHOMU, 1 WORK(1),WORK(10),WORK(19),REL,BGENE,1) C C TERMES DE LA MATRICE B RELATIFS AUX EFFETS C DE MEMBRANE ET DE FLEXION C CALL BMFDST(IGAU,XEL,NSTRS,QSIGAU,ETAGAU,SHPTOT,SHPWRK, 1 WORK(1),WORK(10),WORK(19),BGENE,DJAC) ENDIF DJAC=DJAC*POIGAU(IGAU) C C ON MODIFIE LA MATRICE B EN CAS D'EXCENTREMENT C IF (EXCEN.NE.0.) 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 CALL BDBS1(BGENE,DJAC,DDHOMU,LRE,NSTRS,REL,MFR,IFOUR,MATE, 1 IGAU,IMAT,EXCEN) 1193 CONTINUE REL(6,6)=REL(5,5)*1.D-7 REL(12,12)=REL(6,6) REL(18,18)=REL(6,6) ICOM=0 IF(ABS(EXCEN).GT.XPETIT .OR. CMATE.EQ.'COMPOSIT' 1 .OR. IMAT.EQ.2) ICOM=1 CALL TRANSK(REL,BPSS,LRE,3,ICOM) C C REMPLISSAGE DE XMATRI C CALL REMPMT(REL,LRE,RE(1,1,IB)) 3093 CONTINUE C 9993 CONTINUE SEGSUP WRK1,WRK2,WRK3,WRK4 GOTO 510 * C======================================================================= C========= ERREUR : CAS NON PREVUS ===================================== C======================================================================= 99 CONTINUE MOTERR(1:4)=NOMTP(MELE) MOTERR(9:12)='RIGI3' CALL ERREUR(86) * 510 CONTINUE SEGSUP,MVELCH * SEGDES XMATRI RETURN END