An educational example demonstrating domain decomposition and parallel computing using Python.
This project visualizes a 2D domain split into quadrilateral elements — a basic concept used in finite element methods and parallel computing environments like MPI.
It is intended for illustrating how computational domains can be divided and labeled for multi-process workloads. Two different methods - direct Schur method and alternating Schwarz method has been implemented in the code.
An example mesh showing quadrilateral elements and node numbering:
The first method we have implemented is the so-called Direct Schur Method, and its process is summarized as follows:
- Compute the Schur complements by condensing the internal DOFs.
- Assemble the global interface matrix and solve for the interface displacements.
- Use the interface displacements to recover the internal displacements within each subdomain.
We have also implemented Alternating Schwarz Method:
- The Schwarz method decomposes the domain into overlapping subdomains.
- Each subdomain solves its local problem iteratively using boundary info from neighbors.
- Solutions are combined and updated until the global solution converges.


