Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Unterschied Laminar, Turbulence Off simpleFoam

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Unterschied Laminar, Turbulence Off simpleFoam (1201 mal gelesen)
Philipp4321
Mitglied
Masterant

Sehen Sie sich das Profil von Philipp4321 an!   Senden Sie eine Private Message an Philipp4321  Schreiben Sie einen Gästebucheintrag für Philipp4321

Beiträge: 2
Registriert: 21.03.2019

erstellt am: 21. Mrz. 2019 10:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Laminar_turbulenceProperties.PNG


TurbOff_turbulenceProperties.PNG

 
Guten Tag zusammen,

ich arbeite momentan an einem Case und ich bin auf eine Frage eines Kollegen gestoßen, welche ich mir mal angeschaut habe.

Bei dem Case geht es um eine Art Ventil, die Strömung hat am geringsten Querschnitt eine Reynoldszahl von 553 und liegt somit im laminaren Bereich. Es ist ein stationäres inkokmpressibles Problem.
Als solver für diesen Case verwende ich simpleFoam.

Die Frage ist nun wo der Unterschied zwischen den Einstellungen unter den turbulenceProperties liegt?

Zum einen habe ich folgende Einstellung verwendet:

simulationType  RAS;

RAS
{
    RASModel    laminar;
    turbulence  off;
    printCoeffs on;

Zum anderen:

simulationType  RAS;

RAS
{
    RASModel    kOmegaSST;
    turbulence  off;
    printCoeffs on;
}

Ich habe beide Fälle berechnet und in den log Dateien wird bei keinem der beiden Fälle eine Turbulenz berechnet, jedoch bekomme ich unterschiedliche Ergebnisse des physikalischen Wert P. Beide Simulationen konvergieren gut und werden bei 10^-5 abgebrochen.


Falls für diese Fragestellungen noch weitere Informationen benötigt werden, lassen sie es mich wissen. Ich denke jedoch, dass es sich heirbei um ein allgemeines Verständnisproblem handelt.


Vielen Dank und ich bin gespannt auf ihre Antworten!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 25. Mrz. 2019 10:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Philipp4321 10 Unities + Antwort hilfreich

Hi Philipp und willkommen im Forum,

ich machs kurz. Es gibt hier schon einen Unterschied aber nicht im mathematischen Sinne sondern in der Programmierung, dass dazu führt, dass man aufpassen muss. Wird das simulationType laminar verwendet, wird die Variable modelType auf laminar gesetzt (andererseits auf RASModel oder LESModel) - es ist ein Wort das gespeichert wird (TurbulenceModel.C. Entsprechend wird dann die Berechnung mit den laminaren oder RAS/LES Modellen durchgeführt. Wichtig ist oft die Funktion correct() der Modelle, welche in den Lösern mit folgendem Code aufgerufen wird (Ausschnitt aus pimpleFoam.C)

Code:

                turbulence->correct();

Wenn du turbulence off; im RAS Model wählst, dann wird die Funktion turbulence->correct() aufgerufen aber es passiert nichts im Sinne, dass die physikalischen Größen wie epsilon/k/nut/... nicht aktualisiert werden. Bspw. kEpsilon.C

Code:

template<class BasicTurbulenceModel>
void kEpsilon<BasicTurbulenceModel>::correct()
{
     if (!this->turbulence_)
     {
         return;
     }
.
.
.

Der Wert on; oder off; wird in der Variablen turbulence_ gespeichert (nur zur Info).
Ein kurzer Test mit dem pimpleFoam und pitzDaily zeigt verschieden Resultate bezüglich laminar und RAS mit turbulence off (sofern man den Code nicht versteht; vorab: Laminar und RAS mit turbulence off ergeben schon die gleichen Ergebnisse).

Ums kurz zu machen, in der UEqn.H Header Datei (die in jeder Applikation zu finden ist) wird folgendes aufgerufen:

Code:

+ turbulence->divDevReff(U)     // inco -> wird dann in divDevRhoReff weitergeleitet
+ turbulence->divDevRhoReff(U)  // compr

Entsprechend deiner Modelauswahl, wird die Funktion des Modells aufgerufen. Bspw. wird für die Reynolds-Stress Klasse (sollten die RAS Modelle sein) folgendes berechnet:

Code:

template<class BasicTurbulenceModel>
template<class RhoFieldType>
Foam::tmp<Foam::fvVectorMatrix>
Foam::ReynoldsStress<BasicTurbulenceModel>::DivDevRhoReff
(
    const RhoFieldType& rho,
    volVectorField& U
) const
{
    if (couplingFactor_.value() > 0.0)
    {
        return
        (
            fvc::laplacian
            (
                (1.0 - couplingFactor_)*this->alpha_*rho*this->nut(),
                U,
                "laplacian(nuEff,U)"
            )
          + fvc::Div
            (
                this->alpha_*rho*R_
              + couplingFactor_
               *this->alpha_*rho*this->nut()*fvc::grad(U),
                "div(devRhoReff)"
            )
          - fvc::Div(this->alpha_*rho*this->nu()*dev2(T(fvc::grad(U))))
          - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
        );
    }
    else
    {
        return
        (
            fvc::laplacian
            (
                this->alpha_*rho*this->nut(),
                U,
                "laplacian(nuEff,U)"
            )
          + fvc::Div(this->alpha_*rho*R_)
          - fvc::Div(this->alpha_*rho*this->nu()*dev2(T(fvc::grad(U))))
          - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
        );
    }
}

Wird hingegen laminar verwendet, wird bei einem linearen Viskosen Charakter (Newtonsche Fluide) folgendes berechnet:

Code:

template<class BasicTurbulenceModel>
Foam::tmp<Foam::fvVectorMatrix>
Foam::linearViscousStress<BasicTurbulenceModel>::DivDevRhoReff
(
    const volScalarField& rho,
    volVectorField& U
) const
{
    return
    (
      - fvc::Div((this->alpha_*rho*this->nuEff())*dev2(T(fvc::grad(U))))
      - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
    );
}

Du siehst also, die Berechnung ist unterschiedlich, wenn auch die Mathematik die gleiche ist. Siehe hierzu mein Buch, da hab ich das etwas erklärt. Basiert aber auf 2.3.x und ist out-of-date. Die ganze Sache gäbe mir Anreiz das alles erneut niederzuschreiben aber die Zeit hab ich gerade leider nicht.

Zusammenfassend:


  • Laminar und RAS/LES Modelle berechnen die Funktion divDevReff bzw. divDevRhoReff unterschiedlich
  • turbulence off; macht nichts anderes als das die Turbulenzgrößen k/epsilon/omega/nut etc. nicht aktualisiert werden, allerdings wird trotzdem mit der Funktion der RAS Modelle gearbeitet, dass einen Unterschied erzeugt WENN!!! die Turbulenzgrößen vorher mit einem Wert unterschiedlich zu NULL initialisiert wird.

Resultat:

Laminar und RAS ergeben die gleichen Ergebnisse; pitzDaily Test zeigt es; allerdings nur wenn die Variablen k, epsilon etc. mit sehr kleinen Werten initialisiert werden (bspw. 1e-16) und keine Wandfunktionen verwendet werden. Entsprechend der Mathematik haben wir den gleichen Spannungstensor nur mit einer erhöhten Diffusion (nut+nu = nuEff). Wenn nut ~ 0 ist, dann ist nuEff gleich nu und das RAS Modell sollte fast identische Werte zum laminaren Modell geben. Natürlich muss man hier die Größenordnungen analysieren. Es sollte klar sein, dass die Verwendung der RAS Modelle einen Mehraufwand in der Berechnung repräsentiert (mehr Gleichungen), die alle einen Rundungsfehler enthalten können und daher kleine Abweichungen erzielen und dadurch das Ergebnis minimal beeinflussen kann.

Ich hoffe meine Ausführung ist klar.


------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2463
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)
OpenFOAM-xxxx (ESI)

erstellt am: 02. Apr. 2019 08:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Philipp4321 10 Unities + Antwort hilfreich

Hallo Philipp,

da keine Rückmeldung, gehe ich davon aus, dass das Thema gelöst ist.

------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Philipp4321
Mitglied
Masterant

Sehen Sie sich das Profil von Philipp4321 an!   Senden Sie eine Private Message an Philipp4321  Schreiben Sie einen Gästebucheintrag für Philipp4321

Beiträge: 2
Registriert: 21.03.2019

erstellt am: 03. Apr. 2019 23:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Shorts,
Entschuldige bitte meine späte Rückmeldung. Mot deiner Antwort hast du meine Frage super beantwortet und soweit alle Unklarheiten beseitigt 
Ich habe dazu noch mit einem Kollegen über das Thema geredet und sobald er noch neue Infos dazu hat lasse ich sie ebenfalls zukommen. Aber du hast ja eigentlich schon alles gesagt! Vielen Dank dafür 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz