sore2
C SORE2 SOURCE CB215821 24/04/12 21:17:15 11897 ************************************************************************ * * SORE2 * ------ * CREATION DE LA MATRICE DE CONDUCTIVITE N DIV(GRAD T) * ( EFFET SORET) * * FONCTION: * --------- * TRAITEMENT DU CAS DES ELEMENTS-FINIS MASSIFS A INTEGRATION * NUMERIQUE,POUR UN MAILLAGE ELEMENTAIRE * * * 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 UN CHAMELEM (GRAD T aux PTS de GAUSS) * IPCHE1 (E) POINTEUR SUR UN CHAMELEM MATERIAU * IPCHE4 (E) POINTEUR SUR UN CHAMELEM FACTEUR DE GRAD T * * 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(NBNN,NBNN) MATRICE DE CONDUCTIVITE ELEMENTAIRE NON SYMETRIQUE * XE(3,NBNN) COORDONNEES DE L'ELEMENT DANS LE REPERE GLOBAL * SHP(6,NBNN) TABLEAU DE TRAVAIL * GRAD(NDIM,NBNN) MATRICE GRADIENT DES FONCTIONS DE FORME * * * * AUTEUR, DATE DE CREATION: * ------------------------- * * J.M.BAZE AVRIL 97 * * LANGAGE: * -------- * * ESOPE + FORTRAN77 * ************************************************************************ * IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) * -INC PPARAM -INC CCOPTIO -INC CCREEL *- -INC SMCOORD -INC SMINTE C-INC CCHAMP -INC SMMODEL -INC SMRIGID -INC SMELEME -INC SMCHAML * SEGMENT MPTVAL INTEGER IPOS(NS) ,NSOF(NS) INTEGER IVAL(NCOSOU) CHARACTER*16 TYVAL(NCOSOU) ENDSEGMENT * SEGMENT,MAXE REAL*8 XLOC(3,3),XGLOB(3,3),TXR(IDIM,IDIM) ENDSEGMENT * SEGMENT,MMAT1 REAL*8 CEL(NBNN,NBNN),XE(3,NBNN) REAL*8 CMAT(NDIM,NDIM),CMAT1(IDIM,IDIM) ENDSEGMENT * SEGMENT NOTYPE CHARACTER*16 TYPE(NBTYPE) ENDSEGMENT * SEGMENT,MVELCH REAL*8 GDT(IDIM),VALMAT(NV1), GDTL(IDIM) ENDSEGMENT * *NU CHARACTER*8 CNM CHARACTER*(NCONCH) CONM PARAMETER(NINF=3) INTEGER INFOS(NINF) LOGICAL lsupma * * RECUPERATION DES CARACTERISTIQUES GEOMETRIQUES DU MAILLAGE * ELEMENTAIRE * IMODEL=IPMODE c* SEGACT,IMODEL CONM = imodel.CONMOD IPMAIL = imodel.IMAMOD *NU CNM = imodel.CMATEE INM = imodel.IMATEE *NU INT = imodel.INATUU MELEME = imodel.IMAMOD c* SEGACT,MELEME NBNN = meleme.NUM(/1) NBELEM = meleme.NUM(/2) MRIGID = IPRIGI c* SEGACT,MRIGID xMATRI = IRIGEL(4,IMAIL) c* SEGACT,xMATRI*MOD *-------------------------- * RECHERCHE POINTEUR DU SEGMENTS MELVAL CONTENANT * LA DIFFUSIVITE * * REMLIR LE TABLEAU INFOS (INFORMATIONS SUR ELEMENT) INFOS(1)=0 INFOS(1)=0 INFOS(2)=0 INFOS(3)=NIFOUR * if (lnomid(6).ne.0) then lsupma = .false. nomid = imodel.lnomid(6) SEGACT,nomid MOMATR = nomid NMATR = lesobl(/2) NMATF = lesfac(/2) else MFR = 1 lsupma = .true. endif NMATT = NMATR NV1 = NMATT * NBTYPE = 1 SEGINI,notype notype.TYPE(1) = 'REAL*8' MOTYPE=notype * nomid = MOMATR SEGDES,nomid IF (lsupma) SEGSUP,nomid SEGSUP,NOTYPE IF (IERR.NE.0)THEN IPRIGI = 0 RETURN ENDIF * * RECUPERATION DES CARACTERISTIQUES D'INTEGRATION DE L'ELEMENT * FINI LIE A NOTRE MAILLAGE IF (IERR.NE.0) THEN IPRIGI = 0 RETURN ENDIF MINTE = IPINTE SEGACT,MINTE NBPGAU = minte.POIGAU(/1) * RECUPERATION DES FONCTIONS DE FORME ET LEURS DERIVEES AU CENTRE * DE L'ELEMENT POUR LE CALCUL DES AXES LOCAUX * MINTE1 = IPT1 SEGACT,MINTE1 * *---------------------------- * recuperation des MELVAL composantes du gradient aux pts de Gauss * et de leurs multiplicateurs MCHEL1=IPCHEM MCHEL2=IPCHE4 SEGACT,MCHEL1,MCHEL2 MCHAM1 = MCHEL1.ICHAML(1) MCHAM2 = MCHEL2.ICHAML(1) SEGACT,MCHAM1,MCHAM2 SEGDES,MCHEL1,MCHEL2 * MELVA1=MCHAM1.IELVAL(1) MELVA2=MCHAM1.IELVAL(2) SEGACT,MELVA1,MELVA2 IF(IDIM.EQ.3) THEN MELVA3=MCHAM1.IELVAL(3) SEGACT,MELVA3 ENDIF MELVA4 =MCHAM2.IELVAL(1) SEGACT,MELVA4 * NDIM=IDIM SEGINI,MMAT1,MVELCH,MAXE * * BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IMAIL * DO 10 IEL=1,NBELEM * * MISE A ZERO DU TABLEAU CEL * * ON CHERCHE LES COORDONNEES DES NOEUDS DE L'ELEMENT IEL, * DANS LE REPERE GLOBAL * * * CALCUL DES AXES LOCAUX DANS LE CAS ORTHO * IF (INM.EQ.2)THEN NBSH = MINTE1.SHPTOT(/2) if (nbsh.eq.-1) then IPRIGI = 0 GOTO 99 endif ENDIF * BOUCLE SUR LES POINTS DE GAUSS * IFOIS=0 IFOI2=0 DO 20 IGAU=1,NBPGAU * * CALCUL DE LA MATRICE GRADIENT DES FONCTIONS DE FORME ET * DU JACOBIEN,EN UN POINT DE GAUSS * SI IFOMOD = 0 axi DJAC CONTITNT DEJA LE MULTIPLICATEUR 2*XPI*R IF (IERR.NE.0) THEN IPRIGI = 0 GOTO 99 ENDIF IF (DJAC.LT.XZERO) THEN IFOIS=IFOIS+1 ENDIF IF (ABS(DJAC).LT.XPETIT) THEN IFOI2=IFOI2+1 ENDIF * * ON MULTIPLIE LE JACOBIEN PAR LE POIDS D'INTEGRATION, * POUR LE POINT DE GAUSS CONSIDERE * DJAC=ABS(DJAC)*POIGAU(IGAU) * VALEURS DES COMPOSANTES DES GRADIENTS DO 29 IM=1,IDIM MELVAL=MCHAM1.IELVAL(IM) IBMN=MIN(IEL,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) GDT(IM)=VELCHE(IGMN,IBMN) 29 CONTINUE * FACTEUR DE GRAD T IBMN=MIN(IEL,MELVA4.VELCHE(/2)) IGMN=MIN(IGAU,MELVA4.VELCHE(/1)) RMUL = MELVA4.VELCHE(IGMN,IBMN) * * DIFFUSIVITE DANS LE REPERE LOCAL * MPTVAL=IVAMAT DO 30 IM=1,NMATT IF(IVAL(IM).NE.0)THEN MELVAL=IVAL(IM) IBMN=MIN(IEL,VELCHE(/2)) IGMN=MIN(IGAU,VELCHE(/1)) VALMAT(IM)=VELCHE(IGMN,IBMN) ELSE VALMAT(IM)=0.D0 ENDIF 30 CONTINUE * IF (INM.EQ.1) THEN *------------------------ MATERIAU ISOTROPE ---------------------------- * * INTEGRATION DES TERMES N VI B * RK = VALMAT(1)*DJAC*RMUL DO 700 K=1,IDIM XK = GDT(K)*RK DO 300 I=1,NBNN R_Z = SHP(1,I) * XK DO 400 J = 1, NBNN 400 CONTINUE 300 CONTINUE 700 CONTINUE * ELSE *------------------- MATERIAU ORTHOTROPE ----------------- IF(IDIM.EQ.2) THEN *----------BIDIM * MATERIAU ORTHOTROPE XLOC(1,1)=VALMAT(3) XLOC(2,1)=VALMAT(4) XLOC(1,2)=-VALMAT(4) XLOC(2,2)=VALMAT(3) * CALCUL DES COS.DIRECTEURS DES AXES ORTH. /REPERE GLOBAL * XGLOB=TXR*XLOC * DO 40 K=1,IDIM DO 409 J=1,IDIM DO 4099 I=1,IDIM XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J) 4099 CONTINUE 409 CONTINUE 40 CONTINUE * DO 51 I = 1,IDIM CMAT1(I,I) = VALMAT(I) 51 CONTINUE * * RETOUR DANS LE REPERE GLOBAL DO 41 I= 1, IDIM GDTL(I) = 0.D0 DO 411 J= 1, IDIM GDTL(I) = GDTL(I) + CMAT(I,J)*GDT(J) 411 CONTINUE 41 CONTINUE * ELSE *----------TRIDIM MATERIAU ORTHOTROPE ------------------- XLOC(1,1)=VALMAT(4) XLOC(2,1)=VALMAT(5) XLOC(3,1)=VALMAT(6) XLOC(1,2)=VALMAT(7) XLOC(2,2)=VALMAT(8) XLOC(3,2)=VALMAT(9) DO 45 K=1,IDIM DO 451 J=1,IDIM DO 452 I=1,IDIM XGLOB(K,J)=TXR(J,I)*XLOC(I,K)+XGLOB(K,J) 452 CONTINUE 451 CONTINUE 45 CONTINUE * DO 52 I = 1,IDIM CMAT1(I,I) = VALMAT(I) 52 CONTINUE * * RETOUR DANS LE REPERE GLOBAL DO 53 I= 1, IDIM GDTL(I) = 0.D0 DO 531 J= 1, IDIM GDTL(I) = GDTL(I) + CMAT(I,J)*GDT(J) 531 CONTINUE 53 CONTINUE * ENDIF * INTEGRATION DES TERMES N VI B * DO 701 K=1,IDIM XK = GDTL(K)*DJAC*RMUL DO 301 I=1,NBNN DO 401 J=1,NBNN 401 CONTINUE 301 CONTINUE 701 CONTINUE ENDIF * * FIN DE LA BOUCLE SUR LES POINTS DE GAUSS * 20 CONTINUE * END DO IF (IFOIS.NE.0.AND.IFOIS.NE.NBPGAU) THEN * * LE JACOBIEN EST NEGATIF,MAILLAGE INCORRECT * INTERR(1)=IEL IPRIGI = 0 GOTO 99 ENDIF IF (IFOI2.EQ.NBPGAU) THEN * * CAS OU LE JACOBIEN EST TRES PETIT * INTERR(1)=IEL IPRIGI = 0 GOTO 99 ENDIF * REMPLISSAGE DE XMATRI * DO 100 IA=1,NBNN DO 1001 IB=1,NBNN xmatri.RE(IA,IB,iel) = CEL(IA,IB) 1001 CONTINUE 100 CONTINUE * SEGDES,XMATRI 10 CONTINUE * END DO * * DESACTIVATION DES SEGMENTS * 99 CONTINUE SEGSUP,MMAT1,MVELCH SEGDES,MINTE,MINTE1 SEGDES,MELVA4 DO 550 I=1,IDIM MELVAL=MCHAM1.IELVAL(I) SEGDES,MELVAL 550 CONTINUE SEGDES,MCHAM1 RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales