|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectfern.simulation.Simulator
fern.simulation.algorithm.GillespieEnhanced
public class GillespieEnhanced
This is an enhanced version of the original Direct method developed by Gillespie. Just like the algorithm of Gibson and Bruck it uses a dependency graph to know what propensities have to be recalculated.
Take care with the option efficientlyAdaptSum: if it is true, it is possible that the sum become numerically unstable and the simulation fails, but especially for sparse networks it should be much more efficient.
For references see Daniel T. Gillespie., A General Method for Numerically Simulating the Stochastic Time Evolution of Coupled Chemical Reactions, J.Comp.Phys. 22, 403 (1976) and M.A.Gibson and J.Bruck, Efficient Exact Stochastic Simulation of Chemical Systems with Many Species and Many Channels, J.Phys.Chem.A., Vol 104, no 9, 2000
GillespieSimple
,
DependencyGraph
Nested Class Summary |
---|
Nested classes/interfaces inherited from class fern.simulation.Simulator |
---|
Simulator.FireType |
Constructor Summary | |
---|---|
GillespieEnhanced(Network net)
|
Method Summary | |
---|---|
String |
getName()
Gets the name of the algorithm. |
void |
initialize()
Initializes the algorithm: set t=0reset the AmountManager recalculate the propensities
Gets called at the very beginning of start |
boolean |
isEfficientlyAdaptSum()
|
void |
performStep(SimulationController control)
Performs one simulation step. |
void |
reinitialize()
Reset propensities when a event has been executed. |
void |
setAmount(int species,
long amount)
Sets the amount of the given species. |
void |
setEfficientlyAdaptSum(boolean efficientlyAdaptSum)
|
void |
setVolume(double volume)
Sets the volume of the reaction network. |
Methods inherited from class fern.simulation.Simulator |
---|
addObserver, getAmount, getNet, getNextThetaEvent, getPropensity, getPropensityCalculator, getTime, getVolume, isInterpolateTheta, registerNewTheta, setInterpolateTheta, start, start |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public GillespieEnhanced(Network net)
Method Detail |
---|
public void initialize()
Simulator
AmountManager
start
initialize
in class Simulator
public void reinitialize()
Simulator
reinitialize
in class Simulator
public void performStep(SimulationController control)
Simulator
Simulator.setAmount(int, long)
and Simulator.setVolume(double)
if they need correct values!
performStep
in class Simulator
control
- the simulators controllerpublic void setVolume(double volume)
Simulator
setVolume
in class Simulator
volume
- the volumepublic void setAmount(int species, long amount)
Simulator
setAmount
in class Simulator
species
- species indexamount
- amount of speciesAmountManager.setAmount(int, long)
public String getName()
Simulator
getName
in class Simulator
public boolean isEfficientlyAdaptSum()
public void setEfficientlyAdaptSum(boolean efficientlyAdaptSum)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |