Skip to content

Commit c4ad18c

Browse files
author
apearce
committed
✨ add integral for theta factor into VV quench calculaiton
1 parent f38afc8 commit c4ad18c

File tree

1 file changed

+66
-1
lines changed

1 file changed

+66
-1
lines changed

process/sctfcoil.py

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import logging
44
import copy
55
import numba
6+
import numpy as np
67

78
from process.fortran import rebco_variables
89
from process.fortran import global_variables
@@ -7186,6 +7187,69 @@ def _inductance_factor(H, Ri, Ro, Rm, theta1):
71867187
)
71877188

71887189

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+
71897253
def vv_stress_on_quench(
71907254
# TF shape
71917255
H_coil,
@@ -7268,8 +7332,9 @@ def vv_stress_on_quench(
72687332
Plasma and Fusion Research. 15. 1405078-1405078. 10.1585/pfr.15.1405078.
72697333
"""
72707334
# Poloidal loop resistance (PLR) in ohms
7335+
theta_vv = _theta_factor_integral(Ro_vv, Ri_vv, Rm_vv, H_vv, theta1_vv)
72717336
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
72737338

72747339
# relevant self-inductances in henry (H)
72757340
coil_structure_self_inductance = (

0 commit comments

Comments
 (0)