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
1.2.7