poinbl
C POINBL SOURCE CHAT 05/01/13 02:16:47 5004 $ PONBEL,IMPR,IRET) IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) C*********************************************************************** C NOM : POINBL C DESCRIPTION : Construit une liste d'entiers : PONBEL (type MLENTI) C PONBEL(i) est le nombre d'éléments de MCLAS C contenant le ieme point du maillage MCLPO1. C MCLPO1 est un maillage de POI1. C C LANGAGE : ESOPE C AUTEUR : Stéphane GOUNAND (CEA/DRN/DMT/SEMT/TTMF) C mél : gounand@semt2.smts.cea.fr C*********************************************************************** C APPELES : KRIPAD : MELEME -> (num. globale->locale) C APPELES (E/S) : - C APPELES (BLAS) : - C APPELES (CALCUL) : - C APPELE PAR : POIELE, ELPOEL C*********************************************************************** C SYNTAXE GIBIANE : - C ENTREES : MCLAS (type MELEME) : maillage de classe de C points (sommet, face) par C élément (MMAIL,ELTFA) C MCLPO1 (type MELEME) : maillage de points C correspondant à MCLAS C ENTREES/SORTIES : - C SORTIES : PONBEL (type MLENTI) C CODE RETOUR (IRET) : = 0 si tout s'est bien passé C*********************************************************************** C VERSION : v1, 29/10/98, version initiale C HISTORIQUE : v1, 29/10/98, création C HISTORIQUE : C HISTORIQUE : C*********************************************************************** C Prière de PRENDRE LE TEMPS de compléter les commentaires C en cas de modification de ce sous-programme afin de faciliter C la maintenance ! C*********************************************************************** -INC PPARAM -INC CCOPTIO -INC SMELEME POINTEUR MCLAS.MELEME POINTEUR MCLPO1.MELEME -INC SMLENTI POINTEUR PONBEL.MLENTI POINTEUR KRIPO1.MLENTI * * Executable statements * IF (IMPR.GT.1) WRITE(IOIMP,*) 'Entrée dans poinbl.eso' SEGACT MCLPO1 NBSOUS=MCLPO1.LISOUS(/1) NOTYP =MCLPO1.ITYPEL IF (NBSOUS.NE.0.OR.(NBSOUS.EQ.0.AND.NOTYP.NE.1)) THEN WRITE(IOIMP,*) 'MCLPO1 must contain only POI1 elements' GOTO 9999 ENDIF C In KRIPAD : SEGINI KRIPO1 NBPOI1=MCLPO1.NUM(/2) SEGDES MCLPO1 JG=NBPOI1 SEGINI PONBEL * * Parcourons le maillage géométrique des classes de points * SEGACT MCLAS NBSOUS=MCLAS.LISOUS(/1) IF (NBSOUS.EQ.0) NBSOUS=1 DO 1 INBSOU=1,NBSOUS IF (NBSOUS.GT.1) THEN IPT1=MCLAS.LISOUS(INBSOU) SEGACT IPT1 ELSE IPT1=MCLAS ENDIF NBPOEL=IPT1.NUM(/1) NBELEM=IPT1.NUM(/2) DO 12 INBEL=1,NBELEM DO 122 INBPO=1,NBPOEL NOPOI1=KRIPO1.LECT(IPT1.NUM(INBPO,INBEL)) IF (NOPOI1.NE.0) THEN PONBEL.LECT(NOPOI1)=PONBEL.LECT(NOPOI1)+1 ELSE WRITE(IOIMP,*) 'Erreur grave MCLPO1 n''est pas' WRITE(IOIMP,*) 'le maillage de points correspondant' WRITE(IOIMP,*) 'à MCLAS.' GOTO 9999 ENDIF 122 CONTINUE 12 CONTINUE IF (NBSOUS.GT.1) SEGDES IPT1 1 CONTINUE SEGDES MCLAS SEGSUP KRIPO1 IF (IMPR.GT.2) THEN WRITE(IOIMP,*) 'On a créé PONBEL=',PONBEL IF (IMPR.GT.3) THEN WRITE(IOIMP,4000) 'PONBEL',NBPOI1 WRITE(IOIMP,5000) (PONBEL.LECT(I),I=1,NBPOI1) ENDIF ENDIF SEGDES PONBEL * * Normal termination * IRET=0 RETURN * * Format handling * 4000 FORMAT (A,'(1..',I8,')') 5000 FORMAT (8(1X,I8)) * * Error handling * 9999 CONTINUE IRET=1 WRITE(IOIMP,*) 'An error was detected in subroutine poinbl' RETURN * * End of subroutine POINBL * END
© Cast3M 2003 - Tous droits réservés.
Mentions légales