File: N:\mfix\model\cartesian_grid\quadric_mod.f
1 MODULE quadric
2
3
4 INTEGER, PARAMETER :: DIM_QUADRIC = 500
5
6 INTEGER :: N_QUADRIC
7
8 INTEGER :: QUADRIC_ID
9
10 CHARACTER (LEN=12), DIMENSION(DIM_QUADRIC) :: quadric_form
11
12 DOUBLE PRECISION :: quadric_scale
13
14 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: Lambda_x,Lambda_y,Lambda_z
15
16 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: dquadric
17
18 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: t_x,t_y,t_z
19
20 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: theta_x,theta_y,theta_z
21
22 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: Radius
23
24 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: Torus_R1, Torus_R2
25
26 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: UCOIL_R1, UCOIL_R2
27
28 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: UCOIL_Y1, UCOIL_Y2
29
30 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: BEND_R1, BEND_R2
31
32 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: BEND_THETA1, BEND_THETA2
33
34 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: C2C_Y1, C2C_Y2
35
36 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: C2C_R1, C2C_R2
37
38 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: Half_angle
39
40 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: REACTOR1_R1,REACTOR1_R2
41
42 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: REACTOR1_Y1,REACTOR1_Y2
43
44 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: REACTOR1_YR1,REACTOR1_YR2
45
46 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: REACTOR1_RR1,REACTOR1_RR2
47
48 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: REACTOR1_THETA1,REACTOR1_THETA2
49
50 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: n_x,n_y,n_z
51
52 DOUBLE PRECISION, DIMENSION(3,3,DIM_QUADRIC) :: A_QUADRIC
53
54 DOUBLE PRECISION, DIMENSION(1,3,DIM_QUADRIC) :: T_QUADRIC
55
56 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: clip_xmin,clip_xmax,clip_ymin,clip_ymax,clip_zmin,clip_zmax
57
58 DOUBLE PRECISION, DIMENSION(DIM_QUADRIC) :: piece_xmin,piece_xmax,piece_ymin,piece_ymax,piece_zmin,piece_zmax
59
60 LOGICAL, DIMENSION(DIM_QUADRIC) :: FLUID_IN_CLIPPED_REGION
61
62 INTEGER :: BC_ID_Q(DIM_QUADRIC)
63
64 INTEGER, PARAMETER :: DIM_GROUP = 50
65
66 INTEGER :: N_GROUP
67
68 INTEGER,DIMENSION(DIM_GROUP) :: GROUP_SIZE
69
70 INTEGER,DIMENSION(DIM_GROUP,DIM_QUADRIC) :: GROUP_Q
71
72 CHARACTER(LEN=9),DIMENSION(DIM_GROUP) :: GROUP_RELATION
73
74 CHARACTER(LEN=9),DIMENSION(DIM_GROUP) :: RELATION_WITH_PREVIOUS
75
76 DOUBLE PRECISION :: TOL_F
77
78 INTEGER :: ITERMAX_INT
79
80 CONTAINS
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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
110