CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Programming & Development

Nvd / tvd

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree2Likes
  • 2 Post By santiagomarquezd

Reply
 
LinkBack Thread Tools Display Modes
Old   October 7, 2011, 11:19
Default Nvd / tvd
  #1
New Member
 
Michael Buchmayr
Join Date: Mar 2010
Posts: 16
Rep Power: 8
MichiB is on a distinguished road
Hi,

I was wondering if there is a major difference in the implementation of NVD and TVD schemes in OpenFOAM.
Am I right in the assumption that the only real difference between NVD and TVD schemes in OpenFOAM is the limiters?
Is it right that in OpenFOAM TVD schemes are actually nothing but special NVD schemes?

I'm having a hard time grasping how convection schemes are implemented in OpenFOAM, but as far as I understand the code, both NVD and TVD should work identically up to the point where phict ( \Tilde{ phi_{C} } ) is being calculated.

The reason why I'm asking this is that I'd like to know how the van Leer TVD (or is it NVD?) scheme works and effects the diagonal dominance of my matrix...

Michi
MichiB is offline   Reply With Quote

Old   October 7, 2011, 16:30
Default
  #2
Senior Member
 
santiagomarquezd's Avatar
 
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 430
Rep Power: 15
santiagomarquezd will become famous soon enough
Michael take a look to the document in the following link:

https://docs.google.com/viewer?a=v&p...ht7iRTTn&hl=es

Regards.
norman1981 and sabin.ceuca like this.
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D.
Research Scientist
Research Center for Computational Methods (CIMEC) - CONICET/UNL
Tel: 54-342-4511594 Int. 7032
Colectora Ruta Nac. 168 / Paraje El Pozo
(3000) Santa Fe - Argentina.
http://www.cimec.org.ar
santiagomarquezd is offline   Reply With Quote

Old   October 10, 2011, 05:39
Default
  #3
New Member
 
Michael Buchmayr
Join Date: Mar 2010
Posts: 16
Rep Power: 8
MichiB is on a distinguished road
Thank you for the nice summery, Santiago. Te lo agradezco mucho!
It seems that I was wrong and TVD schemes in OpenFOAM do calculate r and not phict as I thought before.
Regards,
Michi
MichiB is offline   Reply With Quote

Old   October 30, 2015, 04:07
Default
  #4
Member
 
J.-H. Wang
Join Date: Oct 2010
Posts: 72
Rep Power: 7
f0208secretx is on a distinguished road
I have a particular question about Van Leer limiter implementation in OpenFOAM 2.4.0.

I used it to limit my divergence term by the following excerpt in fvSchemes
Code:
divSchemes
{
    default             Gauss linear;
    div(phi,U)          Gauss vanLeerV 2;
    div(phi,nuTilda)    Gauss limitedLinear 1;

}
The documentation here (http://cfd.direct/openfoam/user-guide/fvschemes/) suggested that the Van Leer limiter can be strictly bounded for scalar field. However, since I used it on U, I chose the multivariate van Leer and give it sort of an arbitrary number 2. The number 2 seems to do something, since if I don't specify this number then my solution could diverge. However, if one look into the code vanLeer.H, there does not seem to be a place for this number I specified:
Code:
  
(vanLeer.H)  
    vanLeerLimiter(Istream&)
    {}

    scalar limiter
    (
        const scalar,
        const scalar faceFlux,
        const typename LimiterFunc::phiType& phiP,
        const typename LimiterFunc::phiType& phiN,
        const typename LimiterFunc::gradPhiType& gradcP,
        const typename LimiterFunc::gradPhiType& gradcN,
        const vector& d
    ) const
    {
        scalar r = LimiterFunc::r
        (
            faceFlux, phiP, phiN, gradcP, gradcN, d
        );

        return (r + mag(r))/(1 + mag(r));
    }
Specifically, the red line seemed to suggest the in stream does not do anything. Whereas if one look into limitedLinear.H
Code:
(limtedLinear.H)
    limitedLinearLimiter(Istream& is)
    :
        k_(readScalar(is))
    {
        if (k_ < 0 || k_ > 1)
        {
            FatalIOErrorIn("limitedLinearLimiter(Istream& is)", is)
                << "coefficient = " << k_
                << " should be >= 0 and <= 1"
                << exit(FatalIOError);
        }

        // Avoid the /0 when k_ = 0
        twoByk_ = 2.0/max(k_, SMALL);
    }

    scalar limiter
    (
        const scalar cdWeight,
        const scalar faceFlux,
        const typename LimiterFunc::phiType& phiP,
        const typename LimiterFunc::phiType& phiN,
        const typename LimiterFunc::gradPhiType& gradcP,
        const typename LimiterFunc::gradPhiType& gradcN,
        const vector& d
    ) const
    {
        scalar r = LimiterFunc::r
        (
            faceFlux, phiP, phiN, gradcP, gradcN, d
        );

        return max(min(twoByk_*r, 1), 0);
    }
The instream was used and a blending factor was considered (bounded between 0 and 1).

I am very confused now if van leer takes any argument and how do I specify it? Further, if I specify a strict bound, how can one choose such a number... it does not make sense to me that one could set an absolute bound before solving the system, otherwise why do you need the solver for...
f0208secretx is offline   Reply With Quote

Old   October 31, 2015, 17:12
Default
  #5
Member
 
J.-H. Wang
Join Date: Oct 2010
Posts: 72
Rep Power: 7
f0208secretx is on a distinguished road
any ideas?
f0208secretx is offline   Reply With Quote

Old   November 5, 2015, 09:18
Default
  #6
Member
 
Davi Barreira
Join Date: Apr 2014
Location: Fortaleza
Posts: 76
Rep Power: 4
davibarreira is on a distinguished road
Why are you trying to bound the U (velocity)? The use of bounded values with vanLeer is usually for scalars who have limited values, such as volume fraction that has to be between 0 and 1. For vectors, you are using vanLeerV, so I would guess that it makes no sense to prescribe a limiter such as 2, and for such reason it does nothing.
davibarreira is offline   Reply With Quote

Reply

Thread Tools
Display Modes

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 Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Interpolation in OpenFoam srinath OpenFOAM Programming & Development 6 May 26, 2014 02:26
TVD ... Questioner Main CFD Forum 1 June 7, 2006 08:54
4th and 5th Order TVD Runge-Kutta Methods saygin Main CFD Forum 2 January 30, 2006 12:45
TVD TVD Main CFD Forum 0 November 17, 2005 12:25
TVD Schemes Matt Umbel Main CFD Forum 1 January 25, 2000 05:21


All times are GMT -4. The time now is 19:24.