MOOSE - Multiscale Object Oriented Simulation Environment
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
SparseMsg.h
Go to the documentation of this file.
1 /**********************************************************************
2 ** This program is part of 'MOOSE', the
3 ** Messaging Object Oriented Simulation Environment.
4 ** Copyright (C) 2003-2009 Upinder S. Bhalla. and NCBS
5 ** It is made available under the terms of the
6 ** GNU Lesser General Public License version 2.1
7 ** See the file COPYING.LIB for the full notice.
8 **********************************************************************/
9 
10 #ifndef _SPARSE_MSG_H
11 #define _SPARSE_MSG_H
12 
13 #include "../randnum/RNG.h"
14 
46 class SparseMsg: public Msg
47 {
48  friend unsigned int Msg::initMsgManagers(); // for initializing Id.
49 
50 public:
51 
52  SparseMsg( Element* e1, Element* e2, unsigned int msgIndex );
53  ~SparseMsg();
54 
55  Eref firstTgt( const Eref& src ) const;
56 
57  void sources( vector< vector< Eref > >& v ) const;
58  void targets( vector< vector< Eref > >& v ) const;
59 
60  unsigned int randomConnect( double probability );
61 
62  Id managerId() const;
63 
64  ObjId findOtherEnd( ObjId end ) const;
65 
66  Msg* copy( Id origSrc, Id newSrc, Id newTgt,
67  FuncId fid, unsigned int b, unsigned int n ) const;
68 
72  void setMatrix( const SparseMatrix< unsigned int >& m );
73 
78 
79  // Uses default addToQ function.
80 
81  // Here we define the Element interface functions for SparseMsg
82  void setRandomConnectivity( double probability, long seed );
83  double getProbability() const;
84  void setProbability( double value );
85 
86  vector< unsigned int > getMatrixEntry() const;
87  vector< unsigned int > getColIndex() const;
88  vector< unsigned int > getRowStart() const;
89 
90  unsigned long getSeed() const;
91  void setSeed( unsigned long value );
92 
93  vector< unsigned int > getEntryPairs() const;
94  void setEntryPairs( vector< unsigned int > entries );
95 
96  void setEntry( unsigned int row, unsigned int column,
97  unsigned int value );
98 
99  void unsetEntry( unsigned int row, unsigned int column );
100 
101  // Still need to implement array field gets.
102  unsigned int getNumRows() const;
103  unsigned int getNumColumns() const;
104  unsigned int getNumEntries() const;
105  void clear();
106  void transpose();
107 
112  void pairFill( vector< unsigned int > src,
113  vector< unsigned int> dest );
114 
119  void tripletFill( vector< unsigned int > src,
120  vector< unsigned int> dest,
121  vector< unsigned int > field );
122 
129  void tripletFill1( vector< unsigned int > entries );
130 
135  void updateAfterFill();
136 
138  static unsigned int numMsg();
139  static char* lookupMsg( unsigned int index );
140 
141  static const Cinfo* initCinfo();
142 
143 private:
145  unsigned int numThreads_; // Number of threads to partition
146  unsigned int nrows_; // The original size of the matrix.
147  double p_;
148  static Id managerId_; // The Element that manages Sparse Msgs.
149  static vector< SparseMsg* > msg_;
150 
151  // RNG.
152  unsigned long seed_;
156 };
157 
158 #endif // _SPARSE_MSG_H
Element * e2() const
Definition: Msg.h:68
unsigned int randomConnect(double probability)
Definition: SparseMsg.cpp:465
uint32_t value
Definition: moosemodule.h:42
vector< unsigned int > getEntryPairs() const
Definition: SparseMsg.cpp:251
double p_
Definition: SparseMsg.h:147
moose::MOOSE_RNG_DEFAULT_ENGINE rng_
Definition: SparseMsg.h:154
unsigned int nrows_
Definition: SparseMsg.h:146
void clear()
Definition: SparseMsg.cpp:289
void setEntryPairs(vector< unsigned int > entries)
Definition: SparseMsg.cpp:244
std::mersenne_twister_engine< std::uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253 > MOOSE_RNG_DEFAULT_ENGINE
Definition: Definitions.h:42
Definition: ObjId.h:20
void tripletFill(vector< unsigned int > src, vector< unsigned int > dest, vector< unsigned int > field)
Definition: SparseMsg.cpp:366
unsigned int getNumColumns() const
Definition: SparseMsg.cpp:219
SparseMatrix< unsigned int > matrix_
Definition: SparseMsg.h:144
vector< unsigned int > getColIndex() const
Definition: SparseMsg.cpp:234
void setRandomConnectivity(double probability, long seed)
Definition: SparseMsg.cpp:271
unsigned int getNumRows() const
Definition: SparseMsg.cpp:214
void setProbability(double value)
Definition: SparseMsg.cpp:187
unsigned long seed_
Definition: SparseMsg.h:152
vector< unsigned int > getMatrixEntry() const
Definition: SparseMsg.cpp:229
void tripletFill1(vector< unsigned int > entries)
Definition: SparseMsg.cpp:375
Id managerId() const
Definition: SparseMsg.cpp:529
static char * lookupMsg(unsigned int index)
Static function for Msg access.
Definition: SparseMsg.cpp:643
moose::MOOSE_UNIFORM_DISTRIBUTION< double > dist_
Definition: SparseMsg.h:155
Definition: Eref.h:26
static Id managerId_
Definition: SparseMsg.h:148
static unsigned int numMsg()
Msg lookup functions.
Definition: SparseMsg.cpp:637
void pairFill(vector< unsigned int > src, vector< unsigned int > dest)
Definition: SparseMsg.cpp:323
void unsetEntry(unsigned int row, unsigned int column)
Definition: SparseMsg.cpp:284
void updateAfterFill()
Definition: SparseMsg.cpp:301
std::uniform_real_distribution< T > MOOSE_UNIFORM_DISTRIBUTION
Definition: Distributions.h:26
unsigned int numThreads_
Definition: SparseMsg.h:145
Definition: Msg.h:18
void setSeed(unsigned long value)
Definition: SparseMsg.cpp:198
void transpose()
Definition: SparseMsg.cpp:294
Element * e1() const
Definition: Msg.h:61
double getProbability() const
Definition: SparseMsg.cpp:193
ObjId findOtherEnd(ObjId end) const
Definition: SparseMsg.cpp:544
void setEntry(unsigned int row, unsigned int column, unsigned int value)
Definition: SparseMsg.cpp:278
static const Cinfo * initCinfo()
Definition: SparseMsg.cpp:24
unsigned int getNumEntries() const
Definition: SparseMsg.cpp:224
static unsigned int initMsgManagers()
Definition: Msg.cpp:236
Definition: Id.h:17
void sources(vector< vector< Eref > > &v) const
Definition: SparseMsg.cpp:624
SparseMatrix< unsigned int > & getMatrix()
Definition: SparseMsg.cpp:539
moose::MOOSE_RANDOM_DEVICE rd_
Definition: SparseMsg.h:153
static vector< SparseMsg * > msg_
Definition: SparseMsg.h:149
vector< unsigned int > getRowStart() const
Definition: SparseMsg.cpp:239
unsigned int FuncId
Definition: header.h:42
void setMatrix(const SparseMatrix< unsigned int > &m)
Definition: SparseMsg.cpp:534
void targets(vector< vector< Eref > > &v) const
Definition: SparseMsg.cpp:631
std::random_device MOOSE_RANDOM_DEVICE
Definition: Definitions.h:29
Definition: Cinfo.h:18
SparseMsg(Element *e1, Element *e2, unsigned int msgIndex)
Definition: SparseMsg.cpp:389
unsigned long getSeed() const
Definition: SparseMsg.cpp:209
Msg * copy(Id origSrc, Id newSrc, Id newTgt, FuncId fid, unsigned int b, unsigned int n) const
Definition: SparseMsg.cpp:570
Eref firstTgt(const Eref &src) const
Definition: SparseMsg.cpp:433