00001 // attenuator.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 // 10/29/99: recalc() now sets normalization impedance 00033 // 11/23/98: Fixed arguments in call to compute_passive_noise 00034 // 11/11/98: Changed table access to new syntax 00035 00036 #include "attenuator.h" 00037 #include <math.h> 00038 00039 attenuator::attenuator(double a) : nport(2), dB(a), Temp(&T) 00040 { info.source = false; } 00041 00042 attenuator::attenuator(const abstract_real_parameter * a) 00043 : nport(2), dB(a), Temp(&T) 00044 { info.source = false; } 00045 00046 void attenuator::recalc_S() 00047 { 00048 // set the normalizing impedance 00049 data.set_znorm(device::Z0); 00050 00051 // Perfect input matches. 00052 data.S[1][1] = 0.0; 00053 data.S[2][2] = 0.0; 00054 00055 // Attenuated transmission. 00056 double atten = pow(10, -0.05 * dB); 00057 data.S[1][2] = atten; 00058 data.S[2][1] = atten; 00059 00060 // Assume source vector, B, is already 0. 00061 } 00062 00063 void attenuator::recalc() 00064 { 00065 recalc_S(); 00066 00067 // Calculate the noise correlation matrix, C. 00068 compute_passive_noise(data, f, Temp); 00069 }
Please direct comments and corrections to
supermix@submm.caltech.edu
Go to the supermix home page
Generated by
1.2.7