1 : C EMPELE SOURCE CHAT 07/10/29 21:18:58 5940 2 : SUBROUTINE EMPELE(I,ITELAC,INUMAT,ICONVE,LISTMA,ICONNT) 3 : 4 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 5 : C 6 : C But : Empiler correctement dans le segment LISTMA 7 : C l'élément qui vient d'être lu 8 : C 9 : C Appelé par : LIRAVS 10 : C 11 : C Paramètres : 12 : C 13 : C I : numéro global de l'élément (entrée) 14 : C 15 : C ITELAC : ITYPEL de l'élément (entrée) 16 : C 17 : C INUMAT : numéro du matériau de l'élément (entrée) 18 : C 19 : C ICONVE : tableau de conversion des connectivités (entrée) 20 : C 21 : C LISTMA : segment LISTMA (entrée et sortie) 22 : C 23 : C ICONNT : connectivités du nouvel élément (entrée) 24 : C 25 : C Auteur : Michel Bulik 26 : C Octobre 1994 27 : C 28 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 29 : 30 : IMPLICIT INTEGER(I-N) 31 : -INC CCGEOME 32 : -INC SMELEME 33 : 34 : INTEGER I,ITELAC,INUMAT,ICONVE(*),ICONNT(*) 35 : 36 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 37 : 38 : SEGMENT LISTMA 39 : POINTEUR PTMA(NBSZEL).MELEME 40 : INTEGER MATER(NBSZEL) 41 : INTEGER TYPDEL(NBSZEL) 42 : INTEGER NUMEMA(NOMBEL) 43 : INTEGER NUMELE(NOMBEL) 44 : ENDSEGMENT 45 : 46 : C 47 : C Description du segment LISTMA (LISTe des MAillages) 48 : C 49 : C Paramètres : NBSZEL - NomBre de Sous Zones ELémentaires 50 : C NOMBEL - NOMBre total des ELéments 51 : C 52 : C Tableaux : PTMA - PoinTeurs sur des MAillages élémentaires 53 : C MATER - numéros des MATERiaux des sous-zones 54 : C TYPDEL - TYPes Des ELéments des sous-zones (=ITYPEL) 55 : C NUMEMA - NUMEros des MAillages auquels appartiennent 56 : C les éléments (1..NBSZEL) 57 : C NUMELE - le NUMéro de l'ELEment dans sa sous zone 58 : C 59 : C Remarque : On ne touche pas à son état (actif ou non) dans cette 60 : C subroutine, on s'en occupe dans LIRAVS 61 : C 62 : CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 63 : 64 : NBSZEL = LISTMA.MATER(/1) 65 : NOMBEL = LISTMA.NUMEMA(/1) 66 : 67 : C ... Boucle sur les sous-zones existantes ... 68 : DO 5400 K=1,NBSZEL 69 : C ... On vérifie si l'élément appartient à une d'elles ... 70 : IF(ITELAC.EQ.(LISTMA.TYPDEL(K)).AND. 71 : & INUMAT.EQ.(LISTMA.MATER(K))) THEN 72 : C ... Si OUI, on l'empile là où il faut ... 73 : IPT3=LISTMA.PTMA(K) 74 : SEGACT IPT3 75 : NBELEM=IPT3.NUM(/2) 76 : NBELEM=NBELEM+1 77 : NBNN=IPT3.NUM(/1) 78 : NBSOUS=0 79 : NBREF=0 80 : SEGADJ IPT3 81 : IPT3.ICOLOR(NBELEM)=MOD(K-1,7)+1 82 : LISTMA.NUMEMA(I)=K 83 : GOTO 5401 84 : ENDIF 85 : 5400 CONTINUE 86 : C ... Sinon (c.à.d. on n'a pas trouvé) -> nouveau maillage ... 87 : NBSZEL=NBSZEL+1 88 : SEGADJ LISTMA 89 : LISTMA.TYPDEL(NBSZEL)=ITELAC 90 : LISTMA.MATER(NBSZEL)=INUMAT 91 : NBNN=NBNNE(ITELAC) 92 : NBELEM=1 93 : NBSOUS=0 94 : NBREF=0 95 : SEGINI IPT3 96 : LISTMA.PTMA(NBSZEL)=IPT3 97 : IPT3.ITYPEL=ITELAC 98 : C ... Les couleurs des nouveaux maillages valent 1, 2, ..., 7, 1, etc 99 : IPT3.ICOLOR(NBELEM)=MOD(NBSZEL-1,7)+1 100 : LISTMA.NUMEMA(I)=NBSZEL 101 : 5401 CONTINUE 102 : C ... Partie commune dans les deux cas ... 103 : LISTMA.NUMELE(I)=NBELEM 104 : DO 5402 K=1,NBNN 105 : IPT3.NUM(K,NBELEM)=ICONNT(ICONVE(K)) 106 : 5402 CONTINUE 107 : SEGDES IPT3 108 : 109 : RETURN 110 : END 111 : 112 : 113 : 114 : 115 : 116 : 117 :
© Cast3M 2003 - All rights reserved.
Disclaimer