theochem / NICE.jl

https://theochem.github.io/NICE.jl/
MIT License
2 stars 2 forks source link

GSoC 2024: Add exact solvers #4

Closed msricher closed 5 months ago

msricher commented 9 months ago

Description

Add an exact non-linear solver for systems of simultaneous equilibria to the NICE (“N-species ICE-table”) Julia module.

:books: Package Description and Impact

A system of simultaneous equilibria’s steady state can be computed by solving a system of nonlinear equations, although for non-trivial systems, a very good guess at the equilibrium reaction extents is required for this. Kinetic Monte Carlo (KMC) methods are often used, then, to stochastically solve this type of system. The KMC method is slow, however, and cannot arrive at the exact solution, although the result of a KMC computation can be used as an initial guess to then solve the system exactly. Currently, NICE features the KMC method, but not the exact method. This project will entail writing the exact method’s objective function and its Jacobian, and then making use of a nonlinear solver Julia module to program the exact method into NICE.

:construction_worker: What will you do?

Using the existing NICE reaction system structure, you will write the objective and Jacobian function for the exact equilibrium solution. You will also find a suitable Julia module for nonlinear optimization, and using this, write the function that runs the exact method. You will also write a method that first runs the KMC method, and then uses its output as an initial guess to the exact solver. Finally, you must test these methods.

:checkered_flag: Expected Outcomes

  1. Implement exact solver objective and Jacobian functions
  2. Use a nonlinear optimizer library to program the exact method
  3. Write a hybrid method using the result of the KMC method as the guess for the exact method
  4. Test each new function and method you have implemented
Required skills Julia
Preferred skills chemical equilibria and chemical kinetics, nonlinear optimization and objective/Jacobian functions
Project size 90 hours, Small
Difficulty Easy to Medium

:raising_hand: Mentors

Michelle Richer richer.m_at_queensu_dot_ca @msricher
Paul Ayers ayers_at_mcmaster_dot_ca @PaulWAyers
Charlie-1-3 commented 8 months ago

Dear @msricher and @PaulWAyers ,

My name is Ayush Rai and I am currently pursuing a B.Tech+M.Tech degree in Mathematics and Computational Sciences at IITBHU, Varanasi. I am reaching out to express my interest in contributing to QC-Devs through GSoC 2024.

I have a passion for open-source development and have some experience in group theory and mathematical modeling. I have also completed internships in creating Python modules and developing web APIs and backends. I am proficient in Python and enjoy implementing mathematical theories in other fields. I believe this skill and interest align well with the project.

I would be grateful if you could guide me in understanding the codebase by assigning some beginner-friendly tasks. Additionally, I would like to connect with mentors and other community members, so please share the Slack, Element, Discord, or any other communication channel link.

Thank you for your time and consideration.

Best regards, Ayush Rai

msricher commented 8 months ago

You will need to write a proposal when the application begins (March 18th), based on the template on our website. Often, until then, people go on and start working, either on the project or on a "good first issue" to become familiar with the QC-Devs ecosystem, before starting. (That's always helpful, too, as the internships can be quite competitive.) This NICE project is rather small, but there may be other good first issues to work on elsewhere (theochem/gbasis, theochem/grid, theochem/modelhamiltonian, etc.)