The TELEMAC-MASCARET system  trunk
bief_ininds.f
Go to the documentation of this file.
1 ! **********************
2  SUBROUTINE bief_ininds
3 ! **********************
4 !
5  &(npoin,nptfr,nelem,npmax,nptfx,nelmax,nplan,nsegbor,nds,neleb)
6 !
7 !***********************************************************************
8 ! BIEF V7P0 21/08/2010
9 !***********************************************************************
10 !
11 !brief INITIALISES THE ARRAY NDS, WHICH IS USED BY
12 !+ FUNCTIONS BIEF_NBPTS, BIEF_NBSEG, BIEF_NBFEL, AND NBPEL.
13 !+ FUNCTIONS BIEF_NBMPTS, BIEF_NBSEGEL.
14 !code
15 !+ INDEX 1 OF NDS : NUMBER OF DEGREES OF FREEDOM IN THE MESH FOR THIS ELEMENT
16 !+ INDEX 2 OF NDS : NUMBER OF SEGMENTS IN THE MESH FOR THIS ELEMENT
17 !+ INDEX 3 OF NDS : NUMBER OF POINTS PER ELEMENT
18 !+ INDEX 4 OF NDS : NUMBER OF FACES PER ELEMENT (EX 3 FOR A TRIANGLE)
19 !+ INDEX 5 OF NDS : MAXIMUM NUMBER OF DEGREES OF FREEDOM IN THE MESH
20 !+ FOR THIS ELEMENT
21 !+ INDEX 6 OF NDS : NUMBER OF SEGMENTS FOR THIS ELEMENT
22 !+
23 !+ FUNCTIONS IN BIEF:
24 !+
25 !+ INDEX 1 OF NDS : NBPTS
26 !+ INDEX 2 OF NDS : NBSEG
27 !+ INDEX 3 OF NDS : NBPEL
28 !+ INDEX 4 OF NDS : NBFEL
29 !+ INDEX 5 OF NDS : NBMPTS
30 !+ INDEX 6 OF NDS : NBSEGEL
31 !
32 !history J-M HERVOUET (LNH) ; REGINA NEBAUER; LAM MINH PHUONG
33 !+ 24/10/2008
34 !+ V5P9
35 !+
36 !
37 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
38 !+ 13/07/2010
39 !+ V6P0
40 !+ Translation of French comments within the FORTRAN sources into
41 !+ English comments
42 !
43 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
44 !+ 21/08/2010
45 !+ V6P0
46 !+ Creation of DOXYGEN tags for automated documentation and
47 !+ cross-referencing of the FORTRAN sources
48 !
49 !history J-M HERVOUET (LNHE)
50 !+ 25/08/2011
51 !+ V6P2
52 !+ NBSEG and NBSEGEL added for element 51
53 !
54 !history F. DECUNG (LNHE)
55 !+ 01/01/2013
56 !+ V6P3
57 !+ NBSEG added for elements 31 and 81
58 !+
59 !
60 !history J-M HERVOUET (EDF LAB, LNHE)
61 !+ 12/05/2014
62 !+ V7P0
63 !+ Discontinuous elements better treated: new types 15, 16 and 17 for
64 !+ discontinuous linear, quasi-bubble, and quadratic, rather than
65 !+ using component DIMDISC=11, 12 or 13.
66 !
67 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 !| NDS |<--| ARRAY IN BIEF_MESH STRUCTURE FOR STORING
69 !| | | NUMBERS
70 !| NELEB |-->| NUMBER OF BOUNDARY ELEMENTS
71 !| NELEM |-->| NUMBER OF ELEMENTS IN THE MESH
72 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS IN THE MESH
73 !| NPLAN |-->| NUMBER OF PLANES
74 !| NPMAX |-->| MAXIMUM NUMBER OF NODES IN THE MESH
75 !| NPOIN |-->| NUMBER OF NODES IN THE 2D MESH
76 !| | | (EXCEPT TETRAHEDRA WHERE IT IS THE TOTAL NUMBER)
77 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
78 !| NPTFX |-->| MAXIMUM NUMBER OF BOUNDARY POINTS
79 !| NSEGBOR |-->| NUMBER OF BOUNDARY SEGMENTS
80 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
81 !
83  IMPLICIT NONE
84 !
85 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
86 !
87  INTEGER , INTENT(IN) :: NPOIN
88  INTEGER , INTENT(IN) :: NPTFR
89  INTEGER , INTENT(IN) :: NELEM
90  INTEGER , INTENT(IN) :: NPMAX
91  INTEGER , INTENT(IN) :: NPTFX
92  INTEGER , INTENT(IN) :: NELMAX
93  INTEGER , INTENT(IN) :: NPLAN
94  INTEGER , INTENT(IN) :: NSEGBOR
95  INTEGER , INTENT(IN), OPTIONAL :: NELEB
96  INTEGER , INTENT(OUT) :: NDS(0:81,7)
97 !
98 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
99 !
100 ! THE VALUES WHICH WILL NOT BE USED ARE NOT INITIALISED
101 !
102 ! 0) P0 ELEMENT IN DIMENSION 1
103 !
104 ! NSEGBOR (OVER-DIMENSIONING)
105  nds(00,1) = nptfr
106 ! NDS(00,2) = ?????
107  nds(00,3) = 1
108 ! NDS(00,4) = ?????
109  nds(00,5) = nptfx
110 ! NDS(00,6) = ?????
111 !
112 !-----------------------------------------------------------------------
113 !
114 ! 1) P1 ELEMENT IN DIMENSION 1
115 !
116  nds(01,1) = nptfr
117  nds(01,2) = nptfr ! = NSEGBOR
118  nds(01,3) = 2
119 ! NDS(01,4) = ?????
120  nds(01,5) = nptfx
121  nds(01,6) = 1
122 !
123 !-----------------------------------------------------------------------
124 !
125 ! 2) QUADRATIC ELEMENT IN DIMENSION 1
126 !
127 ! NPTFR+NSEGBOR (OVER-DIMENSIONING)
128  nds(02,1) = 2*nptfr
129 ! NDS(02,2) = ?????
130  nds(02,3) = 3
131 ! NDS(02,4) = ?????
132  nds(02,5) = 2*nptfx
133 ! NDS(02,6) = ?????
134 !
135 ! NOTE : THE QUADRATIC BOUNDARY POINT OF SEGMENT K WILL HAVE
136 ! THE NUMBER K+NPTFR, THUS WE HAVE HERE TO DECLARE
137 ! NDS(02,1) AS 2*NPTFR, THOUGH IN PARALLEL THERE MAY
138 ! EXISTING POINT K WITHOUT SEGMENT K IN THE DOMAIN
139 !
140 !
141 !-----------------------------------------------------------------------
142 !
143 ! 10) P0 ELEMENT ON TRIANGLES
144 !
145  nds(10,1) = nelem
146 ! NDS(10,2) = ?????
147  nds(10,3) = 1
148  nds(10,4) = 3
149  nds(10,5) = nelmax
150 ! NDS(10,6) = ??????
151 !
152 !-----------------------------------------------------------------------
153 !
154 ! 11) P1 ELEMENT ON TRIANGLES
155 !
156  nds(11,1) = npoin
157  nds(11,2) = (3*nelem+nsegbor)/2
158  nds(11,3) = 3
159  nds(11,4) = 3
160  nds(11,5) = npmax
161  nds(11,6) = 3
162 !
163 !-----------------------------------------------------------------------
164 !
165 ! 12) QUASI-BUBBLE ELEMENT ON TRIANGLES
166 !
167  nds(12,1) = npoin+nelem
168  nds(12,2) = (9*nelem+nsegbor)/2
169  nds(12,3) = 4
170  nds(12,4) = 3
171  nds(12,5) = npmax+nelmax
172  nds(12,6) = 6
173 !
174 !-----------------------------------------------------------------------
175 !
176 ! 13) QUADRATIC ELEMENT ON TRIANGLES
177 !
178 ! NUMBER OF DDL = NUMBER OF NODES + NUMBER OF SEGMENTS OF P1
179  nds(13,1) = nds(11,1)+nds(11,2)
180 ! TOTAL NUMBER OF SEGMENTS (3 PER LINEAR SEGMENT +
181 ! 6 INTERIOR SEGMENTS FOR EACH ELEMENT)
182  nds(13,2) = 6*nelem+3*nds(11,2)
183  nds(13,3) = 6
184  nds(13,4) = 3
185  nds(13,5) = npmax+(3*nelmax+nsegbor)/2
186  nds(13,6) = 15
187 !
188 !-----------------------------------------------------------------------
189 !
190 ! 14) P1-ISO P1 ELEMENT ON TRIANGLES
191 !
192 ! NUMBER OF DDL = NUMBER OF NODES + NUMBER OF SEGMENTS OF P1
193  nds(14,1) = nds(11,1)+nds(11,2)
194 ! TOTAL NUMBER OF SEGMENTS (3 PER LINEAR SEGMENT +
195 ! 3 INTERIOR SEGMENTS FOR EACH ELEMENT)
196  nds(14,2) = 3*nelem+3*nds(11,2)
197  nds(14,3) = 6
198  nds(14,4) = 3
199  nds(14,5) = npmax+(3*nelmax+nsegbor)/2
200 ! 3 LINEAR SEGMENTS FOLLOWED BY THE 9 P1-ISO P1
201  nds(14,6) = 12
202 ! NDS(10,6) = ??????
203 !
204 !-----------------------------------------------------------------------
205 !
206 ! 15) PIECE-WISE P1 ELEMENT ON TRIANGLES (DISCONTINUOUS ELEMENT)
207 ! ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
208 !
209  nds(15,1) = 3*nelem
210  nds(15,2) = (3*nelem+nsegbor)/2
211  nds(15,3) = 3
212  nds(15,4) = 3
213  nds(15,5) = 3*nelmax
214  nds(15,6) = 3
215 !
216 !-----------------------------------------------------------------------
217 !
218 ! 16) PIECE-WISE QUASI-BUBBLE ON TRIANGLES (DISCONTINUOUS ELEMENT)
219 ! ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
220 !
221  nds(16,1) = 4*nelem
222  nds(16,2) = (9*nelem+nsegbor)/2
223  nds(16,3) = 4
224  nds(16,4) = 3
225  nds(16,5) = 4*nelmax
226  nds(16,6) = 6
227 !
228 !-----------------------------------------------------------------------
229 !
230 ! 17) PIECE-WISE QUADRATIC ELEMENT ON TRIANGLES (DISCONTINUOUS ELEMENT)
231 ! ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
232 !
233  nds(17,1) = 6*nelem
234  nds(17,2) = 6*nelem+3*nds(11,2)
235  nds(17,3) = 6
236  nds(17,4) = 3
237  nds(17,5) = 6*nelmax
238  nds(17,6) = 15
239 !
240 !-----------------------------------------------------------------------
241 !
242 ! 20) P0 ELEMENT ON QUADRILATERALS (3D: SPECIAL CASE)
243 !
244  nds(20,1) = nelem
245 ! NDS(20,2) = ?????
246  nds(20,3) = 1
247  nds(20,4) = 4
248  nds(20,5) = nelmax
249 ! NDS(20,6) = ??????
250 ! LATERAL SIDES OF 3D PRISM MESHES
251 ! IF(NPLAN.GE.2) THEN
252 ! NDS(20,1) = NPTFR*(NPLAN-1)
253 ! NDS(20,5) = NPTFX*(NPLAN-1)
254 ! ENDIF
255 !
256 !-----------------------------------------------------------------------
257 !
258 ! 21) P1 ELEMENT ON QUADRILATERALS (3D: SPECIAL CASE)
259 !
260  nds(21,1) = npoin
261 ! NDS(21,2) = ?????
262  nds(21,3) = 4
263  nds(21,4) = 4
264  nds(21,5) = npmax
265 ! NDS(21,6) = ?????
266 ! LATERAL SIDES OF 3D PRISM MESHES
267 ! IF(NPLAN.GE.2) THEN
268 ! NDS(21,1) = NPTFR*NPLAN
269 ! NDS(21,5) = NPTFX*NPLAN
270 ! ENDIF
271 !
272 !-----------------------------------------------------------------------
273 !
274 ! THREE-DIMENSIONAL ELEMENTS (ONLY FOR 3D MESHES)
275 !
276 !
277 ! 30) T0 ELEMENT ON TETRAHEDRONS
278 !
279  nds(30,1) = nelem
280 ! NDS(30,2) = ?????
281  nds(30,3) = 1
282  nds(30,4) = 4
283  nds(30,5) = nelmax
284 ! NDS(30,6) = ?????
285 !
286 !-----------------------------------------------------------------------
287 !
288 ! 31) T1 ELEMENT ON TETRAHEDRONS
289 !
290 !C 3D MESH
291  nds(31,1) = npoin
292  !SEEMS TO BE "EXACT" IN SCALAR BUT NOT IN PARALLEL...
293  !NDS(31,2) = NELEM + NPOIN + 0.75*NELEB - 0.5*NPTFR
294  nds(31,2) = nelem + 3*npoin + (3*neleb)/2 + nptfr
295  nds(31,3) = 4
296  nds(31,4) = 4
297  nds(31,5) = npmax
298  nds(31,6) = 6
299 !
300 !-----------------------------------------------------------------------
301 !
302 ! IF(NPLAN.GT.1) : AVOIDS ERASING WHAT HAS BEEN DONE BY A PREVIOUS
303 ! CALL BY TELEMAC-3D WHEN COUPLING WITH SISYPHE
304 !
305 !
306  IF(nplan.GT.1) THEN
307 !
308 ! 40) P0 ELEMENT ON PRISMS
309 !
310  nds(40,1) = nelem*(nplan-1)
311 ! NDS(40,2) = ??????????
312  nds(40,3) = 1
313  nds(40,4) = 5
314  nds(40,5) = nelmax*(nplan-1)
315  nds(40,6) = 15
316 !
317 !-----------------------------------------------------------------------
318 !
319 ! 41) P1 ELEMENT ON PRISMS
320 !
321  nds(41,1) = npoin*nplan
322 ! HORIZONTAL SEGMENTS : NDS(11,2)*NPLAN
323 ! VERTICAL SEGMENTS : NPOIN*(NPLAN-1)
324 ! CROSSED SEGMENTS : NDS(11,2)*2*(NPLAN-1)
325  nds(41,2) = nds(11,2)*(3*nplan-2)+npoin*(nplan-1)
326  nds(41,3) = 6
327  nds(41,4) = 5
328  nds(41,5) = npmax*nplan
329  nds(41,6) = 15
330 !
331 !-----------------------------------------------------------------------
332 !
333 ! 50) PRISMS SPLIT IN T0 TETRAHEDRONS
334 !
335  nds(50,1) = nelem*(nplan-1)*3
336 ! NDS(50,2) = ?????
337  nds(50,3) = 1
338  nds(50,4) = 4
339  nds(50,5) = nelmax*(nplan-1)*3
340 ! NDS(50,6) = ?????
341 !
342 !-----------------------------------------------------------------------
343 !
344 ! 51) PRISMS SPLIT IN T1 TETRAHEDRONS
345 !
346  nds(51,1) = npoin*nplan
347 ! HORIZONTAL SEGMENTS : NDS(11,2)*NPLAN
348 ! VERTICAL SEGMENTS : NPOIN*(NPLAN-1)
349 ! CROSSED SEGMENTS : NDS(11,2)*(NPLAN-1)
350  nds(51,2) = nds(11,2)*(2*nplan-1)+npoin*(nplan-1)
351  nds(51,3) = 4
352  nds(51,4) = 4
353  nds(51,5) = npmax*nplan
354  nds(51,6) = 6
355 !
356 !-----------------------------------------------------------------------
357 !
358 ! 60) P0 TRIANGLES ON LATERAL SIDE OF 3D PRISM MESHES
359 ! (PRISM MESH SPLIT IN TETRAHEDRONS)
360 !
361  nds(60,1) = 2*nptfr*(nplan-1)
362 ! NDS(60,2) = ?????
363  nds(60,3) = 1
364  nds(60,4) = 3
365  nds(60,5) = 2*nptfx*(nplan-1)
366 ! NDS(60,6) = ??????
367 !
368 !-----------------------------------------------------------------------
369 !
370 ! 61) P1 TRIANGLES ON LATERAL SIDE OF 3D PRISM MESHES
371 ! (PRISM MESH SPLIT IN TETRAHEDRONS)
372 !
373  nds(61,1) = nptfr*nplan
374 ! NDS(61,2) = ?????????
375  nds(61,3) = 3
376  nds(61,4) = 3
377  nds(61,5) = nptfx*nplan
378  nds(61,6) = 3
379 !
380 !-----------------------------------------------------------------------
381 !
382 ! 70) Q0 QUADRILATERALS ON LATERAL SIDE OF 3D PRISM MESHES
383 !
384  nds(70,1) = nptfr*(nplan-1)
385 ! NDS(70,2) = ?????
386  nds(70,3) = 1
387  nds(70,4) = 4
388  nds(70,5) = nptfx*(nplan-1)
389 ! NDS(70,6) = ??????
390 !
391 !-----------------------------------------------------------------------
392 !
393 ! 71) Q1 QUADRILATERALS ON LATERAL SIDE OF 3D PRISM MESHES
394 !
395  nds(71,1) = nptfr*nplan
396 ! NDS(71,2) = ?????????
397  nds(71,3) = 4
398  nds(71,4) = 4
399  nds(71,5) = nptfx*nplan
400 ! NDS(71,6) = ???????????
401 !
402 ! CORRESPONDS TO : IF(NPLAN.GT.1) THEN
403  ENDIF
404 !
405 !-----------------------------------------------------------------------
406 !
407 ! 80) P0 BOUNDARY TRIANGLES FOR TETRAHEDRONS IN AN UNSTRUCTURED 3D
408 ! MESH
409 !
410  nds(80,1) = neleb
411 ! NDS(80,2) = ?????
412  nds(80,3) = 1
413  nds(80,4) = 3
414  nds(80,5) = neleb
415 ! NDS(80,6) = ??????
416 !
417 !-----------------------------------------------------------------------
418 !
419 ! 81) P1 BOUNDARY TRIANGLES FOR TETRAHEDRONS IN AN UNSTRUCTURED 3D
420 ! MESH
421 !
422  nds(81,1) = nptfr
423 ! A BIT DIFFERENT FROM NDS(11,2)
424 ! ADAPTED TO A SURFACE OF A 3D MESH
425 ! (WHICH IS A "BIDIMENSIONAL" SURFACE)
426  nds(81,2) = (3*neleb)/2 + nptfr
427  nds(81,3) = 3
428  nds(81,4) = 3
429  nds(81,5) = nptfr
430  nds(81,6) = 3
431 !
432 !-----------------------------------------------------------------------
433 !
434  RETURN
435  END
subroutine bief_ininds(NPOIN, NPTFR, NELEM, NPMAX, NPTFX, NELMAX, NPLAN, NSEGBOR, NDS, NELEB)
Definition: bief_ininds.f:7