[petsc-users] Fwd: Re: Problem with fortran version of ex29 in ksp
Matthew Knepley
knepley at gmail.com
Fri May 11 08:30:23 CDT 2012
On Fri, May 11, 2012 at 9:24 AM, TAY wee-beng <zonexo at gmail.com> wrote:
> Hi,
>
> I have been using the GUI environment to do debugging so I am a bit
> reluctant to learn Valgrind as its outputs seems a bit daunting. But I
> guess John is right. I've been spending these few days learning bit by bit.
>
> I realised that the error occurs in computerhs, at:
>
I bet this is a beautiful Fortranism. Do you include the F90 header file
with the interface definition?
If not, Fortran just craps out like this. I can't stress enough how much
time would be saved by
switching languages to something with at least a modicum of error checking.
Matt
> *call DMDAVecRestoreArrayF90(da,b,array,ierr)*
>
> ==27464== Invalid write of size 8
> ==27464== at 0x402835: computerhs_ (ex29f.F90:119)
> ==27464== Address 0xfffffffffffffef0 is not stack'd, malloc'd or
> (recently) free'd
> ==27464==
> [0]PETSC ERROR:
> ------------------------------------------------------------------------
> [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
> probably memory access out of range
> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
> [0]PETSC ERROR: or see
> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[0]PETSC
> ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to find
> memory corruption errors
> [0]PETSC ERROR: likely location of problem given in stack below
> [0]PETSC ERROR: --------------------- Stack Frames
> ------------------------------------
> [0]PETSC ERROR: Note: The EXACT line numbers in the stack are not
> available,
> [0]PETSC ERROR: INSTEAD the line number of the start of the function
> [0]PETSC ERROR: is given.
> [0]PETSC ERROR: [0] DM user function line 0 unknownunknown
> [0]PETSC ERROR: [0] DMComputeFunction line 2085
> /home/wtay/Codes/petsc-dev/src/dm/interface/dm.c
> [0]PETSC ERROR: [0] KSPSetUp line 182
> /home/wtay/Codes/petsc-dev/src/ksp/ksp/interface/itfunc.c
> [0]PETSC ERROR: --------------------- Error Message
> ------------------------------------
> [0]PETSC ERROR: Signal received!
>
> I have checked that "array" 's values are correct. This statement executed
> without problems in VS2008. If I replace the above with something like:
>
> *call VecSet(b,Hy,ierr)*
>
> Everything is fine in Linux.
>
> Is there something wrong with *DMDAVecRestoreArrayF90*?
>
> My code in the area is:
>
> call
> DMDAGetCorners(da,xs,ys,PETSC_NULL_INTEGER,xm,ym,PETSC_NULL_INTEGER,ierr)
>
> call DMDAVecGetArrayF90(da,b,array,ierr)
>
> do j = ys,ys+ym-1
>
> do i = xs,xs+xm-1
>
> array(i,j) = exp(-(i*Hx)*(i*Hx)/nu)*exp(-(j*Hy)*(j*Hy)/nu)*Hx*Hy
>
> end do
>
> end do
>
> call DMDAVecRestoreArrayF90(da,b,array,ierr)
>
> call VecAssemblyBegin(b,ierr)
>
> call VecAssemblyEnd(b,ierr)
>
>
> Yours sincerely,
>
> TAY wee-beng
>
>
> On 8/5/2012 9:41 PM, John Mousel wrote:
>
> TAY wee-bing,
>
> If you want to be a programmer that writes interesting and reliable code,
> you need to be willing to use the tools of the trade. I can't think of a
> bigger time-saver than Valgrind. I would suggest that you learn to use it
> and use it a lot. I bet it will lead you to the root of your problem pretty
> quickly.
>
> John
>
> On Tue, May 8, 2012 at 2:17 PM, TAY wee-beng <zonexo at gmail.com> wrote:
>
>> Hi,
>>
>> I compiled and run my code under visual studio 2008 with intel fortran.
>> Everything works ok.
>>
>> However, when I tried to run the code in linux, I got the error as below.
>> The error happens when KSPSetUp(ksp,ierr) is called.
>>
>> However, I am not able to print VecView or MatView to view if there's any
>> errors. Is there any recommendation for debugging? I hope I do not need to
>> valgrind if possible.
>>
>> [0]PETSC ERROR:
>> ------------------------------------------------------------------------
>> [0]PETSC ERROR: Caught signal number 11 SEGV: Segmentation Violation,
>> probably memory access out of range
>> [0]PETSC ERROR: Try option -start_in_debugger or -on_error_attach_debugger
>> [0]PETSC ERROR: or see
>> http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind[0]PETSC
>> ERROR: or try http://valgrind.org on GNU/linux and Apple Mac OS X to
>> find memory corruption errors
>> [0]PETSC ERROR: likely location of problem given in stack below
>> [0]PETSC ERROR: --------------------- Stack Frames
>> ------------------------------------
>> [0]PETSC ERROR: Note: The EXACT line numbers in the stack are not
>> available,
>> [0]PETSC ERROR: INSTEAD the line number of the start of the function
>> [0]PETSC ERROR: is given.
>> [0]PETSC ERROR: [0] DM user function line 0 unknownunknown
>> [0]PETSC ERROR: [0] DMComputeFunction line 2085
>> /home/wtay/Codes/petsc-dev/src/dm/interface/dm.c
>> [0]PETSC ERROR: [0] KSPSetUp line 182
>> /home/wtay/Codes/petsc-dev/src/ksp/ksp/interface/itfunc.c
>> [0]PETSC ERROR: --------------------- Error Message
>> ------------------------------------
>> [0]PETSC ERROR: Signal received!
>> [0]PETSC ERROR:
>> ------------------------------------------------------------------------
>> [0]PETSC ERROR: Petsc Development HG revision:
>> 7ecdd63ec420b1659b960e65d96e822c5ac1a968 HG Date: Mon May 07 21:42:26 2012
>> -0500
>> [0]PETSC ERROR: See docs/changes/index.html for recent updates.
>> [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
>> [0]PETSC ERROR: See docs/index.html for manual pages.
>> [0]PETSC ERROR:
>> ------------------------------------------------------------------------
>> [0]PETSC ERROR: ./ex29f on a petsc-3.2 named hpc12 by wtay Tue May 8
>> 20:45:42 2012
>> [0]PETSC ERROR: Libraries linked from
>> /home/wtay/Lib/petsc-3.2-dev_shared_debug/lib
>> [0]PETSC ERROR: Configure run at Tue May 8 10:47:59 2012
>> [0]PETSC ERROR: Configure options --with-mpi-dir=/opt/openmpi-1.5.3/
>> --with-blas-lapack-dir=/opt/intelcpro-11.1.059/mkl/lib/em64t/
>> --with-debugging=1 --download-hypre=1
>> --prefix=/home/wtay/Lib/petsc-3.2-dev_shared_debug --known-mpi-shared=1
>> --with-shared-libraries
>> [0]PETSC ERROR:
>> ------------------------------------------------------------------------
>> [0]PETSC ERROR: User provided function() line 0 in unknown directory
>> unknown file
>> --------------------------------------------------------------------------
>> MPI_ABORT was invoked on rank 0 in communicator MPI_COMM_WORLD
>> with errorcode 59.
>>
>> NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
>> You may or may not see output from other processes, depending on
>> exactly when Open MPI kills them.
>>
>> Yours sincerely,
>>
>> TAY wee-beng
>>
>>
>> On 5/5/2012 1:43 AM, Matthew Knepley wrote:
>>
>> On Fri, May 4, 2012 at 5:42 PM, TAY wee-beng <zonexo at gmail.com> wrote:
>>
>>> Hi,
>>>
>>> I wonder if you people are interested to include my ex29 fortran version
>>> in the petsc examples, which can help people who are using fortran.
>>>
>>
>> Yes, we will definitely include it. Please send the source, and a
>> representative output with run options.
>>
>> Thanks,
>>
>> Matt
>>
>>
>>> Thanks.
>>>
>>> Yours sincerely,
>>>
>>> TAY wee-beng
>>>
>>>
>>> On 4/5/2012 9:28 PM, Matthew Knepley wrote:
>>>
>>> On Fri, May 4, 2012 at 3:24 PM, TAY wee-beng <zonexo at gmail.com> wrote:
>>>
>>>>
>>>> On 4/5/2012 9:16 PM, Barry Smith wrote:
>>>>
>>>>> Do an hg pull and then run make in src/mat/interface/ftn-custom/
>>>>>
>>>>> Then it should link.
>>>>>
>>>>> Barry
>>>>>
>>>>> There was a E missing from the all caps name of the function.
>>>>>
>>>> After hg pull, I did:
>>>>
>>>> cd src//mat/interface/ftn-custom/
>>>>
>>>> User at User-PC /cygdrive/c/temp/petsc-dev/src/mat/interface/ftn-custom
>>>> $ make
>>>> make[1]: Warning: File
>>>> `/cygdrive/c/temp/petsc-dev/petsc-3.2-dev_win32_vs2008/lib/libpetsc.lib(zmatregf.o)'
>>>> has modification time 787 s in the future
>>>> make[1]: Nothing to be done for `libc'.
>>>> make[1]: warning: Clock skew detected. Your build may be incomplete.
>>>>
>>>> But it still can't work.
>>>>
>>>
>>> Something is messed up with the clock on this machine.
>>>
>>> HOWEVER, development requires certain basic skills in order to debug
>>> your work. We
>>> cannot be the ones debugging your code. Now
>>>
>>> nm $PETSC_ARCH/lib/libpetsc.a | grep -i MatNullSpaceRemove
>>>
>>> will look for the symbol.
>>>
>>> Matt
>>>
>>>
>>>>
>>>>>
>>>>> On May 4, 2012, at 2:11 PM, Matthew Knepley wrote:
>>>>>
>>>>> On Fri, May 4, 2012 at 3:01 PM, TAY wee-beng<zonexo at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> On 4/5/2012 5:17 PM, Matthew Knepley wrote:
>>>>>>
>>>>>>> On Fri, May 4, 2012 at 11:05 AM, TAY wee-beng<zonexo at gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> On 4/5/2012 3:05 PM, Matthew Knepley wrote:
>>>>>>>
>>>>>>>> On Fri, May 4, 2012 at 8:59 AM, TAY wee-beng<zonexo at gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Is there anything else I can try to get it working right?
>>>>>>>>
>>>>>>>> The MatGetNullSpaceRemove() is missing.
>>>>>>>>
>>>>>>> Where should I add MatGetNullSpaceRemove and what are its syntax? I
>>>>>>> googled but there's no results.
>>>>>>>
>>>>>>> Fixed in p;etsc-dev:
>>>>>>>
>>>>>>>
>>>>>>> http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Mat/MatNullSpaceRemove.html
>>>>>>>
>>>>>> I just compiled the updated petsc-dev but I got the same error msg
>>>>>> when I use:
>>>>>>
>>>>>> call MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr)
>>>>>>
>>>>>> error LNK2019: unresolved external symbol MATNULLSPACEREMOVE
>>>>>> referenced in function COMPUTERHS
>>>>>> 1>c:\obj_tmp\ex29f\Debug\ex29f.exe : fatal error LNK1120: 1
>>>>>> unresolved externals
>>>>>>
>>>>>> That function is in:
>>>>>>
>>>>>> src/mat/interface/ftn-custom/zmatrixf.c
>>>>>>
>>>>>> Did that compile? Can you see the symbol in libpetsc.a?
>>>>>>
>>>>>> Matt
>>>>>>
>>>>>> Matt
>>>>>>>
>>>>>>> Thanks.
>>>>>>>
>>>>>>>> Matt
>>>>>>>>
>>>>>>>> Thanks!
>>>>>>>>
>>>>>>>>
>>>>>>>> On 2/5/2012 10:11 PM, Matthew Knepley wrote:
>>>>>>>>
>>>>>>>>> On Wed, May 2, 2012 at 1:55 PM, TAY wee-beng<zonexo at gmail.com>
>>>>>>>>> wrote:
>>>>>>>>> Hi,
>>>>>>>>>
>>>>>>>>> I did a MatView and VecView on both C and Fortran, right after Mat
>>>>>>>>> and Vec assembly. I have attached the printout below. They are exactly the
>>>>>>>>> same, but yet the result is different in Neumann condition. However, the
>>>>>>>>> dirichlet condition gives the correct ans. Is there anything else that
>>>>>>>>> could be wrong even if the Mat and Vec are the same?
>>>>>>>>>
>>>>>>>>> Did you set the null space for the matrix when you have Neumann
>>>>>>>>> conditions?
>>>>>>>>>
>>>>>>>> Yes, for the matrix, I set as:
>>>>>>>>
>>>>>>>> call
>>>>>>>> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL_OBJECT,nullspace,ierr)
>>>>>>>>
>>>>>>>> call MatSetNullSpace(jac,nullspace,ierr)
>>>>>>>>
>>>>>>>> call MatNullSpaceDestroy(nullspace,ierr)
>>>>>>>>
>>>>>>>> for the Vec,
>>>>>>>>
>>>>>>>> call
>>>>>>>> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL_OBJECT,nullspace,ierr)
>>>>>>>>
>>>>>>>> !call MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr)
>>>>>>>>
>>>>>>>> call MatNullSpaceDestroy(nullspace,ierr)
>>>>>>>>
>>>>>>>> MatNullSpaceRemove was comment out because there's error during
>>>>>>>> linking
>>>>>>>>
>>>>>>>>
>>>>>>>> Matt
>>>>>>>>>
>>>>>>>>> Thanks!
>>>>>>>>>
>>>>>>>>> Fortran:
>>>>>>>>>
>>>>>>>>> Matrix Object: 1 MPI processes
>>>>>>>>> type: seqaij
>>>>>>>>> row 0: (0, 2) (1, -1) (3, -1)
>>>>>>>>> row 1: (0, -1) (1, 3) (2, -1) (4, -1)
>>>>>>>>> row 2: (1, -1) (2, 2) (5, -1)
>>>>>>>>> row 3: (0, -1) (3, 3) (4, -1) (6, -1)
>>>>>>>>> row 4: (1, -1) (3, -1) (4, 4) (5, -1) (7, -1)
>>>>>>>>> row 5: (2, -1) (4, -1) (5, 3) (8, -1)
>>>>>>>>> row 6: (3, -1) (6, 2) (7, -1)
>>>>>>>>> row 7: (4, -1) (6, -1) (7, 3) (8, -1)
>>>>>>>>> row 8: (5, -1) (7, -1) (8, 2)
>>>>>>>>> Vector Object:Vec_0000000084000000_0 1 MPI processes
>>>>>>>>> type: mpi
>>>>>>>>> Process [0]
>>>>>>>>> 0.25
>>>>>>>>> 0.0205213
>>>>>>>>> 1.135e-005
>>>>>>>>> 0.0205213
>>>>>>>>> 0.00168449
>>>>>>>>> 9.31663e-007
>>>>>>>>> 1.135e-005
>>>>>>>>> 9.31663e-007
>>>>>>>>> 5.15289e-010
>>>>>>>>> Vector Object:Vec_0000000084000000_1 1 MPI processes
>>>>>>>>> type: mpi
>>>>>>>>> Process [0]
>>>>>>>>> 0.14924
>>>>>>>>> 0.0242397
>>>>>>>>> -0.0260347
>>>>>>>>> 0.0242397
>>>>>>>>> -0.0256192
>>>>>>>>> -0.0400102
>>>>>>>>> -0.0260347
>>>>>>>>> -0.0400102
>>>>>>>>> -0.0400102
>>>>>>>>> Press any key to continue . . .
>>>>>>>>>
>>>>>>>>> C:
>>>>>>>>>
>>>>>>>>> Matrix Object: 1 MPI processes
>>>>>>>>> type: seqaij
>>>>>>>>> row 0: (0, 2) (1, -1) (3, -1)
>>>>>>>>> row 1: (0, -1) (1, 3) (2, -1) (4, -1)
>>>>>>>>> row 2: (1, -1) (2, 2) (5, -1)
>>>>>>>>> row 3: (0, -1) (3, 3) (4, -1) (6, -1)
>>>>>>>>> row 4: (1, -1) (3, -1) (4, 4) (5, -1) (7, -1)
>>>>>>>>> row 5: (2, -1) (4, -1) (5, 3) (8, -1)
>>>>>>>>> row 6: (3, -1) (6, 2) (7, -1)
>>>>>>>>> row 7: (4, -1) (6, -1) (7, 3) (8, -1)
>>>>>>>>> row 8: (5, -1) (7, -1) (8, 2)
>>>>>>>>> Vector Object:Vec_0x1d3b000_0 1 MPI processes
>>>>>>>>> type: mpi
>>>>>>>>> Process [0]
>>>>>>>>> 0.25
>>>>>>>>> 0.0205212
>>>>>>>>> 1.135e-05
>>>>>>>>> 0.0205212
>>>>>>>>> 0.00168449
>>>>>>>>> 9.31663e-07
>>>>>>>>> 1.135e-05
>>>>>>>>> 9.31663e-07
>>>>>>>>> 5.15288e-10
>>>>>>>>> Vector Object:Vec_0x1d3b000_1 1 MPI processes
>>>>>>>>> type: mpi
>>>>>>>>> Process [0]
>>>>>>>>> 0.139311
>>>>>>>>> 0.0305751
>>>>>>>>> -0.0220633
>>>>>>>>> 0.0305751
>>>>>>>>> -0.0135158
>>>>>>>>> -0.042185
>>>>>>>>> -0.0220633
>>>>>>>>> -0.042185
>>>>>>>>> -0.058449
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Yours sincerely,
>>>>>>>>>
>>>>>>>>> TAY wee-beng
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 1/5/2012 11:54 PM, Matthew Knepley wrote:
>>>>>>>>>
>>>>>>>>>> On Tue, May 1, 2012 at 5:48 PM, TAY wee-beng<zonexo at gmail.com>
>>>>>>>>>> wrote:
>>>>>>>>>> Hi,
>>>>>>>>>>
>>>>>>>>>> Do you mean my method is wrong?
>>>>>>>>>>
>>>>>>>>>> I am following the template of ex22f,
>>>>>>>>>>
>>>>>>>>>> where the variables are declared as :
>>>>>>>>>>
>>>>>>>>>> PetscScalar v(5)
>>>>>>>>>>
>>>>>>>>>> MatStencil row(4),col(4,5)
>>>>>>>>>>
>>>>>>>>>> Hence,
>>>>>>>>>>
>>>>>>>>>> for the neumann BC
>>>>>>>>>>
>>>>>>>>>> num = 1
>>>>>>>>>>
>>>>>>>>>> if (j/=0) then
>>>>>>>>>>
>>>>>>>>>> v(num) = -rho*HxdHy
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_i,num) = i
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_j,num) = j-1
>>>>>>>>>>
>>>>>>>>>> num = num + 1
>>>>>>>>>>
>>>>>>>>>> end if
>>>>>>>>>>
>>>>>>>>>> if (i/=0) then
>>>>>>>>>>
>>>>>>>>>> v(num) = -rho*HydHx
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_i,num) = i-1
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_j,num) = j
>>>>>>>>>>
>>>>>>>>>> num = num + 1
>>>>>>>>>>
>>>>>>>>>> end if
>>>>>>>>>>
>>>>>>>>>> if (i/=mx-1) then
>>>>>>>>>>
>>>>>>>>>> v(num) = -rho*HydHx
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_i,num) = i+1
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_j,num) = j
>>>>>>>>>>
>>>>>>>>>> num = num + 1
>>>>>>>>>>
>>>>>>>>>> end if
>>>>>>>>>>
>>>>>>>>>> if (j/=my-1) then
>>>>>>>>>>
>>>>>>>>>> v(num) = -rho*HxdHy
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_i,num) = i
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_j,num) = j+1
>>>>>>>>>>
>>>>>>>>>> num = num + 1
>>>>>>>>>>
>>>>>>>>>> end if
>>>>>>>>>>
>>>>>>>>>> v(num) = ((num-1)/2.0)*rho*(HxdHy + HydHx)
>>>>>>>>>>
>>>>>>>>>> print *, v
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_i,num) = i
>>>>>>>>>>
>>>>>>>>>> col(MatStencil_j,num) = j
>>>>>>>>>>
>>>>>>>>>> !num = num + 1
>>>>>>>>>>
>>>>>>>>>> call
>>>>>>>>>> MatSetValuesStencil(jac,i1,row,num,col,v,INSERT_VALUES,ierr)
>>>>>>>>>>
>>>>>>>>>> I do not get any more out of range error. However,my ans is still
>>>>>>>>>> different from that of ex29 in C.
>>>>>>>>>>
>>>>>>>>>> This is very simple. You have an error in your code. Checking it
>>>>>>>>>> is very simple: run the code and
>>>>>>>>>> break in MatSetValues(). Make sure ex29 makes calls with exactly
>>>>>>>>>> the same indices as your ex29f.
>>>>>>>>>>
>>>>>>>>>> Matt
>>>>>>>>>>
>>>>>>>>>> Yours sincerely,
>>>>>>>>>>
>>>>>>>>>> TAY wee-beng
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> 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
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> 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
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> 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
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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
>>>>>>
>>>>>
>>>
>>>
>>> --
>>> 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
>>>
>>>
>>
>>
>> --
>> 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
>>
>>
>
--
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120511/b021ea4a/attachment-0001.htm>
More information about the petsc-users
mailing list