<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Jed,<br>
    <br>
    It's getting even stranger. <br>
    <br>
    When I run this code under linux I've got error:<br>
    <br>
    [0]PETSC ERROR: --------------------- Error Message
    ------------------------------------<br>
    [0]PETSC ERROR: Argument out of range!<br>
    [0]PETSC ERROR: nnz cannot be greater than row length: local row 98
    value 1455203639 rowlength 343!<br>
    [0]PETSC ERROR:
    ------------------------------------------------------------------------<br>
    [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 7, Mon Dec 20
    14:26:37 CST 2010<br>
    [0]PETSC ERROR: See docs/changes/index.html for recent updates.<br>
    [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.<br>
    [0]PETSC ERROR: See docs/index.html for manual pages.<br>
    [0]PETSC ERROR:
    ------------------------------------------------------------------------<br>
    [0]PETSC ERROR:
    /home/mt/agrayver/mt-soft/multiem/INV3D/_tiger/em_model on a
    openmpi-i named glic by agrayver Mon Mar  7 14:49:43 2011<br>
    [0]PETSC ERROR: Libraries linked from
/panfs/panfs.gfz-hpcc.cluster/home/mt/agrayver/lib/petsc-3.1-p7/openmpi-intel-complex-debug/lib<br>
    [0]PETSC ERROR: Configure run at Fri Mar  4 12:43:58 2011<br>
    [0]PETSC ERROR: Configure options
    --with-petsc-arch=openmpi-intel-complex-debug
    --with-mpi-dir=/opt/mpi/intel/openmpi-1.4.2
    --with-scalar-type=complex
    --with-blas-lapack-dir=/opt/intel/Compiler/11.1/072/mkl/lib/em64t
    --with-precision=double --with-x=0<br>
    [0]PETSC ERROR:
    ------------------------------------------------------------------------<br>
    [0]PETSC ERROR: MatSeqAIJSetPreallocation_SeqAIJ() line 3003 in
    src/mat/impls/aij/seq/aij.c<br>
    [0]PETSC ERROR: MatCreateSeqAIJ() line 2906 in
    src/mat/impls/aij/seq/aij.c<br>
    <br>
    <br>
    Then I traced it under debugger both on Windows and Linux and
    realized that it doesn't crash under Windows only by luck. <br>
    <br>
    The call stack if the folowing:<br>
    [C] MatSeqAIJSetPreallocation_SeqAIJ, FP=7fffb4513880<br>
    [C] MatCreateSeqAIJ,     FP=7fffb4513900<br>
    [C] matcreateseqaij_,    FP=7fffb4513960<br>
    [F90] MODELING_MOD`modeling, FP=7fffb4517740<br>
    <br>
    As far as I understand after debugging the problem is that nnz in
    MatSeqAIJSetPreallocation isn't 0 and I go through this code:<br>
       if (nnz) {<br>
         for (i=0; i&lt;B-&gt;rmap-&gt;n; i++) {<br>
           if (nnz[i] &lt; 0) SETERRQ2(PETSC_ERR_ARG_OUTOFRANGE,"nnz
    cannot be less than 0: local row %d value %d",i,nnz[i]);<br>
           if (nnz[i] &gt; B-&gt;cmap-&gt;n)
    SETERRQ3(PETSC_ERR_ARG_OUTOFRANGE,"nnz cannot be greater than row
    length: local row %d value %d rowlength
    %d",i,nnz[i],B-&gt;cmap-&gt;n);<br>
         }<br>
       }<br>
    <br>
    But why is nnz nonzero? I passed PETSC_NULL. It seems like macros
    CHKFORTRANNULLINTEGER  in matcreateseqaij_ should set it to zero,
    but it doesn't. <br>
    <br>
    Thanks. <br>
    <br>
    On 06.03.2011 16:49, Jed Brown wrote:
    <blockquote
      cite="mid:AANLkTikEWhSpbJ9j_82ABJMY8pLhmSoTCeHzm5mQRcsa@mail.gmail.com"
      type="cite">
      <div class="gmail_quote">On Sun, Mar 6, 2011 at 07:39, Alexander
        Grayver <span dir="ltr">&lt;<a moz-do-not-send="true"
            href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>&gt;</span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          Hello,<br>
          <br>
          I'm newbie in PETSc.<br>
          <br>
          I use PETSc from FORTRAN under Windows, my build configuration
          is:<br>
          Configure options: --with-cc="win32fe cl" --with-fc="win32fe
          ifort" --with-cxx="win32fe cl" --with-windows-graphics=0
          --download-f-blas-lapack=1 --with-precision=double
          --with-scalar-type=complex --with-clanguage=cxx
          --with-mpi-include=/cygdrive/d/Dev/HPC_2008_SDK/Include
          --with-mpi-lib="[/cygdrive/d/Dev/HPC_2008_SDK/Lib/amd64/msmpi.lib,/cygdrive/d/Dev/HPC_2008_SDK/Lib/amd64/msmpifec.lib]"
          --with-shared=0 --with-debugging=0 --with-fortran-kernels=1
          --useThreads=0<br>
          <br>
          I wrote this code:<br>
          <br>
                           call MatCreateSeqAIJ(PETSC_COMM_SELF, n, m,
          2, PETSC_NULL, Gmat, ierr)<br>
                           CHKERRQ(ierr)<br>
          <br>
                           call cpu_time(timetest(1))<br>
          <br>
                           do irow=1,UBOUND(G, dim=1)<br>
                             call MatSetValue(Gmat, ir(i)-1, ic(i)-1,
          G(irow),e INSERT_VALUES, ierr)<br>
                           enddo<br>
          <br>
                           call cpu_time(timetest(2))<br>
                           write(*,*) 'Time of setting matrix G was ',
          timetest(2) - timetest(1), ' seconds'<br>
          <br>
                           call
          MatAssemblyBegin(Gmat,MAT_FINAL_ASSEMBLY,ierr)<br>
                           call
          MatAssemblyEnd(Gmat,MAT_FINAL_ASSEMBLY,ierr)<br>
        </blockquote>
        <div><br>
        </div>
        <div>Are you sure this is how your code looks, in particular
          that there is no MatAssembly before setting the values. Could
          you send the whole file.</div>
        <div><br>
        </div>
        <div>If you are familiar with debuggers, you could call</div>
        <div><br>
        </div>
        <div>MatSetOption(Gmat,MAT_NEW_NONZERO_ALLOCATION_ERR,PETSC_TRUE,ierr)</div>
        <div><br>
        </div>
        <div>and then run with -start_in_debugger to find the first
          insertion that was not preallocated.</div>
        <div><br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>