SuperMix is an extensive C++ software library written to aid in the design and optimization of high-frequency circuits.
Containing over 48,000 lines of extensively-documented source code, the SuperMix class library and its associated programs allow users to write, compile, and run sophisticated circuit simulations of arbitrary complexity. By representing circuit components as C++ class objects, the library provides for natural, nearly self-documenting code which reads more like a circuit description than a program. Although primarily intended for superconducting submillimeter circuit design, SuperMix provides a complete set of circuit elements suitable for frequency-domain simulations from DC to the terahertz range. Its lumped elements include detailed HEMT transistor models as well as passive components. Its high frequency distributed elements include standard components such as transmission lines, hybrids, attenuators, etc.
What sets SuperMix apart, however, is its inclusion of SIS quasiparticle tunnel junctions and physical transmission line components such as microstrip and CPW lines. The physical transmission line objects can be built up from layers of normal metal and superconducting films and real dielectrics. These components are specified by their material characteristics and dimensions which SuperMix uses to determine electrical behavior.
SuperMix can perform full harmonic balance calculations of SIS quasiparticle receiver designs of arbitrary complexity as well as mixer gain and noise analyses using any number of harmonics and including any number of superconducting tunnel junctions.
SuperMix performs circuit calculations using a wave matrix representation and automatically includes full noise calculations. It can freely convert results between wave and impedance or admittance representations. SuperMix includes a sophisticated multiparameter optimizer. Users can quickly tailor the optimizer's error function to their exact needs; the optimizer can then control any set of device parameters in order to refine a circuit design. To achieve this level of flexibility, SuperMix contains a rather complete numerical math library for manipulation of complex-valued matrix, vector, and scalar functions and objects. It includes robust linear algebra, interpolation, integration, root finding, and minimization routines.
SuperMix includes a large set of formatted input and output routines for complex-valued matrix and vector data. SuperMix can construct interpolated circuit elements from Touchstone formatted data. If the provided routines are inadequate for a specific application, the user can easily add to the input/output capabilities using an extensive set of primitives. Of course, since the user creates simulations by writing a C++ program, the full capabilities of the standard C++ class libraries are available as well.
SuperMix was written to run under Unix or Linux. As far as we know, it will probably compile and run under any operating system with a decent C++ compiler and Make facility, although the Makefiles included in the distribution were written with the GNU C/C++ compiler (g++) in mind.
SuperMix has been compiled and run successfully on several flavors of Linux, on Mac OS 10.x, using cygwin on Windows XP, and even using Visual C++ (though it takes some tinkering to find the standard template library in this case!).
Because our target has been Linux/cygwin, the source file names all end in
.cc. If your compiler likes
.cpp instead, you'll
have to fix up the file names and maybe some Makefile lines. Similar
considerations may apply to the extensions of compiled object files
.o) and the object library (
Where is the documentation? You're looking at it! Seriously, currently the only documentation consists of the contents of the supermix/examples/ subdirectory tree as well as the extensive commenting in the many header files in the supermix/include/ subdirectory. The example programs refer to the header files when appropriate.
The current release is Version 1.6, dated May 2009.
Installing the library from supermix.tar.gz will create a subdirectory named 'supermix' which contains the files for the library. To install, download supermix.tar.gz into the directory of your choice and then execute the following commands (assuming Linux or cygwin here):
tar -xvf supermix.tar
cd supermixand read the
READMEfile contained therein for further information.
For information about the SuperMix library, see the following two papers from the 1999 Proceedings, Tenth International Symposium on Space Terahertz Technology. Note that some details described in these papers are now outdated.
The SuperMix development team can be contacted by sending email to firstname.lastname@example.org.