Branch data Line data Source code
1 : : /*
2 : : * spsolver.h - S-parameter solver class definitions
3 : : *
4 : : * Copyright (C) 2003, 2004, 2006, 2007, 2008 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 __SPSOLVER_H__
26 : : #define __SPSOLVER_H__
27 : :
28 : : #include <string>
29 : :
30 : : namespace qucs {
31 : :
32 : : class analysis;
33 : : class circuit;
34 : : class node;
35 : : class vector;
36 : : class sweep;
37 : : class nodelist;
38 : :
39 : : class spsolver : public analysis
40 : : {
41 : : public:
42 [ + - ]: 226 : ACREATOR (spsolver);
43 : : spsolver (char *);
44 : : spsolver (spsolver &);
45 : : ~spsolver ();
46 : : void calc (nr_double_t);
47 : : void init (void);
48 : : void reduce (void);
49 : : int solve (void);
50 : : void insertConnections (void);
51 : : void insertDifferentialPorts (void);
52 : : void insertTee (node **, char *);
53 : : void insertCross (node **, char *);
54 : : void insertConnectors (node *);
55 : : void insertOpen (node *);
56 : : void insertGround (node *);
57 : : circuit * interconnectJoin (node *, node *);
58 : : circuit * connectedJoin (node *, node *);
59 : : void noiseConnect (circuit *, node *, node *);
60 : : void noiseInterconnect (circuit *, node *, node *);
61 : : void saveResults (nr_double_t);
62 : : void saveNoiseResults (nr_complex_t[4], nr_complex_t[4],
63 : : nr_double_t, vector *);
64 : : char * createSP (int, int);
65 : : const char * createCV (const std::string &c, const std::string &n);
66 : : void saveCharacteristics (nr_double_t);
67 : : void dropTee (circuit *);
68 : : void dropCross (circuit *);
69 : : void dropOpen (circuit *);
70 : : void dropGround (circuit *);
71 : : void dropDifferentialPort (circuit *);
72 : : void dropConnections (void);
73 : :
74 : : private:
75 : : int tees, crosses, grounds, opens;
76 : : int noise;
77 : : int saveCVs;
78 : : sweep * swp;
79 : : nodelist * nlist;
80 : : circuit * gnd;
81 : : };
82 : :
83 : : } // namespace qucs
84 : :
85 : : #endif /* __SPSOLVER_H__ */
|