Add a competitive exchange model to MCT
TODO
- [x] Implement "Langumir" exchange model
- [x] Explicit formulation for multi component, multi channel
- [x] Add Interface
- [x] Add Test
- [x] Add documentation
Discussion about the model can be found in the Forum
Something we should conceptually consider for extraction is that the solution of individual components is not necessarily restricted by a "global" capacity since there is no surface that is being covered. Rather, each component has some individual saturation concentration that cannot be exceeded. It's not really competitive in that sense though. Hope that makes sense.
Is this possible in the current implementation?
Edit: Also commented in the forum, since we have all of the equations there.
This pull request introduces support for multiple exchange models in the Multichannel Transport (MCT) model, including a new Langmuir-type exchange model with saturation kinetics. The documentation is updated to describe the new exchange model options, their mathematical formulations, and configuration parameters. Additionally, the codebase is extended to allow selection and instantiation of exchange models via a new factory method.
Exchange Model Support
- Added support for selecting the exchange model type via the new
EXCHANGE_TYPEparameter, allowing users to choose betweenLINEAR_EX(default) andLANGMUIR_EXfor inter-channel transport. - Implemented a new Langmuir Exchange model (
LangumirExchange.cpp), registered in the exchange model factory, and updated the build configuration to include it. [1] [2]
Model Configuration and Parameters
- Introduced the optional
SATURATION_MATRIXparameter, which defines maximum saturation levels for Langmuir-type exchange kinetics and describes its effects on model behavior.
Documentation and Mathematical Formulation
- Updated the documentation to distinguish between the linear and Langmuir exchange models, including mathematical expressions and explanations of their physical meaning and volume scaling. [1] [2]
- Changed the overall documentation structure for the Multichannel Transport model.
API and Factory Changes
- Added a new method to the
IConfigHelperinterface to create exchange model instances by name, supporting extensibility for future exchange models. - Included the exchange model factory in the
MultiChannelTransportModelimplementation to facilitate dynamic model selection.
Very nice and clean PR, great work and cool addition to our code!
I had some very minor, nitpicky comments, pls address those and I think this can be merged
Thank you! All great catches! Everything has been adjusted.