[petsc-users] Jacobian matrix for dual porosity model

Adrian Croucher a.croucher at auckland.ac.nz
Wed Jun 14 23:48:12 CDT 2017


On 14/06/17 07:45, Jed Brown wrote:
> Barry Smith <bsmith at mcs.anl.gov> writes:
>
>>> 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"?
> Yeah, that would be reasonable.  We don't have a concept of sparsity for
> preconditioners so don't have a clean way to produce the exact (sparse)
> Schur complement.  Computing this matrix using coloring should be
> relatively inexpensive due to the independence in each cell and its
> tridiagonal structure.

Thanks for those ideas, very helpful.

If I try this approach (forming whole Jacobian matrix and using 
PCFieldSplit Schur), I guess I will first need to set up a modified 
DMPlex for the whole fracture + matrix mesh- so I can use it to create 
vectors and the Jacobian matrix (with the right sparsity pattern), and 
also to work out the coloring for finite differencing.

Would that be straight-forward to do? Currently my DM just comes from 
DMPlexCreateFromFile(). Presumably you can use DMPlexInsertCone() or 
similar to add points into it?

- Adrian

-- 
Dr Adrian Croucher
Senior Research Fellow
Department of Engineering Science
University of Auckland, New Zealand
email: a.croucher at auckland.ac.nz
tel: +64 (0)9 923 4611



More information about the petsc-users mailing list