Difference between revisions of "Example:Radio-frequency single electron transistor"

From Pynomo
Jump to: navigation, search
(Construction of the nomograph)
Line 1: Line 1:
 
{{Infobox_general
 
{{Infobox_general
| name = Second order equation
+
| name = RF-SET
| image = [[Image:ex_second_order_eq.png|150px]]
+
| image = [[Image:ex_rfset.png|150px]]
 
| Field1a =author
 
| Field1a =author
 
| Field1b =Leif Roschier
 
| Field1b =Leif Roschier
Line 19: Line 19:
 
== Construction of the nomograph ==
 
== Construction of the nomograph ==
 
The equation is written as
 
The equation is written as
<math>-\log(\delta q)+x+\frac{1}{2}\log(k_B T_0 Z_T)-\log(0.9(k_B E_C)^{2.74}-\log(0.41(k_B T)^{-1.74}/e)\,</math>
+
split into two equations that each are blocks:
 
+
split into three equations that each are blocks:
+
  
 
{| style="background:wihte; color:black" border="1" cellpadding="5" cellspacing="0"  
 
{| style="background:wihte; color:black" border="1" cellpadding="5" cellspacing="0"  
Line 27: Line 25:
 
| <math>-\log(\delta q)+x+\frac{1}{2}\log(k_B T_0 Z_T)-\log(0.9(k_B E_C)^{2.74}-\log(0.41(k_B T)^{-1.74}/e)=0\,</math> || [[type 3]]
 
| <math>-\log(\delta q)+x+\frac{1}{2}\log(k_B T_0 Z_T)-\log(0.9(k_B E_C)^{2.74}-\log(0.41(k_B T)^{-1.74}/e)=0\,</math> || [[type 3]]
 
|-  
 
|-  
| <math>\exp(x) = </math> || [[type 2]]
+
| <math>\exp(x) = (3\frac{R_\Sigma}{Z_{TR}}+\frac{Z_{TR}}{Z_T})</math> || [[type 5]]
|-
+
| <math>\frac{R_1}{E}= \frac{F}{R_2} \,\,\,\,\,\,\,</math> || [[type 4]]  
+
 
|}
 
|}
  
Line 35: Line 31:
 
{{Infobox_nomogram1
 
{{Infobox_nomogram1
 
| name        = Second order equation
 
| name        = Second order equation
| image =  [[Image:ex_second_order_eq.png]]
+
| image =  [[Image:ex_rfset.png]]
| file = [[Image:ex_second_order_eq.pdf]]
+
| file = [[Image:ex_rfset.pdf]]
 
}}
 
}}
  
Line 42: Line 38:
 
<source lang=python>
 
<source lang=python>
 
"""
 
"""
     ex_second_order_eq.py
+
     ex_rfset.py
  
     Second order equation: z**2+p*z+q=0
+
     Sensitivity of radio-frequency single electron transistor (RF-SET).
  
 
     Copyright (C) 2007-2008  Leif Roschier
 
     Copyright (C) 2007-2008  Leif Roschier
Line 63: Line 59:
 
from nomographer import *
 
from nomographer import *
  
N_params_1={
+
# for testing
        'u_min':-10.0,
+
R_sigma=60e3
        'u_max':10.0,
+
Z_tr=800.0
 +
t=0.2
 +
k_b=1.3806504e-23
 +
T_0=4.0
 +
Z_T=50.0
 +
E_C=2.0*k_b
 +
e=1.3806504e-19
 +
T=t*E_C/k_b
 +
 
 +
d_q = 2.0*(3.0*R_sigma/Z_tr+Z_tr/Z_T)*sqrt(k_b*T_0*Z_T)/(2.0*0.41*t**(-1.74)*0.9*E_C/e**2)/e
 +
print "for testing...d_q: %g"%d_q
 +
 
 +
def f_dq(q):
 +
    return -log(q*1e-6)-14.0 # additional const for helping scale alignment
 +
 
 +
def f_t0(t0):
 +
    return 0.5*log(k_b*t0*Z_T)+14.0 # additional const for helping scale alignment
 +
 
 +
def f_ec(ec): # [K]
 +
    return -log(0.9*(k_b*ec)**2.74)-150.0 # additional const for helping scale alignment
 +
 
 +
def f_t(t):
 +
    return -log(0.41*(k_b*t)**-1.74/e)+150.0 # additional const for helping scale alignment
 +
 
 +
def f_rs(rs):
 +
    return rs*1e3
 +
 
 +
def f_ztr(x,ztr):
 +
    return (exp(x)-ztr/Z_T)*ztr/3.0
 +
 
 +
block_contour_params={
 +
          'width':10.0,
 +
          'height':5.0,
 +
          'block_type':'type_5',
 +
          'u_func':f_rs,
 +
          'v_func':f_ztr,
 +
          'u_values':[10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.0],
 +
          'v_values':[100.0,200.0,400.0,800.0,1600.0],
 +
          'wd_tag':'AA',
 +
          'u_title':'$R_\Sigma (k\Omega )$',
 +
          'v_title':r'$Z_{TR}$',
 +
          'v_text_format':r"$%3.0f k\Omega$ ",
 +
          'u_text_format':r"$%3.0f$ ",
 +
          'mirror_y':False,
 +
          'wd_tick_levels':0,
 +
          'wd_tick_text_levels':0,
 +
            }
 +
 
 +
# this is non-obvious trick to find bottom edge coordinates of the grid in order
 +
# to align it with N nomogram
 +
block1_dummy=Nomo_Block_Type_5(mirror_x=False)
 +
block1_dummy.define_block(block_contour_params)
 +
block1_dummy.set_block()
 +
 
 +
x_params={
 +
        'u_min':block1_dummy.grid_box.params_wd['u_min'],
 +
        'u_max':block1_dummy.grid_box.params_wd['u_max'],
 
         'function':lambda u:u,
 
         'function':lambda u:u,
         'title':r'$p$',
+
         'title':'',
         'tick_levels':3,
+
        'tag':'AA',
 +
        'tick_side':'right',
 +
         'tick_levels':2,
 
         'tick_text_levels':2,
 
         'tick_text_levels':2,
         'tick_side':'left'
+
         'reference':False,
 +
        'tick_levels':0,
 +
        'tick_text_levels':0,
 +
        'title_draw_center':True,
 +
        'text_format':r"$%3.2f$ "
 
                 }
 
                 }
  
 +
N_params_1={
 +
        'u_min':0.5,
 +
        'u_max':20.0,
 +
        'function':f_ec,
 +
        'title':r'$E_C$',
 +
        'tick_levels':4,
 +
        'tick_text_levels':3,
 +
        'scale_type':'log',
 +
                }
 
N_params_2={
 
N_params_2={
         'u_min':-10.0,
+
         'u_min':0.1,
         'u_max':10.0,
+
         'u_max':20.0,
         'function':lambda u:u,
+
         'function':f_t,
         'title':r'$q$',
+
         'title':r'$T$',
         'tick_levels':3,
+
         'tick_levels':4,
         'tick_text_levels':2,
+
         'tick_text_levels':3,
         'tick_side':'right',
+
         'scale_type':'log',
 
                 }
 
                 }
 
 
N_params_3={
 
N_params_3={
         'u_min':0.0,
+
         'u_min':0.5,
         'u_max':5.0,
+
         'u_max':100.0,
         'function_3':lambda u:u,
+
         'function':f_dq,
        'function_4':lambda u:u**2,
+
         'title':r'$\delta q$',
         'title':r'$z$',
+
         'tick_levels':4,
         'tick_levels':0,
+
         'tick_text_levels':2,
         'tick_text_levels':0,
+
         'scale_type':'log',
         'title_draw_center':True,
+
        'title_opposite_tick':False,
+
        'extra_params':[{'tick_side':'left',
+
                        'u_min':0.1,
+
                        'u_max':12.0,
+
                        'tick_text_levels':2,
+
                        'tick_levels':3
+
                        }]
+
 
                 }
 
                 }
 +
N_params_4={
 +
        'u_min':0.1,
 +
        'u_max':20.0,
 +
        'function':f_t0,
 +
        'title':r'$T_0$',
 +
        'tick_levels':2,
 +
        'tick_text_levels':1,
 +
        'scale_type':'log',
 +
            }
 +
  
 
block_1_params={
 
block_1_params={
             'block_type':'type_10',
+
             'block_type':'type_3',
             'width':10.0,
+
             'width':5.0,
 
             'height':10.0,
 
             'height':10.0,
             'f1_params':N_params_1,
+
             'mirror_x':True,
             'f2_params':N_params_2,
+
             'reference_padding':0.05,
             'f3_params':N_params_3,
+
             'f_params':[N_params_1,N_params_2,N_params_3,
 +
                        N_params_4,x_params]
 
             }
 
             }
  
 
main_params={
 
main_params={
               'filename':'ex_second_order_eq.pdf',
+
               'filename':'ex_rfset.pdf',
               'paper_height':10.0,
+
               'paper_height':20.0,
               'paper_width':10.0,
+
               'paper_width':20.0,
               'block_params':[block_1_params],
+
               'block_params':[block_1_params,block_contour_params],
               'transformations':[('rotate',0.01),('scale paper',)],
+
               'transformations':[('rotate',-0.01),('scale paper',)],
               'title_str':r'$z^2+pz+q=0$'
+
               'title_str':r''
 
               }
 
               }
 
Nomographer(main_params)
 
Nomographer(main_params)
 
</source>
 
</source>

Revision as of 21:09, 13 September 2008

RF-SET
Ex rfset.png
author Leif Roschier

Theory and background

Radio-frequency single-electron transistor (RF-SET) is a sensitive charge detector. It's charge sensitivity [math]\delta q [e/\sqrt{Hz}]\,[/math] in normal (not superconducting) operation is typically set by pre-amplifier noise temperature [math]T_0 [K]\,[/math], charging energy [math]E_C [J]\,[/math], transistor island electron temperature [math]T [K]\,[/math], SET high bias DC resistance [math]R_\Sigma [\Omega]\,[/math] and LC-transformer impedance [math]Z_{TR} [\Omega]\,[/math] according to relation [1]

[math]\delta q \approx \frac{2(3\frac{R_\Sigma}{Z_{TR}}+\frac{Z_{TR}}{Z_T}) \sqrt{k_B T_0 Z_T}}{2\times 0.41 t^{-1.74} 0.9 E_C/e^2}. \,[/math]

References

  1. L. Roschier, M. Sillanpää, W. Taihong, M. Ahlskog, S. Iijima and P. Hakonen, “Carbon nanotube radio-frequency single-electron transistor”, Journal of Low Temperature Physics, 136, 465 (2004).

Construction of the nomograph

The equation is written as split into two equations that each are blocks:

[math]-\log(\delta q)+x+\frac{1}{2}\log(k_B T_0 Z_T)-\log(0.9(k_B E_C)^{2.74}-\log(0.41(k_B T)^{-1.74}/e)=0\,[/math] type 3
[math]\exp(x) = (3\frac{R_\Sigma}{Z_{TR}}+\frac{Z_{TR}}{Z_T})[/math] type 5

Generated nomograph

Second order equation
Ex rfset.png
Generated portable document file (pdf): File:Ex rfset.pdf

Source code

"""
    ex_rfset.py
 
    Sensitivity of radio-frequency single electron transistor (RF-SET).
 
    Copyright (C) 2007-2008  Leif Roschier
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""
from nomographer import *
 
# for testing
R_sigma=60e3
Z_tr=800.0
t=0.2
k_b=1.3806504e-23
T_0=4.0
Z_T=50.0
E_C=2.0*k_b
e=1.3806504e-19
T=t*E_C/k_b
 
d_q = 2.0*(3.0*R_sigma/Z_tr+Z_tr/Z_T)*sqrt(k_b*T_0*Z_T)/(2.0*0.41*t**(-1.74)*0.9*E_C/e**2)/e
print "for testing...d_q: %g"%d_q
 
def f_dq(q):
    return -log(q*1e-6)-14.0 # additional const for helping scale alignment
 
def f_t0(t0):
    return 0.5*log(k_b*t0*Z_T)+14.0 # additional const for helping scale alignment
 
def f_ec(ec): # [K]
    return -log(0.9*(k_b*ec)**2.74)-150.0 # additional const for helping scale alignment
 
def f_t(t):
    return -log(0.41*(k_b*t)**-1.74/e)+150.0 # additional const for helping scale alignment
 
def f_rs(rs):
    return rs*1e3
 
def f_ztr(x,ztr):
    return (exp(x)-ztr/Z_T)*ztr/3.0
 
block_contour_params={
           'width':10.0,
           'height':5.0,
           'block_type':'type_5',
           'u_func':f_rs,
           'v_func':f_ztr,
           'u_values':[10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0,100.0],
           'v_values':[100.0,200.0,400.0,800.0,1600.0],
           'wd_tag':'AA',
           'u_title':'$R_\Sigma (k\Omega )$',
           'v_title':r'$Z_{TR}$',
           'v_text_format':r"$%3.0f k\Omega$ ",
           'u_text_format':r"$%3.0f$ ",
           'mirror_y':False,
           'wd_tick_levels':0,
           'wd_tick_text_levels':0,
             }
 
# this is non-obvious trick to find bottom edge coordinates of the grid in order
# to align it with N nomogram
block1_dummy=Nomo_Block_Type_5(mirror_x=False)
block1_dummy.define_block(block_contour_params)
block1_dummy.set_block()
 
x_params={
        'u_min':block1_dummy.grid_box.params_wd['u_min'],
        'u_max':block1_dummy.grid_box.params_wd['u_max'],
        'function':lambda u:u,
        'title':'',
        'tag':'AA',
        'tick_side':'right',
        'tick_levels':2,
        'tick_text_levels':2,
        'reference':False,
        'tick_levels':0,
        'tick_text_levels':0,
        'title_draw_center':True,
        'text_format':r"$%3.2f$ "
                }
 
N_params_1={
        'u_min':0.5,
        'u_max':20.0,
        'function':f_ec,
        'title':r'$E_C$',
        'tick_levels':4,
        'tick_text_levels':3,
        'scale_type':'log',
                }
N_params_2={
        'u_min':0.1,
        'u_max':20.0,
        'function':f_t,
        'title':r'$T$',
        'tick_levels':4,
        'tick_text_levels':3,
        'scale_type':'log',
                }
N_params_3={
        'u_min':0.5,
        'u_max':100.0,
        'function':f_dq,
        'title':r'$\delta q$',
        'tick_levels':4,
        'tick_text_levels':2,
        'scale_type':'log',
                }
N_params_4={
        'u_min':0.1,
        'u_max':20.0,
        'function':f_t0,
        'title':r'$T_0$',
        'tick_levels':2,
        'tick_text_levels':1,
        'scale_type':'log',
            }
 
 
block_1_params={
             'block_type':'type_3',
             'width':5.0,
             'height':10.0,
             'mirror_x':True,
             'reference_padding':0.05,
             'f_params':[N_params_1,N_params_2,N_params_3,
                         N_params_4,x_params]
             }
 
main_params={
              'filename':'ex_rfset.pdf',
              'paper_height':20.0,
              'paper_width':20.0,
              'block_params':[block_1_params,block_contour_params],
              'transformations':[('rotate',-0.01),('scale paper',)],
              'title_str':r''
              }
Nomographer(main_params)