cb-geo / mpm

CB-Geo High-Performance Material Point Method
https://www.cb-geo.com/research/mpm
Other
243 stars 83 forks source link

Parallel Solver for Semi-Implicit Navier-Stokes solver #635

Closed bodhinandach closed 4 years ago

bodhinandach commented 4 years ago

Summary

This RFC is to propose an enhancement of the Navier-Stokes solver in branch solver/navier-stokes and RFC #634. A parallel solver based on PETSc library is planned to be added to the implementation to solve a large scale linear systems of equation in branch solver/navier-stokes-parallel.

Motivation

To add parallel capabilities to the NS solver so that it can be used to solve problems with large number of particles.

Design Detail

The following classes and functionality were implemented:

  1. A specific assembler of NS scheme for parallel usage.
  2. Wrapper to include the capability of PETSc solver to CB-Geo. This includes the capability to wrap Eigen matrices and vectors to PETSc data structures and rank-to-global index mapping.
  3. Integration of NS solver with domain-decomposition and halo-exchange features.
  4. (To be done) Parallel free-surface detection.
  5. (To be done) Add the capability of dynamic load-balancing.
  6. (To be done) To implement parallel incomplete cholesky preconditioner for faster convergence.

Drawbacks

No drawbacks in performance at the moment. It extended the capability of running the semi-implicit solver in a distributed memory machine. The current max number of particles reached 2.4 million, which can be completed in 1 hour for 1000 steps, running in 256 MPI tasks. Further optimization can definitely be done to improve performance.

kks32 commented 4 years ago

@bodhinandach Could you please add code outlines and details? Please add details for current and future features.

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

bodhinandach commented 4 years ago

I am closing this RFC and going to merge it together with the RFC #634