Hi Matt, I'm handling the null space in the same way as ex34, that is, I remove the null space (containing just the constant functions, I think) in both ComputeRHS and ComputeMatrix.
However, I just tried commenting out those lines (MatNullSpaceCreate, MatSetNullSpace or MatNullSpaceRemove, MatNullSpaceDestroy) and that has no effect. The same happens in ex34.c, commenting out the lines fixing the null space makes no difference. Does that make sense? Are these examples intended to be run with some special options? I see in the makefile (e.g. runex34) that there are a lot of multigrid options, but I don't think that should matter? Also, could you confirm that ex34.c does zero Neumann BCs? The header was a bit confusing, it says u=0 but I assume it should be du/dn = 0 (zero normal derivative)? This is with 3.4.4, by the way. Thanks, Åsmund ________________________________ Fra: Matthew Knepley [[email protected]] Sendt: 3. april 2014 15:56 Til: Åsmund Ervik Kopi: [email protected] Emne: Re: [petsc-users] Trying to write Fortran version of ksp/ex34.c On Thu, Apr 3, 2014 at 8:43 AM, Åsmund Ervik <[email protected]<mailto:[email protected]>> wrote: -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Dear PETSc users, I'm trying to write a Poisson solver in Fortran using the KSPSetComputeOperators etc. framework. When debugging this, I ended up modifying ksp/ex22.f so that it matches ksp/ex34.c. The difference between these is that ex34.c has a non-constant RHS and Neumann BCs, which is closer to what I want. If it has Neumann conditions, then it has a null space. Have you included this in your solver? That can cause a residual offset. Matt Now, when I run these two programs I get the following: ./ex22f_mod Residual, L2 norm 1.007312 Error, sup norm 0.020941 Error, L1 norm 10.687882 Error, L2 norm 0.340425 ./ex34 Residual, L2 norm 1.07124e-05 Error, sup norm 0.0209405 Error, L1 norm 0.00618512 Error, L2 norm 0.000197005 but when I MatView/VecView the matrix and RHS for each example (write them to file), there is no difference. I have attached ex22f_mod.F90, any suggestions on what the error is? Once this example works, you can of course include it with PETSc. Regards, Åsmund -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBAgAGBQJTPWWZAAoJED+FDAHgGz19aNYIANyq9k3a5kHzTlAdybkZCYDw yKtDE5l/4iWYmNL49FH8AocHVcRivLaeJG5CGKqySFtZUXOlC9DM7rn4UmuQecni dgIQuTk0Ym+OJccHyT5xxnebpFVNrIOTpInfQaDW6dTyeL1svAMeHqslKaGepySL q/cODbgNDYgl6uumB+POMZevtlM6HPhl/1m7HofcHC9upvTRjSPqP1cg+kg+/8m2 Fdie/X7PCBfShrAys94kNXNcwtbO7taauphkQGMfyl0gUd+lFATG6zrEZdDqSFlV c44GFFbxW/SRIDBXdOeX9/cy75KW5do1Sildwb6R4H/i7t6/hCJUJuss7FHjmLc= =tV3N -----END PGP SIGNATURE----- -- 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
