import numpy as np
import matplotlib.pyplot as plt
import src.coil_class as BC


I_current = 1.25

# scale = 1000 --> μm
scale = 1000
lim = 5
nr_points = (2 * lim) * scale + 1
x = np.linspace(-lim,lim,nr_points)
z = np.linspace(-lim,lim,nr_points)
print(x)

def mu_it(x_pos):
    it = nr_points//2 + x_pos
    return it

print(x[mu_it(-60)])

#standard
C1 = BC.BCoil(HH = 1, distance = 54, radius = 48, layers = 8, windings = 8, wire_height = 0.5, wire_width = 0.5, insulation_thickness= 0.06, is_round = True, winding_scheme= True)
C1.set_R_outer(49.8)
C1.set_d_min(49.8)
C1.print_info()

Bz, Bx = C1.B_tot_along_axis(I_current, x, z,raster = 2)

# plt.figure(5)
# plt.plot(z,Bz)
# plt.plot(x,Bx, label = "B_tot along x-axis")
# plt.show()
#plt.close(5)


#coil is ~ 500 μm thicker
shift_radius = 1#0.125
C_shift = BC.BCoil(HH = 1, distance = 54, radius = 48, layers = 8, windings = 8, wire_height = 0.5, wire_width = 0.5, insulation_thickness= 0.06, is_round = True, winding_scheme= True)
C_shift.set_R_outer(49.8 + shift_radius)
C_shift.set_d_min(49.8)

#shift_radius = 0.125

Bz2, By = C_shift.B_tot_along_axis(I_current+0.00082, x, z,raster = 2)

shift_int = int(shift_radius * scale - 1)
print(shift_int)
By_shift = By[shift_int:]
y_shift = x[:-shift_int]
print(By_shift)
print(y_shift)
B_sum = (By_shift + Bx[:-shift_int])/2
# shift By shift with shift radius

plt.figure(6)
#plt.plot(z,Bz)
plt.plot(x,Bx, label = "B_tot along x-axis")
plt.plot(y_shift,By_shift, label = "Shiftet tot B")
plt.plot(y_shift,B_sum, label = "B_sum")
plt.legend()
plt.show()
#plt.close(5)

it = mu_it(int(-shift_radius * 1e3 // 2))
#it = μm_it(-60)
print(it)
zero = mu_it(0)
print(y_shift[it])
print(y_shift[zero])

tot_diff = B_sum[it]-B_sum[zero]

print(f"diff {y_shift[it]} μm --> 0: {tot_diff} G, relative = {tot_diff/B_sum[it]}")

