-
Notifications
You must be signed in to change notification settings - Fork 3
SchwarzSolver
This module implements the different schwarz solvers.
Currently, only the RAS(Restricted Additive Schwarz) solver has been implemented. The important functions are:
-
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.
-
Update boundary: This function updates the boundary by using an Spmv with an interface matrix containing the coefficients in the overlap and the interface.
-
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:- Local convergence check: Implemented by the solve module. This function checks if the subdomain has converged by computing the local residual norm.
-
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 usesMPI_Put
to put all the local residual norms into all the other subdomains andpropagate_all_local_residual_norms
, which accumulates the local residual norms from its neighbours usingMPI_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 simpleMPI_Put
to count how many processes have sent convergence.
-
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.
-
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.