1 |
REQUIRE "atoms.a4l"; |
2 |
|
3 |
ATOM energy_rate_per_length REFINES solver_var |
4 |
DIMENSION M*L/T^3 |
5 |
DEFAULT 1000{W/m}; |
6 |
lower_bound := -1e50{W/m}; |
7 |
upper_bound := 1e50{W/m}; |
8 |
nominal := 1000{W/m}; |
9 |
END energy_rate_per_length; |
10 |
|
11 |
ATOM energy_flux REFINES solver_var |
12 |
DIMENSION M/T^3 |
13 |
DEFAULT 1000{W/m^2}; |
14 |
lower_bound := -1e50{W/m^2}; |
15 |
upper_bound := 1e50{W/m^2}; |
16 |
nominal := 1000{W/m^2}; |
17 |
END energy_flux; |
18 |
|
19 |
ATOM heat_transfer_coefficient REFINES solver_var |
20 |
DIMENSION M/T^3/TMP |
21 |
DEFAULT 5{W/m^2/K}; |
22 |
|
23 |
lower_bound := 0{W/m^2/K}; |
24 |
upper_bound := 1e50{W/m^2/K}; |
25 |
nominal := 5{W/m^2/K}; |
26 |
|
27 |
END heat_transfer_coefficient; |
28 |
|
29 |
MODEL cavity; |
30 |
W,B,S,N,C,E,D IS_A distance; |
31 |
theta, phi, psi IS_A angle; |
32 |
|
33 |
F_WN, F_WW, F_WB IS_A factor; |
34 |
F_NB, F_NW, F_NN, F_BW, F_BN IS_A factor; |
35 |
F_WS IS_A factor; |
36 |
|
37 |
N * sin(theta) = D; |
38 |
S * tan(theta) = D; |
39 |
B = W + 2 * S; |
40 |
E^2 = W^2 + D^2; |
41 |
phi = arctan(D/W); |
42 |
psi = 1{PI} - phi; |
43 |
C^2 = E^2 + S^2 - 2* E * S * cos(psi); |
44 |
|
45 |
F_WN = (W+N-C)/2/W; |
46 |
F_WW = (2*E-2*D)/2/W; (* from top to directly opp part of bottom *) |
47 |
F_WB = 1 - 2 * F_WN; |
48 |
F_WS = (1 - 2 * F_WN - F_WB)/2; |
49 |
F_NB = (N+B-C)/2/N; |
50 |
F_NW = (N+W-C)/2/N; |
51 |
|
52 |
F_BN = F_NB*N/B; |
53 |
F_NN = 1 - F_NW - F_NB; |
54 |
F_BW = F_WB*W/B; |
55 |
|
56 |
n IS_A set OF symbol_constant; |
57 |
n :== ['W','B','L','R']; |
58 |
|
59 |
(* Put lengths into a vector *) |
60 |
|
61 |
A[n] IS_A distance; |
62 |
A['W'], W ARE_THE_SAME; |
63 |
A['B'], B ARE_THE_SAME; |
64 |
A['L'], N ARE_THE_SAME; |
65 |
A['R'], N ARE_THE_SAME; |
66 |
|
67 |
(* View factor matrix *) |
68 |
|
69 |
F[n][n] IS_A factor; |
70 |
|
71 |
F['W']['L'], F['W']['R'], F_WN ARE_THE_SAME; |
72 |
F['W']['B'], F_WB ARE_THE_SAME; |
73 |
F['W']['W'] = 0; |
74 |
|
75 |
F['B']['L'], F['B']['R'], F_BN ARE_THE_SAME; |
76 |
F['B']['W'], F_BW ARE_THE_SAME; |
77 |
F['B']['B'] = 0; |
78 |
|
79 |
F['L']['R'], F['R']['L'], F_NN ARE_THE_SAME; |
80 |
F['L']['B'], F['R']['B'], F_NB ARE_THE_SAME; |
81 |
F['L']['W'], F['R']['W'], F_NW ARE_THE_SAME; |
82 |
F['L']['L'] = 0; |
83 |
F['R']['R'] = 0; |
84 |
|
85 |
(* Radiation equations *) |
86 |
q[n] IS_A energy_rate_per_length; |
87 |
|
88 |
E_b[n] IS_A energy_flux; |
89 |
J[n] IS_A energy_flux; |
90 |
T[n] IS_A temperature; |
91 |
eps[n] IS_A factor; (* emissivity *) |
92 |
|
93 |
FOR i IN n CREATE |
94 |
q[i] = SUM[ (J[i]-J[j])*(A[i]*F[i][j]) | j IN n]; |
95 |
END FOR; |
96 |
|
97 |
FOR i IN n CREATE |
98 |
E_b[i] = 1{SIGMA_C} * T[i]^4; |
99 |
END FOR; |
100 |
|
101 |
FOR i IN n CREATE |
102 |
q[i] * (1-eps[i]) = (E_b[i] - J[i]) * (eps[i]*A[i]); |
103 |
END FOR; |
104 |
|
105 |
METHODS |
106 |
METHOD default_self; |
107 |
RUN reset; RUN values; RUN bound_self; |
108 |
END default_self; |
109 |
|
110 |
METHOD bound_self; |
111 |
phi.lower_bound := 0 {deg}; |
112 |
phi.upper_bound := 90 {deg}; |
113 |
psi.lower_bound := 90 {deg}; |
114 |
psi.upper_bound := 180 {deg}; |
115 |
END bound_self; |
116 |
|
117 |
METHOD specify; |
118 |
FIX T['W', 'B']; |
119 |
FIX q['L','R']; |
120 |
FIX W,D,theta; |
121 |
FIX eps[n]; |
122 |
END specify; |
123 |
|
124 |
METHOD values; |
125 |
T['W'] := 550 {K}; |
126 |
T['B'] := 373.15 {K}; |
127 |
q['L','R'] := 0 {W/m}; |
128 |
|
129 |
W := 500 {mm}; |
130 |
D := 300 {mm}; |
131 |
theta := 30 {deg}; |
132 |
|
133 |
eps['W'] := 0.49; |
134 |
eps['B'] := 0.9; |
135 |
eps['L','R'] := 0.1; |
136 |
|
137 |
END values; |
138 |
|
139 |
END cavity; |
140 |
|
141 |
(*======================================== |
142 |
This model adds external convection |
143 |
coefficients to the model, and an |
144 |
ambient temperature. |
145 |
|
146 |
We also calculate the F_rad correlation |
147 |
parameter. |
148 |
*) |
149 |
MODEL cavity_losses REFINES cavity; |
150 |
h_B, h_N IS_A heat_transfer_coefficient; |
151 |
T_amb IS_A temperature; |
152 |
|
153 |
- q['B'] = h_B * B * (T['B'] - T_amb); |
154 |
- q['L'] = h_N * N * (T['L'] - T_amb); |
155 |
- q['R'] = h_N * N * (T['L'] - T_amb); |
156 |
|
157 |
F_rad IS_A factor; |
158 |
F_rad_1 IS_A factor; |
159 |
|
160 |
- q['B'] = F_rad * eps['W'] * 1{SIGMA_C} * (T['W']^4 - T['B']^4); |
161 |
|
162 |
- q['B'] = F_rad_1 * 1{SIGMA_C} * (T['W']^4 - T['B']^4) / |
163 |
(1/eps['B'] + 1/eps['W'] - 1); |
164 |
|
165 |
METHODS |
166 |
METHOD specify; |
167 |
FIX T['W'], T_amb; |
168 |
FIX h_B, h_N; |
169 |
FIX W,D,theta; |
170 |
FIX eps[n]; |
171 |
END specify; |
172 |
METHOD values; |
173 |
T['W'] := 550 {K}; |
174 |
T_amb := 290 {K}; |
175 |
W := 500 {mm}; |
176 |
D := 300 {mm}; |
177 |
theta := 30 {deg}; |
178 |
eps['W'] := 0.49; |
179 |
eps['B'] := 0.9; |
180 |
eps['L','R'] := 0.1; |
181 |
h_B := 10 {W/m^2/K}; |
182 |
h_N := 0.5 {W/m^2/K}; |
183 |
(* free values *) |
184 |
T['L','R'] := 500 {K}; |
185 |
T['B'] := 400 {K}; |
186 |
END values; |
187 |
END cavity_losses; |