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 ENSWAF
C                       *****************
C     ------------------------------------------------------------------
     & ( NBPMAX , NVP    , NVP1   , NVEP   , NIVEP  ,
     &   NFIN   ,
     &   ITEPA  ,
     &   ETTP   , TEPA , TRAV   )
C     ------------------------------------------------------------------
C***********************************************************************
C FONCTION :
C ----------
c@foncb
CFONC
CFONC    SOUS-PROGRAMME DU MODULE LAGRANGIEN :
CFONC    -------------------------------------
CFONC
CFONC    Ecriture des fichiers pour Ensight7 au format CASE pour la
CFONC    visualisation des deplacements des particules et de variables
CFONC    associees.
CFONC
CFONC    La visualisation des deplacement et le choix des variables
CFONC    associees est realise dans le sous-programme USLAG1.
CFONC
c@fonce
C-----------------------------------------------------------------------
C                             ARGUMENTS
c@argub
CARGU .______________.____._____.______________________________________.
CARGU !    NOM       !TYPE!MODE !                   ROLE               !
CARGU !______________!____!_____!______________________________________!
CARGU ! NBPMAX       ! E  !  -> ! NOMBRE MAX DE PARTICULIES AUTORISE   !
CARGU ! NVP          ! E  !  -> ! NOMBRE DE VARIABLES PARTICULAIRES    !
CARGU ! NVP1         ! E  !  -> ! NVP SANS POSITION, VFLUIDE, VPART    !
CARGU ! NVEP         ! E  !  -> ! NOMBRE INFO PARTICULAIRES (REELS)    !
CARGU ! NIVEP        ! E  !  -> ! NOMBRE INFO PARTICULAIRES (ENTIERS)  !
CARGU ! NFIN         ! E  !  -> ! NFIN = 1 SI DERNIER PAS DE TEMPS     !
CARGU !              !    !     ! NFIN = 0 SINON                       !
CARGU ! ITEPA        ! TE !  -> ! INFO PARTICULAIRES (ENTIERS)         !
CARGU ! (NBPMAX,NIVEP!    !     !   (CELLULE DE LA PARTICULE,...)      !
CARGU ! ETTP         ! TR !  -> ! TABLEAUX DES VARIABLES LIEES         !
CARGU !  (NBPMAX,NVP)!    !     !   AUX PARTICULES                     !
CARGU !              !    !     !   ETAPE COURANTE OU PRECEDENTE       !
CARGU ! TEPA         ! TR !  -> ! INFO PARTICULAIRES (REELS)           !
CARGU ! (NBPMAX,NVEP)!    !     !   (POIDS STATISTIQUES,...)           !
CARGU ! TRAV(NBPMAX,3! TR !  -  ! TABLEAUX DE TRAVAIL                  !
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***********************************************************************
C
      IMPLICIT NONE
C
C**********************************************************************
C     DONNEES EN COMMON
C**********************************************************************
C
      INCLUDE "paramx.h"
      INCLUDE "entsor.h"
      INCLUDE "lagpar.h"
      INCLUDE "lagran.h"
C
C**********************************************************************
C
C ARGUMENTS
C
      INTEGER          NBPMAX , NVP    , NVP1   , NVEP  , NIVEP
      INTEGER          NFIN
      INTEGER          ITEPA(NBPMAX,NIVEP)
C
      DOUBLE PRECISION ETTP(NBPMAX,NVP)
      DOUBLE PRECISION TEPA(NBPMAX,NVEP)
      DOUBLE PRECISION TRAV(NBPMAX,3)
C
C VARIABLES LOCALES
C
      INTEGER          NPT , IPT
      INTEGER          NP , NL
      INTEGER          II1 , II2 , LPOS , N1 , N2
C
      CHARACTER        FICH*80 , NAME*80 , ENTET*80
C
      INTEGER          IPWAF
      DATA             IPWAF /0/
      SAVE             IPWAF
C
C***********************************************************************
C
C=======================================================================
C 0. GESTION MEMOIRE
C=======================================================================
C
C=======================================================================
C 1. Initialisations
C=======================================================================
C
      IF (NFIN.EQ.0) IPWAF = IPWAF + 1
C
      IF (IPWAF.EQ.1) ITLAG = 0
C
      FICH = ' '
      FICH = 'deplacement'
      CALL VERLON (FICH,II1,II2,LPOS)
      ENTET = FICH(II1:II2)
C
C=======================================================================
C 2. ENREGISTREMENTS des deplacement.geom****
C=======================================================================
C
C-->Faut-il enregistrer ?
C
      IF ( (MOD(IPWAF-1,NVISLA).EQ.0 .AND. NFIN.EQ.0)   .OR.
     &     (NFIN.EQ.1 .AND. MOD(IPWAF-1,NVISLA).NE.0) ) THEN
C
C-->Nombre de particules a visualisees encore presentent dans le domaine
C
        NPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) NPT = NPT + 1
        ENDDO
C
C-->Y a t-il encore des particules a visualiser ?
C
        IF (NPT.EQ.0) GOTO 100
C
C-->Nombre d'enregistrements et incrementation du temps physique
C
        IF (ITLAG.LE.9999) THEN
          ITLAG = ITLAG + 1
          TIMLAG(ITLAG) = TTCLAG
        ELSE
          WRITE(NFECRA,9000) ITLAG
          GOTO 100
        ENDIF
C
C-->Ouverture des fichiers type deplacement.geo0001
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+4) = '.geo'
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        II2 = II2 + 5
        FICH(II2:II2+LPOS) = NAME(N1:N2)
C
        II2 = II2 + LPOS
        OPEN ( IMPLA1, FILE=FICH(II1:II2),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture de l'entete
C
        WRITE(IMPLA1,'(A)') 'geometrie deplacement'
        WRITE(IMPLA1,'(A)') 'au format ensight6'
        WRITE(IMPLA1,'(A)') 'node id given'
        WRITE(IMPLA1,'(A)') 'element id given'
        WRITE(IMPLA1,'(A)') 'coordinates'
        WRITE(IMPLA1,'(I8)') NPT
C
C-->Ecriture des points
C
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            WRITE(IMPLA1,'(I8,3E12.5)') NP,
     &                                ETTP(NP,JXP),
     &                                ETTP(NP,JYP),
     &                                ETTP(NP,JZP)
          ENDIF
        ENDDO
C
C-->Ecriture de la geometrie Ensight
C
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'deplacements'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(I8)') NPT
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            WRITE(IMPLA1,'(2I8)') IPT , NP
          ENDIF
        ENDDO
        CLOSE(IMPLA1)
C
      ELSE
C
        IF (NFIN.EQ.0) RETURN
        GOTO 100
C
      ENDIF
C
C=======================================================================
C 3. Ecriture de deplacement.tpssej0001
C=======================================================================
C
      IF (IVISTP.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = TEPA(NP,JRTSP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.tpssej'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 4. Ecriture de deplacement.temper0001
C=======================================================================
C
      IF (IVISTE.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JTP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.temper'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 5. Ecriture de deplacement.diamet0001
C=======================================================================
C
      IF (IVISDM.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JDP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.diamet'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 6. Ecriture de deplacement.massep0001
C=======================================================================
C
      IF (IVISMP.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JMP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.massep'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 7. Charbon : Ecriture de deplacement.temp_ch0001
C=======================================================================
C
      IF (IVISHP.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JHP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.tempch'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 8. Charbon : Ecriture de deplacement.dck0001
C=======================================================================
C
      IF (IVISDK.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = TEPA(NP,JRDCK)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+4) = '.dck'
        II2 = II2 + 4
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 9. Charbon : Ecriture de deplacement.mch0001
C=======================================================================
C
      IF (IVISCH.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JMCH)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+4) = '.mch'
        II2 = II2 + 4
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 10. Charbon : Ecriture de deplacement.mck0001
C=======================================================================
C
      IF (IVISCK.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JMCK)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.mck'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( REAL(TRAV(NP,1)), NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 11. Ecriture de deplacement.vitflu0001
C=======================================================================
C
      IF (IVISV1.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JUF)
            TRAV(IPT,2) = ETTP(NP,JVF)
            TRAV(IPT,3) = ETTP(NP,JWF)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.vitflu'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( (REAL(TRAV(NP,NL)),NL=1,3),NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 12. Ecriture de deplacement.vitpar0001
C=======================================================================
C
      IF (IVISV2.EQ.1) THEN
C
        IPT = 0
        DO NL = 1,NBVIS
          NP = LISTE(NL)
          IF (NP.GE.1 .AND. ITEPA(NP,JISOR).NE.0) THEN
            IPT = IPT + 1
            TRAV(IPT,1) = ETTP(NP,JUP)
            TRAV(IPT,2) = ETTP(NP,JVP)
            TRAV(IPT,3) = ETTP(NP,JWP)
          ENDIF
        ENDDO
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+7) = '.vitpar'
        II2 = II2 + 7
        WRITE (NAME,'(I4.4)') ITLAG
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
C
        OPEN ( IMPLA1, FILE=FICH(II1:II2+LPOS),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
C
C-->Ecriture
C
        WRITE(IMPLA1,'(A)') FICH(II1:II2+LPOS)
        WRITE(IMPLA1,'(A)') 'part   1'
        WRITE(IMPLA1,'(A)') 'point'
        WRITE(IMPLA1,'(6E12.5)') ( (REAL(TRAV(NP,NL)),NL=1,3),NP=1,NPT )
        CLOSE(IMPLA1)
C
      ENDIF
C
C=======================================================================
C 13. Ecriture du deplacement.case au dernier passage
C=======================================================================
C
 100  CONTINUE
C
      IF (NFIN.EQ.1) THEN
C
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        NAME = ' '
        NAME = '.CASE'
        CALL VERLON (NAME,N1,N2,LPOS)
        FICH(II2+1:II2+LPOS) = NAME(N1:N2)
        II2 = II2 + LPOS
        OPEN ( UNIT=IMPLA1, FILE=FICH (II1:II2),
     &         STATUS='UNKNOWN', FORM='FORMATTED', ACCESS='SEQUENTIAL' )
        REWIND ( UNIT=IMPLA1 )
C
        WRITE(IMPLA1,'(A)') 'FORMAT'
        WRITE(IMPLA1,'(A)') 'type:     ensight'
        WRITE(IMPLA1,'(A)') 'GEOMETRY'
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,II1,II2,LPOS)
        FICH(II2+1:II2+8) = '.geo****'
        CALL VERLON (FICH,II1,II2,LPOS)
        NAME = ' '
        NAME = 'model:                 1    '
        NAME(29:29+II2-II1+1) = FICH(II1:II2)
        CALL VERLON (NAME,II1,II2,LPOS)
        WRITE(IMPLA1,'(A)') NAME(II1:II2)
C
        WRITE(IMPLA1,'(A)') 'VARIABLE'
        FICH = ' '
        FICH = ENTET
        CALL VERLON (FICH,N1,N2,LPOS)
C
C Rem : les trois lignes suivantes sont pour eviter une erreur
C       de lecture fichier .CASE lors de sa lecture par ensight
C       s'il n'y a aucune VARIABLE a voir.
C
C       NAME = 'constant per case :    1    constant     1.0'
C       CALL VERLON (NAME,II1,II2,LPOS)
C       WRITE(IMPLA1,'(A)') NAME(II1:II2)
C
        IF (IVISTP.EQ.1) THEN
          NAME = 'scalar per node :      1    temps_de_sejour  '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 2
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.tpssej****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISTE.EQ.1) THEN
          NAME = 'scalar per node :      1    temperature      '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 6
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.temper****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISDM.EQ.1) THEN
          NAME = 'scalar per node :      1    diametre         '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 9
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.diamet****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISMP.EQ.1) THEN
          NAME = 'scalar per node :      1    masse            '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 12
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.massep****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISHP.EQ.1) THEN
          NAME = 'scalar per node :      1    tempch           '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 11
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.tempch****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISDK.EQ.1) THEN
          NAME = 'scalar per node :      1    dck              '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 14
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.dck****'
          II2 = II2 + 8
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISCH.EQ.1) THEN
          NAME = 'scalar per node :      1    mch              '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 14
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.mch****'
          II2 = II2 + 8
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISCK.EQ.1) THEN
          NAME = 'scalar per node :      1    mck              '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 14
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.mck****'
          II2 = II2 + 8
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISV1.EQ.1) THEN
          NAME = 'vector per node :      1    vitesse_fluide   '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 3
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.vitflu****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        IF (IVISV2.EQ.1) THEN
          NAME = 'vector per node :      1    vitesse_partic   '
          CALL VERLON (NAME,II1,II2,LPOS)
          II2 = II2 + 3
          NAME(II2+1:II2+N2)=FICH(N1:N2)
          II2 = II2 + N2
          CALL VERLON (NAME,II1,II2,LPOS)
          NAME(II2+1:II2+11) = '.vitpar****'
          II2 = II2 + 11
          WRITE(IMPLA1,'(A)') NAME(II1:II2)
        ENDIF
C
        WRITE(IMPLA1,'(A)') 'TIME'
        WRITE(IMPLA1,'(A)') 'time set:'
        FICH = ' '
        FICH = 'number of steps:'
        WRITE(NAME,'(I4)') ITLAG
        CALL VERLON(NAME,N1,N2,LPOS)
C       ===========
        FICH(25+1:25+LPOS) = NAME(N1:N2)
        WRITE(IMPLA1,'(A)') FICH(1:25+LPOS)
        WRITE(IMPLA1,'(A)') 'filename start number:  1'
        WRITE(IMPLA1,'(A)') 'filename increment:     1'
        WRITE(IMPLA1,'(A)') 'time values:'
        WRITE(IMPLA1,'(6E12.5)') (TIMLAG(NL),NL=1,ITLAG)
C
        CLOSE(IMPLA1)
C
      ENDIF
C
      RETURN
C
C-------
C FORMAT
C-------
C
 9000 FORMAT(
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/,
     &'@ @@ ATTENTION : ERREUR A L''EXECUTION DU MODULE LAGRANGIEN  ',/,
     &'@    *********                                               ',/,
     &'@                                                            ',/,
     &'@    LE NOMBRE D''ENREGISTREMENTS TEMPORELS DEMANDES POUR    ',/,
     &'@      LE POST-PROCESSING EN MODE DEPLACEMENT DEPASSE        ',/,
     &'@      LE MAXIMUM ADMISSIBLE.                                ',/,
     &'@                                                            ',/,
     &'@    LE NOMBRE DE PAS DE TEMPS DEMANDE EST DE : ',I10         ,/,
     &'@      LE MAXIMUM ADMISSIBLE EST 9999                        ',/,
     &'@                                                            ',/,
     &'@  Le calcul continue, mais les enregistrements sont arretes.',/,
     &'@                                                            ',/,
     &'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@',/,
     &'@                                                            ',/)
C
C----
C FIN
C----
C
      END
c@z
