Skip to content
2 changes: 0 additions & 2 deletions process/core/input.py
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,6 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"auxcool_w": InputVariable("buildings", float, range=(10.0, 1000.0)),
"p_hcd_injected_min_mw": InputVariable("constraints", float, range=(0.01, 100.0)),
"f_t_plant_available_min": InputVariable("costs", float, range=(0.0, 1.0)),
"b_crit_upper_nbti": InputVariable("tfcoil", float, range=(0.0, 30.0)),
"p_plant_electric_base": InputVariable(
"heat_transport", float, range=(1000000.0, 10000000000.0)
),
Expand Down Expand Up @@ -786,7 +785,6 @@ def bounds(self) -> tuple[NumberType | None, NumberType | None]:
"dx_tf_turn_cable_space_general": InputVariable("tfcoil", float, range=(0.0, 0.1)),
"t_crack_radial": InputVariable("cs_fatigue", float, range=(1e-05, 1.0)),
"t_crack_vertical": InputVariable("cs_fatigue", float, range=(1e-05, 1.0)),
"t_crit_nbti": InputVariable("tfcoil", float, range=(0.0, 15.0)),
"t_plant_pulse_plasma_current_ramp_up": InputVariable(
"times", float, range=(0.0, 10000.0)
),
Expand Down
2 changes: 1 addition & 1 deletion process/core/io/plot/scans.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ def plot_scan(
51: "f_p_div_lower",
52: "rad_fraction_sol",
53: "Obsolete", # OBSOLETE
54: "b_crit_upper_nbti",
54: "Obsolete", # OBSOLETE
55: "dr_shld_inboard",
56: "p_cryo_plant_electric_max_mw",
# Genuinely b_plasma_toroidal_on_axis lower bound
Expand Down
2 changes: 0 additions & 2 deletions process/core/scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -1200,8 +1200,6 @@ def scan_select(self, nwp, swp, iscn):
self.data.physics.rad_fraction_sol = swp[iscn - 1]
case 53:
self.data.numerics.boundu[156] = swp[iscn - 1]
case 54:
self.data.tfcoil.b_crit_upper_nbti = swp[iscn - 1]
case 55:
self.data.build.dr_shld_inboard = swp[iscn - 1]
case 56:
Expand Down
6 changes: 0 additions & 6 deletions process/data_structure/tfcoil_variables.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,12 +184,6 @@ class TFData:
e_tf_coil_magnetic_stored: float = 0.0
"""Stored magnetic energy in a single TF coil (J)"""

b_crit_upper_nbti: float = 14.86
"""upper critical field of GL_nbti"""

t_crit_nbti: float = 9.04
"""critical temperature of GL_nbti"""

max_force_density: float = 0.0
"""Maximal (WP averaged) force density in TF coils at 1 point. (MN/m3)"""

Expand Down
60 changes: 36 additions & 24 deletions process/models/pfcoil.py
Original file line number Diff line number Diff line change
Expand Up @@ -898,8 +898,6 @@ def pfcoil(self):
temp_pf_peak_field=self.data.tfcoil.tftmp,
bcritsc=self.data.tfcoil.bcritsc,
tcritsc=self.data.tfcoil.tcritsc,
b_crit_upper_nbti=self.data.tfcoil.b_crit_upper_nbti,
t_crit_nbti=self.data.tfcoil.t_crit_nbti,
dr_hts_tape=self.data.superconducting_tfcoil.dr_tf_hts_tape,
dx_hts_tape_rebco=self.data.superconducting_tfcoil.dx_tf_hts_tape_rebco,
dx_hts_tape_total=self.data.superconducting_tfcoil.dx_tf_hts_tape_total,
Expand Down Expand Up @@ -3613,8 +3611,6 @@ def ohcalc(self):
temp_pf_peak_field=self.data.pf_coil.temp_cs_superconductor_operating,
bcritsc=self.data.tfcoil.bcritsc,
tcritsc=self.data.tfcoil.tcritsc,
b_crit_upper_nbti=self.data.tfcoil.b_crit_upper_nbti,
t_crit_nbti=self.data.tfcoil.t_crit_nbti,
dr_hts_tape=self.data.superconducting_tfcoil.dr_tf_hts_tape,
dx_hts_tape_rebco=self.data.superconducting_tfcoil.dx_tf_hts_tape_rebco,
dx_hts_tape_total=self.data.superconducting_tfcoil.dx_tf_hts_tape_total,
Expand Down Expand Up @@ -3663,8 +3659,6 @@ def ohcalc(self):
temp_pf_peak_field=self.data.pf_coil.temp_cs_superconductor_operating,
bcritsc=self.data.tfcoil.bcritsc,
tcritsc=self.data.tfcoil.tcritsc,
b_crit_upper_nbti=self.data.tfcoil.b_crit_upper_nbti,
t_crit_nbti=self.data.tfcoil.t_crit_nbti,
dr_hts_tape=self.data.superconducting_tfcoil.dr_tf_hts_tape,
dx_hts_tape_rebco=self.data.superconducting_tfcoil.dx_tf_hts_tape_rebco,
dx_hts_tape_total=self.data.superconducting_tfcoil.dx_tf_hts_tape_total,
Expand Down Expand Up @@ -4643,8 +4637,6 @@ def superconpf(
temp_pf_peak_field: float,
bcritsc: float,
tcritsc: float,
b_crit_upper_nbti: float,
t_crit_nbti: float,
dr_hts_tape: float,
dx_hts_tape_rebco: float,
dx_hts_tape_total: float,
Expand Down Expand Up @@ -4692,10 +4684,6 @@ def superconpf(
Critical field at zero temperature and strain [T] (isumat=4 only)
tcritsc : float
Critical temperature at zero field and strain [K] (isumat=4 only)
b_crit_upper_nbti: float
upper critical field of GL_nbti [T]
t_crit_nbti: float
critical temperature of GL_nbti [K]
dr_hts_tape: float
Mean width of tape [m]
dx_hts_tape_rebco: float
Expand All @@ -4722,8 +4710,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):
# Find critical current density in superconducting strand, jcritstr
if isumat == SuperconductorModel.ITER_NB3SN:
# ITER Nb3Sn critical surface parameterization
bc20m = 32.97e0 # [T] critical field at 0 K and 0 strain
tc0m = 16.06e0 # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.ITER_NB3SN.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.ITER_NB3SN.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain

# j_crit_sc returned by superconductors.itersc is
# the critical current density in the superconductor
Expand Down Expand Up @@ -4761,8 +4753,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):

elif isumat == SuperconductorModel.OLD_LUBELL_NBTI:
# NbTi data
bc20m = 15.0e0 # [T] critical field at 0 K and 0 strain
tc0m = 9.3e0 # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.OLD_LUBELL_NBTI.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.OLD_LUBELL_NBTI.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain
c0 = 1.0e10 # # [A/m²]
j_crit_sc, _ = superconductors.jcrit_nbti(
temp_conductor=temp_pf_peak_field,
Expand All @@ -4788,8 +4784,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):

elif isumat == SuperconductorModel.WST_NB3SN:
# WST Nb3Sn parameterisation
bc20m = 32.97e0 # [T] critical field at 0 K and 0 strain
tc0m = 16.06e0 # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.WST_NB3SN.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.WST_NB3SN.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain

# j_crit_sc returned by superconductors.itersc is the critical current density
# in the superconductor - not the whole strand, which contains copper
Expand All @@ -4812,8 +4812,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):

elif isumat == SuperconductorModel.DURHAM_NBTI:
# Durham Ginzburg-Landau critical surface model for Nb-Ti
bc20m = b_crit_upper_nbti # [T] critical field at 0 K and 0 strain
tc0m = t_crit_nbti # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.DURHAM_NBTI.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.DURHAM_NBTI.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain
j_crit_sc, _, _ = superconductors.gl_nbti(
temp_conductor=temp_pf_peak_field,
b_conductor=b_pf_peak,
Expand All @@ -4825,8 +4829,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):

elif isumat == SuperconductorModel.DURHAM_REBCO:
# Durham Ginzburg-Landau critical surface model for REBCO
bc20m = 429e0 # [T] critical field at 0 K and 0 strain
tc0m = 185e0 # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.DURHAM_REBCO.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.DURHAM_REBCO.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain
j_crit_sc, _, _ = superconductors.gl_rebco(
temp_conductor=temp_pf_peak_field,
b_conductor=b_pf_peak,
Expand All @@ -4839,8 +4847,12 @@ def j_crit_cable_frac(j_crit_sc, fcu, fhe):

elif isumat == SuperconductorModel.HAZELTON_ZHAI_REBCO:
# Hazelton experimental data + Zhai conceptual model for REBCO
bc20m = 138 # [T] critical field at 0 K and 0 strain
tc0m = 92 # [K] critical temperature at 0 T and 0 strain
bc20m = (
SuperconductorModel.HAZELTON_ZHAI_REBCO.b_crit_zero_field_strain
) # [T] critical field at 0 K and 0 strain
tc0m = (
SuperconductorModel.HAZELTON_ZHAI_REBCO.temp_crit_zero_field_strain
) # [K] critical temperature at 0 T and 0 strain
j_crit_sc, _, _ = superconductors.hijc_rebco(
temp_conductor=temp_pf_peak_field,
b_conductor=b_pf_peak,
Expand Down
2 changes: 0 additions & 2 deletions process/models/stellarator/coils/calculate.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,11 +410,9 @@ def winding_pack_total_size(
b_max_k[k],
data.tfcoil.tftmp + data.tfcoil.tmargmin,
data.tfcoil.i_tf_sc_mat,
data.tfcoil.b_crit_upper_nbti,
data.tfcoil.bcritsc,
data.tfcoil.f_a_tf_turn_cable_copper,
data.tfcoil.fhts,
data.tfcoil.t_crit_nbti,
data.tfcoil.tcritsc,
data.tfcoil.f_a_tf_turn_cable_space_extra_void,
data.tfcoil.j_tf_wp,
Expand Down
47 changes: 27 additions & 20 deletions process/models/stellarator/coils/coils.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from process.core.exceptions import ProcessValueError
from process.core.model import DataStructure
from process.models import superconductors
from process.models.superconductors import SuperconductorModel

logger = logging.getLogger(__name__)

Expand All @@ -21,11 +22,9 @@ def jcrit_from_material(
b_max,
t_helium,
i_tf_sc_mat,
b_crit_upper_nbti,
b_crit_sc,
f_a_tf_turn_cable_copper,
f_hts,
t_crit_nbti,
t_crit_sc,
f_a_tf_turn_cable_space_extra_void,
j_wp,
Expand All @@ -40,9 +39,11 @@ def jcrit_from_material(
)
# of a cable conductor.

if i_tf_sc_mat == 1: # ITER Nb3Sn critical surface parameterization
bc20m = 32.97 # these are values taken from sctfcoil.f90
tc0m = 16.06
if (
i_tf_sc_mat == SuperconductorModel.ITER_NB3SN
): # ITER Nb3Sn critical surface parameterization
bc20m = SuperconductorModel.ITER_NB3SN.b_crit_zero_field_strain
tc0m = SuperconductorModel.ITER_NB3SN.temp_crit_zero_field_strain

# j_crit_sc returned by itersc is the critical current density in the
# superconductor - not the whole strand, which contains copper
Expand All @@ -61,7 +62,7 @@ def jcrit_from_material(
j_crit_sc = max(1.0e-9, j_crit_sc)
j_crit_cable = max(1.0e-9, j_crit_cable)

elif i_tf_sc_mat == 2:
elif i_tf_sc_mat == SuperconductorModel.BI2212:
# Bi-2212 high temperature superconductor parameterization
# Current density in a strand of Bi-2212 conductor
# N.B. jcrit returned by bi2212 is the critical current density
Expand All @@ -79,9 +80,9 @@ def jcrit_from_material(
) # bi2212 outputs j_crit_cable
j_crit_sc = j_crit_cable / (1 - f_tf_conductor_copper)
_tcrit = t_helium + tmarg
elif i_tf_sc_mat == 3: # NbTi data
bc20m = 15.0
tc0m = 9.3
elif i_tf_sc_mat == SuperconductorModel.OLD_LUBELL_NBTI: # NbTi data
bc20m = SuperconductorModel.OLD_LUBELL_NBTI.b_crit_zero_field_strain
tc0m = SuperconductorModel.OLD_LUBELL_NBTI.temp_crit_zero_field_strain
c0 = 1.0

if b_max > bc20m:
Expand All @@ -100,16 +101,18 @@ def jcrit_from_material(
# This is needed right now. Can we change it later?
j_crit_sc = max(1.0e-9, j_crit_sc)
j_crit_cable = max(1.0e-9, j_crit_cable)
elif i_tf_sc_mat == 4: # As (1), but user-defined parameters
elif (
i_tf_sc_mat == SuperconductorModel.USER_DEFINED_NB3SN
): # As (1), but user-defined parameters
bc20m = b_crit_sc
tc0m = t_crit_sc
j_crit_sc, _bcrit, _tcrit = superconductors.itersc(
t_helium, b_max, strain, bc20m, tc0m
)
j_crit_cable = j_crit_cable_from_fraction(j_crit_sc, f_tf_conductor_copper, f_he)
elif i_tf_sc_mat == 5: # WST Nb3Sn parameterisation
bc20m = 32.97
tc0m = 16.06
elif i_tf_sc_mat == SuperconductorModel.WST_NB3SN: # WST Nb3Sn parameterisation
bc20m = SuperconductorModel.WST_NB3SN.b_crit_zero_field_strain
tc0m = SuperconductorModel.WST_NB3SN.temp_crit_zero_field_strain

# j_crit_sc returned by itersc is the critical current density in the
# superconductor - not the whole strand, which contains copper
Expand All @@ -123,22 +126,26 @@ def jcrit_from_material(
)
j_crit_cable = j_crit_cable_from_fraction(j_crit_sc, f_tf_conductor_copper, f_he)

elif i_tf_sc_mat == 6: # ! "REBCO" 2nd generation HTS superconductor in CrCo strand
elif (
i_tf_sc_mat == SuperconductorModel.CROCO_REBCO
): # ! "REBCO" 2nd generation HTS superconductor in CrCo strand
j_crit_sc, _validity, _, _ = superconductors.jcrit_rebco(t_helium, b_max, 0)
j_crit_sc = max(1.0e-9, j_crit_sc)
j_crit_cable = j_crit_cable_from_fraction(j_crit_sc, f_tf_conductor_copper, f_he)

elif i_tf_sc_mat == 7: # Durham Ginzburg-Landau Nb-Ti parameterisation
bc20m = b_crit_upper_nbti
tc0m = t_crit_nbti
elif (
i_tf_sc_mat == SuperconductorModel.DURHAM_NBTI
): # Durham Ginzburg-Landau Nb-Ti parameterisation
bc20m = SuperconductorModel.DURHAM_NBTI.b_crit_zero_field_strain
tc0m = SuperconductorModel.DURHAM_NBTI.temp_crit_zero_field_strain
j_crit_sc, _bcrit, _tcrit = superconductors.gl_nbti(
t_helium, b_max, strain, bc20m, tc0m
)
j_crit_cable = j_crit_cable_from_fraction(j_crit_sc, f_tf_conductor_copper, f_he)

elif i_tf_sc_mat == 8:
bc20m = 429
tc0m = 185
elif i_tf_sc_mat == SuperconductorModel.DURHAM_REBCO:
bc20m = SuperconductorModel.DURHAM_REBCO.b_crit_zero_field_strain
tc0m = SuperconductorModel.DURHAM_REBCO.temp_crit_zero_field_strain
j_crit_sc, _bcrit, _tcrit = superconductors.gl_rebco(
t_helium, b_max, strain, bc20m, tc0m
)
Expand Down
Loading
Loading