Page MenuHomec4science

eqcurve_extractor.hpp
No OneTemporary

File Metadata

Created
Tue, Oct 15, 05:01

eqcurve_extractor.hpp

#ifndef SPECMICP_REACTMICP_EQCURVEEXTRACTOR_HPP
#define SPECMICP_REACTMICP_EQCURVEEXTRACTOR_HPP
#include "common.hpp"
namespace specmicp {
namespace reactmicp {
namespace eqcurve {
class EquilibriumCurveExtractor
{
public:
EquilibriumCurveExtractor(const Matrix& eq_curve):
m_eqcurve(eq_curve)
{
m_is_increasing = (xs_offset(m_eqcurve.rows()) >= xs_offset(1));
}
EquilibriumCurveExtractor(Matrix&& eq_curve):
m_eqcurve(eq_curve)
{
m_is_increasing = (xs_offset(m_eqcurve.rows()) >= xs_offset(1));
}
index_t find_point(scalar_t x);
index_t first() {return 0;}
index_t last() {return m_eqcurve.rows()-1;}
bool is_increasing() {return m_is_increasing;}
scalar_t totsolid_concentration(index_t index) {
return m_eqcurve(index, 0);
}
scalar_t totaq_concentration(index_t index) {
return m_eqcurve(index, 1);
}
scalar_t porosity(index_t index) {
return m_eqcurve(index, 2);
}
scalar_t diffusion_coefficient(index_t index) {
return m_eqcurve(index, 3);
}
scalar_t interpolate(index_t index, scalar_t x, index_t col);
scalar_t slope(index_t index, index_t col);
private:
scalar_t xs_offset(index_t offset_index) {
return m_eqcurve(offset_index-1, 0);
}
Matrix m_eqcurve;
bool m_is_increasing;
};
} // end namespace eqcurve
} // end namespace reactmicp
} // end namespace specmicp
#endif // SPECMICP_REACTMICP_EQCURVEEXTRACTOR_HPP

Event Timeline