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

sdata.h

Go to the documentation of this file.
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 doxygen1.2.7