
[Sponsors] 
September 11, 2012, 04:57 
1D advection equation

#1 
Member
Join Date: Mar 2012
Location: Munich, Germany
Posts: 67
Rep Power: 5 
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) ); 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 eulerequation 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 (1e06), too. No improvement occured regards treima 

September 12, 2012, 08:40 

#2 
Senior Member
Cyprien
Join Date: Feb 2010
Location: Stanford University
Posts: 236
Rep Power: 9 
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) ); Code:
divSchemes { div(phi,S) Gauss vanLeer; } Question about your equation : is it or ? Regards, Cyp 

September 12, 2012, 10:35 

#3 
Senior Member
Hisham El Safti
Join Date: Apr 2011
Location: Braunschweig, Germany
Posts: 248
Blog Entries: 10
Rep Power: 8 
Hello,
On a side note: I think you should implement a generic solution (3D) and introduce the onedimensional 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: 5 
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) ); 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 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Calculation of the Governing Equations  Mihail  CFX  7  September 7, 2014 06:27 
Model crashes while solving advection diffusion equation  cooljd  Main CFD Forum  3  August 23, 2012 10:40 
Total variation diminishing scheme for advection or advection dispersion equation  cooljd  Main CFD Forum  7  July 27, 2012 08:32 
error message  cuteapathy  CFX  14  March 20, 2012 07:45 
Constant velocity of the material  Sas  CFX  15  July 13, 2010 08:56 