On Fri, Apr 12, 2024 at 11:16 AM Pierre Jolivet <[email protected]> wrote:
> > > On 12 Apr 2024, at 11:10 AM, Carl-Johan Thore <[email protected]> > wrote: > > Pierre, I see that you've already done a merge request for this. Thanks! > I have tested this and it works nicely in my application > > > I guess your matrix is symmetric in pattern? > Because otherwise, I don’t think this should work. > But if it’s OK for your use case, I could simply add a PetscCheck() that > the input Mat is symmetric and then get this integrated (better to have > something partially working than nothing at all, I guess). > Please let me know. > > Thanks, > Pierre > Yes, unless I'm mistaken it's structurally symmetric. Would be great to have this integrated. (I don't now what you have in mind for the check, but MatIsStructurallySymmetric did not work for me) /Carl-Johan > /Carl-Johan > > On Wed, Apr 10, 2024 at 8:24 AM Carl-Johan Thore <[email protected]> > wrote: > >> >> >> On Tue, Apr 9, 2024 at 5:31 PM Pierre Jolivet <[email protected]> wrote: >> >>> >>> On 9 Apr 2024, at 4:19 PM, Carl-Johan Thore <[email protected]> >>> wrote: >>> >>> This Message Is From an External Sender >>> This message came from outside your organization. >>> Thanks for the suggestion. I don't have a factored matrix (and can't >>> really use direct linear solvers) so MatSolveTranspose doesn't seem to >>> be an option. >>> I should have mentioned that I've also tried KSPSolveTranspose but that >>> doesn't work with pcredistribute >>> >>> >>> I’m not a frequent PCREDISTRIBUTE user, but it looks like >>> https://urldefense.us/v3/__https://petsc.org/release/src/ksp/pc/impls/redistribute/redistribute.c.html*line332__;Iw!!G_uCfscf7eWS!eKgr2PYF7SG39RXX3djw6sMcERzrkuIDlriMyaTiUBJLndZZjvPWDIExlBIgGGHuniBRgDKoQ2YiNQFa0Rh356QrCz6dDw$ >>> could >>> be copy/paste’d into PCApplyTranspose_Redistribute() by just changing a >>> MatMult() to MatMultTranspose() and KSPSolve() to KSPSolveTranspose(). >>> Would you be willing to contribute (and test) this? >>> Then, KSPSolveTranspose() — which should be the function you call — will >>> work. >>> >>> Thanks, >>> Pierre >>> >> >> Thanks, that sounds promising. Yes, I'll try to make a contribution >> /Carl-Johan >> > >
