1 : C VOISIN SOURCE CHAT 05/01/13 04:08:55 5004 2 : SUBROUTINE VOISIN(NDIM,MELEME,IPT1,IELL,INOEUD,IVOISI,NVOISI) 3 : ************************************************************************* 4 : *** SP 'VOISIN' : lorsque la particule passe par un noeud ou une arete 5 : *** de l'element, 'VOISIN' cherche elements ayant le noeud 'INOEUD' en 6 : *** commun avec l'élément considéré. 7 : *** 8 : *** APPELES 1 = aucun 9 : *** APPELES 2 = aucun 10 : *** 11 : *** E = 'NDIM' dimension de l'espace 12 : *** 'MELEME' pteur sur maillage du domaine étudié 13 : *** 'IPT1' pteur sur sous-maillage contenant élément considéré 14 : *** 'IELL' n° local dans sous-maillage 'IPT1' de élémt considéré 15 : *** 'INOEUD' n° local du noeud traversé dans élément considéré 16 : *** 17 : *** S = 'IVOISI' n° globaux des elemts ayant en commun le noeud 'INOEUD' 18 : *** 'NVOISI' nbre d'elements ayant en commun le noeud 'INOEUD' 19 : *** 20 : *** Rq : dans le cas d'une arete traversée (cas 3D seulement), 'INOEUD' 21 : *** represente l'un des noeuds de l'arete. 22 : *** 23 : *** ORIGINE = PATRICK MEYNIEL, MODIFICATION = CYRIL NOU 24 : ************************************************************************* 25 : 26 : IMPLICIT INTEGER(I-N) 27 : IMPLICIT REAL*8 (A-H,O-Z) 28 : -INC SMELEME 29 : DIMENSION XDEP(3),XARI(3),IVOISI(20) 30 : 31 : *** initialisation de départ 32 : IPT2=MELEME 33 : NVOISI=0 34 : NCOMPT=0 35 : *** recuperation ds 'NBSOBJ' du nbre de sous-maillages de 'MELEME' 36 : NBSOUS=LISOUS(/1) 37 : NBSOBJ=NBSOUS 38 : IF (NBSOUS.EQ.0) NBSOBJ=1 39 : ***** BOUCLE SUR LES SOUS-MAILLAGES DE MELEME 40 : DO 10 ISOUS=1,NBSOBJ 41 : *** 'IPT2' pteur sur le iousième sous-maillage 42 : IF (NBSOUS.GT.0) IPT2=LISOUS(ISOUS) 43 : *** recuperation nbre elemts et noeuds par elemt de 'IPT2' 44 : SEGACT IPT2 45 : NBELE=IPT2.NUM(/2) 46 : NBNOEU=IPT2.NUM(/1) 47 : ******** BOUCLE SUR LES ELEMENTS DU ISOUSIEME SOUS-MAILLAGE 48 : DO 20 IELL2=1,NBELE 49 : *** on saute le cas ou le iell2ieme element est l'element courant 50 : * IF ((IELL2.NE.IELL).OR.(IPT2.NE.IPT1)) THEN 51 : ************** BOUCLE SUR LES NOEUDS DU IELL2IEME ELEMENT 52 : DO 30 INO=1,NBNOEU 53 : *** test correspondance noeud de 'IPT2' avec celui de 'IPT1' 54 : IF ((IPT2.NUM(INO,IELL2)).EQ. 55 : $ (IPT1.NUM(INOEUD,IELL))) THEN 56 : NVOISI=NVOISI+1 57 : IVOISI(NVOISI)=IELL2+NCOMPT 58 : ENDIF 59 : 30 CONTINUE 60 : * ENDIF 61 : 20 CONTINUE 62 : *** recuperation nbre elements avant le prochain sous-maillage 63 : NCOMPT=NCOMPT+NBELE 64 : IF (IPT2.NE.IPT1) SEGDES IPT2 65 : 10 CONTINUE 66 : RETURN 67 : END 68 : 69 :
© Cast3M 2003 - All rights reserved.
Disclaimer