1 : C POIELE SOURCE CHAT 06/03/29 21:29:07 5360 2 : SUBROUTINE POIELE(MCLAS,MCLPO1,MCENT,MPOIEL) 3 : IMPLICIT INTEGER(I-N) 4 : IMPLICIT REAL*8 (A-H,O-Z) 5 : C*********************************************************************** 6 : C NOM : POIELE 7 : C DESCRIPTION : Construit le MELEME de correspondance Point-Elément. 8 : C Les éléments du MELEME sont de type POLY. Ils ont pour 9 : C premier point les points de MCLPO1. Les points suivants 10 : C sont les points centre des éléments auxquels appartient 11 : C le point de MCLPO1 considéré. 12 : C LANGAGE : ESOPE 13 : C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) 14 : C mél : gounand@semt2.smts.cea.fr 15 : C*********************************************************************** 16 : C APPELES : POINBL : maillage de points -> LISTENTI de 17 : C nb d'éléments auxquels ils appartiennent 18 : C POELEM : maillage de points -> MLELEM contenant les 19 : C points et les centres d'éléments auxquels 20 : C ils appartiennent. 21 : C LE2MEL : MLELEM (liste indexée d'éléments) 22 : C -> MELEME 23 : C APPELES (E/S) : - 24 : C APPELES (BLAS) : - 25 : C APPELES (CALCUL) : - 26 : C APPELE PAR : LEKTAB 27 : C*********************************************************************** 28 : C SYNTAXE GIBIANE : - 29 : C ENTREES : MCLAS (type MELEME) : maillage de classe de 30 : C points (sommet, face) par 31 : C élément (MMAIL,ELTFA) 32 : C MCLPO1 (type MELEME) : maillage de points 33 : C correspondant à MCLAS 34 : C MCENT (type MELEME) : maillage des points 35 : C centre 36 : C ENTREES/SORTIES : - 37 : C SORTIES : MPOIEL (type MELEME) : maillage de 38 : C connectivités 39 : C point-élément 40 : C CODE RETOUR (IRET) : - 41 : C*********************************************************************** 42 : C VERSION : v1, 06/10/98, version initiale 43 : C HISTORIQUE : v1, 06/10/98, création 44 : C HISTORIQUE : 45 : C HISTORIQUE : 46 : C*********************************************************************** 47 : C Prière de PRENDRE LE TEMPS de compléter les commentaires 48 : C en cas de modification de ce sous-programme afin de faciliter 49 : C la maintenance ! 50 : C*********************************************************************** 51 : -INC CCOPTIO 52 : -INC SMELEME 53 : POINTEUR MCLAS.MELEME 54 : POINTEUR MCLPO1.MELEME 55 : POINTEUR MCENT.MELEME 56 : POINTEUR MPOIEL.MELEME 57 : -INC SMLENTI 58 : POINTEUR PONBEL.MLENTI 59 : * 60 : * Segment MLELEM 61 : * 62 : SEGMENT MLELEM 63 : INTEGER INDEX(NBL+1) 64 : INTEGER LESPOI(NBTPOI) 65 : ENDSEGMENT 66 : * 67 : * LISTE SEQUENTIELLE INDEXEE D'ELEMENTS 68 : * 69 : * NBL : NOMBRE D'ELEMENTS 70 : * NBTPOI : NOMBRE TOTAL DE POINTS REFERENCEES 71 : * INDEX(I) : INDICE DU 1ER POINT DU IEME ELEMENT 72 : * DANS LE TABLEAU LESPOI 73 : * LESPOI(INDEX(I) -> INDEX(I+1)-1) : NUMERO DES NOEUDS 74 : * DU IEME ELEMENT 75 : * 76 : POINTEUR LEPOEL.MLELEM 77 : INTEGER IMPR,IRET 78 : * 79 : * Executable statements 80 : * 81 : IMPR=IIMPI 82 : IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans poiele.eso' 83 : * 84 : * Pour dimensionner le tableau LESPOI et remplir le tableau 85 : * INDEX du segment LEPOEL (type MLELEM), on construit d'abord : 86 : * PONBEL(NOPOI1) 87 : * NOPOI1 : indice du point considéré dans MCLPO1 88 : * PONBEL(NOPOI1) : nombre d'éléments contenant le point considéré 89 : * 90 : * In PONBEL : new temporary object PONBEL.MLENTI (SEGINI) 91 : * 91 : CALL POINBL(MCLAS,MCLPO1, 92 : $ PONBEL,IMPR,IRET) 93 : IF (IRET.NE.0) GOTO 9999 94 : * 95 : * On construit la liste séquentielle indexée d'éléments LEPOEL. 96 : * NOPOI1 : indice du point considéré dans MCLPO1 97 : * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)) : 98 : * contient le numéro du point considéré 99 : * LEPOEL.LESPOI(LEPOEL.INDEX(NOPOI1)+1 -> LEPOEL.INDEX(NOPOI1+1)-1) : 100 : * contient les numéro des points centre des éléments 101 : * contenant le point considéré (!) 102 : * 103 : * In POELEM : new temporary object LEPOEL.MLELEM (SEGINI) 104 : * 104 : CALL POELEM(MCLAS,MCLPO1,MCENT,PONBEL, 105 : $ LEPOEL,IMPR,IRET) 106 : IF (IRET.NE.0) GOTO 9999 107 : SEGSUP PONBEL 108 : * 109 : * A partir de LEPOEL, on peut construire la structure MELEME 110 : * correspondante : elle est constituée d'éléments de type POLY. 111 : * En gros, on regroupe les éléments qui ont le meme nombre de points. 112 : * 113 : * In LE2MEL : new object MPOIEL.MELEME (SEGINI-SEGDES) 114 : * 114 : CALL LE2MEL(LEPOEL, 115 : $ MPOIEL,IMPR,IRET) 116 : IF (IRET.NE.0) GOTO 9999 117 : * 118 : * Suppressions d'objets temporaires 119 : * 120 : SEGSUP LEPOEL 121 : * 122 : * Normal termination 123 : * 124 : RETURN 125 : * 126 : * Format handling 127 : * 128 : 4000 FORMAT (A,'(1..',I8,')') 129 : 5000 FORMAT (8(1X,I8)) 130 : * 131 : * Error handling 132 : * 133 : 9999 CONTINUE 134 : WRITE(IOIMP,*) 'An error was detected in subroutine poiele' 135 : MPOIEL=0 135 : call erreur(5) 136 : RETURN 137 : * 138 : * End of subroutine POIELE 139 : * 140 : END 141 : 142 : 143 : 144 :
© Cast3M 2003 - All rights reserved.
Disclaimer