1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| for nF in range(0,len(ListeF)) :
FreqVal = ListeF[nF]
valF = float(FreqVal)*1e9
w = 2*pi*valF # Pulsation
print u'La fréquence en cours est :', valF, u'Hz'
print ""
# ----------------------------------------------------------------------------------
# Détermination de la matrice identité de départ pour les calculs de la matrice ABCD
# ----------------------------------------------------------------------------------
ABCD = numpy.matrix([[1,0],[0,1]])
# ------------------------------------------------------------------------------------
# Calcul de la matrice ABCD du premier tronçon
# ------------------------------------------------------------------------------------
nAB =0
ABCD = ABCD
deltaL = elementary(0, incdeltaL) # Pas de mesure du premier tronçon
#------------------------------------------------------------------------------------
# Calcul des caractéristiques d'une ligne à air sans pertes
#------------------------------------------------------------------------------------
F0 = (((diamB[nAB]/diamA[nAB])**2-1)/(2*log(diamB[nAB]/diamA[nAB])))-((diamB[nAB]/diamA[nAB])*log(diamB[nAB]/diamA[nAB])/((diamB[nAB]/diamA[nAB])+1))-0.5*((diamB[nAB]/diamA[nAB])+1)
L0 = mu*log(diamB[nAB]/diamA[nAB])/2/pi # Inductance linéique sans perte
C0 = 2*pi*E/log(diamB[nAB]/diamA[nAB]) # Capacité linéique sans perte
#------------------------------------------------------------------------------------
# Calcul des caractéristiques d'une ligne à air avec pertes
#------------------------------------------------------------------------------------
k2 = (w*sqrt(L0*C0))**2 #nombre d'onde angulaire au carré
ds = sqrt(2*Rho/w/mu) #épaisseur de peau
d0 = ds*(1+(diamB[nAB]/diamA[nAB]))/(4*(diamB[nAB]/2)*log(diamB[nAB]/diamA[nAB]))
R = 2*w*L0*d0*(1-k2*(diamA[nAB]/2)**2*F0/2) # Résistance linéique
L = L0*(1+2*d0*(1-k2*(diamA[nAB]/2)**2*F0/2)) # Inductance linéique
G = w*C0*d0*k2*(diamA[nAB]/2)**2*F0 # Conductance linéique
C = C0*(1+d0*k2*(diamA[nAB]/2)**2*F0) # Capacité linéique
Zc = sqrt((R+((L*w)*1j))/(G+((C*w)*1j))) # Impédance caractéristique
Gamma = sqrt((R+((L*w)*1j))*(G+((C*w)*1j))) # Constante de propagation
#------------------------------------------------------------------------------------
# Détermination de la Matrice ABCD de la ligne
#------------------------------------------------------------------------------------
coef = Gamma*deltaL
Cos = cosh(coef)
Sin = sinh(coef)
ABCD = ABCD * numpy.matrix([[Cos,Sin*Zref],[Sin/Zref,Cos]]) # Création de la matrice ABCD d'un élément de la ligne ([A,B],[C,D]) - pour le point 0
# ------------------------------------------------------------------------------------
# Boucle à partir des données extraites des fichiers (calculs en fonction des diamètres)
# ------------------------------------------------------------------------------------
for nAB in range(1,len(AB)):
ABCD=ABCD
deltaL = elementary(cdeltaL, incdeltaL) # Pas de mesure
#------------------------------------------------------------------------------------
# Calcul des caractéristiques d'une ligne à air sans pertes
#------------------------------------------------------------------------------------
F0 = (((diamB[nAB]/diamA[nAB])**2-1)/(2*log(diamB[nAB]/diamA[nAB])))-((diamB[nAB]/diamA[nAB])*log(diamB[nAB]/diamA[nAB])/((diamB[nAB]/diamA[nAB])+1))-0.5*((diamB[nAB]/diamA[nAB])+1)
L0 = mu*log(diamB[nAB]/diamA[nAB])/2/pi # Inductance linéique sans perte
C0 = 2*pi*E/log(diamB[nAB]/diamA[nAB]) # Capacité linéique sans perte
#------------------------------------------------------------------------------------
# Calcul des caractéristiques d'une ligne à air avec pertes
#------------------------------------------------------------------------------------
k2 = (w*sqrt(L0*C0))**2 #nombre d'onde angulaire au carré
ds = sqrt(2*Rho/w/mu) #épaisseur de peau
d0 = ds*(1+(diamB[nAB]/diamA[nAB]))/(4*(diamB[nAB]/2)*log(diamB[nAB]/diamA[nAB]))
R = 2*w*L0*d0*(1-k2*(diamA[nAB]/2)**2*F0/2) # Résistance linéique
L = L0*(1+2*d0*(1-k2*(diamA[nAB]/2)**2*F0/2)) # Inductance linéique
G = w*C0*d0*k2*(diamA[nAB]/2)**2*F0 # Conductance linéique
C = C0*(1+d0*k2*(diamA[nAB]/2)**2*F0) # Capacité linéique
Zc = sqrt((R+((L*w)*1j))/(G+((C*w)*1j))) # Impédance caractéristique
Gamma = sqrt((R+((L*w)*1j))*(G+((C*w)*1j))) # Constante de propagation
#------------------------------------------------------------------------------------
# Détermination de la Matrice ABCD de la ligne
#------------------------------------------------------------------------------------
coef = Gamma*deltaL
Cos = cosh(coef)
Sin = sinh(coef)
ABCD = ABCD * numpy.matrix([[Cos,Sin*Zc],[Sin/Zc,Cos]]) # Création de la matrice ABCD d'un élément de la ligne ([A,B],[C,D])
#-----------------------------------------------------------------------------------------
# Calcul du coefficient de la matrice S de la ligne à partir de la matrice ABCD de la ligne
#-----------------------------------------------------------------------------------------
Scoef = 1/((ABCD[0,1]+Zref*Zref*ABCD[1,0])+(Zref*ABCD[0,0]+Zref*ABCD[1,1]))
#-----------------------------------------------------------------------------------------
# Calcul des valeurs de la matrice S
#-----------------------------------------------------------------------------------------
matS11 =(Scoef*(ABCD[0,1]-Zref*Zref*ABCD[1,0]+Zref*ABCD[0,0]-Zref*ABCD[1,1]))
matS12 =Scoef*(2*Zref*(ABCD[0,0]*ABCD[1,1]-ABCD[0,1]*ABCD[1,0]))
matS21 =Scoef*(2*Zref)
matS22 =Scoef*(ABCD[0,1]-Zref*Zref*ABCD[1,0]-Zref*ABCD[0,0]+Zref*ABCD[1,1])
#-----------------------------------------------------------------------------------------
# Formatage de l'écriture en sortie des valeurs d'incertitude
#-----------------------------------------------------------------------------------------
tabIncmatS11 = "u(re) =%s, u(im) = %s, r = %s" % as_std_uncertainty( std_covariance(matS11) )
tabIncmatS12 = "u(re) =%s, u(im) = %s, r = %s" % as_std_uncertainty( std_covariance(matS12) )
tabIncmatS21 = "u(re) =%s, u(im) = %s, r = %s" % as_std_uncertainty( std_covariance(matS21) )
tabIncmatS22 = "u(re) =%s, u(im) = %s, r = %s" % as_std_uncertainty( std_covariance(matS22) )
#-----------------------------------------------------------------------------------------
# Ecriture dans le fichier d'enregistrement des données
#-----------------------------------------------------------------------------------------
valcol = str(valF) + "\t" + \
str(value(matS11)) + "\t" + str(tabIncmatS11) + "\t" + \
str(value(matS12)) + "\t" + str(tabIncmatS12) + "\t" + \
str(value(matS21)) + "\t" + str(tabIncmatS21) + "\t" + \
str(value(matS22)) + "\t" + str(tabIncmatS22) + "\n"
matSFile.write(valcol) |
Partager