> On 8 Feb 2024, at 5:37 PM, Zhang, Hong via petsc-users > <petsc-users@mcs.anl.gov> wrote: > > Hana, > "product AB with A nest, B nest" is not supported by PETSc. I do not know why > PETSc does not display such an error message. I'll check it.
Did you? A naive fix is to simply add the missing PetscCheck() in MatProduct_Private() right after MatProductSetFromOptions() https://petsc.org/release/src/mat/interface/matrix.c.html#line10026 (notice that it is there line 10048 in the other code branch) I have this at https://gitlab.com/petsc/petsc/-/commit/9dcea022de3b0309e5c16b8c554ad9c85dea29cf?merge_request_iid=7283 (coupled with code refactoring to avoid missing any other operations), but maybe we could do things more elegantly. Thanks, Pierre > Hong > From: petsc-users <petsc-users-boun...@mcs.anl.gov> on behalf of Hana > Honnerová <hhor...@kma.zcu.cz> > Sent: Thursday, February 8, 2024 4:45 AM > To: petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov> > Subject: [petsc-users] question on PCLSC with matrix blocks of type MATNEST > > Hi all, > I am trying to solve linear systems arising from isogeometric discretization > (similar to FEM) of the Navier-Stokes equations in parallel using PETSc. The > linear systems are of saddle-point type, so I would like to use the > PCFIELDSPLIT preconditioner with the -pc_fieldsplit_detect_saddle_point > option, Schur complement factorization and the LSC Schur complement > preconditioner. I do not provide any user-defined operators for PCLSC in my > codes (at least for now). > I store the matrix as a MATNEST consisting of 4 blocks (F for > velocity-velocity part, Bt for velocity-pressure part, B for > pressure-velocity part and NULL for pressure-pressure part). It is also > convenient for me to store the blocks F, Bt and B as another MATNEST > consisting of blocks corresponding to individual velocity components. > > However, in this setting, I get the following error message: > [0]PETSC ERROR: Petsc has generated inconsistent data > [0]PETSC ERROR: Unspecified symbolic phase for product AB with A nest, B > nest. Call MatProductSetFromOptions() first > [0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble shooting. > [0]PETSC ERROR: Petsc Release Version 3.20.4, unknown > [0]PETSC ERROR: > /home/hhornik/gismo/build-petsc-mpi/RelWithDebInfo/bin/gsINSSolverPETScTest > on a arch-debug named ThinkPad-T14 by hhornik Thu Feb 8 11:04:17 2024 > [0]PETSC ERROR: Configure options PETSC_ARCH=arch-debug --with-debugging=1 > --download-mumps --download-scalapack > [0]PETSC ERROR: #1 MatProductSymbolic() at > /home/hhornik/Software/PETSc/src/mat/interface/matproduct.c:807 > [0]PETSC ERROR: #2 MatProduct_Private() at > /home/hhornik/Software/PETSc/src/mat/interface/matrix.c:10027 > [0]PETSC ERROR: #3 MatMatMult() at > /home/hhornik/Software/PETSc/src/mat/interface/matrix.c:10103 > [0]PETSC ERROR: #4 PCSetUp_LSC() at > /home/hhornik/Software/PETSc/src/ksp/pc/impls/lsc/lsc.c:79 > [0]PETSC ERROR: #5 PCSetUp() at > /home/hhornik/Software/PETSc/src/ksp/pc/interface/precon.c:1080 > [0]PETSC ERROR: #6 KSPSetUp() at > /home/hhornik/Software/PETSc/src/ksp/ksp/interface/itfunc.c:415 > [0]PETSC ERROR: #7 KSPSolve_Private() at > /home/hhornik/Software/PETSc/src/ksp/ksp/interface/itfunc.c:832 > [0]PETSC ERROR: #8 KSPSolve() at > /home/hhornik/Software/PETSc/src/ksp/ksp/interface/itfunc.c:1079 > [0]PETSC ERROR: #9 PCApply_FieldSplit_Schur() at > /home/hhornik/Software/PETSc/src/ksp/pc/impls/fieldsplit/fieldsplit.c:1165 > [0]PETSC ERROR: #10 PCApply() at > /home/hhornik/Software/PETSc/src/ksp/pc/interface/precon.c:498 > [0]PETSC ERROR: #11 KSP_PCApply() at > /home/hhornik/Software/PETSc/include/petsc/private/kspimpl.h:383 > [0]PETSC ERROR: #12 KSPFGMRESCycle() at > /home/hhornik/Software/PETSc/src/ksp/ksp/impls/gmres/fgmres/fgmres.c:123 > [0]PETSC ERROR: #13 KSPSolve_FGMRES() at > /home/hhornik/Software/PETSc/src/ksp/ksp/impls/gmres/fgmres/fgmres.c:235 > [0]PETSC ERROR: #14 KSPSolve_Private() at > /home/hhornik/Software/PETSc/src/ksp/ksp/interface/itfunc.c:906 > [0]PETSC ERROR: #15 KSPSolve() at > /home/hhornik/Software/PETSc/src/ksp/ksp/interface/itfunc.c:1079 > [0]PETSC ERROR: #16 applySolver() at > /home/hhornik/gismo/optional/gsIncompressibleFlow/src/gsINSSolver.hpp:531 > > I could not find any solution for this so far. My question is: Is it possible > to use the LSC preconditioner in such case, where the matrix blocks are of > type MATNEST? And if so, how? > Thank you, > Hana Honnerova