<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hello,<br>
<br>
Thanks you, it works. If I remove the NullSpaceCondition I get the
correct solution also with Neumann BC. <br>
From my point of view, the linear system I get is not singular
because there is a unique solution. Do you agree ?<br>
<br>
Regards,<br>
Olivier Bonnefon<br>
<br>
<br>
On 11/25/2014 03:01 PM, Matthew Knepley wrote:<br>
</div>
<blockquote
cite="mid:CAMYG4Gkhmd8Kx5O1-5B8RNxG3Dcyb5=xM_=6ZPkSm+oWCqoV-A@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Tue, Nov 25, 2014 at 4:08 AM,
Olivier Bonnefon <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:olivier.bonnefon@avignon.inra.fr"
target="_blank">olivier.bonnefon@avignon.inra.fr</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Hello,<br>
<br>
Thank you for your answer, I agree with you.<br>
<br>
I have adapted the ex12 example for the system:<br>
<br>
-\nabla \nabla u + u + f = 0 in \Omega (1)<br>
<br>
with f = 4-x^2-y^2<br>
The solution is still x^2-y^2.<br>
<br>
It consists in adding the following gradient function:<br>
<br>
void g0_uu(const PetscScalar u[], const PetscScalar
u_t[], const PetscScalar u_x[], const PetscScalar a[],
const PetscScalar a_t[], const PetscScalar a_x[],
const PetscReal x[], PetscScalar g0[])<br>
{<br>
g0[0] = 1.0;<br>
}<br>
...<br>
//and set gradient<br>
ierr = PetscDSSetJacobian(prob, 0, 0, g0_uu, NULL,
NULL, g3_uu);CHKERRQ(ierr);<br>
...<br>
Of course, I have modified the f0_u function.<br>
<br>
<br>
With Dirichlet BC, I get the solution.<br>
<br>
With Neumann BC, the solution is still shifted down
(-2/3). The problem (1) with Neumann BC has a unique
solution.<br>
How remove the condition \int_\Omega u = 0 ?<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>That condition is one way of imposing boundary
conditions for pressure. When I call MatSetNullSpace(), I
am implying</div>
<div>this condition. You can take out that call, but the
system will be singular. You would have to add a condition
on the</div>
<div>pressure somehow, like fixing it at a point. This tends
to make the system more ill-conditioned, but if that is
appropriate</div>
<div>for you, then you make a similar call to</div>
<div><br>
</div>
<div> ierr = DMPlexAddBoundary(cdm, user->bcType ==
DIRICHLET, "wall", user->bcType == NEUMANN ? "boundary"
: "marker", 0, user->exactFuncs[0], 1, &id,
user);CHKERRQ(ierr);</div>
<div><br>
</div>
<div>but for field 1. To test , you can jsut change 0 to 1
in this call. However, this sets the entire boundary, and
you really only</div>
<div>need to set the pressure at one point, so you could
make another label that only has a single point and use
that instead.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div> Thanks<span class=""><font color="#888888"><br>
Olivier Bonnefon</font></span>
<div>
<div class="h5"><br>
<br>
<br>
On 11/06/2014 07:14 AM, Matthew Knepley wrote:<br>
</div>
</div>
</div>
<div>
<div class="h5">
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Mon, Nov 3, 2014
at 9:46 AM, Olivier Bonnefon <span
dir="ltr"><<a moz-do-not-send="true"
href="mailto:olivier.bonnefon@avignon.inra.fr"
target="_blank">olivier.bonnefon@avignon.inra.fr</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>Hello,<br>
<br>
Thank for your answer, I'll explain my
trouble:<br>
<br>
My problem is that the BC Neumann
leads to wrong result.<br>
<br>
With Dirichlet BC, I get:<br>
-------------------------------<br>
<br>
> ./ex12 -run_type full
-refinement_limit 0.0 -bc_type
dirichlet -interpolate 0
-petscspace_order 1 -show_initial
-show_solution -dm_plex_print_fem 1<br>
...<br>
...<br>
Solution<br>
Vec Object:potential 1 MPI processes<br>
type: seq<br>
0.5<br>
<br>
This result is correct.<br>
<br>
With Neuman BC, I get:<br>
--------------------------------<br>
<br>
> ./ex12 -run_type full
-refinement_limit 0.0 -bc_type
neumann -interpolate 1
-petscspace_order 1 -show_initial
-dm_plex_print_fem 1 -show_solution
-bd_petscspace_order 1
-snes_linesearch_monitor
-snes_monitor
-ksp_monitor_true_residual
-snes_converged_reason
-ksp_converged_reason<br>
....<br>
....<br>
<br>
<br>
Solution<br>
Vec Object:potential 1 MPI processes<br>
type: seq<br>
-0.75<br>
-0.583333<br>
0.0833333<br>
-0.583333<br>
-0.333333<br>
0.416667<br>
0.0833333<br>
0.416667<br>
1.25<br>
<br>
<br>
That is not the values of the solution
x*x+y*y.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
<div>Sorry, this is poor documentation on my
part. I will fix it in the example. The
Naumann solution</div>
<div>explicitly discards the constant part,
meaning</div>
<div><br>
</div>
<div> \int_\Omega u = 0</div>
<div><br>
</div>
<div>If we look at my solution</div>
<div><br>
</div>
<div> \int^1_0 dx \int^1_0 dy x^2 + y^2 =
2/3</div>
<div><br>
</div>
<div>However, this is for the continuum
result, whereas we are enforcing this in
the discrete case.</div>
<div>Thus, what we really get is 0.75, since
we are integrating linear patches instead
of quadratic</div>
<div>patches. After shifting by that, you
still do not get exactly x^2 + y^2 since
there is some</div>
<div>discretization error. If you run with
P2 you should get the exact answer,
shifted down to eliminate</div>
<div>the DC component.</div>
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div> <br>
I tried many ksp options. <br>
Moreover, the neumann BC with
"-run_type full" is not cover in the
list <a moz-do-not-send="true"
href="https://bitbucket.org/petsc/petsc/src/fced3c3f9e703542693913793d15321603e40fe6/config/builder.py?at=master#cl-257"
target="_blank">https://bitbucket.org/petsc/petsc/src/fced3c3f9e703542693913793d15321603e40fe6/config/builder.py?at=master#cl-257</a><br>
<br>
Do you know what is wrong ?<br>
<br>
Thanks,<br>
<br>
Olivier Bonnefon<br>
<br>
On 10/31/2014 06:50 PM, Matthew
Knepley wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">On Fri,
Oct 31, 2014 at 10:43 AM,
Olivier Bonnefon <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:olivier.bonnefon@avignon.inra.fr"
target="_blank">olivier.bonnefon@avignon.inra.fr</a>></span>
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
<br>
I'm working on the
snes/examples/tutorial/ex12
version 3.5.2.<br>
<br>
I didn't succed to run the
simplest case with Neumann BC:<br>
<br>
./ex12 -run_type full
-refinement_limit 0.0
-bc_type neumann -interpolate
1 -petscspace_order 1
-show_initial
-dm_plex_print_fem 1
-show_solution
-bd_petscspace_order 1
-snes_linesearch_monitor
-snes_monitor
-ksp_monitor_true_residual
-snes_converged_reason
-ksp_converged_reason<br>
<br>
This leads to dofs negatives
values.<br>
</blockquote>
<div><br>
</div>
<div>I do not understand what
you mean. Please always mail
the full error message.</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Do
you know the options to get a
correct result with Neumann BC
?<br>
</blockquote>
<div><br>
</div>
<div>There are some tests here:</div>
<div><br>
</div>
<div><a moz-do-not-send="true"
href="https://bitbucket.org/petsc/petsc/src/fced3c3f9e703542693913793d15321603e40fe6/config/builder.py?at=master#cl-257"
target="_blank">https://bitbucket.org/petsc/petsc/src/fced3c3f9e703542693913793d15321603e40fe6/config/builder.py?at=master#cl-257</a><br>
</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Regards,<br>
Olivier Bonnefon<br>
<br>
</blockquote>
</div>
<br>
<br clear="all">
<span><font color="#888888">
<div><br>
</div>
-- <br>
What most experimenters take
for granted before they begin
their experiments is
infinitely more interesting
than any results to which
their experiments lead.<br>
-- Norbert Wiener </font></span></div>
<span><font color="#888888"> </font></span></div>
<span><font color="#888888"> </font></span></blockquote>
<span><font color="#888888"> <br>
<br>
<pre cols="72">--
Olivier Bonnefon
INRA PACA-Avignon, Unité BioSP
Tel: <a moz-do-not-send="true" href="tel:%2B33%20%280%294%2032%2072%2021%2058" value="+33432722158" target="_blank">+33 (0)4 32 72 21 58</a></pre>
</font></span></div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div>What most experimenters take for granted
before they begin their experiments is
infinitely more interesting than any results
to which their experiments lead.<br>
-- Norbert Wiener</div>
</div>
</div>
</blockquote>
<br>
<br>
<pre cols="72">--
Olivier Bonnefon
INRA PACA-Avignon, Unité BioSP
Tel: <a moz-do-not-send="true" href="tel:%2B33%20%280%294%2032%2072%2021%2058" value="+33432722158" target="_blank">+33 (0)4 32 72 21 58</a></pre>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div class="gmail_signature">What most experimenters take for
granted before they begin their experiments is infinitely
more interesting than any results to which their experiments
lead.<br>
-- Norbert Wiener</div>
</div>
</div>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Olivier Bonnefon
INRA PACA-Avignon, Unité BioSP
Tel: +33 (0)4 32 72 21 58</pre>
</body>
</html>