bief_ininds.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\bief_ininds.f
00002 !
00080                      SUBROUTINE BIEF_ININDS
00081 !                    **********************
00082 !
00083      &(NPOIN,NPTFR,NELEM,NPMAX,NPTFX,NELMAX,NPLAN,NSEGBOR,NDS,NELEB)
00084 !
00085 !***********************************************************************
00086 ! BIEF   V7P0                                   21/08/2010
00087 !***********************************************************************
00088 !
00089 !
00090 !
00091 !
00092 !
00093 !
00094 !
00095 !
00096 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00097 !| NDS            |<--| ARRAY IN BIEF_MESH STRUCTURE FOR STORING
00098 !|                |   | NUMBERS
00099 !| NELEB          |-->| NUMBER OF BOUNDARY ELEMENTS
00100 !| NELEM          |-->| NUMBER OF ELEMENTS IN THE MESH
00101 !| NELMAX         |-->| MAXIMUM NUMBER OF ELEMENTS IN THE MESH
00102 !| NPLAN          |-->| NUMBER OF PLANES
00103 !| NPMAX          |-->| MAXIMUM NUMBER OF NODES IN THE MESH
00104 !| NPOIN          |-->| NUMBER OF NODES IN THE 2D MESH
00105 !|                |   | (EXCEPT TETRAHEDRA WHERE IT IS THE TOTAL NUMBER)
00106 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
00107 !| NPTFX          |-->| MAXIMUM NUMBER OF BOUNDARY POINTS
00108 !| NSEGBOR        |-->| NUMBER OF BOUNDARY SEGMENTS
00109 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00110 !
00111       IMPLICIT NONE
00112       INTEGER LNG,LU
00113       COMMON/INFO/LNG,LU
00114 !
00115 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00116 !
00117       INTEGER , INTENT(IN)           :: NPOIN
00118       INTEGER , INTENT(IN)           :: NPTFR
00119       INTEGER , INTENT(IN)           :: NELEM
00120       INTEGER , INTENT(IN)           :: NPMAX
00121       INTEGER , INTENT(IN)           :: NPTFX
00122       INTEGER , INTENT(IN)           :: NELMAX
00123       INTEGER , INTENT(IN)           :: NPLAN
00124       INTEGER , INTENT(IN)           :: NSEGBOR
00125       INTEGER , INTENT(IN), OPTIONAL :: NELEB
00126       INTEGER , INTENT(OUT)          :: NDS(0:81,7)
00127 !
00128 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00129 !
00130 !     THE VALUES WHICH WILL NOT BE USED ARE NOT INITIALISED
00131 !
00132 !     0) P0 ELEMENT IN DIMENSION 1
00133 !
00134 !                 NSEGBOR (OVER-DIMENSIONING)
00135       NDS(00,1) = NPTFR
00136 !     NDS(00,2) = ?????
00137       NDS(00,3) = 1
00138 !     NDS(00,4) = ?????
00139       NDS(00,5) = NPTFX
00140 !     NDS(00,6) = ?????
00141 !
00142 !-----------------------------------------------------------------------
00143 !
00144 !     1) P1 ELEMENT IN DIMENSION 1
00145 !
00146       NDS(01,1) = NPTFR
00147       NDS(01,2) = NPTFR ! = NSEGBOR
00148       NDS(01,3) = 2
00149 !     NDS(01,4) = ?????
00150       NDS(01,5) = NPTFX
00151       NDS(01,6) = 1
00152 !
00153 !-----------------------------------------------------------------------
00154 !
00155 !     2) QUADRATIC ELEMENT IN DIMENSION 1
00156 !
00157 !                 NPTFR+NSEGBOR (OVER-DIMENSIONING)
00158       NDS(02,1) = 2*NPTFR
00159 !     NDS(02,2) = ?????
00160       NDS(02,3) = 3
00161 !     NDS(02,4) = ?????
00162       NDS(02,5) = 2*NPTFX
00163 !     NDS(02,6) = ?????
00164 !
00165 !     NOTE : THE QUADRATIC BOUNDARY POINT OF SEGMENT K WILL HAVE
00166 !            THE NUMBER K+NPTFR, THUS WE HAVE HERE TO DECLARE
00167 !            NDS(02,1) AS 2*NPTFR, THOUGH IN PARALLEL THERE MAY
00168 !            EXISTING POINT K WITHOUT SEGMENT K IN THE DOMAIN
00169 !
00170 !
00171 !-----------------------------------------------------------------------
00172 !
00173 !     10) P0 ELEMENT ON TRIANGLES
00174 !
00175       NDS(10,1) = NELEM
00176 !     NDS(10,2) = ?????
00177       NDS(10,3) = 1
00178       NDS(10,4) = 3
00179       NDS(10,5) = NELMAX
00180 !     NDS(10,6) = ??????
00181 !
00182 !-----------------------------------------------------------------------
00183 !
00184 !     11) P1 ELEMENT ON TRIANGLES
00185 !
00186       NDS(11,1) = NPOIN
00187       NDS(11,2) = (3*NELEM+NSEGBOR)/2
00188       NDS(11,3) = 3
00189       NDS(11,4) = 3
00190       NDS(11,5) = NPMAX
00191       NDS(11,6) = 3
00192 !
00193 !-----------------------------------------------------------------------
00194 !
00195 !     12) QUASI-BUBBLE ELEMENT ON TRIANGLES
00196 !
00197       NDS(12,1) = NPOIN+NELEM
00198       NDS(12,2) = (9*NELEM+NSEGBOR)/2
00199       NDS(12,3) = 4
00200       NDS(12,4) = 3
00201       NDS(12,5) = NPMAX+NELMAX
00202       NDS(12,6) = 6
00203 !
00204 !-----------------------------------------------------------------------
00205 !
00206 !     13) QUADRATIC ELEMENT ON TRIANGLES
00207 !
00208 !     NUMBER OF DDL = NUMBER OF NODES + NUMBER OF SEGMENTS OF P1
00209       NDS(13,1) = NDS(11,1)+NDS(11,2)
00210 !     TOTAL NUMBER OF SEGMENTS (3 PER LINEAR SEGMENT +
00211 !                               6 INTERIOR SEGMENTS FOR EACH ELEMENT)
00212       NDS(13,2) = 6*NELEM+3*NDS(11,2)
00213       NDS(13,3) = 6
00214       NDS(13,4) = 3
00215       NDS(13,5) = NPMAX+(3*NELMAX+NSEGBOR)/2
00216       NDS(13,6) = 15
00217 !
00218 !-----------------------------------------------------------------------
00219 !
00220 !     14) P1-ISO P1 ELEMENT ON TRIANGLES
00221 !
00222 !     NUMBER OF DDL = NUMBER OF NODES + NUMBER OF SEGMENTS OF P1
00223       NDS(14,1) = NDS(11,1)+NDS(11,2)
00224 !     TOTAL NUMBER OF SEGMENTS (3 PER LINEAR SEGMENT +
00225 !                               3 INTERIOR SEGMENTS FOR EACH ELEMENT)
00226       NDS(14,2) = 3*NELEM+3*NDS(11,2)
00227       NDS(14,3) = 6
00228       NDS(14,4) = 3
00229       NDS(14,5) = NPMAX+(3*NELMAX+NSEGBOR)/2
00230 !     3 LINEAR SEGMENTS FOLLOWED BY THE 9 P1-ISO P1
00231       NDS(14,6) = 12
00232 !     NDS(10,6) = ??????
00233 !
00234 !-----------------------------------------------------------------------
00235 !
00236 !     15) PIECE-WISE P1 ELEMENT ON TRIANGLES (DISCONTINUOUS ELEMENT)
00237 !         ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
00238 !
00239       NDS(15,1) = 3*NELEM
00240       NDS(15,2) = (3*NELEM+NSEGBOR)/2
00241       NDS(15,3) = 3
00242       NDS(15,4) = 3
00243       NDS(15,5) = 3*NELMAX
00244       NDS(15,6) = 3
00245 !
00246 !-----------------------------------------------------------------------
00247 !
00248 !     16) PIECE-WISE QUASI-BUBBLE ON TRIANGLES (DISCONTINUOUS ELEMENT)
00249 !         ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
00250 !
00251       NDS(16,1) = 4*NELEM
00252       NDS(16,2) = (9*NELEM+NSEGBOR)/2
00253       NDS(16,3) = 4
00254       NDS(16,4) = 3
00255       NDS(16,5) = 4*NELMAX
00256       NDS(16,6) = 6
00257 !
00258 !-----------------------------------------------------------------------
00259 !
00260 !     17) PIECE-WISE QUADRATIC ELEMENT ON TRIANGLES (DISCONTINUOUS ELEMENT)
00261 !         ONLY NUMBER OF POINTS REALLY LOOKED AT, THE REST UNSURE
00262 !
00263       NDS(17,1) = 6*NELEM
00264       NDS(17,2) = 6*NELEM+3*NDS(11,2)
00265       NDS(17,3) = 6
00266       NDS(17,4) = 3
00267       NDS(17,5) = 6*NELMAX
00268       NDS(17,6) = 15
00269 !
00270 !-----------------------------------------------------------------------
00271 !
00272 !     20) P0 ELEMENT ON QUADRILATERALS (3D: SPECIAL CASE)
00273 !
00274       NDS(20,1) = NELEM
00275 !     NDS(20,2) = ?????
00276       NDS(20,3) = 1
00277       NDS(20,4) = 4
00278       NDS(20,5) = NELMAX
00279 !     NDS(20,6) = ??????
00280 !     LATERAL SIDES OF 3D PRISM MESHES
00281 !     IF(NPLAN.GE.2) THEN
00282 !       NDS(20,1) = NPTFR*(NPLAN-1)
00283 !       NDS(20,5) = NPTFX*(NPLAN-1)
00284 !     ENDIF
00285 !
00286 !-----------------------------------------------------------------------
00287 !
00288 !     21) P1 ELEMENT ON QUADRILATERALS (3D: SPECIAL CASE)
00289 !
00290       NDS(21,1) = NPOIN
00291 !     NDS(21,2) = ?????
00292       NDS(21,3) = 4
00293       NDS(21,4) = 4
00294       NDS(21,5) = NPMAX
00295 !     NDS(21,6) = ?????
00296 !     LATERAL SIDES OF 3D PRISM MESHES
00297 !     IF(NPLAN.GE.2) THEN
00298 !       NDS(21,1) = NPTFR*NPLAN
00299 !       NDS(21,5) = NPTFX*NPLAN
00300 !     ENDIF
00301 !
00302 !-----------------------------------------------------------------------
00303 !
00304 !     THREE-DIMENSIONAL ELEMENTS (ONLY FOR 3D MESHES)
00305 !
00306 !
00307 !     30) T0 ELEMENT ON TETRAHEDRONS
00308 !
00309       NDS(30,1) = NELEM
00310 !     NDS(30,2) = ?????
00311       NDS(30,3) = 1
00312       NDS(30,4) = 4
00313       NDS(30,5) = NELMAX
00314 !     NDS(30,6) = ?????
00315 !
00316 !-----------------------------------------------------------------------
00317 !
00318 !     31) T1 ELEMENT ON TETRAHEDRONS
00319 !
00320 !C 3D MESH
00321       NDS(31,1) = NPOIN
00322       !SEEMS TO BE "EXACT" IN SCALAR BUT NOT IN PARALLEL...
00323       !NDS(31,2) = NELEM + NPOIN + 0.75*NELEB - 0.5*NPTFR
00324       NDS(31,2) = NELEM + 3*NPOIN + (3*NELEB)/2 + NPTFR
00325       NDS(31,3) = 4
00326       NDS(31,4) = 4
00327       NDS(31,5) = NPMAX
00328       NDS(31,6) = 6
00329 !
00330 !-----------------------------------------------------------------------
00331 !
00332 !     IF(NPLAN.GT.1) : AVOIDS ERASING WHAT HAS BEEN DONE BY A PREVIOUS
00333 !                      CALL BY TELEMAC-3D WHEN COUPLING WITH SISYPHE
00334 !
00335 !
00336       IF(NPLAN.GT.1) THEN
00337 !
00338 !     40) P0 ELEMENT ON PRISMS
00339 !
00340       NDS(40,1) = NELEM*(NPLAN-1)
00341 !     NDS(40,2) = ??????????
00342       NDS(40,3) = 1
00343       NDS(40,4) = 5
00344       NDS(40,5) = NELMAX*(NPLAN-1)
00345       NDS(40,6) = 15
00346 !
00347 !-----------------------------------------------------------------------
00348 !
00349 !     41) P1 ELEMENT ON PRISMS
00350 !
00351       NDS(41,1) = NPOIN*NPLAN
00352 !     HORIZONTAL SEGMENTS : NDS(11,2)*NPLAN
00353 !     VERTICAL SEGMENTS   : NPOIN*(NPLAN-1)
00354 !     CROSSED SEGMENTS    : NDS(11,2)*2*(NPLAN-1)
00355       NDS(41,2) = NDS(11,2)*(3*NPLAN-2)+NPOIN*(NPLAN-1)
00356       NDS(41,3) = 6
00357       NDS(41,4) = 5
00358       NDS(41,5) = NPMAX*NPLAN
00359       NDS(41,6) = 15
00360 !
00361 !-----------------------------------------------------------------------
00362 !
00363 !     50) PRISMS SPLIT IN T0 TETRAHEDRONS
00364 !
00365       NDS(50,1) = NELEM*(NPLAN-1)*3
00366 !     NDS(50,2) = ?????
00367       NDS(50,3) = 1
00368       NDS(50,4) = 4
00369       NDS(50,5) = NELMAX*(NPLAN-1)*3
00370 !     NDS(50,6) = ?????
00371 !
00372 !-----------------------------------------------------------------------
00373 !
00374 !     51) PRISMS SPLIT IN T1 TETRAHEDRONS
00375 !
00376       NDS(51,1) = NPOIN*NPLAN
00377 !     HORIZONTAL SEGMENTS : NDS(11,2)*NPLAN
00378 !     VERTICAL SEGMENTS   : NPOIN*(NPLAN-1)
00379 !     CROSSED SEGMENTS    : NDS(11,2)*(NPLAN-1)
00380       NDS(51,2) = NDS(11,2)*(2*NPLAN-1)+NPOIN*(NPLAN-1)
00381       NDS(51,3) = 4
00382       NDS(51,4) = 4
00383       NDS(51,5) = NPMAX*NPLAN
00384       NDS(51,6) = 6
00385 !
00386 !-----------------------------------------------------------------------
00387 !
00388 !     60) P0 TRIANGLES ON LATERAL SIDE OF 3D PRISM MESHES
00389 !         (PRISM MESH SPLIT IN TETRAHEDRONS)
00390 !
00391       NDS(60,1) = 2*NPTFR*(NPLAN-1)
00392 !     NDS(60,2) = ?????
00393       NDS(60,3) = 1
00394       NDS(60,4) = 3
00395       NDS(60,5) = 2*NPTFX*(NPLAN-1)
00396 !     NDS(60,6) = ??????
00397 !
00398 !-----------------------------------------------------------------------
00399 !
00400 !     61) P1 TRIANGLES ON LATERAL SIDE OF 3D PRISM MESHES
00401 !         (PRISM MESH SPLIT IN TETRAHEDRONS)
00402 !
00403       NDS(61,1) = NPTFR*NPLAN
00404 !     NDS(61,2) = ?????????
00405       NDS(61,3) = 3
00406       NDS(61,4) = 3
00407       NDS(61,5) = NPTFX*NPLAN
00408       NDS(61,6) = 3
00409 !
00410 !-----------------------------------------------------------------------
00411 !
00412 !     70) Q0 QUADRILATERALS ON LATERAL SIDE OF 3D PRISM MESHES
00413 !
00414       NDS(70,1) = NPTFR*(NPLAN-1)
00415 !     NDS(70,2) = ?????
00416       NDS(70,3) = 1
00417       NDS(70,4) = 4
00418       NDS(70,5) = NPTFX*(NPLAN-1)
00419 !     NDS(70,6) = ??????
00420 !
00421 !-----------------------------------------------------------------------
00422 !
00423 !     71) Q1 QUADRILATERALS ON LATERAL SIDE OF 3D PRISM MESHES
00424 !
00425       NDS(71,1) = NPTFR*NPLAN
00426 !     NDS(71,2) = ?????????
00427       NDS(71,3) = 4
00428       NDS(71,4) = 4
00429       NDS(71,5) = NPTFX*NPLAN
00430 !     NDS(71,6) = ???????????
00431 !
00432 !     CORRESPONDS TO : IF(NPLAN.GT.1) THEN
00433       ENDIF
00434 !
00435 !-----------------------------------------------------------------------
00436 !
00437 !     80) P0 BOUNDARY TRIANGLES FOR TETRAHEDRONS IN AN UNSTRUCTURED 3D
00438 !         MESH
00439 !
00440       NDS(80,1) = NELEB
00441 !     NDS(80,2) = ?????
00442       NDS(80,3) = 1
00443       NDS(80,4) = 3
00444       NDS(80,5) = NELEB
00445 !     NDS(80,6) = ??????
00446 !
00447 !-----------------------------------------------------------------------
00448 !
00449 !     81) P1 BOUNDARY TRIANGLES FOR TETRAHEDRONS IN AN UNSTRUCTURED 3D
00450 !         MESH
00451 !
00452       NDS(81,1) = NPTFR
00453 !     A BIT DIFFERENT FROM NDS(11,2)
00454 !     ADAPTED TO A SURFACE OF A 3D MESH
00455 !     (WHICH IS A "BIDIMENSIONAL" SURFACE)
00456       NDS(81,2) = (3*NELEB)/2 + NPTFR
00457       NDS(81,3) = 3
00458       NDS(81,4) = 3
00459       NDS(81,5) = NPTFR
00460       NDS(81,6) = 3
00461 !
00462 !-----------------------------------------------------------------------
00463 !
00464       RETURN
00465       END

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