Download eltrno.eso

Back to the list

   1 : C ELTRNO    SOURCE    CHAT      06/03/29    21:20:24     5360           
   2 : C 
   3 : C
   4 :       SUBROUTINE ELTRNO(ICODE1,IDE1,ITRNO1,NBNMX1,NBE1,
   5 :      >                  ITRNOE,NBNMAX,ITRTRI,NBCMAX,NOETRI,NOEMAX,
   6 :      >                  ITVL,NITMAX,
   7 :      >                  ICODE2,IDE2,ITRNO2,NBNMX2,NBE2,
   8 :      >                  iarr)
   9 : C      *****************************************************************
  10 : C     OBJET ELTRNO : TRANSFERT LES NOEUDS MILIEU D'UN MAILLAGE A UN 
  11 : C     OBJET          AUTRE
  12 : C
  13 : C     EN ENTREE    :
  14 : C       ---------- LE MAILLAGE AVEC NOEUDS A TRANSFERER --------
  15 : C       ICODE1 : CODE DES ELEMENTS DE ITRNO1
  16 : C       ITRNO1 : NOEUDS DES ELEMENTS (AVEC NOEUDS MILIEU)
  17 : C       IFARSN : FONCTION QUI RENVOI LES SOMMETS D'UNE ARETE (ELARSN)
  18 : C       ---------- LE MAILLAGE SANS NOEUDS ---------------------
  19 : C       ITRNOE : IDEM ITRNO2 (SANS NOEUDS MILIEU)
  20 : C       ITRTRI : TABLEAU DES ELEMENTS VOISINS
  21 : C       ITRNOE : ELEMENTS INCIDENT AU NOEUDS
  22 : C       NBNMAX : NOMBRE DE NOEUDS D'UN ELEMENT
  23 : C       NBE    : NOMBRE D'ELEMENTS = NBE2
  24 : C       ----------TABLEAU DE TRAVAIL ---------------------------
  25 : C       ITVL   : TABLEAU D'ENTIERS
  26 : C       NITMAX : TAILLE DE ITVL
  27 : C       ---------- LE MAILLAGE AVEC NOEUDS QUI RECOIT ----------
  28 : C       ICODE2 : CODE DES ELEMENTS DE ITRNO2
  29 : C       IFSNAR : FONCTION QUI RENVOI LES NOEUDS ENTRE 2 SOMMETS (ELSNAR)
  30 : C       IDE2   : DIMENSION DES ELEMENTS
  31 : C       ITRNO2 : NOEUDS DES ELEMENTS (AVEC NOEUDS MILIEU A REMPLIR)
  32 : C       NBNMX2 : NOMBRE DE NOEUDS D'UN ELEMENT
  33 : C       NBE2   : NOMBRE D'ELEMENTS
  34 : C
  35 : C     EN SORTIE    :
  36 : C       ITRNO2 : NOEUDS DES ELEMENTS AVEC NOEUDS MILIEU DE ITRNO1
  37 : C       iarr   : CODE D'ERREUR
  38 : C     *****************************************************************
  39 :       IMPLICIT INTEGER(I-N)
  40 :       INTEGER ICODE1,IDE1,ITRNO1(*),NBNMX1,NBE1
  41 :       INTEGER ITRNOE(*),NBNMAX,ITRTRI(*),NBCMAX,NOETRI(*),NOEMAX
  42 :       INTEGER ITVL(*),NITMAX
  43 :       INTEGER ICODE2,IDE2,ITRNO2(*),NBNMX2,NBE2,iarr
  44 : C
  45 :       INTEGER IEL1
  46 :       INTEGER NBAR,INDAR,INDSO(2),INDNO(2),NBNO1,NUMSO(2),NUMNO(1),INO
  47 :       INTEGER IEL2,NBS,I,J
  48 :       INTEGER INTSO(24),INTNO(100)
  49 :       INTEGER NBNE1,NBCE1,ITYPE1,IORDR1
  50 : C
  51 : C      WRITE(6,*) 'ICODE = ',ICODE1
  51 :       CALL ELARSN(ICODE1,INTSO,INTNO,NBNO1,iarr)
  52 :       IF( iarr.NE.0 )THEN
  52 :         CALL DSERRE(1,iarr,'ELTRNO ',' APPEL ELARSN')
  53 :         GOTO 9999
  54 : C      ELSE
  55 : C        WRITE(6,*) 'NBNO1 = ',NBNO1
  56 : C        WRITE(6,*) 'INTNO = ',INTNO
  57 : C        WRITE(6,*) 'NBNMX1 = ',NBNMX1
  58 :       ENDIF
  59 : C     ---- IL FAUT TROUVER LE NOMBRE 
  60 : C          D'ARETES DE L'ELEMENT LINEAIRE
  60 :       CALL ELTYPE(ITYPE1,IORDR1,IDE1,NBNO1,-1,ICODE1)
  60 :       CALL STTYPE(IDE1,NBNE1,NBCE1,-1,ITYPE1,iarr)
  60 :       CALL STNBAR(IDE1,NBNE1,NBAR)
  61 : C      WRITE(6,*) 'NBAR,NBE1 = ',NBAR,NBE1
  62 : C
  63 :       DO 200 IEL1=1,NBE1
  64 :       DO 100 INDAR=1,NBAR
  65 : C
  66 : C         =================================
  67 : C     ---- EXTRACTION DES ARETES DE ITRNO1----
  68 : C         =================================
  69 : C
  70 : C       ---- INDICES RELATIFS ----
  71 : C
  72 :         INDSO(1) = INTSO((INDAR-1)*2+1)
  73 :         INDSO(2) = INTSO((INDAR-1)*2+2)
  74 :         NBNO1 = INTNO(INDAR+1)-INTNO(INDAR)
  75 : C        WRITE(6,*) 'NBNO1 = ',NBNO1
  76 :         DO 5 I=1,NBNO1
  77 :           INDNO(I) = INTNO(INTNO(INDAR-1+I))
  78 :     5   CONTINUE
  79 : C
  80 : C        WRITE(6,*) INDAR,' ARETE DE (S1,S2,N)',
  81 : C     >             INDSO(1),INDSO(2),INDNO(1)
  82 : C
  83 : C       ---- NUMERO ABSOLUS DANS ITRNO1 ------
  84 : C      WRITE(6,*) 'NBNMX1 = ',NBNMX1
  85 :         NUMSO(1) = ITRNO1((IEL1-1)*NBNMX1+INDSO(1))
  86 :         NUMSO(2) = ITRNO1((IEL1-1)*NBNMX1+INDSO(2))
  87 : C      WRITE(6,*) 'NUMSO = ',NUMSO
  88 :         DO 10 INO=1,NBNO1
  89 :           NUMNO(INO) = ITRNO1((IEL1-1)*NBNMX1+INDNO(INO))
  90 :    10   CONTINUE
  91 : C
  92 : C         ==================================
  93 : C     ---- AFFECTATION DES ARETES DANS ITRNOE ----
  94 : C         ==================================
  95 : 
  96 :       IEL2 = NOETRI(NUMSO(1))
  97 :       IF( IEL2.EQ. 0 )THEN
  98 : C       PRINT *,'ERREUR NOEUD ISOLE'
  99 :        iarr = -1
  99 :        CALL DSERRE(1,iarr,' ELTRNO',' NOEUD ISOLE')
 100 :        GOTO 9999
 101 :       ENDIF
 102 :       NBS = 1
 103 : C      WRITE(6,*) 'NBNMAX = ',NBNMAX
 104 :       DO 15 J=1,NBNMAX
 105 :           IF( ITRNOE((IEL2-1)*NBNMAX+J).EQ.NUMSO(2) )
 106 :      >    NBS = NBS+1
 107 :    15 CONTINUE 
 108 : C
 109 : C      WRITE(6,*) 'RECHERCHE ARETE ',NUMSO(1),NUMSO(2)
 110 : C      WRITE(6,*) 'ON PART DE IEL2, NBS =',IEL2,NBS
 110 :       CALL NOAJAR(NUMSO,IEL2,NBS,NUMNO,NBNO1,
 111 :      >            ICODE2,IDE2,ITRNO2,NBNMX2,NBE2,
 112 :      >            ITRNOE,NBNMAX,ITRTRI,NBCMAX,
 113 :      >            ITVL,NITMAX,iarr)
 114 :   100 CONTINUE
 115 :   200 CONTINUE
 116 : C
 117 :  9999 END
 118 :  
 119 :  
 120 :  

© Cast3M 2003 - All rights reserved.
Disclaimer