Initial guidance/starting point for solving a non-linear diffusion equation with double neumann BCs

40 views
Skip to first unread message

Krishnakumar Gopalakrishnan

unread,
Mar 12, 2020, 5:38:35 PM3/12/20
to deal.II User Group
I need to solve the following non-linear diffusion equation on a unit 1D domain:

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

subject to Neumann bcs at both ends. D(u)*grad(u) = f(t) at x=0, and D(u)*grad(u) = 0 at x=1, with a constant initial condition u(x,0) = u0

The difficulty with this problem is two fold
  • The diffusion coefficient D is a function of the field variable u,
  • Diffusion coefficient D(u) varies by 4 orders of magnitute between 10^-12 and 10^-16
Being 1D, the problem size is very small and I am thnking of just using direct solvers. However, I don't quite know how to start approaching this problem and how to begin the coding this in deal.ii.

I'd appreciate any thoughts/help/suggestions/guidance from the deal.II community.

Regards,
Krishna



Daniel Arndt

unread,
Mar 12, 2020, 11:01:19 PM3/12/20
to dea...@googlegroups.com
Krishna,

Have a look at step-7 for Neumann boundary conditions, step-15 for nonlinear problems and step-26 for time-dependent problems to get started.
Let us know if you have more specific questions.

Best,
Daniel

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/3c0a13b9-1d59-443d-97bf-5a95440281d3%40googlegroups.com.

Krishnakumar Gopalakrishnan

unread,
Mar 13, 2020, 9:36:24 AM3/13/20
to dea...@googlegroups.com
Hi Daniel,

Thank you for your reply. I had seen all the tutorials you mentioned.

Let me further clarify some of the things in my PDE that are somewhat different from the tutorials.

1. Unlike Step-7, I have Neumann-only BCs. In my prior experience with the FD and FV methods, this is a difficult problem. Is there any specific advice that can help me with this?

2. Step-15 solves a static non-linear problem and step-26 solves a linear time-dependent problem. I somehow need to combine these ideas to solve my non-linear time-dependent problem.  Does this mean, I first make the problem a static one by time discretisation (Rothe method), and apply Newton iterations at every time step. Also, it scares me to derive the Newton update equation symbolically and was thinking of automatic differentiation. Can this be done in an easier way than the sacado package interface? Also, the amount of boiler-plate code and text (step-33) for this auto diff is overwhelming for me.

Regards,
Krishna








You received this message because you are subscribed to a topic in the Google Groups "deal.II User Group" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/dealii/xX4IMnVymCw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/CAOYDWbK8fuCwiTQPjKO%2BaNhtLeAvCtXonskzS5%2BBha8CEkjw3w%40mail.gmail.com.

Wolfgang Bangerth

unread,
Mar 13, 2020, 3:33:29 PM3/13/20
to dea...@googlegroups.com, Krishnakumar Gopalakrishnan

> 1. Unlike Step-7, I have Neumann-only BCs. In my prior experience with
> the FD and FV methods, this is a difficult problem. Is there any
> specific advice that can help me with this?

But step-7 also has Neumann boundary conditions. What is different in
your case? That you *only* have Neumann boundary conditions? That
doesn't present any real additional difficulties in time-dependent problems.


> 2. Step-15 solves a static non-linear problem and step-26 solves a
> linear time-dependent problem. I somehow need to combine these ideas to
> solve my non-linear time-dependent problem.  Does this mean, I first
> make the problem a static one by time discretisation (Rothe method), and
> apply Newton iterations at every time step. Also, it scares me to derive
> the Newton update equation symbolically and was thinking of automatic
> differentiation. Can this be done in an easier way than the sacado
> package interface? Also, the amount of boiler-plate code and text
> (step-33) for this auto diff is overwhelming for me.

These are all issues every user of deal.II has to sort out in some way
or other -- and all eventually do! Just jump in head-first and see where
things go :-)

In your case, I would start with a time discretized problem and add the
nonlinearity later on.

Best
W.


--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/
Reply all
Reply to author
Forward
0 new messages