Coverage for python/gsfit/database_readers/freegs/setup_rogowski_coils.py: 0%
14 statements
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 13:12 +0000
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-07 13:12 +0000
1import typing
2from typing import TYPE_CHECKING
4import freegs
5import numpy as np
6import numpy.typing as npt
7from gsfit_rs import RogowskiCoils
9if TYPE_CHECKING:
10 from . import DatabaseReader
13def setup_rogowski_coils(
14 self: "DatabaseReader",
15 pulseNo: int,
16 settings: dict[str, typing.Any],
17 time: npt.NDArray[np.float64],
18 freegs_eqs: list[freegs.equilibrium.Equilibrium],
19) -> RogowskiCoils:
20 """
21 This method initialises the Rust `RogowskiCoils` class.
23 :param pulseNo: Pulse number, used to read from the database
24 :param settings: Dictionary containing the JSON settings read from the `settings` directory
25 :param time: Measured time vector
26 :param freegs_eqs: List of FreeGS equilibrium objects, one for each time-slice
28 **This method is specific to FreeGS.**
30 See `python/gsfit/database_readers/interface.py` for more details on how a new database_reader should be implemented.
31 """
33 # Initialise the RogowskiCoils Rust class
34 rogowski_coils = RogowskiCoils()
36 # Loop over time and store the plasma current
37 n_time = len(time)
38 measured_ip = np.full(n_time, np.nan)
39 for i_time in range(n_time):
40 measured_ip[i_time] = freegs_eqs[i_time].plasmaCurrent()
42 # Add the Rogowski coil for the plasma current
43 rogowski_coils.add_sensor(
44 name="rog_01",
45 r=freegs_eqs[0].tokamak.wall.R,
46 z=freegs_eqs[0].tokamak.wall.Z,
47 fit_settings_comment="",
48 fit_settings_expected_value=1e3,
49 fit_settings_include=True,
50 fit_settings_weight=100.0,
51 time=time,
52 measured=measured_ip,
53 gaps_r=np.array([]),
54 gaps_z=np.array([]),
55 gaps_d_r=np.array([]),
56 gaps_d_z=np.array([]),
57 gaps_name=[],
58 )
60 # TODO: need to add some Rogowski coils for the passive plates!!!
62 return rogowski_coils