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

hemt.cc

Go to the documentation of this file.
00001 // hemt.cc
00002 // SuperMix version 1.0  C++ source file
00003 //
00004 // Copyright (c) 1999 California Institute of Technology.
00005 // All rights reserved.
00006 //
00007 // Redistribution and use in source and binary forms for noncommercial
00008 // purposes are permitted provided that the above copyright notice and
00009 // this paragraph are duplicated in all such forms and that any
00010 // documentation and other materials related to such distribution and
00011 // use acknowledge that the software was developed by California
00012 // Institute of Technology. Redistribution and/or use in source or
00013 // binary forms is not permitted for any commercial purpose. Use of
00014 // this software does not include a permitted use of the Institute's
00015 // name or trademark for any purpose.
00016 //
00017 // DISCLAIMER:
00018 // THIS SOFTWARE AND/OR RELATED MATERIALS ARE PROVIDED "AS-IS" WITHOUT
00019 // WARRANTY OF ANY KIND INCLUDING ANY WARRANTIES OF PERFORMANCE OR
00020 // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE OR PURPOSE (AS SET
00021 // FORTH IN UCC 23212-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE
00022 // LICENSED PRODUCT, HOWEVER USED.  IN NO EVENT SHALL CALTECH/JPL BE
00023 // LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING BUT NOT LIMITED TO
00024 // INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING ECONOMIC
00025 // DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, REGARDLESS OF
00026 // WHETHER CALTECH/JPL SHALL BE ADVISED, HAVE REASON TO KNOW, OR IN
00027 // FACT SHALL KNOW OF THE POSSIBILITY.  THE USER BEARS ALL RISK
00028 // RELATING TO QUALITY AND PERFORMANCE OF THE SOFTWARE AND/OR RELATED
00029 // MATERIALS.
00030 //
00031 // Change history:
00032 // 4/17/01:  Fixed name for conductance to "mSiemens".
00033 // 9/18/98:  Modified hemts since fet is now a data_ptr_nport.
00034 // 9/16/98:  added "* Kelvin" to the temperature member values
00035 
00036 #include "hemt.h"
00037 
00038 fhx13x::fhx13x() : fet()
00039 {
00040   Gm.G = 73.1621 * mSiemens;
00041   Gm.Tau = 0.7 * Pico * Second;
00042   Cgs.C = 0.18305 * pFarad;
00043   Rds.R = 166.21 * Ohm;
00044   Cgd.C = 0.0242041 * pFarad;
00045   Cds.C = 0.0230908 * pFarad;
00046   Rgs.R = 1.47226 * Ohm;
00047   Rg.R = 0.382871 * Ohm;
00048   Rs.R = 1.90601 * Ohm;
00049   Rd.R = 5.0 * Ohm;
00050   Lg.L = 0.0676668 * nHenry;
00051   Ls.L = 0.0810802 * nHenry;
00052   Ld.L = 0.103801 * nHenry;
00053   Cpg.C = 0.00548683 * pFarad;
00054   Cpd.C = 0.0300508 * pFarad;
00055 
00056   td_min = 500.0 * Kelvin;
00057   td_297k = 4158.0 * Kelvin;
00058   slope = (td_297k - td_min) / (292.0 * Kelvin);
00059 }
00060 
00061 void fhx13x::recalc()
00062 {
00063   // Set the drain resistor temperature.
00064   if(T<=5.0*Kelvin)
00065     Rds.Temp = td_min;
00066   else
00067     Rds.Temp = td_min + (T - 5.0*Kelvin)*slope;
00068 
00069   data_ptr = &fetckt.get_data();
00070 }
00071 
00072 fhr02x::fhr02x() : fet()
00073 {
00074   Gm.G = 69.3646 * mSiemens;
00075   Gm.Tau = 0.895616 * Pico * Second;
00076   Cgs.C = 0.22726 * pFarad;
00077   Rds.R = 146.598 * Ohm;
00078   Cgd.C = 0.0204 * pFarad;
00079   Cds.C = 0.018567 * pFarad;
00080   Rgs.R = 0.4000 * Ohm;
00081   Rg.R = 0.15023 * Ohm;
00082   Rs.R = 4.67118 * Ohm;
00083   Rd.R = 0.0453676 * Ohm;
00084   Lg.L = 0.067903 * nHenry;
00085   Ls.L = 0.0867215 * nHenry;
00086   Ld.L = 0.0810266 * nHenry;
00087   Cpg.C = 0.0255152 * pFarad;
00088   Cpd.C = 0.0349169 * pFarad;
00089 
00090   td_min = 500.0 * Kelvin;
00091   td_297k = 2426.0 * Kelvin;
00092   slope = (td_297k - td_min) / (292.0 * Kelvin);
00093 }
00094 
00095 void fhr02x::recalc()
00096 {
00097   // Set the drain resistor temperature.
00098   if(T<=5.0*Kelvin)
00099     Rds.Temp = td_min;
00100   else
00101     Rds.Temp = td_min + (T - 5.0*Kelvin)*slope;
00102 
00103   data_ptr = &fetckt.get_data();
00104 }
00105 
00106 kukje::kukje() : fet()
00107 {
00108   Gm.G = 109.0 * mSiemens;
00109   Gm.Tau = 0.6 * Pico * Second;
00110   Cgs.C = 0.155 * pFarad;
00111   Rds.R = 112. * Ohm;
00112   Cgd.C = 0.031 * pFarad;
00113   Cds.C = 0.006 * pFarad;
00114   Rgs.R = 2.9 * Ohm;
00115   Rg.R = 1.2 * Ohm;
00116   Rs.R = 2.5 * Ohm;
00117   Rd.R = 3.6 * Ohm;
00118   Lg.L = 0.032 * nHenry;
00119   Ls.L = 0.008 * nHenry;
00120   Ld.L = 0.011 * nHenry;
00121   Cpg.C = 0.008 * pFarad;
00122   Cpd.C = 0.051 * pFarad;
00123 
00124   td_min = 500.0 * Kelvin;
00125   td_297k = 3000.0 * Kelvin;
00126   slope = (td_297k - td_min) / (292.0 * Kelvin);
00127 }
00128 
00129 void kukje::recalc()
00130 {
00131   // Set the drain resistor temperature.
00132   if(T<=5.0*Kelvin)
00133     Rds.Temp = td_min;
00134   else
00135     Rds.Temp = td_min + (T - 5.0*Kelvin)*slope;
00136 
00137   data_ptr = &fetckt.get_data();
00138 }
00139 
00140 jpltrw160::jpltrw160() : fet()
00141 {
00142   Gm.G = 111.7 * mSiemens;
00143   Gm.Tau = 0.680 * Pico * Second;
00144   Cgs.C = 0.126 * pFarad;
00145   Rds.R = 78.81 * Ohm;
00146   Cgd.C = 0.038 * pFarad;
00147   Cds.C = 0.056 * pFarad;
00148   Rgs.R = 2.0 * Ohm;
00149   Rg.R = 2.0 * Ohm;
00150   Rs.R = 1.0 * Ohm;
00151   Rd.R = 1.0 * Ohm;
00152   Lg.L = 0.189 * nHenry;
00153   Ls.L = 0.037 * nHenry;
00154   Ld.L = 0.158 * nHenry;
00155   Cpg.C = 0.000 * pFarad;
00156   Cpd.C = 0.000 * pFarad;
00157 
00158   td_min = 430.0 * Kelvin;
00159   td_297k = 2000.0 * Kelvin;
00160   slope = (td_297k - td_min) / (292.0 * Kelvin);
00161 }
00162 
00163 void jpltrw160::remove_bond_wires()
00164 {
00165   Lg.L = 0.012 * nHenry;
00166   Ls.L = 0.008 * nHenry;
00167   Ld.L = 0.015 * nHenry;
00168 }
00169 
00170 void jpltrw160::recalc()
00171 {
00172   // Set the drain resistor temperature.
00173   if(T<=12.5*Kelvin)
00174     Rds.Temp = td_min;
00175   else
00176     Rds.Temp = td_min + (T - 5.0*Kelvin)*slope;
00177 
00178   data_ptr = &fetckt.get_data();
00179 }
00180 
00181 jpltrw300::jpltrw300() : fet()
00182 {
00183   Gm.G = 138.9 * mSiemens;
00184   Gm.Tau = 0.796 * Pico * Second;
00185   Cgs.C = 0.140 * pFarad;
00186   Rds.R = 43.21 * Ohm;
00187   Cgd.C = 0.063 * pFarad;
00188   Cds.C = 0.080 * pFarad;
00189   Rgs.R = 1.451 * Ohm;
00190   Rg.R = 3.0 * Ohm;
00191   Rs.R = 0.5 * Ohm;
00192   Rd.R = 2.0 * Ohm;
00193   Lg.L = 0.16 * nHenry;
00194   Ls.L = 0.034 * nHenry;
00195   Ld.L = 0.17 * nHenry;
00196   Cpg.C = 0.000 * pFarad;
00197   Cpd.C = 0.000 * pFarad;
00198 
00199   td_min = 430.0 * Kelvin;
00200   td_297k = 2000.0 * Kelvin;
00201   slope = (td_297k - td_min) / (292.0 * Kelvin);
00202 }
00203 
00204 void jpltrw300::remove_bond_wires()
00205 {
00206   Lg.L = 0.012 * nHenry;
00207   Ls.L = 0.008 * nHenry;
00208   Ld.L = 0.015 * nHenry;
00209 }
00210 
00211 void jpltrw300::recalc()
00212 {
00213   // Set the drain resistor temperature.
00214   if(T<=12.5*Kelvin)
00215     Rds.Temp = td_min;
00216   else
00217     Rds.Temp = td_min + (T - 5.0*Kelvin)*slope;
00218 
00219   data_ptr = &fetckt.get_data();
00220 }

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