Download poinbl.eso

Back to the list

   1 : C POINBL    SOURCE    CHAT      05/01/13    02:16:47     5004           
   2 :       SUBROUTINE POINBL(MCLAS,MCLPO1,
   3 :      $     PONBEL,IMPR,IRET)
   4 :       IMPLICIT INTEGER(I-N)
   5 :       IMPLICIT REAL*8 (A-H,O-Z)
   6 : C***********************************************************************
   7 : C NOM         : POINBL
   8 : C DESCRIPTION : Construit une liste d'entiers : PONBEL (type MLENTI)
   9 : C               PONBEL(i) est le nombre d'éléments de MCLAS
  10 : C               contenant le ieme point du maillage MCLPO1.
  11 : C               MCLPO1 est un maillage de POI1.
  12 : C
  13 : C LANGAGE     : ESOPE
  14 : C AUTEUR      : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF)
  15 : C               mél : gounand@semt2.smts.cea.fr
  16 : C***********************************************************************
  17 : C APPELES          : KRIPAD : MELEME -> (num. globale->locale)
  18 : C APPELES (E/S)    : -
  19 : C APPELES (BLAS)   : -
  20 : C APPELES (CALCUL) : -
  21 : C APPELE PAR       : POIELE, ELPOEL
  22 : C***********************************************************************
  23 : C SYNTAXE GIBIANE    : -
  24 : C ENTREES            : MCLAS (type MELEME)  : maillage de classe de 
  25 : C                                             points (sommet, face) par
  26 : C                                             élément (MMAIL,ELTFA)
  27 : C                      MCLPO1 (type MELEME) : maillage de points
  28 : C                                             correspondant à MCLAS
  29 : C ENTREES/SORTIES    : -
  30 : C SORTIES            : PONBEL (type MLENTI)
  31 : C CODE RETOUR (IRET) : = 0 si tout s'est bien passé
  32 : C***********************************************************************
  33 : C VERSION    : v1, 29/10/98, version initiale
  34 : C HISTORIQUE : v1, 29/10/98, création
  35 : C HISTORIQUE :
  36 : C HISTORIQUE :
  37 : C***********************************************************************
  38 : C Prière de PRENDRE LE TEMPS de compléter les commentaires
  39 : C en cas de modification de ce sous-programme afin de faciliter
  40 : C la maintenance !
  41 : C***********************************************************************
  42 : -INC CCOPTIO
  43 : -INC SMELEME
  44 :       POINTEUR MCLAS.MELEME
  45 :       POINTEUR MCLPO1.MELEME
  46 : -INC SMLENTI
  47 :       POINTEUR PONBEL.MLENTI
  48 :       POINTEUR KRIPO1.MLENTI
  49 : *
  50 : * Executable statements
  51 : *
  52 :       IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans poinbl.eso' 
  53 :       SEGACT MCLPO1
  54 :       NBSOUS=MCLPO1.LISOUS(/1)
  55 :       NOTYP =MCLPO1.ITYPEL
  56 :       IF (NBSOUS.NE.0.OR.(NBSOUS.EQ.0.AND.NOTYP.NE.1)) THEN
  57 :          WRITE(IOIMP,*) 'MCLPO1 must contain only POI1 elements'
  58 :          GOTO 9999
  59 :       ENDIF
  60 : C     In KRIPAD : SEGINI KRIPO1
  60 :       CALL KRIPAD(MCLPO1,KRIPO1)
  61 :       NBPOI1=MCLPO1.NUM(/2)
  62 :       SEGDES MCLPO1
  63 :       JG=NBPOI1
  64 :       SEGINI PONBEL
  65 : *
  66 : *   Parcourons le maillage géométrique des classes de points
  67 : *
  68 :       SEGACT MCLAS
  69 :       NBSOUS=MCLAS.LISOUS(/1)
  70 :       IF (NBSOUS.EQ.0) NBSOUS=1
  71 :       DO 1 INBSOU=1,NBSOUS
  72 :          IF (NBSOUS.GT.1) THEN
  73 :             IPT1=MCLAS.LISOUS(INBSOU)
  74 :             SEGACT IPT1
  75 :          ELSE
  76 :             IPT1=MCLAS
  77 :          ENDIF
  78 :          NBPOEL=IPT1.NUM(/1)
  79 :          NBELEM=IPT1.NUM(/2)
  80 :          DO 12 INBEL=1,NBELEM
  81 :             DO 122 INBPO=1,NBPOEL
  82 :                NOPOI1=KRIPO1.LECT(IPT1.NUM(INBPO,INBEL))
  83 :                IF (NOPOI1.NE.0) THEN
  84 :                   PONBEL.LECT(NOPOI1)=PONBEL.LECT(NOPOI1)+1
  85 :                ELSE
  86 :                   WRITE(IOIMP,*) 'Erreur grave MCLPO1 n''est pas'
  87 :                   WRITE(IOIMP,*) 'le maillage de points correspondant'
  88 :                   WRITE(IOIMP,*) 'à MCLAS.'
  89 :                   GOTO 9999
  90 :                ENDIF
  91 :  122        CONTINUE
  92 :  12      CONTINUE
  93 :          IF (NBSOUS.GT.1) SEGDES IPT1
  94 :  1    CONTINUE
  95 :       SEGDES MCLAS
  96 :       SEGSUP KRIPO1
  97 :       IF (IMPR.GT.2) THEN
  98 :          WRITE(IOIMP,*) 'On a créé PONBEL=',PONBEL
  99 :          IF (IMPR.GT.3) THEN
 100 :             WRITE(IOIMP,4000) 'PONBEL',NBPOI1
 101 :             WRITE(IOIMP,5000) (PONBEL.LECT(I),I=1,NBPOI1)
 102 :          ENDIF
 103 :       ENDIF
 104 :       SEGDES PONBEL
 105 : *
 106 : * Normal termination
 107 : *
 108 :       IRET=0
 109 :       RETURN
 110 : *
 111 : * Format handling
 112 : *
 113 :  4000  FORMAT (A,'(1..',I8,')')
 114 :  5000  FORMAT (8(1X,I8))
 115 : *
 116 : * Error handling
 117 : *
 118 :  9999 CONTINUE
 119 :       IRET=1
 120 :       WRITE(IOIMP,*) 'An error was detected in subroutine poinbl'
 121 :       RETURN
 122 : *
 123 : * End of subroutine POINBL
 124 : *
 125 :       END
 126 : 
 127 :  
 128 :  

© Cast3M 2003 - All rights reserved.
Disclaimer