Branch data Line data Source code
1 : : /*
2 : : * spfile.h - S-parameter file class definitions
3 : : *
4 : : * Copyright (C) 2004, 2005, 2006, 2008, 2009 Stefan Jahn <stefan@lkcc.org>
5 : : *
6 : : * This is free software; you can redistribute it and/or modify
7 : : * it under the terms of the GNU General Public License as published by
8 : : * the Free Software Foundation; either version 2, or (at your option)
9 : : * any later version.
10 : : *
11 : : * This software is distributed in the hope that it will be useful,
12 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : : * GNU General Public License for more details.
15 : : *
16 : : * You should have received a copy of the GNU General Public License
17 : : * along with this package; see the file COPYING. If not, write to
18 : : * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
19 : : * Boston, MA 02110-1301, USA.
20 : : *
21 : : * $Id$
22 : : *
23 : : */
24 : :
25 : : #ifndef __SPFILE_H__
26 : : #define __SPFILE_H__
27 : :
28 : : namespace qucs {
29 : : class vector;
30 : : class matvec;
31 : : class dataset;
32 : : class interpolator;
33 : : }
34 : :
35 : : class spfile_vector
36 : : {
37 : : public:
38 : : spfile_vector ();
39 : : ~spfile_vector ();
40 : :
41 : : public:
42 : : void prepare (qucs::vector *, qucs::vector *, bool, int, int);
43 : : nr_complex_t interpolate (nr_double_t);
44 : :
45 : : public:
46 : : qucs::vector * v;
47 : : qucs::vector * f;
48 : : int isreal;
49 : : qucs::interpolator * inter;
50 : : int r;
51 : : int c;
52 : : };
53 : :
54 : : class spfile : public qucs::circuit
55 : : {
56 : : public:
57 [ # # ]: 208 : CREATOR (spfile);
58 : : ~spfile ();
59 : : void initSP (void);
60 : : void calcSP (nr_double_t);
61 : : void calcNoiseSP (nr_double_t);
62 : : void initDC (void);
63 : : void initTR (void);
64 : : void initAC (void);
65 : : void calcAC (nr_double_t);
66 : : void calcNoiseAC (nr_double_t);
67 : : void createIndex (void);
68 : : void prepare (void);
69 : : void createVector (int, int);
70 : : qucs::matrix correlationMatrix (nr_double_t, nr_complex_t, nr_double_t, qucs::matrix);
71 : : nr_double_t noiseFigure (qucs::matrix, qucs::matrix, nr_double_t&, nr_complex_t&,
72 : : nr_double_t&);
73 : : qucs::matrix expandNoiseMatrix (qucs::matrix, qucs::matrix);
74 : : qucs::matrix shrinkNoiseMatrix (qucs::matrix, qucs::matrix);
75 : : qucs::matrix expandSParaMatrix (qucs::matrix);
76 : : qucs::matrix shrinkSParaMatrix (qucs::matrix);
77 : : qucs::matrix getInterpolMatrixS (nr_double_t);
78 : : qucs::matrix calcMatrixCs (nr_double_t);
79 : :
80 : : private:
81 : : qucs::dataset * data;
82 : : qucs::vector * sfreq;
83 : : qucs::vector * nfreq;
84 : : spfile_vector * spara;
85 : : spfile_vector * RN;
86 : : spfile_vector * FMIN;
87 : : spfile_vector * SOPT;
88 : : char paraType;
89 : : int dataType;
90 : : int interpolType;
91 : : };
92 : :
93 : : #endif /* __SPFILE_H__ */
|