typedef enum {PC_GASM_BASIC = 3,PC_GASM_RESTRICT = 1,PC_GASM_INTERPOLATE = 2,PC_GASM_NONE = 0} PCGASMType;Each subdomain has nested inner and outer parts. The inner subdomains are assumed to form a non-overlapping covering of the computational domain, while the outer subdomains contain the inner subdomains and overlap with each other. This preconditioner will compute a subdomain correction over each *outer* subdomain from a residual computed there, but its different variants will differ in (a) how the outer subdomain residual is computed, and (b) how the outer subdomain correction is computed.
PC_GASM_BASIC - Symmetric version where the full from the outer subdomain is used, and the resulting correction is applied
over the outer subdomains. As a result, points in the overlap will receive the sum of the corrections
from neighboring subdomains.
Classical standard additive Schwarz.
PC_GASM_RESTRICT - Residual from the outer subdomain is used but the correction is restricted to the inner subdomain only
(i.e., zeroed out over the overlap portion of the outer subdomain before being applied). As a result,
each point will receive a correction only from the unique inner subdomain containing it (nonoverlapping covering
assumption).
Default.
PC_GASM_INTERPOLATE - Residual is zeroed out over the overlap portion of the outer subdomain, but the resulting correction is
applied over the outer subdomain. As a result, points in the overlap will receive the sum of the corrections
from neighboring subdomains.
PC_GASM_NONE - Residuals and corrections are zeroed out outside the local subdomains.
Not very good.