Using ElmerSolver_mpi on a Multi-body Problem
Posted: 06 Feb 2017, 04:59
Good evening!
I'm still fairly new to Elmer and FEM in general. I've been putting together a custom, non-linear solver module for a niche application I have, and I have run into an issue with running parallel computations with a multi-body in Elmer. I'd like to ask if it is possible in principle to run a multi-body problem in Elmer in parallel.
Physically, the problem will study laser absorption (the custom solver) in a flowing gas mixture. I've constructed a relatively complicated geometry/mesh using a combination of AutoDesk Inventor and Salome. The geometry is a 3D rendering of a component used in the process I'm studying. I've drawn a cylinder running through this geometry, and this cylinder represents the domain over which my custom solver will operate, i.e. the laser beam. On the rest of the geometry, I have navier-stokes and diffusion solver operating. Eventually, the custom solver will take information from the diffusion solver and use it as an input.
I have an Xeon i7 workstation that can handle the problem with in parallel or single thread. However, the speed up I gain using parallel computation is attractive. The problem will solve the navier-stokes and diffusion problems. But when it gets to the custom solver, I get thrown an error: there is no matrix. I know the custom solver can operate independently on a single body cylinder using a parallel computation.
I seem to recall reading somewhere on the forum that this was a known limitation; ElmerGrid -metis does not respect multi-body boundaries. I'd like to confirm that this is what is causing the problem. I'd also like to ask if it is the only barrier to trying to get these solvers to run on the geometry I described in a parallel computation. That is, if I'm able to figure out some way to partition the mesh, independent of ElmerGrid, in such away that the body boundaries are respected, will ElmerSolver_mpi be able to handle a computation in which a solver is active on one body but not active on the other? If ElmerSolver_mpi cannot do this, is there a simple way to cause Elmer to abort the mpi run after the diffusion solver and seamlessly complete the custom solver computation on a single thread so that I can get the speed-up for at least part of the computation?
I'm still fairly new to Elmer and FEM in general. I've been putting together a custom, non-linear solver module for a niche application I have, and I have run into an issue with running parallel computations with a multi-body in Elmer. I'd like to ask if it is possible in principle to run a multi-body problem in Elmer in parallel.
Physically, the problem will study laser absorption (the custom solver) in a flowing gas mixture. I've constructed a relatively complicated geometry/mesh using a combination of AutoDesk Inventor and Salome. The geometry is a 3D rendering of a component used in the process I'm studying. I've drawn a cylinder running through this geometry, and this cylinder represents the domain over which my custom solver will operate, i.e. the laser beam. On the rest of the geometry, I have navier-stokes and diffusion solver operating. Eventually, the custom solver will take information from the diffusion solver and use it as an input.
I have an Xeon i7 workstation that can handle the problem with in parallel or single thread. However, the speed up I gain using parallel computation is attractive. The problem will solve the navier-stokes and diffusion problems. But when it gets to the custom solver, I get thrown an error: there is no matrix. I know the custom solver can operate independently on a single body cylinder using a parallel computation.
I seem to recall reading somewhere on the forum that this was a known limitation; ElmerGrid -metis does not respect multi-body boundaries. I'd like to confirm that this is what is causing the problem. I'd also like to ask if it is the only barrier to trying to get these solvers to run on the geometry I described in a parallel computation. That is, if I'm able to figure out some way to partition the mesh, independent of ElmerGrid, in such away that the body boundaries are respected, will ElmerSolver_mpi be able to handle a computation in which a solver is active on one body but not active on the other? If ElmerSolver_mpi cannot do this, is there a simple way to cause Elmer to abort the mpi run after the diffusion solver and seamlessly complete the custom solver computation on a single thread so that I can get the speed-up for at least part of the computation?