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

Matthew Knepley knepley at gmail.com
Fri May 4 18:43:43 CDT 2012


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120504/0f28dd9e/attachment-0001.htm>


More information about the petsc-users mailing list