1 : C TMAFRT SOURCE CHAT 06/03/29 21:35:52 5360 2 : SUBROUTINE TMAFRT(IDE,ITRNOE,NBNMAX,ITRTRI,NBCMAX,IND,NBE, 3 : > IFAC,NBFAC,NFAMAX,iarr) 4 : C ************************************************************** 5 : C OBJET : 6 : C CALCULE LA FRONTIERE D'UN ENSEMBLE DE MAILLES CONSECUTIVES 7 : C DANS LE MAILLAGE 8 : C EN ENTREE: 9 : C IDE : (1..3) DIMENSION DES ELEMENTS 10 : C ITRNOE: LES NOEUDS DES ELEMENTS 11 : C NBNMAX : (2..8) NOMBRE DE NOEUDS MAXIMUM DES ELEMENTS 12 : C ITRTRI: LES VOISINS DES ELEMENTS 13 : C NBCMAX : (2..6) NOMBRE DE COTES MAXIMUM DES ELEMENTS 14 : C IND : INDICE DU PREMIER ELEMENT DE L'ENSEMBLE 15 : C NBE : NOMBRE D'ELEMENTS DE L'ENSEMBLE 16 : C NCFMAX: NOMBRE MAXIMUM DE SOMMETS DES ELEMENTS FRONTIERE 17 : C =IDE SAUF EN 3D POUR LES PRISMES,PYRAMIDES,HEXA 18 : C EN SORTIE: 19 : C IFAC : LISTE DES FACES DE LA FRONTIERE 20 : C NUMERO D'ELEMENT,INDICE DE LA FACE POUR L'ELEMENT 21 : C L'INDICE EST POSITIF SI LA FRONTIERE EST REELLE 22 : C L'INDICE EST NEGATIF SI C'EST UNE FRONTIERE INTERIEURE 23 : C EN ABSOLU 0 < | INDICE | < NBCMAX+1 24 : C NBFAC : NOMBRE D'ELEMENTS DE LA FRONTIERE 25 : C iarr : CODE D'ERREUR 0 => OK, -2 => NCFMAX TROP PETIT 26 : C CONDITION D'APPLICATION : MAILLAGE MIXTE 1D,2D ET 27 : C ET TETRAEDRES 28 : C ************************************************************ 29 : IMPLICIT INTEGER(I-N) 30 : INTEGER IDE,ITRNOE(*),NBNMAX,ITRTRI(*),NBCMAX,IND,NBE 31 : INTEGER IFAC(*),NBFAC,NFAMAX,iarr 32 : C 33 : INTEGER I,J,INDF,NBRN,NBC 34 : EXTERNAL STRNBN,STRNBC 35 : INTEGER STRNBN,STRNBC 36 : C 37 : iarr = 0 38 : NBFAC = 0 39 : INDF = (NBE-IND)+1 40 : DO 20 I=IND,INDF 41 : DO 10 J=1,NBCMAX 42 : IF(( ITRTRI((I-1)*NBCMAX+J) .LE. 0 ).OR. 43 : > ( ITRTRI((I-1)*NBCMAX+J) .GT. INDF ))THEN 44 : NBRN = STRNBN(I,ITRNOE,NBNMAX) 45 : NBC = STRNBC(NBRN,IDE) 46 : IF(NBC.LT.J)GO TO 20 47 : NBFAC = NBFAC + 1 48 : IF(NBFAC.GT.NFAMAX)THEN 49 : iarr = -2 50 : GO TO 999 51 : ENDIF 52 : IFAC((NBFAC-1)*2+1) = I 53 : IFAC((NBFAC-1)*2+2) = J 54 : C --- POUR LES FRONTIERES INTERIEURES --- 55 : IF(ITRTRI((I-1)*NBCMAX+J).LT.0) 56 : > IFAC((NBFAC-1)*2+2) = -J 57 : ENDIF 58 : 10 CONTINUE 59 : 20 CONTINUE 60 : 999 END 61 : 62 : 63 :
© Cast3M 2003 - All rights reserved.
Disclaimer