fuite1
C FUITE1 SOURCE CB215821 17/11/30 21:16:16 9639 SUBROUTINE FUITE1 C C FONCTION: DRIVER DE L'OPÉRATEUR FUITE C C recupere l'intersection de MAIL1 et MAIL2 et de MAIL1 et MAIL3 C determine le segment de fuite C appelle fuite2.eso C C C ENTREES: C C MAIL1: (objet de type MAILLAGE) contour orienté fermé formé d'éléments C de type SEG2 ou SEG3. C C MAIL2: (objet de type MAILLAGE) dont un des points sera le support d'une C des extremité de l'élément de fuite. C C MAIL3: (objet de type MAILLAGE) dont un des points sera le support de C l'autre extremité de l'élément de fuite. C C SORTIES: C C MAIL4: (objet de type MAILLAGE) contenant un élément de type SEG2 et qui C est l'élément de fuite. (MAIL4 est aussi contenu dans MAIL5 et son C inverse dans MAIL6). C C MAIL5: (objet de type MAILLAGE) contenant un des deux contours fermés C orientés issu de MAIL1. C C MAIL6: (objet de type MAILLAGE) contenant le second contour fermé C orienté issu de MAIL1. C C C C A de Gayffier C C FORTRAN + ESOPE C IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC SMELEME -INC PPARAM -INC CCOPTIO -INC SMCOORD C SEGMENT MPACTIF C ce segment contient les noeuds actifs de MAIL2 et MAIL3 C et leur adresse dans MELEME INTEGER NMAIL2(NBN2),NMAIL3(NBN3) ENDSEGMENT C C l'opérateur ne marche qu'en dimension 2 C IF (IDIM .NE. 2 ) THEN INTERR(1) = IDIM RETURN ENDIF C C on recupere MAIL1 meleme , MAIL2 ipt1 et MAIL3 ipt2 C IF (IERR .NE. 0) RETURN IF (IERR .NE. 0) RETURN IF (IERR .NE. 0) RETURN C C C SEGACT MELEME IF (LISOUS(/1) .NE. 0 .OR. ITYPEL .NE. 2) THEN RETURN ENDIF C C intersection de MAIL1 et MAIL2 C C changement de MAIL2 et MAIL3 en maillage formé de points NBN2 = IPT2.NUM(/2) NBN3 = IPT3.NUM(/2) SEGINI MPACTIF C C ipt1 et ipt2 sont actifs et formé d'une seule sous zone C NNBN2 = 0 DO 140 I=1,NBN2 DO 120 K=1,NUM(/2) IF (IPT2.NUM(1,I) .EQ. NUM(1,K)) THEN NNBN2 = NNBN2 + 1 NMAIL2(NNBN2) = IPT2.NUM(1,I) GOTO 140 ENDIF 120 CONTINUE 140 CONTINUE NBN2 = NNBN2 C C C NNBN3 = 0 DO 180 I=1,NBN3 DO 160 K=1,NUM(/2) IF (IPT3.NUM(1,I) .EQ. NUM(1,K)) THEN NNBN3 = NNBN3 + 1 NMAIL3(NNBN3) = IPT3.NUM(1,I) GOTO 180 ENDIF 160 CONTINUE 180 CONTINUE NBN3 = NNBN3 C C erreur si nbn2 = 0 ou nbn3 = 0 C IF ( (NBN3*NBN2) .EQ. 0) THEN GOTO 1000 ENDIF C SEGADJ MPACTIF C C RECHERCHE DU MINIMUM C N1 = 0 N2 = 0 DMINI = 1.D50 DO 200 I=1,NBN2 DO 190 J=1,NBN3 X2=XCOOR((NMAIL2(I)-1)*(IDIM+1)+1) Y2=XCOOR((NMAIL2(I)-1)*(IDIM+1)+2) X3=XCOOR((NMAIL3(J)-1)*(IDIM+1)+1) Y3=XCOOR((NMAIL3(J)-1)*(IDIM+1)+2) DMINI = DIST N1 = NMAIL2(I) N2 = NMAIL3(J) ENDIF 190 CONTINUE 200 CONTINUE C C erreur mail2 et mail3 on un point en commun inclus dans MAIL1 C IF (N1 .EQ. N2 ) THEN GOTO 1000 ENDIF C C C SEGDES IPT2,IPT3 C C C C SEGDES MELEME SEGSUP MPACTIF RETURN C C gestion des erreurs C 1000 CONTINUE NBELEM = 0 NBREF = 0 NBNN = 0 NBSOUS = 0 SEGINI IPT4,IPT5 IPT4.ITYPEL=2 IPT5.ITYPEL=2 C SEGDES MELEME,IPT4,IPT5 SEGSUP MPACTIF C C RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales