Gmail Calendar Documents Web Reader more »
Recently Visited Groups | Help | Sign in
Google Groups Home
non linear diffusion
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  11 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Nicolas Bonneel  
View profile  
 More options Mar 12, 12:22 am
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nbonn...@cs.ubc.ca>
Date: Thu, 11 Mar 2010 20:22:07 -0800
Local: Fri, Mar 12 2010 12:22 am
Subject: non linear diffusion
Hi,
I'm solving a non linear diffusion equation :
div(c(u) grad(u)) = 0
I'm doing that quite naively by iterating the resolution of:
c(u) Laplacian(u) + grad(c(u)).grad(u) = 0
holding c(u) constant at each iteration (basically, the solution of the
previous iteration) and solving the linear system via finite differences.

I saw that overall the residual decreases at each iteration, but it does
so non-monotonically which makes me wonder about the convergence of such
a scheme. Is this scheme proven to converge ? (is there any reference if
so?). If not, is there a better simple scheme, ideally using finite
differences ?

Thank you very much in advance!

--
Nicolas Bonneel
http://cs.ubc.ca/~nbonneel/


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Torsten Hennig  
View profile  
 More options Mar 12, 3:19 am
Newsgroups: sci.math.num-analysis
From: Torsten Hennig <Torsten.Hen...@umsicht.fhg.de>
Date: Fri, 12 Mar 2010 02:19:36 EST
Local: Fri, Mar 12 2010 3:19 am
Subject: Re: non linear diffusion

In cartesian coordinates and one dimension, the
expression above is usually discretized via

d/dx(c(u)*du/dx) at x=x_i ~

(c_(i+1/2)*(u_(i+1)-u_(i))/(x_(i+1)-x_(i)) -
c_(i-1/2)*(u_(i)-u_(i-1))/(x_(i)-x_(i-1)))/
(x_(i+1/2)-x_(i-1/2))
with
c_(i+1/2) = c((u_(i+1)+u_(i))/2)
c_(i-1/2) = c((u_(i)+u_(i-1))/2)
x_(i+1/2) = (x_(i)+x_(i+1))/2
x_(i-1/2) = (x_(i-1)+x_(i))/2

(same for other spatial directions)

Best wishes
Torsten.


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Bonneel  
View profile  
 More options Mar 12, 5:47 am
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nicolas.bonn...@wwwwwwanadoo.fr>
Date: Fri, 12 Mar 2010 09:47:56 GMT
Local: Fri, Mar 12 2010 5:47 am
Subject: Re: non linear diffusion
Le 11/03/2010 23:19, Torsten Hennig a écrit :

Hi,

Thank you very much, I implemented this same discretization just before
as well. Actually, the only difference I have is that I computed the
midpoints as (c(u)_(i+1)+c(u)_i)/2 instead of (c(u_(i+1)))+c(u_i))/2. I
don't know if this changes much.

However, I am mainly interested in knowing if the method of holding c(u)
based on the previous iteration and solving as a linear diffusion
equation, and iterating, is supposed to converge or not.
ie. solving d/dx(c(u^{N-1})*du^{N}/dx)
iterating over N, and computing the solution u^{N} at the Nth iteration.

With the above discretization (with the midpoints), on an RGB image, it
converges properly on the green and blue channels, but starts
oscillating around a quite moderate residual in the red channel, for
some c(u). For others c(u), everything oscillate and the error remains
very high...

Thanks again!

Nicolas


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Spellucci  
View profile  
 More options Mar 12, 10:32 am
Newsgroups: sci.math.num-analysis
From: spellu...@fb04633.mathematik.tu-darmstadt.de (Peter Spellucci)
Date: Fri, 12 Mar 2010 15:32:30 +0100 (CET)
Local: Fri, Mar 12 2010 10:32 am
Subject: Re: non linear diffusion

In article <hncfhf$eu...@swain.cs.ubc.ca>,
 Nicolas Bonneel <nbonn...@cs.ubc.ca> writes:

I assume from your later remarks that dimension is 2.
for simplicity I assume c(u) is scalar (otherwise anything is simlar, but a bit
more complicated to write it down here)
Hopefully c(u) >= c0>0 for all u
You didn't exactly say how you chose the iteration indices in the first order
product.
(Thorsten is right in proposing the symmetric scheme for discretizing this
selfadjoined form, you lost accuracy with your onesided meanvalue approximation)
But for your current question this is irrelevant.
I did what you did (I hope i am right) and got the following pde: c scalr, as
said

 c(u)( u_{xx} + u_{yy} ) + c'(u)( u_x^2+u_y^2) = 0  (plus your boundary conditions)
now we introduce the iterated functions u^{K} :
 c(u^{k})*( u^{k+1}_{xx}+ u^{k+1}_{yy}) + c'(u^{k})*( u^{k}_x*u^{k+1}_x +
  u^{k}_y+u^{k+1}_y ) =0  

and discretize this on the grid in the standard form.
This finally gives something like

 G(vec_u^{k}) vec_u^{k+1} = B    B is the vector obtained from the boundary conditions.
 (*)

 vec_u is the vector of the u-values on the grid.
 G is a matrix and will have the following form :

 diag(c(u^{k}_{num(i,j))}) A +
 diag(c'(u^{k}_{num(i,j)})*diag(u^{k}_{num{i+1,j}-u^{k}_num(i-1,j)})*B_x
 +  diag(c'(u^{k}_{num(i,j)})*diag(u^{k}_{num{i,j+1}-u^{k}_num(i,j-1)})*B_y

 where A represents the standard five point discretization and B_x is
 the discretization operator for (d/dx) and similar for B_y.    

 Now for (*) the Banach fixed point theorem must be applied:

 vec_u^{k+1} = inverse(G(u^{k})*B  = Phi(u^{k})

 and the next step (not that hard as it seems) is to compute the Jacobian
 of Phi. differentiation is to be done row and columnwise, hence essentially a scalar
 one. It holds for a scalar s

  (d/ds) inverse(G(s)) = -inverse(G(s))*(d/ds G(s)) * inverse(G(s))

 inserting this you see that the current u^{k} enters also the Jacobian
 and it remains to discuss this one.

 Badly enough you see that even c''(u) will enter this calculation.
 But the dominant terms will depend on c' , I guess.
 It remains to discuss the norm of the Jacobian, and obviously this will
 not be less than one always.

 hth
 peter


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Bonneel  
View profile  
 More options Mar 12, 10:31 pm
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nbonn...@cs.ubc.ca>
Date: Fri, 12 Mar 2010 18:31:17 -0800
Local: Fri, Mar 12 2010 10:31 pm
Subject: Re: non linear diffusion
Peter Spellucci wrote:

  > I assume from your later remarks that dimension is 2.

Hi,
Thank you very much for this reply!
Yep, the dimension is 2.

> for simplicity I assume c(u) is scalar (otherwise anything is simlar, but a bit
> more complicated to write it down here)

and scalar as well :)
Actually, it comes from the minimization of integral(phi(||grad(u)||))
giving c(u) = phi'(||grad(u)||)/||grad(u)||.

> Hopefully c(u) >= c0>0 for all u
> You didn't exactly say how you chose the iteration indices in the first order
> product.
> (Thorsten is right in proposing the symmetric scheme for discretizing this
> selfadjoined form, you lost accuracy with your onesided meanvalue approximation)

I now indeed use Thorsten's symmetric discretization.

> This finally gives something like

>  G(vec_u^{k}) vec_u^{k+1} = B    B is the vector obtained from the boundary conditions.
>  (*)

>  Now for (*) the Banach fixed point theorem must be applied:

>  vec_u^{k+1} = inverse(G(u^{k})*B  = Phi(u^{k})

I don't recall Banach fixed point theorem. Wikipedia seems to say that
it just states that any contraction has a fixed point, is-it just that?

>  and the next step (not that hard as it seems) is to compute the Jacobian
>  of Phi. differentiation is to be done row and columnwise, hence essentially a scalar
>  one. It holds for a scalar s

>   (d/ds) inverse(G(s)) = -inverse(G(s))*(d/ds G(s)) * inverse(G(s))

>  inserting this you see that the current u^{k} enters also the Jacobian
>  and it remains to discuss this one.

>  Badly enough you see that even c''(u) will enter this calculation.
>  But the dominant terms will depend on c' , I guess.
>  It remains to discuss the norm of the Jacobian, and obviously this will
>  not be less than one always.

Do you know of a better scheme which always converges for any c(u) ?

Matlab's help on nonlinear FEM gives a scheme for a FEM version of the
nonlinear diffusion problem. However I don't understand it from the
start since it doesn't seem to be any problem for them to assemble a
nonlinear pde problem (!). I just don't get how they obtain their
stiffness matrix K independently of U, leading to a purely linear system
in the computation of rho(u) :s
And at the end, if I follow well, if I just use their simple version
U^(n+1) = inv(K).F, it seems that it is doing exactly the same thing as
my version using finite differences to compute K... isn't it ? Then I
guess it should converge ? I get confused....

Thanks again!

--
Nicolas Bonneel
http://cs.ubc.ca/~nbonneel/


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Peter Spellucci  
View profile  
 More options Mar 13, 9:42 am
Newsgroups: sci.math.num-analysis
From: spellu...@fb04633.mathematik.tu-darmstadt.de (Peter Spellucci)
Date: Sat, 13 Mar 2010 14:42:37 +0100 (CET)
Local: Sat, Mar 13 2010 9:42 am
Subject: Re: non linear diffusion

In article <hnetdm$l9...@swain.cs.ubc.ca>,
 Nicolas Bonneel <nbonn...@cs.ubc.ca> writes:

<<
banach fixed point theorem:
(in the variant you will need it, this will be no global contraction, for sure!):
let D0 be convex and compact.
assume Phi is C^1 on the interior of D0.
If there is some norm for which the Jacobian J_Phi satisfies

||J_Phi(x)|| <= L < 1 for every x in the interior of D0.

and some y0 in the interior of D0 such that the ball

B= {z: ||z-y0||<= ||Phi(y0)-y0||/(1-L) } is contained in D0

then Phi has an unique fixed point in D0, which is also in B,
and for every x0 in B
the iteration x(k+1)=Phi(x(k)) converges to this fixed point  at least
linearly with a rate of L (everything measured in the norm ||.||
chosen for the Jacobian).


I don't have matlab/fem available, but I guess they use something like the
"simplified newtons method" (the one which evaluates the Jacobian only once)
in order to solve the nonliner system, but clearly they must treat the nonlinear
system as such.  
But this is also not always convergent: you need a "sufficiently good initial
guess" (and the Jacobian sufficiently accurate) for this.

Without strong conditions on c(.) there are no globally convergent schemes

But if c(.) is strictly positive (or negative) everywhere you could go back to
your integral, discretize this one directly (then you get a uniformly convex
functional on R^n) and then apply a globally convergent minimizer
(for example cg with preconditioner, for example the Cholesky decomposition
 of your first stiffness matrix)
which are available for this case (this includes then a stepsize
scheme for possible damping the correction etc)

In this case the true full Newton's method _with damping strategy_
would also be globally convergent, but this is clearly much more ambitious
than the scheme you are using presently (and which is not uncommon in this
situation)

hth
peter


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Bonneel  
View profile  
 More options Mar 15, 3:39 am
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nicolas.bonn...@wwwwwwanadoo.fr>
Date: Mon, 15 Mar 2010 07:39:27 GMT
Local: Mon, Mar 15 2010 3:39 am
Subject: Re: non linear diffusion
Le 13/03/2010 05:42, Peter Spellucci a écrit :

> I don't have matlab/fem available, but I guess they use something like the
> "simplified newtons method" (the one which evaluates the Jacobian only once)
> in order to solve the nonliner system, but clearly they must treat the nonlinear
> system as such.
> But this is also not always convergent: you need a "sufficiently good initial
> guess" (and the Jacobian sufficiently accurate) for this.

Thanks for your reply!
Their help on nonlinear FEM is also available at:
http://www.mathworks.com/access/helpdesk/help/toolbox/pde/ug/f9756.html

> Without strong conditions on c(.) there are no globally convergent schemes

> But if c(.) is strictly positive (or negative) everywhere you could go back to
> your integral, discretize this one directly (then you get a uniformly convex
> functional on R^n) and then apply a globally convergent minimizer
> (for example cg with preconditioner, for example the Cholesky decomposition
>   of your first stiffness matrix)
> which are available for this case (this includes then a stepsize
> scheme for possible damping the correction etc)

> In this case the true full Newton's method _with damping strategy_
> would also be globally convergent, but this is clearly much more ambitious
> than the scheme you are using presently (and which is not uncommon in this
> situation)

yeah thanks! I have no background in nonlinear pde (at school everything
ended up being linear pde with a change of variable!).. but I know a bit
of nonlinear optimization... Is-it a traditional way of treating
nonlinear pde as nonlinear optimization ? (I mean, not directly on the
integral to be minimized as you say, but on the residual of the pde).

best,

--
Nicolas Bonneel
http://cs.ubc.ca/~nbonneel/


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Neuss  
View profile  
 More options Mar 15, 6:28 am
Newsgroups: sci.math.num-analysis
From: Nicolas Neuss <lastn...@kit.edu>
Date: Mon, 15 Mar 2010 11:28:13 +0100
Local: Mon, Mar 15 2010 6:28 am
Subject: Re: non linear diffusion

Nicolas Bonneel <nbonn...@cs.ubc.ca> writes:
> and scalar as well :)
> Actually, it comes from the minimization of integral(phi(||grad(u)||))
> giving c(u) = phi'(||grad(u)||)/||grad(u)||.

What is phi?

Nicolas


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Bonneel  
View profile  
 More options Mar 15, 1:03 pm
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nicolas.bonn...@wwwwwwanadoo.fr>
Date: Mon, 15 Mar 2010 17:03:01 GMT
Local: Mon, Mar 15 2010 1:03 pm
Subject: Re: non linear diffusion
Le 15/03/2010 03:28, Nicolas Neuss a crit :

> Nicolas Bonneel<nbonn...@cs.ubc.ca>  writes:

>> and scalar as well :)
>> Actually, it comes from the minimization of integral(phi(||grad(u)||))
>> giving c(u) = phi'(||grad(u)||)/||grad(u)||.

> What is phi?

> Nicolas

Hi,
I was planning to experiment with several phi...
* phi(||grad u|| = sqrt(1+grad(||u||)^2)
* phi(||grad u|| = ||u||^n (n=2 corresponds to the linear pde)
* gaussian-like
* any exponential-like function
* maybe others.... :p

thanks!

--
Nicolas Bonneel
http://cs.ubc.ca/~nbonneel/


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Bonneel  
View profile  
 More options Mar 15, 5:28 pm
Newsgroups: sci.math.num-analysis
From: Nicolas Bonneel <nbonn...@cs.ubc.ca>
Date: Mon, 15 Mar 2010 14:28:51 -0700
Local: Mon, Mar 15 2010 5:28 pm
Subject: Re: non linear diffusion

Nicolas Bonneel wrote:
> Le 15/03/2010 03:28, Nicolas Neuss a écrit :
>> Nicolas Bonneel<nbonn...@cs.ubc.ca>  writes:

>>> and scalar as well :)
>>> Actually, it comes from the minimization of integral(phi(||grad(u)||))
>>> giving c(u) = phi'(||grad(u)||)/||grad(u)||.

>> What is phi?

>> Nicolas

oops lots of typos

> Hi,
> I was planning to experiment with several phi...
> * phi(||grad u|| = sqrt(1+grad(||u||)^2)

phi(||grad u|| = sqrt(1+||grad u||^2)

> * phi(||grad u|| = ||u||^n (n=2 corresponds to the linear pde)

phi(||grad u|| = ||grad u||^n

    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Nicolas Neuss  
View profile  
 More options Mar 16, 6:31 am
Newsgroups: sci.math.num-analysis
From: Nicolas Neuss <lastn...@kit.edu>
Date: Tue, 16 Mar 2010 11:31:02 +0100
Local: Tues, Mar 16 2010 6:31 am
Subject: Re: non linear diffusion

Nicolas Bonneel <nbonn...@cs.ubc.ca> writes:
>> Hi,
>> I was planning to experiment with several phi...
>> * phi(||grad u|| = sqrt(1+grad(||u||)^2)
> phi(||grad u|| = sqrt(1+||grad u||^2)

This is the functional for the (minimal surface) Plateaux problem.

>> * phi(||grad u|| = ||u||^n (n=2 corresponds to the linear pde)
> phi(||grad u|| = ||grad u||^n

And this is the functional for the p-Laplacian.

There is already a lot in the literature about approximation of the
corresponding PDEs, especially in connection with finite elements.  You
can also assume that (most of) the finite element results have their
counterpart for structured meshes and finite difference discretizations.

Nicolas


    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2010 Google