Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Next: 3.3 Extrusion method (cylindrical topology) Up: 3.2 Multi-block method Prev: 3.2.5 Preprocessor COLIXX Index Contents


3.2.6 Some utilization examples

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 


Modulefpreviousupnextcontentsindex[BIG][Normal][small]
Next: 3.3 Extrusion method (cylindrical topology) Up: 3.2 Multi-block method Prev: 3.2.5 Preprocessor COLIXX Index Contents