<div dir="ltr"><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Oct 23, 2013 at 5:39 PM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</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 class="im">Christophe Ortiz <<a href="mailto:christophe.ortiz@ciemat.es">christophe.ortiz@ciemat.es</a>> writes:<br>

<br>
>> Does a shorter time step fix the oscillations?<br>
><br>
><br>
> Hi Jed,<br>
><br>
> Thanks for the prompt reply.<br>
><br>
> No, it did not in this case. However, I noticed for "smoother" cases that<br>
> max timestep matters. I try to fix it to finaltime/100 to avoid too large<br>
> timesteps. I also use -ts_adapt_basic_clip 0.1,1.1 to avoid large timesteps.<br>
<br>
</div>This just slows the rate of increasing time step.<br>
<div class="im"><br>
>>  Is this with<br>
>> -ts_arkimex_type 1bee or something else?<br>
>><br>
><br>
> It occurs with 1bee, a2 or arkimex 3.<br>
<br>
</div>Stick with 1bee until we understand better.<br></blockquote><div><br></div><div>Ok.</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 class="im"><br>
>> Can you try -ts_arkimex_fully_implicit and add -snes_mf_operator if<br>
>> necessary to get SNES to converge?<br>
><br>
><br>
><br>
> I tried -ts_arkimex_fully_implicit and it gave a wrong result. As if there<br>
> was no diffusion. Seems there is an artefact with fullyimplicit option.<br>
<br>
</div>That does not sound right.  Can you send a reproducible test case (best<br>
as a patch to PETSc)?<br></blockquote><div><br></div><div>What do you mean by patch to PETSc ? How do I do that ?</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 class="im"><br>
> With -snes_mf_operator I got an error message:<br>
> [0]PETSC ERROR: No support for this operation for this object type!<br>
> [0]PETSC ERROR: Mat type mffd!<br>
<br>
</div>ALWAYS, ALWAYS, ALWAYS send the ENTIRE error message!<br>
<br>
(Sorry about shouting, but I have to type this many times per day.<br>
Truncating error messages kills kittens!)<br></blockquote><div><br></div><div><br></div><div>Sorry about that. Here is the entire error message:</div><div><br></div><div><div>[0]PETSC ERROR: No support for this operation for this object type!</div>
<div>[0]PETSC ERROR: Mat type mffd!</div><div>[0]PETSC ERROR: ------------------------------------------------------------------------</div><div>[0]PETSC ERROR: Petsc Release Version 3.4.1, Jun, 10, 2013 </div><div>[0]PETSC ERROR: See docs/changes/index.html for recent updates.</div>
<div>[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.</div><div>[0]PETSC ERROR: See docs/index.html for manual pages.</div><div>[0]PETSC ERROR: ------------------------------------------------------------------------</div>
<div>[0]PETSC ERROR: ./diffusion_c on a ifort-icc-nompi-double-debug named <a href="http://mazinger.ciemat.es">mazinger.ciemat.es</a> by u5751 Wed Oct 23 12:46:04 2013</div><div>[0]PETSC ERROR: Libraries linked from /home/u5751/petsc-3.4.1/ifort-icc-nompi-double-debug/lib</div>
<div>[0]PETSC ERROR: Configure run at Mon Oct 14 05:43:50 2013</div><div>[0]PETSC ERROR: Configure options --with-mpi=0 --with-fc=ifort --with-cc=icc --with-debugging=1 --with-scalar-type=real --with-precision=double --with-blas-lapack-dir=/opt/intel/mkl</div>
<div>[0]PETSC ERROR: ------------------------------------------------------------------------</div><div>[0]PETSC ERROR: MatZeroEntries() line 5189 in src/mat/interface/matrix.c</div><div>[0]PETSC ERROR: FormIJacobian() line 689 in src/ts/examples/tutorials/diffusion.c</div>
<div>[0]PETSC ERROR: TSComputeIJacobian() line 718 in src/ts/interface/ts.c</div><div>[0]PETSC ERROR: SNESTSFormJacobian_ARKIMEX() line 995 in src/ts/impls/arkimex/arkimex.c</div><div>[0]PETSC ERROR: SNESTSFormJacobian() line 3397 in src/ts/interface/ts.c</div>
<div>[0]PETSC ERROR: SNESComputeJacobian() line 2152 in src/snes/interface/snes.c</div><div>[0]PETSC ERROR: SNESSolve_NEWTONLS() line 218 in src/snes/impls/ls/ls.c</div><div>[0]PETSC ERROR: SNESSolve() line 3636 in src/snes/interface/snes.c</div>
<div>[0]PETSC ERROR: TSStep_ARKIMEX() line 765 in src/ts/impls/arkimex/arkimex.c</div><div>[0]PETSC ERROR: TSStep() line 2458 in src/ts/interface/ts.c</div><div>[0]PETSC ERROR: TSSolve() line 2583 in src/ts/interface/ts.c</div>
<div>[0]PETSC ERROR: main() line 457 in src/ts/examples/tutorials/diffusion.c</div><div>./compile_diffusion: line 17: 20506 Aborted                 ./diffusion_c -ts_adapt_monitor -ts_adapt_basic_clip 0.1,1.1 -draw_pause -2 -ts_arkimex_type 1bee -ts_max_snes_failures -1 -snes_type newtonls -snes_linesearch_type bt -snes_mf_operator</div>
</div><div><br></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 class="im"><br>
>>  (I'm assuming you have used an IMEX<br>
>> formulation here, but perhaps you already use fully implicit?)<br>
>><br>
><br>
> I put everything under IFunction and IJacobian. This part is not clear to<br>
> me actually. I understand that in IMEX methods, the LHS is solved<br>
> implicitely and the RHS explicitely. What happens when I use an IMEX method<br>
> with no RHS, everything in the LHS ? Is there any explicit stage ?<br>
<br>
</div>No, if the RHS is empty, it should reduce to an implicit method.<br>
<div class="im"><br>
> Actually, I could solve the problem by adding mesh points. Since I start<br>
> from steep gaussian distributions with large peak values, maybe there was a<br>
> problem with large gradients.<br>
><br>
> BTW, is it possible to have adaptive mesh in 1D with PETSc ? I am thinking<br>
> of steep profiles that evolve and that require a fine mesh at the beginning.<br>
<br>
</div>You can do moving meshes (r-adaptivity) by writing coordinates as a<br>
coupled system.  Or you can create a new grid and interpolate.  You can<br>
use DMRefine and DMCoarsen.<br></blockquote><div><br></div><div>Great. I will check this out.</div><div><br></div><div>Christophe </div></div><br></div></div>