Skip to content

SchwarzSolver

Pratik Nayak edited this page Oct 13, 2019 · 2 revisions

This module implements the different schwarz solvers.

Currently, only the RAS(Restricted Additive Schwarz) solver has been implemented. The important functions are:

  1. Exchange boundary: This function implements the exchanging of the boundary vectors between the subdomains for both the two-sided and the one-sided communication paradigms.

  2. Update boundary: This function updates the boundary by using an Spmv with an interface matrix containing the coefficients in the overlap and the interface.

  3. Checking for convergence: This function checks if the global solver has converged, that is if the num_converged_procs is equal to the number of subdomains in the solver. This in addition contains two more functions:

    1. Local convergence check: Implemented by the solve module. This function checks if the subdomain has converged by computing the local residual norm.
    2. Global convergence check: Implemented by the solve module. This function checks how many of the subdomains have converged. It has two algorithms to collect the local residual norms from the different subdomains, put_all_local_residual_norms, which as the name states uses MPI_Put to put all the local residual norms into all the other subdomains and propagate_all_local_residual_norms, which accumulates the local residual norms from its neighbours using MPI_Accumulate. After the local residual norms have been gathered on all processes, the global convergence check proceeds again with one of the two algorithms, tree_convergence or propagate_convergence. The tree convergence is the one implemented in the paper of Ichitaro Yamazaki. The propagate convergence again either accumulates the convergence from the different subdomains or uses a simple MPI_Put to count how many processes have sent convergence.
  4. Local solution: If the convergence is not yet detected, then a local solve is performed on each subdomain. If a direct solver has been chosen, then the factorized matrix is used to do a triangular solve. This factorization is done in the setup stage. There is no such setup required for the iterative solver.

  5. Local to global vector expansion: This function expands the local solution vector into a global vector for convenience during the exchanging of the boundary values.

Clone this wiki locally