Commit 8260a545 authored by Peter Jansweijer's avatar Peter Jansweijer

added results for alpha, based on linear tangent (to compare with 5-term sellmeier result)

added linear alpha to dispersion plot
parent cc0f0e65
......@@ -190,29 +190,29 @@ def spec_alpha(alpha):
############################################################################
def calc_alpha_l1(lambda_1, lambda_2, crtt_lambda_1, crtt_lambda_2, fixed_lambda):
"""
calc_alpha_l1 calculates the alpha factor for wavelength lambda l1.
For this caluculation we need two cable round trip times that were measured
using lamdba l1 and lambda l2 while both used a common fixed_lambda for the
return channel.
lambda_1, lambda_2, fixed_lambda -- <float> lambda's in [m]
crtt_l1, crtt_l2 -- <float> cable round trip times measured
at lambda_1 and lambda_2
returns:
alpha_lambda_1 -- <float>
"""
delta_lambda_1 = lambda_1 - fixed_lambda
delta_lambda_2 = lambda_2 - fixed_lambda
crtt_diff = crtt_lambda_1 - crtt_lambda_2
lambda_diff = lambda_1 - lambda_2
alpha_lambda_1 = (2 * delta_lambda_1 * crtt_diff)/((crtt_lambda_1 * lambda_diff) - (crtt_diff * delta_lambda_1))
return (alpha_lambda_1)
#def calc_alpha_l1(lambda_1, lambda_2, crtt_lambda_1, crtt_lambda_2, fixed_lambda):
# """
# calc_alpha_l1 calculates the alpha factor for wavelength lambda l1.
# For this caluculation we need two cable round trip times that were measured
# using lamdba l1 and lambda l2 while both used a common fixed_lambda for the
# return channel.
#
# lambda_1, lambda_2, fixed_lambda -- <float> lambda's in [m]
# crtt_l1, crtt_l2 -- <float> cable round trip times measured
# at lambda_1 and lambda_2
#
# returns:
# alpha_lambda_1 -- <float>
#
# """
#
# delta_lambda_1 = lambda_1 - fixed_lambda
# delta_lambda_2 = lambda_2 - fixed_lambda
# crtt_diff = crtt_lambda_1 - crtt_lambda_2
# lambda_diff = lambda_1 - lambda_2
#
# alpha_lambda_1 = (2 * delta_lambda_1 * crtt_diff)/((crtt_lambda_1 * lambda_diff) - (crtt_diff * delta_lambda_1))
# return (alpha_lambda_1)
############################################################################
......@@ -226,7 +226,7 @@ def calc_alpha(l, crtt_l, tangent, fixed_lambda):
l -- <float> lambda [m]
crtt_l -- <int> cable round trip time measured at lambda l
using fixed_lambda on the return channel [ps]
tangent -- <float> [ps/nm]
tangent -- <float> [ps/nm]
fixed_lambda -- <float> fixed return channel lambda [m]
returns:
......@@ -422,19 +422,10 @@ if __name__ == "__main__":
# again define the best fit line, now based on clean arrays:
ly_clean=[]
alpha_clean=[]
alpha_lin_clean=[]
fixed_lambda = itu_conv.itu_2_wavelength(fixed_itu_channel)
### Test. Take ITU channel 11 as a refernce and calculate alpha for this
# wavelength using a scan over all other lambda's and crtt measurments
alpha_tst=[]
tst_lambda_1 = crtt_array["itu_wavelength"][0] # ITU channel 11 is refernce
tst_crtt_1 = crtt_array["crtt"][0]
for i in range(1,len(x_clean)):
l2 = x_clean[i]/1e9 # convert back to [m]
crtt_l2 = y_clean[i]
alpha_tst.append(calc_alpha_l1(tst_lambda_1, l2, tst_crtt_1, crtt_l2, fixed_lambda))
# Scan through all wavelengths and calculate the individual alpha's
# using the dispersion for that wavelength. The dispersion is the derivative
# of the group_delay that was found from the 5-term Sellmeier fit through the
......@@ -450,6 +441,7 @@ if __name__ == "__main__":
clean_y = (group_delay(i,popt[0],popt[1],popt[2],popt[3],popt[4]))
dispersion = dispersion_coefficient(i,popt[1],popt[2],popt[3],popt[4])
ly_clean.append(clean_y)
alpha_lin_clean.append(calc_alpha(i/1e9, clean_y, tangent*1e9, fixed_lambda))
alpha_clean.append(calc_alpha(i/1e9, clean_y, dispersion, fixed_lambda))
fig = plt.figure("CRTT versus ITU Channel number")
......@@ -486,21 +478,22 @@ if __name__ == "__main__":
ax.set_xlabel('Wavelenth [nm]')
ax.set_ylabel('delayCoefficient')
#ax.set_ylabel('Alpha')
ax.text(0.01, 0.95, 'dispersion coefficient derived using 5th order Sellmeier fit', transform=ax.transAxes)
ax.text(0.01, 0.95, 'fiber delayCoefficient (alpha) derived using linear and 5th order Sellmeier fit', transform=ax.transAxes)
ax.axhline(0, color='gray')
ax.axvline(fixed_lambda*1e9, color='red')
ax.plot(x_clean, alpha_clean)
ax.plot(x_clean, alpha_lin_clean)
alpha_file = open(name+".out","w")
alpha_file.write("file: " + insitu_file + "\n")
alpha_file.write("outlier-count: " + str(outlier_cnt) + "\n")
alpha_file.write("first order linear fit tangent: " + str(tangent)+ " [ps]/[nm]\n")
alpha_file.write("============================\n")
alpha_file.write("ITU_Channel, Lambda, alpha, aplha(SPEC format), temperature\n")
alpha_file.write("ITU_Channel, Lambda, alpha, aplha(SPEC format), alpha_lineair, temperature\n")
for i in range(len(x_clean)):
wavelength = x_clean[i]
itu_ch = itu_conv.wavelength_2_itu(wavelength/1e9)
alpha_file.write(str(itu_ch) + ", " + str(wavelength) + ", " + str(alpha_clean[i]) + ", " + str (spec_alpha(alpha_clean[i])) + ", " + str(t_clean[i]) + "\n")
alpha_file.write(str(itu_ch) + ", " + str(wavelength) + ", " + str(alpha_clean[i]) + ", " + str (spec_alpha(alpha_clean[i])) + ", " + str(alpha_lin_clean[i]) + ", " + str(t_clean[i]) + "\n")
alpha_file.close()
#pdb.set_trace()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment