|
11 | 11 |
|
12 | 12 | log.set_log_level(log.LogLevel.INFO) |
13 | 13 |
|
14 | | -tank_height = 1 |
15 | | -K_S = 1 # solubility of breeder |
16 | | -D = 0.001 # breeder diffusivity |
| 14 | +avogadro_number = 6.022e23 # 1/mol |
17 | 15 |
|
18 | | -source_term = 0.01 # mol/m3/s generation term |
| 16 | +tank_height = 1 # m |
| 17 | +tank_diameter = 0.5 # m |
| 18 | +K_S = 1e20 / avogadro_number # solubility of breeder mol/m3/Pa |
| 19 | +diffusivity = 1e-9 # breeder diffusivity m2/s |
19 | 20 |
|
20 | | -u_b = 100 # m/s bubble rise velocity |
21 | | -d_b = 0.01 # m bubble diameter |
22 | 21 |
|
23 | | -P = 10000.0 # total gas pressure # TODO should be 7 PSIG - differential at the top |
24 | | -h_l = ((D * u_b) / (ufl.pi * d_b)) ** 0.5 # mass transport coefficient |
| 22 | +source_term = 0.001 # mol/m3/s generation term |
| 23 | + |
| 24 | +u_b = 0.3 # m/s bubble velocity |
| 25 | +d_b = 0.002 # m bubble diameter |
| 26 | + |
| 27 | +P = 151988 # total gas pressure # TODO should be 7 PSIG - differential at the top |
| 28 | +h_l = ( |
| 29 | + (diffusivity * u_b) / (ufl.pi * d_b) |
| 30 | +) ** 0.5 # mass transport coefficient Higbie penetration model |
25 | 31 |
|
26 | 32 | R = 8.314 # J/mol/K |
27 | 33 | T = 900 # K temperature |
28 | | -epsislon_g = 0.4 # gas void fraction # TODO from correlations |
29 | | -a = 6 * epsislon_g / d_b # specific interfacial area |
30 | | - |
31 | | -E_g = 0.2 * D**2 * u_b # gas phase diffusivity (dispersion coefficient) |
| 34 | +epsilon_g = 0.03 # gas void fraction # TODO from correlations |
| 35 | +epsilon_l = 1 - epsilon_g # liquid void fraction |
| 36 | +a = 6 * epsilon_g / d_b # specific interfacial area |
32 | 37 |
|
| 38 | +# FIXME is this homogeneous? |
| 39 | +E_g = 0.2 * tank_diameter**2 * u_b # gas phase diffusivity (dispersion coefficient) |
| 40 | +E_l = diffusivity # liquid phase diffusivity # FIXME |
33 | 41 |
|
34 | 42 | # MESH AND FUNCTION SPACES |
35 | | -mesh = dolfinx.mesh.create_interval(MPI.COMM_WORLD, 1000, points=[0, tank_height]) |
| 43 | +mesh = dolfinx.mesh.create_interval(MPI.COMM_WORLD, 10000, points=[0, tank_height]) |
36 | 44 | fdim = mesh.topology.dim - 1 |
37 | 45 | cg_el = basix.ufl.element("Lagrange", mesh.basix_cell(), degree=1, shape=(2,)) |
38 | 46 |
|
|
67 | 75 | F = 0 # variational formulation |
68 | 76 |
|
69 | 77 | # transient terms |
70 | | -F += ((c_T - c_T_n) / dt) * v_c * ufl.dx |
71 | | -F += 1 / (R * T) * (P * (y_T2 - y_T2_n) / dt) * v_y * ufl.dx |
| 78 | +F += epsilon_l * ((c_T - c_T_n) / dt) * v_c * ufl.dx |
| 79 | +F += epsilon_g * 1 / (R * T) * (P * (y_T2 - y_T2_n) / dt) * v_y * ufl.dx |
72 | 80 |
|
73 | 81 | # diffusion/dispersion terms |
74 | | -F += D * ufl.dot(ufl.grad(c_T), ufl.grad(v_c)) * ufl.dx |
75 | | -F += epsislon_g * E_g * ufl.dot(ufl.grad(P * y_T2), ufl.grad(v_y)) * ufl.dx |
| 82 | +F += epsilon_l * E_l * ufl.dot(ufl.grad(c_T), ufl.grad(v_c)) * ufl.dx |
| 83 | +F += epsilon_g * E_g * ufl.dot(ufl.grad(P * y_T2), ufl.grad(v_y)) * ufl.dx |
76 | 84 |
|
77 | 85 |
|
78 | 86 | # mass exchange (coupling term) |
|
90 | 98 | mesh, fdim, lambda x: np.isclose(x[0], 0.0) |
91 | 99 | ) |
92 | 100 | gas_outlet_facets = dolfinx.mesh.locate_entities_boundary( |
93 | | - mesh, fdim, lambda x: np.isclose(x[0], 1.0) |
| 101 | + mesh, fdim, lambda x: np.isclose(x[0], tank_height) |
94 | 102 | ) |
95 | 103 | bc1 = dolfinx.fem.dirichletbc( |
96 | 104 | dolfinx.fem.Constant(mesh, 0.0), |
|
0 commit comments