#!/usr/bin/python3
print('*** Širina Lorentzove spektralne črte - S53MV 14.03.2023 ***')

import math
fmin=3e6	#začetni f=3MHz
fmax=3e12	#končni f=3THz
bmin=1e-3	#zacetni B=1mHz
bmax=3e7	#koncni B=30MHz
kb=1.38e-23	#Boltzmann
t0=290		#sobna temperatura
ql=10		#obremenjena kvaliteta
p0=1e-4		#moč oscilatorja
ff=10		#šumno število
    
f=fmin
kf=1.1
dd=[]
ww=[]
while f<=fmax:
	dd+=[f]
	ww+=[math.pi*kb*t0*ff/(4*p0)*(f/ql)**2]
	f*=kf

import matplotlib.pyplot as plt
fig=plt.figure(figsize=(10,10))
plt.rcParams.update({'font.size': 16})
plt.loglog(dd,ww,'b-',lw=3)
plt.axis([fmin,fmax,bmin,bmax])
plt.xticks([1e7,1e8,1e9,1e10,1e11,1e12],['10MHz','100MHz','1GHz','10GHz','100GHz','1THz'])
plt.yticks([1e-3,3e-2,1,30,1e3,3e4,1e6,3e7],['1mHz','30mHz','1Hz','30Hz','1kHz','30kHz','1MHz','30MHz'])
plt.xlabel('Osrednja frekvenca oscilatorja $f_0$ [Hz]')
plt.ylabel('Širina Lorentzove spektralne črte $f_{FWHM}$ [Hz]')
plt.grid(c='k',linestyle='--')
fig.savefig('fwhm.svg', transparent=True)
plt.show()

print('*** Konec ***')
