<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 30, 2013, at 10:06 AM, Olivier Bonnefon <<a href="mailto:olivier.bonnefon@avignon.inra.fr">olivier.bonnefon@avignon.inra.fr</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
<div bgcolor="#FFFFFF" text="#000000">
Hello,<br>
<br>
I want to use PETSC for large problem about diffusive model in
epidemiological field.<br>
I'm using the slides 'Advanced PETSc Tutorial, Maison de la
Simulation, Orsay, France, June 2013 (Matt)'.<br>
<br>
My first step is to simulated a problem 0=-\nabla u + f(u), where f
is a linear or non-linear function, with FEM. To do this I'm
adapting the example ex12.c for the linear problem:<br>
<br>
0=-\nabla u + w*w*u<br>
with the exact solution u(x,y)=exp(w*x)+exp(w*y). The Dirichlet
boundary condition are defined from the exact solution, like in
example ex12.<br>
<br>
To do this, I change only the two following functions:<br>
<br>
double WW=1.0;<br>
void quadratic_u_2d(const PetscReal x[], PetscScalar *u)<br>
{<br>
*u = exp(WW*(x[0])) +exp(WW*(x[1])) ;<br>
}<br>
<br>
void f0_u(const PetscScalar u[], const PetscScalar gradU[], const
PetscReal x[], PetscScalar f0[])<br>
{<br>
const PetscInt Ncomp = NUM_BASIS_COMPONENTS_0;<br>
PetscInt comp;<br>
<br>
for (comp = 0; comp < Ncomp; ++comp) f0[comp] = WW*WW*u[comp] ;<br>
}<br>
<br>
<br>
The result is :<br>
$ ./ex12 -refinement_limit 0.01 -snes_monitor_short
-snes_converged_reason<br>
0 SNES Function norm 22.1518 <br>
1 SNES Function norm 0.364312 <br>
2 SNES Function norm 0.0165162 <br>
3 SNES Function norm 0.000792446 <br>
4 SNES Function norm 3.81143e-05 <br>
5 SNES Function norm 1.83353e-06 <br>
6 SNES Function norm 8.8206e-08 <br>
Nonlinear solve converged due to CONVERGED_FNORM_RELATIVE iterations
6<br>
Number of SNES iterations = 6<br>
L_2 Error: 0.00511<br>
<br></div></blockquote><div><br></div><div>-ksp_monitor will show the linear solver residuals and these should match from one nonlinear iteration to the next if the problem is linear. Your function and Jacobean might not be consistent (my guess).</div><br><blockquote type="cite"><div bgcolor="#FFFFFF" text="#000000">
<br>
Something is wrong because it is a linear problem, why the snes
didn't converge in one iteration ?<br>
<br>
Thanks a lot.<br>
<br>
Olivier B<br>
<br>
On 07/18/2013 03:39 PM, Olivier Bonnefon wrote:
<blockquote cite="mid:51E7F011.2020408@avignon.inra.fr" type="cite">
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
On 07/18/2013 03:26 PM, Matthew Knepley wrote:
<blockquote cite="mid:CAMYG4GmXRoVSctf57BnThOut=SZ+Ay_yKk_fwzH3786GKF212Q@mail.gmail.com" type="cite">
<div dir="ltr">On Thu, Jul 18, 2013 at 8:17 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>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> It is what I
wanted, it works. <br>
If I well understand the code, ex12.h contains the P1
implementation. To simulate an other system, with time
dependences for examples (du/dt), I have to adapt the
plugin functions.<br>
</div>
</blockquote>
<div><br>
</div>
<div>The way I would add time dependence is to convert
this from a SNES example into a TS example. I can help
you</div>
<div>do this since I want to start using TS by default.
Does this sound reasonable?</div>
</div>
</div>
</div>
</blockquote>
Yes, of course. My goal is to simulate diffusive equation with non
linear sources, for example Lotka-Voltera competion. <br>
<br>
Olivier B<br>
<blockquote cite="mid:CAMYG4GmXRoVSctf57BnThOut=SZ+Ay_yKk_fwzH3786GKF212Q@mail.gmail.com" type="cite">
<div dir="ltr">
<div class="gmail_extra">
<div class="gmail_quote">
<div><br>
</div>
<div> Thanks,</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Thanks a lot.<br>
<br>
Olivier B<br>
<br>
On 07/18/2013 01:12 PM, Matthew Knepley wrote:
<blockquote type="cite">
<div dir="ltr">On Thu, Jul 18, 2013 at 5: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>
<div class="gmail_extra">
<div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex">Hello,<br>
<br>
I have a 2-d heat equation that I want to
simulate with Finit Element Method, to do
this, I'm looking for an example solving 2D
poisson equation with FEM (DMDA or DMPlex).
Is there an example like this ?<br>
</blockquote>
<div><br>
</div>
<div>There is, but there it is still somewhat
problematic. I use FIAT to generate the
basis function tabulation,</div>
<div>so you have to configure with</div>
<div><br>
</div>
<div> --download-fiat
--download-scientificpython
--download-generator</div>
<div><br>
</div>
<div>and you need mesh generation and
partitioning</div>
<div><br>
</div>
<div> --download-triangle --download-chaco</div>
<div><br>
</div>
<div>and then you can run SNES ex12 using
Builder (which will make the header file)</div>
<div><br>
</div>
<div> python2.7 ./config/builder2.py check
src/snes/examples/tutorials/ex12.c</div>
<div><br>
</div>
<div>Jed and I are working on an all C version
of tabulation which would mean that you
could bypass</div>
<div> the Python code generation step. Once
the header is generated for the element you
want, then</div>
<div>you can just run the example as normal.</div>
<div><br>
</div>
<div> Matt</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex"> Thanks a lot.<span><font color="#888888"><br>
<br>
Olivier Bonnefon<br>
<br>
-- <br>
Olivier Bonnefon<br>
INRA PACA-Avignon, Unité BioSP<br>
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><br>
<br>
</font></span></blockquote>
</div>
<br>
<br clear="all">
<span class="HOEnZb"><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 class="HOEnZb"><font color="#888888"> </font></span></div>
<span class="HOEnZb"><font color="#888888"> </font></span></blockquote>
<span class="HOEnZb"><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>
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>
</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>
</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>
</div>
</blockquote></div><br></body></html>