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

TAY wee-beng zonexo at gmail.com
Fri May 4 14:24:44 CDT 2012


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.

>
>
> 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


More information about the petsc-users mailing list