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

radial_stub.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 *                                                              *
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 doxygen1.2.7