diff --git a/documentation/proc-pages/eng-models/tf-coil.md b/documentation/proc-pages/eng-models/tf-coil.md index f2ceaedb9a..1faabbbce0 100644 --- a/documentation/proc-pages/eng-models/tf-coil.md +++ b/documentation/proc-pages/eng-models/tf-coil.md @@ -77,7 +77,7 @@ $$ The TF coil radial thickness (dr_tf_inboard) can parametrized in two ways in PROCESS:
-- **Direct parametrization**: the TF radial inboard thickness width is set as an input variable : `dr_tf_inboard` (iteration variable 57). The WP radial thickness (`dr_tf_wp`) is calculated from `dr_tf_inboard` and the two case radial thicknesses. This parametrization is used by default. + **Direct parametrization**: the TF radial inboard thickness width is set as an input variable : `dr_tf_inboard` (iteration variable 13). The WP radial thickness (`dr_tf_wp`) is calculated from `dr_tf_inboard` and the two case radial thicknesses. This parametrization is used by default.
-
**WP thickness parametrization**: the TF inboard radial thickness is calculated from the the case and the WP radial thickness. This option is selected by using the WP thickness (`dr_tf_wp`, iteration variable 140) as an iteration variable. Doing so, any `dr_tf_inboard` values will be overwritten and for this reason `dr_tf_wp` and `dr_tf_inboard` cannot be used as iteration variables simultaneously. Although not set by default for backward compatibility, this parametrization provides a more stable optimization procedure (negative WP area layer cannot be obtained by construction) and is hence encouraged.
@@ -1243,86 +1243,101 @@ Another subroutine, `tfspcall` is called outside `stfcoil` to estimate to check
### General parameters
-| Parameter | description | Default |
-| - | - | - |
-| `n_tf_coils` | Number of TF coils | 16 |
-| `i_tf_sup` | Swich selecting the conductor technology:
- 0 : Water cooled copper (GLIDCOP)
- 1 : Superconducting TF magnets
- 2 : Helium cooled Aluminium magnets | 1 |
-| `i_tf_sc_mat` | Swich for superconducting material
1 : Nb$_3$Sn superconductor, ITER critical surface parameterization[^1], standard critical values
2 : Bi-2212 high temperature superconductor
3 : NbTi superconductor
4 : Nb$_3$Sn superconductor, ITER critical surface parameterization[^1], user-defined critical parameters
5 : WST Nb$_3$Sn parameterization
6 : REBCO HTS tape in CroCo strand
7 : Durham Ginzburg-Landau critical surface model for Nb-Ti
8 : Durham Ginzburg-Landau critical surface model for REBCO
9 : Hazelton experimental data combined with Zhai conceptual model for REBCO | 1 |
+| Parameter | description | Default |
+| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
+| `n_tf_coils` | Number of TF coils | 16 |
+| `i_tf_sup` | Switch selecting the conductor technology:
- 0 : Water cooled copper (GLIDCOP)
- 1 : Superconducting TF magnets
- 2 : Helium cooled Aluminium magnets | 1 |
+| `i_tf_sc_mat` | Switch for superconducting material
1 : Nb$_3$Sn superconductor, ITER critical surface parameterization[^1], standard critical values
2 : Bi-2212 high temperature superconductor
3 : NbTi superconductor
4 : Nb$_3$Sn superconductor, ITER critical surface parameterization[^1], user-defined critical parameters
5 : WST Nb$_3$Sn parameterization
6 : REBCO HTS tape in CroCo strand
7 : Durham Ginzburg-Landau critical surface model for Nb-Ti
8 : Durham Ginzburg-Landau critical surface model for REBCO
9 : Hazelton experimental data combined with Zhai conceptual model for REBCO | 1 |
### Mid-plane geometry parameters
-| Parameter | description | Iteration variable | Default | Unit |
-| - | - | - | - | - |
-| `i_tf_inside_cs` | TF coil inboard leg radial placement switch.
- 0 : Outside of central solenoid
- 1 : Inside of central solenoid | - | 0 | - |
-| `dr_tf_inboard` | TF coil maximum radial size
calculated if `dr_tf_wp` is used as iteration variable | ixc = 13 | No default | m |
-| `tfootfi` | Outboard/inboard TF coil thickness ratio | - | 1 | - |
-| `dr_tf_wp` | Winding pack radial thickness
calculated if `dr_tf_inboard` is used as iteration variable. Include the ground insulation and the insertion gap. | ixc = 140 | No default | m |
-| `dr_tf_nose_case` | Nose/inner case radial thickness | ixc = 57 | 0.3 | m |
-| `dx_tf_side_case` | Minimal sidewall casing thickness | - | - | m |
-| `casths_fraction` | Minimal sidewall casing thickness as a fraction of the TF coil toroidal thickness. Overwites the `dx_tf_side_case` input value | - | 0.03 | - |
-| `dr_tf_plasma_case` | Minimal plasma side casing thickness | - | - | m |
-| `f_dr_tf_plasma_case` | Minimal plasma side casing thickness as a fraction of the TF thickness (`dr_tf_inboard`). Overwites the `dr_tf_plasma_case` input value | - | 0.05 | - |
-| `i_tf_case_geom` | Plasma side casing geometry option:
- 0 : rounder front casing (ITER)
- 1 : Straight casing | - | 0 | - |
-| `i_tf_wp_geom` | Winding pack geometry option:
- 0 : rectangular
- 1 : double rectangle
- 2 : trapezoidal | - | Integer turn : 0
otherwise : 1 | - |
-| `tinstf` | WP ground insulation thickness | - | 0.018 | m |
-| `tfinsgap` | WP insertion gap thickness | - | 0.01 | m |
+| Parameter | description | Iteration variable | Default | Unit |
+| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------ | ---- |
+| `i_tf_inside_cs` | TF coil inboard leg radial placement switch.
- 0 : Outside of central solenoid
- 1 : Inside of central solenoid | - | 0 | - |
+| `dr_tf_inboard` | TF coil maximum radial size
calculated if `dr_tf_wp` is used as iteration variable | ixc = 13 | No default | m |
+| `tfootfi` | Outboard/inboard TF coil thickness ratio | - | 1 | - |
+| `dr_tf_wp` | Winding pack radial thickness
calculated if `dr_tf_inboard` is used as iteration variable. Include the ground insulation and the insertion gap. | ixc = 140 | No default | m |
+| `dr_tf_nose_case` | Nose/inner case radial thickness | ixc = 57 | 0.3 | m |
+| `dx_tf_side_case` | Minimal sidewall casing thickness | - | - | m |
+| `casths_fraction` | Minimal sidewall casing thickness as a fraction of the TF coil toroidal thickness. Overwites the `dx_tf_side_case` input value | - | 0.03 | - |
+| `casthi` | Minimal plasma side casing thickness | - | - | m |
+| `casthi_fraction` | Minimal plasma side casing thickness as a fraction of the TF thickness (`dr_tf_inboard`). Overwites the `casthi` input value | - | 0.05 | - |
+| `i_tf_case_geom` | Plasma side casing geometry option:
- 0 : rounder front casing (ITER)
- 1 : Straight casing | - | 0 | - |
+| `i_tf_wp_geom` | Winding pack geometry option:
- 0 : rectangular
- 1 : double rectangle
- 2 : trapezoidal | - | Integer turn : 0
otherwise : 1 | - |
+| `tinstf` | WP ground insulation thickness | - | 0.018 | m |
+| `tfinsgap` | WP insertion gap thickness | - | 0.01 | m |
+| Parameter | description | Iteration variable | Default | Unit |
+| - | - | - | - | - |
+| `i_tf_inside_cs` | TF coil inboard leg radial placement switch.
- 0 : Outside of central solenoid
- 1 : Inside of central solenoid | - | 0 | - |
+| `dr_tf_inboard` | TF coil maximum radial size
calculated if `dr_tf_wp` is used as iteration variable | ixc = 13 | No default | m |
+| `tfootfi` | Outboard/inboard TF coil thickness ratio | - | 1 | - |
+| `dr_tf_wp` | Winding pack radial thickness
calculated if `dr_tf_inboard` is used as iteration variable. Include the ground insulation and the insertion gap. | ixc = 140 | No default | m |
+| `dr_tf_nose_case` | Nose/inner case radial thickness | ixc = 57 | 0.3 | m |
+| `dx_tf_side_case` | Minimal sidewall casing thickness | - | - | m |
+| `casths_fraction` | Minimal sidewall casing thickness as a fraction of the TF coil toroidal thickness. Overwites the `dx_tf_side_case` input value | - | 0.03 | - |
+| `dr_tf_plasma_case` | Minimal plasma side casing thickness | - | - | m |
+| `f_dr_tf_plasma_case` | Minimal plasma side casing thickness as a fraction of the TF thickness (`dr_tf_inboard`). Overwites the `dr_tf_plasma_case` input value | - | 0.05 | - |
+| `i_tf_case_geom` | Plasma side casing geometry option:
- 0 : rounder front casing (ITER)
- 1 : Straight casing | - | 0 | - |
+| `i_tf_wp_geom` | Winding pack geometry option:
- 0 : rectangular
- 1 : double rectangle
- 2 : trapezoidal | - | Integer turn : 0
otherwise : 1 | - |
+| `tinstf` | WP ground insulation thickness | - | 0.018 | m |
+| `tfinsgap` | WP insertion gap thickness | - | 0.01 | m |
### Turn parameters
-| Parameter | description | Iteration variable | Default | Unit |
-| - | - | - | - | - |
-| `i_tf_turns_integer` | Switch activating the integer turn parametrization
- 0 : Integer number of turns
- 1 : non integer number of turn | - | 0 | - |
-| `n_layer` | Number of turns in the radial direction (`i_tf_turns_integer = 1` only) | - | 20 | - |
-| `n_pancake` | Number of turns in the toroidal direction (`i_tf_turns_integer = 1` only) | - | 10 | - |
-| `t_turn_tf` | TF turn squared size | - | No default | m |
-| `t_cable_tf` | TF cable diameter size | - | No default | m |
-| `f_t_turn_tf` | f-value for TF turn squared size constraint (icc = 86) | 175 | 1. | m |
-| `t_turn_tf_max` | Maximum turn squared size for constraint (icc = 86) | - | 0.05 | m |
-| `cpttf` | Current per turn
Overwitten if `t_turn_tf` is set by the user | ixc = 60 | $70.10^3$ | A |
-| `thicndut` | Turn insulation layer thickness | - | $0.8.10^{-3}$ | m |
-| `thwcndut` | Steekl jacket/conduit thickness | 58 | $8.10^{-3}$ | m |
-| `dhecoil` | Helium cooling channel diameter | - | $5.10^{-3}$ | m |
-| `vftf` | Cable void fraction | - | 0.4 | - |
-| `fcutfsu` | Copper cable fraction
defined with the cable area minus the void and cooling channel area | ixc = 59 | 0.69 | - |
+| Parameter | description | Iteration variable | Default | Unit |
+| -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------- | ---- |
+| `i_tf_turns_integer` | Switch activating the integer turn parametrization
- 0 : Integer number of turns
- 1 : non integer number of turn | - | 0 | - |
+| `n_layer` | Number of turns in the radial direction (`i_tf_turns_integer = 1` only) | - | 20 | - |
+| `n_pancake` | Number of turns in the toroidal direction (`i_tf_turns_integer = 1` only) | - | 10 | - |
+| `t_turn_tf` | TF turn squared size | - | No default | m |
+| `t_cable_tf` | TF cable diameter size | - | No default | m |
+| `f_t_turn_tf` | f-value for TF turn squared size constraint (icc = 86) | 175 | 1. | m |
+| `t_turn_tf_max` | Maximum turn squared size for constraint (icc = 86) | - | 0.05 | m |
+| `cpttf` | Current per turn
Overwitten if `t_turn_tf` is set by the user | ixc = 60 | $70.10^3$ | A |
+| `thicndut` | Turn insulation layer thickness | - | $0.8.10^{-3}$ | m |
+| `thwcndut` | Steekl jacket/conduit thickness | 58 | $8.10^{-3}$ | m |
+| `dhecoil` | Helium cooling channel diameter | - | $5.10^{-3}$ | m |
+| `vftf` | Cable void fraction | - | 0.4 | - |
+| `fcutfsu` | Copper cable fraction
defined with the cable area minus the void and cooling channel area | ixc = 59 | 0.69 | - |
### Vertical shape
-| Parameter | description | Iteration variable | Default | Unit |
-| - | - | - | - | - |
-| `itart` | Switch for tapered inboard TF section
0 : conventional inboard leg
1 : Tapered inboard leg (centrepost, CP) | - | 0 | - |
-| `i_tf_shape` | Switch selecting the TF coil shape
1 : D-shape approximation
2 : Rectangular (picture frame) shape | - | 1 : if `itart = 0`
2 : if `itart = 1`| - |
-| `r_cp_top` | CP TF coil top/bottom radius | ixc = 174 | No default | m |
-| `f_r_cp` | CP TF top/mid-plane outer radius fraction | - | 1.4 | - |
-| `i_r_cp_top` | Switch selecting the `r_cp_top` parametrization
0 : `r_cp_top` calculated using the X-point location
1 : Set by user
2 : Set with `f_r_cp` | - | 0 | - |
+| Parameter | description | Iteration variable | Default | Unit |
+| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------ | ---- |
+| `itart` | Switch for tapered inboard TF section
0 : conventional inboard leg
1 : Tapered inboard leg (centrepost, CP) | - | 0 | - |
+| `i_tf_shape` | Switch selecting the TF coil shape
1 : D-shape approximation
2 : Rectangular (picture frame) shape | - | 1 : if `itart = 0`
2 : if `itart = 1` | - |
+| `r_cp_top` | CP TF coil top/bottom radius | ixc = 174 | No default | m |
+| `f_r_cp` | CP TF top/mid-plane outer radius fraction | - | 1.4 | - |
+| `i_r_cp_top` | Switch selecting the `r_cp_top` parametrization
0 : `r_cp_top` calculated using the X-point location
1 : Set by user
2 : Set with `f_r_cp` | - | 0 | - |
### TF coil joints
-| Parameter | description | Iteration variable | Default | Unit |
-| - | - | - | - | - |
-| `i_cp_joints` | Switch selecting the TF coil demoutable joints strategy
0 : No demountable joints
1 : MAST like sliding joints | - | 0 : if `itart = 0`
1 : if `itart = 1` | - |
-| `n_tf_joints` | Number of joints per coils | - | 4 | - |
-| `n_tf_joints_contact` | Number of contacts per joints | - | 6 | - |
-| `rho_tf_joints` | Joint surfacic resistivity | - | $2.5.10^{-10}$ | $\Omega.m$ |
-| `th_joint_contact` | Joint contact thickness | - | 0.03 | m |
+| Parameter | description | Iteration variable | Default | Unit |
+| --------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------------------ | ------------------------------------------ | ---------- |
+| `i_cp_joints` | Switch selecting the TF coil demoutable joints strategy
0 : No demountable joints
1 : MAST like sliding joints | - | 0 : if `itart = 0`
1 : if `itart = 1` | - |
+| `n_tf_joints` | Number of joints per coils | - | 4 | - |
+| `n_tf_joints_contact` | Number of contacts per joints | - | 6 | - |
+| `rho_tf_joints` | Joint surfacic resistivity | - | $2.5.10^{-10}$ | $\Omega.m$ |
+| `th_joint_contact` | Joint contact thickness | - | 0.03 | m |
### TF coil inboard mid-plane stress
-| Parameter | description | Iteration variable | Default | Unit |
-| - | - | - | - | - |
-| `f_vforce_inboard` | Fraction of the vertical force supported by the inboard leg | - | 0.5 | - |
-| `i_tf_stress_model` | Switch to select the inboard mid-plane stress model
1 : Plane stress
0,2 : Generalized plane stress | - | 0 | - |
-| `i_tf_bucking` | Switch to select the bucking strategy
0 : No bucking structure
1 : TF bucking structure
2 : TF bucked on CS coil
3 : TF bucked on CS coil (CS-TF layer included in the stress calc.) | - | 0 : if `i_tf_coil \= 1`
1 : if `i_tf_coil = 1` | - |
+| Parameter | description | Iteration variable | Default | Unit |
+| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ | --------------------------------------------------- | ---- |
+| `f_vforce_inboard` | Fraction of the vertical force supported by the inboard leg | - | 0.5 | - |
+| `i_tf_stress_model` | Switch to select the inboard mid-plane stress model
1 : Plane stress
0,2 : Generalized plane stress | - | 0 | - |
+| `i_tf_bucking` | Switch to select the bucking strategy
0 : No bucking structure
1 : TF bucking structure
2 : TF bucked on CS coil
3 : TF bucked on CS coil (CS-TF layer included in the stress calc.) | - | 0 : if `i_tf_coil \= 1`
1 : if `i_tf_coil = 1` | - |
diff --git a/examples/data/large_tokamak_IN.DAT b/examples/data/large_tokamak_IN.DAT
index 79989e5542..8d46e5c939 100644
--- a/examples/data/large_tokamak_IN.DAT
+++ b/examples/data/large_tokamak_IN.DAT
@@ -216,11 +216,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3
diff --git a/examples/data/scan_example_file_IN.DAT b/examples/data/scan_example_file_IN.DAT
index e593b683de..69bca4042a 100644
--- a/examples/data/scan_example_file_IN.DAT
+++ b/examples/data/scan_example_file_IN.DAT
@@ -216,11 +216,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3
diff --git a/process/init.py b/process/init.py
index db043dad10..41c70f73ed 100644
--- a/process/init.py
+++ b/process/init.py
@@ -307,6 +307,14 @@ def check_process(inputs): # noqa: ARG001
nvar=fortran.numerics.nvar,
)
+ # Check that dr_tf_wp (ixc = 140) and dr_tf_inboard (ixc = 13) are not being used simultaneously as iteration variables
+ if (fortran.numerics.ixc[: fortran.numerics.nvar] == 13).any() and (
+ fortran.numerics.ixc[: fortran.numerics.nvar] == 140
+ ).any():
+ raise ProcessValidationError(
+ "Iteration variables 13 and 140 cannot be used simultaneously",
+ )
+
if (
fortran.numerics.icc[: fortran.numerics.neqns + fortran.numerics.nineqns] == 0
).any():
diff --git a/tests/integration/data/large_tokamak_IN.DAT b/tests/integration/data/large_tokamak_IN.DAT
index b3936cba9f..b30ffc9947 100644
--- a/tests/integration/data/large_tokamak_IN.DAT
+++ b/tests/integration/data/large_tokamak_IN.DAT
@@ -216,11 +216,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3
diff --git a/tests/integration/data/large_tokamak_eval.IN.DAT b/tests/integration/data/large_tokamak_eval.IN.DAT
index 263c1dba13..5b8fd51475 100644
--- a/tests/integration/data/large_tokamak_eval.IN.DAT
+++ b/tests/integration/data/large_tokamak_eval.IN.DAT
@@ -381,7 +381,7 @@ tdmptf = 17.97282589344206 * fast discharge time for TF coil in event of quenc
n_tf_coils = 16 * Number of TF coils (default = 50 for stellarators); Number of TF coils outer legs for ST
tftmp = 4.75 * peak helium coolant temperature in TF coils and PF coils (K)
dr_tf_nose_case = 0.2816873221155309 * inboard TF coil case outer (non-plasma side) thickness (m) (`iteration variable 57`)
-dr_tf_wp = 0.5153787768966674 * radial thickness of winding pack (m) (`iteration variable 140`) (issue #514)
+dr_tf_wp = 0.5153787768966674 * radial thickness of winding pack (m) (issue #514)
thwcndut = 0.008012110032981922 * TF coil conduit case thickness (m) (`iteration variable 58`)
tinstf = 0.008 * Thickness of the ground insulation layer surrounding (m)
tmargmin_cs = 1.5 * minimum allowable temperature margin ; CS (K)
diff --git a/tests/regression/input_files/large_tokamak.IN.DAT b/tests/regression/input_files/large_tokamak.IN.DAT
index 6827b4b361..3761746ac1 100644
--- a/tests/regression/input_files/large_tokamak.IN.DAT
+++ b/tests/regression/input_files/large_tokamak.IN.DAT
@@ -216,11 +216,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3
diff --git a/tests/regression/input_files/large_tokamak_eval.IN.DAT b/tests/regression/input_files/large_tokamak_eval.IN.DAT
index f5314205c9..ca544d56b5 100644
--- a/tests/regression/input_files/large_tokamak_eval.IN.DAT
+++ b/tests/regression/input_files/large_tokamak_eval.IN.DAT
@@ -383,7 +383,7 @@ tdmptf = 17.97282589344206 * fast discharge time for TF coil in event of quenc
n_tf_coils = 16 * Number of TF coils (default = 50 for stellarators); Number of TF coils outer legs for ST
tftmp = 4.75 * peak helium coolant temperature in TF coils and PF coils (K)
dr_tf_nose_case = 0.2816873221155309 * inboard TF coil case outer (non-plasma side) thickness (m) (`iteration variable 57`)
-dr_tf_wp = 0.5153787768966674 * radial thickness of winding pack (m) (`iteration variable 140`) (issue #514)
+dr_tf_wp = 0.5153787768966674 * radial thickness of winding pack (m) (issue #514)
thwcndut = 0.008012110032981922 * TF coil conduit case thickness (m) (`iteration variable 58`)
tinstf = 0.008 * Thickness of the ground insulation layer surrounding (m)
tmargmin_cs = 1.5 * minimum allowable temperature margin ; CS (K)
diff --git a/tests/regression/input_files/large_tokamak_nof.IN.DAT b/tests/regression/input_files/large_tokamak_nof.IN.DAT
index 6cb9bceaee..dca55ebd70 100644
--- a/tests/regression/input_files/large_tokamak_nof.IN.DAT
+++ b/tests/regression/input_files/large_tokamak_nof.IN.DAT
@@ -198,11 +198,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3
diff --git a/tests/unit/data/large_tokamak_IN.DAT b/tests/unit/data/large_tokamak_IN.DAT
index 3d993dc7d1..e502f45531 100644
--- a/tests/unit/data/large_tokamak_IN.DAT
+++ b/tests/unit/data/large_tokamak_IN.DAT
@@ -216,11 +216,6 @@ te = 12.0
ixc = 10
boundu(10) = 1.2
-* dr_tf_inboard [m]
-ixc = 13
-boundl(13) = 0.7
-dr_tf_inboard = 1.2
-
* dr_cs [m]
ixc = 16
boundl(16) = 0.3