Example: Static inverse free-boundary equilibrium calculations (in ITER)
Here we will generate an equilibrium (find coil currents with the inverse solver) in an ITER-like tokamak.
The machine description comes from files located here.
The equilbirium\profile parameters are completely made up - please experiment on your own and change them to more realistic values as you please!
Import packages
import matplotlib.pyplot as plt
import numpy as np
Create the machine object
# build machine
from freegsnke import build_machine
tokamak = build_machine.tokamak(
active_coils_path=f"../machine_configs/ITER/ITER_active_coils.pickle",
passive_coils_path=f"../machine_configs/ITER/ITER_passive_coils.pickle",
limiter_path=f"../machine_configs/ITER/ITER_limiter.pickle",
wall_path=f"../machine_configs/ITER/ITER_wall.pickle",
)
Active coils --> built from pickle file.
Passive structures --> built from pickle file.
Limiter --> built from pickle file.
Wall --> built from pickle file.
Magnetic probes --> none provided.
Resistance (R) and inductance (M) matrices --> built using actives (and passives if present).
Tokamak built.
# plot the machine
fig1, ax1 = plt.subplots(1, 1, figsize=(7, 15), dpi=80)
plt.tight_layout()
tokamak.plot(axis=ax1, show=False)
ax1.plot(tokamak.limiter.R, tokamak.limiter.Z, color='k', linewidth=1.2, linestyle="--")
# ax1.plot(tokamak.wall.R, tokamak.wall.Z, color='k', linewidth=1.2, linestyle="-")
ax1.grid(alpha=0.5)
ax1.set_aspect('equal')
ax1.set_xlim(1.1, 12.4)
ax1.set_ylim(-8.3, 8.3)
ax1.set_xlabel(r'Major radius, $R$ [m]')
ax1.set_ylabel(r'Height, $Z$ [m]')
Text(40.02777777777778, 0.5, 'Height, $Z$ [m]')
Instantiate an equilibrium
from freegsnke import equilibrium_update
eq = equilibrium_update.Equilibrium(
tokamak=tokamak, # provide tokamak object
Rmin=3.2, Rmax=8.8, # radial range
Zmin=-5, Zmax=5, # vertical range
nx=129, # number of grid points in the radial direction (needs to be of the form (2**n + 1) with n being an integer)
ny=129, # number of grid points in the vertical direction (needs to be of the form (2**n + 1) with n being an integer)
# psi=plasma_psi
)
Instantiate a profile object
from freegsnke.jtor_update import Fiesta_Topeol
profiles = Fiesta_Topeol(
eq=eq,
Beta0=0.5978,
Ip=15e6,
fvac=0.5,
Raxis=6.2,
alpha_m=2.0,
alpha_n=1.395
)
Load the static nonlinear solver
from freegsnke import GSstaticsolver
GSStaticSolver = GSstaticsolver.NKGSsolver(eq)
Constraints
Rx = 5.02 # X-point radius
Zx = -3.23 # X-point height
Ro = 6.34 # X-point radius
Zo = 0.66 # X-point height
# set desired null_points locations
# this can include X-point and O-point locations
null_points = [[Rx, Ro], [Zx, Zo]]
# set desired isoflux constraints with format
# isoflux_set = [isoflux_0, isoflux_1 ... ]
# with each isoflux_i = [R_coords, Z_coords]
isoflux_set = np.array([[
[4.25455147,
4.1881875,
4.2625,
4.45683769,
4.78746942,
5.31835938,
5.91875,
6.44275166,
6.92285156,
7.35441013,
7.73027344,
8.03046875,
8.19517497,
8.05673414,
7.75308013,
7.37358451,
6.94355469,
6.47773438,
5.99121094,
5.49433594,
Rx,
4.79042969,
4.56269531,
4.36038615],
[0.0,
1.13554688,
2.2565134,
3.16757813,
3.80507812,
4.0499021,
3.93089003,
3.665625,
3.31076604,
2.86875,
2.3199601,
1.62832118,
0.657421875,
-0.35859375,
-1.05585937,
-1.59375,
-2.03492727,
-2.41356403,
-2.75622016,
-3.08699278,
Zx,
-2.40548044,
-1.55982142,
-0.67734375]
]])
# instantiate the freegsnke constrain object
from freegsnke.inverse import Inverse_optimizer
constrain = Inverse_optimizer(null_points=null_points,
isoflux_set=isoflux_set)
# remove from the coils available for control the radial field coil
# eq.tokamak['VS3'].control = False
The inverse solve
GSStaticSolver.inverse_solve(eq=eq,
profiles=profiles,
constrain=constrain,
target_relative_tolerance=1e-4,
target_relative_psit_update=1e-3,
# max_solving_iterations=150,
# max_iter_per_update=10,
# max_rel_update_size=0.075,
# damping_factor=.99,
# max_rel_psit=.05,
verbose=True, # print output
l2_reg=1e-14,
Picard_handover=1e-4,
full_jacobian_handover=[1e-3, 1e-2]
)
-----
Inverse static solve starting...
Successfully computed GS residual using initial plasma_psi and tokamak_psi guesses.
Initial relative error = 1.75e+01
-----
Iteration: 0
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['1.04e+07', '1.04e+07', '1.35e+07', '7.63e+01', '3.28e+06', '3.26e+05', '2.53e+05', '2.81e+05', '1.15e+05', '3.05e+06']
Constraint losses = 7.48e-01
Relative update of tokamak psi (in plasma core): 1.12e+09
Handing off to forward solve (with updated currents).
Relative error = 2.74e+01
-----
Iteration: 1
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.19e+06', '2.17e+06', '2.66e+06', '4.78e+02', '6.64e+05', '8.59e+04', '4.42e+04', '4.27e+04', '7.15e+04', '6.05e+05']
Constraint losses = 1.02e-01
Relative update of tokamak psi (in plasma core): 1.46e-01
Handing off to forward solve (with updated currents).
Relative error = 2.75e+01
-----
Iteration: 2
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['4.46e+05', '4.43e+05', '5.42e+05', '9.74e+01', '1.35e+05', '1.75e+04', '9.02e+03', '8.71e+03', '1.46e+04', '1.23e+05']
Constraint losses = 1.02e-01
Relative update of tokamak psi (in plasma core): 2.45e-02
Handing off to forward solve (with updated currents).
Relative error = 2.75e+01
-----
Iteration: 3
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['9.08e+04', '9.04e+04', '1.11e+05', '1.99e+01', '2.76e+04', '3.57e+03', '1.84e+03', '1.77e+03', '2.97e+03', '2.51e+04']
Constraint losses = 1.02e-01
Relative update of tokamak psi (in plasma core): 4.83e-03
Handing off to forward solve (with updated currents).
Relative error = 2.75e+01
-----
Iteration: 4
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['1.85e+04', '1.84e+04', '2.25e+04', '4.05e+00', '5.63e+03', '7.27e+02', '3.75e+02', '3.62e+02', '6.06e+02', '5.12e+03']
Constraint losses = 1.02e-01
Relative update of tokamak psi (in plasma core): 9.77e-04
Handing off to forward solve (with updated currents).
Relative error = 4.26e-01
-----
Iteration: 5
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.20e+08', '2.26e+08', '2.87e+08', '-2.94e+04', '8.11e+07', '5.28e+06', '-3.06e+04', '1.73e+06', '-3.26e+06', '8.92e+07']
Constraint losses = 1.23e+02
Relative update of tokamak psi (in plasma core): 1.64e+01
Handing off to forward solve (with updated currents).
Relative error = 5.78e-02
-----
Iteration: 6
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-9.56e+05', '1.11e+06', '-5.20e+05', '1.58e+04', '1.12e+05', '5.71e+05', '-8.95e+05', '-9.12e+05', '8.33e+05', '1.05e+06']
Constraint losses = 1.38e+01
Relative update of tokamak psi (in plasma core): 2.63e-03
Handing off to forward solve (with updated currents).
Relative error = 1.21e-02
-----
Iteration: 7
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-2.15e+04', '1.85e+06', '-1.42e+06', '6.29e+03', '-3.25e+05', '8.81e+05', '-5.80e+05', '-1.66e+06', '1.81e+06', '-1.02e+06']
Constraint losses = 1.56e+01
Relative update of tokamak psi (in plasma core): 2.69e-03
Handing off to forward solve (with updated currents).
Relative error = 2.28e-02
-----
Iteration: 8
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-1.89e+06', '8.33e+05', '1.26e+05', '5.30e+03', '6.76e+05', '-6.50e+05', '4.73e+05', '2.15e+06', '-1.90e+06', '1.79e+06']
Constraint losses = 2.26e+01
Relative update of tokamak psi (in plasma core): 4.27e-03
Handing off to forward solve (with updated currents).
Relative error = 4.29e-02
-----
Iteration: 9
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.50e+06', '-8.18e+05', '-1.65e+06', '3.52e+04', '-6.29e+05', '9.57e+04', '2.79e+05', '-2.84e+06', '1.17e+06', '4.28e+05']
Constraint losses = 2.47e+01
Relative update of tokamak psi (in plasma core): 5.15e-03
Handing off to forward solve (with updated currents).
Relative error = 2.34e-02
-----
Iteration: 10
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-2.99e+06', '1.27e+06', '6.84e+05', '-1.99e+04', '7.94e+05', '-2.05e+05', '-3.11e+05', '3.16e+06', '-1.85e+06', '1.21e+06']
Constraint losses = 2.74e+01
Relative update of tokamak psi (in plasma core): 4.64e-03
Handing off to forward solve (with updated currents).
Relative error = 5.66e-02
-----
Iteration: 11
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.99e+06', '-1.34e+06', '-1.61e+06', '3.97e+04', '-9.27e+05', '1.41e+05', '3.41e+05', '-3.38e+06', '1.47e+06', '2.51e+05']
Constraint losses = 2.95e+01
Relative update of tokamak psi (in plasma core): 6.32e-03
Handing off to forward solve (with updated currents).
Relative error = 2.14e-02
-----
Iteration: 12
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-2.80e+06', '1.06e+06', '8.43e+05', '-2.12e+04', '7.07e+05', '-2.10e+05', '-2.90e+05', '2.99e+06', '-1.63e+06', '6.37e+05']
Constraint losses = 3.13e+01
Relative update of tokamak psi (in plasma core): 4.14e-03
Handing off to forward solve (with updated currents).
Relative error = 3.93e-02
-----
Iteration: 13
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.14e+06', '-5.46e+05', '-1.11e+06', '7.06e+03', '-4.40e+05', '4.22e+05', '-5.75e+05', '-1.72e+06', '1.72e+06', '-1.78e+06']
Constraint losses = 2.67e+01
Relative update of tokamak psi (in plasma core): 4.36e-03
Handing off to forward solve (with updated currents).
Relative error = 1.32e-02
-----
Iteration: 14
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-1.68e+06', '6.43e+05', '2.96e+05', '-2.35e+04', '7.41e+05', '-2.22e+05', '1.65e+05', '1.46e+06', '-8.79e+05', '4.24e+05']
Constraint losses = 1.53e+01
Relative update of tokamak psi (in plasma core): 2.53e-03
Handing off to forward solve (with updated currents).
Relative error = 1.45e-02
-----
Iteration: 15
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['1.97e+06', '-4.57e+05', '-1.21e+06', '1.04e+04', '-4.98e+05', '3.78e+05', '-3.41e+05', '-1.89e+06', '1.47e+06', '-1.11e+06']
Constraint losses = 2.07e+01
Relative update of tokamak psi (in plasma core): 4.28e-03
Handing off to forward solve (with updated currents).
Relative error = 1.95e-02
-----
Iteration: 16
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-2.80e+06', '8.99e+05', '9.37e+05', '-1.11e+04', '5.63e+05', '-4.48e+05', '6.10e+05', '2.08e+06', '-1.60e+06', '1.23e+06']
Constraint losses = 3.02e+01
Relative update of tokamak psi (in plasma core): 4.14e-03
Handing off to forward solve (with updated currents).
Relative error = 3.61e-02
-----
Iteration: 17
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['2.03e+06', '-6.99e+05', '-9.98e+05', '9.59e+03', '-4.11e+05', '2.91e+05', '-3.71e+05', '-1.62e+06', '1.26e+06', '-1.06e+06']
Constraint losses = 2.61e+01
Relative update of tokamak psi (in plasma core): 4.04e-03
Handing off to forward solve (with updated currents).
Relative error = 1.20e-02
-----
Iteration: 18
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-1.15e+06', '2.82e+05', '1.76e+05', '-1.43e+04', '5.72e+05', '-2.27e+05', '7.90e+04', '1.24e+06', '-9.09e+05', '6.38e+05']
Constraint losses = 1.19e+01
Relative update of tokamak psi (in plasma core): 1.92e-03
Handing off to forward solve (with updated currents).
Relative error = 9.65e-03
-----
Iteration: 19
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['1.31e+06', '-3.83e+05', '-8.38e+05', '1.05e+04', '-4.23e+05', '2.54e+05', '-2.25e+05', '-1.30e+06', '9.31e+05', '-5.87e+05']
Constraint losses = 1.45e+01
Relative update of tokamak psi (in plasma core): 2.91e-03
Handing off to forward solve (with updated currents).
Relative error = 1.41e-02
-----
Iteration: 20
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-1.94e+06', '4.72e+05', '6.60e+05', '-6.14e+03', '3.83e+05', '-3.51e+05', '4.27e+05', '1.55e+06', '-1.23e+06', '9.39e+05']
Constraint losses = 2.06e+01
Relative update of tokamak psi (in plasma core): 3.07e-03
Handing off to forward solve (with updated currents).
Relative error = 2.62e-02
-----
Iteration: 21
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['1.33e+06', '-3.70e+05', '-7.44e+05', '5.52e+03', '-3.29e+05', '2.77e+05', '-2.96e+05', '-1.28e+06', '1.00e+06', '-7.26e+05']
Constraint losses = 2.49e+01
Relative update of tokamak psi (in plasma core): 3.13e-03
Handing off to forward solve (with updated currents).
Relative error = 1.00e-02
-----
Iteration: 22
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-6.28e+05', '1.73e+05', '-1.57e+04', '-1.03e+04', '3.87e+05', '-1.14e+05', '-3.64e+04', '7.54e+05', '-4.69e+05', '1.89e+05']
Constraint losses = 6.68e+00
Relative update of tokamak psi (in plasma core): 9.97e-04
Handing off to forward solve (with updated currents).
Relative error = 2.90e-03
-----
Iteration: 23
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['4.50e+05', '-2.48e+05', '-3.86e+05', '7.03e+03', '-2.16e+05', '4.62e+04', '-2.83e+03', '-4.96e+05', '2.59e+05', '-6.09e+04']
Constraint losses = 5.12e+00
Relative update of tokamak psi (in plasma core): 1.05e-03
Handing off to forward solve (with updated currents).
Relative error = 4.39e-03
-----
Iteration: 24
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-9.05e+05', '-1.68e+05', '3.25e+05', '3.25e+03', '6.60e+04', '-2.77e+05', '3.13e+05', '7.63e+05', '-8.90e+05', '1.10e+06']
Constraint losses = 1.02e+01
Relative update of tokamak psi (in plasma core): 1.49e-03
Handing off to forward solve (with updated currents).
Relative error = 1.34e-02
-----
Iteration: 25
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['7.09e+05', '-1.47e+05', '-4.61e+05', '2.14e+03', '-1.89e+05', '2.08e+05', '-2.29e+05', '-7.59e+05', '6.67e+05', '-5.93e+05']
Constraint losses = 1.72e+01
Relative update of tokamak psi (in plasma core): 1.91e-03
Handing off to forward solve (with updated currents).
Relative error = 5.38e-03
-----
Iteration: 26
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-3.79e+05', '2.97e+05', '-1.62e+05', '-9.74e+03', '2.16e+05', '7.66e+04', '-1.44e+05', '2.44e+05', '7.09e+04', '-4.10e+05']
Constraint losses = 2.19e+00
Relative update of tokamak psi (in plasma core): 1.50e-04
Handing off to forward solve (with updated currents).
Relative error = 1.75e-03
-----
Iteration: 27
Using simplified Green's Jacobian (of constraints wrt coil currents) to optimise the currents.
Change in coil currents (being controlled): ['-8.15e+04', '-1.32e+05', '-1.15e+05', '3.54e+03', '-4.87e+04', '-9.35e+04', '1.11e+05', '6.67e+04', '-1.47e+05', '1.33e+05']
Constraint losses = 2.03e+00
Relative update of tokamak psi (in plasma core): 1.33e-04
Handing off to forward solve (with updated currents).
Relative error = 5.70e-04
-----
Iteration: 28
Using full Jacobian (of constraints wrt coil currents) to optimsise currents.
- calculating derivatives for coil 1/10
- calculating derivatives for coil 2/10
- calculating derivatives for coil 3/10
- calculating derivatives for coil 4/10
- calculating derivatives for coil 5/10
- calculating derivatives for coil 6/10
- calculating derivatives for coil 7/10
- calculating derivatives for coil 8/10
- calculating derivatives for coil 9/10
- calculating derivatives for coil 10/10
Change in coil currents (being controlled): ['4.38e+02', '2.48e+02', '2.27e+01', '-7.35e+03', '-5.81e+02', '-3.07e+03', '-4.27e+03', '-2.68e+03', '-7.73e+02', '-1.09e+02']
Constraint losses = 1.75e+00
Relative update of tokamak psi (in plasma core): 2.30e-04
Handing off to forward solve (with updated currents).
Relative error = 9.78e-04
-----
Iteration: 29
Using full Jacobian (of constraints wrt coil currents) to optimsise currents.
- calculating derivatives for coil 1/10
- calculating derivatives for coil 2/10
- calculating derivatives for coil 3/10
- calculating derivatives for coil 4/10
- calculating derivatives for coil 5/10
- calculating derivatives for coil 6/10
- calculating derivatives for coil 7/10
- calculating derivatives for coil 8/10
- calculating derivatives for coil 9/10
- calculating derivatives for coil 10/10
Change in coil currents (being controlled): ['4.04e+02', '1.25e+01', '2.57e+01', '-1.08e+03', '-5.49e+02', '-2.15e+03', '-3.06e+03', '-1.65e+03', '-1.64e+01', '3.14e+02']
Constraint losses = 1.71e+00
Relative update of tokamak psi (in plasma core): 4.90e-05
Handing off to forward solve (with updated currents).
Relative error = 9.76e-05
-----
Inverse static solve SUCCESS. Tolerance 9.76e-05 (vs. requested 0.0001) reached in 30/100 iterations.
fig1, ax1 = plt.subplots(1, 1, figsize=(7, 15), dpi=80)
ax1.grid(zorder=0, alpha=0.75)
ax1.set_aspect('equal')
eq.tokamak.plot(axis=ax1,show=False) # plots the active coils and passive structures
ax1.fill(tokamak.wall.R, tokamak.wall.Z, color='k', linewidth=1.2, facecolor='w', zorder=0) # plots the limiter
eq.plot(axis=ax1,show=False) # plots the equilibrium
constrain.plot(axis=ax1, show=False) # plots the contraints
ax1.set_xlim(1.1, 12.4)
ax1.set_ylim(-8.3, 8.3)
(-8.3, 8.3)
eq.tokamak.getCurrents()
# # save coil currents to file
# import pickle
# with open('simple_diverted_currents_PaxisIp.pk', 'wb') as f:
# pickle.dump(obj=inverse_current_values, file=f)
{'CS1': 229932789.75190663,
'CS2': 242220457.88471064,
'CS3': 297169139.71809125,
'VS3': 8093.790314028713,
'PF1': 85997897.70128961,
'PF2': 6557190.445866681,
'PF3': -1228870.4866725383,
'PF4': 644424.0199760604,
'PF5': -1908437.5364365422,
'PF6': 95727722.31543162,
'I1_0': 0.0,
'I2_0': 0.0,
'I3_0': 0.0,
'I4_0': 0.0,
'I5_0': 0.0,
'I6_0': 0.0,
'I7_0': 0.0,
'I8_0': 0.0,
'I9_0': 0.0,
'I10_0': 0.0,
'I11_0': 0.0,
'I12_0': 0.0,
'I13_0': 0.0,
'I14_0': 0.0,
'I15_0': 0.0,
'I16_0': 0.0,
'I17_0': 0.0,
'I18_0': 0.0,
'I19_0': 0.0,
'I20_0': 0.0,
'I21_0': 0.0,
'I22_0': 0.0,
'I23_0': 0.0,
'I24_0': 0.0,
'I25_0': 0.0,
'I26_0': 0.0,
'I27_0': 0.0,
'I28_0': 0.0,
'I29_0': 0.0,
'I30_0': 0.0,
'I31_0': 0.0,
'I32_0': 0.0,
'I33_0': 0.0,
'I34_0': 0.0,
'I35_0': 0.0,
'I36_0': 0.0,
'I37_0': 0.0,
'I38_0': 0.0,
'I39_0': 0.0,
'I40_0': 0.0,
'I41_0': 0.0,
'I42_0': 0.0,
'I43_0': 0.0,
'I44_0': 0.0,
'I45_0': 0.0,
'I46_0': 0.0,
'I47_0': 0.0,
'I48_0': 0.0,
'I49_0': 0.0,
'I50_0': 0.0,
'I51_0': 0.0,
'I52_0': 0.0,
'I53_0': 0.0,
'I54_0': 0.0,
'I55_0': 0.0,
'I56_0': 0.0,
'I57_0': 0.0,
'I58_0': 0.0,
'I59_0': 0.0,
'I60_0': 0.0,
'I61_0': 0.0,
'I62_0': 0.0,
'I63_0': 0.0,
'I64_0': 0.0,
'I65_0': 0.0,
'I66_0': 0.0,
'I67_0': 0.0,
'I68_0': 0.0,
'O1_0': 0.0,
'O2_0': 0.0,
'O3_0': 0.0,
'O4_0': 0.0,
'O5_0': 0.0,
'O6_0': 0.0,
'O7_0': 0.0,
'O8_0': 0.0,
'O9_0': 0.0,
'O10_0': 0.0,
'O11_0': 0.0,
'O12_0': 0.0,
'O13_0': 0.0,
'O14_0': 0.0,
'O15_0': 0.0,
'O16_0': 0.0,
'O17_0': 0.0,
'O18_0': 0.0,
'O19_0': 0.0,
'O20_0': 0.0,
'O21_0': 0.0,
'O22_0': 0.0,
'O23_0': 0.0,
'O24_0': 0.0,
'O25_0': 0.0,
'O26_0': 0.0,
'O27_0': 0.0,
'O28_0': 0.0,
'O29_0': 0.0,
'O30_0': 0.0,
'O31_0': 0.0,
'O32_0': 0.0,
'O33_0': 0.0,
'O34_0': 0.0,
'O35_0': 0.0,
'O36_0': 0.0,
'O37_0': 0.0,
'O38_0': 0.0,
'O39_0': 0.0,
'O40_0': 0.0,
'O41_0': 0.0,
'O42_0': 0.0,
'O43_0': 0.0,
'O44_0': 0.0,
'O45_0': 0.0,
'O46_0': 0.0,
'O47_0': 0.0,
'O48_0': 0.0,
'O49_0': 0.0,
'O50_0': 0.0,
'O51_0': 0.0,
'O52_0': 0.0,
'O53_0': 0.0,
'O54_0': 0.0,
'O55_0': 0.0,
'O56_0': 0.0,
'O57_0': 0.0,
'O58_0': 0.0,
'O59_0': 0.0,
'O60_0': 0.0,
'O61_0': 0.0,
'O62_0': 0.0,
'O63_0': 0.0,
'O64_0': 0.0,
'O65_0': 0.0,
'O66_0': 0.0,
'O67_0': 0.0,
'O68_0': 0.0,
'O69_0': 0.0,
'O70_0': 0.0,
'O71_0': 0.0,
'O72_0': 0.0,
'O73_0': 0.0,
'O74_0': 0.0,
'O75_0': 0.0,
'O76_0': 0.0,
'OS_0': 0.0,
'IS_0': 0.0}