Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add L-stable DIRK4 method, use to bootstrap A-stable DIRK4 #6084

Merged
merged 5 commits into from
Dec 18, 2015

Conversation

jwpeterson
Copy link
Member

The AStableDirk4 method is a little strange in that it evaluates residuals outside of the current time step. This can potentially be a problem for the first time step, so by default we introduce a different 4th-order method, LStableDirk4, to compute the first timestep, and switch back to AStableDirk4 (which is less expensive) for subsequent timesteps.

Note that the LStableDirk4 method is also potentially useful in its own right, and can be more accurate than AStableDirk4 on certain problems (see plot below).

implicit_plot_final

This method can be used as a starting method for AStableDirk4, or a
more expensive 4th-order method in its own right.

Refs idaholab#5701.
The AStableDirk4 method is a little strange in that it evaluates
residuals *outside* of the current timestep.  This can potentially be
a problem for the first timestep, so by default we use a different
4th-order method, LStableDirk4, to compute the first timestep, and
switch back to AStableDirk4 for subsequent timesteps.
Set Executioner/TimeIntegrator/safe_start=false in the tests file.
@friedmud
Copy link
Contributor

Let me make a general comment here: while added capability is always cool... this may be getting out of hand.

In general, code should only be added to MOOSE to add specific capability for a customer. Every piece of added code should be viewed as a maintenance burden.

In this case: as we add more code to TimeIntegrators it becomes more difficult to evolve the time integration system, or even MOOSE in general. How many lines of code would need to change if we modified the TimeIntegration interfaces or infrastructure? How many tests would need to be fixed?

There should be a cost/benefit analysis for every line of code we allow into the system. What are we going to get for the tradeoff in maintenance?

Maybe it would be helpful to know what your overall goals are here. Are you adding the DIRK4 stuff as a stepping stone to something else? Can we ultimately remove it once you get there?

Anyway: I'm not completely against this PR (it is adding capability, and it is tested, etc.) but we need to draw a line somewhere...

@jwpeterson
Copy link
Member Author

@friedmud we have an LDRD milestone to add adaptive timestepping methods to MOOSE. These will be based on DIRK methods like this one.

@friedmud
Copy link
Contributor

Alright... but why is that an LDRD milestone? Is there really a driving need for such high order methods that require tiny timesteps?

Anyway... I won't fight it. I'm sure you guys have worked it out there.

@permcody
Copy link
Member

I'd say that our new LDRD isn't aligned with our physics goals. This is on purpose. NEAMS is now our #1 customer for driving the development of our physics based needs and all enhancements for those features are being billed as such. Our LDRD is for perpendicular research and experimental algorithms. I guess we're fortunate to have both funding sources.

@permcody
Copy link
Member

Nice - I inadvertently linked in a removed ticket!

@friedmud
Copy link
Contributor

@jwpeterson and I chatted about this and it sounds like he has a good handle on the situation. I'll quietly step out of the way on this one ;-)

@jwpeterson
Copy link
Member Author

Nice - I inadvertently linked in a removed ticket!

OK, but who does #2 work for?

@permcody
Copy link
Member

permcody added a commit that referenced this pull request Dec 18, 2015
Add L-stable DIRK4 method, use to bootstrap A-stable DIRK4
@permcody permcody merged commit 6780de8 into idaholab:devel Dec 18, 2015
@jwpeterson jwpeterson deleted the lstable_dirk4 branch December 18, 2015 18:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants