lecsim.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\stbtel\lecsim.f
00002 !
00031                         SUBROUTINE LECSIM
00032 !                       *****************
00033 !
00034      &( X , Y , IKLE , NCOLOR , TITRE , NOP5 , NGEO )
00035 !
00036 !***********************************************************************
00037 ! PROGICIEL : STBTEL V5.2         25/02/92    J-C GALLAND  (LNH)
00038 !***********************************************************************
00039 !
00040 !     FONCTION  :  LECTURE DU FICHIER DE LA GEOMETRIE CREE PAR SIMAIL
00041 !
00042 !-----------------------------------------------------------------------
00043 !                             ARGUMENTS
00044 ! .________________.____.______________________________________________
00045 ! |      NOM       |MODE|                   ROLE
00046 ! |________________|____|______________________________________________
00047 ! |   X,Y          |<-- | COORDONNEES DU MAILLAGE .
00048 ! |   X1,Y1        |<-- | COORDONNEES DU MAILLAGE LUES EN SIMPLE
00049 ! |                |    | PRECISION DANS LE FICHIER SIMAIL
00050 ! |   IKLE         |<-- | LISTE DES POINTS DE CHAQUE ELEMENT
00051 ! |   NCOLOR       |<-- | TABLEAU DES COULEURS DES POINTS DU MAILLAGE
00052 ! |   TITRE        |<-- | TITRE DU MAILLAGE
00053 ! |   NOP5         | -->| TABLEAU DE TRAVAIL POUR LA LECTURE DE LA SD
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 ! |________________|____|______________________________________________
00071 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
00072 !----------------------------------------------------------------------
00073 ! APPELE PAR : STBTEL
00074 ! APPEL DE : -
00075 !***********************************************************************
00076 !
00077 !    LISTE DES ENREGISTREMENTS DU FICHIER GEOMETRIQUE:
00078 !             (DOCUMENTION: NOTICE SIMAIL)
00079 !
00080 !***********************************************************************
00081 !
00082       IMPLICIT NONE
00083       INTEGER LNG,LU
00084       COMMON/INFO/LNG,LU
00085 !
00086       INTEGER NGEO , NPOIN , ERR
00087       INTEGER NELEM , MESH , NDP , NELMAX , NPMAX
00088       INTEGER IKLE(NELMAX,4) , NCOLOR(*)
00089       INTEGER I,J,K
00090       INTEGER NOP5(*)
00091       INTEGER LONG , NTASD
00092       INTEGER NCGE , NMAE , NDSDE , NNO , NCOPNP ,NPO
00093       INTEGER INING , NBEGM , INDIC
00094 !
00095       DOUBLE PRECISION X(*) , Y(*)
00096 !
00097       REAL, DIMENSION(:), ALLOCATABLE :: X1,Y1
00098 !
00099       CHARACTER*80 TITRE
00100 !
00101       INTRINSIC DBLE
00102 !
00103 ! COMMON
00104 !
00105       COMMON/GEO/ MESH , NDP , NPOIN , NELEM , NPMAX , NELMAX
00106 !
00107 !-----------------------------------------------------------------------
00108 !
00109       ALLOCATE(X1(NPOIN),STAT=ERR)
00110       ALLOCATE(Y1(NPOIN),STAT=ERR)
00111 !
00112       IF(ERR.NE.0) THEN
00113         IF(LNG.EQ.1) WRITE(LU,7000) ERR
00114         IF(LNG.EQ.2) WRITE(LU,8000) ERR
00115 7000    FORMAT(1X,'LECSIM : ERREUR A L''ALLOCATION DE MEMOIRE : ',/,1X,
00116      &            'CODE D''ERREUR : ',1I6)
00117 8000    FORMAT(1X,'LECSIM: ERROR DURING ALLOCATION OF MEMORY: ',/,1X,
00118      &            'ERROR CODE: ',1I6)
00119       ENDIF
00120 !
00121 !=======================================================================
00122 !   INITIALISATION
00123 !=======================================================================
00124 !
00125       REWIND NGEO
00126 !
00127       DO I=1,NPOIN
00128         X(I) = 9999999.D0
00129         Y(I) = 9999999.D0
00130         NCOLOR(I) = 99999
00131       ENDDO
00132 !
00133 !=======================================================================
00134 ! LECTURE SEQUENTIELLE DU FICHIER (1ER ENRGISTREMENT DE LA SD)
00135 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
00136 !=======================================================================
00137 !
00138       READ(NGEO,ERR=110,END=120) LONG,(NOP5(I),I=1,LONG)
00139 !
00140 !=======================================================================
00141 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP0) . LECTURE DU TITRE
00142 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
00143 !=======================================================================
00144 !
00145       READ(NGEO,ERR=110,END=120) LONG,TITRE,(NOP5(I),I=1,11),NTASD
00146 !
00147 !=======================================================================
00148 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAUX NOP1 ET ASSOCIES)
00149 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
00150 !=======================================================================
00151 !
00152       IF (NTASD.GT.0) THEN
00153         READ(NGEO,ERR=110,END=120) LONG,(NOP5(I),I=1,LONG)
00154         DO I=1,NTASD
00155           READ(NGEO,ERR=110,END=120) LONG,(NOP5(J),J=1,LONG)
00156         ENDDO
00157       ENDIF
00158 !
00159 !=======================================================================
00160 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP2)
00161 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
00162 !=======================================================================
00163 !
00164       READ(NGEO,ERR=110,END=120) LONG,(NOP5(I),I=1,LONG)
00165       NCOPNP = NOP5(4)
00166       NBEGM  = NOP5(25)
00167 !
00168 !=======================================================================
00169 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP3)
00170 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
00171 !=======================================================================
00172 !
00173       IF (NBEGM.NE.0) THEN
00174         READ(NGEO,ERR=110,END=120) LONG,(NOP5(I),I=1,LONG)
00175       ENDIF
00176 !
00177 !=======================================================================
00178 ! LECTURE SEQUENTIELLE DES COORDONNEES DES NOEUDS (TABLEAU NOP4)
00179 !=======================================================================
00180 !
00181       READ(NGEO,ERR=110,END=120) LONG,(X1(I),Y1(I),I=1,NPOIN)
00182       DO I=1,NPOIN
00183         X(I) = DBLE(X1(I))
00184         Y(I) = DBLE(Y1(I))
00185       ENDDO
00186 !
00187 !=======================================================================
00188 ! LECTURE SEQUENTIELLE DES IKLE (TABLEAU NOP5)
00189 ! POUR LES LECTURE BIDON, ON UTILISE NOP5 ET LONG
00190 !=======================================================================
00191 !
00192       INDIC = 0
00193       READ(NGEO,ERR=110,END=120) LONG,(NOP5(I),I=1,LONG)
00194       DO I=1,NELEM
00195         INDIC = INDIC +1
00196         NCGE  = NOP5(INDIC)
00197         INDIC = INDIC +1
00198         NMAE  = NOP5(INDIC)
00199         INDIC = INDIC +1
00200         NDSDE = NOP5(INDIC)
00201         INDIC = INDIC +1
00202         NNO   = NOP5(INDIC)
00203 ! NNO : NOMBRE DE NOEUDS PAR ELEMENT
00204         IF ( (NNO.EQ.4.AND.MESH.NE.2) .OR. (NNO.EQ.3.AND.MESH.NE.3) )
00205      &  THEN
00206           IF (LNG.EQ.1) WRITE(LU,1000)
00207           IF (LNG.EQ.2) WRITE(LU,4000)
00208           CALL PLANTE(1)
00209           STOP
00210         ENDIF
00211         DO K=1,NNO
00212           INDIC = INDIC +1
00213           IKLE(I,K) = NOP5(INDIC)
00214         ENDDO
00215         IF (NCOPNP.NE.1) THEN
00216           INDIC = INDIC +1
00217           NPO = NOP5(INDIC)
00218           DO K=1,NPO
00219             INDIC = INDIC +1
00220           ENDDO
00221         ENDIF
00222 !  NMAE :
00223         IF (NMAE.NE.0) THEN
00224           INDIC = INDIC +1
00225           INING = NOP5(INDIC)
00226           DO K=2,NMAE
00227             IF (INING.EQ.3) THEN
00228               INDIC = INDIC +1
00229               NCOLOR(IKLE(I,K-1)) = NOP5(INDIC)
00230             ELSE IF(INING.EQ.2) THEN
00231               INDIC = INDIC +1
00232               IF (K.GT.NNO+1) NCOLOR(IKLE(I,K-(NNO+1))) = NOP5(INDIC)
00233             ELSE IF(INING.EQ.1) THEN
00234               INDIC = INDIC +1
00235               IF (K.GT.2*NNO+1)
00236      &        NCOLOR(IKLE(I,K-(2*NNO+1))) = NOP5(INDIC)
00237             ENDIF
00238           ENDDO
00239         ENDIF
00240       ENDDO !I
00241 !
00242       GOTO 80
00243 !
00244  110  IF (LNG.EQ.1) WRITE(LU,1100)
00245       IF (LNG.EQ.2) WRITE(LU,4100)
00246  120  IF (LNG.EQ.1) WRITE(LU,1200)
00247       IF (LNG.EQ.2) WRITE(LU,4200)
00248 !
00249  80   CONTINUE
00250 !
00251 !=======================================================================
00252 !
00253       DEALLOCATE (X1)
00254       DEALLOCATE (Y1)
00255 !
00256 !=======================================================================
00257 !
00258 1000  FORMAT(//,'*********************************************',/,
00259      &          'LECSIM : IL N''Y A PAS DE LIEN ENTRE LE NOMBRE ',/,
00260      &          'DE POINTS PAR ELEMENT ET LE TYPE DES ELEMENTS ',/,
00261      &          '**********************************************',//)
00262 4000  FORMAT(//,'*********************************************',/,
00263      &          'LECSIM : THERE IS NO LINK BETWEEN THE NUMBER  ',/,
00264      &          'OF POINTS BY ELEMENT AND THE TYPE OF ELEMENTS ',/,
00265      &          '**********************************************',//)
00266 1100  FORMAT(//,'**********************************************',/,
00267      &          'LECSIM : ERREUR A LA LECTURE DU FICHIER SIMAIL',/,
00268      &          '**********************************************',//)
00269 4100  FORMAT(//,'**********************************************',/,
00270      &          'LECSIM : ERROR IN READING FILE SIMAIL         ',/,
00271      &          '**********************************************',//)
00272 1200  FORMAT(//,'*****************************************',/,
00273      &          'LECSIM : FIN PREMATUREE DU FICHIER SIMAIL',/,
00274      &          '*****************************************',//)
00275 4200  FORMAT(//,'*************************************************',/,
00276      &          'LECSIM : ATTEMPT TO READ AFTER END OF FILE SIMAIL ',/,
00277      &          '*************************************************',//)
00278 !
00279       RETURN
00280       END

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