# 1D advection equation

 User Name Remember Me Password
 Register Blogs Members List Search Today's Posts Mark Forums Read

 LinkBack Thread Tools Display Modes
September 11, 2012, 04:57
1D advection equation
#1
Member

Join Date: Mar 2012
Location: Munich, Germany
Posts: 67
Rep Power: 7
Hello,

I´m trying to solve the onedimensional advection equation

with OpenFOAM.

I took following code:
Code:
    solve
(
fvm::ddt(u) + coeff*fvc::div(u * unitVector_x)
);
But now occours a problem, the solution shows some waves (you can see in the attached picutre). My boundary conditions are

left boundary - fixedValue, uniform 1
right boundary - zeroGradient
lower boundary - zeroGradient
upper boundary - zeroGradient

Normally there is should be one frontline, all values on the left of the frontline should be 1 and all values on the right 0.

Does anyone have any suggestions concerning my problem?

I had several ideas, why there occure this error. This equation is hyperbolic, another pde of this type is the euler-equation in rhoCentralFoam. Do I have to do some interpolation, too? Or are the numerical errors from OpenFOAM this huge? I´ve tried with a very small timestep (1e-06), too. No improvement occured

regards
treima
Attached Images
 advection.jpg (35.8 KB, 77 views)

 September 12, 2012, 08:40 #2 Senior Member   Cyprien Join Date: Feb 2010 Location: Stanford University Posts: 262 Rep Power: 11 Hi ! The equation you want to solve is hyperbolic and require a special discretization scheme like flux limiter. For exemple, if you want to solve the equation : If phi is the flux (F(S)) defined otherwise, you can set a van Leer scheme defining Code: surfaceScalarField phiS = fvc::flux(phi/S,S, "div(phi,S)"); solve ( fvm::ddt(S) + fvc::div(phiS) ); and indicate the vanLeer scheme in fvScheme : Code: divSchemes { div(phi,S) Gauss vanLeer; } The solution is then much more stable. You can adapt easily this example to your situation. Question about your equation : is it or ? Regards, Cyp

 September 12, 2012, 10:35 #3 Senior Member     Hisham Elsafti Join Date: Apr 2011 Location: Braunschweig, Germany Posts: 253 Blog Entries: 10 Rep Power: 10 Hello, On a side note: I think you should implement a generic solution (3D) and introduce the one-dimensional condition by defining all side patches (parallel to dimension of interest) as empty! Regards Hisham

September 13, 2012, 04:37
#4
Member

Join Date: Mar 2012
Location: Munich, Germany
Posts: 67
Rep Power: 7
Thanks for your advice, it helped me a lot to solve my problem!

The background for solving the onedimensional advection equation was to have a "simple" first step into the world of hypberbolic equations in OpenFOAM.
Of course it is more useful to implement a 3D solution of the problem, so it should be this equation:

My code looks like the following. u is a volScalarField.

Code:
volVectorField uVector (u * normalVector);

surfaceScalarField phiU ("phiU", fvc::interpolate(uVector) & mesh.Sf());

surfaceScalarField phiUflux = fvc::flux(phiU, U, "div(phiU,u)");

solve
(
fvm::ddt(u) + c*fvc::div(phiUflux)
);
Perhaps the first line is not so nice, but you can define a normal vector which fits for the problem, in my case (1,0,0).

I´ve changed my boundary conditions, too. For the upper and the lower boundary I take "empty" and not "zeroGradient".

Dou you have any suggestions for improving my code?

As you can see in the screenshot below, this solution works for the problem shown in my first post. In the next days I´ll do some tests for other geometries and, if this works, I`ll take more complicated hyperbolic equations.

regards
treima
Attached Images
 advection.jpg (27.7 KB, 80 views)

 Thread Tools Display Modes Linear Mode

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Mihail CFX 7 September 7, 2014 06:27 cooljd Main CFD Forum 3 August 23, 2012 10:40 cooljd Main CFD Forum 7 July 27, 2012 08:32 cuteapathy CFX 14 March 20, 2012 07:45 Sas CFX 15 July 13, 2010 08:56

All times are GMT -4. The time now is 17:12.

 Contact Us - CFD Online - Privacy Statement - Top