The error indicates not enough nonzero blocks are preallocated for. Try something really simple, preallocate for one block and put in one block then call MatAssemblyBegin/End(), MatView(), if that works then work up to your full problem.
Barry > On Nov 3, 2022, at 3:11 PM, Edoardo alinovi <[email protected]> wrote: > > Just to give a bit more of context I am doing like this: > > call MatCreate(PETSC_COMM_WORLD, this%A, ierr) > > call MatSetSizes(this%A, lm, lm, M, M, ierr) ! lm is the local size > of the matrix , M the global one > > call MatSetType(this%A, myType, ierr) ! myType is MATMPIBAIJ > > call MatSetBlockSize(this%A, 4-bdim, ierr) ! 4-bdim is equal to 3 in > this case > > call MatMPIBAIJSetPreallocation(this%A, 4-bdim, flubioSolvers%d_nz, > mesh%d_nnz, flubioSolvers%o_nz, mesh%o_nnz, ierr) ! d_nnz and o_nnz is the > number of diagonal and off diagonal non zero blocks > > call MatSetUp(this%A, ierr) > > ... some non relevant code ..... > > call MatSetValuesBlocked(this%A, 4-bdim, > mesh%cellGlobalAddr(iElement)-1, 4-bdim, mesh%cellGlobalAddr(iElement)-1, > blockValues, INSERT_VALUES, ierr) mesh%cellGlobalAddr(iElement)-1 is an > integer equal (not an array) to the block element number the block matrix > blockValues (3x3) belongs to. > > Any evident errors? > > > >
