Linearizing a non-linear diffusion equation by using value from previous-time step for the non-linear part (Rothe method)

22 views
Skip to first unread message

Krishnakumar Gopalakrishnan

unread,
Mar 13, 2020, 2:59:28 PM3/13/20
to deal.II User Group
I have a non-linear diffusion equation of the form

du/dt = \nabla.( D(u) \grad u)

The non-linearity appears because of the dependence of the diffusion coefficient on the solution.

When discretising by the Rothe method, applying backward Euler method in the strictest sense:

(u^n - u^{n-1})/k^n  - \nabla. ( D(u^n) ) * \grad{u^n})  = 0

This would require Newton iterations and such complications.  Is it okay to simply use the numerical value of D from the previous time-step?

(u^n - u^{n-1})/k^n  - \nabla. ( D(u^{n-1}) ) * \grad{u^n})  = 0

In this case, we get a nice linear equation, and most of step-26 can be used as.  D(u) is a continuous function of u. Is this semi-explicit type of usage of diffusion coefficient, a reasonable way to tackle this problem?


Wolfgang Bangerth

unread,
Mar 13, 2020, 3:34:51 PM3/13/20
to dea...@googlegroups.com
Yes, it's a good step. But it implies that you get a restriction on the
time step size.

You can also replace D(u^n) by D(u^*) where u^* is extrapolated from the
previous two or three time steps. That's a more accurate approximation
than just using u^{n-1}.

Best
W.


--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

Krishnakumar Gopalakrishnan

unread,
Mar 13, 2020, 4:49:43 PM3/13/20
to deal.II User Group
  • Yes, it's a good step. But it implies that you get a restriction on the time step size.

Does that become severe even if I use the present time-step for all other terms? In the \nabla ( D(u) u) term, I will replace only D(u) with the previous time-steps and retain the u^{n} to be at the current time-step.

So, the time-step restriction should not be as bad as the fully explicit case, right?
  • You can also replace D(u^n) by D(u^*) where u^* is extrapolated from the previous two or three time steps. That's a more accurate approximation than just using u^{n-1}.
That sounds perfect. Thank you. Is there any suitable functions from deal.ii that I can use for this extrapolation?  Is there any tutorial that already does something this?

Regards,
Krishna

Wolfgang Bangerth

unread,
Mar 13, 2020, 7:07:41 PM3/13/20
to dea...@googlegroups.com
On 3/13/20 2:49 PM, Krishnakumar Gopalakrishnan wrote:
> * /Yes, it's a good step. But it implies that you get a restriction on the
> time step size. /
>
>
> Does that become severe even if I use the present time-step for all other
> terms? In the \nabla ( D(u) u) term, I will replace only D(u) with the
> previous time-steps and retain the u^{n} to be at the current time-step.
>
> So, the time-step restriction should not be as bad as the fully explicit case,
> right?

Maybe, maybe not. It depends on how strong the nonlinearity D(u) is.
Obviously, if D(u) is actually constant, then there is no restriction at all.
So it's a question of how much it deviates from being a constant.


> * /You can also replace D(u^n) by D(u^*) where u^* is extrapolated from the
> previous two or three time steps. That's a more accurate approximation
> than just using u^{n-1}. /
>
> That sounds perfect. Thank you. Is there any suitable functions from deal.ii
> that I can use for this extrapolation?  Is there any tutorial that already
> does something this?

Not sure. I think that step-32 does something along these lines, but I don't
recall exactly.
Reply all
Reply to author
Forward
0 new messages