On Tue, Apr 24, 2012 at 4:57 PM, TAY wee-beng <zonexo at gmail.com> wrote:
> Hi, > > I still got the same error the moment this subroutine is called, after > changing to : > > call > MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,PETSC_NULL_OBJECT,nullspace,ierr) > Argument 3 should be 0. Matt > [0]PETSC ERROR: Null argument, when expecting valid pointer! > [0]PETSC ERROR: Null Object: Parameter # 4! > [0]PETSC ERROR: > ---------------------------------------------------------------- > -------- > [0]PETSC ERROR: Petsc Development HG revision: > fc934c1d84bc6ba8e2686702a8a99539d > 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named > USER-PC by > User Tue Apr 24 22:54:50 2012 > [0]PETSC ERROR: Libraries linked from > /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 > /lib > [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 > [0]PETSC ERROR: Configure options --with-cc="win32fe cl" > --with-fc="win32fe ifor > t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ > --download-f-b > las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 > --with-debuggin > g=1 --useThreads=0 > [0]PETSC ERROR: > ---------------------------------------------------------------- > -------- > [0]PETSC ERROR: MatNullSpaceCreate() line 250 in > src/mat/interface/C:\temp\PETSC > -~1\src\mat\INTERF~1\matnull.c > > Yours sincerely, > > TAY wee-beng > > > On 24/4/2012 10:37 PM, Matthew Knepley wrote: > > On Tue, Apr 24, 2012 at 4:32 PM, TAY wee-beng <zonexo at gmail.com> wrote: > >> Hi, >> >> I'm trying to rewrite ex29 (KSP^Laplacian, 2d) from c to fortran version. >> The fortran version is based on the template of ex22f, which is in 3d. >> >> I have attached the code below. I have 2 problems. >> >> 1. When i3 = -3, in dirichlet BC, I got the same answer as ex29 in c >> version. >> >> However, when I change i3 to -4, I got the following error: >> >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Argument out of range! >> [0]PETSC ERROR: New nonzero at (9,1) caused a malloc! >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: Petsc Development HG revision: >> fc934c1d84bc6ba8e2686702a8a99539d >> 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named >> USER-PC by >> User Tue Apr 24 22:08:46 2012 >> [0]PETSC ERROR: Libraries linked from >> /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> /lib >> [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 >> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" >> --with-fc="win32fe ifor >> t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ >> --download-f-b >> las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> --with-debuggin >> g=1 --useThreads=0 >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: MatSetValues_SeqAIJ() line 331 in >> src/mat/impls/aij/seq/C:\temp\ >> PETSC-~1\src\mat\impls\aij\seq\aij.c >> [0]PETSC ERROR: MatSetValues() line 1148 in >> src/mat/interface/C:\temp\PETSC-~1\s >> rc\mat\INTERF~1\matrix.c >> [0]PETSC ERROR: MatSetValuesLocal() line 2003 in >> src/mat/interface/C:\temp\PETSC >> -~1\src\mat\INTERF~1\matrix.c >> [0]PETSC ERROR: MatSetValuesStencil() line 1379 in >> src/mat/interface/C:\temp\PET >> SC-~1\src\mat\INTERF~1\matrix.c >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Argument out of range! >> [0]PETSC ERROR: New nonzero at (10,2) caused a malloc! >> >> ... >> >> What did I do wrong? >> >> >> 2. When I wanted to use the neumann BC, following ex29, I added : >> >> In subroutine ComputeRHS >> >> call >> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,nullspace,ierr) >> >> call MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr) >> >> call MatNullSpaceDestroy(nullspace,ierr) >> >> and in subroutine ComputeMatrix >> >> call >> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,nullspace,ierr) >> >> call MatSetNullSpace(jac,nullspace,ierr) >> >> call MatNullSpaceDestroy(nullspace,ierr) >> >> When I compile, it says unresolved external symbol MatNullSpaceRemove. >> Removing MatNullSpaceRemove, I can compile but running gives the error: >> >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Corrupt argument: >> see http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind! >> [0]PETSC ERROR: Invalid Pointer to Object: Parameter # 4! >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: Petsc Development HG revision: >> fc934c1d84bc6ba8e2686702a8a99539d >> 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named >> USER-PC by >> User Tue Apr 24 22:30:31 2012 >> [0]PETSC ERROR: Libraries linked from >> /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> /lib >> [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 >> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" >> --with-fc="win32fe ifor >> t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ >> --download-f-b >> las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> --with-debuggin >> g=1 --useThreads=0 >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: MatNullSpaceCreate() line 250 in >> src/mat/interface/C:\temp\PETSC >> -~1\src\mat\INTERF~1\matnull.c >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Invalid argument! >> [0]PETSC ERROR: Wrong type of object: Parameter # 1! >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: Petsc Development HG revision: >> fc934c1d84bc6ba8e2686702a8a99539d >> 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named >> USER-PC by >> User Tue Apr 24 22:30:31 2012 >> [0]PETSC ERROR: Libraries linked from >> /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> /lib >> [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 >> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" >> --with-fc="win32fe ifor >> t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ >> --download-f-b >> las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> --with-debuggin >> g=1 --useThreads=0 >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: MatNullSpaceDestroy() line 305 in >> src/mat/interface/C:\temp\PETS >> C-~1\src\mat\INTERF~1\matnull.c >> [0]PETSC ERROR: ourdmfunction() line 30 in >> src/dm/interface/ftn-custom/C:\temp\P >> ETSC-~1\src\dm\INTERF~1\FTN-CU~1\zdmf.c >> [0]PETSC ERROR: DMComputeFunction() line 1783 in >> src/dm/interface/C:\temp\PETSC- >> ~1\src\dm\INTERF~1\dm.c >> [0]PETSC ERROR: KSPSetUp() line 218 in >> src/ksp/ksp/interface/C:\temp\PETSC-~1\sr >> c\ksp\ksp\INTERF~1\itfunc.c >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Corrupt argument: >> see http://www.mcs.anl.gov/petsc/documentation/faq.html#valgrind! >> [0]PETSC ERROR: Invalid Pointer to Object: Parameter # 4! >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: Petsc Development HG revision: >> fc934c1d84bc6ba8e2686702a8a99539d >> 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named >> USER-PC by >> User Tue Apr 24 22:30:31 2012 >> [0]PETSC ERROR: Libraries linked from >> /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> /lib >> [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 >> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" >> --with-fc="win32fe ifor >> t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ >> --download-f-b >> las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> --with-debuggin >> g=1 --useThreads=0 >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: MatNullSpaceCreate() line 250 in >> src/mat/interface/C:\temp\PETSC >> -~1\src\mat\INTERF~1\matnull.c >> [0]PETSC ERROR: --------------------- Error Message >> ---------------------------- >> -------- >> [0]PETSC ERROR: Invalid argument! >> [0]PETSC ERROR: Wrong type of object: Parameter # 1! >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: Petsc Development HG revision: >> fc934c1d84bc6ba8e2686702a8a99539d >> 50af122 HG Date: Mon Apr 23 11:39:32 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: c:\obj_tmp\ex29f\Debug\ex29f.exe on a petsc-3.2 named >> USER-PC by >> User Tue Apr 24 22:30:31 2012 >> [0]PETSC ERROR: Libraries linked from >> /cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> /lib >> [0]PETSC ERROR: Configure run at Mon Apr 23 21:45:20 2012 >> [0]PETSC ERROR: Configure options --with-cc="win32fe cl" >> --with-fc="win32fe ifor >> t" --with-cxx="win32fe cl" --with-mpi-dir=/cygdrive/d/Lib/MPICH2/ >> --download-f-b >> las-lapack=1 --prefix=/cygdrive/d/Lib/petsc-3.2-dev_win32_vs2008 >> --with-debuggin >> g=1 --useThreads=0 >> [0]PETSC ERROR: >> ---------------------------------------------------------------- >> -------- >> [0]PETSC ERROR: MatNullSpaceDestroy() line 305 in >> src/mat/interface/C:\temp\PETS >> C-~1\src\mat\INTERF~1\matnull.c >> [0]PETSC ERROR: ourdmfunction() line 30 in >> src/dm/interface/ftn-custom/C:\temp\P >> ETSC-~1\src\dm\INTERF~1\FTN-CU~1\zdmf.c >> [0]PETSC ERROR: DMComputeFunction() line 1783 in >> src/dm/interface/C:\temp\PETSC- >> ~1\src\dm\INTERF~1\dm.c >> [0]PETSC ERROR: KSPSetUp() line 218 in >> src/ksp/ksp/interface/C:\temp\PETSC-~1\sr >> c\ksp\ksp\INTERF~1\itfunc.c >> [0]PETSC ERROR: KSPSolve() line 402 in >> src/ksp/ksp/interface/C:\temp\PETSC-~1\sr >> c\ksp\ksp\INTERF~1\itfunc.c >> Vector Object:Vec_0000000084000000_0 1 MPI processes >> type: mpi >> Process [0] >> >> What's wrong? >> >> >> *program ex29f* >> >> implicit none >> >> ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >> ! Include files >> ! - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >> ! >> ! petscsys.h - base PETSc routines petscvec.h - vectors >> ! petscmat.h - matrices >> ! petscksp.h - Krylov subspace methods petscpc.h - >> preconditioners >> >> #include "finclude/petsc.h90" >> >> PetscErrorCode ierr >> >> DM da >> >> KSP ksp >> >> Vec x >> >> external ComputeRHS,ComputeMatrix >> >> PetscInt i1,i3 >> >> call PetscInitialize(PETSC_NULL_CHARACTER,ierr) >> >> i3 = -4 >> >> i1 = 1 >> >> call KSPCreate(MPI_COMM_WORLD,ksp,ierr) >> >> 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) >> call DMSetFunction(da,ComputeRHS,ierr) >> call DMSetJacobian(da,ComputeMatrix,ierr) >> call KSPSetDM(ksp,da,ierr) >> >> call KSPSetFromOptions(ksp,ierr) >> call KSPSetUp(ksp,ierr) >> call KSPSolve(ksp,PETSC_NULL_OBJECT,PETSC_NULL_OBJECT,ierr) >> call KSPGetSolution(ksp,x,ierr) >> call VecView(x,PETSC_VIEWER_STDOUT_WORLD,ierr) >> call KSPDestroy(ksp,ierr) >> call DMDestroy(da,ierr) >> call PetscFinalize(ierr) >> >> end program ex29f >> >> subroutine ComputeRHS(da,x,b,ierr) >> >> implicit none >> >> #include "finclude/petsc.h90" >> >> PetscErrorCode ierr >> PetscInt i,j,mx,my,xm,ym,xs,ys >> PetscScalar h,nu,rho >> PetscScalar Hx,Hy >> PetscScalar,pointer :: array(:,:) >> Vec x,b >> DM da >> MatNullSpace nullspace !>neumann BC >> >> nu = 0.1 >> >> call >> DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,my,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr) >> >> Hx = 1.d0 / (mx-1) >> >> Hy = 1.d0 / (my-1) >> >> 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) >> >> !call >> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,nullspace,ierr) >> > > 4th argument should be PETSC_NULL_OBJECT. > > Matt > > >> !call MatNullSpaceRemove(nullspace,b,PETSC_NULL,ierr) >> >> !call MatNullSpaceDestroy(nullspace,ierr) >> >> end subroutine ComputeRHS >> >> >> subroutine ComputeMatrix(da,x,JJ,jac,str,ierr) >> >> implicit none >> >> #include "finclude/petsc.h90" >> >> Mat jac,JJ >> >> PetscErrorCode ierr >> >> DM da >> >> PetscInt i,j,k,mx,my,xm >> >> PetscInt ym,xs,ys,i1,i5 >> >> PetscScalar v(5),Hx,Hy,rho,centerRho >> >> PetscScalar HydHx >> >> PetscScalar HxdHy >> >> MatStencil row(4),col(4,5) >> >> Vec x >> >> MatStructure str >> >> MatNullSpace nullspace !>neumann BC >> >> rho = 1.0 >> >> i1 = 1 >> >> i5 = 5 >> >> centerRho = rho >> >> call >> DMDAGetInfo(da,PETSC_NULL_INTEGER,mx,my,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,ierr) >> >> Hx = 1.d0 / (mx-1) >> >> Hy = 1.d0 / (my-1) >> >> HxdHy = Hx/Hy >> >> HydHx = Hy/Hx >> >> call >> DMDAGetCorners(da,xs,ys,PETSC_NULL_INTEGER,xm,ym,PETSC_NULL_INTEGER,ierr) >> >> >> do j=ys,ys+ym-1 >> >> do i=xs,xs+xm-1 >> >> row(MatStencil_i) = i >> >> row(MatStencil_j) = j >> >> call ComputeRho(i,j,mx,my,centerRho,rho) >> >> if (i.eq.0 .or. j.eq.0 .or. i.eq.mx-1 .or. j.eq.my-1) then >> >> v(1) = 2.0*rho*(HxdHy + HydHx) >> >> call >> MatSetValuesStencil(jac,i1,row,i1,row,v,INSERT_VALUES,ierr) >> >> else >> >> v(1) = -rho*HxdHy >> >> col(MatStencil_i,1) = i >> >> col(MatStencil_j,2) = j-1 >> > > Cut and paste error above. > > Matt > > >> v(2) = -rho*HydHx >> >> col(MatStencil_i,2) = i-1 >> >> col(MatStencil_j,2) = j >> >> v(3) = 2.0*rho*(HxdHy + HydHx) >> >> col(MatStencil_i,3) = i >> >> col(MatStencil_j,3) = j >> >> v(4) = -rho*HydHx >> >> col(MatStencil_i,4) = i+1 >> >> col(MatStencil_j,4) = j >> >> v(5) = -rho*HxdHy >> >> col(MatStencil_i,5) = i >> >> col(MatStencil_j,5) = j+1 >> >> call >> MatSetValuesStencil(jac,i1,row,i5,col,v,INSERT_VALUES,ierr) >> >> end if >> >> end do >> >> end do >> >> call MatAssemblyBegin(jac,MAT_FINAL_ASSEMBLY,ierr) >> >> call MatAssemblyEnd(jac,MAT_FINAL_ASSEMBLY,ierr) >> >> !call >> MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,PETSC_NULL_INTEGER,nullspace,ierr) >> >> !call MatSetNullSpace(jac,nullspace,ierr) >> >> !call MatNullSpaceDestroy(nullspace,ierr) >> >> end subroutine ComputeMatrix >> >> subroutine ComputeRho(i,j,mx,my,centerRho,rho) >> >> PetscInt i,j,mx,my >> >> PetscScalar rho,centerRho >> >> if ((i > mx/3.0) .and. (i < 2.0*mx/3.0) .and. (j > my/3.0) .and. (j < >> 2.0*my/3.0)) then >> >> rho = centerRho >> >> else >> >> rho = 1.0 >> >> end if >> >> >> end subroutine ComputeRho >> >> -- >> 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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120424/4048f55b/attachment-0001.htm>
