00001 // microstrip.cc 00002 00003 // Create a superconducting microstrip line and use it to make a 00004 // simple 1/4 wave transformer, matching 30 Ohms to a 10 Ohm load 00005 // at 230 GHz. 00006 00007 #include "supermix.h" 00008 00009 int main() 00010 { 00011 device::T = 4.2*Kelvin; // operating temperature 00012 device::f = 230*GHz; // this is the design frequency for the match 00013 device::Z0 = 30*Ohm; // one of the imdepances to match 00014 00015 00016 // The materials and the microstrip: 00017 00018 super_film nb; 00019 nb.Vgap = 2.9*mVolt; 00020 nb.Tc = 9.2*Kelvin; 00021 nb.rho_normal = 5.0*Micro*Ohm*Centi*Meter; 00022 nb.Thick = 3000*Angstrom; 00023 00024 const_diel SiO(5.6, .0001), air(1.0,0); 00025 00026 microstrip line; 00027 line.superstrate(air).substrate(SiO).top_strip(nb).ground_plane(nb); 00028 line.sub_thick = 2500*Angstrom; 00029 00030 00031 // Determine the microstrip line width and length: 00032 00033 double Zo = sqrt(30*Ohm * 10*Ohm); // match the real part of Zchar to this 00034 00035 line.width = 1.0*Micron; // initial guess for line width 00036 while( fabs(line.Zchar(device::f,device::T).real/Zo - 1.0) > 1.0e-6 ) 00037 // increase width if Zchar too high, decrease width if too low: 00038 line.width *= line.Zchar(device::f,device::T).real/Zo; 00039 00040 line.length = .25 * 2*Pi/line.Kprop(device::f,device::T).imaginary; 00041 00042 00043 // test the transformer response: 00044 00045 zterm load(10*Ohm); 00046 cascade stub; 00047 stub.add(line).add(load); // now we have a 1-port line terminated by load 00048 00049 cout << "# 1/4 wave superconducting Niobium/SiO microstrip transformer" << endl 00050 << "# to match 10 Ohms to 30 Ohms at " << device::f/GHz << " GHz." << endl; 00051 00052 cout << endl 00053 << "# Microstrip physical characteristics:" << endl 00054 << "# Temperature: " << device::T/Kelvin << " Kelvin" << endl 00055 << "# Nb thickness: " << nb.Thick/Angstrom << " Angstrom" << endl 00056 << "# SiO thickness: " << line.sub_thick/Angstrom << " Angstrom" << endl 00057 << "# line width: " << line.width/Micron << " Micron" << endl 00058 << "# line length: " << line.length/Micron << " Micron" << endl 00059 << "# line Zo: " << line.Zchar(device::f,device::T).real/Ohm 00060 << " Ohm" << endl; 00061 00062 cout << endl 00063 << "# f(GHz)" << "\t" << "Match (dB)" << endl 00064 << "# ------" << "\t" << "----------" << endl; 00065 00066 for(device::f = 200*GHz; device::f <= 260*GHz; device::f += 5*GHz) { 00067 cout << " " << setw(6) 00068 << device::f/GHz << "\t" << stub.get_data().SdB(1,1) << endl; 00069 } 00070 00071 }
Please direct comments and corrections to
supermix@submm.caltech.edu
Go to the supermix home page
Generated by
1.2.7