[ ] Define domain decomposition for DMCreateDomainDecomposition. Use createdomaindecomposition function pointer
[ ] Define scatters for domain decomposition for DMCreateDomainDecompositionScatters. Use createddscatters function pointer
[ ] Will need to set individual functions (and Jacobians) for each local subdomain
Those function pointers are members of the _DMOps struct defined in dmimpl.h
This is an interesting comment for the DA domain decomposition scatters:
/*
Fills the local vector problem on the subdomain from the global problem.
Right now this assumes one subdomain per processor.
*/
PetscErrorCode DMCreateDomainDecompositionScatters_DA(DM dm, PetscInt nsubdms, DM *subdms, VecScatter **iscat, VecScatter **oscat, VecScatter **lscat);
I don't think we would want this assumption if, for instance, we wanted to decompose our domain such that our "subdomains" corresponded to different variables.
Originally posted by **andrembcosta** September 21, 2022
Hi there,
I came across a paper where an Additive Schwartz nonlinear preconditioner is used for phase-field fracture problems and it seems to work quite well. Apparently, this type of nonlinear preconditioner already exists in petsc. (https://petsc.org/release/docs/manualpages/SNES/SNESASPIN.html)
Has someone used this specific solver within moose? I am interested in trying it out, but I couldn't find an example with the syntax on how to define the blocks and how to modify the residual computation (to account for the nonlinear preconditioner).
I just observed that the author of the paper asked this question in early 2019 (https://groups.google.com/g/moose-users/c/w19VwqHtspU/m/cvzpirFABQAJ).
paper: https://www.researchgate.net/publication/359439046_Nonlinear_Field-split_Preconditioners_for_Solving_Monolithic_Phase-field_Models_of_Brittle_Fracture
To-do
DMCreateDomainDecomposition
. Usecreatedomaindecomposition
function pointerDMCreateDomainDecompositionScatters
. Usecreateddscatters
function pointerThose function pointers are members of the
_DMOps
struct defined indmimpl.h
This is an interesting comment for the DA domain decomposition scatters:
I don't think we would want this assumption if, for instance, we wanted to decompose our domain such that our "subdomains" corresponded to different variables.
Discussed in https://github.com/idaholab/moose/discussions/22160