# [petsc-users] Problem solving Ax=b with rectangular matrix A

fujisan fujisan43 at gmail.com
Wed Sep 21 03:03:39 CDT 2022

```I'm trying to solve Ax=b with a sparse rectangular matrix A (of size 33x17
in my test) using
options '-ksp_type stcg -pc_type lu' on 1 or 2 cpus.

And I always get an error saying "Incompatible vector local lengths" (see
below).

Here is the relevant lines of my code:

program test
...
! Variable declarations

PetscCallA(PetscInitialize(PETSC_NULL_CHARACTER,ierr))

PetscCall(MatCreate(PETSC_COMM_WORLD,A,ierr))
PetscCall(MatSetSizes(A,PETSC_DECIDE,PETSC_DECIDE,m,n,ierr))
PetscCall(MatSetType(A,MATMPIAIJ,ierr))
PetscCall(MatSetFromOptions(A,ierr))
PetscCall(MatSetUp(A,ierr))
PetscCall(MatGetOwnershipRange(A,istart,iend,ierr))

do irow=istart,iend-1
...
enddo

PetscCall(MatAssemblyBegin(A,MAT_FINAL_ASSEMBLY,ierr))
PetscCall(MatAssemblyEnd(A,MAT_FINAL_ASSEMBLY,ierr))

! Creating vectors x and b
PetscCallA(MatCreateVecs(A,x,b,ierr))

! Duplicating x in u.
PetscCallA(VecDuplicate(x,u,ierr))

! u is used to calculate b
PetscCallA(VecSet(u,1.0,ierr))

PetscCallA(VecAssemblyBegin(u,ierr))
PetscCallA(VecAssemblyEnd(u,ierr))

! Calculating Au = b
PetscCallA(MatMult(A,u,b,ierr)) ! A.u = b

PetscCallA(KSPSetType(ksp,KSPCG,ierr))

PetscCallA(KSPSetOperators(ksp,A,A,ierr))

PetscCallA(KSPSetFromOptions(ksp,ierr))

! Solving Ax = b, x unknown
PetscCallA(KSPSolve(ksp,b,x,ierr))

PetscCallA(VecDestroy(x,ierr))
PetscCallA(VecDestroy(u,ierr))
PetscCallA(VecDestroy(b,ierr))
PetscCallA(MatDestroy(A,ierr))
PetscCallA(KSPDestroy(ksp,ierr))

call PetscFinalize(ierr)
end program

The code reads a sparse matrix from a binary file.
I also output the sizes of matrix A and vectors b, x, u.
They all seem consistent.

What am I doing wrong?
Is it possible to solve Ax=b with A rectangular?

Have a nice day.

Fuji

Matrix size : m=          33  n=          17  cpu size:            1
Size of matrix A  :           33          17
Size of vector b :           33
Size of vector x :           17
Size of vector u :           17
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR: Arguments are incompatible
[0]PETSC ERROR: Incompatible vector local lengths parameter # 1 local size
33 != parameter # 2 local size 17
[0]PETSC ERROR: See https://petsc.org/release/faq/ for trouble shooting.
[0]PETSC ERROR: Petsc Development GIT revision: v3.17.4-1341-g91b2b62a00
GIT Date: 2022-09-15 19:26:07 +0000
[0]PETSC ERROR: ./bin/solve on a x86_64 named master by fujisan Tue Sep 20
16:56:37 2022
[0]PETSC ERROR: Configure options --with-petsc-arch=x86_64 --COPTFLAGS="-g
-O3" --FOPTFLAGS="-g -O3" --CXXOPTFLAGS="-g -O3" --with-debugging=0
--with-cc=mpiicc --with-cxx=mpiicpc --with-fc=mpiifort
--with-single-library=1 --with-mpiexec=mpiexec --with-precision=double
--with-fortran-interfaces=1 --with-make=1 --with-mpi=1
PETSC_ARCH=x86_64
[0]PETSC ERROR: #1 VecCopy() at
/data/softs/petsc/src/vec/vec/interface/vector.c:1607
[0]PETSC ERROR: #2 KSPSolve_BiCG() at
/data/softs/petsc/src/ksp/ksp/impls/bicg/bicg.c:40
[0]PETSC ERROR: #3 KSPSolve_Private() at
/data/softs/petsc/src/ksp/ksp/interface/itfunc.c:877
[0]PETSC ERROR: #4 KSPSolve() at
/data/softs/petsc/src/ksp/ksp/interface/itfunc.c:1048
[0]PETSC ERROR: #5 solve.F90:218
Abort(75) on node 0 (rank 0 in comm 16): application called
MPI_Abort(MPI_COMM_SELF, 75) - process 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220921/7dd7cfe8/attachment.html>
```