LCOV - code coverage report
Current view: top level - src - analysis.h (source / functions) Hit Total Coverage
Test: qucs-core-0.0.19 Code Coverage Lines: 29 31 93.5 %
Date: 2015-01-05 16:01:02 Functions: 12 13 92.3 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * analysis.h - analysis class definitions
       3                 :            :  *
       4                 :            :  * Copyright (C) 2003, 2004, 2005, 2006, 2007 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: analysis.h 1869 2013-03-06 12:50:21Z crobarcro $
      22                 :            :  *
      23                 :            :  */
      24                 :            : 
      25                 :            : /*! \file analysis.h
      26                 :            :  * \brief The analysis class header file.
      27                 :            :  *
      28                 :            :  * Contains the analysis class definition.
      29                 :            :  */
      30                 :            : 
      31                 :            : #ifndef __ANALYSIS_H__
      32                 :            : #define __ANALYSIS_H__
      33                 :            : 
      34                 :            : #include "object.h"
      35                 :            : #include "ptrlist.h"
      36                 :            : 
      37                 :            : #define SAVE_OPS 1 // save operating points
      38                 :            : #define SAVE_ALL 2 // also save subcircuit nodes and operating points
      39                 :            : #define SAVE_CVS 4 // save characteristic values
      40                 :            : 
      41                 :            : #define ACREATOR(val) \
      42                 :            :   val (); \
      43                 :            :   static analysis * create (void) { return new val (); } \
      44                 :            :   static struct define_t anadef; \
      45                 :            :   static struct define_t * definition (void) { return &anadef; }
      46                 :            : 
      47                 :            : namespace qucs {
      48                 :            : 
      49                 :            : class dataset;
      50                 :            : class net;
      51                 :            : class environment;
      52                 :            : class sweep;
      53                 :            : class vector;
      54                 :            : 
      55                 :            : /*! \enum analysis_type
      56                 :            :  * \brief enumerates the analysis types available.
      57                 :            :  *
      58                 :            :  * Enumerates the analysis types available.
      59                 :            :  *
      60                 :            :  */
      61                 :            : enum analysis_type
      62                 :            : {
      63                 :            :     ANALYSIS_UNKNOWN = -1,
      64                 :            :     ANALYSIS_SWEEP,
      65                 :            :     ANALYSIS_DC,
      66                 :            :     ANALYSIS_AC,
      67                 :            :     ANALYSIS_HBALANCE,
      68                 :            :     ANALYSIS_TRANSIENT,
      69                 :            :     ANALYSIS_SPARAMETER,
      70                 :            :     ANALYSIS_E_TRANSIENT
      71                 :            : };
      72                 :            : 
      73                 :            : /*! \class analysis
      74                 :            :  * \brief class for performing circuit analyses.
      75                 :            :  *
      76                 :            :  * This class is used for performing all the anlyses specified in
      77                 :            :  * a circuit description. The actual solver classes for specific
      78                 :            :  * analysis types inheirit from this class and override it's
      79                 :            :  * methods.
      80                 :            :  *
      81                 :            :  */
      82                 :            : class analysis : public object
      83                 :            : {
      84                 :            : public:
      85                 :            : 
      86                 :            :     /*! \fn analysis
      87                 :            :     * \brief Constructor (Unnamed)
      88                 :            :     *
      89                 :            :     * Constructor. Creates an unnamed instance of the analysis class.
      90                 :            :     */
      91                 :            :     analysis ();
      92                 :            : 
      93                 :            :     /*! \fn analysis
      94                 :            :     * \brief Constructor (Named)
      95                 :            :     *
      96                 :            :     * Constructor. Creates a named instance of the analysis class.
      97                 :            :     */
      98                 :            :     analysis (char *);
      99                 :            : 
     100                 :            :     /*! \fn analysis
     101                 :            :     * \brief Copy Constructor
     102                 :            :     *
     103                 :            :     * Constructor. Creates an instance of the analysis class
     104                 :            :     * from an existing analysis object.
     105                 :            :     */
     106                 :            :     analysis (analysis &);
     107                 :            : 
     108                 :            :     /*! \fn ~analysis
     109                 :            :     * \brief Destructor
     110                 :            :     *
     111                 :            :     * Destructor. Destroys an analysis object.
     112                 :            :     */
     113                 :            :     ~analysis ();
     114                 :            : 
     115                 :            :     /*! \fn solve
     116                 :            :     * \brief placehoder for solution function
     117                 :            :     *
     118                 :            :     * Virtual solution function intended to be overridden by the
     119                 :            :     * inheiriting class's solution function.
     120                 :            :     */
     121                 :          0 :     virtual int solve (void)
     122                 :            :     {
     123                 :          0 :         return 0;
     124                 :            :     }
     125                 :            : 
     126                 :            :     /*! \fn initialize
     127                 :            :     * \brief placehoder for initialization function
     128                 :            :     *
     129                 :            :     * Virtual initialize function intended to be overridden by the
     130                 :            :     * inheiriting class's initialization function.
     131                 :            :     */
     132                 :        122 :     virtual int initialize (void)
     133                 :            :     {
     134                 :        122 :         return 0;
     135                 :            :     }
     136                 :            : 
     137                 :            :     /*! \fn cleanup
     138                 :            :     * \brief placehoder for cleanup function
     139                 :            :     *
     140                 :            :     * Virtual cleanup function intended to be overridden by the
     141                 :            :     * inheiriting class's cleanup function.
     142                 :            :     */
     143                 :        122 :     virtual int cleanup (void)
     144                 :            :     {
     145                 :        122 :         return 0;
     146                 :            :     }
     147                 :            : 
     148                 :            :     /*! \fn isExternal
     149                 :            :     * \brief informs whether this is an external sim
     150                 :            :     *
     151                 :            :     * External simulations will be ignored by qucsator. This
     152                 :            :     * function is used to determine whether the analysis is
     153                 :            :     * external or not.
     154                 :            :     */
     155                 :        547 :     virtual bool isExternal (void)
     156                 :            :     {
     157                 :        547 :         return false;
     158                 :            :     }
     159                 :            : 
     160                 :            :     dataset * getData (void)
     161                 :            :     {
     162                 :            :         return data;
     163                 :            :     }
     164                 :            : 
     165                 :        181 :     void setData (dataset * d)
     166                 :            :     {
     167                 :        181 :         data = d;
     168                 :        181 :     }
     169                 :            : 
     170                 :     667760 :     net * getNet (void)
     171                 :            :     {
     172                 :     667760 :         return subnet;
     173                 :            :     }
     174                 :            : 
     175                 :        181 :     void setNet (net * netlist)
     176                 :            :     {
     177                 :        181 :         subnet = netlist;
     178                 :        181 :     }
     179                 :            : 
     180                 :        122 :     environment * getEnv (void)
     181                 :            :     {
     182                 :        122 :         return env;
     183                 :            :     }
     184                 :            : 
     185                 :        181 :     void setEnv (environment * e)
     186                 :            :     {
     187                 :        181 :         env = e;
     188                 :        181 :     }
     189                 :            : 
     190                 :      23278 :     ptrlist<analysis> * getAnalysis (void)
     191                 :            :     {
     192                 :      23278 :         return actions;
     193                 :            :     }
     194                 :            : 
     195                 :        103 :     void setAnalysis (ptrlist<analysis> * a)
     196                 :            :     {
     197                 :        103 :         actions = a;
     198                 :        103 :     }
     199                 :            : 
     200                 :            :     /*! \fn addAnalysis
     201                 :            :      * \param analysis pointer to existing analysis object
     202                 :            :      *
     203                 :            :      * Adds the given analysis to the actions being
     204                 :            :      * associated with the current analysis object.
     205                 :            :      */
     206                 :            :     void addAnalysis (analysis *);
     207                 :            : 
     208                 :            :     /*! \fn delAnalysis
     209                 :            :      * \param analysis pointer to existing analysis object
     210                 :            :      *
     211                 :            :      * Deletes the given analysis from the actions being associated
     212                 :            :      * with the current analysis object.
     213                 :            :      */
     214                 :            :     void delAnalysis (analysis *);
     215                 :            : 
     216                 :      23932 :     int  getType (void)
     217                 :            :     {
     218                 :      23932 :         return type;
     219                 :            :     }
     220                 :            : 
     221                 :            :     void setType (int t)
     222                 :            :     {
     223                 :            :         type = t;
     224                 :            :     }
     225                 :            : 
     226                 :            :     /*! \fn createSweep
     227                 :            :      * \brief create a named sweep object
     228                 :            :      * \param n pointer to a character array contining the name
     229                 :            :      * of the sweep to be created
     230                 :            :      * \param sweep pointer to the created sweep object
     231                 :            :      *
     232                 :            :      * Creates a named sweep object depending on the analysis's properties.
     233                 :            :      * Supported sweep types are: linear, logarithmic, lists and constants.
     234                 :            :      *
     235                 :            :      */
     236                 :            :     sweep * createSweep (const char *);
     237                 :            : 
     238                 :            :     /*! \fn saveVariable
     239                 :            :      * \brief Save variable into analysis dataset.
     240                 :            :      * \param n Name of the variable
     241                 :            :      * \param z The variable to be added to the dataset
     242                 :            :      * \param f
     243                 :            :      *
     244                 :            :      * Saves the given variable into the dataset associated with the
     245                 :            :      * analysis.  Creates the dataset vector if necessary.
     246                 :            :      */
     247                 :            :      void saveVariable (const char *, nr_complex_t, qucs::vector *);
     248                 :            : 
     249                 :            :     /*! \fn getProgress
     250                 :            :      * \brief get
     251                 :            :      * \param progress
     252                 :            :      *
     253                 :            :      */
     254                 :            :     bool getProgress (void)
     255                 :            :     {
     256                 :            :         return progress;
     257                 :            :     }
     258                 :            : 
     259                 :            :     /*! \fn setProgress
     260                 :            :      * \brief Sets the progress
     261                 :            :      * \param p new value of the progress
     262                 :            :      *
     263                 :            :      * Sets the progress.
     264                 :            :      */
     265                 :         59 :     void setProgress (bool p)
     266                 :            :     {
     267                 :         59 :         progress = p;
     268                 :         59 :     }
     269                 :            : 
     270                 :            : protected:
     271                 :            :     int runs;
     272                 :            :     int type;
     273                 :            :     net * subnet;
     274                 :            :     dataset * data;
     275                 :            :     environment * env;
     276                 :            :     ptrlist<analysis> * actions;
     277                 :            :     bool progress;
     278                 :            : };
     279                 :            : 
     280                 :            : } // namespace qucs
     281                 :            : 
     282                 :            : #endif /* __ANALYSIS_H__ */

Generated by: LCOV version 1.11