Solving partial differential equations using C#

Pi. picture Pi. · Sep 21, 2009 · Viewed 8.4k times · Source

I am working on a project (C# and .NET Framework) which requires me to solve some partial differential equations. Are there any specific libraries based on .NET Framework that I could see and make my work simpler?

I have worked with MATLAb and solving partial differential equations is very straightforward there. How can I solve this problem?

Answer

duffymo picture duffymo · Sep 21, 2009

Depends on which PDEs you want to solve and how you want to approach them.

Every approach that I know of will require linear algebra. You'll want to find a good matrix package for .NET, the best you can find, one that can handle sparse matricies efficiently.

Linear elliptic (steady state diffusion), parabolic (transient diffusion), and hyperbolic (F= MA dynamic) PDEs require slightly different approaches.

All three of these PDEs can use classical finite difference, finite element (weighted residual), or boundary element (Green's functions) to create the system matrix you'd like to solve. General non-linear PDEs are probably best attacked using a finite element/weighted residual technique.

But the parabolic and hyperbolic PDFs will turn into coupled sets of ODEs once you discretize them. You have to do transient integration to repeatedly solve the time evolution. Parabolic ODEs are first order in time; hyperbolic ODEs are second order in time.

I'm learning about CUDA and NVIDIA. You might want to look into CUDA bindings for your language.

All these are big topics unto themselves. Please Google for some sources, because it's not possible to give more than a cursory overview here.

UPDATE: I recently became aware of the Microsoft Solver Foundation. I haven't looked into it myself, but perhaps it'd be helpful to C# developers in solving this problem.