[updated 8.Sep.2008]
Librairie glonum > Fichier glnsaf.f |
SUBROUTINE GLNSAF (NBSOMX,LGSOEL,NBSOAX,NBAREX,LGAREL
& ,NBSOFX,NBFACX,LGFAEL,LGWOR4,NIVIMP,IMPFCH)
Auteur : D.Martin & O.deBayser (Decembre 1988)
Refonte complete : D.Martin (Octobre 1995)
Derniere modification : D.Martin (6 Septembre 2001)
Version 1.1.1
Tableau de numerotations globales des sommets, des aretes, des faces
des elements d'un maillage pour la construction de la numerotation
des noeuds du maillage pour toutes les interpolations.
-- Arguments d'entree --
NBSOMX nombre maximum des sommets des elements du maillage
LGSOEL longueur du tableau recepteur de la numerotation globale des sommets
du maillage (si le maillage n'est pas d'ordre 1)
NBSOAX nombre maximum de sommets des aretes des elements du maillage
NBAREX nombre maximum d'aretes des elements du maillage
LGAREL longueur du tableau recepteur de la numerotation globale des aretes
de tous les elements du maillage
NBSOFX nombre maximum de sommets des faces des elements du maillage
NBFACX nombre maximum de faces des elements du maillage
LGFAEL longueur du tableau recepteur de la numerotation globale des faces
de tous les elements du maillage
LGWOR4 longueur du tableau conenant des tableau de numerotations temporaires
NIVIMP niveau d'impression
IMPFCH unite d'impression
IMPLICIT NONE
INTEGER NBSOMX,LGSOEL,NBSOAX,NBAREX,LGAREL,NBSOFX,NBFACX
& ,LGFAEL,LGWOR4,NIVIMP,IMPFCH
INCLUDE 'ALLOC'
INCLUDE 'CONTEX'
INTEGER MCNENG,MCBLOK,MCSOEL,MCAREL,MCFAEL,MCWOR4
INTEGER ADPRBO,ADSOBO,ADNUSO,ADNUFA,ADDLFA,ADDUDL,ADRGDL,ADDLIN
CHARACTER ERCODE*120
COMMON/FORMAH/ERCODE
CALL PRFXMJ (1,'*GlNsaf*')
Calculs de adresses relatives des sous-tableaux temporaires
places dans '$WORK$':
NUPRBO,NUSOBO,NGNEBO,NUNEBO,NUDLBO,NEDUDL,IRGDLN,NDLINN
(cf. procedures GLNUSO & GLNUFA)
ADPRBO = 0
ADSOBO = ADPRBO+NBTPTG
ADNUSO = ADSOBO+MAX (LGSOEL,NBSOAX*LGAREL,NBSOFX*LGFAEL)
ADNUFA = ADNUSO+NBSOMX
ADDLFA = ADNUFA+NBPTFX
ADDUDL = ADDLFA+NBPTFX
ADRGDL = ADDUDL+NBPTFX
ADDLIN = ADRGDL+NBPTFX
LGWOR4 = ADDLIN+NBPTFX
Tableau de numerotation globale des sommets (NUGSOL)
IF (LGSOEL.GT.0) CALL TBCREE ('#GNEEL',1,1,LGSOEL,'c')
Tableau de numerotation globale des aretes (NUGARL)
IF (LGAREL.GT.0) CALL TBCREE ('#GAREL',1,1,LGAREL,'c')
Tableau de numerotation globale des faces (NUGFAL)
IF (LGFAEL.GT.0) CALL TBCREE ('#GFAEL',1,1,LGFAEL,'c')
Tableau de travail
CALL TBCREE ('$WORK$',4,1,LGWOR4,'c')
Tableau de numerotation globale du maillage
CALL TBRR1 (ERCODE,'#GNEEL',NIVENG,MCNENG)
Tableau #LOKEL de description des elements du maillage
IF (NBBBLK.GT.1) CALL TBAR1 (ERCODE,'#LOKEL',1,MCBLOK)
CALL TBAR2 (ERCODE,'#GNEEL',NIVENG,MCNENG,'$WORK$',4,MCWOR4)
Numerotation des sommets
IF (LGSOEL.GT.0) THEN
Mise a zero du tableau du tableau NUPRBO contenant
le numero du premier noeud porte par un point donne
et du tableau NUBOSO chainant les aretes
CALL TBAR1 (ERCODE,'#GNEEL',1,MCSOEL)
CALL TAZERO (NBTPTG+LGSOEL,'E',MCWOR4,AST,IST,RST,CST) !utilite
NBTSOG=0
CALL GLNUSO (NBPTEX,IST(MCNENG),NBTEL,NBBBLK,NU1BLK,IST(MCBLOK)
& ,NBTSOG,NBSOMX,IST(MCSOEL),IST(MCWOR4+ADPRBO)
& ,IST(MCWOR4+ADDUDL)
& ,IST(MCWOR4+ADRGDL),IST(MCWOR4+ADDLIN)) !glonum
ELSE
LGSOEL=NBSOMX*NBTEL
ENDIF
Numerotation des aretes (2D ou 3D)
IF (LGAREL.GT.0) THEN
Mise a zero du tableau du tableau NUPRBO contenant
le numero de la premiere arete contenant un point donne
et du tableau NUBOSO chainant les aretes
CALL TBAR1 (ERCODE,'#GAREL',1,MCAREL)
CALL TAZERO (NBTPTG+NBSOAX*LGAREL,'E',MCWOR4,AST,IST,RST,CST) !utilite
NBTARG=0
CALL GLNUFA (1,NBPTEX,IST(MCNENG),NBTEL,NBBBLK,NU1BLK
& ,IST(MCBLOK),NBTARG,NBAREX,IST(MCAREL)
& ,IST(MCWOR4+ADPRBO)
& ,NBSOAX,IST(MCWOR4+ADSOBO),IST(MCWOR4+ADNUSO)
& ,IST(MCWOR4+ADNUFA),IST(MCWOR4+ADDLFA)
& ,IST(MCWOR4+ADDUDL),IST(MCWOR4+ADRGDL)
& ,IST(MCWOR4+ADDLIN),NIVIMP,IMPFCH) !glonum
ENDIF
Numerotation des faces (en 3D)
IF (LGFAEL.GT.0) THEN
Mise a zero du tableau du tableau NUPRBO contenant
le numero de la premiere face contenant un point donne
et du tableau NUBOSO chainant les faces
CALL TBAR1 (ERCODE,'#GFAEL',1,MCFAEL)
CALL TAZERO (NBTPTG+NBSOFX*LGFAEL,'E',MCWOR4,AST,IST,RST,CST) !utilite
NBTFAG=0
CALL GLNUFA (2,NBPTEX,IST(MCNENG),NBTEL,NBBBLK,NU1BLK
& ,IST(MCBLOK),NBTFAG,NBFACX,IST(MCFAEL)
& ,IST(MCWOR4+ADPRBO)
& ,NBSOFX,IST(MCWOR4+ADSOBO),IST(MCWOR4+ADNUSO)
& ,IST(MCWOR4+ADNUFA),IST(MCWOR4+ADDLFA)
& ,IST(MCWOR4+ADDUDL),IST(MCWOR4+ADRGDL)
& ,IST(MCWOR4+ADDLIN),NIVIMP,IMPFCH) !glonum
ENDIF
CALL PRFXMJ (-1,'*GlNsaf*')
END !GlNsaf
glnsaf est appelé dans