Qucs-core  0.0.19
transient.h
Go to the documentation of this file.
00001 /*
00002  * transient.h - transient helper class definitions
00003  *
00004  * Copyright (C) 2004, 2006 Stefan Jahn <stefan@lkcc.org>
00005  *
00006  * This is free software; you can redistribute it and/or modify
00007  * it under the terms of the GNU General Public License as published by
00008  * the Free Software Foundation; either version 2, or (at your option)
00009  * any later version.
00010  *
00011  * This software is distributed in the hope that it will be useful,
00012  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  * GNU General Public License for more details.
00015  *
00016  * You should have received a copy of the GNU General Public License
00017  * along with this package; see the file COPYING.  If not, write to
00018  * the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
00019  * Boston, MA 02110-1301, USA.
00020  *
00021  * $Id$
00022  *
00023  */
00024 
00025 #ifndef __TRANSIENT_H__
00026 #define __TRANSIENT_H__
00027 
00028 namespace qucs {
00029 
00030 enum integrator_type {
00031   INTEGRATOR_UNKNOWN       = -1,
00032   INTEGRATOR_EULER         =  0,
00033   INTEGRATOR_TRAPEZOIDAL   =  1,
00034   INTEGRATOR_GEAR          =  2,
00035   INTEGRATOR_ADAMSMOULTON  =  3,
00036   INTEGRATOR_ADAMSBASHFORD =  4
00037 };
00038 
00039 class circuit;
00040 class integrator;
00041 
00042 namespace transient {
00043 
00044   void calcCorrectorCoeff (int, int, nr_double_t *, nr_double_t *);
00045   void calcPredictorCoeff (int, int, nr_double_t *, nr_double_t *);
00046   void getConductance (integrator *, nr_double_t, nr_double_t&);
00047   void integrateEuler (integrator *, int, nr_double_t, nr_double_t&,
00048                        nr_double_t&);
00049   void integrateBilinear (integrator *, int, nr_double_t, nr_double_t&,
00050                           nr_double_t&);
00051   void integrateGear (integrator *, int, nr_double_t, nr_double_t&,
00052                       nr_double_t&);
00053   void integrateMoulton (integrator *, int, nr_double_t, nr_double_t&,
00054                          nr_double_t&);
00055   void setIntegrationMethod (circuit *, int);
00056   int  correctorType (const char * const, int&);
00057   int  correctorType (int, int);
00058   int  predictorType (int, int, int&);
00059   nr_double_t getCorrectorError (int, int);
00060   nr_double_t getPredictorError (int, int);
00061 
00062 } // namespace transient
00063 
00064 } // namespace qucs
00065 
00066 #endif /* __TRANSIENT_H__ */