Lately, I am working on a problem collaborating with experimentalists to understand the drying process of conductive thin films. The system includes three-component (donor A, acceptor B, and solvent S), where A and B may undergo phase separation along with the evaporation of S. It involves a solution of a moving boundary PDE. The simpler version of the two-component case is describing here. For 3-component phase separation case, the PDE system is even more complicated which involves 1st through 4th order derivatives and two coupled PDEs.
To construct the model, I spend two months starting from the simplest 2-component case. However, with the help of DifferentialEquations.jl, I only spend one day making all numerical algorithms work! I even find some errors in my model during experimentation of numerical calculations. It is so AMAZING! If I were using C++ just like before, I expect I will spend another two months to make one such algorithm to work properly.
This is one of the numerous examples I have encountered these two years when I began to do research using Julia. I have rewritten one of my main research software from C++ to Julia, and the development process is so enjoyable. Julia enables me to add many functionalities that I would not dare to think of by using C++ or Python. I’d say Julia extends my ability to think about more complicated physical problems and solve them!