#include <Gsolve.h>
Public Member Functions | |
Gsolve () | |
~Gsolve () | |
Id | getStoich () const |
void | setStoich (Id stoich) |
Id | getCompartment () const |
Inherited from ZombiePoolInterface. | |
void | setCompartment (Id compt) |
Assigns compartment. | |
unsigned int | getNumLocalVoxels () const |
Number of voxels here. pools_.size() == getNumLocalVoxels. | |
unsigned int | getNumAllVoxels () const |
void | setNumAllVoxels (unsigned int num) |
void | setNumPools (unsigned int num) |
unsigned int | getNumPools () const |
Inherited. | |
VoxelPoolsBase * | pools (unsigned int i) |
Inherited. | |
double | volume (unsigned int i) const |
Inherited. | |
vector< double > | getNvec (unsigned int voxel) const |
Returns the vector of pool Num at the specified voxel. | |
void | setNvec (unsigned int voxel, vector< double > vec) |
void | process (const Eref &e, ProcPtr p) |
void | reinit (const Eref &e, ProcPtr p) |
void | initProc (const Eref &e, ProcPtr p) |
void | initReinit (const Eref &e, ProcPtr p) |
void | updateVoxelVol (vector< double > vols) |
void | rebuildGssaSystem () |
void | fillMmEnzDep () |
void | fillMathDep () |
void | insertMathDepReacs (unsigned int mathDepIndex, unsigned int firedReac) |
void | makeReacDepsUnique () |
unsigned int | getPoolIndex (const Eref &e) const |
Return pool index, using Stoich ptr to do lookup. | |
unsigned int | getVoxelIndex (const Eref &e) const |
void | setDsolve (Id dsolve) |
void | setN (const Eref &e, double v) |
Set # of molecules in given pool and voxel. Varies with time. | |
double | getN (const Eref &e) const |
Get # of molecules in given pool and voxel. Varies with time. | |
void | setNinit (const Eref &e, double v) |
Set initial # of molecules in given pool and voxel. Bdry cond. | |
double | getNinit (const Eref &e) const |
get initial # of molecules in given pool and voxel. Bdry cond. | |
void | setDiffConst (const Eref &e, double v) |
Diffusion constant: Only one per pool, voxel number is ignored. | |
double | getDiffConst (const Eref &e) const |
Diffusion constant: Only one per pool, voxel number is ignored. | |
void | getBlock (vector< double > &values) const |
void | setBlock (const vector< double > &values) |
void | updateRateTerms (unsigned int index) |
bool | getRandInit () const |
void | setRandInit (bool val) |
Flag: set true if randomized round to integers is to be done. | |
Static Public Member Functions | |
static SrcFinfo2< Id, vector < double > > * | xComptOut () |
static const Cinfo * | initCinfo () |
Gsolve::Gsolve | ( | ) |
Gsolve::~Gsolve | ( | ) |
void Gsolve::fillMathDep | ( | ) |
Fill in dependency list for all MathExpns on reactions. Note that when a MathExpn updates, it alters a further molecule, that may be a substrate for another reaction. So we need to also add further dependent reactions. In principle we might also cascade to deeper MathExpns. Later.
References c, GssaSystem::dependency, GssaSystem::dependentMathExpn, Stoich::funcs(), Stoich::getNumAllPools(), Stoich::getNumBufPools(), Stoich::getNumFuncs(), Stoich::getNumProxyPools(), Stoich::getNumRates(), Stoich::getNumVarPools(), FuncTerm::getReactantIndex(), SparseMatrix< T >::getRow(), Stoich::getStoichiometryMatrix(), and GssaSystem::transposeN.
Referenced by rebuildGssaSystem().
void Gsolve::fillMmEnzDep | ( | ) |
Fill in dependency list for all MMEnzs on reactions. The dependencies of MMenz products are already in the system, so here we just need to add cases where any reaction product is the Enz of an MMEnz.
References GssaSystem::dependency, Stoich::getNumRates(), RateTerm::getReactants(), SparseMatrix< T >::getRow(), Stoich::rates(), and GssaSystem::transposeN.
Referenced by rebuildGssaSystem().
void Gsolve::getBlock | ( | vector< double > & | values | ) | const [virtual] |
Gets block of data. The first 4 entries are passed in on the 'values' vector: the start voxel, numVoxels, start pool#, numPools. These are followed by numVoxels * numPools of data values which are filled in by the function. We assert that the entire requested block is present in this ZombiePoolInterface. The block is organized as an array of arrays of voxels; values[pool#][voxel#]
Note that numVoxels and numPools are the number in the current block, not the upper limit of the block. So values.size() == 4 + numPools * numVoxels.
Implements ZombiePoolInterface.
Referenced by process().
Id Gsolve::getCompartment | ( | ) | const |
Inherited from ZombiePoolInterface.
Reimplemented from ZombiePoolInterface.
References ZombiePoolInterface::compartment_.
Referenced by initCinfo().
double Gsolve::getDiffConst | ( | const Eref & | e | ) | const [virtual] |
Diffusion constant: Only one per pool, voxel number is ignored.
Implements ZombiePoolInterface.
double Gsolve::getN | ( | const Eref & | e | ) | const [virtual] |
Get # of molecules in given pool and voxel. Varies with time.
Implements ZombiePoolInterface.
References getPoolIndex(), getVoxelIndex(), and OFFNODE.
double Gsolve::getNinit | ( | const Eref & | e | ) | const [virtual] |
get initial # of molecules in given pool and voxel. Bdry cond.
Implements ZombiePoolInterface.
References getPoolIndex(), getVoxelIndex(), and OFFNODE.
unsigned int Gsolve::getNumAllVoxels | ( | ) | const |
Referenced by initCinfo().
unsigned int Gsolve::getNumLocalVoxels | ( | ) | const [virtual] |
Number of voxels here. pools_.size() == getNumLocalVoxels.
Implements ZombiePoolInterface.
Referenced by initCinfo(), and process().
unsigned int Gsolve::getNumPools | ( | ) | const [virtual] |
vector< double > Gsolve::getNvec | ( | unsigned int | voxel | ) | const |
Returns the vector of pool Num at the specified voxel.
References dummy().
Referenced by initCinfo().
unsigned int Gsolve::getPoolIndex | ( | const Eref & | er | ) | const [virtual] |
Return pool index, using Stoich ptr to do lookup.
Implements ZombiePoolInterface.
References Stoich::convertIdToPoolIndex(), and Eref::id().
Referenced by getN(), getNinit(), setN(), and setNinit().
bool Gsolve::getRandInit | ( | ) | const |
Flag: returns true if randomized round to integers is done.
References GssaSystem::useRandInit.
Referenced by initCinfo().
Id Gsolve::getStoich | ( | ) | const |
References ZombiePoolInterface::stoich_.
Referenced by initCinfo().
unsigned int Gsolve::getVoxelIndex | ( | const Eref & | e | ) | const |
References Eref::dataIndex(), and OFFNODE.
Referenced by getN(), getNinit(), setN(), and setNinit().
const Cinfo * Gsolve::initCinfo | ( | ) | [static] |
References getCompartment(), getNumAllVoxels(), getNumLocalVoxels(), getNumPools(), getNvec(), getRandInit(), getStoich(), init(), Neutral::initCinfo(), initProc(), initReinit(), process(), reinit(), setCompartment(), setNumAllVoxels(), setNumPools(), setNvec(), setRandInit(), setStoich(), updateVoxelVol(), ZombiePoolInterface::xComptIn(), and xComptOut().
References Eref::id(), XferInfo::ksolve, xComptOut(), ZombiePoolInterface::xfer_, XferInfo::xferPoolIdx, and XferInfo::xferVoxel.
Referenced by initCinfo().
References Eref::id(), XferInfo::ksolve, XferInfo::lastValues, xComptOut(), ZombiePoolInterface::xfer_, XferInfo::xferPoolIdx, and XferInfo::xferVoxel.
Referenced by initCinfo().
void Gsolve::insertMathDepReacs | ( | unsigned int | mathDepIndex, | |
unsigned int | firedReac | |||
) |
Inserts reactions that depend on molecules modified by the specified MathExpn, into the dependency list. Later.
void Gsolve::makeReacDepsUnique | ( | ) |
STL stuff follows, with the usual weirdness.
References GssaSystem::dependency, and Stoich::getNumRates().
Referenced by rebuildGssaSystem().
VoxelPoolsBase * Gsolve::pools | ( | unsigned int | i | ) | [virtual] |
Inherited.
Implements ZombiePoolInterface.
References getBlock(), ZombiePoolInterface::getBlock(), getNumLocalVoxels(), Stoich::getNumVarPools(), XferInfo::lastValues, ZombiePoolInterface::setBlock(), setBlock(), ZombiePoolInterface::xfer_, XferInfo::xferPoolIdx, and XferInfo::xferVoxel.
Referenced by initCinfo().
void Gsolve::rebuildGssaSystem | ( | ) |
References Stoich::convertRatesToStochasticForm(), GssaSystem::dependency, fillMathDep(), fillMmEnzDep(), KinSparseMatrix::getGillespieDependence(), Stoich::getNumCoreRates(), Stoich::getNumProxyPools(), Stoich::getNumRates(), Stoich::getNumVarPools(), Stoich::getRateTerms(), Stoich::getStoichiometryMatrix(), GssaSystem::isReady, makeReacDepsUnique(), SparseMatrix< T >::transpose(), GssaSystem::transposeN, and KinSparseMatrix::truncateRow().
Referenced by reinit().
References Stoich::getNumProxyPools(), GssaSystem::isReady, XferInfo::lastValues, rebuildGssaSystem(), XferInfo::values, ZombiePoolInterface::xfer_, XferInfo::xferPoolIdx, and XferInfo::xferVoxel.
Referenced by initCinfo().
void Gsolve::setBlock | ( | const vector< double > & | values | ) | [virtual] |
Sets block of data. The first 4 entries on the 'values' vector are the start voxel, numVoxels, start pool#, numPools. These are followed by numVoxels * numPools of data values.
Implements ZombiePoolInterface.
Referenced by process().
void Gsolve::setCompartment | ( | Id | compartment | ) | [virtual] |
Assigns compartment.
Reimplemented from ZombiePoolInterface.
References Element::cinfo(), ZombiePoolInterface::compartment_, Id::element(), and Cinfo::isA().
Referenced by initCinfo().
void Gsolve::setDiffConst | ( | const Eref & | e, | |
double | val | |||
) | [virtual] |
Diffusion constant: Only one per pool, voxel number is ignored.
Implements ZombiePoolInterface.
void Gsolve::setDsolve | ( | Id | dsolve | ) | [virtual] |
Inherited. Needed for reac-diff calculations so the Gsolve can orchestrate the data transfer between the itself and the diffusion solver.
Implements ZombiePoolInterface.
References Element::cinfo(), Eref::data(), Id::element(), Id::eref(), Cinfo::isA(), Cinfo::name(), and Id::path().
void Gsolve::setN | ( | const Eref & | e, | |
double | val | |||
) | [virtual] |
Set # of molecules in given pool and voxel. Varies with time.
Implements ZombiePoolInterface.
References Element::cinfo(), Eref::element(), getPoolIndex(), getVoxelIndex(), Cinfo::isA(), GssaSystem::isReady, and OFFNODE.
void Gsolve::setNinit | ( | const Eref & | e, | |
double | val | |||
) | [virtual] |
Set initial # of molecules in given pool and voxel. Bdry cond.
Implements ZombiePoolInterface.
References Element::cinfo(), Eref::element(), getPoolIndex(), getVoxelIndex(), Cinfo::isA(), GssaSystem::isReady, and OFFNODE.
void Gsolve::setNumAllVoxels | ( | unsigned int | num | ) | [virtual] |
Assigns the number of voxels used in the entire reac-diff system. Note that fewer than this may be used on any given node.
Implements ZombiePoolInterface.
References GssaSystem::isReady.
Referenced by initCinfo().
void Gsolve::setNumPools | ( | unsigned int | num | ) | [virtual] |
Assigns number of different pools (chemical species) present in each voxel.
Implements ZombiePoolInterface.
References GssaSystem::isReady.
Referenced by initCinfo().
void Gsolve::setNvec | ( | unsigned int | voxel, | |
vector< double > | vec | |||
) |
Referenced by initCinfo().
void Gsolve::setRandInit | ( | bool | val | ) |
Flag: set true if randomized round to integers is to be done.
References GssaSystem::useRandInit.
Referenced by initCinfo().
void Gsolve::setStoich | ( | Id | stoich | ) | [virtual] |
Informs the ZPI about the stoich, used during subsequent computations. Called to wrap up the model building. The Stoich does this call after it has set up its own path.
Implements ZombiePoolInterface.
References Element::cinfo(), Eref::data(), Id::element(), Id::eref(), Cinfo::isA(), GssaSystem::isReady, GssaSystem::stoich, and ZombiePoolInterface::stoich_.
Referenced by initCinfo().
void Gsolve::updateRateTerms | ( | unsigned int | index | ) | [virtual] |
Rescale specified voxel rate term following rate constant change or volume change. If index == ~0U then does all terms.
Implements ZombiePoolInterface.
References Stoich::getNumCoreRates(), and Stoich::getRateTerms().
void Gsolve::updateVoxelVol | ( | vector< double > | vols | ) |
Handles request to change volumes of voxels in this Ksolve, and all cascading effects of this. At this point it won't handle change in size of voxel array.
Referenced by initCinfo().
double Gsolve::volume | ( | unsigned int | i | ) | const [virtual] |
Inherited.
Implements ZombiePoolInterface.
Referenced by initCinfo(), initProc(), and initReinit().