20 #ifndef MPILIB_ALGORITHMS_ALGORITHMINTERFACE_HPP_
21 #define MPILIB_ALGORITHMS_ALGORITHMINTERFACE_HPP_
37 template<
class WeightValue>
69 const std::vector<WeightValue>& weightVector,
Time time) {
71 " if you want to use it");
84 const std::vector<WeightValue>& weightVector,
Time time,
85 const std::vector<NodeType>& typeVector) {
96 const std::vector<WeightValue>& weightVector,
97 const std::vector<NodeType>& typeVector){};
Number getStateSize(const AlgorithmGrid &grid) const
std::valarray< double > & getArrayInterpretation()
virtual AlgorithmInterface * clone() const =0
The interface for all algorithm classes.
AlgorithmInterface()=default
virtual void prepareEvolve(const std::vector< Rate > &nodeVector, const std::vector< WeightValue > &weightVector, const std::vector< NodeType > &typeVector)
virtual Rate getCurrentRate() const =0
std::valarray< double > & getArrayState(AlgorithmGrid &grid) const
virtual Time getCurrentTime() const =0
virtual void evolveNodeState(const std::vector< Rate > &nodeVector, const std::vector< WeightValue > &weightVector, Time time, const std::vector< NodeType > &typeVector)
virtual void configure(const SimulationRunParameter &simParam)=0
Parameter determining how a simulation is run. Specifiying begin and end time, log file names...
virtual ~AlgorithmInterface()
Number & getStateSize(AlgorithmGrid &grid) const
std::valarray< double > & getArrayInterpretation(AlgorithmGrid &grid) const
virtual void evolveNodeState(const std::vector< Rate > &rateVector, const std::vector< WeightValue > &weightVector, Time time)
std::valarray< double > & getArrayState()
virtual AlgorithmGrid getGrid(NodeId, bool b_state=true) const =0