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 RAYLEC
C                       *****************
C     --------------------------------------------------------------
     & ( IDBIA0 , IDBRA0 ,
     &   NDIM   , NCELET , NCEL   , NFAC   , NFABOR ,
     &   NIDEVE , NRDEVE , NITUSE , NRTUSE ,
     &   IDEVEL , ITUSER , IA     ,
     &   RAYEXP , RAYIMP , TPAROI , QINCID , FLCONV , HFCONV ,
     &   RDEVEL , RTUSER , RA     )
C     --------------------------------------------------------------
C***********************************************************************
C FONCTION :
C --------
c@foncb
CFONC
CFONC    SOUS-PROGRAMME DU MODULE RAYONNEMENT :
CFONC    --------------------------------------
CFONC
CFONC          Lecture du fichier suite au 1er passage
CFONC
CFONC
c@fonce
C-----------------------------------------------------------------------
C                             ARGUMENTS
c@argub
CARGU .______________.____._____.______________________________________.
CARGU !    NOM       !TYPE!MODE !                   ROLE               !
CARGU !______________!____!_____!______________________________________!
CARGU ! IDBIA0       ! E  !  -> ! NUMERO DE LA 1ERE CASE LIBRE DANS IA !
CARGU ! IDBRA0       ! E  !  -> ! NUMERO DE LA 1ERE CASE LIBRE DANS RA !
CARGU ! NDIM         ! E  !  -> ! DIMENSION DE L'ESPACE                !
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 ! NIDEVE NRDEVE! E  !  -> ! LONGUEUR DE IDEVEL RDEVEL            !
CARGU ! NITUSE NRTUSE! E  !  -> ! LONGUEUR DE ITUSER RTUSER            !
CARGU ! IDEVEL(NIDEVE! TE ! <-> ! TAB ENTIER COMPLEMENTAIRE DEVELOPEMT !
CARGU ! ITUSER(NITUSE! TE ! <-> ! TAB ENTIER COMPLEMENTAIRE UTILISATEUR!
CARGU ! IA(*)        ! TR !  -  ! MACRO TABLEAU ENTIER                 !
CARGU ! RAYEXP(NCELET! TR ! <-  ! TERME SOURCE RADIATIF EXPLICITE      !
CARGU !   ,NPHAST)   !    !     !                                      !
CARGU ! RAYIMP(NCELET! TR ! <-  ! TERME SOURCE RADIATIF IMPLICITE      !
CARGU !   ,NPHAST)   !    !     !                                      !
CARGU ! TPAROI(NFABOR! TR !  -  ! TEMPERATURE DE PAROI EN KELVIN       !
CARGU !   ,NPHAST)   !    !     !                                      !
CARGU ! QINCID(NFABOR! TR ! <-  ! DENSITE DE FLUX RADIATIF AUX BORDS   !
CARGU !   ,NPHAST)   !    !     !                                      !
CARGU ! FLCONV(NFABOR! TR ! <-  ! DENSITE DE FLUX CONVECTIF AUX FACES  !
CARGU !   ,NPHAST)   !    !     ! DE BORD                              !
CARGU ! HFCONV(NFABOR! TR ! <-  ! COEFFICIENT D'ECHANGE FLUIDE AUX     !
CARGU !   ,NPHAST)   !    !     ! FACES DE BORD                        !
CARGU ! RDEVEL(NRDEVE! TR ! <-> ! TAB REEL COMPLEMENTAIRE DEVELOPEMT   !
CARGU ! RTUSER(NRTUSE! TR ! <-> ! TAB REEL COMPLEMENTAIRE UTILISATEUR  !
CARGU ! RA(*)        ! TR !  -  ! MACRO TABLEAU REEL                   !
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 "numvar.h"
      INCLUDE "optcal.h"
      INCLUDE "pointe.h"
      INCLUDE "entsor.h"
      INCLUDE "radiat.h"
C
C***********************************************************************
C
C ARGUMENTS
C
      INTEGER          IDBIA0 , IDBRA0
      INTEGER          NDIM   , NCELET , NCEL   , NFAC   , NFABOR
      INTEGER          NIDEVE , NRDEVE , NITUSE , NRTUSE
C
      INTEGER          IDEVEL(NIDEVE), ITUSER(NITUSE), IA(*)
C
      DOUBLE PRECISION RAYEXP(NCELET,NPHAST), RAYIMP(NCELET,NPHAST)
      DOUBLE PRECISION TPAROI(NFABOR,NPHAST), QINCID(NFABOR,NPHAST)
      DOUBLE PRECISION FLCONV(NFABOR,NPHAST), HFCONV(NFABOR,NPHAST)
C
      DOUBLE PRECISION RDEVEL(NRDEVE), RTUSER(NRTUSE), RA(*)
C
C VARIABLES LOCALES
C
      CHARACTER        RUBRIQ*64
      CHARACTER        CPHASE(NPHSMX)*2
      INTEGER          IDEBIA, IDEBRA
      INTEGER          IPHAS, IOK
C
      INTEGER          JPHAST
      INTEGER          NCELOK , NFAIOK , NFABOK , NSOMOK
      INTEGER          IERROR , IRTYP  , ITYSUP , NBVAL , IBIDON
      INTEGER          ILECEC , NBERRO , IVERS
C
C***********************************************************************
C=======================================================================
C 0 - GESTION MEMOIRE
C=======================================================================
C
      IDEBIA = IDBIA0
      IDEBRA = IDBRA0
C
C=======================================================================
C 1. LECTURE DU FICHIER SUITE
C=======================================================================
C
      IF (ISUIRD.EQ.1) THEN
C
C ---> On code en chaine le numero des phases
C
C     Verifications pour les format et les numero de phase
C       et de scalaire en chaine.
          IF(NPHSMX.GT.99) THEN
            WRITE(NFECRA,9001)NPHSMX
            CALL CSEXIT (1)
          ENDIF
C
C     Codage en chaine de caracteres du numero de la phase
C       Aller jusqu'a NPHAST suffirait
          DO IPHAS = 1, NPHSMX
            WRITE(CPHASE(IPHAS),'(I2.2)')IPHAS
          ENDDO
C
C  ---> Ouverture
C
          WRITE(NFECRA,6000)
C
C     (ILECEC=1:lecture)
          ILECEC = 1
          CALL OPNSUI(FICAMR,LEN(FICAMR),ILECEC,IBIDON,IMPAMR,IERROR)
C         ===========
          IF (IERROR.NE.0) THEN
            WRITE(NFECRA,9011) FICAMR
            CALL CSEXIT (1)
          ENDIF
C
          WRITE(NFECRA,6010)
C
C
C  ---> Type de fichier suite
C        Pourrait porter le numero de version si besoin.
C        On ne se sert pas de IVERS pour le moment
C
          ITYSUP = 0
          NBVAL  = 1
          IRTYP  = 1
          RUBRIQ = 'version_fichier_suite_rayonnement'
          CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &                IVERS,IERROR)
C
          IF (IERROR.NE.0) THEN
            WRITE(NFECRA,9200)FICAMR
            CALL CSEXIT (1)
          ENDIF
C
C
C  ---> Tests
C
          IOK = 0

C     Dimensions des supports
C
          CALL TSTSUI(IMPAMR,NCELOK,NFAIOK,NFABOK,NSOMOK)
C         ===========
          IF (NCELOK.EQ.0) THEN
            WRITE(NFECRA,9210)
            IOK = IOK + 1
          ENDIF
          IF (NFABOK.EQ.0) THEN
            WRITE(NFECRA,9211)
            IOK = IOK + 1
          ENDIF
C
C     Nombre de phases
C
          ITYSUP = 0
          NBVAL  = 1
          IRTYP  = 1
          RUBRIQ = 'nombre_phases_rayt'
          JPHAST = -1
          CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &                JPHAST,IERROR)
C
          IF(JPHAST.NE.NPHAST.OR.IERROR.NE.0) THEN
            WRITE(NFECRA,1110) JPHAST,NPHAST
            IOK = IOK + 1
          ENDIF
C
C     Arret
          IF (IOK.NE.0) THEN
            CALL CSEXIT (1)
          ENDIF
C
C  ---> Pour test ulterieur si pb : arret
C
          NBERRO = 0
C
C  ---> Lecture des donnees
C
          DO IPHAS = 1, NPHAST
C
C     Aux faces de bord
C
            ITYSUP = 3
            NBVAL  = 1
            IRTYP  = 2
C
            RUBRIQ = 'tparoi_fb_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           TPAROI(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
            RUBRIQ = 'qincid_fb_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           QINCID(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
            RUBRIQ = 'hfconv_fb_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           HFCONV(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
            RUBRIQ = 'flconv_fb_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           FLCONV(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
C
C     Aux cellules
C
            ITYSUP = 1
            NBVAL  = 1
            IRTYP  = 2
C
            RUBRIQ = 'rayimp_ce_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           RAYIMP(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
            RUBRIQ = 'rayexp_ce_phase'//CPHASE(IPHAS)
            CALL LECSUI(IMPAMR,RUBRIQ,LEN(RUBRIQ),ITYSUP,NBVAL,IRTYP,
     &           RAYEXP(1,IPHAS),IERROR)
            NBERRO=NBERRO+IERROR
C
         ENDDO
C
C  ---> Si pb : arret
C
          IF(NBERRO.NE.0) THEN
            WRITE(NFECRA,9100)
            CALL CSEXIT (1)
          ENDIF
C
          WRITE(NFECRA,6011)

C  ---> Fermeture du fichier suite
C
          CALL CLSSUI(IMPAMR,IERROR)
C
          IF (IERROR.NE.0) THEN
            WRITE(NFECRA,8011) FICAMR
          ENDIF
C
          WRITE(NFECRA,6099)
C
C Fin détection suite rayonnement
      ENDIF
C
C--------
C FORMATS
C--------
C
 1110 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : LECTURE DU FICHIER SUITE RAYONNEMENT        ',/,
     &'@    *********                                               ',/,
     &'@      DONNEES AMONT ET ACTUELLES DIFFERENTES                ',/,
     &'@                                                            ',/,
     &'@    Le de phases qui rayonnent a ete modifie                ',/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut etre execute.                         ',/,
     &'@                                                            ',/,
     &'@    Verifier le fichier suite rayonnement.                  ',/,
     &'@                                                            ',/,
     &'@               NPHAS                                        ',/,
     &'@  AMONT : ',I10                                              ,/,
     &'@  ACTUEL: ',I10                                              ,/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
C
 6000 FORMAT (   3X,'** INFORMATIONS SUR LE MODULE DE RAYONNEMENT   ',/,
     &           3X,'   ------------------------------------------  ',/,
     &           3X,' Lecture d''un fichier suite                   '  )
 6010 FORMAT (   3X,'   Debut de la lecture                         '  )
 6011 FORMAT (   3X,'   Fin   de la lecture                         '  )
 6099 FORMAT (   3X,' Fin de la lecture du fichier suite            ',/,
     &'                                                             ',/,
     &'-------------------------------------------------------------',/)
C
 8011 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ERREUR A LA FERMETURE DU FICHIER SUITE      ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@                                                            ',/,
     &'@    Probleme sur le fichier de nom (',A13,')                ',/,
     &'@                                                            ',/,
     &'@    Le calcul se poursuit...                                ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 9011 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER SUITE         ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@      ERREUR A L''OUVERTURE DU FICHIER SUITE                ',/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut pas etre execute.                     ',/,
     &'@                                                            ',/,
     &'@    Verifier l''existence et le nom (',A13,') du            ',/,
     &'@        fichier suite dans le repertoire de travail.        ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/)
 9200 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER SUITE         ',/,
     &'@    *********                                    RAYONNEMENT',/,
     &'@      TYPE DE FICHIER INCORRECT                             ',/,
     &'@                                                            ',/,
     &'@    Le fichier ',A13      ,' ne semble pas etre un fichier  ',/,
     &'@      suite rayonnement.                                    ',/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut etre execute.                         ',/,
     &'@                                                            ',/,
     &'@    Verifier que le fichier suite utilise correspond bien   ',/,
     &'@        a un fichier suite rayonnement.                     ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 9210 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER SUITE         ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@      DONNEES AMONT ET ACTUELLES INCOHERENTES               ',/,
     &'@                                                            ',/,
     &'@    Le nombre de cellules a ete modifie                     ',/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut etre execute.                         ',/,
     &'@                                                            ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 9211 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ARRET A LA LECTURE DU FICHIER SUITE         ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@      DONNEES AMONT ET ACTUELLES INCOHERENTES               ',/,
     &'@                                                            ',/,
     &'@    Le nombre de faces de bord a ete modifie                ',/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut etre execute.                         ',/,
     &'@                                                            ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 9001 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION :ARRET A LA LECTURE DU FICHIER SUITE          ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@      Le nombre de phases    maximal NPHSMX doit etre       ',/,
     &'@        inferieur ou egal a  99, il vaut ici ',I10           ,/,
     &'@                                                            ',/,
     &'@    Le calcul ne peut etre execute.                         ',/,
     &'@                                                            ',/,
     &'@    Voir le sous-programme raycli.                          ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
 9100 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION: ARRET A LA LECTURE DU FICHIER SUITE          ',/,
     &'@    *********   RAYONNEMENT                                 ',/,
     &'@      ERREUR LORS DE LA LECTURE DES DONNEES                 ',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
C
C----
C FIN
C----
C
      RETURN
C
      END
c@z
