MFIX  2016-1
quadric_mod.f
Go to the documentation of this file.
1  MODULE quadric
2 
3 ! Maximum of the number of quadrics that can be read
4  INTEGER, PARAMETER :: dim_quadric = 500
5 ! Nnumber of quadrics
6  INTEGER :: n_quadric
7 ! Current Quadric
8  INTEGER :: quadric_id
9 ! form of quadric : 'normal' or one of the pre-defined quadrics
10  CHARACTER (LEN=12), DIMENSION(DIM_QUADRIC) :: quadric_form
11 ! Scale factor for quadrics
12  DOUBLE PRECISION :: quadric_scale
13 ! Characteristic values of the quadrics
14  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: lambda_x,lambda_y,lambda_z
15 ! d - coefficient of the quadrics
16  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: dquadric
17 ! Translation components of the quadrics
18  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: t_x,t_y,t_z
19 ! Rotation angles (Deg) of the quadrics
20  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: theta_x,theta_y,theta_z
21 ! Radius for either Spere or Cylinder (pre-defined quadrics)
22  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: radius
23 ! Radii for Torus
24  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: torus_r1, torus_r2
25 ! Radii for U-coil
26  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: ucoil_r1, ucoil_r2
27  ! Y-location of bends for U-coil
28  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: ucoil_y1, ucoil_y2
29 ! Radii for Bend
30  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: bend_r1, bend_r2
31 ! Angles for Bend
32  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: bend_theta1, bend_theta2
33 ! Y-locations of cylinder-cone-cylinder
34  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: c2c_y1, c2c_y2
35 ! Radii of cylinder-cone-cylinder
36  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: c2c_r1, c2c_r2
37 ! Half-angle for cone (pre-defined quadrics)
38  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: half_angle
39 ! Reactor 1 lower, upper cylinder radii
40  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: reactor1_r1,reactor1_r2
41 ! Reactor 1 lower, upper conical transition between cylinders
42  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: reactor1_y1,reactor1_y2
43 ! Reactor 1 lower, upper rounding locations
44  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: reactor1_yr1,reactor1_yr2
45 ! Reactor 1 lower, upper rounding radii
46  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: reactor1_rr1,reactor1_rr2
47 ! Reactor 1 lower, upper rounding angles
48  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: reactor1_theta1,reactor1_theta2
49 ! Normal vector components for plane (pre-defined quadrics)
50  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: n_x,n_y,n_z
51 ! A-matrices of the quadrics
52  DOUBLE PRECISION, DIMENSION(3,3,DIM_QUADRIC) :: a_quadric
53 ! Translation-matrices of the quadrics
54  DOUBLE PRECISION, DIMENSION(1,3,DIM_QUADRIC) :: t_quadric
55 ! Clipping range of the quadrics
56  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: clip_xmin,clip_xmax,clip_ymin,clip_ymax,clip_zmin,clip_zmax
57 ! Piecewise range of the quadrics
58  DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: piece_xmin,piece_xmax,piece_ymin,piece_ymax,piece_zmin,piece_zmax
59 ! Clip flag
60  LOGICAL, DIMENSION(DIM_QUADRIC) :: fluid_in_clipped_region
61 ! Boundary condition ID
62  INTEGER :: bc_id_q(dim_quadric)
63 ! Maximum number of groups
64  INTEGER, PARAMETER :: dim_group = 50
65 ! Number of groups
66  INTEGER :: n_group
67 ! Number of quadric in each group
68  INTEGER,DIMENSION(DIM_GROUP) :: group_size
69 ! Quadric ID list in each group
70  INTEGER,DIMENSION(DIM_GROUP,DIM_QUADRIC) :: group_q
71 ! Quadric relation in each group
72  CHARACTER(LEN=9),DIMENSION(DIM_GROUP) :: group_relation
73 ! Relation between groups
74  CHARACTER(LEN=9),DIMENSION(DIM_GROUP) :: relation_with_previous
75 ! Tolerance for intersection between quadrics and planes
76  DOUBLE PRECISION :: tol_f
77 ! Maximum number of iterations while finding intersection between geometry and grid
78  INTEGER :: itermax_int
79 
80  CONTAINS
81 
82 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvC
83 ! C
84 ! Function name: CROSS_PRODUCT C
85 ! Purpose: Performs the cross product between two vectors C
86 ! C = A x B C
87 ! C
88 ! Author: Jeff Dietiker Date: 21-Feb-08 C
89 ! Reviewer: Date: C
90 ! C
91 ! Revision Number # Date: ##-###-## C
92 ! Author: # C
93 ! Purpose: # C
94 ! C
95 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^C
96 
97  FUNCTION cross_product(A,B)
98 
99  IMPLICIT NONE
100  DOUBLE PRECISION, DIMENSION(3) :: CROSS_PRODUCT
101  DOUBLE PRECISION, INTENT(IN), DIMENSION(3) :: A,B
102 
103  cross_product(1) = a(2) * b(3) - a(3) * b(2)
104  cross_product(2) = a(3) * b(1) - a(1) * b(3)
105  cross_product(3) = a(1) * b(2) - a(2) * b(1)
106 
107  END FUNCTION cross_product
108 
109  END MODULE quadric
integer n_quadric
Definition: quadric_mod.f:6
double precision, dimension(1, 3, dim_quadric) t_quadric
Definition: quadric_mod.f:54
double precision, dimension(dim_quadric) reactor1_y1
Definition: quadric_mod.f:42
integer itermax_int
Definition: quadric_mod.f:78
integer, dimension(dim_group) group_size
Definition: quadric_mod.f:68
double precision, dimension(dim_quadric) theta_y
Definition: quadric_mod.f:20
double precision, dimension(dim_quadric) c2c_r2
Definition: quadric_mod.f:36
double precision, dimension(dim_quadric) c2c_r1
Definition: quadric_mod.f:36
double precision, dimension(dim_quadric) lambda_x
Definition: quadric_mod.f:14
double precision, dimension(dim_quadric) torus_r2
Definition: quadric_mod.f:24
double precision, dimension(dim_quadric) radius
Definition: quadric_mod.f:22
double precision, dimension(dim_quadric) clip_xmax
Definition: quadric_mod.f:56
double precision, dimension(dim_quadric) t_x
Definition: quadric_mod.f:18
character(len=9), dimension(dim_group) relation_with_previous
Definition: quadric_mod.f:74
double precision, dimension(dim_quadric) ucoil_y1
Definition: quadric_mod.f:28
double precision, dimension(dim_quadric) ucoil_r2
Definition: quadric_mod.f:26
double precision, dimension(dim_quadric) n_z
Definition: quadric_mod.f:50
double precision quadric_scale
Definition: quadric_mod.f:12
integer, parameter dim_group
Definition: quadric_mod.f:64
integer n_group
Definition: quadric_mod.f:66
double precision, dimension(dim_quadric) reactor1_r1
Definition: quadric_mod.f:40
double precision, dimension(dim_quadric) c2c_y2
Definition: quadric_mod.f:34
double precision, dimension(dim_quadric) torus_r1
Definition: quadric_mod.f:24
integer, dimension(dim_quadric) bc_id_q
Definition: quadric_mod.f:62
double precision function, dimension(3) cross_product(A, B)
Definition: quadric_mod.f:98
double precision, dimension(dim_quadric) theta_x
Definition: quadric_mod.f:20
double precision, dimension(dim_quadric) ucoil_r1
Definition: quadric_mod.f:26
double precision, dimension(dim_quadric) bend_r2
Definition: quadric_mod.f:30
double precision, dimension(dim_quadric) bend_r1
Definition: quadric_mod.f:30
double precision tol_f
Definition: quadric_mod.f:76
double precision, dimension(dim_quadric) reactor1_theta1
Definition: quadric_mod.f:48
double precision, dimension(dim_quadric) half_angle
Definition: quadric_mod.f:38
double precision, dimension(dim_quadric) dquadric
Definition: quadric_mod.f:16
double precision, dimension(dim_quadric) ucoil_y2
Definition: quadric_mod.f:28
double precision, dimension(dim_quadric) lambda_y
Definition: quadric_mod.f:14
logical, dimension(dim_quadric) fluid_in_clipped_region
Definition: quadric_mod.f:60
integer quadric_id
Definition: quadric_mod.f:8
character(len=12), dimension(dim_quadric) quadric_form
Definition: quadric_mod.f:10
double precision, dimension(dim_quadric) n_y
Definition: quadric_mod.f:50
character(len=9), dimension(dim_group) group_relation
Definition: quadric_mod.f:72
double precision, dimension(dim_quadric) clip_xmin
Definition: quadric_mod.f:56
integer, parameter dim_quadric
Definition: quadric_mod.f:4
double precision, dimension(dim_quadric) reactor1_yr1
Definition: quadric_mod.f:44
double precision, dimension(dim_quadric) t_y
Definition: quadric_mod.f:18
double precision, dimension(dim_quadric) piece_xmin
Definition: quadric_mod.f:58
double precision, dimension(dim_quadric) reactor1_rr1
Definition: quadric_mod.f:46
double precision, dimension(dim_quadric) bend_theta1
Definition: quadric_mod.f:32
double precision, dimension(dim_quadric) t_z
Definition: quadric_mod.f:18
double precision, dimension(3, 3, dim_quadric) a_quadric
Definition: quadric_mod.f:52
double precision, dimension(dim_quadric) n_x
Definition: quadric_mod.f:50
double precision, dimension(dim_quadric) c2c_y1
Definition: quadric_mod.f:34
integer, dimension(dim_group, dim_quadric) group_q
Definition: quadric_mod.f:70
double precision, dimension(dim_quadric) piece_xmax
Definition: quadric_mod.f:58