I want to simulate a partial differential equation (a modified Cahn-Hilliard equation, but the details do not matter much. The questions also applies to the diffusion equation). I'm looking for a good framework to do heavy numerics. My requirements are:
- No license costs (matlab is no option, because we do not have enough licenses to run many jobs on our cluster)
- Fast code (ideally it would be compiled code. Using an interpreted language like python at runtime might be too slow)
- Flexible geometries. In fact I'd like to simulate a three dimensional problem with cylindrical symmetry. For computational efficiency I want to express my concentration field as a function of radius and the z coordinate, which makes of course the Laplacian a little bit more difficult to implement.
- Neumann boundary conditions (periodic boundary conditions are ok, too, but they cannot be used for the aforementioned cylindrical geometry). Neumann boundary conditions essential ensure no-flux conditions at the boundary, such that the total amount of material in the system is conserved.
- Ideally multiprocessing would be supported.
Currently, I'm using XMDS2, which is a great toolset. I use it to automatically generate C code, which I can compile and then run. It works like a charm, except for the boundary conditions. Unfortunately, XMDS only supports Dirichlet boundary conditions for cylindrical geometry, which does not help much in my case.
Does anyone know alternative frameworks, which support my requirements and are easy to use? If everything fails, I have to develop my own code, but I'm afraid that I cannot write as efficient code as experienced people would be able to do.