Skip to content

Commit 52023f9

Browse files
committed
Code clean up and extracted moitie calculation in different funktion
1 parent 27d162c commit 52023f9

8 files changed

+222
-159
lines changed

src/libcadet/model/ReactionModel.hpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -214,16 +214,16 @@ class IDynamicReactionModel
214214
double* res, double factor, LinearBufferAllocator workSpace) const = 0;
215215

216216

217-
virtual int quasiStationaryFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y,
217+
virtual int computeQuasiStationaryReactionFlux(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y,
218218
Eigen::Map<Eigen::Vector<active, Eigen::Dynamic>> fluxes, int const* mapQSReac, LinearBufferAllocator workSpace) = 0;
219219

220-
virtual int quasiStationaryFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, active const* y,
220+
virtual int computeQuasiStationaryReactionFlux(double t, unsigned int secIdx, const ColumnPosition& colPos, active const* y,
221221
Eigen::Map<Eigen::Vector<double, Eigen::Dynamic>> fluxes, int const* mapQSReac, LinearBufferAllocator workSpace) = 0;
222222

223-
virtual int quasiStationaryFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y,
223+
virtual int computeQuasiStationaryReactionFlux(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y,
224224
Eigen::Map<Eigen::Vector<double, Eigen::Dynamic>> fluxes, int const* mapQSReac, LinearBufferAllocator workSpace) = 0;
225225

226-
virtual int quasiStationaryFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, active const* y,
226+
virtual int computeQuasiStationaryReactionFlux(double t, unsigned int secIdx, const ColumnPosition& colPos, active const* y,
227227
Eigen::Map<Eigen::Vector<active, Eigen::Dynamic>> fluxes, int const* mapQSReac, LinearBufferAllocator workSpace) = 0;
228228

229229
/**
@@ -251,15 +251,29 @@ class IDynamicReactionModel
251251
virtual void analyticJacobianLiquidAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, double factor, linalg::DenseBandedRowIterator jac, LinearBufferAllocator workSpace) const = 0;
252252
virtual void analyticJacobianLiquidAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, double factor, linalg::BandedSparseRowIterator jac, LinearBufferAllocator workSpace) const = 0;
253253

254-
virtual void analyticQuasiSteadyJacobianLiquid(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandMatrix::RowIterator jac, LinearBufferAllocator workSpace) const = 0;
255-
virtual void analyticQuasiSteadyJacobianLiquid(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::DenseBandedRowIterator jac, LinearBufferAllocator workSpace) const = 0;
256-
virtual void analyticQuasiSteadyJacobianLiquid(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandedSparseRowIterator jac, LinearBufferAllocator workSpace) const = 0;
254+
virtual void analyticJacobianQuasiStationaryReaction(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandMatrix::RowIterator jac, LinearBufferAllocator workSpace) const = 0;
255+
virtual void analyticJacobianQuasiStationaryReaction(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::DenseBandedRowIterator jac, LinearBufferAllocator workSpace) const = 0;
256+
virtual void analyticJacobianQuasiStationaryReaction(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandedSparseRowIterator jac, LinearBufferAllocator workSpace) const = 0;
257257

258258
virtual void analyticJacobianLiquidSingleFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandMatrix::RowIterator jac, LinearBufferAllocator workSpace) const = 0;
259259
virtual void analyticJacobianLiquidSingleFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::DenseBandedRowIterator jac, LinearBufferAllocator workSpace) const = 0;
260260
virtual void analyticJacobianLiquidSingleFluxAdd(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, int state, int reaction, linalg::BandedSparseRowIterator jac, LinearBufferAllocator workSpace) const = 0;
261261

262-
virtual void fillConservedMoietiesBulk(Eigen::MatrixXd& M, unsigned int & QSReaction, std::vector<int>& _QsCompBulk) = 0;
262+
/**
263+
* @brief fills the conserved moieties matrix and the vector of components involved in qs reactions
264+
* @param [in,out] M Matrix to be filled with the conserved moieties
265+
* @param [in,out] QsCompBulk Vector to be filled with the components involved in qs reactions
266+
*/
267+
virtual void fillConservedMoietiesBulk(Eigen::MatrixXd& M, std::vector<int>& QsCompBulk) {}
268+
269+
/**
270+
* @brief Returns whether this dynamic reaction model has quasi-stationary reactions
271+
* @details Quasi-stationary reactions are reactions that are in equilibrium and can be solved
272+
* algebraically. This function is used to determine whether the model can be solved
273+
* in quasi-stationary mode.
274+
* @return @c true if the model has quasi-stationary reactions, otherwise @c false
275+
*/
276+
virtual bool hasQuasiStationaryReactionsBulk() const CADET_NOEXCEPT { return false; }
263277

264278
virtual void timeDerivativeQuasiStationaryReaction(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, double* dReacDt, LinearBufferAllocator workSpace) = 0;
265279

0 commit comments

Comments
 (0)