[petsc-users] Fwd: Re: Problem with fortran version of ex29 in ksp

Matthew Knepley knepley at gmail.com
Fri May 11 09:02:57 CDT 2012


On Fri, May 11, 2012 at 9:51 AM, TAY wee-beng <zonexo at gmail.com> wrote:

>
>
> On 11/5/2012 3:30 PM, Matthew Knepley wrote:
>
> 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.
>
>
http://www.mcs.anl.gov/petsc/petsc-dev/docs/manualpages/Sys/UsingFortran.html

You need both

#include "finclude/petsc.h"
#include "finclude/petsc.h90"

    Matt


> I initially used:
>
> #include "finclude/petsc.h90"
>
> Compilation and linking was fine in Linux and vs2008.
>
> Now I changed it to what ex22.F was using :
>
> #include <finclude/petscsys.h>
> #include <finclude/petscvec.h>
> #include <finclude/petscmat.h>
> #include <finclude/petscpc.h>
> #include <finclude/petscksp.h>
> #include <finclude/petscdmda.h>
>
> Compiling was ok but linking failed in Linux and VS2008:
>
> undefined reference to `dmdavecgetarrayf90_'
>
> I tried changing #include <finclude/petscdmda.h> to #include
> <finclude/petscdmda.h90> and everything was ok in VS2008 again, giving the
> right answers.
>
> However, in Linux, I got the following error:
>
> [wtay at hpc12:tutorials]$ /opt/openmpi-1.5.3/bin/mpif90 -c  -fPIC -g
> -I/home/wtay/Lib/petsc-3.2-dev_shared_debug/include
> -I/home/wtay/Lib/petsc-3.2-dev_shared_debug/include
> -I/opt/openmpi-1.5.3/include    -o ex29f.o ex29f.F90
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDABoundaryType :: pt
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDAStencilType  :: st
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDABoundaryType :: pt
> --------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDAStencilType  :: st
> --------^
> ex29f.F90(68): error #6404: This name does not have a type, and must have
> an explicit type.   [DMDA_BOUNDARY_NONE]
> call
> DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,i3,i3,PETSC_DECIDE,PETSC_DECIDE,i1,i1,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)
> -----------------------------------^
> ex29f.F90(68): error #6404: This name does not have a type, and must have
> an explicit type.   [DMDA_STENCIL_STAR]
> call
> DMDACreate2d(PETSC_COMM_WORLD,DMDA_BOUNDARY_NONE,DMDA_BOUNDARY_NONE,DMDA_STENCIL_STAR,i3,i3,PETSC_DECIDE,PETSC_DECIDE,i1,i1,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,da,ierr)
> -------------------------------------------------------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDABoundaryType :: pt
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDAStencilType  :: st
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDABoundaryType :: pt
> --------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDAStencilType  :: st
> --------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDABoundaryType :: pt
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #5082: Syntax error, found '::' when expecting one of: ( % : . = =>
>         DMDAStencilType  :: st
> -------------------------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(25):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDABoundaryType :: pt
> --------^
> /home/wtay/Lib/petsc-3.2-dev_shared_debug/include/finclude/ftn-custom/petscdmda.h90(26):
> error #6590: This statement is not permitted as a statement within a
> derived-type-def
>         DMDAStencilType  :: st
>
> Is there some errors in petscdmda.h90?
>
>
>
>     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
>
>


-- 
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/60e852c2/attachment-0001.htm>


More information about the petsc-users mailing list