[petsc-users] Jacobian matrix for dual porosity model
Barry Smith
bsmith at mcs.anl.gov
Tue Jun 13 13:58:26 CDT 2017
> On Jun 13, 2017, at 10:06 AM, Jed Brown <jed at jedbrown.org> wrote:
>
> Adrian Croucher <a.croucher at auckland.ac.nz> writes:
>
>> One way might be to form the whole Jacobian but somehow use a modified
>> KSP solve which would implement the reduction process, do a KSP solve on
>> the reduced system of size n, and finally back-substitute to find the
>> unknowns in the matrix rock cells.
>
> You can do this with PCFieldSplit type Schur, but it's a lot heavier
> than you might like.
Is it clear that it would produce much overhead compared to doing a custom "reduction to a smaller problem". Perhaps he should start with this and then profiling can show if there are any likely benefits to "specializing more"?
Barry
>
>> Another way might be to form only the reduced-size Jacobian and the
>> other block-diagonal matrices separately, use KSP to solve the reduced
>> system but first incorporate the reduction process into the Jacobian
>> calculation routine, and somewhere a post-solve step to back-substitute
>> for the unknowns in the matrix cells. However currently we are using
>> finite differences to compute these Jacobians and it seems to me it
>> would be messy to try to do that separately for each of the
>> sub-matrices. Doing it the first way above would avoid all that.
>
> If you choose this option, you would make your residual evaluation
> perform the local solve (i.e., eliminating the local variables).
>
>> Any suggestions for what might be a good approach? or any other ideas
>> that could be easier to implement with PETSc but have similar
>> efficiency? I didn't see anything currently in PETSc specifically for
>> solving block-tridiagonal systems.
>
> Any incomplete or complete factorization (optionally inside block
> Jacobi) is an O(N) direct solver for a tridiagonal system.
More information about the petsc-users
mailing list