inistb.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\stbtel\inistb.f
00002 !
00031                         SUBROUTINE INISTB
00032 !                       *****************
00033 !
00034      &(NPOIN1,TYPELE,MAILLE,PRECIS,NGEO,NSEC2,NSEC11,NSEC12)
00035 !
00036 !***********************************************************************
00037 ! PROGICIEL : STBTEL V5.2            09/08/89    J.C. GALLAND
00038 !***********************************************************************
00039 !
00040 !   FONCTION  : RECHERCHE LES NOMBRES TOTAUX DE NOEUDS ET D'ELEMENTS DU
00041 !               MAILLAGE DANS LE FICHIER UNIVERSEL DE SUPERTAB
00042 !
00043 !-----------------------------------------------------------------------
00044 !                             ARGUMENTS
00045 ! .________________.____.______________________________________________
00046 ! |      NOM       |MODE|                   ROLE
00047 ! |________________|____|______________________________________________
00048 ! | NPOIN1         |<-- | NOMBRE REEL DE POINTS DU MAILLAGE
00049 ! |                |    | (NPOIN REPRESENTE L'INDICE MAX DES NOEUDS CAR
00050 ! |                |    | SUPERTAB LAISSE DES TROUS DANS LA NUMEROTATION
00051 ! | TYPELE         |<-- | TYPE D'ELEMENTS
00052 ! | MAILLE         |<-- | NOM DU MAILLEUR
00053 ! | PRECIS         |<-- | FORMAT DE LECTURE DES COORDONNEES DES NOEUDS
00054 ! |________________|____|______________________________________________
00055 ! | COMMON:        |    |
00056 ! |  GEO:          |    |
00057 ! |    MESH        |<-- | TYPE DES ELEMENTS DU MAILLAGE
00058 ! |    NDP         | -->| NOMBRE DE NOEUDS PAR ELEMENTS
00059 ! |    NPOIN       |<-- | NOMBRE TOTAL DE NOEUDS DU MAILLAGE
00060 ! |    NELEM       |<-- | NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
00061 ! |    NPMAX       | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
00062 ! |                |    | (NPMAX = NPOIN + 0.1*NELEM)
00063 ! |    NELMAX      | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
00064 ! |                |    | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
00065 ! |  FICH:         |    |
00066 ! |    NRES        |--> | NUMERO DU CANAL DU FICHIER DE SERAFIN
00067 ! |    NGEO       |--> | NUMERO DU CANAL DU FICHIER MAILLEUR
00068 ! |    NLIM      |--> | NUMERO DU CANAL DU FICHIER DYNAM DE TELEMAC
00069 ! |    NFO1      |--> | NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
00070 ! |  SECT:         |    |
00071 ! |    NSEC11      |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
00072 ! |                |    | (LECTURE EN SIMPLE PRECISION)
00073 ! |    NSEC12      |--> | INDICATEUR DU SECTEUR CONTENANT LES NOEUDS
00074 ! |                |    | (LECTURE EN DOUBLE PRECISION)
00075 ! |    NSEC2       |--> | INDICATEUR DU SECTEUR CONTENANT LES ELEMENTS
00076 ! |    NSEC3       |--> | INDICATEUR DU SECTEUR CONTENANT LE TITRE
00077 ! |________________|____|______________________________________________
00078 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
00079 !-----------------------------------------------------------------------
00080 ! APPELE PAR : HOMERE
00081 ! APPEL DE : -
00082 !***********************************************************************
00083 !
00084       IMPLICIT NONE
00085       INTEGER LNG,LU
00086       COMMON/INFO/LNG,LU
00087 !
00088       DOUBLE PRECISION X1
00089 !
00090       INTEGER NPOIN1 , NPOIN2
00091       INTEGER NPOIN , NELEM , NPMAX , NELMAX , MESH , NDP
00092       INTEGER NSEC11 , NSEC12 , NSEC2 , N1
00093       INTEGER NSEC , NGEO , N2
00094       INTEGER INDI11 , INDI12 , INDIC2
00095 !
00096       CHARACTER*2  MOINS1
00097       CHARACTER*4  BLANC*4
00098       CHARACTER*11 TYPELE
00099       CHARACTER*9  MAILLE
00100       CHARACTER*6  PRECIS
00101 !
00102 ! COMMON
00103 !
00104       COMMON/GEO/ MESH , NDP , NPOIN , NELEM , NPMAX , NELMAX
00105 !
00106 !=======================================================================
00107 ! INITIALISATION
00108 !=======================================================================
00109 !
00110       REWIND NGEO
00111       NPOIN1  = 0
00112       NPOIN2  = 0
00113       NELEM   = 0
00114       INDI11  = 0
00115       INDI12  = 0
00116       INDIC2  = 0
00117 !
00118 !=======================================================================
00119 ! LECTURE SEQUENTIELLE DU FICHIER ET RECHERCHE DES INDICATEURS
00120 ! NSEC1 ET NSEC2
00121 !=======================================================================
00122 !
00123  10   READ(NGEO,1000,ERR=110,END=120) BLANC,MOINS1
00124       IF (MOINS1.NE.'-1'.OR.BLANC.NE.'    ') GOTO 10
00125  1000 FORMAT(A4,A2)
00126 !
00127  20   READ(NGEO,2000,ERR=110,END=120) NSEC
00128       IF (NSEC.EQ.-1) THEN
00129         GOTO 20
00130 !
00131 !=======================================================================
00132 ! NOMBRE DE POINTS
00133 !=======================================================================
00134 !
00135 ! LECTURE EN SIMPLE PRECISION
00136 !
00137       ELSE IF (NSEC.EQ.NSEC11) THEN
00138         INDI11 = 1
00139 !
00140  30     CONTINUE
00141         READ(NGEO,2000,ERR=110,END=120) NSEC
00142 !
00143         IF (NSEC.NE.-1) THEN
00144           NPOIN1 = NPOIN1+1
00145           NPOIN2 = MAX0(NSEC,NPOIN1)
00146           GOTO 30
00147         ELSE
00148           GOTO 50
00149         ENDIF
00150 !
00151 ! LECTURE EN DOUBLE PRECISION
00152 !
00153       ELSE IF (NSEC.EQ.NSEC12) THEN
00154         INDI12 = 1
00155 !
00156  31     CONTINUE
00157         READ(NGEO,2000,ERR=110,END=120) NSEC
00158 !
00159         IF (NSEC.NE.-1) THEN
00160           NPOIN1 = NPOIN1+1
00161           NPOIN2 = MAX0(NSEC,NPOIN1)
00162         ELSE
00163           GOTO 50
00164         ENDIF
00165 !
00166         READ(NGEO,4000,ERR=110,END=120) X1
00167 !
00168         GOTO 31
00169 !
00170 !=======================================================================
00171 ! NOMBRE ET TYPE D'ELEMENTS
00172 !=======================================================================
00173 !
00174       ELSE IF (NSEC.EQ.NSEC2) THEN
00175         INDIC2 = 1
00176         IF (MAILLE.EQ.'SUPERTAB4') THEN
00177 !  LECTURE AU FORMAT SUPERTAB VERSION 4
00178           READ(NGEO,3000,ERR=110,END=120) N1,N2,MESH
00179         ELSE
00180 !  LECTURE AU FORMAT SUPERTAB VERSION 6
00181           READ(NGEO,3000,ERR=110,END=120) N1,MESH,N2
00182         ENDIF
00183         NELEM = 1
00184  40     READ(NGEO,2000,ERR=110,END=120) NSEC
00185         IF (NSEC.NE.-1) THEN
00186           NELEM = NELEM+1
00187           GOTO 40
00188         ELSE
00189           GOTO 50
00190         ENDIF
00191       ENDIF
00192 !
00193  50   IF ((INDI11.EQ.1.OR.INDI12.EQ.1).AND.INDIC2.EQ.1) THEN
00194         GOTO 60
00195       ELSE
00196         GOTO 10
00197       ENDIF
00198 !
00199  110  IF (LNG.EQ.1) WRITE(LU,1100)
00200       IF (LNG.EQ.2) WRITE(LU,4100)
00201       CALL PLANTE(1)
00202       STOP
00203 !
00204  120  CONTINUE
00205       IF ((INDI11.NE.1.AND.INDI12.NE.1).AND.(LNG.EQ.1)) WRITE(LU,1200)
00206       IF ((INDI11.NE.1.AND.INDI12.NE.1).AND.(LNG.EQ.2)) WRITE(LU,4200)
00207       IF ((INDI12.NE.1).AND.(LNG.EQ.1)) WRITE(LU,1300)
00208       IF ((INDI12.NE.1).AND.(LNG.EQ.2)) WRITE(LU,4300)
00209       STOP
00210 !
00211  60   CONTINUE
00212 !
00213 !=======================================================================
00214 ! AFFECTATION DES VALEURS LUES AUX VARIABLES CONCERNEES
00215 !=======================================================================
00216 !
00217       IF (INDI11.EQ.1) PRECIS='SIMPLE'
00218       IF (INDI12.EQ.1) PRECIS='DOUBLE'
00219 !
00220       NELEM =NELEM / 2
00221 !
00222       NPOIN = NPOIN2
00223 !
00224 !=======================================================================
00225 ! MISE DES VALEURS DE MESH AU STANDARD TELEMAC
00226 !=======================================================================
00227 !
00228       IF (MESH.EQ.94) THEN
00229         MESH = 2
00230         NDP  = 4
00231         TYPELE = 'QUADRANGLES'
00232       ELSEIF (MESH.EQ.91) THEN
00233         MESH = 3
00234         NDP  = 3
00235         TYPELE = 'TRIANGLES  '
00236       ELSE
00237         IF (LNG.EQ.1) WRITE(LU,140) MESH
00238         IF (LNG.EQ.2) WRITE(LU,3140) MESH
00239  140    FORMAT(
00240 ' INISTB : TYPE DE MAILLAGE NON PREVU DANS TELEMAC,     &           MESH = ',I4)
00241  3140   FORMAT(
00242 ' INISTB : TYPE OF MESH NOT AVAILABLE IN TELEMAC,     &           MESH = ',I4)
00243       ENDIF
00244 !
00245 !=======================================================================
00246 ! IMPRESSION DES RESULTATS
00247 !=======================================================================
00248 !
00249  1100 FORMAT(//,'*************************************************',/,
00250      &          'ERREUR A LA LECTURE DU FICHIER UNIVERSEL (INISTB)',/,
00251      &          '*************************************************')
00252  4100 FORMAT(//,'****************************************',/,
00253      &          'ERROR IN READING UNIVERSAL FILE (INISTB)',/,
00254      &          '****************************************')
00255  1200 FORMAT(//,'*************************************************',/,
00256      &          'FIN DU FICHIER UNIVERSEL : PAS DE NOEUDS (INISTB)',/,
00257      &          '*************************************************')
00258  4200 FORMAT(//,'********************************************',/,
00259      &          'END OF THE UNIVERSAL FILE : NO NODE (INISTB)',/,
00260      &          '********************************************')
00261  1300 FORMAT(//,'**************************************************',/,
00262      &          'FIN DU FICHIER UNIVERSEL : PAS D''ELEMENTS (INISTB)',/,
00263      &          '**************************************************')
00264  4300 FORMAT(//,'***********************************************',/,
00265      &          'END OF THE UNIVERSAL FILE : NO ELEMENT (INISTB)',/,
00266      &          '***********************************************')
00267  2000 FORMAT(I10)
00268  3000 FORMAT(3I10)
00269  4000 FORMAT(D25.16)
00270 !
00271       RETURN
00272       END

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0