c@a
c@versb
C-----------------------------------------------------------------------
C
CVERS                  Code_Saturne version 1.3
C                      ------------------------
C
C     This file is part of the Code_Saturne Kernel, element of the
C     Code_Saturne CFD tool.
C
C     Copyright (C) 1998-2008 EDF S.A., France
C
C     contact: saturne-support@edf.fr
C
C     The Code_Saturne Kernel is free software; you can redistribute it
C     and/or modify it under the terms of the GNU General Public License
C     as published by the Free Software Foundation; either version 2 of
C     the License, or (at your option) any later version.
C
C     The Code_Saturne Kernel is distributed in the hope that it will be
C     useful, but WITHOUT ANY WARRANTY; without even the implied warranty
C     of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
C     GNU General Public License for more details.
C
C     You should have received a copy of the GNU General Public License
C     along with the Code_Saturne Kernel; if not, write to the
C     Free Software Foundation, Inc.,
C     51 Franklin St, Fifth Floor,
C     Boston, MA  02110-1301  USA
C
C-----------------------------------------------------------------------
c@verse
                        SUBROUTINE LEDGEO
C                       *****************
C     -------------------------------------------------------------
     &     ( NDIM   , NCELET , NCEL   , NFAC   , NFABOR ,
     &       NPRFML , NFML   , NSOM   , LNDFAC , LNDFBR )
C     -------------------------------------------------------------
C***********************************************************************
C FONCTION :
C ---------
c@foncb
CFONC
CFONC LECTURE DES DIMENSIONS DES TABLEAUX ENTITES GEOMETRIQUES
CFONC
c@fonce
C-----------------------------------------------------------------------
c@argub
CARGU                             ARGUMENTS
CARGU .______________.____._____.______________________________________.
CARGU !    NOM       !TYPE!MODE !                   ROLE               !
CARGU !______________!____!_____!______________________________________!
CARGU ! NDIM         ! E  ! <-  ! DIMENSION DE L'ESPACE (=3)           !
CARGU ! NCELET       ! E  ! <-  ! NOMBRE D'ELEMENTS HALO COMPRIS       !
CARGU ! NCEL         ! E  ! <-  ! NOMBRE D'ELEMENTS ACTIFS             !
CARGU ! NFAC         ! E  ! <-  ! NOMBRE DE FACES INTERNES             !
CARGU ! NFABOR       ! E  ! <-  ! NOMBRE DE FACES DE BORD              !
CARGU ! NPRFML       ! E  ! <-  ! NOMBRE DE PROPIETES DES FAMILLES     !
CARGU !              !    !     ! DE FACES DE BORD                     !
CARGU ! NFML         ! E  ! <-  ! NOMBRE DE FAMILLES DE FACES DE BORD  !
CARGU ! NSOM         ! E  ! <-  ! NOMBRE DE SOMMETS DU MAILLAGE        !
CARGU ! LNDFAC       ! E  ! <-  ! LONGUEUR DU TABLEAU NODFAC (OPTIONNEL!
CARGU ! LNDFBR       ! E  ! <-  ! LONGUEUR DU TABLEAU NODFBR (OPTIONNEL!
CARGU !______________!____!_____!______________________________________!
c@argue
C
c@commb
CCOMM                             COMMONS
CCOMM .______________.____._____.______________________________________.
CCOMM !    NOM       !TYPE!MODE !                   ROLE               !
CCOMM !______________!____!_____!______________________________________!
CCOMM !______________!____!_____!______________________________________!
c@comme
C
C     TYPE : E (ENTIER), R (REEL), A (ALPHANUMERIQUE), T (TABLEAU)
C            L (LOGIQUE)   .. ET TYPES COMPOSES (EX : TR TABLEAU REEL)
C     MODE : -> DONNEE, <- RESULTAT, <-> DONNEE MODIFIEE,
C            - TABLEAU DE TRAVAIL
C***********************************************************************
C
      IMPLICIT NONE
C
C***********************************************************************
C     DONNEES EN COMMON
C***********************************************************************
C
      INCLUDE "paramx.h"
      INCLUDE "entsor.h"
C
C***********************************************************************
C
C ARGUMENTS
C
      INTEGER          NDIM   , NCELET , NCEL   , NFAC   , NFABOR
      INTEGER          NPRFML , NFML   , NSOM   , LNDFAC , LNDFBR
C
C VARIABLES LOCALES
C
      INTEGER          IEL , IFAC , IFML , NN , N1 , IP
      INTEGER          NTETRA , NPYRAM , NPRISM , NHEXAE
C
C***********************************************************************
C
      NDIM = 0
      NCEL = 0
      NFAC = 0
      NFABOR = 0
      NPRFML = 0
      NFML   = 0
      NSOM   = 0
C
      LNDFAC = 0
      LNDFBR = 0
C
C=======================================================================
C 1.  Ouverture de FICGEO et lecture des entetes principales
C=======================================================================
C
C---> Ouverture
C
      OPEN (FILE=FICGEO,UNIT=IMPGEO,FORM='formatted',ERR=9000)
C
C---> Ecriture avec rubrique ... avant
C
      NDIM = 3
C
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,1100,ERR=9002,END=9003) NCEL, NFAC, NFABOR, NSOM
C
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,1100,ERR=9002,END=9003) NTETRA,NPYRAM,NPRISM,NHEXAE
C
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,   *,ERR=9002,END=9003)
      READ (IMPGEO,1100,ERR=9002,END=9003) NPRFML, NFML
C
C=======================================================================
C 2.  Positionnement dans FICGEO pour la lecture des tableaux optionnels
C     de connectivites faces sommets (IPNFAC, IPNFBR, NODFAC, NODFBR)
C=======================================================================
C
C-->  Positionnement dans le fichier avant lecture
C
C     Connectivite faces internes - cellules
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFAC
        READ(IMPGEO,*)
      ENDDO
C
C     Connectivite faces de bord - cellule
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1, NFABOR
        READ(IMPGEO,*)
      ENDDO
C
C     Coordonnees du centre des cellules
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IEL = 1,NCEL
        READ(IMPGEO,*)
      ENDDO
C
C     Surfaces des faces internes
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFAC
        READ(IMPGEO,*)
      ENDDO
C
C     Surfaces des faces de bord
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFABOR
        READ(IMPGEO,*)
      ENDDO
C
C     Coordonnees du centre des faces
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFAC
        READ(IMPGEO,*)
      ENDDO
C
C     Coordonnees du centre des faces de bord
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFABOR
        READ(IMPGEO,*)
      ENDDO
C
C     Familles des faces de bord
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFAC = 1,NFABOR
        READ(IMPGEO,*)
      ENDDO
C
C     Proprietes des familles
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO IFML = 1,NFML
        READ(IMPGEO,*)
      ENDDO
C
C     Coordonnees des noeuds
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO N1 = 1,NSOM
        READ(IMPGEO,*)
      ENDDO
C
C     Connectivite cellules points
      READ(IMPGEO,*)
      READ(IMPGEO,*)
      DO N1 = 1,NCEL
        READ(IMPGEO,*)
      ENDDO
C
C=======================================================================
C 3.  Calcul des dimensions LNDFAC et LNDFBR si possible
C=======================================================================
C
C     Remarque : si les tableaux ne sont pas disponibles,
C                on aura une erreur de fin de fichier.
C                Dans ce cas, on sort en fermant normalement
C                le fichier, en mettant LNDFAC et LNDFBR à 0.
C
C-->  Dimension du tableau de connectivite faces de bord -> points
C
      READ(IMPGEO,*,ERR=9000,END=100)
      READ(IMPGEO,*,ERR=9000,END=100)
      LNDFBR = 0
      DO N1 = 1,NFABOR
        READ(IMPGEO,1200,ERR=9000,END=100) NN , IP
        LNDFBR = LNDFBR + IP
      ENDDO
C
C-->  Dimension du tableau de connectivite faces internes -> points
C
      READ(IMPGEO,*,ERR=9000,END=100)
      READ(IMPGEO,*,ERR=9000,END=100)
      LNDFAC = 0
      DO N1 = 1,NFAC
        READ(IMPGEO,1200,ERR=9000,END=100) NN , IP
        LNDFAC = LNDFAC + IP
      ENDDO
C
C-->  Si l'on a pu lire les tableaux de connectivite faces -> points,
C     on conserve les dimensions LNDFBR et LNDFAC calculees ;
C     sinon, on les remet a zero
C
      GOTO 200
C
 100  LNDFBR = 0
      LNDFAC = 0
C
 200  CONTINUE
C
C=======================================================================
C 3.  Fermeture du fichier et mise a jour des structures C
C=======================================================================
C
      CLOSE(IMPGEO)
C
C---> MISE A JOUR STRUCTURES C
C
      NCELET = NCEL
C
      CALL DIMGEO
C     ===========
     &     (NDIM  , NCELET, NCEL  , NFAC  , NFABOR , NSOM  ,
     &      LNDFAC, LNDFBR, NFML  , NPRFML,
     &      NTETRA, NPYRAM, NPRISM, NHEXAE)
C
C---> FORMATS
C
 1100 FORMAT(20I10)
 1200 FORMAT(I10,I10)
C
      RETURN
C
C ERREURS
C
 9000 CONTINUE
      WRITE(NFECRA,8000)FICGEO
      CALL CSEXIT (1)
 9002 CONTINUE
      WRITE(NFECRA,8002)
     &            FICGEO,NDIM,NCEL,NFAC,NFABOR,NPRFML,NFML  ,NSOM
      CALL CSEXIT (1)
 9003 CONTINUE
      WRITE(NFECRA,8003)
     &            FICGEO,NDIM,NCEL,NFAC,NFABOR,NPRFML,NFML  ,NSOM
      CALL CSEXIT (1)
C
C FORMATS
C
#if defined(_CS_LANG_FR)
C
 8000 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A L''OUVERTURE DU FICHIER GEOMETRIE   ',/,
     &'@    *********                                               ',/,
     &'@      ERREUR DANS ledgeo POUR LE FICHIER ',A6                ,/,
     &'@                                                            ',/,
     &'@      Le calcul ne peut etre execute.                       ',/,
     &'@                                                            ',/,
     &'@      Verifier le fichier geometrie (existence, droits      ',/,
     &'@        d''acces, recopie correcte dans le repertoire de    ',/,
     &'@        travail).                                           ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 8002 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER GEOMETRIE     ',/,
     &'@    *********                                               ',/,
     &'@      ERREUR DANS ledgeo POUR LE FICHIER ',A6                ,/,
     &'@                                                            ',/,
     &'@      L''etat des dimensions lues est le suivant :          ',/,
     &'@        NDIM      NCEL      NFAC    NFABOR                  ',/,
     &'@  ',4I10                                                     ,/,
     &'@        NPRFML    NFML      NSOM                            ',/,
     &'@  ',3I10                                                     ,/,
     &'@                                                            ',/,
     &'@      Le calcul ne peut etre execute.                       ',/,
     &'@                                                            ',/,
     &'@      Verifier le fichier geometrie (existence, droits      ',/,
     &'@        d''acces, format...).                               ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 8003 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER GEOMETRIE     ',/,
     &'@    *********                                               ',/,
     &'@      FIN PREMATUREE DANS ledgeo POUR LE FICHIER ',A6        ,/,
     &'@                                                            ',/,
     &'@      L''etat des dimensions lues est le suivant :          ',/,
     &'@        NDIM      NCEL      NFAC    NFABOR                  ',/,
     &'@  ',4I10                                                     ,/,
     &'@        NPRFML    NFML      NSOM                            ',/,
     &'@  ',3I10                                                     ,/,
     &'@                                                            ',/,
     &'@      Le calcul ne peut etre execute.                       ',/,
     &'@                                                            ',/,
     &'@      Verifier le fichier geometrie (existence, droits      ',/,
     &'@        d''acces, format...).                               ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
C
#else
C
 8000 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ WARNING: ABORT WHILE OPENING THE GEOMETRY FILE          ',/,
     &'@    ********                                                ',/,
     &'@      ERROR IN ledgeo FOR FILE ',A6                          ,/,
     &'@                                                            ',/,
     &'@      The calculation will not be run.                      ',/,
     &'@                                                            ',/,
     &'@      Verify the geometry file (existence, access           ',/,
     &'@        permission, correct copy in the working directory)  ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 8002 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ WARNING: ABORT WHILE READING THE GEOMETRY FILE          ',/,
     &'@    ********                                                ',/,
     &'@      ERROR IN ledgeo FOR FILE ',A6                          ,/,
     &'@                                                            ',/,
     &'@      The state of the read dimensions is:                  ',/,
     &'@        NDIM      NCEL      NFAC    NFABOR                  ',/,
     &'@  ',4I10                                                     ,/,
     &'@        NPRFML    NFML      NSOM                            ',/,
     &'@  ',3I10                                                     ,/,
     &'@                                                            ',/,
     &'@      The calculation will not be run.                      ',/,
     &'@                                                            ',/,
     &'@      Verify the geometry file (existence, access           ',/,
     &'@        permission, format...)                              ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 8003 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ WARNING: ABORT WHILE READING THE GEOMETRY FILE          ',/,
     &'@    ********                                                ',/,
     &'@      UNEXPECTED END OF FILE in ledgeo FOR FILE ',A6         ,/,
     &'@                                                            ',/,
     &'@      The state of the read dimensions is:                  ',/,
     &'@        NDIM      NCEL      NFAC    NFABOR                  ',/,
     &'@  ',4I10                                                     ,/,
     &'@        NPRFML    NFML      NSOM                            ',/,
     &'@  ',3I10                                                     ,/,
     &'@                                                            ',/,
     &'@      The calculation will not be run.                      ',/,
     &'@                                                            ',/,
     &'@      Verify the geometry file (existence, access           ',/,
     &'@        permission, format...)                              ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
C
#endif
C
      END
c@z
