00001 // SuperMix version 1.0 C++ source file 00002 // 00003 // Copyright (c) 1999 California Institute of Technology. 00004 // All rights reserved. 00005 // 00006 // Redistribution and use in source and binary forms for noncommercial 00007 // purposes are permitted provided that the above copyright notice and 00008 // this paragraph are duplicated in all such forms and that any 00009 // documentation and other materials related to such distribution and 00010 // use acknowledge that the software was developed by California 00011 // Institute of Technology. Redistribution and/or use in source or 00012 // binary forms is not permitted for any commercial purpose. Use of 00013 // this software does not include a permitted use of the Institute's 00014 // name or trademark for any purpose. 00015 // 00016 // DISCLAIMER: 00017 // THIS SOFTWARE AND/OR RELATED MATERIALS ARE PROVIDED "AS-IS" WITHOUT 00018 // WARRANTY OF ANY KIND INCLUDING ANY WARRANTIES OF PERFORMANCE OR 00019 // MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE OR PURPOSE (AS SET 00020 // FORTH IN UCC 23212-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE 00021 // LICENSED PRODUCT, HOWEVER USED. IN NO EVENT SHALL CALTECH/JPL BE 00022 // LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING BUT NOT LIMITED TO 00023 // INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING ECONOMIC 00024 // DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, REGARDLESS OF 00025 // WHETHER CALTECH/JPL SHALL BE ADVISED, HAVE REASON TO KNOW, OR IN 00026 // FACT SHALL KNOW OF THE POSSIBILITY. THE USER BEARS ALL RISK 00027 // RELATING TO QUALITY AND PERFORMANCE OF THE SOFTWARE AND/OR RELATED 00028 // MATERIALS. 00029 // 00030 // ************************************************************************** 00031 00041 // ************************************************************************** 00042 // 00043 // 5/14/01: Converted comments to javadoc format 00044 // 11/2/00: Added passive_noise_temp() 00045 // 10/22/99: Some major changes to device::Z0 handling 00046 // 7/26/99: Changed z_norm to protected in sdata 00047 // 8/27/98: Added SdB, tn, and NF (JSW) 00048 // 7/8/98: Added sdata::reindex(); ydata_ptr 00049 // 6/26/98: Made constructors explicit 00050 // 6/22/98: Added indexing mode flexibility, changed size to 00051 // size() 00052 // 1/5/97: Added sdata::resize(); changed void to object & 00053 // 00054 // ************************************************************************** 00055 00056 #ifndef SDATA_H 00057 #define SDATA_H 00058 00059 #include "global.h" 00060 #include "device.h" 00061 00062 class sdata ; 00063 class zdata ; 00064 class ydata ; 00065 class ydata_ptr ; 00066 00067 // ************************************************************************** 00068 00075 class sdata 00076 { 00077 protected: 00079 double z_norm; 00080 00081 public: 00083 Matrix S; 00084 00086 Matrix C; 00087 00089 Vector B; 00090 00092 int size() const 00093 { return S.Lmaxindex(); } 00094 00095 v_index_mode mode() const 00096 { return S.Lmode; } 00097 00098 // convert sdata values to "engineering" forms: 00099 00107 double SdB(int out, int in) const; 00108 00116 double tn(int out, int in) const; 00117 00125 double NF(int out, int in) const; 00126 00132 explicit sdata(int n = 0, v_index_mode = Index_1); 00133 00135 sdata(const sdata &sd) ; 00136 00143 sdata(const sdata &sd, double z0) ; 00144 00145 // "conversion" constructors - to sdata from zdata, ydata, or ydata_ptr 00146 00150 sdata(const zdata &zd, double z0 = double(device::Z0)) ; 00151 00156 sdata(const ydata &yd, double z0 = double(device::Z0)) ; 00157 00162 sdata(const ydata_ptr &, double z0 = double(device::Z0)); 00163 00167 sdata & resize(int); 00168 00172 sdata & reindex(v_index_mode m = Index_1) 00173 { S.reindex(m,m); C.reindex(m,m); B.reindex(m); return *this; } 00174 00180 double get_znorm() const { return z_norm; } 00181 00188 sdata & set_znorm(double z) ; 00189 00196 sdata & change_norm(double new_z0 = double(device::Z0)) ; 00197 00207 sdata & passive_noise(double freq, double temp) ; 00208 }; 00209 00210 // ************************************************************************** 00211 00219 class zdata 00220 { 00221 public: 00223 Matrix Z; 00224 00226 Matrix C; 00227 00229 Vector Vs; 00230 00232 int size() const 00233 { return Z.Lmaxindex(); } 00234 00235 v_index_mode mode() const 00236 { return Z.Lmode; } 00237 00243 explicit zdata(int n = 0, v_index_mode = Index_1); 00244 00246 zdata(const zdata &zd) ; 00247 00248 // "conversion" constructors - to zdata from sdata or ydata 00249 00253 zdata(const sdata &sd) ; 00254 00259 zdata(const ydata &yd) ; 00260 00261 // assignment operator: just use default operator = for now 00262 // zdata & operator=(const zdata &zd) ; 00263 00268 zdata & passive_noise(double freq, double temp) ; 00269 }; 00270 00271 // ************************************************************************** 00272 00281 class ydata 00282 { 00283 public: 00285 Matrix Y; 00286 00288 Matrix C; 00289 00291 Vector Is; 00292 00294 int size() const 00295 { return Y.Lmaxindex(); } 00296 00297 v_index_mode mode() const 00298 { return Y.Lmode; } 00299 00305 explicit ydata(int n = 0, v_index_mode = Index_1); 00306 00308 ydata(const ydata &yd) ; 00309 00310 // "conversion" constructors - to ydata from sdata or zdata 00311 00315 ydata(const sdata &sd) ; 00316 00321 ydata(const zdata &zd) ; 00322 00323 // assignment operator: just use default operator = for now 00324 // ydata & operator=(const ydata &yd) ; 00325 00330 ydata & passive_noise(double freq, double temp) ; 00331 }; 00332 00333 // ************************************************************************** 00334 00348 class ydata_ptr 00349 { 00350 public: 00352 const Matrix * pY; 00353 00355 const Matrix * pC; 00356 00358 const Vector * pIs; 00359 00361 int size() const 00362 { return (pY) ? pY -> Lmaxindex() : 0; } 00363 00364 v_index_mode mode() const 00365 { return (pY) ? pY -> Lmode : Index_1; } 00366 00367 // Constructor: 00368 explicit ydata_ptr 00369 (const Matrix * Y = 0, const Matrix * C = 0, const Vector * Is = 0) 00370 : pY(Y), pC(C), pIs(Is) { } 00371 00372 }; 00373 00374 // ************************************************************************** 00375 // 00376 // function compute_passive_noise 00377 // 00378 00387 inline void compute_passive_noise(sdata& d, double freq, double Temp) 00388 { d.passive_noise(freq, Temp); } 00389 00398 inline void compute_passive_noise(ydata& d, double freq, double Temp) 00399 { d.passive_noise(freq, Temp); } 00400 00409 inline void compute_passive_noise(zdata& d, double freq, double Temp) 00410 { d.passive_noise(freq, Temp); } 00411 00412 // ************************************************************************** 00413 00422 double passive_noise_temp(double freq = device::f, double Temp = device::T); 00423 00424 #endif /* SDATA_H */ 00425
Please direct comments and corrections to
supermix@submm.caltech.edu
Go to the supermix home page
Generated by
1.2.7