ksp/examples/tutorials/ex8.c is broken in the release (with -user_set_subdomains). The trouble is that PC_ASM_RESTRICT really needs both the overlapping and nonoverlapping subdomains. Since Matt added RASM support for multiple subdomains per process (between 3.0 and 3.1), this function really needs to provide both in order to be useful. I added that to -dev, along with PCASM support to work properly when the user provides both. I think this should be backported, despite being an API change to PCASMCreateSubdomains2D, because I don't think anyone actually uses this function (except this example).
Some other notes on PCASM, unrelated backporting the fixes above: * As currently written, PCASM *always* does RASM when there are multiple subdomains per process. * PCASM currently doesn't support having the user call PCASMSetLocalSubdomains with multiple subdomains per process, specifying 'is', but not 'is_local'. This worked prior to 3.1, and I think this functionality should eventually be restored (for PC_ASM_BASIC, it's not possible with PC_ASM_RESTRICT). * What was the eventual intended behavior for PCASMSetTotalSubdomains with specified index sets? You could implement a form of field split or decompose a small number of subdomains (like different materials) this way. But I think a more practical interface would be to have PCASMSetLocalSubdomains support index sets on arbitrary subcommunicators of pc->hdr.comm (it exposes more concurrency). I see that several parts of PCASM were already written with this (support of multiple procs per subdomain) in mind. http://lists.mcs.anl.gov/pipermail/petsc-dev/2010-April/002569.html Is there a practical use for IS arguments of PCASMSetTotalSubdomains? Jed
