Repository: ukaea/PROCESS
Pull request #3634: 3378 new proposed bootstrap surrogate model
Author: login: chris-ashe
Labels: name: Bootstrap Current
description: Bootstrap current generated by the plasma
name: New Variables
Created: 2025-04-22T11:05:01Z | Merged: 2025-04-24T13:12:26Z

This pull request introduces the Sugiyama bootstrap current scaling models (L-mode and H-mode) into the codebase, along with supporting changes to integrate these models into the existing framework. Key updates include documentation, Fortran variable definitions, Python methods for calculations, and visualization enhancements.

### Additions to Bootstrap Current Models:
* **Documentation**: Added detailed descriptions of the Sugiyama L-mode and H-mode scaling models, including equations, parameter ranges, and convergence statistics in `bootstrap_current.md`.
* **Fortran Variables**: Defined new variables `f_c_plasma_bootstrap_sugiyama_l` and `f_c_plasma_bootstrap_sugiyama_h` to store the bootstrap current fractions for Sugiyama models. 

### Python Code Enhancements:
* **Calculation Methods**: Introduced `bootstrap_fraction_sugiyama_l_mode` and `bootstrap_fraction_sugiyama_h_mode` methods for computing the bootstrap current fractions based on Sugiyama's scalings.
* **Integration in Physics Pipeline**: Updated `physics()` to compute Sugiyama bootstrap fractions and added them to the bootstrap current selection logic. 
* **Visualization Updates**: Enhanced the `plot_bootstrap_comparison` function to include Sugiyama L-mode and H-mode data in violin plots. 

### Miscellaneous Updates:
* **Input Range Adjustment**: Expanded the range of `i_bootstrap_current` to include values 12 and 13 for selecting Sugiyama L-mode and H-mode scalings.
* **Initialization**: Added initialization for Sugiyama bootstrap variables in `init_current_drive_variables`.
* **References**: Added a new reference for Sugiyama et al. 2025 to the documentation.


<!-- What does this PR do? Please list any issue that these changes address and how you have gone about implementing the changes -->

## Checklist

I confirm that I have completed the following checks:

- [ ] My changes follow the [PROCESS style guide](https://ukaea.github.io/PROCESS/development/standards/)
- [ ] I have justified any large differences in the regression tests caused by this pull request in the comments.
- [ ] I have added new tests where appropriate for the changes I have made.
- [ ] If I have had to change any existing unit or integration tests, I have justified this change in the pull request comments.
- [ ] If I have made documentation changes, I have checked they render correctly.
- [ ] I have added documentation for my change, if appropriate.



Diff:
diff --git a/documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md b/documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
index 0d6baa5b99..b8544aef39 100644
--- a/documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
+++ b/documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
@@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The parameters for the ACCOME database are as follows, with the scan range in the table below:
+
+- $R$ = 6 m
+- $\kappa \sim 1.8$ 
+- $\delta \sim 0.4$
+- $Z_{\text{eff}}$ has a uniform profile, and only fully stripped carbon is considered as an impurity.
+- $T_{\text{e}} = T_{\text{i}}$
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| Plasma Current, $I_{\text{p}} [\mathrm{MA}]$ | 30.0, 27.0, 22.0, 20.0, 17.5, 13.0, 11.5, 10.0, 8.8, 8.0             |
+| Toroidal magnetic field on axis, $B_{\text{T}} [\mathrm{T}]$ | 3.5, 3.5, 3.5, 4.1, 4.5, 4.5, 5.2, 5.67, 6.8, 8.5                  |
+
+---------------
+
+#### L-mode Scaling | `bootstrap_fraction_sugiyama_l_mode()`
+
+Is selected by setting `i_bootstrap_current = 12`
+
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| $\alpha_{\text{n}}$ | 0.1, 0.3, 0.5, 0.7, 0.3, 1.1            |
+| $\alpha_{\text{T}}$ | 1.0, 1.4, 1.8, 2.2, 2.6, 3.0            |
+| $Z_{\text{eff}}$ | 1.2, 1.5, 2.0, 2.5, 3.0           |
+| $n_{\text{e,0}} \  [10^{20} \text{m}^{-3}]$  | 0.5, 1.0, 2.0                  |
+| $T_{\text{e,0}} \  [\text{keV}]$  | 20, 30, 30                  |
+| $a_{\text{j}}$  | 0.2, 0.5, 1.0, 1.1, 2.0, 2.0, 4.0, 10.0, 50.0                 |
+| $b_{\text{j}}$  | 2.0, 2.0, 1.0, 2.0, 1.0, 2.0, 4.0, 4.0, 4.0                  |
+
+The scan range for the L-mode scaling is seen in the table above and for the variables in the top table which are shared between both scalings.  For all combinations in both tables there are 48,600 cases of which 47,652 converged. The mean error of the scaling with the ACCOME data is, $\text{ME} = 5.92 \times 10^{-4}$, with the root mean squared error being,  $\text{RMSE} = 0.0236$.
+
+$$
+f_{\text{BS}}^{\text{L}} = 0.740 \epsilon^{0.418} \beta_{\text{p}}^{0.904} \alpha_{\text{n}}^{0.06} \alpha_{\text{T}}^{-0.138} Z_{\text{eff}}^{0.230} \left(\frac{q_{95}}{q_0}\right)^{-0.142}
+$$
+
+------------
+
+#### H-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
+
+Is selected by setting `i_bootstrap_current = 13`
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| $\alpha_{\text{n}}$ | 0.8, 1.4, 2.2, 3.0           |
+| $\alpha_{\text{T}}$ | 1.2, 1.5, 3.0, 6.0            |
+| $b_{\text{T}}$ | 1.2, 1.5, 3.0, 6.0            |
+| $Z_{\text{eff}}$ | 1.2, 1.5, 2.0, 3.0           |
+| $n_{\text{e,0}} \  [10^{20} \text{m}^{-3}]$ | 1.5 |
+| $T_{\text{e,0}} \  [\text{keV}]$  | 30                  |
+| $n_{\text{e,ped}} \  [10^{20} \text{m}^{-3}]$  | 0.6, 1.05, 1.5                 |
+| $T_{\text{ped}} \ [\text{keV}]$  | 0.5, 2.0, 4.0, 8.0 |
+| $\rho_{\text{ped}}$  | 0.85, 0.92, 0.99 |
+| $a_{\text{j}}$  | 0.6, 1.2, 1.5, 1.1, 10.0, 50.0                 |
+| $b_{\text{j}}$  | 2.0, 1.5, 1.0, 4.0, 4.0                |
+
+The scan range for the H-mode scaling is seen in the table above and for the variables in the top table which are shared between both scalings.  For all combinations in both tables there are 460,800 cases of which 330,149 converged. The mean error of the scaling with the ACCOME data is, $\text{ME} = 1.17 \times 10^{-4}$, with the root mean squared error being,  $\text{RMSE} = 0.0324$.
+
+It is also assumed that:
+
+- $n_{\text{sep}} = 0 \ \text{m}^{-3}$
+- $T_{\text{sep}} = 0 \ \text{keV}$
+- $\rho_{\text{ped}} = \rho_{\text{ped,n}} = \rho_{\text{ped,T}}$
+
+$$
+f_{\text{BS}}^{\text{H}} = 0.789 \epsilon^{0.606} \beta_{\text{p}}^{0.960} \alpha_{\text{n}}^{0.0319} \alpha_{\text{T}}^{0.00822} b_{\text{T}}^{-0.0783} Z_{\text{eff}}^{0.241} \\ \times \left(\frac{q_{95}}{q_0}\right)^{-0.103} \rho_{\text{ped}}^{0.367} \left(\frac{n_{\text{e,ped}}}{n_{\text{GW}}}\right)^{-0.174} T_{\text{ped,keV}}^{0.0552}
+$$
+
+---------------------
+
 ## Setting of maximum desirable bootstrap current fraction
 
 The variable `f_c_plasma_bootstrap_max` can be set to the value of maximum desirable bootstrap current fraction for a specific design. When optimising if the value of the calculated `f_c_plasma_bootstrap` for the model selected with `i_bootstrap_current` exceeds this value, then `f_c_plasma_bootstrap` is set to the value of `f_c_plasma_bootstrap_max`.
@@ -727,4 +809,6 @@ Fusion Engineering and Design, Volume 89, Issue 11, 2014, Pages 2709-2715, ISSN
 [^10]: G. T. Hoang and R. V. Budny, “The bootstrap fraction in TFTR,” AIP conference proceedings, Jan. 1997, doi: https://doi.org/10.1063/1.53414.
 [^11]: C.-P. Wong, J. C. Wesley, R. D. Stambaugh, and E. T. Cheng, “Toroidal reactor designs as a function of aspect ratio and elongation,” vol. 42, no. 5, pp. 547–556, May 2002, doi: https://doi.org/10.1088/0029-5515/42/5/307.
 [^12]: Miller, R L, "Stable bootstrap-current driven equilibria for low aspect ratio tokamaks". Switzerland: N. p., 1996. Web.https://fusion.gat.com/pubs-ext/MISCONF96/A22433.pdf
-[^13]: K. Gi, M. Nakamura, Kenji Tobita, and Y. Ono, “Bootstrap current fraction scaling for a tokamak reactor design study,” Fusion Engineering and Design, vol. 89, no. 11, pp. 2709–2715, Aug. 2014, doi: https://doi.org/10.1016/j.fusengdes.2014.07.009.
\ No newline at end of file
+[^13]: K. Gi, M. Nakamura, Kenji Tobita, and Y. Ono, “Bootstrap current fraction scaling for a tokamak reactor design study,” Fusion Engineering and Design, vol. 89, no. 11, pp. 2709–2715, Aug. 2014, doi: https://doi.org/10.1016/j.fusengdes.2014.07.009.
+[^14]: S. Sugiyama, T. Goto, H. Utoh, and Y. Sakamoto, “Improvement of core plasma power and current balance models for tokamak systems code considering H-mode plasma profiles,” Fusion Engineering and Design, vol. 216, p. 115022, Jul. 2025, doi: https://doi.org/10.1016/j.fusengdes.2025.115022.
+‌ 
\ No newline at end of file
diff --git a/process/current_drive.py b/process/current_drive.py
index 9d066259eb..8f34cf283e 100644
--- a/process/current_drive.py
+++ b/process/current_drive.py
@@ -2228,6 +2228,8 @@ def init_current_drive_variables():
     current_drive_variables.f_c_plasma_bootstrap_wong = 0.0
     current_drive_variables.bscf_gi_i = 0.0
     current_drive_variables.bscf_gi_ii = 0.0
+    current_drive_variables.f_c_plasma_bootstrap_sugiyama_l = 0.0
+    current_drive_variables.f_c_plasma_bootstrap_sugiyama_h = 0.0
     current_drive_variables.cboot = 1.0
     current_drive_variables.c_beam_total = 0.0
     current_drive_variables.f_c_plasma_diamagnetic_hender = 0.0
diff --git a/process/input.py b/process/input.py
index be45298a1a..b1f267f72a 100644
--- a/process/input.py
+++ b/process/input.py
@@ -1467,7 +1467,7 @@ def __post_init__(self):
     "i_bldgs_size": InputVariable(fortran.buildings_variables, int, choices=[0, 1]),
     "i_bldgs_v": InputVariable(fortran.buildings_variables, int, choices=[0, 1]),
     "i_blkt_inboard": InputVariable(fortran.fwbs_variables, int, choices=[0, 1]),
-    "i_bootstrap_current": InputVariable(fortran.physics_variables, int, range=(1, 11)),
+    "i_bootstrap_current": InputVariable(fortran.physics_variables, int, range=(1, 13)),
     "i_cp_joints": InputVariable(fortran.tfcoil_variables, int, choices=[0, 1]),
     "i_cp_lifetime": InputVariable(fortran.cost_variables, int, range=(0, 3)),
     "i_cs_precomp": InputVariable(fortran.build_variables, int, choices=[0, 1]),
diff --git a/process/io/plot_proc.py b/process/io/plot_proc.py
index 4e8788ec8f..3886955429 100644
--- a/process/io/plot_proc.py
+++ b/process/io/plot_proc.py
@@ -3296,6 +3296,8 @@ def plot_bootstrap_comparison(axis, mfile_data, scan):
     boot_wong = mfile_data.data["f_c_plasma_bootstrap_wong"].get_scan(scan)
     boot_gi_I = mfile_data.data["bscf_gi_i"].get_scan(scan)  # noqa: N806
     boot_gi_II = mfile_data.data["bscf_gi_ii"].get_scan(scan)  # noqa: N806
+    boot_sugiyama_l = mfile_data.data["f_c_plasma_bootstrap_sugiyama_l"].get_scan(scan)
+    boot_sugiyama_h = mfile_data.data["f_c_plasma_bootstrap_sugiyama_h"].get_scan(scan)
 
     # Data for the box plot
     data = {
@@ -3310,6 +3312,8 @@ def plot_bootstrap_comparison(axis, mfile_data, scan):
         "Wong": boot_wong,
         "Gi-I": boot_gi_I,
         "Gi-II": boot_gi_II,
+        "Sugiyama (L-mode)": boot_sugiyama_l,
+        "Sugiyama (H-mode)": boot_sugiyama_h,
     }
     # Create the violin plot
     axis.violinplot(data.values(), showextrema=False)
diff --git a/process/physics.py b/process/physics.py
index 3b42a64da8..6d0a84d4b1 100644
--- a/process/physics.py
+++ b/process/physics.py
@@ -1937,6 +1937,35 @@ def physics(self):
                 effective_charge=physics_variables.zeff,
             )
         )
+        current_drive_variables.f_c_plasma_bootstrap_sugiyama_l = (
+            current_drive_variables.cboot
+            * self.bootstrap_fraction_sugiyama_l_mode(
+                eps=physics_variables.eps,
+                beta_poloidal=physics_variables.beta_poloidal,
+                alphan=physics_variables.alphan,
+                alphat=physics_variables.alphat,
+                zeff=physics_variables.zeff,
+                q95=physics_variables.q95,
+                q0=physics_variables.q0,
+            )
+        )
+        current_drive_variables.f_c_plasma_bootstrap_sugiyama_h = (
+            current_drive_variables.cboot
+            * self.bootstrap_fraction_sugiyama_h_mode(
+                eps=physics_variables.eps,
+                beta_poloidal=physics_variables.beta_poloidal,
+                alphan=physics_variables.alphan,
+                alphat=physics_variables.alphat,
+                tbeta=physics_variables.tbeta,
+                zeff=physics_variables.zeff,
+                q95=physics_variables.q95,
+                q0=physics_variables.q0,
+                rhopedn=physics_variables.rhopedn,
+                neped=physics_variables.neped,
+                n_greenwald=physics_variables.dlimit[6],
+                teped=physics_variables.teped,
+            )
+        )
 
         if current_drive_variables.f_c_plasma_bootstrap_max < 0.0e0:
             current_drive_variables.f_c_plasma_bootstrap = abs(
@@ -1946,52 +1975,25 @@ def physics(self):
                 current_drive_variables.f_c_plasma_bootstrap
             )
         else:
-            if physics_variables.i_bootstrap_current == 1:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_iter89
-                )
-            elif physics_variables.i_bootstrap_current == 2:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_nevins
-                )
-            elif physics_variables.i_bootstrap_current == 3:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_wilson
-                )
-            elif physics_variables.i_bootstrap_current == 4:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_sauter
-                )
-            elif physics_variables.i_bootstrap_current == 5:
-                # Sakai states that the ACCOME dataset used has the toridal diamagnetic current included in the bootstrap current
-                # So the diamagnetic current calculation should be turned off when using, (i_diamagnetic_current = 0).
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_sakai
-                )
-            elif physics_variables.i_bootstrap_current == 6:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_aries
-                )
-            elif physics_variables.i_bootstrap_current == 7:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_andrade
-                )
-            elif physics_variables.i_bootstrap_current == 8:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_hoang
-                )
-            elif physics_variables.i_bootstrap_current == 9:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.f_c_plasma_bootstrap_wong
-                )
-            elif physics_variables.i_bootstrap_current == 10:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.bscf_gi_I
-                )
-            elif physics_variables.i_bootstrap_current == 11:
-                current_drive_variables.f_c_plasma_bootstrap = (
-                    current_drive_variables.bscf_gi_II
-                )
+            bootstrap_map = {
+                1: current_drive_variables.f_c_plasma_bootstrap_iter89,
+                2: current_drive_variables.f_c_plasma_bootstrap_nevins,
+                3: current_drive_variables.f_c_plasma_bootstrap_wilson,
+                4: current_drive_variables.f_c_plasma_bootstrap_sauter,
+                5: current_drive_variables.f_c_plasma_bootstrap_sakai,
+                6: current_drive_variables.f_c_plasma_bootstrap_aries,
+                7: current_drive_variables.f_c_plasma_bootstrap_andrade,
+                8: current_drive_variables.f_c_plasma_bootstrap_hoang,
+                9: current_drive_variables.f_c_plasma_bootstrap_wong,
+                10: current_drive_variables.bscf_gi_I,
+                11: current_drive_variables.bscf_gi_II,
+                12: current_drive_variables.f_c_plasma_bootstrap_sugiyama_l,
+                13: current_drive_variables.f_c_plasma_bootstrap_sugiyama_h,
+            }
+            if int(physics_variables.i_bootstrap_current) in bootstrap_map:
+                current_drive_variables.f_c_plasma_bootstrap = bootstrap_map[
+                    int(physics_variables.i_bootstrap_current)
+                ]
             else:
                 raise ProcessValueError(
                     "Illegal value of i_bootstrap_current",
@@ -5750,6 +5752,20 @@ def outplas(self):
                 current_drive_variables.bscf_gi_II,
                 "OP ",
             )
+            po.ovarrf(
+                self.outfile,
+                "Bootstrap fraction (Sugiyama L-mode)",
+                "(f_c_plasma_bootstrap_sugiyama_l)",
+                current_drive_variables.f_c_plasma_bootstrap_sugiyama_l,
+                "OP ",
+            )
+            po.ovarrf(
+                self.outfile,
+                "Bootstrap fraction (Sugiyama H-mode)",
+                "(f_c_plasma_bootstrap_sugiyama_h)",
+                current_drive_variables.f_c_plasma_bootstrap_sugiyama_h,
+                "OP ",
+            )
 
             po.ovarrf(
                 self.outfile,
@@ -6765,6 +6781,133 @@ def bootstrap_fraction_gi_II(  # noqa: N802
 
         return c_bs * np.sqrt(inverse_aspect) * beta_poloidal
 
+    @staticmethod
+    def bootstrap_fraction_sugiyama_l_mode(
+        eps: float,
+        beta_poloidal: float,
+        alphan: float,
+        alphat: float,
+        zeff: float,
+        q95: float,
+        q0: float,
+    ) -> float:
+        """
+        Calculate the bootstrap fraction using the L-mode scaling from the Sugiyama et al formula.
+
+        :param eps: Inverse aspect ratio.
+        :type eps: float
+        :param beta_poloidal: Plasma poloidal beta.
+        :type beta_poloidal: float
+        :param alphan: Density profile index.
+        :type alphan: float
+        :param alphat: Temperature profile index.
+        :type alphat: float
+        :param zeff: Plasma effective charge.
+        :type zeff: float
+        :param q95: Safety factor at 95% of the plasma radius.
+        :type q95: float
+        :param q0: Safety factor at the magnetic axis.
+        :type q0: float
+
+        :returns: The calculated bootstrap fraction.
+        :rtype: float
+
+        :notes:
+            - This scaling is derived for L-mode plasmas.
+            - Ion and electron temperature are the same
+            - Z_eff has a uniform profile, with only fully stripped carbon impurity
+
+        :references:
+            - S. Sugiyama, T. Goto, H. Utoh, and Y. Sakamoto, “Improvement of core plasma power and
+              current balance models for tokamak systems code considering H-mode plasma profiles,”
+              Fusion Engineering and Design, vol. 216, p. 115022, Jul. 2025, doi:
+              https://doi.org/10.1016/j.fusengdes.2025.115022.
+        """
+
+        return (
+            0.740
+            * eps**0.418
+            * beta_poloidal**0.904
+            * alphan**0.06
+            * alphat**-0.138
+            * zeff**0.230
+            * (q95 / q0) ** -0.142
+        )
+
+    @staticmethod
+    def bootstrap_fraction_sugiyama_h_mode(
+        eps: float,
+        beta_poloidal: float,
+        alphan: float,
+        alphat: float,
+        tbeta: float,
+        zeff: float,
+        q95: float,
+        q0: float,
+        rhopedn: float,
+        neped: float,
+        n_greenwald: float,
+        teped: float,
+    ) -> float:
+        """
+        Calculate the bootstrap fraction using the H-mode scaling from the Sugiyama et al formula.
+
+        :param eps: Inverse aspect ratio.
+        :type eps: float
+        :param beta_poloidal: Plasma poloidal beta.
+        :type beta_poloidal: float
+        :param alphan: Density profile index.
+        :type alphan: float
+        :param alphat: Temperature profile index.
+        :type alphat: float
+        :param tbeta: Second temperature profile index.
+        :type tbeta: float
+        :param zeff: Plasma effective charge.
+        :type zeff: float
+        :param q95: Safety factor at 95% of the plasma radius.
+        :type q95: float
+        :param q0: Safety factor at the magnetic axis.
+        :type q0: float
+        :param rhopedn: Normalised plasma radius of density pedestal.
+        :type rhopedn: float
+        :param neped: Electron number density at the pedestal [m^-3].
+        :type neped: float
+        :param n_greenwald: Greenwald density limit [m^-3].
+        :type n_greenwald: float
+        :param teped: Electron temperature at the pedestal [keV].
+        :type teped: float
+
+        :returns: The calculated bootstrap fraction.
+        :rtype: float
+
+        :notes:
+            - This scaling is derived for H-mode plasmas.
+            - The temperature and density pedestal positions are the same
+            - Separatrix temperature and density are zero
+            - Ion and electron temperature are the same
+            - Z_eff has a uniform profile, with only fully stripped carbon impurity
+
+        :references:
+            - S. Sugiyama, T. Goto, H. Utoh, and Y. Sakamoto, “Improvement of core plasma power and
+              current balance models for tokamak systems code considering H-mode plasma profiles,”
+              Fusion Engineering and Design, vol. 216, p. 115022, Jul. 2025, doi:
+              https://doi.org/10.1016/j.fusengdes.2025.115022.
+        """
+
+        return (
+            0.789
+            * eps**0.606
+            * beta_poloidal**0.960
+            * alphan**0.0319
+            * alphat**0.00822
+            * tbeta**-0.0783
+            * zeff**0.241
+            * (q95 / q0) ** -0.103
+            * rhopedn**0.367
+            * (neped / n_greenwald) ** -0.174
+            * teped**0.0552
+        )
+
     def find_other_h_factors(self, i_confinement_time: int) -> float:
         """
         Function to find H-factor for the equivalent confinement time in other scalings.
diff --git a/source/fortran/current_drive_variables.f90 b/source/fortran/current_drive_variables.f90
index f1ff175c11..7e68119433 100644
--- a/source/fortran/current_drive_variables.f90
+++ b/source/fortran/current_drive_variables.f90
@@ -63,6 +63,12 @@ module current_drive_variables
   real(dp) :: bscf_gi_II
   !! Bootstrap current fraction, second Gi et al model
 
+  real(dp) :: f_c_plasma_bootstrap_sugiyama_l
+  !! Bootstrap current fraction, L-mode Sugiyama et al model
+
+  real(dp) :: f_c_plasma_bootstrap_sugiyama_h
+  !! Bootstrap current fraction, H-mode Sugiyama et al model
+
   real(dp) :: cboot
   !! bootstrap current fraction multiplier
 
diff --git a/source/fortran/physics_variables.f90 b/source/fortran/physics_variables.f90
index bda11aea51..28257f60a2 100644
--- a/source/fortran/physics_variables.f90
+++ b/source/fortran/physics_variables.f90
@@ -304,6 +304,8 @@ module physics_variables
   !! - =9 for Wong et al scaling
   !! - =10 for Gi-I et al scaling
   !! - =11 for Gi-II et al scaling
+  !! - =12 for Sugiyama (L-mode) et al scaling
+  !! - =13 for Sugiyama (H-mode) et al scaling
 
   integer :: i_beta_component
   !! switch for beta limit scaling (`constraint equation 24`)
diff --git a/tests/unit/test_physics.py b/tests/unit/test_physics.py
index f59083379f..9ce5d2e93e 100644
--- a/tests/unit/test_physics.py
+++ b/tests/unit/test_physics.py
@@ -868,6 +868,176 @@ def test_bootstrap_fraction_gi_II(bootstrapfractiongiiiparam, physics):  # noqa:
     assert bfs == pytest.approx(bootstrapfractiongiiiparam.expected_bfs)
 
 
+class BootstrapFractionSugiyamaLModeParam(NamedTuple):
+    eps: Any = None
+    beta_poloidal: Any = None
+    alphan: Any = None
+    alphat: Any = None
+    zeff: Any = None
+    q95: Any = None
+    q0: Any = None
+    expected_bfs: Any = None
+
+
+@pytest.mark.parametrize(
+    "bootstrapfractionsugiyamalparam",
+    (
+        BootstrapFractionSugiyamaLModeParam(
+            eps=0.33333333,
+            beta_poloidal=1.2708883332338736,
+            alphan=1.0,
+            alphat=1.45,
+            zeff=2.5,
+            q95=3.5,
+            q0=1.0,
+            expected_bfs=0.5700433347072669,
+        ),
+        BootstrapFractionSugiyamaLModeParam(
+            eps=0.25,
+            beta_poloidal=1.1,
+            alphan=0.9,
+            alphat=1.3,
+            zeff=2.0,
+            q95=4.0,
+            q0=1.2,
+            expected_bfs=0.42806341892858024,
+        ),
+    ),
+)
+def test_bootstrap_fraction_sugiyama_l_mode(bootstrapfractionsugiyamalparam, physics):
+    """
+    Test bootstrap_fraction_sugiyama_l_mode function.
+
+    This test validates the Sugiyama L-mode bootstrap fraction calculation
+    using predefined parameters and expected results.
+
+    :param bootstrapfractionsugiyamalparam: Parameters for the test case.
+    :type bootstrapfractionsugiyamalparam: BootstrapFractionSugiyamaLModeParam
+    """
+    bfs = physics.bootstrap_fraction_sugiyama_l_mode(
+        eps=bootstrapfractionsugiyamalparam.eps,
+        beta_poloidal=bootstrapfractionsugiyamalparam.beta_poloidal,
+        alphan=bootstrapfractionsugiyamalparam.alphan,
+        alphat=bootstrapfractionsugiyamalparam.alphat,
+        zeff=bootstrapfractionsugiyamalparam.zeff,
+        q95=bootstrapfractionsugiyamalparam.q95,
+        q0=bootstrapfractionsugiyamalparam.q0,
+    )
+
+    assert bfs == pytest.approx(bootstrapfractionsugiyamalparam.expected_bfs)
+
+
+class BootstrapFractionSugiyamaHModeParam(NamedTuple):
+    eps: Any = None
+    beta_poloidal: Any = None
+    alphan: Any = None
+    alphat: Any = None
+    tbeta: Any = None
+    zeff: Any = None
+    q95: Any = None
+    q0: Any = None
+    rhopedn: Any = None
+    neped: Any = None
+    n_greenwald: Any = None
+    teped: Any = None
+    expected_bfs: Any = None
+
+
+@pytest.mark.parametrize(
+    "bootstrapfractionsugiyamahparam",
+    (
+        BootstrapFractionSugiyamaHModeParam(
+            eps=0.33333333,
+            beta_poloidal=1.2708883332338736,
+            alphan=1.0,
+            alphat=1.45,
+            tbeta=2.0,
+            zeff=2.5,
+            q95=3.5,
+            q0=1.0,
+            rhopedn=0.9,
+            neped=6.0e19,
+            n_greenwald=8.0e19,
+            teped=5.0,
+            expected_bfs=0.5875359328840783,
+        ),
+        BootstrapFractionSugiyamaHModeParam(
+            eps=0.25,
+            beta_poloidal=1.1,
+            alphan=0.9,
+            alphat=1.3,
+            tbeta=1.8,
+            zeff=2.0,
+            q95=4.0,
+            q0=1.2,
+            rhopedn=0.85,
+            neped=5.5e19,
+            n_greenwald=7.5e19,
+            teped=4.5,
+            expected_bfs=0.40154857221044604,
+        ),
+        # JA-DEMO steady state case from the paper
+        BootstrapFractionSugiyamaHModeParam(
+            eps=0.2847058823529412,
+            beta_poloidal=1.52,
+            alphan=1.7,
+            alphat=4.5,
+            tbeta=2.65,
+            zeff=1.84,
+            q95=4.09,
+            q0=1.0,
+            rhopedn=0.91,
+            neped=0.98e20,
+            n_greenwald=1e20,
+            teped=6.0,
+            expected_bfs=0.5634482876932788,
+        ),
+        # ITER 15MA case from the paper
+        BootstrapFractionSugiyamaHModeParam(
+            eps=0.3225806451612903,
+            beta_poloidal=0.691,
+            alphan=0.3,
+            alphat=4.0,
+            tbeta=2.0,
+            zeff=1.8,
+            q95=6.26,
+            q0=1.0,
+            rhopedn=0.93,
+            neped=0.75e20,
+            n_greenwald=1e20,
+            teped=6.0,
+            expected_bfs=0.2770187998673241,
+        ),
+    ),
+)
+def test_bootstrap_fraction_sugiyama_h_mode(bootstrapfractionsugiyamahparam, physics):
+    """
+    Test bootstrap_fraction_sugiyama_h_mode function.
+
+    This test validates the Sugiyama H-mode bootstrap fraction calculation
+    using predefined parameters and expected results.
+
+    :param bootstrapfractionsugiyamahparam: Parameters for the test case.
+    :type bootstrapfractionsugiyamahparam: BootstrapFractionSugiyamaHModeParam
+    """
+    bfs = physics.bootstrap_fraction_sugiyama_h_mode(
+        eps=bootstrapfractionsugiyamahparam.eps,
+        beta_poloidal=bootstrapfractionsugiyamahparam.beta_poloidal,
+        alphan=bootstrapfractionsugiyamahparam.alphan,
+        alphat=bootstrapfractionsugiyamahparam.alphat,
+        tbeta=bootstrapfractionsugiyamahparam.tbeta,
+        zeff=bootstrapfractionsugiyamahparam.zeff,
+        q95=bootstrapfractionsugiyamahparam.q95,
+        q0=bootstrapfractionsugiyamahparam.q0,
+        rhopedn=bootstrapfractionsugiyamahparam.rhopedn,
+        neped=bootstrapfractionsugiyamahparam.neped,
+        n_greenwald=bootstrapfractionsugiyamahparam.n_greenwald,
+        teped=bootstrapfractionsugiyamahparam.teped,
+    )
+
+    assert bfs == pytest.approx(bootstrapfractionsugiyamahparam.expected_bfs)
+
+
 class PlasmaCurrentParam(NamedTuple):
     beta_norm_total: Any = None
 


Reviews:
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces Sugiyama bootstrap current scaling models (both L-mode and H-mode) into the codebase, enhancing the physics calculations and visualization while updating the documentation and input parameters accordingly.
- Added new Python methods for calculating Sugiyama L-mode and H-mode bootstrap fractions.
- Integrated new Fortran variable definitions and updated the bootstrap current selection logic.
- Extended tests, updated input ranges, and enhanced documentation with parameter ranges and scaling equations.

### Reviewed Changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File                                                                              | Description                                                           |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| tests/unit/test_physics.py                                                        | Added test cases for validating Sugiyama bootstrap fraction functions |
| process/physics.py                                                                | Integrated new bootstrap models using dictionary mapping              |
| process/io/plot_proc.py                                                           | Enhanced plotting to include Sugiyama L-mode and H-mode data             |
| process/input.py                                                                  | Expanded the range for i_bootstrap_current to include new models         |
| process/current_drive.py                                                          | Initialized variables for new Sugiyama bootstrap models                  |
| documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md       | Updated documentation with new Sugiyama scaling details and parameter lists |
</details>


<details>
<summary>Files not reviewed (2)</summary>

* **source/fortran/current_drive_variables.f90**: Language not supported
* **source/fortran/physics_variables.f90**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (2)</summary>

**documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md:721**
* The header for L-mode scaling incorrectly references `bootstrap_fraction_sugiyama_h_mode()`. It should be updated to `bootstrap_fraction_sugiyama_l_mode()` to match the implementation.
```
#### L-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
```
**documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md:710**
* The word 'unfiorm' is misspelled; please correct it to 'uniform'.
```
$Z_{\text{eff}}$ has a unfiorm profile, and only fully stripped carbon impurity
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T11:05:39Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces new bootstrap current surrogate models based on the Sugiyama scaling for both L-mode and H-mode plasmas. Key changes include new Fortran variable definitions and integration of the Sugiyama scaling models into the physics pipeline, updated test cases, input range modifications, and enhanced documentation.

### Reviewed Changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File | Description |
| ---- | ----------- |
| tests/unit/test_physics.py | Added new test cases for Sugiyama L-mode and H-mode bootstrap fraction calculations. |
| process/physics.py | Integrated Sugiyama bootstrap current calculations (L-mode and H-mode) into the physics routine using a new bootstrap map. |
| process/input.py | Expanded the valid range for i_bootstrap_current to include the new model indices. |
| process/current_drive.py | Initialized new bootstrap current variables for Sugiyama models. |
| documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md | Updated documentation to describe the new Sugiyama scaling models and added a new reference. |
</details>


<details>
<summary>Files not reviewed (2)</summary>

* **source/fortran/current_drive_variables.f90**: Language not supported
* **source/fortran/physics_variables.f90**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md:721**
* The header for the L-mode scaling model incorrectly references `bootstrap_fraction_sugiyama_h_mode()`. It should reference `bootstrap_fraction_sugiyama_l_mode()` to clearly distinguish the two scaling models.
```
#### L-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T11:06:38Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This PR introduces two new bootstrap surrogate models based on Sugiyama scaling (L‐mode and H‐mode) into the codebase. Key changes include:
- Adding new Python methods for calculating Sugiyama bootstrap fractions and integrating them into the physics pipeline.
- Extending the input variable range and updating related plotting, testing, and initialization code.
- Enhancing the documentation with detailed descriptions and reference updates for the Sugiyama scalings.

### Reviewed Changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated no comments.

<details>
<summary>Show a summary per file</summary>

| File                                                                  | Description                                                               |
| --------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| tests/unit/test_physics.py                                            | Added new parameterized tests for Sugiyama bootstrap fraction calculations |
| process/physics.py                                                    | Integrated new bootstrap models and replaced an if‑else chain with a dict   |
| process/io/plot_proc.py                                               | Updated bootstrap comparison plot to include Sugiyama L‑ and H‑mode data  |
| process/input.py                                                      | Expanded the range for i_bootstrap_current to include the new models         |
| process/current_drive.py                                              | Initialized new bootstrap current surrogate variables                     |
| documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md | Added documentation for Sugiyama L‑ and H‑mode scaling models and a new reference [^14] |
</details>


<details>
<summary>Files not reviewed (2)</summary>

* **source/fortran/current_drive_variables.f90**: Language not supported
* **source/fortran/physics_variables.f90**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md:721**
* The header for L-mode scaling incorrectly references 'bootstrap_fraction_sugiyama_h_mode()'. It should instead reference 'bootstrap_fraction_sugiyama_l_mode()' to match the implementation.
```
#### L-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-22T12:45:19Z
user: login: timothy-nunn
body: Happy with code except for one minor comment
state: CHANGES_REQUESTED
author_association: COLLABORATOR
submitted_at: 2025-04-23T12:32:36Z
user: login: j-a-foster
body: Some minor spelling errors, otherwise happy with the docs.
state: CHANGES_REQUESTED
author_association: COLLABORATOR
submitted_at: 2025-04-23T12:33:38Z
user: login: chris-ashe
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-04-23T13:50:25Z
user: login: timothy-nunn
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-23T14:26:08Z
user: login: timothy-nunn
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-24T08:42:30Z
user: login: copilot-pull-request-reviewer[bot]
body: ## Pull Request Overview

This pull request introduces the Sugiyama bootstrap current scaling models (L‐mode and H‐mode) into the codebase and integrates them with the physics calculations, visualization routines, input handling and documentation. Key changes include:
- New calculation methods (bootstrap_fraction_sugiyama_l_mode and bootstrap_fraction_sugiyama_h_mode) added to process/physics.py.
- Updates to the test suite (tests/unit/test_physics.py) to cover the Sugiyama scaling models.
- Modifications to input definitions, current drive variable initialization, plotting routines and documentation to accommodate the new models.

### Reviewed Changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated 1 comment.

<details>
<summary>Show a summary per file</summary>

| File                                                                    | Description                                                                                    |
|-------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|
| tests/unit/test_physics.py                                              | Adds new NamedTuple definitions and test cases for Sugiyama L-mode and H-mode bootstrap tests. |
| process/physics.py                                                      | Integrates new Sugiyama bootstrap fraction methods and replaces the long if‑elif chain using a map. |
| process/input.py                                                        | Updates the valid range for i_bootstrap_current to include new scaling cases.                   |
| process/current_drive.py                                                | Initializes new current drive variables for Sugiyama models.                                   |
| process/io/plot_proc.py                                                 | Enhances the bootstrap comparison plot to include Sugiyama L-mode and H-mode data.              |
| documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md | Adds new documentation for Sugiyama scaling models with parameter ranges and equations.          |
</details>


<details>
<summary>Files not reviewed (2)</summary>

* **source/fortran/current_drive_variables.f90**: Language not supported
* **source/fortran/physics_variables.f90**: Language not supported
</details>

<details>
<summary>Comments suppressed due to low confidence (1)</summary>

**process/input.py:1470**
* Since the valid range for i_bootstrap_current was updated to (1, 13) to support the new Sugiyama scalings, please ensure that there are unit tests covering cases when i_bootstrap_current equals 12 and 13.
```
"i_bootstrap_current": InputVariable(fortran.physics_variables, int, range=(1, 13)),
```
</details>


state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T08:44:40Z
user: login: j-a-foster
body: Happy with the doc corrections. Ready for merge.
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-04-24T12:40:58Z

Review comments:
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: Copilot
body: There is a typographical error in 'paramters'; please change it to 'parameters'.
```suggestion
The parameters for the ACCOME database are as follows, with the scan range in the table below:
```
created_at: 2025-04-22T11:05:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: Copilot
body: There is a spelling mistake: 'paramters' should be corrected to 'parameters'.
```suggestion
The parameters for the ACCOME database are as follows, with the scan range in the table below:
```
created_at: 2025-04-22T11:06:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -304,6 +304,8 @@ module physics_variables
   !! - =9 for Wong et al scaling
   !! - =10 for Gi-I et al scaling
   !! - =11 for Gi-II et al scaling
+  !! - =12 for Sugiyama (L-mode) et al scaling
+  !! - =13 for Sugiyama (L-mode) et al scaling
path: source/fortran/physics_variables.f90
user: login: timothy-nunn
body: One of these should be H-mode?
created_at: 2025-04-23T10:54:19Z
author_association: COLLABORATOR
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
+
+- $R$ = 6 m
+- $\kappa \sim 1.8$ 
+- $\delta \sim 0.4$
+- $Z_{\text{eff}}$ has a unfiorm profile, and only fully stripped carbon is considered as an impurity.
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: j-a-foster
body: "unfiorm" -> uniform
created_at: 2025-04-23T12:31:53Z
author_association: COLLABORATOR
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
+
+- $R$ = 6 m
+- $\kappa \sim 1.8$ 
+- $\delta \sim 0.4$
+- $Z_{\text{eff}}$ has a unfiorm profile, and only fully stripped carbon is considered as an impurity.
+- $T_{\text{e}} = T_{\text{i}}$
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| Plasma Current, $I_{\text{p}} [\mathrm{MA}]$ | 30.0, 27.0, 22.0, 20.0, 17.5, 13.0, 11.5, 10.0, 8.8, 8.0             |
+| Toroidal magnetic field on axis, $B_{\text{T}} [\mathrm{T}]$ | 3.5, 3.5, 3.5, 4.1, 4.5, 4.5, 5.2, 5.67, 6.8, 8.5                  |
+
+---------------
+
+#### L-mode Scaling | `bootstrap_fraction_sugiyama_l_mode()`
+
+Is selected by setting `i_bootstrap_current = 12`
+
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| $\alpha_{\text{n}}$ | 0.1, 0.3, 0.5, 0.7, 0.3, 1.1            |
+| $\alpha_{\text{T}}$ | 1.0, 1.4, 1.8, 2.2, 2.6, 3.0            |
+| $Z_{\text{eff}}$ | 1.2, 1.5, 2.0, 2.5, 3.0           |
+| $n_{\text{e,0}} \  [10^{20} \text{m}^{-3}]$  | 0.5, 1.0, 2.0                  |
+| $T_{\text{e,0}} \  [\text{keV}]$  | 20, 30, 30                  |
+| $a_{\text{j}}$  | 0.2, 0.5, 1.0, 1.1, 2.0, 2.0, 4.0, 10.0, 50.0                 |
+| $b_{\text{j}}$  | 2.0, 2.0, 1.0, 2.0, 1.0, 2.0, 4.0, 4.0, 4.0                  |
+
+The scan range for the L-mode scaling is seen in the table above and for the variables in the top table which are shared between both scalings.  For all combinations in both tables their are 48,600 cases of which 47,652 converged. The mean error of the scaling with the ACCOME data is, $\text{ME} = 5.92 \times 10^{-4}$, with the root mean squared error being,  $\text{RMSE} = 0.0236$.
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: j-a-foster
body: "their" -> there
created_at: 2025-04-23T12:32:32Z
author_association: COLLABORATOR
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
+
+- $R$ = 6 m
+- $\kappa \sim 1.8$ 
+- $\delta \sim 0.4$
+- $Z_{\text{eff}}$ has a unfiorm profile, and only fully stripped carbon is considered as an impurity.
+- $T_{\text{e}} = T_{\text{i}}$
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| Plasma Current, $I_{\text{p}} [\mathrm{MA}]$ | 30.0, 27.0, 22.0, 20.0, 17.5, 13.0, 11.5, 10.0, 8.8, 8.0             |
+| Toroidal magnetic field on axis, $B_{\text{T}} [\mathrm{T}]$ | 3.5, 3.5, 3.5, 4.1, 4.5, 4.5, 5.2, 5.67, 6.8, 8.5                  |
+
+---------------
+
+#### L-mode Scaling | `bootstrap_fraction_sugiyama_l_mode()`
+
+Is selected by setting `i_bootstrap_current = 12`
+
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| $\alpha_{\text{n}}$ | 0.1, 0.3, 0.5, 0.7, 0.3, 1.1            |
+| $\alpha_{\text{T}}$ | 1.0, 1.4, 1.8, 2.2, 2.6, 3.0            |
+| $Z_{\text{eff}}$ | 1.2, 1.5, 2.0, 2.5, 3.0           |
+| $n_{\text{e,0}} \  [10^{20} \text{m}^{-3}]$  | 0.5, 1.0, 2.0                  |
+| $T_{\text{e,0}} \  [\text{keV}]$  | 20, 30, 30                  |
+| $a_{\text{j}}$  | 0.2, 0.5, 1.0, 1.1, 2.0, 2.0, 4.0, 10.0, 50.0                 |
+| $b_{\text{j}}$  | 2.0, 2.0, 1.0, 2.0, 1.0, 2.0, 4.0, 4.0, 4.0                  |
+
+The scan range for the L-mode scaling is seen in the table above and for the variables in the top table which are shared between both scalings.  For all combinations in both tables their are 48,600 cases of which 47,652 converged. The mean error of the scaling with the ACCOME data is, $\text{ME} = 5.92 \times 10^{-4}$, with the root mean squared error being,  $\text{RMSE} = 0.0236$.
+
+$$
+f_{\text{BS}}^{\text{L}} = 0.740 \epsilon^{0.418} \beta_{\text{p}}^{0.904} \alpha_{\text{n}}^{0.06} \alpha_{\text{T}}^{-0.138} Z_{\text{eff}}^{0.230} \left(\frac{q_{95}}{q_0}\right)^{-0.142}
+$$
+
+------------
+
+#### H-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
+
+Is selected by setting `i_bootstrap_current = 13`
+
+| Parameter                              | Range                                                                 |
+|----------------------------------------|----------------------------------------------------------------------|
+| Aspect ratio, $A$                      | 1.5, 1.7, 2.0, 2.2, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0                    |
+| $\alpha_{\text{n}}$ | 0.8, 1.4, 2.2, 3.0           |
+| $\alpha_{\text{T}}$ | 1.2, 1.5, 3.0, 6.0            |
+| $b_{\text{T}}$ | 1.2, 1.5, 3.0, 6.0            |
+| $Z_{\text{eff}}$ | 1.2, 1.5, 2.0, 3.0           |
+| $n_{\text{e,0}} \  [10^{20} \text{m}^{-3}]$ | 1.5 |
+| $T_{\text{e,0}} \  [\text{keV}]$  | 30                  |
+| $n_{\text{e,ped}} \  [10^{20} \text{m}^{-3}]$  | 0.6, 1.05, 1.5                 |
+| $T_{\text{ped}} \ [\text{keV}]$  | 0.5, 2.0, 4.0, 8.0 |
+| $\rho_{\text{ped}}$  | 0.85, 0.92, 0.99 |
+| $a_{\text{j}}$  | 0.6, 1.2, 1.5, 1.1, 10.0, 50.0                 |
+| $b_{\text{j}}$  | 2.0, 1.5, 1.0, 4.0, 4.0                |
+
+The scan range for the H-mode scaling is seen in the table above and for the variables in the top table which are shared between both scalings.  For all combinations in both tables their are 460,800 cases of which 330,149 converged. The mean error of the scaling with the ACCOME data is, $\text{ME} = 1.17 \times 10^{-4}$, with the root mean squared error being,  $\text{RMSE} = 0.0324$.
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: j-a-foster
body: "their" -> there
created_at: 2025-04-23T12:33:12Z
author_association: COLLABORATOR
diff_hunk: @@ -304,6 +304,8 @@ module physics_variables
   !! - =9 for Wong et al scaling
   !! - =10 for Gi-I et al scaling
   !! - =11 for Gi-II et al scaling
+  !! - =12 for Sugiyama (L-mode) et al scaling
+  !! - =13 for Sugiyama (L-mode) et al scaling
path: source/fortran/physics_variables.f90
user: login: chris-ashe
body: Yes, fixed
created_at: 2025-04-23T13:50:25Z
author_association: COLLABORATOR
diff_hunk: @@ -693,6 +693,88 @@ $$
 
 ---------------------
 
+### Sugiyama Scaling's
+
+This scaling is found by solving the Hirshman-Sigmar bootstrap current model using the matrix inversion method to create bootstrap current scalings with variables given explicitly in the TPC systems code[^14]. The databases are constructed with the ACCOME code, with the ohmic and externally driven currents not considered and the total plasma current is achieved by
+introducing a virtual additional current of the shape:
+
+$$
+j_{\text{add}}(\rho) \propto \left(1-\rho^{b_{\text{j}}}\right)^{a_{\text{j}}}
+$$
+
+The paramters for the ACCOME database are as follows, with the scan range in the table below:
path: documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md
user: login: Copilot
body: Typographical error: 'paramters' should be corrected to 'parameters'.
```suggestion
The parameters for the ACCOME database are as follows, with the scan range in the table below:
```
created_at: 2025-04-24T08:44:40Z
author_association: CONTRIBUTOR

PR comments:
user: login: codecov-commenter
created_at: 2025-04-22T11:11:12Z
body: ## [Codecov](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea) Report
:x: Patch coverage is `47.05882%` with `9 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 36.29%. Comparing base ([`e311947`](https://app.codecov.io/gh/ukaea/PROCESS/commit/e311947b4447a2c2bec745993b21f13e7e724cfd?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea)) to head ([`0e74e0a`](https://app.codecov.io/gh/ukaea/PROCESS/commit/0e74e0a9e31881e63468473fe447c0cf77579535?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea)).
:warning: Report is 422 commits behind head on main.

| [Files with missing lines](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea) | Patch % | Lines |
|---|---|---|
| [process/physics.py](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?src=pr&el=tree&filepath=process%2Fphysics.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea#diff-cHJvY2Vzcy9waHlzaWNzLnB5) | 46.15% | [7 Missing :warning: ](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea) |
| [process/io/plot\_proc.py](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?src=pr&el=tree&filepath=process%2Fio%2Fplot_proc.py&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea#diff-cHJvY2Vzcy9pby9wbG90X3Byb2MucHk=) | 0.00% | [2 Missing :warning: ](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea) |

<details><summary>Additional details and impacted files</summary>



```diff
@@            Coverage Diff             @@
##             main    #3634      +/-   ##
==========================================
+ Coverage   36.23%   36.29%   +0.05%     
==========================================
  Files          88       88              
  Lines       22089    22092       +3     
==========================================
+ Hits         8005     8019      +14     
+ Misses      14084    14073      -11     
```
</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/ukaea/PROCESS/pull/3634?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=ukaea).
<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>
author_association: NONE
user: login: mkovari
created_at: 2025-04-23T12:15:38Z
body: Don't forget Copilot's last comment:
> **documentation/proc-pages/physics-models/plasma_current/bootstrap_current.md:721**
> 
> * The header for L-mode scaling incorrectly references 'bootstrap_fraction_sugiyama_h_mode()'. It should instead reference 'bootstrap_fraction_sugiyama_l_mode()' to match the implementation.
> 
> ```
> #### L-mode Scaling | `bootstrap_fraction_sugiyama_h_mode()`
> ```


author_association: COLLABORATOR