Download smaocr.eso

Back to the list

   1 : C SMAOCR    SOURCE    CHAT      06/03/29    21:34:21     5360           
   2 : C      
   3 :       
   4 :       
   5 : C     *****************************************************************
   6 : C     MODULE  : ST (STRUCTURE DES DONNEES)
   7 : C     FICHIER : ST_1STRUCT.F
   8 : C     OBJET   : FONCTIONS PRATIQUES POUR LA CREATION DE MAILLAGES 
   9 : C
  10 : C     FONCT.  : 
  11 : C       SMAOCR  : CREER LA STRUCTURE DE DONNEE MAILLAGE ORIENTEE
  12 : C                   (CAS DE PLUSIEURS COMPOSANTES CONNEXES)
  13 : C       SFRCRE : CREER LE MAILLAGE FRONTIERE D'UN ENSEMBLE DE 
  14 : C                   MAILLES
  15 : C
  16 : C     AUTEUR  : O. STAB
  17 : C     DATE    : 03.95
  18 : C     MODIFICATIONS :
  19 : C      AUTEUR, DATE, OBJET :
  20 : C
  21 : C
  22 : C     *****************************************************************
  23 : C
  24 : C
  25 :       SUBROUTINE SMAOCR(IDE,ITRI,NBE,COORD,NCOORD,IDIMC,
  26 :      >                   ITRNOE,NBNMAX,ITRTRI,NBCMAX,NOETRI,NOEMAX,
  27 :      >                   ITVL,NBTRAV,NCC,iarr)
  28 : C     *****************************************************************
  29 : C     OBJET : CREER LA STRUCTURE DE DONNEE MAILLAGE ORIENTEE
  30 : C                   (CAS DE PLUSIEURS COMPOSANTES CONNEXES)
  31 : C             ITRI -> ITRNOE, ITRTRI, NOETRI
  32 : C     EN ENTREE:
  33 : C      IDE    :  (1..3) DIMENSION DES ELEMENTS 
  34 : C      NBE    :  NOMBRE D'ELEMENTS DU MAILLAGE
  35 : C      ITRI   :  ITRI(I,J) EST LE NOEUD J DE L'ELEMENT I
  36 : C      NBNMAX :  (2..8) NOMBRE DE NOEUDS MAXIMUM DES ELEMENTS 
  37 : C      NBCMAX :  (2..6) NOMBRE DE COTES MAXIMUM DES ELEMENTS 
  38 : C      NOEMAX:   TAILLE DU TABLEAU NOETRI
  39 : C     EN SORTIE:
  40 : C       ITRNOE: ITRNOE(I,J) EST LE NOEUD J DU TRIANGLE I
  41 : C                PEUT ETRE LE MEME TABLEAU QUE ITRI
  42 : C       ITRTRI: ITRTRI(I,J) EST L'ELEMENT INCIDENT A L'ELEMENT I SUR 
  43 : C                LE COTE J
  44 : C       NOETRI : NOETRI(I) EST UN DES ELEMENTS CONTENANT LE NOEUD I
  45 : C                AU MIN = (NBCMAX+1)*NBE 
  46 : C                AU MAX = MAX((NBCMAX+1)*NBE ,
  47 : C                             (NBR MAX D'ELEMENTS EN 1 NOEUD + 1) *
  48 : C                             (NUMERO MAXI DU NOEUD DANS ITRI))
  49 : C                         => O(N)
  50 : C       iarr   : CODE D'ERREUR 0 => OK
  51 : C                -2 => LE TABLEAU ITVL EST TROP PETIT 
  52 : C                -NB => TABLEAU NOETRI TROP PETIT TAILLE SOUHAITE = NB
  53 : C     CONDITION D'APPLICATION : ARETE, TRIANGLE, QUADRANGLE, TETRA      
  54 : C     *****************************************************************
  55 :       IMPLICIT INTEGER(I-N)
  56 :       INTEGER   IDE,ITRI(*),NBE
  57 :       REAL*8      COORD(*)
  58 :       INTEGER   NCOORD,IDIMC,ITRNOE(*),NBNMAX,ITRTRI(*),NBCMAX
  59 :       INTEGER   NOETRI(*), NOEMAX, ITVL(*), NBTRAV
  60 :       INTEGER   NCC,iarr
  61 : C
  62 :       INTEGER  STRNBN, GORIEN
  63 :       EXTERNAL STRNBN, GORIEN
  64 :       INTEGER  ITRAM,ITRAP,N,INDC,I,K,NBTRIP(100),IND,IEC
  65 :       REAL*8     ZERO
  66 : C
  67 :       ZERO = 0.0
  67 :       CALL SMACRE(IDE,ITRI,NBE,NCOORD,ITRNOE,NBNMAX,ITRTRI,NBCMAX,
  68 :      >                   NOETRI,NOEMAX,ITVL,NBTRAV,iarr)
  69 : C
  70 :       IF( iarr.LT.0 )GO TO 999
  71 :       ITRAM = NBTRAV - NBE
  71 :       CALL SORIEN(IDE,ITRNOE,NBNMAX,ITRTRI,NBCMAX,NBE,
  72 :      >                  ITVL,ITRAM,ITVL(ITRAM),NCC,iarr)
  73 :       IF( iarr.LT.0 )GO TO 999
  74 :       IF( IDE.LT.IDIMC )GO TO 999
  75 : C
  76 : C    --- ORIENTATION GEOMETRIQUE IDENTIQUE POUR CHAQUE CC
  77 : C        N'A DE SENS QUE SI LA DIMENSION DES ELEMENTS EST
  78 : C        IDENTIQUE A LA DIMENSION DE L'ESPACE
  79 : C
  80 :       IF( NCC.EQ.1 )THEN
  81 : C
  82 : C     --- UNE SEULE COMPOSANTE CONNEXE -----------------
  83 : C
  84 :         N = STRNBN(1,ITRNOE,NBNMAX)
  85 :         IF( GORIEN(ITRNOE(1),N,COORD,IDIMC,ZERO).EQ.-1)THEN
  86 :           DO 30 I=1,NBE
  87 :             N = STRNBN(I,ITRNOE,NBNMAX)
  87 :             CALL SINVOR(1,N,IDE,ITRNOE((I-1)*NBNMAX+1),
  88 :      >                            ITRTRI((I-1)*NBCMAX+1))
  89 :    30     CONTINUE
  90 :         ENDIF
  91 :       ELSE
  92 : C
  93 : C     --- PLUSIEURS COMPOSANTES CONNEXES ---------------
  94 : C
  95 :         ITRAP = NBTRAV - NBE
  96 :         ITRAM = ITRAP - NBE
  97 :         IND = 1
  98 : C
  99 : C       BUG3 O.STAB 03.08.95 NOMBRE DE PARAMETRES INCORRECT
 100 : C
 100 :         CALL TMAPAR(IDE,ITRTRI,NBCMAX,IND,NBE,
 101 :      >                ITVL,ITVL(ITRAM),ITRAM,
 102 :      >                ITVL(ITRAP),NBTRIP,NCC,100,iarr) 
 103 :         INDC = 1
 104 :         DO 50 I=1,NCC        
 105 :           N = STRNBN(ITVL(ITRAP+INDC),ITRNOE,NBNMAX)
 106 :           IF( GORIEN(ITRNOE(INDC),N,COORD,IDIMC,ZERO).EQ.-1)THEN
 107 :             DO 40 K=0,(NBTRIP(I)-1)
 108 :               IEC = ITVL(ITRAP+INDC+K)
 109 :               N = STRNBN(IEC,ITRNOE,NBNMAX)
 110 : C
 111 : C       BUG4 O.STAB 15.09.95 : NUMERO RELATIF DU COTE (SINVOR)
 112 : C
 112 : C              CALL SINVOR(ITVL(ITRAP+INDC+K),N,IDE,ITRNOE,
 113 : C     >             ITRTRI)
 114 : C     REMPLACER PAR :
 115 : C
 115 :               CALL SINVOR(1,N,IDE,ITRNOE((IEC-1)*NBNMAX+1),
 116 :      >             ITRTRI((IEC-1)*NBCMAX+1))
 117 :    40       CONTINUE
 118 :           ENDIF
 119 :    50   CONTINUE
 120 :       ENDIF
 121 :   999 END     
 122 :  
 123 :  
 124 :  

© Cast3M 2003 - All rights reserved.
Disclaimer