Download prex1d.eso

Back to the list

   1 : C PREX1D    SOURCE    CHAT      07/10/29    21:25:56     5940           
   2 : 
   3 : C=======================================================================
   4 : C=                             P R E X 1 D                             =
   5 : C=                             -----------                             =
   6 : C=  Ce sousprogramme determine les "extremites" d'un maillage 1D.      =
   7 : C=  Il est l'image en 1D des sousprogrammes PRCONT (2D) et PRENVE (3D).=
   8 : C=  Il est appele par les operateurs FLUX et PRESSION.                 =
   9 : C=======================================================================
  10 : 
  11 :       SUBROUTINE PREX1D
  12 : 
  13 :       IMPLICIT INTEGER(I-N)
  14 :       IMPLICIT REAL*8 (A-H,O-Z)
  15 : 
  16 : -INC CCOPTIO
  17 : -INC CCGEOME
  18 : -INC SMELEME
  19 : -INC SMLENTI
  20 : 
  21 : C*    IF (IDIM.NE.1) THEN
  21 : C*      CALL ERREUR(xx)
  22 : C*      RETURN
  23 : C*    ENDIF
  24 : 
  25 : C= Travail sur un maillage avec des SEG2 et/ou des POI
  26 : C= C'est suffisant pour recuperer les points extremites
  26 :       CALL CHANLI
  27 :       IF (IERR.NE.0) RETURN
  27 :       CALL LIROBJ('MAILLAGE',ipmail,1,iOK)
  28 :       IF (IERR.NE.0) RETURN
  29 : 
  30 : C= On determine les composantes connexes du maillage
  31 : C= CCON cree un nouveau maillage, meme si ipmail est elementaire.
  32 : C= On peut donc detruire les maillages pointes dans ilect.
  32 :       CALL CCON1(ipmail,ilect)
  33 :       IF (IERR.NE.0) RETURN
  34 : 
  35 : C= On a alors au plus extremites = dimension de ilect * 2
  36 :       MLENT1=ilect
  37 :       SEGACT,MLENT1
  38 :       IG=MLENT1.LECT(/1)
  39 :       JG=2*IG
  40 :       SEGINI,MLENTI
  41 :       NBEXT=0
  42 : C= Recuperation des points extremites
  43 : C= On ordonne le maillage de SEG2.
  44 : C= Dans le cas ou la composante connexe retournee par CCON contient
  45 : C= plusieurs objets (normalement 2 de type POI1 et SEG2), les elements
  46 : C= POI1 sont en fait des noeuds inclus dans le maillage SEG2, qui ne
  47 : C= necessitent donc pas de traitement.
  48 :       DO i=1,IG
  49 :         IPT1=MLENT1.LECT(i)
  50 :         SEGACT,IPT1
  51 :         NSous=IPT1.LISOUS(/1)
  52 :         IF (NSous.NE.0) THEN
  53 : C*        MELEME=0
  54 :           DO j=1,NSous
  55 :             IPT2=IPT1.LISOUS(j)
  56 :             SEGACT,IPT2
  57 :             IF (IPT2.ITYPEL.EQ.2) MELEME=IPT2
  58 :             SEGDES,IPT2
  59 :           ENDDO
  60 : C*        IF (MELEME.EQ.0) --> ERREUR (a finir)
  61 :           SEGACT,MELEME
  62 :         ELSE
  63 :           MELEME=IPT1
  64 :         ENDIF
  65 :         IF (ITYPEL.EQ.1) THEN
  66 :           NBEXT=NBEXT+1
  67 :           LECT(NBEXT)=NUM(1,1)
  68 :         ELSE IF (ITYPEL.EQ.2) THEN
  68 :           CALL ORDON4(MELEME)
  69 :           SEGACT,MELEME
  70 :           NBEXT=NBEXT+1
  71 :           LECT(NBEXT)=NUM(1,1)
  72 :           NBEXT=NBEXT+1
  73 :           LECT(NBEXT)=NUM(2,NUM(/2))
  74 :         ENDIF
  75 :         SEGSUP,IPT1
  76 :       ENDDO
  77 : 
  78 : C= Initialisation du maillage de POI1 resultat
  79 :       NBNN=1
  80 :       NBELEM=NBEXT
  81 :       NBSOUS=0
  82 :       NBREF=0
  83 :       SEGINI,MELEME
  84 : C= Remplissage du maillage
  85 :       ITYPEL=1
  86 :       DO i=1,NBEXT
  87 :         NUM(1,i)=LECT(i)
  88 :         ICOLOR(i)=IDCOUL
  89 :       ENDDO
  90 :       SEGDES,MELEME
  91 : C= Ecriture du maillage resultat
  92 :       ipmail=MELEME
  92 :       CALL ECROBJ('MAILLAGE',ipmail)
  93 : 
  94 : C= Un peu de menage
  95 :       SEGSUP,MLENT1,MLENTI
  96 : 
  97 :       RETURN
  98 :       END
  99 : 
 100 :  
 101 :  
 102 :  
 103 :  

© Cast3M 2003 - All rights reserved.
Disclaimer