The TELEMAC-MASCARET system  trunk
lecsim.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE lecsim
3 ! *****************
4 !
5  &( x , y , ikle , ncolor , titre , nop5 , ngeo )
6 !
7 !***********************************************************************
8 ! PROGICIEL : STBTEL V5.2 25/02/92 J-C GALLAND (LNH)
9 !***********************************************************************
10 !
11 ! FONCTION : LECTURE DU FICHIER DE LA GEOMETRIE CREE PAR SIMAIL
12 !
13 !-----------------------------------------------------------------------
14 ! ARGUMENTS
15 ! .________________.____.______________________________________________
16 ! | NOM |MODE| ROLE
17 ! |________________|____|______________________________________________
18 ! | X,Y |<-- | COORDONNEES DU MAILLAGE .
19 ! | X1,Y1 |<-- | COORDONNEES DU MAILLAGE LUES EN SIMPLE
20 ! | | | PRECISION DANS LE FICHIER SIMAIL
21 ! | IKLE |<-- | LISTE DES POINTS DE CHAQUE ELEMENT
22 ! | NCOLOR |<-- | TABLEAU DES COULEURS DES POINTS DU MAILLAGE
23 ! | TITRE |<-- | TITRE DU MAILLAGE
24 ! | NOP5 | -->| TABLEAU DE TRAVAIL POUR LA LECTURE DE LA SD
25 ! |________________|____|______________________________________________
26 ! | COMMON: | |
27 ! | GEO: | |
28 ! | MESH | -->| TYPE DES ELEMENTS DU MAILLAGE
29 ! | NDP | -->| NOMBRE DE NOEUDS PAR ELEMENTS
30 ! | NPOIN | -->| NOMBRE TOTAL DE NOEUDS DU MAILLAGE
31 ! | NELEM | -->| NOMBRE TOTAL D'ELEMENTS DU MAILLAGE
32 ! | NPMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX X ET Y
33 ! | | | (NPMAX = NPOIN + 0.1*NELEM)
34 ! | NELMAX | -->| DIMENSION EFFECTIVE DES TABLEAUX CONCERNANT
35 ! | | | LES ELEMENTS (NELMAX = NELEM + 0.2*NELEM)
36 ! | FICH: | |
37 ! | NRES | -->| NUMERO DU CANAL DU FICHIER DE SERAFIN
38 ! | NGEO | -->| NUMERO DU CANAL DU FICHIER MAILLEUR
39 ! | NLIM | -->| NUMERO DU CANAL DU FICHIER DYNAM DE TELEMAC
40 ! | NFO1 |--> | NUMERO DU CANAL DU FICHIER TRIANGLE TRIGRID
41 ! |________________|____|______________________________________________
42 ! MODE : -->(DONNEE NON MODIFIEE), <--(RESULTAT), <-->(DONNEE MODIFIEE)
43 !----------------------------------------------------------------------
44 ! APPELE PAR : STBTEL
45 ! APPEL DE : -
46 !***********************************************************************
47 !
48 ! LISTE DES ENREGISTREMENTS DU FICHIER GEOMETRIQUE:
49 ! (DOCUMENTION: NOTICE SIMAIL)
50 !
51 !***********************************************************************
52 !
55  IMPLICIT NONE
56 !
57  DOUBLE PRECISION, INTENT(INOUT) :: X(*) , Y(*)
58  INTEGER, INTENT(INOUT) :: IKLE(nelmax,4) , NCOLOR(*)
59  CHARACTER(LEN=80), INTENT(INOUT) :: TITRE
60  INTEGER, INTENT(INOUT) :: NOP5(*)
61  INTEGER, INTENT(IN) :: NGEO
62 !
63  INTEGER ERR
64  INTEGER I,J,K
65  INTEGER LONG, NTASD
66  INTEGER NCGE, NMAE , NDSDE , NNO , NCOPNP ,NPO
67  INTEGER INING, NBEGM , INDIC
68 !
69  REAL, DIMENSION(:), ALLOCATABLE :: X1,Y1
70 !
71 !
72  INTRINSIC dble
73 !
74 !-----------------------------------------------------------------------
75 !
76  ALLOCATE(x1(npoin),stat=err)
77  ALLOCATE(y1(npoin),stat=err)
78 !
79  IF(err.NE.0) THEN
80  WRITE(lu,8000) err
81 8000 FORMAT(1x,'LECSIM: ERROR DURING ALLOCATION OF MEMORY: ',/,1x,
82  & 'ERROR CODE: ',1i6)
83  ENDIF
84 !
85 !=======================================================================
86 ! INITIALISATION
87 !=======================================================================
88 !
89  rewind ngeo
90 !
91  DO i=1,npoin
92  x(i) = 9999999.d0
93  y(i) = 9999999.d0
94  ncolor(i) = 99999
95  ENDDO
96 !
97 !=======================================================================
98 ! LECTURE SEQUENTIELLE DU FICHIER (1ER ENRGISTREMENT DE LA SD)
99 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
100 !=======================================================================
101 !
102  READ(ngeo,err=110,end=120) long,(nop5(i),i=1,long)
103 !
104 !=======================================================================
105 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP0) . LECTURE DU TITRE
106 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
107 !=======================================================================
108 !
109  READ(ngeo,err=110,end=120) long,titre,(nop5(i),i=1,11),ntasd
110 !
111 !=======================================================================
112 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAUX NOP1 ET ASSOCIES)
113 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
114 !=======================================================================
115 !
116  IF (ntasd.GT.0) THEN
117  READ(ngeo,err=110,end=120) long,(nop5(i),i=1,long)
118  DO i=1,ntasd
119  READ(ngeo,err=110,end=120) long,(nop5(j),j=1,long)
120  ENDDO
121  ENDIF
122 !
123 !=======================================================================
124 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP2)
125 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
126 !=======================================================================
127 !
128  READ(ngeo,err=110,end=120) long,(nop5(i),i=1,long)
129  ncopnp = nop5(4)
130  nbegm = nop5(25)
131 !
132 !=======================================================================
133 ! LECTURE SEQUENTIELLE DU FICHIER (TABLEAU NOP3)
134 ! POUR LES LECTURES BIDON, ON UTILISE NOP5
135 !=======================================================================
136 !
137  IF (nbegm.NE.0) THEN
138  READ(ngeo,err=110,end=120) long,(nop5(i),i=1,long)
139  ENDIF
140 !
141 !=======================================================================
142 ! LECTURE SEQUENTIELLE DES COORDONNEES DES NOEUDS (TABLEAU NOP4)
143 !=======================================================================
144 !
145  READ(ngeo,err=110,end=120) long,(x1(i),y1(i),i=1,npoin)
146  DO i=1,npoin
147  x(i) = dble(x1(i))
148  y(i) = dble(y1(i))
149  ENDDO
150 !
151 !=======================================================================
152 ! LECTURE SEQUENTIELLE DES IKLE (TABLEAU NOP5)
153 ! POUR LES LECTURE BIDON, ON UTILISE NOP5 ET LONG
154 !=======================================================================
155 !
156  indic = 0
157  READ(ngeo,err=110,end=120) long,(nop5(i),i=1,long)
158  DO i=1,nelem
159  indic = indic +1
160  ncge = nop5(indic)
161  indic = indic +1
162  nmae = nop5(indic)
163  indic = indic +1
164  ndsde = nop5(indic)
165  indic = indic +1
166  nno = nop5(indic)
167 ! NNO : NOMBRE DE NOEUDS PAR ELEMENT
168  IF ( (nno.EQ.4.AND.mesh.NE.2) .OR. (nno.EQ.3.AND.mesh.NE.3) )
169  & THEN
170  WRITE(lu,4000)
171  CALL plante(1)
172  stop
173  ENDIF
174  DO k=1,nno
175  indic = indic +1
176  ikle(i,k) = nop5(indic)
177  ENDDO
178  IF (ncopnp.NE.1) THEN
179  indic = indic +1
180  npo = nop5(indic)
181  DO k=1,npo
182  indic = indic +1
183  ENDDO
184  ENDIF
185 ! NMAE :
186  IF (nmae.NE.0) THEN
187  indic = indic +1
188  ining = nop5(indic)
189  DO k=2,nmae
190  IF (ining.EQ.3) THEN
191  indic = indic +1
192  ncolor(ikle(i,k-1)) = nop5(indic)
193  ELSE IF(ining.EQ.2) THEN
194  indic = indic +1
195  IF (k.GT.nno+1) ncolor(ikle(i,k-(nno+1))) = nop5(indic)
196  ELSE IF(ining.EQ.1) THEN
197  indic = indic +1
198  IF (k.GT.2*nno+1)
199  & ncolor(ikle(i,k-(2*nno+1))) = nop5(indic)
200  ENDIF
201  ENDDO
202  ENDIF
203  ENDDO !I
204 !
205  GOTO 80
206 !
207  110 CONTINUE
208  WRITE(lu,4100)
209  120 CONTINUE
210  WRITE(lu,4200)
211 !
212  80 CONTINUE
213 !
214 !=======================================================================
215 !
216  DEALLOCATE (x1)
217  DEALLOCATE (y1)
218 !
219 !=======================================================================
220 !
221 4000 FORMAT(//,'*********************************************',/,
222  & 'LECSIM : THERE IS NO LINK BETWEEN THE NUMBER ',/,
223  & 'OF POINTS BY ELEMENT AND THE TYPE OF ELEMENTS ',/,
224  & '**********************************************',//)
225 4100 FORMAT(//,'**********************************************',/,
226  & 'LECSIM : ERROR IN READING FILE SIMAIL ',/,
227  & '**********************************************',//)
228 4200 FORMAT(//,'*************************************************',/,
229  & 'LECSIM : ATTEMPT TO READ AFTER END OF FILE SIMAIL ',/,
230  & '*************************************************',//)
231 !
232  RETURN
233  END
subroutine lecsim(X, Y, IKLE, NCOLOR, TITRE, NOP5, NGEO)
Definition: lecsim.f:7