Next: 3.3 Extrusion method (cylindrical topology)
Up: 3.2 Multi-block method
Prev: 3.2.5 Preprocessor COLIXX
Index
Contents
The following examples are given:
The calling program of COLIB2, for a pentahedral element, is given below. Figure 3.3 shows
the mesh obtained for
and
, where
and
designate the number of points on the edges of the
triangular faces and the number of these points on the other edges, respectively.
C ++++++++++++++++++++++++++++++++++++++++++++++ C TEST COLIBR ( COLIB2 WITH DATA FILE ) C ( A 2 DIMENSIONAL EXAMPLE ) C ++++++++++++++++++++++++++++++++++++++++++++++ PARAMETER ( LM = 300000 ) COMMON M(LM) C IMPRE = -2 NNN = 0 CALL INITIS(M,LM,IMPRE,NNN) NFNOPO = 10 CALL TRUNIT (NFNOPO) CALL OUVRIS(NFNOPO,'tunnel.nopo','UNKNOWN,UNFORMATTED',2000000) C NFDATA = 11 CALL TRUNIT (NFDATA) CALL OUVRIS(NFDATA,'tunnel.data','UNKNOWN,FORMATTED',2000000) C CALL LECTEU(NFDATA) CALL COLIBR(M,NFNOPO,NINOPO) STOP END
Figure 3.3: Mesh of a pentahedron via COLIB2
The calling program for COLIBR is shown below for the case corresponding to a 2D mesh construction from 17 triangular and quadrilateral blocks. The resulting mesh is shown in figure 3.4.
C ++++++++++++++++++++++++++++++++++++++++++++++ C TEST COLIBR ( COLIB2 WITH DATA FILE ) C ( A 2 DIMENSIONAL EXAMPLE ) C ++++++++++++++++++++++++++++++++++++++++++++++ PARAMETER ( LM = 300000 ) COMMON M(LM) C IMPRE = -2 NNN = 0 CALL INITIS(M,LM,IMPRE,NNN) NFNOPO = 10 CALL TRUNIT (NFNOPO) CALL OUVRIS(NFNOPO,'tunnel.nopo','UNKNOWN,UNFORMATTED',2000000) C NFDATA = 11 CALL TRUNIT (NFDATA) CALL OUVRIS(NFDATA,'tunnel.data','UNKNOWN,FORMATTED',2000000) C CALL LECTEU(NFDATA) CALL COLIBR(M,NFNOPO,NINOPO) STOP END
The data file required is the following:
$ NBS NA NBGRO IMPRE NBFR NDIM $ 19 35 17 2 0 2 $ NOP NOREF X Y Z ? $ 1 1 0.000000E+00 0.000000E+00 0.000000E+00 2 2 0.110000E+02 0.000000E+00 0.000000E+00 3 3 0.110000E+02 0.900000E+01 0.000000E+00 4 4 0.110000E+02 0.180000E+02 0.000000E+00 5 5 0.200000E+01 0.180000E+02 0.000000E+00 6 6 0.000000E+00 0.180000E+02 0.000000E+00 7 7 0.000000E+00 0.400000E+01 0.000000E+00 8 8 0.800000E+01 0.400000E+01 0.000000E+00 9 9 0.800000E+01 0.800000E+01 0.000000E+00 10 10 0.600000E+01 0.110000E+02 0.000000E+00 11 11 0.200000E+01 0.110000E+02 0.000000E+00 12 12 0.000000E+00 0.800000E+01 0.000000E+00 13 13 0.200000E+01 0.600000E+01 0.000000E+00 14 14 0.550000E+01 0.600000E+01 0.000000E+00 15 15 0.550000E+01 0.750000E+01 0.000000E+00 16 16 0.490000E+01 0.900000E+01 0.000000E+00 17 17 0.290000E+01 0.910000E+01 0.000000E+00 18 18 0.200000E+01 0.750000E+01 0.000000E+00 19 19 0.400000E+01 0.750000E+01 0.000000E+00 $ NA IEX1 IEX2 IDEC NP NOREF $ 1 1 2 0 5 1 2 2 3 0 5 1 3 3 4 0 5 1 4 4 5 0 5 1 5 5 6 0 5 1 6 6 12 0 4 1 7 12 7 0 5 2 8 7 1 0 4 1 9 7 8 0 5 2 10 8 2 0 4 0 11 8 9 0 5 2 12 9 10 0 5 2 13 9 3 0 4 0 14 10 4 0 4 0 15 10 11 0 5 2 16 12 11 0 5 2 17 11 5 0 4 0 18 13 7 0 5 0 19 14 8 0 5 0 20 15 9 0 5 0 21 16 10 0 5 0 22 17 11 0 5 0 23 18 12 0 5 0 24 13 14 0 5 3 25 14 15 0 5 3 26 15 16 1 5 3 5.45 7.75 0. 5.4 8. 0. 5.3 8.25 0. 5.2 8.50 0. 5.1 8.75 0. 27 16 17 1 5 3 4.5 9.3 0. 4.25 9.45 0. 4.0 9.5 0. 3.5 9.45 0. 3.25 9.3 0. 28 17 18 1 5 3 2.60 8.75 0. 2.40 8.50 0. 2.25 8.25 0. 2.10 8.0 0. 2.05 7.75 0. 29 18 13 0 5 3 30 19 13 0 5 0 31 19 14 0 5 0 32 19 15 0 5 0 33 19 16 0 5 0 34 19 17 0 5 0 35 19 18 0 5 0 $ COARSE ELEMENTS $ $ I NCGE VERTICES NCGE NDSD $ 1 4 1 2 8 7 4 1 2 4 2 3 9 8 4 1 3 4 3 4 10 9 4 1 4 4 10 4 5 11 4 1 5 4 11 5 6 12 4 1 6 4 7 13 18 12 4 2 7 4 7 8 14 13 4 2 8 4 8 14 15 9 4 2 9 4 15 9 10 16 4 2 10 4 16 10 11 17 4 2 11 4 18 17 11 12 4 2 12 3 13 14 19 3 3 13 3 14 15 19 3 3 14 3 15 16 19 3 3 15 3 16 17 19 3 3 16 3 19 18 17 3 3 17 3 13 19 18 3 3
Figure 3.4: 2D mesh via COLIBR
The calling program for COLIBR is given below for the case corresponding to the construction of a 3D mesh from 12 pentahedral and hexahedral blocks. The resulting mesh is shown in figure 3.5.
C ++++++++++++++++++++++++++++++++++++++++++++++ C TEST COLIBR ( COLIB2 WITH DATA FILE ) C ( A 3 DIMENSIONAL EXAMPLE ) C ++++++++++++++++++++++++++++++++++++++++++++++ PARAMETER ( LM = 300000 ) COMMON M(LM) C IMPRE = -2 NNN = 0 CALL INITIS(M,LM,IMPRE,NNN) NFNOPO = 10 CALL TRUNIT (NFNOPO) CALL OUVRIS(NFNOPO,'parttun.nopo','UNKNOWN,UNFORMATTED',2000000) C NFDATA = 11 CALL TRUNIT (NFDATA) CALL OUVRIS(NFDATA,'parttun.data','UNKNOWN,FORMATTED',2000000) C CALL LECTEU(NFDATA) CALL COLIBR(M,NFNOPO,NINOPO) STOP END
The data file required is the following:
$ NBS NA NBGRO IMPRE NBFR NDIM $ 26 61 12 2 0 3 $ NOP NOREF X Y Z ? $ 1 7 0.000000E+00 0.400000E+01 0.000000E+00 2 8 0.800000E+01 0.400000E+01 0.000000E+00 3 9 0.800000E+01 0.800000E+01 0.000000E+00 4 10 0.600000E+01 0.110000E+02 0.000000E+00 5 11 0.200000E+01 0.110000E+02 0.000000E+00 6 12 0.000000E+00 0.800000E+01 0.000000E+00 7 13 0.200000E+01 0.600000E+01 0.000000E+00 8 14 0.550000E+01 0.600000E+01 0.000000E+00 9 15 0.550000E+01 0.750000E+01 0.000000E+00 10 16 0.490000E+01 0.900000E+01 0.000000E+00 11 17 0.290000E+01 0.910000E+01 0.000000E+00 12 18 0.200000E+01 0.750000E+01 0.000000E+00 13 19 0.400000E+01 0.750000E+01 0.000000E+00 14 7 0.000000E+00 0.400000E+01 1.000000E+01 15 8 0.800000E+01 0.400000E+01 1.000000E+01 16 9 0.800000E+01 0.800000E+01 1.000000E+01 17 10 0.600000E+01 0.110000E+02 1.000000E+01 18 11 0.200000E+01 0.110000E+02 1.000000E+01 19 12 0.000000E+00 0.800000E+01 1.000000E+01 20 13 0.200000E+01 0.600000E+01 1.000000E+01 21 14 0.550000E+01 0.600000E+01 1.000000E+01 22 15 0.550000E+01 0.750000E+01 1.000000E+01 23 16 0.490000E+01 0.900000E+01 1.000000E+01 24 17 0.290000E+01 0.910000E+01 1.000000E+01 25 18 0.200000E+01 0.750000E+01 1.000000E+01 26 19 0.400000E+01 0.750000E+01 1.000000E+01 $ NA IEX1 IEX2 IDEC NP NOREF $ 1 6 1 0 5 2 2 1 2 0 5 2 3 2 3 0 5 2 4 3 4 0 5 2 5 4 5 0 5 2 6 6 5 0 5 2 7 7 1 0 5 0 8 8 2 0 5 0 9 9 3 0 5 0 10 10 4 0 5 0 11 11 5 0 5 0 12 12 6 0 5 0 13 7 8 0 5 3 14 8 9 0 5 3 15 9 10 1 5 3 5.45 7.75 0. 5.4 8. 0. 5.3 8.25 0. 5.2 8.50 0. 5.1 8.75 0. 16 10 11 1 5 3 4.5 9.3 0. 4.25 9.45 0. 4.0 9.5 0. 3.5 9.45 0. 3.25 9.3 0. 17 11 12 1 5 3 2.60 8.75 0. 2.40 8.50 0. 2.25 8.25 0. 2.10 8.0 0. 2.05 7.75 0. 18 12 7 0 5 3 19 13 7 0 5 0 20 13 8 0 5 0 21 13 9 0 5 0 22 13 10 0 5 0 23 13 11 0 5 0 24 13 12 0 5 0 25 19 14 0 5 2 26 14 15 0 5 2 27 15 16 0 5 2 28 16 17 0 5 2 29 17 18 0 5 2 30 19 18 0 5 2 31 20 14 0 5 0 32 21 15 0 5 0 33 22 16 0 5 0 34 23 17 0 5 0 35 24 18 0 5 0 36 25 19 0 5 0 37 20 21 0 5 3 38 21 22 0 5 3 39 22 23 1 5 3 5.45 7.75 10. 5.4 8. 10. 5.3 8.25 10. 5.2 8.50 10. 5.1 8.75 10. 40 23 24 1 5 3 4.5 9.3 10. 4.25 9.45 10. 4.0 9.5 10. 3.5 9.45 10. 3.25 9.3 10. 41 24 25 1 5 3 2.60 8.75 10. 2.40 8.50 10. 2.25 8.25 10. 2.10 8.0 10. 2.05 7.75 10. 42 25 20 0 5 3 43 26 20 0 5 0 44 26 21 0 5 0 45 26 22 0 5 0 46 26 23 0 5 0 47 26 24 0 5 0 48 26 25 0 5 0 49 1 14 0 2 0 50 2 15 0 2 0 51 3 16 0 2 0 52 4 17 0 2 0 53 5 18 0 2 0 54 6 19 0 2 0 55 7 20 0 2 0 56 8 21 0 2 0 57 9 22 0 2 0 58 10 23 0 2 0 59 11 24 0 2 0 60 12 25 0 2 0 61 13 26 0 2 0 $ COARSE ELEMENTS $ $ I NCGE VERTICES NCGE NDSD $ 1 7 1 2 8 7 14 15 21 20 7 1 2 7 2 3 9 8 15 16 22 21 7 1 3 7 3 4 10 9 16 17 23 22 7 1 4 7 10 11 5 4 23 24 18 17 7 1 5 7 5 6 12 11 18 19 25 24 7 1 6 7 1 7 12 6 14 20 25 19 7 1 7 6 7 8 13 20 21 26 6 2 8 6 8 13 9 21 26 22 6 2 9 6 13 9 10 26 22 23 6 2 10 6 13 10 11 26 23 24 6 2 11 6 13 11 12 26 24 25 6 2 12 6 7 13 12 20 26 25 6 2
Figure 3.5: 3D mesh via COLIBR
The following example illustrates the utilization of COLIBH for the case where the data is calculated, in the program, from a reduced set of parameters. The calling program of the module, which uses 2 subroutines, is given below, followed by a plot of the resulting mesh in figure 3.6.
C ++++++++++++++++++++++++++++++++++++++++++++++ C TEST COLIBH ( COLIB2 WITH A SINGLE HEXAHEDRA ) C ----------- EXAMPLE OF THE JUNCTION ( PART 1 ) C ++++++++++++++++++++++++++++++++++++++++++++++ PARAMETER ( LM = 300000 ) COMMON M(LM) INTEGER IDECAR(12),NBPARE(12) REAL XYZ(3,8),XYZINT(3,200) C IMPRE = 3 NNN = 0 CALL INITIS(M,LM,IMPRE,NNN) C --- THE O.D.S. NOPO --- NFNOPO = 10 NINOPO = 0 CALL TRUNIT (NFNOPO) CALL OUVRIS(NFNOPO,'joint1.nopo','UNKNOWN,UNFORMATTED',2000000) C --- THE REFERENCES AND THE SUB-DOMAIN --- NDSDE = 1 IREF = 1 C ------------------------ C --- THE GEOMETRY --- C ------------------------ DO 1 I=1,3 DO 1 J=1,8 XYZ(I,J) = 0. 1 CONTINUE C --- THE DEFINITION PARAMETERS : RPI = 3.14159265 A30 = 30. * RPI / 180. S30 = SIN(A30) C30 = COS(A30) R03 = 0.3 X03 = 0. Y03 = 0. R06 = 0.6 X06 = 0. Y06 = 0. BB = 1.2 C --- THE BASIS : XYZ(1,1) = R06 * S30 XYZ(1,2) = R06 * S30 XYZ(1,3) = R03 * S30 XYZ(1,4) = R03 * S30 XYZ(2,1) = - R06 * C30 XYZ(2,2) = R06 * C30 XYZ(2,3) = R03 * C30 XYZ(2,4) = - R03 * C30 C --- THE TOP : DO 2 I=1,2 DO 2 J=1,4 XYZ(I,J+4) = XYZ(I,J) 2 CONTINUE DO 3 J=1,4 AA = 1.0 + 0.3 * XYZ(1,J) / 1.7 CALL SPELLI(AA,BB,XYZ(2,J+4),XYZ(3,J+4)) 3 CONTINUE C --- THE SIDES : NPI = 5 DO 4 J=1,12 NBPARE(J) = NPI IDECAR(J) = 0 4 CONTINUE NBPARE(2) = 3 NBPARE(4) = 3 NBPARE(10) = 3 NBPARE(12) = 3 C IDECAR(1) = 1 IDECAR(3) = 1 IDECAR(9) = 1 IDECAR(11) = 1 C --- THE INTERMEDIARY POINTS : C EDGE 1 : IEX11 = 1 IEX21 = 2 D1 = ( XYZ(2,IEX21) - XYZ(2,IEX11) ) / ( NPI + 1. ) C EDGE 3 : IEX13 = 3 IEX23 = 4 D3 = ( XYZ(2,IEX23) - XYZ(2,IEX13) ) / ( NPI + 1. ) C Y DO 5 J=1,NPI XYZINT(2,J) = XYZ(2,IEX11) + J * D1 XYZINT(2,J+NPI) = XYZ(2,IEX13) + J * D3 5 CONTINUE C X = FUNCTION OF Y DO 6 J=1,NPI CALL SPCERC(R06,X06,Y06,XYZINT(2,J),XYZINT(1,J)) CALL SPCERC(R03,X03,Y03,XYZINT(2,J+NPI),XYZINT(1,J+NPI)) 6 CONTINUE C SUPPORT ON THE EDGES 9 AND 11 : DO 7 J=1,NPI XYZINT(1,J+2*NPI) = XYZINT(1,J) XYZINT(1,J+3*NPI) = XYZINT(1,J+NPI) XYZINT(2,J+2*NPI) = XYZINT(2,J) XYZINT(2,J+3*NPI) = XYZINT(2,J+NPI) 7 CONTINUE C Z DO 8 J=1,4*NPI XYZINT(3,J) = 0. 8 CONTINUE C Z ( EDGES 9 AND 11 ) DO 9 J=1,2*NPI AA = 1.0 + 0.3 * XYZINT(1,J+2*NPI) / 1.7 CALL SPELLI(AA,BB,XYZINT(2,J+2*NPI),XYZINT(3,J+2*NPI)) 9 CONTINUE C --- CALL THE MODULE --- CALL COLIBH(M,NFNOPO,NINOPO,XYZ,IDECAR,NBPARE,XYZINT,IREF,NDSDE) STOP END C ++++++++++++++++++++++++++++++++++++++++++++++ C SPCERC C ++++++++++++++++++++++++++++++++++++++++++++++ SUBROUTINE SPCERC(R,A,B,Y,X) RES = R*R - ( Y - B ) * ( Y - B ) X = A + SQRT( RES ) END C ++++++++++++++++++++++++++++++++++++++++++++++ C SPELLI C ++++++++++++++++++++++++++++++++++++++++++++++ SUBROUTINE SPELLI(A,B,Y,Z) Z = SQRT( 1. - Y*Y / ( A*A ) ) END
Figure 3.6: 3D mesh via COLIBH
The following example results from several calls to COLIBH, gluing the meshes obtained together, and different geometric manipulations of the latter (symmetries, rotations, etc., and a final gluing together).
Figure 3.7: Mesh of a junction via COLIBH and geometric transformations