MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SteadyStateBoost.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment,
4 ** also known as GENESIS 3 base code.
5 ** copyright (C) 2003-2009 Upinder S. Bhalla. and NCBS
6 ** It is made available under the terms of the
7 ** GNU Lesser General Public License version 2.1
8 ** See the file COPYING.LIB for the full notice.
9 **********************************************************************/
10 
11 #ifndef _STEADYSTATE_H
12 #define _STEADYSTATE_H
13 
14 #include <boost/numeric/ublas/matrix.hpp>
15 #include "BoostSys.h"
16 #include "../randnum/RNG.h"
17 
18 class NonlinearSystem;
19 
21 {
22 #ifdef DO_UNIT_TESTS
23  friend void testSteadyState();
24 #endif
25 public:
26  SteadyState();
27  ~SteadyState();
28 
30  // Field function definitions
32  Id getStoich() const ;
33  void setStoich( Id s );
34  bool badStoichiometry() const;
35  bool isInitialized() const;
36  unsigned int getRank() const;
37  unsigned int getNumVarPools() const;
38  unsigned int getNiter() const;
39  unsigned int getMaxIter() const;
40  void setMaxIter( unsigned int value );
41  string getStatus() const;
42  double getConvergenceCriterion() const;
43  void setConvergenceCriterion( double value );
44  double getTotal( const unsigned int i ) const;
45  void setTotal( const unsigned int i, double val );
46  double getEigenvalue( const unsigned int i ) const;
47  void setEigenvalue( double val, const unsigned int i );
48  unsigned int getStateType() const;
49  unsigned int getNnegEigenvalues() const;
50  unsigned int getNposEigenvalues() const;
51  unsigned int getSolutionStatus() const;
52 
54  // Msg Dest function definitions
56  void setupMatrix();
57  void settleFunc();
58  void resettleFunc();
59  void settle( bool forceSetup );
60  void showMatricesFunc();
61  void showMatrices();
62  void randomizeInitialCondition( const Eref& e);
63  static void assignY( double* S );
64 
65  // static void randomInitFunc();
66  // void randomInit();
68  // Utility functions for randomInit
70  /*
71  int isLastConsvMol( int i );
72  void recalcRemainingTotal(
73  vector< double >& y, vector< double >& tot );
74  */
75 
77  boost::numeric::ublas::matrix< value_type_ >& U
78  , const vector< value_type_ >& eliminatedTotal
79  , vector <value_type_> &yi
80  );
81 
83  // funcs to handle externally imposed changes in mol N
85  static void setMolN( double y, unsigned int i );
86  // static void assignStoichFunc( void* stoich );
87  // void assignStoichFuncLocal( void* stoich );
88  void classifyState( const double* T );
89  static const double EPSILON;
90  static const double DELTA;
92 
93  static const Cinfo* initCinfo();
94 
95 private:
96  void setupSSmatrix();
97 
99  // Internal fields.
101  unsigned int nIter_;
102  unsigned int maxIter_;
104  string status_;
106  bool isSetup_;
108 
109  boost::numeric::ublas::matrix< value_type_ > LU_;
110  boost::numeric::ublas::matrix< value_type_ > Nr_;
111  boost::numeric::ublas::matrix< value_type_ > gamma_;
112 
114  size_t numVarPools_;
115  unsigned int nReacs_;
116  unsigned int rank_;
117 
118  vector< double > total_;
120  unsigned int nNegEigenvalues_;
121  unsigned int nPosEigenvalues_;
122  vector< double > eigenvalues_;
123  unsigned int stateType_;
124  unsigned int solutionStatus_;
125  unsigned int numFailed_;
127 
128 #if USE_BOOST_ODE
129  NonlinearSystem* ss;
130 #endif
131 
132 };
133 
134 extern const Cinfo* initSteadyStateCinfo();
135 
136 #endif // _STEADYSTATE_H
void randomizeInitialCondition(const Eref &e)
uint32_t value
Definition: moosemodule.h:42
unsigned int getMaxIter() const
unsigned int getNposEigenvalues() const
boost::numeric::ublas::matrix< value_type_ > gamma_
unsigned int numFailed_
unsigned int getNiter() const
unsigned int getNumVarPools() const
double getConvergenceCriterion() const
unsigned int getRank() const
vector< double > eigenvalues_
double convergenceCriterion_
bool badStoichiometry() const
unsigned int rank_
bool isInitialized() const
static void setMolN(double y, unsigned int i)
double getEigenvalue(const unsigned int i) const
string getStatus() const
unsigned int nPosEigenvalues_
void setEigenvalue(double val, const unsigned int i)
static const double DELTA
vector< double > total_
unsigned int stateType_
double getTotal(const unsigned int i) const
VoxelPools pool_
void setMaxIter(unsigned int value)
void showMatricesFunc()
unsigned int nIter_
unsigned int nNegEigenvalues_
unsigned int getSolutionStatus() const
static const double EPSILON
Definition: Eref.h:26
Id getStoich() const
unsigned int getStateType() const
void fitConservationRules(boost::numeric::ublas::matrix< value_type_ > &U, const vector< value_type_ > &eliminatedTotal, vector< value_type_ > &yi)
unsigned int getNnegEigenvalues() const
unsigned int maxIter_
void setConvergenceCriterion(double value)
Definition: Id.h:17
static const Cinfo * initCinfo()
boost::numeric::ublas::matrix< value_type_ > LU_
void setStoich(Id s)
void classifyState(const double *T)
unsigned int nReacs_
boost::numeric::ublas::matrix< value_type_ > Nr_
static void assignY(double *S)
unsigned int solutionStatus_
Definition: Cinfo.h:18
const Cinfo * initSteadyStateCinfo()
void settle(bool forceSetup)
void setTotal(const unsigned int i, double val)