tcoq8c
C TCOQ8C SOURCE OF166741 23/12/04 21:15:10 11800 ************************************************************************ * * T C O Q 8 C * ----------- * * FONCTION: * --------- * TRAITEMENT DU CAS DES ELEMENTS-FINIS COQUE EPAISSE A 8 * OU A 6 NOEUDS * * PARAMETRES: (E)=ENTREE (S)=SORTIE (+ = CONTENU DANS UN COMMUN) * ----------- * * NEF (E) NUMERO DE L'ELEMENT-FINI DANS NOMTP (VOIR CCHAMP) * IMAIL (E) NUMERO DU MAILLAGE ELEMENTAIRE CONSIDERE,DANS * L'OBJET MODELE * IPMODE (E) POINTEUR SUR UN SEGMENT IMODEL * IPCHEM (E) POINTEUR SUR LE CHAMELEM DE CARACTERISTIQUE * IPRIGI (E/S) POINTEUR SUR L'OBJET RESULTAT,DE TYPE RIGIDITE * * VARIABLES: * ---------- * * NBNN NOMBRE DE NOEUDS DANS L'ELEMENT CONSIDERE * NEF NUMERO DE L'ELEMENT FINI DANS NOMTP (VOIR CCHAMP) * NBELEM NOMBRE D'ELEMENTS DANS LE MAILLAGE ELEMENTAIRE * NBPGAU NOMBRE DE POINTS DE GAUSS DANS L'ELEMENT-FINI * NDIM NOMBRE DE LIGNES DE LA MATRICE GRADIENT * CEL(3*NBNN,3*NBNN) MATRICE DE CONDUCTIVITE ELEMENTAIRE * XE(3,NBNN) COORDONNEES DE L'ELEMENT DANS LE REPERE GLOBAL * GRAD(NDIM,2*NBNN) MATRICE GRADIENT DES FONCTIONS DE FORME BIDIM. * XK(3,NBPGAU) LES CONDUCTIVITES AUX POINTSDE GAUSS * EP(NBPGAU) LES EPAISSEURS AUX POINTS DE GAUSS * TXR(3,3,NBNN) LES AXES LOCAUX AUX NOEUDS ************************************************************************ & IPMATR,NLIGR) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMCOORD -INC SMINTE -INC CCHAMP -INC SMRIGID -INC SMELEME -INC SMCHAML SEGMENT,MMAT1 REAL*8 EP(NBNN),XK(3,NBPGAU),TXR(3,3,NBNN),EXC(NBNN) REAL*8 COSA(NBPGAU),SINA(NBPGAU) REAL*8 XJ(3,3),XJI(3,3),TT(9),YK(3,3) ENDSEGMENT * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * PARAMETER (UN=1.D0,DEUX=2.D0) * * RECUPERATION DES CARACTERISTIQUES GEOMETRIQUES DU MAILLAGE * ELEMENTAIRE * MELEME = IPMAIL c* SEGACT,MELEME NBNN = NUM(/1) NBELEM = NUM(/2) * * RECUPERATION DES CARACTERISTIQUES D'INTEGRATION DE L'ELEMENT * FINI LIE A NOTRE MAILLAGE * MINTE = IPINTE C* SEGACT,MINTE NBPGAU=POIGAU(/1) * IF (IERR.NE.0) RETURN MINTE1 = IPINT1 SEGACT,MINTE1 * XMATRI= IPMATR c* SEGACT,XMATRI*MOD * MPTVAL = IVAMAT IPMELV = IVAL(NVAMAT) * Verification de la constance de l'epaisseur : c* CALL QUELCH(IPMELV,ICONS) c* IF (ICONS.NE.0) THEN c* CALL ERREUR(566) c* GOTO 999 c* ENDIF * NDIM = IDIM SEGINI,MMAT1 * * BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IMAIL * DO 10 IEL = 1, NBELEM * * MISE A ZERO DES TABLEAUX CEL ET GRAD ET EXC * * * ON CHERCHE LES COORDONNEES DES NOEUDS DE L'ELEMENT IEL, * DANS LE REPERE GLOBAL * * * CALCUL DES AXES LOCAUX A TOUS LES NOEUDS DE L'ELEMENT * * ECHEC DANS LE CALCUL DES AXES LOCAUX IF (IRR.EQ.0) THEN GOTO 999 ENDIF * * ON CHERCHE LES CONDUCTIVITES ET LES COSINUSDIRECTEURS * DES AXES LOCAUX (CAS ORTHOTROPE) AUX POINTS DE GAUSS * IF (IMATE.EQ.1) THEN MELVAL = IVAL(1) IBMN = MIN(IEL,VELCHE(/2)) DO IG = 1,NBPGAU IGMN=MIN(IG,VELCHE(/1)) XK(1,IG) = VELCHE(IGMN,IBMN) ENDDO ELSE DO IM = 1, 5 MELVAL = IVAL(IM) IBMN = MIN(IEL,VELCHE(/2)) IF (IM.LE.3) THEN DO IG = 1, NBPGAU IGMN = MIN(IG,VELCHE(/1)) XK(IM,IG) = VELCHE(IGMN,IBMN) ENDDO ELSE IF (IM.EQ.4) THEN DO IG = 1, NBPGAU IGMN = MIN(IG,VELCHE(/1)) COSA(IG) = VELCHE(IGMN,IBMN) ENDDO ELSE DO IG = 1,NBPGAU IGMN = MIN(IG,VELCHE(/1)) SINA(IG) = VELCHE(IGMN,IBMN) ENDDO ENDIF ENDDO ENDIF * * ON CHERCHE LES EPAISSEURS MELVAL = IPMELV IBMN = MIN(IEL,VELCHE(/2)) DO IG = 1, NBNN IGMN = MIN(IG,VELCHE(/1)) EP(IG) = VELCHE(IGMN,IBMN) * * L'ELEMENT (IEL) AU POINT DE GAUSS (IG)DE TYPE (NOMTP(NEF)) A * UNE EPAISSEUR NULLE IF (EP(IG).LE.XPETIT) THEN INTERR(1)=IEL INTERR(2)=IG MOTERR(1:4)=NOMTP(NEF) GOTO 999 ENDIF ENDDO * * BOUCLE SUR LES POINTS D ' INTEGRATION * DO 40 IGAU = 1,NBPGAU * * CALCUL DU JACOBIEN ET DE SON DETERMINENT EN CE POINT DE GAUSS * * E3 = DZEGAU(IGAU) * * JACOBIEN NUL DANS L'ELEMENT IEL IF (IRR.LT.0)THEN INTERR(1)=IEL GOTO 999 ENDIF * * INVERSION DU JACOBIEN * DUM =UN/DJAC XJI(1,1) = DUM*( XJ(2,2)*XJ(3,3) - XJ(2,3)*XJ(3,2)) XJI(2,1) = DUM*(-XJ(2,1)*XJ(3,3) + XJ(2,3)*XJ(3,1)) XJI(3,1) = DUM*( XJ(2,1)*XJ(3,2) - XJ(2,2)*XJ(3,1)) XJI(1,2) = DUM*(-XJ(1,2)*XJ(3,3) + XJ(1,3)*XJ(3,2)) XJI(2,2) = DUM*( XJ(1,1)*XJ(3,3) - XJ(1,3)*XJ(3,1)) XJI(3,2) = DUM*(-XJ(1,1)*XJ(3,2) + XJ(1,2)*XJ(3,1)) XJI(1,3) = DUM*( XJ(1,2)*XJ(2,3) - XJ(1,3)*XJ(2,2)) XJI(2,3) = DUM*(-XJ(1,1)*XJ(2,3) + XJ(1,3)*XJ(2,1)) XJI(3,3) = DUM*( XJ(1,1)*XJ(2,2) - XJ(1,2)*XJ(2,1)) * * TRAITEMENT SPECIFIQUE DU CAS ORTHOTROPE IF (IMATE.EQ.2) THEN * * DETERMINATION DES COSINUS DIRECTEURS DES AXES LOCAUX EN CE POINT * COQ8 COQ6 IF(NEF.EQ.41.OR.NEF.EQ.56)THEN * DO I=1,3 TT(I ) = XJ(1,I) TT(I+3) = XJ(2,I) ENDDO * * PRODUITS VECTORIELS ET NORMALISATIONS * * ELSE IF(IGAU.EQ.1)THEN * * CALCUL DES AXES LOCAUX DE L 'ELEMENT COQ4 * * ENDIF ENDIF IF(IRR1.EQ.0) THEN * ECHEC DANS LE CALCUL DES AXES LOCAUX GO TO 999 ENDIF * * PRODUIT MATRICIEL TT TRANSPOSE * XJI * DO I=1,3 IK = 3*(I-1) DO J=1,3 r_z = XZERO DO K=1,3 r_z = r_z + TT(IK+K)*XJI(K,J) ENDDO XJ(I,J) = r_z ENDDO ENDDO * ENDIF * * CALCUL DE LA MATRICE DE GRADIENT DES FONCTIONS DE FORME DANS LE * REPERE GLOBAL POUR LE CAS ISOTROPE ET DANS LE REPERE LOCAL * POUR LE CAS ORTHOTROPE * NBNN2=2*NBNN DO K = 1,NLIGR DO I = 1,3 r_z = XZERO DO J = 1,3 JJ=J+1 IF(JJ.EQ.4)JJ=1 IF(K.LE.NBNN)THEN KK=K IF(J.LE.2)THEN COEF=(E3/DEUX)*(E3-UN) ELSE COEF=E3-UN/DEUX ENDIF ELSEIF(K.GT.NBNN.AND.K.LE.NBNN2)THEN KK=K-NBNN IF(J.LE.2)THEN COEF=UN-E3*E3 ELSE COEF=-DEUX*E3 ENDIF ELSE KK=K-NBNN2 IF(J.LE.2)THEN COEF=(E3/DEUX)*(E3+UN) ELSE COEF=E3+UN/DEUX ENDIF ENDIF IF (IMATE.EQ.1) THEN r_z = r_z + COEF*SHPTOT(JJ,KK,IGAU)*XJI(I,J) ELSE r_z = r_z + COEF*SHPTOT(JJ,KK,IGAU)*XJ(I,J) ENDIF ENDDO ENDDO ENDDO * * ON MULTIPLIE LE DETERMINENT JACOBIEN PAR LE POIDS D' INTEG- * RATION POUR LE POINT DE GAUSS CONSIDERE * DJAC = DJAC*POIGAU(IGAU) * IF (IMATE.EQ.1) THEN * * CAS DU MATERIAU ISOTROPE FACT = XK(1,IGAU)*DJAC * * ON AJOUTE LE PRODUIT K*DJAC*TRANSPOSEE(GRAD)*GRAD POUR LE * POINT DE GAUSS CONSIDERE * * * CAS ORTHOTROPE ELSE * * CALUL DE LA MATRICE DES COEFFICIENTS DE CONDUCTIVITES DANS LE * PLAN,PAR RAPPORT AU REPERE LOCAL DE L'ELEMANT * IF (NEF.EQ.41.OR.NEF.EQ.56) THEN IGAU2 = IGAU ELSE NBPGA1 = NBPGAU/2 IF (IGAU.LE.NBPGA1) THEN IGAU2 = IGAU ELSE IGAU2 = IGAU-NBPGA1 ENDIF ENDIF * COS2 = COSA(IGAU2) * COSA(IGAU2) SIN2 = SINA(IGAU2) * SINA(IGAU2) SINCOS=SINA(IGAU2) * COSA(IGAU2) YK(1,1)=COS2*XK(1,IGAU) + SIN2*XK(2,IGAU) YK(2,1)=SINCOS*(XK(1,IGAU)-XK(2,IGAU)) YK(3,1)=XZERO YK(1,2)=YK(2,1) YK(2,2)=SIN2*XK(1,IGAU)+COS2*XK(2,IGAU) YK(3,2)=XZERO YK(1,3)=XZERO YK(2,3)=XZERO YK(3,3)=XK(3,IGAU) * * ON AJOUTE LE PRODUIT DJAC*TRANSPOSEE(GRAD)*XK*GRAD POUR LE * POINT DE GAUSS CONSIDERE A LA MATRICE CEL * * ENDIF * 40 CONTINUE * * REMPLISSAGE DE XMATRI * * 10 CONTINUE * * DESACTIVATION DES SEGMENTS * 999 CONTINUE SEGDES,MINTE1 SEGSUP,MMAT1 * c RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales