Skip to content

Commit 9529595

Browse files
committed
New ActorMagnetics
1 parent e4bd43b commit 9529595

File tree

2 files changed

+61
-0
lines changed

2 files changed

+61
-0
lines changed

src/FUSE.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ include(joinpath("actors", "current", "steadycurrent_actor.jl"))
109109
include(joinpath("actors", "current", "current_actor.jl"))
110110

111111
include(joinpath("actors", "diagnostics", "fits_actor.jl"))
112+
include(joinpath("actors", "diagnostics", "magnetics_actor.jl"))
112113

113114
include(joinpath("actors", "hcd", "simple_common.jl"))
114115
include(joinpath("actors", "hcd", "ec", "ec_simple_actor.jl"))
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#= ============== =#
2+
# ActorMagnetics #
3+
#= ============== =#
4+
5+
@actor_parameters_struct ActorMagnetics{T} begin
6+
#== actor parameters ==#
7+
#== display and debugging parameters ==#
8+
end
9+
10+
mutable struct ActorMagnetics{D,P} <: SingleAbstractActor{D,P}
11+
dd::IMAS.dd{D}
12+
par::OverrideParameters{P,FUSEparameters__ActorMagnetics{P}}
13+
end
14+
15+
"""
16+
ActorMagnetics(dd::IMAS.dd, act::ParametersAllActors; kw...)
17+
18+
Calculates magnetic field diagnostics from equilibrium data.
19+
20+
This actor computes the magnetic field measurements that would be observed by
21+
magnetic diagnostics (flux loops, magnetic probes, etc.) based on the plasma
22+
equilibrium. It populates the `dd.magnetics` IDS with synthetic diagnostic signals.
23+
24+
The actor calls `IMAS.magnetics!` to:
25+
- Calculate magnetic flux measurements at diagnostic locations
26+
- Compute magnetic field components for probes
27+
- Generate time-dependent synthetic signals consistent with the equilibrium evolution
28+
29+
Key outputs:
30+
- Magnetic flux loop signals in `dd.magnetics.flux_loop`
31+
- Magnetic probe measurements in `dd.magnetics.bpol_probe`
32+
- Time-dependent diagnostic data for validation and analysis
33+
34+
!!! note
35+
36+
Requires `dd.equilibrium` to be populated with equilibrium data.
37+
Results are stored in `dd.magnetics`.
38+
"""
39+
function ActorMagnetics(dd::IMAS.dd, act::ParametersAllActors; kw...)
40+
actor = ActorMagnetics(dd, act.ActorMagnetics; kw...)
41+
step(actor)
42+
finalize(actor)
43+
return actor
44+
end
45+
46+
function ActorMagnetics(dd::IMAS.dd, par::FUSEparameters__ActorMagnetics; kw...)
47+
logging_actor_init(ActorMagnetics)
48+
par = OverrideParameters(par; kw...)
49+
return ActorMagnetics(dd, par)
50+
end
51+
52+
function _step(actor::ActorMagnetics)
53+
dd = actor.dd
54+
par = actor.par
55+
56+
# Calculate magnetics diagnostics from equilibrium
57+
IMAS.magnetics!(dd.magnetics, dd.equilibrium)
58+
59+
return actor
60+
end

0 commit comments

Comments
 (0)