SUNCAT-Center / catmap

Catalyst Micro-kinetic Analysis Package for automated creation of micro-kinetic models used in catalyst screening
GNU General Public License v3.0
96 stars 104 forks source link

Implement more robust rootfinding algorithm #70

Open chuanshi opened 9 years ago

chuanshi commented 9 years ago

Refactor the rootfinding code to use the algorithm detailed in http://onlinelibrary.wiley.com/doi/10.1002/aic.14627/abstract , which is tailored specifically for kinetic systems.

gusmaogabriels commented 8 years ago

Hi,

I have already translated the linearized kinetic model to Python. It's on GitHub (https://github.com/gusmaogabriels/mkin4py).

If you will, I can set some time and try to wrap the functions and parsers so that they work within the CatMAP environment.

Would that be ok?

Bests, Gabriel

ajmedford commented 8 years ago

Hi Gabriel, this would be great!

My initial strategy would be to try to create a new solver class (e.g. GusmaoSolver). Ideally it would inherit from "MeanFieldSolver", but if I remember correctly some of the data structures in "MeanFieldSolver" might be incompatible with your approach so you might just inherit from SolverBase, or inherit from MeanFieldSolver but overwrite functions as necessary. There are lots of idiosyncrasies in the code, and the documentation is ever-improving but still somewhat lacking so please don't hesitate to post questions here or to the list.

Please note that much of the seemingly senseless complexity in the CatMAP solver and data structures arises from the coverage-dependent energy implementation. Not sure if your solver would be compatible with coverage-dependence, but if so that would be especially valuable since the current solver suffers from a lot of convergence issues with coverage-dependent parameters.

I also used a "compile" hack to avoid re-forming the systems of equations at every point in descriptor-space. Not sure if this will be relevant, but it is worth knowing about since it leads to a lot of nonstandard coding.

Post any questions here or to the mkm-developers@lists.stanford.edu list and hopefully I or one of the other developers can answer it relatively promptly.

Thanks, AJ