[petsc-users] Setting step acceptance criteria and/or domain validity using TS module

Pierre Barbier de Reuille pierre.barbierdereuille at gmail.com
Fri Feb 13 07:59:31 CST 2015


Hello,

sorry to bombard you with emails. But here is another patch, still on the
master branch, which adds TSSetFunctionDomainError and
TSFunctionDomainError functions. I tried them with Runge-Kutta and they
work. I think I added the correct calls to all the methods, or at least all
the ones calling TSPostStage.

Note that I needed to modify the Runge-Kutta call to remove the goto. For
some reason, on my system (Ubuntu 14.04, gcc 4.8.2), the time step would
not get updated if compiled with optimisations. Removing the goto and
replacing it with break/continue prevented that issue.

Please tell me what you think of the modification.

Cheers,

Pierre


On Thu Feb 12 2015 at 15:37:48 Pierre Barbier de Reuille <
pierre.barbierdereuille at gmail.com> wrote:

> Hello,
>
> so here is a patch against the MASTER branch to add time and current
> solution vector to the TSAdaptCheckStage. What I did is add the same
> arguments as for the TSPostStage call.
> I hope I haven't made any mistake.
>
> In addition, if the stage is rejected, PETSc only tried again, changing
> nothing, and therefore failing in the exact same way. So I also added a
> reduction of the time step if the stage is rejected by the user.
>
> Note: I tested the code with the RungeKutta solver only for now.
>
> Cheers,
>
> Pierre
>
>
> On Thu Feb 12 2015 at 03:45:13 Jed Brown <jed at jedbrown.org> wrote:
>
>> Pierre Barbier de Reuille <pierre.barbierdereuille at gmail.com> writes:
>>
>> > Ok, I made progress. But:
>> >
>> >  1 - whatever I do, I have very slightly negative values, and therefore
>> all
>> > my steps get rejected (values like 1e-16)
>> >  2 - As I expected, SNES is only used with implicit methods. So if I use
>> > explicit Runge-Kutta, then there is no solution vector stored by the
>> SNES
>> > object.
>> >
>> > Reading the code for the Runge-Kutta solver, it seems that TSPostStage
>> is
>> > where I can retrieve the current state, and TSAdaptCheckStage where I
>> can
>> > reject it. But is this something I can rely on?
>>
>> TSPostStage is only called *after* the stage has been accepted (the step
>> might be rejected later, e.g., based on a local error controller).
>>
>> We should pass the stage solution to TSAdaptCheckStage so you can check
>> it there.  I can add this, but I'm at a conference in Singapore this
>> week and have a couple more pressing things, so you'd have to wait until
>> next week unless someone else can do it (or you'd like to submit a
>> patch).
>>
>> We should also add TSSetSetFunctionDomainError() so you can check it
>> there (my preference, actually).
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150213/5b497361/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TSSetFunctionDomainError.patch
Type: text/x-patch
Size: 21663 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150213/5b497361/attachment.bin>


More information about the petsc-users mailing list