Page MenuHomec4science

kinetic_model.hpp
No OneTemporary

File Metadata

Created
Fri, Jul 5, 14:52

kinetic_model.hpp

#ifndef SPECMICP_SPECMICP_KINETICS_KINETICMODEL_HPP
#define SPECMICP_SPECMICP_KINETICS_KINETICMODEL_HPP
#include "common.hpp"
#include "kinetic_variables.hpp"
namespace specmicp {
namespace kinetics {
// \brief Base class for a kinetic model
class KineticModel
{
public:
KineticModel()
{}
KineticModel(const std::vector<index_t>& list_species):
m_list_species(list_species)
{}
virtual ~KineticModel() {}
//! \brief Return the number of kinetic minerals included in the problem
index_t get_neq() {return m_list_species.size();}
//! \brief Compute the kinetic rates and store them in dydt
virtual void compute_rate(
scalar_t t,
const Vector& y,
KineticVariables& variables,
Vector& dydt
) = 0;
void add_equation(index_t species) {m_list_species.push_back(species);}
//! \brief Index of species corresponding to equation 'id_equation'
index_t index_species(index_t id_equation) {return m_list_species[id_equation];}
//! \brief Iterator over the species vector
std::vector<index_t>::iterator species_begin() {return m_list_species.begin();}
std::vector<index_t>::iterator species_end() {return m_list_species.end();}
private:
std::vector<index_t> m_list_species;
};
} // end namespace kinetics
} // end namespace specmicp
#endif //SPECMICP_SPECMICP_KINETICS_KINETICMODEL_HPP

Event Timeline