Many thanks Barry !
It solved my problem, and my original question !!

I'm creating the matrix myself. On this projet, I'm begining to move the ddl to the associated DMPlex datas, allowing much more possibilities. But it's not done yet.

Sorry for messing up the threads of the list with my replied error.

Thanks again,

Yann


Le 2/9/2022 à 5:42 PM, Barry Smith a écrit :

It is odd that the columns are not sorted

row 125: (125, 0.)  (107, 0.)

How was this matrix created?

It is erroring because it compares the 125 column in the matrix to the 107 column requested and concludes there is no slot for 107 column.

Barry



On Feb 9, 2022, at 10:33 AM, Yann Jobic <yann.jo...@univ-amu.fr <mailto:yann.jo...@univ-amu.fr>> wrote:

I'm struggling for a very simple error that i can not see. I'm running in a sequential program, for the test.

MatView is giving me for the row 125 :
row 125: (125, 0.)  (107, 0.)

I'm getting those values with MatGetRow :
     row=125
     CALL MatGetRow(MATGLOB,row,nb,testcols,testvalues,IER)
     write(*,*)row,testcols(1),testvalues(1),
    &          testcols(2),testvalues(2)
     CALL MatRestoreRow(MATGLOB,row,nb,testcols,testvalues,IER)

The output is :
     125    125  0.000000000000000E+000     107    0.000000000000000E+000
Which is what i want. It's ok.

Then i'm doing the MatSetValue :
     val = -1
     row = 125
     col = 107
     CALL MatSetValue(MATGLOB,row,col,val,
    &                  INSERT_VALUES, IER)

And i've got the error :
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Argument out of range
[0]PETSC ERROR: New nonzero at (125,107) caused a malloc
Use MatSetOption(A, MAT_NEW_NONZERO_ALLOCATION_ERR, PETSC_FALSE) to turn off this check [0]PETSC ERROR: See https://petsc.org/release/faq/ <https://petsc.org/release/faq/> for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.16.4, unknown
[0]PETSC ERROR: /home/jobic/projet/fe-utils/marcus/3.16/test_MatSetValue_loem_3.16p4_openmpi_intel on a  named leto4.iusti-calcul.recherche by jobic Wed Feb  9 16:01:51 2022 [0]PETSC ERROR: Configure options --prefix=/local/lib/petsc/3.16/p4/17/openmpi_intel-mkl-works --with-single-library=0 --with-large-file-io=1 --with-debugging=0 --with-blacs=1 --with-blacs-dir=/opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/ --download-scalapack=1 --download-parmetis=1 --download-make=1 --download-mumps=1 --LIBS=" -Wl,-rpath,/opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/" --with-blaslapack-dir=/opt/intel/compilers_and_libraries_2017.1.132/linux/compiler/lib/intel64/ --download-metis=1 --download-parmetis=1 --download-ptscotch=1 --download-cmake=1 --download-slepc=1 --download-hdf5=1 --with-zlib=1 --download-szlib=1 --download-suitesparse=1 --download-p4est=1 --download-netcdf=1 --download-triangle=1 --with-shared-libraries=0 --with-cxx-dialect=C++11 -CFLAGS=" -O3 -mtune=core-avx2 -mkl" --COPTFLAGS="-D_POSIX_C_SOURCE=199309L" -CXXFLAGS=" -O3 -mtune=core-avx2 -mkl" -FFLAGS=" -O3 -mtune=core-avx2 -mkl" PETSC_ARCH=openmpi_intel-mkl-17-works [0]PETSC ERROR: #1 MatSetValues_SeqAIJ() at /home/devel/src_linux/petsc-3.16.4/src/mat/impls/aij/seq/aij.c:520 [0]PETSC ERROR: #2 MatSetValues() at /home/devel/src_linux/petsc-3.16.4/src/mat/interface/matrix.c:1398 [0]PETSC ERROR: #3 MatGetRow() at /home/devel/src_linux/petsc-3.16.4/src/mat/interface/matrix.c:558 [0]PETSC ERROR: #4 MatRestoreRow_Fortran() at /home/devel/src_linux/petsc-3.16.4/src/mat/interface/ftn-custom/zmatrixf.c:582

I'm obviously doing something wrong, but where ?

Thanks,

Yann

Le 2/9/2022 à 1:58 PM, Matthew Knepley a écrit :
On Wed, Feb 9, 2022 at 7:24 AM Bruno Rammon Silva Souza via petsc-users <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> <mailto:petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>>> wrote:
   Hello everyone,
   I am using the LBFGS type in the SNES solver, and it's working fine.
   But I want to change the number of stored updates in this method.
   This variable of quasi-newton methods is usually chosen by the
   runtime option: -snes_qn_m <m>. However, I would like to change this
   variable inside my code, when calling a function, for example, but I
   can't find any kind of PETSc function that changes this variable
   directly. Is there any function like this? If not, is there some way
   to do that without using -snes_qn_m <m> at runtime?
This is an oversight which we will fix. For now you can use
https://petsc.org/main/docs/manualpages/Sys/PetscOptionsSetValue.html <https://petsc.org/main/docs/manualpages/Sys/PetscOptionsSetValue.html> <https://petsc.org/main/docs/manualpages/Sys/PetscOptionsSetValue.html <https://petsc.org/main/docs/manualpages/Sys/PetscOptionsSetValue.html>>
in your code.
  Thanks,
     Matt
   Best regards,
   --     Bruno Souza
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <https://www.cse.buffalo.edu/~knepley/> <http://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>>

Reply via email to