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 * * 00032 * radial_stub.h * 00033 * * 00034 * John Ward, September 11, 1998 * 00035 * * 00036 * 11/16/99: changes to support new noise calculations * 00037 * 1/15/99: changed return values of some void functions * 00038 * 9/18/98: radial_stub is now a subclass of data_ptr_nport. * 00039 * * 00040 \**************************************************************/ 00041 00042 #ifndef RADIALSTUB_H 00043 #define RADIALSTUB_H 1 00044 00045 #include "circuit.h" 00046 #include "trlines.h" 00047 00048 /**************************************************************\ 00049 * * 00050 * class radial_stub * 00051 * * 00052 * The current algorithm breaks the stub into a fixed number * 00053 * of annular slices, simulating them as microstrips. * 00054 * * 00055 * The implementation of radial_stub could be changed to a * 00056 * different algorithm without affecting the public interface. * 00057 * * 00058 * The angle should be between 0 and 180 degrees. * 00059 * * 00060 * The program will throw a fatal error if the radial stub * 00061 * isn't larger than the transmission line feeding it. * 00062 * * 00063 \**************************************************************/ 00064 class radial_stub: public data_ptr_nport 00065 { 00066 public: 00067 // Radius of stub in standard units 00068 parameter radius; 00069 00070 // Opening angle of stub in standard units. 00071 parameter angle; 00072 00073 // Length of input line in standard units 00074 parameter length ; 00075 00076 // Width of input line in standard units 00077 parameter width; 00078 00079 // Substrate thickness 00080 parameter sub_thick ; 00081 00082 // Default constructor. 00083 radial_stub(); 00084 00085 // Copy constructor 00086 radial_stub(const radial_stub & rs); 00087 00088 // Assignment operator 00089 radial_stub & operator=(const radial_stub &r) ; 00090 00091 // Functions to set various pointers 00092 radial_stub & substrate(dielectric & d); /* substrate dielectric */ 00093 radial_stub & superstrate(dielectric & d); /* superstrate dielectric */ 00094 radial_stub & top_strip(surfimp & s); /* top strip surface impedance */ 00095 radial_stub & ground_plane(surfimp & s); /* ground plane surface impedance */ 00096 00097 // Radial stubs are 2 port devices. 00098 int size() { return 2; } 00099 00100 // Virtual destructor is necessary to ensure proper subclass destruction. 00101 virtual ~radial_stub() { } 00102 00103 private: 00104 // Keep the circuit here. 00105 circuit rs; 00106 00107 // Number of sections used to simulate the stub. 00108 int nsections; 00109 00110 // Microstrip sections used to build the stub. 00111 microstrip sec[16]; 00112 00113 // Pointers to dielectric objects 00114 dielectric *sub; 00115 dielectric *super; 00116 00117 // pointers to surface impedance objects 00118 surfimp *top; 00119 surfimp *ground; 00120 00121 // The calculation is done here. 00122 void recalc(bool noise); 00123 void recalc() { recalc(true); } 00124 void recalc_S() { recalc(false); } 00125 }; 00126 00127 #endif /* RADIALSTUB_H */
Please direct comments and corrections to
supermix@submm.caltech.edu
Go to the supermix home page
Generated by
1.2.7