Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

rfmatch.cc

Go to the documentation of this file.
00001 // rfmatch.cc
00002 
00003 // Create the RF circuit for 1/2 of a twinslot, quasioptical SIS
00004 // mixer. Analyze its frequency response for matching into an SIS
00005 // junction with specified physical characteristics.
00006 //
00007 // The circuit will be modelled as follows:
00008 //
00009 // RF     ---     ---     ---     ---   branch    ---     ---      short
00010 // IN o--|   |---|   |---|   |---|   |-----+-----|   |---|   |---+   to
00011 //        ---     ---     ---     ---      |      ---     ---    | ground
00012 //      antenna   rf_1    rf_2   tune_2    o    sis_cap  tune_1  V
00013 //                                        OUT
00014 //                                    (into SIS Rn)
00015 //
00016 // Below each element is the name of the object representing it in the
00017 // program code below. The SIS junction is modelled in a purely linear
00018 // fashion as a parallel RC combination. The power coupled into the R of
00019 // the RC is what we determine in this program.
00020 
00021 #include "supermix.h"
00022 
00023 // ==========================================================================
00024 // THE PHYSICAL SPECIFICATIONS OF THE RF CIRCUIT:
00025 
00026 // THE CHARACTERISTICS OF THE SUPERCONDUCTING FILMS
00027 struct sc_material { parameter Vgap, Tc, rho_normal; }
00028   nb    = { 2.9*mVolt,  9.20*Kelvin,  5.0*Micro*Ohm*Centi*Meter },
00029   nbtin = { 5.0*mVolt, 15.75*Kelvin, 30.0*Micro*Ohm*Centi*Meter };
00030 
00031 // THE WIDTHS AND LENGTHS OF THE MICROSTRIPS
00032 struct wl { parameter width, length; }
00033   RF1  = { 5.8*Micron, 11.2*Micron },   // transformer section 1 (nearest antenna)
00034   RF2  = { 3.3*Micron, 15.0*Micron },   // transformer section 2
00035   L1   = { 5.0*Micron,  6.9*Micron/2 }, // tuning inductor from SIS to virtual ground
00036   L2   = { 5.0*Micron,  2.5*Micron };   // tuning inductor between transformer and SIS
00037 
00038 // THE LAYER THICKNESSES
00039 parameter
00040   GP_THICKNESS   = 3000.*Angstrom,      // ground plane superconductor thickness
00041   TOP_THICKNESS  = 3000.*Angstrom,      // top strip superconductor thickness
00042   SIO_THICKNESS  = 4500.*Angstrom,      // SiO layer generally
00043   TUNE_THICKNESS = 2500.*Angstrom;      // SiO in tuning inductor
00044 
00045 // SIS JUNCTION PARAMETERS
00046 parameter
00047   RNA  = 21.8*Ohm*Micron*Micron,        // normal resistance - area product
00048   SCAP = 82.0*fFarad/Micron/Micron,     // specific capacitance (per area)
00049   AREA = 1.2*1.2*Micron*Micron;         // effective junction area
00050 
00051 // THE FILE NAME FOR THE ANTENNA IMPEDANCE INFORMATION
00052 const char * const ANT_FILE = "Zslot.750";
00053 
00054 
00055 // ==========================================================================
00056 // CLASSES WHICH ACTUALLY CALCULATE THE SIS RN AND CAPACITANCE:
00057 
00058 struct calc_Rn : public abstract_real_parameter {
00059   double get() const { return RNA/AREA; }
00060 } Rn;
00061 struct calc_Cap : public abstract_real_parameter {
00062   double get() const { return SCAP*AREA; }
00063 } Cap;
00064 
00065 
00066 // ==========================================================================
00067 int main()
00068 {
00069   // SET THE GLOBAL TEMPERATURE AND NORMALIZATION IMPEDANCE
00070   device::T  = 4.2*Kelvin;
00071   device::Z0 = & Rn;       // we use the SIS Rn as our normalizing impedance
00072 
00073 
00074   // CREATE THE SUPERCONDUCTING FILMS AND THE DIELECTRIC MATERIALS
00075 
00076   // The top film is Niobium.
00077   super_film top;
00078     top.Vgap       = & nb.Vgap;
00079     top.Tc         = & nb.Tc; 
00080     top.rho_normal = & nb.rho_normal;
00081     top.Thick      = & TOP_THICKNESS;
00082 
00083   // The groundplane is NbTiN.
00084   super_film gp;
00085     gp.Vgap        = & nbtin.Vgap;
00086     gp.Tc          = & nbtin.Tc; 
00087     gp.rho_normal  = & nbtin.rho_normal;
00088     gp.Thick       = & GP_THICKNESS;
00089 
00090   // Air is the dielectric above the microstrips; we just treat it as vacuum.
00091   const_diel air;
00092     air.eps  = 1.0;
00093     air.tand = 0.0;
00094 
00095   // SiO is the dielectric between the strip and the groundplane.
00096   const_diel sio;
00097     sio.eps  = 5.6;
00098     sio.tand = 0.0;
00099 
00100 
00101   // CREATE THE MICROSTRIPS USING THE ABOVE MATERIALS
00102 
00103   // For convenience, we first create a generic microstrip using our materials.
00104   microstrip ms;
00105     ms.ground_plane(gp);
00106     ms.substrate(sio);
00107     ms.top_strip(top);
00108     ms.superstrate(air);
00109 
00110   microstrip rf_1(ms);
00111     rf_1.width     = & RF1.width;
00112     rf_1.length    = & RF1.length;
00113     rf_1.sub_thick = & SIO_THICKNESS;
00114   microstrip rf_2(ms);
00115     rf_2.width     = & RF2.width;
00116     rf_2.length    = & RF2.length;
00117     rf_2.sub_thick = & SIO_THICKNESS;
00118   microstrip tune_1(ms);
00119     tune_1.width     = & L1.width;
00120     tune_1.length    = & L1.length;
00121     tune_1.sub_thick = & TUNE_THICKNESS;
00122   microstrip tune_2(ms);
00123     tune_2.width     = & L2.width;
00124     tune_2.length    = & L2.length;
00125     tune_2.sub_thick = & TUNE_THICKNESS;
00126 
00127 
00128   // CREATE THE ANTENNA
00129   complex_interp Z_ant;
00130   Z_ant.touchstone(ANT_FILE, 'Z');
00131   transformer antenna;
00132     antenna.Z2 = & Z_ant;
00133 
00134 
00135   // A CAPACITOR TO MODEL THE SIS JUNCTION
00136   capacitor sis_cap;
00137     sis_cap.parallel();
00138     sis_cap.C = & Cap;   // shadows our junction capacitance calculator
00139 
00140 
00141   // BUILD THE COMPLETE RF CIRCUIT MODEL
00142 
00143   branch tee;
00144   short_term ground;
00145 
00146   circuit rf;
00147     rf.connect( antenna, 2,  rf_1,    1 );
00148     rf.connect( rf_1,    2,  rf_2,    1 );
00149     rf.connect( rf_2,    2,  tune_2,  1 );
00150     rf.connect( tune_2,  2,  tee,     1 );
00151     rf.connect( tee,     2,  sis_cap, 1 );
00152     rf.connect( sis_cap, 2,  tune_1,  1 );
00153     rf.connect( tune_1,  2,  ground,  1 );
00154 
00155   int input  = rf.add_port( antenna, 1 );    // RF power input to antenna
00156   int output = rf.add_port( tee,     3 );    // power output into SIS resistance
00157 
00158 
00159   // ==========================================================================
00160   // PERFORM THE CALCULATION AND OUTPUT THE RESULTS
00161 
00162   cout << fixed << setprecision(3);
00163   cout << "# 750 GHz Twinslot RF Match, antenna -> SIS" << endl;
00164   cout << "# SIS Rn (Ohm): " << Rn/Ohm << " ; SIS Cap (fF): " << Cap/fFarad << endl;
00165   cout << "#" << endl;
00166   cout << "# F(THz)" << "\t" << "S21" << "\t" << "Phase" << endl;
00167 
00168   complex::out_degree();
00169   complex::out_separator("\t");
00170   
00171   for(double f = 300.0; f <= 1500.0; f += 1.0)  {
00172     device::f = f*GHz;
00173     sdata response = rf.get_data();
00174     complex S21 = response.S[output][input];
00175     cout << "   " << device::f/(1000*GHz)<< "\t" << S21 << endl;
00176   }
00177 
00178 }

Please direct comments and corrections to supermix@submm.caltech.edu
Go to the supermix home page
Generated by doxygen1.2.7