On Wed, 5 Feb 2025 at 13:41, Jatin Bhardwaj <[email protected]> wrote: > > Hello SymPy developers, > > > I am interested in improving SymPy's PDE-solving functionality, particularly > for quasilinear first-order PDEs, general first-order nonlinear PDEs, and > second-order PDEs. Currently, SymPy has strong support for linear PDEs, but > handling nonlinear cases—especially quasilinear and fully nonlinear > PDEs—remains limited. > > > My primary question is: Does expanding PDE support in these areas align with > SymPy’s current development roadmap and priorities? > > > If this aligns with SymPy’s goals, I would be enthusiastic about contributing > to this effort. I have a strong foundation in calculus and differential > equations, which I believe will be valuable in tackling this challenge. I’m > prepared to delve into the computational implementation of these features and > develop a concrete plan of action. > > To facilitate this process, I would greatly appreciate any guidance on: > 1. Recommended resources for proposed features. > 2. Any potential challenges or considerations unique to implementing > nonlinear PDE solvers.
Hi Jatin, SymPy does not have a broadly agreed development roadmap and list of priorities. Rather different people have different things that they are working on and would prioritise. I will answer in terms of my own sense of a roadmap and priorities. SymPy has various solver functions e.g. solve for algebraic equations, dsolve for ODEs and pdsolve for PDEs and many more. The usefulness of these functions is often questionable. Even in the case of solve it would often be better to use something else such as to compute numerical solutions rather than analytic solutions. For dsolve, only quite simple ODEs can be solved. The implementation can be improved to handle more DEs but there would still be a tiny subset of problems where analytic solutions can be computed and a vast array of practical problems that realistically can only be handled numerically. When you go to pdsolve and PDEs the set of cases that can be solved analytically is so small that a function like pdsolve is almost useless. It would be much more useful to users if SymPy just provided something like an ndsolve function that could solve differential equations numerically using SciPy's solvers rather than making them go through lambdify. That does not mean that we can't do useful things with symbolics when solving these different types of equations. Often though the useful thing is to do some symbolic manipulation that then helps with a subsequent approximate or numeric calculation e.g. we could compute a series solution or transform the equations somehow. Some symbolic manipulation is needed even just to set up a numeric solution to a PDE so you could imagine something useful where SymPy can do that and then set things up so that the problem could be solved numerically with e.g. FEniCS. All of these are also things that could be built on top of SymPy though so e.g. someone could make a library that depends on SymPy and that uses it to do useful things with PDEs and FEniCS etc. The capabilities that such a library would provide would be the same if it was part of SymPy or just a separate library. Its capabilities would be limited though by the capabilities of the core parts of SymPy. When I look at GSOC proposals I am much more interested in proposals that improve existing core functionality that would provide a good foundation for other things to be built on top. If SymPy did not have pdsolve and someone proposed it in a GSOC project now then I would say that we should reject the proposal. The only way that I would be happy to add pdsolve is if the code was already written, comprehensive, well tested, with a well defined scope and had already been proven to be useful. As it is we have a function that is not that useful and would still not be that useful even if someone improved it a bit. I'm not interested in having a GSOC project that tries to improve pdsolve rather than some other project that improves some core part of SymPy. It is possible that someone else would be interested in supervising a project around pdsolve but personally I would not and I would not consider it to be any kind of priority for SymPy's roadmap. The priorities from my perspective are more things like core algebra, polynomials and matrices, functions like solve, limits, series, code generation, performance, etc. If these parts of SymPy are good then it provides a good foundation for someone to make a symbolic PDE library but if we don't have the resources to handle the core things then we should not spend those resources on things that could just be in other libraries that depend on SymPy. Oscar -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/sympy/CAHVvXxQQJGAhy6d7jwmC0mVBiBH8KHjycQzGQGA_R2d3Z0YhVg%40mail.gmail.com.
