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
