Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Konvergenzkriterium in OpenFOAM erweitern

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:  Konvergenzkriterium in OpenFOAM erweitern (4278 mal gelesen)
TTB
Mitglied
CFD Engineer


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

Beiträge: 353
Registriert: 02.10.2008

BIM HVACTool für Windows OpenFOAM-2.2.x

erstellt am: 09. Mrz. 2009 11:33    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


simpleConvergenceFoam.zip

 
Hi,

bei einigen Simulationen ist es  wichtig, dass OpenFOAM selbständig mit der Berechnung abbricht, wenn eine vordefinierte Variable (wie U, p) konvergiert ist.

OpenFOAM besitzt diese Fähigkeit von Hause aus schon und muss halt nur erweitert werden. Als Beispiel wird der SimpleFOAM Solver gewählt. Dieser Solver soll abbrechen, wenn "U" und "p" das Konvergenzkriterium erreicht hat:

Wir ersetzen den Code in der "convergenceCheck.H" Datei wie folgt:

 

Zitat:

// check convergence

Info
<< "Initial residual for U = " << UEqnResidual << nl
<< "Initial residual for p = " << pEqnResidual << nl
<< endl;

if ((UEqnResidual < UConvergenceCriterion)
&& (pEqnResidual < pConvergenceCriterion))
{
    Info<< "Reached convergence criterion." << endl;
    runTime.writeAndEnd();
    Info<< "latestTime = " << runTime.timeName() << endl;
}


Des Weiteren auch den Code in "initConvergenceCheck.H":

 

Zitat:

// initialize values for convergence checks

scalar UEqnResidual = 0;
scalar pEqnResidual = 0;

scalar convergence = 0;

simple.readIfPresent("convergence", convergence);

scalar UConvergenceCriterion = convergence;
scalar pConvergenceCriterion = convergence;

simple.readIfPresent("UConvergenceCriterion", UConvergenceCriterion);
simple.readIfPresent("pConvergenceCriterion", pConvergenceCriterion);

Info
<< "Convergence criterion for U = " << UConvergenceCriterion << nl
<< "Convergence criterion for p = " << pConvergenceCriterion << nl
<< endl;


Man beachte, dass die Namen der Druck-, sowie Impulsgleichung zu "pEqn" und "UEqn" geändert wurden. Weiterhin wurde das alte vorhandene Konvergenzkriterium ausgetauscht.

Headerdateien anzupassen:

"pEqn.H":

 

Zitat:

// Non-orthogonal pressure corrector loop
    for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
    {
        fvScalarMatrix pEqn
        (
            fvm::laplacian(1.0/AU, p) == fvc::Div(phi)
        );

        pEqn.setReference(pRefCell, pRefValue);
        // retain the residual from the first iteration
        if (nonOrth == 0)
        {
            pEqnResidual = pEqn.solve().initialResidual();
            // maxResidual = max(eqnResidual, maxResidual);
        }
        else
        {
            pEqn.solve();
        }

        if (nonOrth == nNonOrthCorr)
        {
            phi -= pEqn.flux();
        }
    }

#   include "continuityErrs.H"

    // Explicitly relax pressure for momentum corrector
    p.relax();

    // Momentum corrector
    U -= fvc::grad(p)/AU;
    U.correctBoundaryConditions();


UEqn.H:

 

Zitat:

    // Solve the Momentum equation

    tmp<fvVectorMatrix> UEqn
    (
        fvm::Div(phi, U)
      + turbulence->divDevReff(U)
    );

    UEqn().relax();

    UEqnResidual = solve
    (
        UEqn() == -fvc::grad(p)
    ).initialResidual();


Ich hoffe, das war etwas verständlich ausgedrückt? Im Anhang habe ich als Beispiel den SimpleConvergenceFoam Solver beigefügt...

Viel Spass
TTB

[Diese Nachricht wurde von TTB am 09. Mrz. 2009 editiert.]

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

Marc Aurel
Mitglied



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

Beiträge: 51
Registriert: 04.11.2009

Ubuntu 10.04 LTD
Salome_6.3.0
Openfoam_2.0.x

erstellt am: 22. Dez. 2009 14:10    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 TTB 10 Unities + Antwort hilfreich

Hallo Thomas,

könntest Du bitte genauer erklären, wie der Solver "SimpleConvergenceFoam" in OpenFOAM installiert/compiliert wird.


Viele Grüße und bis bald

Marc

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

TTB
Mitglied
CFD Engineer


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

Beiträge: 353
Registriert: 02.10.2008

BIM HVACTool für Windows OpenFOAM-2.2.x

erstellt am: 22. Dez. 2009 20:51    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 Marc,

dieser Solver wurde für die OpenFOAM 1.5-dev Version, soweit ich mich noch richtig erinnere, programmiert. Kann aber auch sein, dass dieser unter OF Version 1.6 auch läuft.

Die Installation läuft wie folgt ab:

- Die Datei entpacken
- In der Konsole im Ordner den Befehl: "wmake" ausführen

Der Befehl übernimmt alle Einstellungen für den C++ Compiler und bindet alle erforderlichen Bibliotheken und Dateien. Da jetzt keine neue Bibliothek für OpenFOAM erzeugt werden soll, ansonsten müsste man folgendes eingeben: "wmake libso", reicht nur "wmake" aus.

Bis dann
Thomas

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

Marc Aurel
Mitglied



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

Beiträge: 51
Registriert: 04.11.2009

Ubuntu 10.04 LTD
Salome_6.3.0
Openfoam_2.0.x

erstellt am: 22. Dez. 2009 21:30    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 TTB 10 Unities + Antwort hilfreich

Hi Thomas,

habe den "wmake" Befehl im Verzeichnis:

"/OpenFOAM/OpenFOAM-1.6.x/applications/solvers/incompressible/simpleConvergenceFoam$ "
ohne Erfolg ausgeführt.

Danach kam aber nur folgende Meldung:

"make: *** Keine Regel vorhanden, um das Target »/home/aurel/OpenFOAM/OpenFOAM-1.6.x/src/OpenFOAM/lnInclude/CintDefs.H«,
  benötigt von »simpleConvergenceFoam.dep«, zu erstellen.  Schluss."

Für eine Hilfestellung bin ich sehr dankbar.


Viele Grüße

Marc


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

TTB
Mitglied
CFD Engineer


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

Beiträge: 353
Registriert: 02.10.2008

BIM HVACTool für Windows OpenFOAM-2.2.x

erstellt am: 22. Dez. 2009 21:38    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


simpleConvergenceFoam.zip

 
Hallo Marc,

der Fehler ist nicht gerade klar beschrieben. aber OpenFOAM möchte damit sagen, dass dieser Solver nicht für die OF Version 1.6 ist.  

So, Solver ist im Anhang!

Bis dann
Thomas

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