|
3 | 3 | import logging
|
4 | 4 | import copy
|
5 | 5 | import numba
|
| 6 | +import numpy as np |
6 | 7 |
|
7 | 8 | from process.fortran import rebco_variables
|
8 | 9 | from process.fortran import global_variables
|
@@ -7186,6 +7187,69 @@ def _inductance_factor(H, Ri, Ro, Rm, theta1):
|
7186 | 7187 | )
|
7187 | 7188 |
|
7188 | 7189 |
|
| 7190 | +def lambda_term(tau, omega): |
| 7191 | + """ |
| 7192 | + words |
| 7193 | + """ |
| 7194 | + p = 1.0 - omega**2.0 |
| 7195 | + |
| 7196 | + if p < 0: |
| 7197 | + integral = (1.0 / np.sqrt(np.abs(p))) * np.arcsin( |
| 7198 | + (1.0 + omega * tau) / (tau + omega) |
| 7199 | + ) |
| 7200 | + else: |
| 7201 | + integral = (1.0 / np.sqrt(np.abs(p))) * np.log( |
| 7202 | + (2.0 * (1.0 + tau * omega - np.sqrt(p * (1 - tau**2.0)))) / (tau + omega) |
| 7203 | + ) |
| 7204 | + |
| 7205 | + return integral |
| 7206 | + |
| 7207 | + |
| 7208 | +def _theta_factor_integral(Ro_vv, Ri_vv, Rm_vv, H_vv, theta1_vv): |
| 7209 | + """ |
| 7210 | + words |
| 7211 | + """ |
| 7212 | + theta2 = np.pi / 2.0 + theta1_vv |
| 7213 | + a = (Ro_vv - Ri_vv) / 2.0 |
| 7214 | + Rbar = (Ro_vv + Ri_vv) / 2.0 |
| 7215 | + A = Rbar / a |
| 7216 | + delta = (Rbar - Rm_vv) / a |
| 7217 | + kappa = H_vv / a |
| 7218 | + iota = (1.0 + delta) / kappa |
| 7219 | + |
| 7220 | + denom = np.cos(theta1_vv) + np.sin(theta1_vv) - 1.0 |
| 7221 | + |
| 7222 | + R1 = H_vv * ((np.cos(theta1_vv) + iota * (np.sin(theta1_vv) - 1.0)) / denom) |
| 7223 | + R2 = H_vv * ((np.cos(theta1_vv) - 1.0 + iota * np.sin(theta1_vv)) / denom) |
| 7224 | + R3 = H_vv * (1 - delta) / kappa |
| 7225 | + |
| 7226 | + Rc1 = (H_vv / kappa) * (A + 1.0) - R1 |
| 7227 | + Rc2 = Rc1 + (R1 - R2) * np.cos(theta1_vv) |
| 7228 | + Rc3 = Rc2 |
| 7229 | + Zc2 = (R1 - R2) * np.sin(theta1_vv) |
| 7230 | + Zc3 = Zc2 + R2 - R3 |
| 7231 | + |
| 7232 | + tau = np.array( |
| 7233 | + [ |
| 7234 | + [np.cos(theta1_vv), np.cos(theta1_vv + theta2), -1.0], |
| 7235 | + [1.0, np.cos(theta1_vv), np.cos(theta1_vv + theta2)], |
| 7236 | + ] |
| 7237 | + ) |
| 7238 | + |
| 7239 | + omega = np.array([Rc1 / R1, Rc2 / R2, Rc3 / R3]) |
| 7240 | + |
| 7241 | + # Assume up down symmetry and let Zc6 = - Zc3 |
| 7242 | + chi1 = (Zc3 + np.abs(-Zc3)) / Ri_vv |
| 7243 | + chi2 = 0.0 |
| 7244 | + |
| 7245 | + for k in range(len(omega)): |
| 7246 | + chi2 = chi2 + np.abs( |
| 7247 | + lambda_term(tau[1, k], omega[k]) - lambda_term(tau[0, k], omega[k]) |
| 7248 | + ) |
| 7249 | + |
| 7250 | + return (chi1 + chi2) / np.pi |
| 7251 | + |
| 7252 | + |
7189 | 7253 | def vv_stress_on_quench(
|
7190 | 7254 | # TF shape
|
7191 | 7255 | H_coil,
|
@@ -7268,8 +7332,9 @@ def vv_stress_on_quench(
|
7268 | 7332 | Plasma and Fusion Research. 15. 1405078-1405078. 10.1585/pfr.15.1405078.
|
7269 | 7333 | """
|
7270 | 7334 | # Poloidal loop resistance (PLR) in ohms
|
| 7335 | + theta_vv = _theta_factor_integral(Ro_vv, Ri_vv, Rm_vv, H_vv, theta1_vv) |
7271 | 7336 | plr_coil = ((0.5 * ccl_length_coil) / (n_tf * (S_cc + S_rp))) * 1e-6
|
7272 |
| - plr_vv = ((0.84 / d_vv) * 0.94) * 1e-6 |
| 7337 | + plr_vv = ((0.84 / d_vv) * theta_vv) * 1e-6 |
7273 | 7338 |
|
7274 | 7339 | # relevant self-inductances in henry (H)
|
7275 | 7340 | coil_structure_self_inductance = (
|
|
0 commit comments