1 : C SFRCRE SOURCE CHAT 06/03/29 21:33:19 5360 2 : SUBROUTINE SFRCRE(IDE,IFR,NBIFR,ITRNOE,NBNMAX, 3 : > ITVL,NTRMAX, 4 : > LTRNOE,NNFMAX,LTRTRI,NCFMAX,NBF, 5 : > LNOETR,NBFNOE,NCC,iarr) 6 : C ***************************************************************** 7 : C OBJET : CREER LE MAILLAGE FRONTIERE D'UN ENSEMBLE DE MAILLES 8 : C 9 : C EN ENTREE: 10 : C IFR : IFR((I-1)*2+1) DONNE LE NUMERO DU IEME ELEMENT QUI A 11 : C UNE FACE SUR LA FRONTIERE 12 : C IFR((I-1)*2+2) DONNE LE NUMERO RELATIF DE LA FACE DU 13 : C IEME ELEMENT 14 : C NBIFR : NOMBRE D'ELEMENT DE LA FRONTIERE 15 : C 16 : C IDE : (1..3) DIMENSION DES ELEMENTS 17 : C NBNMAX : (2..8) NOMBRE DE NOEUDS MAXIMUM DES ELEMENTS 18 : C ITRNOE: ITRNOE(I,J) EST LE NOEUD J DE L'ELEMENT I 19 : C ITVL: TABLEAU DE TRAVAIL 20 : C NTRMAX: TAILLE DU TABLEAU DE TRAVAIL 21 : C SI IFR FORME 1 SEULE COMPOSANTE CONNEXE 22 : C AU MINIMUM = 2*((NBIFR*(NBCMAX-2))+2*NBCMAX) 23 : C 2D TRIANGLES = 2 * NBIFR + 12 24 : C QUAD OU TETRA = 4 * NBIFR + 16 25 : C AU MAX = (NBR MAX D'ELEMENTS EN 1 NOEUD + 1) * 26 : C NUMERO MAXI DU NOEUD DANS IFR 27 : C 28 : C NNFMAX : NOMBRE MAXIMUM DE NOEUD SUR UNE FACE DE LA FRONTIERE 29 : C NCFMAX : NOMBRE MAXIMUM DE COTE D'UNE FACE DE LA FRONTIERE 30 : C NBFNOE : TAILLE DU TABLEAU LNOETR 31 : C SI NBFNOE = 0 LNOETR NE SERA PAS REMPLI 32 : C 33 : C EN SORTIE: LE MAILLAGE DE LA FRONTIERE ET SES CARACTERISTIQUES 34 : C LTRNOE: 35 : C LTRTRI: 36 : C LNOETR: 37 : C NBF : NOMBRE DE FACES DE LA FRONTIERE 38 : C NCC : NOMBRE DE COMPOSANTES CONNEXES 39 : C iarr : CODE D'ERREUR 40 : C 0 SI OK 41 : C -1 SI LES DONNEES SONT ERRONEES 42 : C -2 SI ITVL TROP PETIT 43 : C 44 : C NIVEAU : INTERFACE UTILISATEUR 45 : C ***************************************************************** 46 : IMPLICIT INTEGER(I-N) 47 : INTEGER IDE,IFR(*),NBIFR,ITRNOE(*),NBNMAX 48 : INTEGER ITVL(*),NTRMAX 49 : INTEGER LTRNOE(*),NNFMAX,LTRTRI(*),NCFMAX,NBF 50 : INTEGER LNOETR(*),NBFNOE,NCC,iarr 51 : C 52 : INTEGER I,IDEF 53 : INTEGER ITRAV,ITRAM,NBTRAV 54 : C 55 : C NOEUDS DE LA FRONTIERE 56 : C ---------------------- 57 : C 58 : IF( (NCFMAX * NBIFR).GT.NTRMAX )THEN 59 : iarr = -2 60 : GO TO 999 61 : ENDIF 62 : C 63 : DO 10 I=1,NBIFR 63 : CALL TNOFRT(IDE,ITRNOE,NBNMAX,IFR((I-1)*2+1), 64 : > IFR((I-1)*2+2),ITVL((I-1)*NCFMAX+1)) 65 : 10 CONTINUE 66 : IF( iarr .NE. 0 )GO TO 999 67 : C 68 : C CONSTRUCTION DU MAILLAGE FRONTIERE 69 : C ---------------------------------- 70 : IDEF = IDE - 1 71 : C --- ALLOCATION DES TABLEAUX : ITRAV,ITRAM,ITRAP ---- 72 : C TOPOFRTM OCCUPE ITVL DE 1 - NBF*NCFMAX 73 : C ITRAM DOIT AVOIR LA TAILLE DE NBF 74 : C NBTRAV PEUT VARIER DE 0 A (NCFMAX + 1) * NBF 75 : C ------------------------------------------------- 76 : IF( NTRMAX .LT. (NBF * (NCFMAX+1)) )THEN 77 : iarr = -2 78 : GO TO 999 79 : ENDIF 80 : C 81 : ITRAV = (NBF * NCFMAX ) + 1 82 : NBTRAV = NTRMAX - ( NBF * NCFMAX ) 83 : C 83 : CALL SMACRE(IDEF,ITVL,NBF,0,LTRNOE,NNFMAX, 84 : > LTRTRI,NCFMAX,LNOETR,NBFNOE, 85 : > ITVL(ITRAV),NBTRAV,iarr) 86 : C 87 : IF( iarr .NE. 0 )GO TO 999 88 : ITRAM = 1 89 : ITRAV = NBF + 1 90 : NBTRAV = NTRMAX - NBF 90 : CALL SORIEN(IDEF,LTRNOE,NNFMAX,LTRTRI,NCFMAX,NBF, 91 : > ITVL(ITRAV),NBTRAV,ITVL(ITRAM),NCC,iarr) 92 : C 93 : 999 END 94 : 95 : 96 :
© Cast3M 2003 - All rights reserved.
Disclaimer