Please email the code that fails to petsc-ma...@mcs.anl.gov
> On Mar 14, 2018, at 3:56 AM, Natacha BEREUX <natacha.ber...@gmail.com> wrote: > > Thanks for your answer > In between I tried to call directly MatLUFactorSymbolic then > MatLUFactorNumeric to avoid MatGetOrdering, and the code fails later (in the > call to SuperLu routine pdgssvx). > > I would prefer to use PETSc for the computation of the nullbasis: the input > matrix is a PETSc "Mat" (MPIAIJ) and the ouput basis will be used to project > a linear system (also a PETSc "Mat" and Vec) on a reduced space. > Parallel format conversion is quite tricky and error prone. Using Petsc "Mat" > is much easier and safe than maintaining my own SuperLU interface. > > Here are some details on what I plan to do : > get a LU decomposition of a rectangular constraints matrix : > P C Q = ( L1 ) > ( L2 ) > then obtain L1^{-1} L2 > II hoped to get the factors after LU decomposition (possible with SuperLu and > SuperLU_dist, but ot with MUMPS) and call MatMatSolve afterwards (which is > only possible if L2 is a dense matrix - if my understanding of the > documentation is correct) > then the basis Z is used to project a rigidity matrix K ( ie compute or > define as a MatShell Z^T K Z ) > > Do you confirm that it is not a good option to use PETSc for this ? > Thanks a lot again for your advice and help > Natacha > > On Tue, Mar 13, 2018 at 10:14 PM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote: > For your purposes you should just use superlu or superlu_dist directly in > your code not through PETSc. > > Barry > > There is nothing to be gained by doing it through PETSc. > > This is not relevant for your use case but I have noted that the unneeded use > of MatGetOrdering() should be eliminated > https://bitbucket.org/petsc/petsc/issues/211/matgetordering-should-not-be-called-for > > > On Mar 13, 2018, at 7:04 AM, Natacha BEREUX <natacha.ber...@gmail.com> > > wrote: > > > > Hi Barry > > Thanks for your answer, > > I followed your suggestion (matrix type = MPIAIJ and superlu_dist on a > > single processor) but I still get the same problem. > > > > > > Rectangular matrices seem to be forbidden in MatGetOrdering(), whatever > > package is used for the LU decomposition > > > > Here is the output : > > ./ex12f -f data/constraints.bin -pc_factor_mat_solver_package superlu_dist > > -pc_type lu > > > > 9 33 9 33 1. 0.3E+02 0.3E+02 0. 0.7E+04 1. 0. > > [0]PETSC ERROR: --------------------- Error Message > > -------------------------------------------------------------- > > [0]PETSC ERROR: Invalid argument > > [0]PETSC ERROR: Must be square matrix, rows 33 columns 9 > > > > > > Should I call directly a factorization routine ? Instead of trying to > > build a preconditionner ? > > > > > > Best regards, > > Natacha > > > > > > On Mon, Mar 12, 2018 at 3:46 PM, Smith, Barry F. <bsm...@mcs.anl.gov> wrote: > > > > Create the matrix on one process but make it a MPIAIJ matrix (not SeqAIJ > > or AIJ) then you should be able to do the factorization with SuperLU_Dist > > > > Please let us know how it goes, > > > > Barry > > > > > > > On Mar 12, 2018, at 4:35 AM, Natacha BEREUX <natacha.ber...@gmail.com> > > > wrote: > > > > > > Dear Petsc user's > > > > > > I am trying to use SuperLU_dist to compute LU decomposition of a > > > non-square matrix. > > > > > > My purpose is to build a basis of the nullspace of a matrix C . This > > > matrix stores constraints (i.e. linear relationships between degrees of > > > freedom): it is thus rectangular (size 9 x 33) and not square > > > I need to get the L U factors of C^T which is a tall skinny matrix. > > > It is possible when using directly SuperLu or SuperLU_dist > > > But when I use Petsc interface to SuperLU I get the following error : > > > > > > [0]PETSC ERROR: Invalid argument > > > [0]PETSC ERROR: Must be square matrix, rows 9 columns 33 > > > [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html > > > for trouble shooting. > > > [0]PETSC ERROR: Petsc Release Version 3.8.3, Dec, 09, 2017 > > > [0]PETSC ERROR: #1 MatGetOrdering() line 243 in > > > /home/H03755/Librairies/petsc-3.8.3/src/mat/order/sorder.c > > > [0]PETSC ERROR: #2 PCSetUp_LU() line 84 in > > > /home/H03755/Librairies/petsc-3.8.3/src/ksp/pc/impls/factor/lu/lu.c > > > [0]PETSC ERROR: #3 PCSetUp() line 924 in > > > /home/H03755/Librairies/petsc-3.8.3/src/ksp/pc/interface/precon.c > > > [0]PETSC ERROR: #4 KSPSetUp() line 381 in > > > /home/H03755/Librairies/petsc-3.8.3/src/ksp/ksp/interface/itfunc.c > > > [0]PETSC ERROR: #5 KSPSolve() line 612 in > > > /home/H03755/Librairies/petsc-3.8.3/src/ksp/ksp/interface/itfunc.c > > > [0]PETSC ERROR: #6 User provided function() line 0 in User file > > > > > > The use of non-square matrices is forbidden. > > > > > > Is there a way to specify that I want to use a rectangular matrix ? How > > > can I proceed to call SuperLU through PETSc with a rectangular matrix ? > > > > > > Thanks a lot for your help > > > Best regards, > > > > > > Natacha > > > > > >