# [CIG-MC] Re: More advection questions

Eh Tan tan2 at geodynamics.org
Wed Sep 19 15:23:15 PDT 2007

```To rephrase Norm's question:

This operation is prone to numerical oscillatory artifact in the upwind
direction. Since v dot grad(T) = div(v*T) - T*div(v) and div(v)==0 in
the incompressible flow, the advection term can be computed via
div(v*T). Is there any disadvantage of this approach?

Eh

Norm Sleep wrote:
>
> Question for mailing list.
>
> The overshoot in temperature is a major problem for me as I want to
> keep track of instabilities in plume material that is ponded at the
> base of the sloping lithosphere. As you see I have been unable to
> figure out how and where the diffusion advection code evaluated the
> change in temperature in a time step.  A simple stable routine with
> explicit derivatives and shorter time steps seems a lot better to me.
>
> I can do this in FORTRAN trivially.  div grad T is already centered on
> a cart3-D grid so the explicit derivatives are obvious if I can find
> neighbors.
>
> It is easier to use div(vT) in 2-D and the treatment carries through
> to 3-D
>
> call the temperature at a node T_0 and the (usually 6) neighbor nodes
> T_i.  The velocity along the coordinate between the nodes is V_i.
>
> I sum the contribution of the incoming nodes as sum V_i T_i
>
> I sum the outgoing nodes as sum V_i _T_0
>
> This exactly conserves energy.  In 2-D the sum of the velocities with
> a stream function approach is exactly zero.  In 3-D, the velocities
> will sum to nearly zero.  The effect will not add up if the residual
> div v does not stay at the same nodes each step.
>
> Is there some reason for not doing this?
>
> If not, I would like to do it, once I can figure out how to find
> nearest neighbors and the velocities. The advection step is only a
> modest part of the running time so having the program slow there is
> not a problem for me.
>
> thanks
>
> Norm
>

--
Eh Tan
Staff Scientist
Computational Infrastructure for Geodynamics
2750 E. Washington Blvd. Suite 210