File: N:\mfix\model\cartesian_grid\stl_mod.f

1           MODULE stl
2     
3           Use param1, only: zero
4     
5     !     Maximum number of facets that can be read
6           INTEGER, PARAMETER          :: DIM_STL = 10000000   !10 Million
7     !     Number of facets
8           INTEGER                     :: N_FACETS
9           INTEGER, PARAMETER :: WEST_FACEID = 9000000
10           INTEGER, PARAMETER :: EAST_FACEID = 9000001
11           INTEGER, PARAMETER :: SOUTH_FACEID = 9000002
12           INTEGER, PARAMETER :: NORTH_FACEID = 9000003
13           INTEGER, PARAMETER :: BOTTOM_FACEID = 9000004
14           INTEGER, PARAMETER :: TOP_FACEID = 9000005
15     
16     !     Number of facets for des. This could be a diiferent number from
17     ! N_FACETS if the outer boundary is triangulated here
18           INTEGER                     :: N_FACETS_DES
19     !     Vertex Coordinates X ,Y and Z
20           DOUBLE PRECISION, DIMENSION(3,3,DIM_STL) :: VERTEX
21     !     Face normal vector (normalized)
22           DOUBLE PRECISION, DIMENSION(3,DIM_STL) :: NORM_FACE
23     !     TRANSLATION COMPONENTS
24           DOUBLE PRECISION :: TX_STL,TY_STL,TZ_STL
25           DOUBLE PRECISION :: TX_MSH,TY_MSH,TZ_MSH
26     !     SCALING FACTOR
27           DOUBLE PRECISION :: SCALE_STL
28           DOUBLE PRECISION :: SCALE_MSH
29     !     RANGE OF STL FILE:
30           DOUBLE PRECISION :: XMIN_STL,XMAX_STL
31           DOUBLE PRECISION :: YMIN_STL,YMAX_STL
32           DOUBLE PRECISION :: ZMIN_STL,ZMAX_STL
33           DOUBLE PRECISION :: XMIN_MSH,XMAX_MSH
34           DOUBLE PRECISION :: YMIN_MSH,YMAX_MSH
35           DOUBLE PRECISION :: ZMIN_MSH,ZMAX_MSH
36     !     VALUE OF F_STL OUTSIDE OF STL BOUNDING BOX
37           DOUBLE PRECISION :: OUT_STL_VALUE
38           DOUBLE PRECISION :: OUT_MSH_VALUE
39     !     SMALLEST ANGLE FOR DETECTION OF SMALL TRIANGLES
40           DOUBLE PRECISION :: STL_SMALL_ANGLE
41           DOUBLE PRECISION :: MSH_SMALL_ANGLE
42     !     DIRECTION OF RAY TRACED TO DETERMINE WHETHER A POINT IS INSIDE/OUTSIDE
43           CHARACTER(LEN=3) :: RAY_DIR
44     !     Tolerance for polygone edge detection
45           DOUBLE PRECISION :: TOL_STL
46           DOUBLE PRECISION :: TOL_MSH
47           DOUBLE PRECISION :: TOL_STL_DP
48     !     Boundary condition ID
49           INTEGER :: STL_BC_ID
50     
51           INTEGER, DIMENSION(DIM_STL) :: BC_ID_STL_FACE
52     
53     !     Maximum number of facets per cell. The arrays below are used
54     ! to define cut-cells under the CG modules
55           INTEGER          :: DIM_FACETS_PER_CELL
56           INTEGER, DIMENSION (:), ALLOCATABLE ::  N_FACET_AT
57           INTEGER, DIMENSION (:,:), ALLOCATABLE ::  LIST_FACET_AT
58     
59     ! List of facets intersecting each DES grid cell
60           TYPE FACETS_TO_DG
61              INTEGER :: COUNT
62              INTEGER, ALLOCATABLE :: ID(:)
63              INTEGER, ALLOCATABLE :: DIR(:)
64              DOUBLE PRECISION, ALLOCATABLE :: MIN(:)
65              DOUBLE PRECISION, ALLOCATABLE :: MAX(:)
66           END TYPE FACETS_TO_DG
67     
68     ! Start/End positions for the different kinds of STLs
69           INTEGER, PARAMETER :: ALL_STL = 0
70           INTEGER, PARAMETER :: BASE_STL = 1
71           INTEGER, PARAMETER :: BCWALLS_STL = 2
72           INTEGER, PARAMETER :: IMPRMBL_STL = 3
73           INTEGER, PARAMETER :: DEFAULT_STL = 4
74           INTEGER :: STL_START(4), STL_END(4)
75     
76           TYPE (FACETS_TO_DG), ALLOCATABLE ::  FACETS_AT_DG(:)
77           CHARACTER(LEN=3) :: CAD_PROPAGATE_ORDER
78     
79           END MODULE stl
80