Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/libcadet/Memory.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -353,6 +353,14 @@ namespace cadet

explicit operator T*() const { return _ptr; }

// method to copy elements from std::vector
void copyFromVector(const std::vector<T>& vec) {
if (vec.size() > _numElements) {
throw std::out_of_range("Vector size exceeds BufferedArray size");
}
std::copy(vec.begin(), vec.end(), _ptr);
}

private:
BufferedArray(T* ptr, unsigned int numElements) : _ptr(ptr), _numElements(numElements) { }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,6 @@ void LumpedRateModelWithPores<ConvDispOperator>::consistentInitialState(const Si
}

// Step 1b: Compute fluxes j_f

// Reset j_f to 0.0
double* const jf = vecStateY + idxr.offsetJf();
std::fill(jf, jf + _disc.nComp * _disc.nCol * _disc.nParType, 0.0);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ int LumpedRateModelWithPores<ConvDispOperator>::linearSolve(double t, double alp
{
// Assemble and factorize discretized bulk Jacobian
const bool result = _convDispOp.assembleAndFactorizeDiscretizedJacobian(alpha);

if (cadet_unlikely(!result))
{
LOG(Error) << "Factorize() failed for bulk block";
Expand Down
2 changes: 2 additions & 0 deletions src/libcadet/model/LumpedRateModelWithPores.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,7 @@ bool LumpedRateModelWithPores<ConvDispOperator>::configureModelDiscretization(IP

if (_dynReactionBulk->usesParamProviderInDiscretizationConfig())
paramProvider.popScope();

}

clearDynamicReactionModels();
Expand Down Expand Up @@ -563,6 +564,7 @@ bool LumpedRateModelWithPores<ConvDispOperator>::configure(IParameterProvider& p
{
paramProvider.pushScope("reaction_bulk");
dynReactionConfSuccess = _dynReactionBulk->configure(paramProvider, _unitOpIdx, ParTypeIndep);
_convDispOp.setDynamicReactionBulk(_dynReactionBulk);
paramProvider.popScope();
}

Expand Down
20 changes: 20 additions & 0 deletions src/libcadet/model/ReactionModel.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,26 @@ class IDynamicReactionModel
*/
virtual unsigned int numReactionsCombined() const CADET_NOEXCEPT = 0;

// conserved moitie methods:
virtual auto numConservedMoities() const CADET_NOEXCEPT -> unsigned int { return 0; }

virtual auto configureConservedMoity() -> bool{ return false;}

virtual auto matrixMoietiesBulk() -> Eigen::Matrix<active, Eigen::Dynamic, Eigen::Dynamic> { return Eigen::Matrix<active, Eigen::Dynamic, Eigen::Dynamic>(0, 0); }

virtual auto quasiStationaryComponentMap() const -> std::vector<int> { return std::vector<int>{0}; }

virtual auto algIdx()const -> std::vector<int> { return std::vector<int>{0}; }

virtual auto consMoityIdx() -> std::vector<int> { return std::vector<int>{0}; }

virtual auto numReactionQuasiStationary() const -> unsigned int { return 0; }

virtual auto hasQuasiStationaryReactionsBulk() const CADET_NOEXCEPT -> bool { return false; }

virtual void timeDerivativeQuasiStationaryReaction(double t, unsigned int secIdx, const ColumnPosition& colPos, double const* y, double* dY, LinearBufferAllocator workSpace) const {}


protected:
};

Expand Down
Loading