Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Initialisierung von rhoSimpleFoam

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:  Initialisierung von rhoSimpleFoam (2628 / mal gelesen)
Studentenmensch
Mitglied
Student


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

Beiträge: 47
Registriert: 12.05.2016

erstellt am: 28. Jul. 2016 16:49    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,

meine Rechnung mit rhoSimpleFoam konvergiert leider nicht auf meine Zielresiduen hin und ich erhalte große timestep continuity errors. Um das zu begehen habe ich bisher an den Relaxationsfaktoren rumgespielt, das Netz verbessert und nun möchte ich noch probieren, das Geschwindigkeitsfeld bzw. Druckfeld zu initialisieren.

Ich dachte ich könnte das mit potentialFoam lösen. Aber hier meckert er mir rum, dass ich falsche Dimensionen für U verwende.
Wobei U für beide solver die gleichen Dimensionen hat. Wahrscheinlich wird U aus p berechnet. Und p hat eben unterschiedliche Dimensionen. Für den inkompressiblen Fall m^2 / s^2  und den kompressiblen Fall kg/(m*s^2) .

Hat einer eine Idee wie ich das ganze lösen kann?

PotentialFoam starte ich mit den Einstellungen aus dem 0 Ordner. Dort ist p bei mir hinterlegt als kg/(m*s^2) (kompressibler Fall). Macht es Sinn hier die Dimensionen auf m^2 / s^2 zu ändern? Ich müsste ja dann für rhoSimpleFoam für alle p Felder wieder die Dimension auf (m*s^2) zurückstellen und irgendwie umrechnen im Anschluss an potentialFoam?

Oder gibt es eine andere Initialisierungsmöglichkeit für rhoSimpleFoam?

Vielen Dank und Grüße

------------------
Moritz Franke

[Diese Nachricht wurde von Studentenmensch am 28. Jul. 2016 editiert.]

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: 29. Jul. 2016 10:12    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 Studentenmensch 10 Unities + Antwort hilfreich

Hi Moritz,

a) Denken
b) Probieren
c) Fragen

Zuerstmal, potentialFoam funktioniert wunderbar in einem rhoSimpleFoam Case:

Code:

Create mesh for time = 0


potentialFlow: Operating solver in PISO mode

Reading velocity field U

Constructing pressure field p

Constructing velocity potential field Phi

No MRF models present


Calculating potential flow
GAMG:  Solving for Phi, Initial residual = 1, Final residual = 0.00437936, No Iterations 6
GAMG:  Solving for Phi, Initial residual = 1.54156e-05, Final residual = 7.6661e-07, No Iterations 2
GAMG:  Solving for Phi, Initial residual = 7.66134e-07, Final residual = 7.66134e-07, No Iterations 0
GAMG:  Solving for Phi, Initial residual = 7.66134e-07, Final residual = 7.66134e-07, No Iterations 0
Continuity error = 0.242919
Interpolated velocity error = 0.0001909
ExecutionTime = 0.94 s  ClockTime = 1 s


p hat keine unterschiedlichen Dimensionen (wäre ja auch komisch oder). Außer du nimmst Stellung auf inkompressible und kompressible Löser. Es ist klar, dass hier der Faktor der Dichte und damit auch die Einheiten geändert werden. So wie ich das rekonstruiere, hast du inkompressible gerechnet und dann lediglich diese Daten in einen kompressiblen Löser kopiert und weitergerechnet, oder? Da stellt sich mir jedoch gleich die Frage wieso das geht, da normalerweise sollte direkt nach der ersten Druck-Korrektur ein Fehler der Einheiten kommen (ausgehend von meiner Rekonstruktion; ich kann aus deiner Nachricht nicht herauslesen was du machst).

Aber PotentialFoam + Compressible funktioniert bei mir wunderbar (siehe oben die Ausgabe).

------------------
Viele Grüße,
Tobias Holzmann

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

Studentenmensch
Mitglied
Student


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

Beiträge: 47
Registriert: 12.05.2016

erstellt am: 29. Jul. 2016 15: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

a) Denken  - Check
b) Probieren - Check
c) Fragen - Momentan dabei

Im Tutorial für PotentialFoam steht bei p als Einheit: m^2/s^2
Im Tutorial für rhoSimpleFoam steht bei p als Einheit: kg/(m*s^2)

Ausgang ist ein rhoSimpleFoam Case bei dem ich im fvSolution phi ergänzt habe:

Code:
solvers
{
    p
    {
        solver          GAMG;
        tolerance       1e-08;
        relTol          0.01;
        smoother        GaussSeidel;
        cacheAgglomeration on;
        nCellsInCoarsestLevel 1000;
        agglomerator    faceAreaPair;
        mergeLevels     1;
    }
   
    Phi                // Phi Nur fuer potentialFoam wichtig
    {
        $p;
    }

    e
    {
        solver          smoothSolver;
        smoother        symGaussSeidel;
        tolerance       1e-06;
        relTol          0.01;
    }

    "(U|k|epsilon|omega)"
    {
        solver          smoothSolver;
        smoother        GaussSeidel;
        nSweeps         2;
        tolerance       1e-07;
        relTol          0.01;
    }
}

SIMPLE
{
    nUCorrectors    2;
    nNonOrthogonalCorrectors 0;
    rhoMin          rhoMin [ 1 -3 0 0 0 ] 0.5;
    rhoMax          rhoMAx [ 1 -3 0 0 0 ] 2.0;

    residualControl
    {
        p               1e-3;
        U               1e-4;
        e               1e-3;

        // possibly check turbulence fields
        "(k|epsilon|omega)" 1e-6;
    }
}

potentialFlow
{
    nNonOrthogonalCorrectors 10;
}

relaxationFactors
{
    fields
    {
        p               0.3; 
        rho             0.1;  //ursprünglich 0.1
    }
    equations
    {
        U               0.7;
        "(k|epsilon)"   0.9;
        e               0.9;
    }
}


Und im fvSchemes auch phi ergänzt habe. Hier hat er mir rumgemeckert das das fehlt.

Code:
ddtSchemes
{
    default         steadyState;
}

gradSchemes
{
    default         Gauss linear;
}

divSchemes
{
    default         none; //neu
    div(phi,U)      bounded Gauss upwind;
    div((muEff*dev2(T(grad(U))))) Gauss linear;
    div(phi,e)      bounded Gauss upwind;
    div(phi,epsilon) bounded Gauss upwind; 
    div(phi,k)      bounded Gauss upwind;
    div(phi,Ekp)    bounded Gauss upwind;
  
    div(phi,omega)  bounded Gauss upwind;
}

laplacianSchemes
{
    default         Gauss linear corrected;
}

interpolationSchemes
{
    default         linear;
}

snGradSchemes
{
    default         corrected;
}

fluxRequired
{
    default         no;
    p               ;
    Phi;                //neu für potentialFoam
}


Danach hat er mir noch rumgemeckert, das bei meinem Einlauf keine Dichte spezifiziert wäre. Also habe ich bei U gesetzt:

Code:

dimensions      [0 1 -1 0 0 0 0];

internalField   uniform (0 0 0);

boundaryField
{
    ".*"
    {
        type            fixedValue;
        value           uniform (0 0 0);
    }
   
    Inlet
    {
        type            flowRateInletVelocity;
        massFlowRate        0.1;
        rho                 rho;
        rhoInlet            1.2;

    }
   
    "outlet.*"
    {
        type            zeroGradient;
    }
      
}


und für p

Code:
dimensions      [1 -1 -2 0 0 0 0];

internalField   uniform 1.0e5;

boundaryField
{
    ".*"
    {
        type            zeroGradient;
    }
   
    Einlauf
    {
        type            zeroGradient;
    }
   
    "outlet.*"
    {
        type            fixedValue;
        value           $internalField;
    }
   
}


Anschließend habe ich potentialFoam gestartet mit folgendem ControlDict:

Code:
application     rhoSimpleFoam; //rhoPorousSimpleFoam;

startFrom       startTime;

startTime       0;       

stopAt          endTime;

endTime         200;  

deltaT          1;

writeControl    timeStep;

writeInterval   10;

purgeWrite      2;

writeFormat     ascii;

writePrecision  8;

writeCompression off;

timeFormat      general;

timePrecision   6;

graphFormat     raw;

runTimeModifiable true;

adjustTimeStep  true;

maxCo           0.8;



Was mir auch ganz gute Residuuen für phi ausgespuckt hat.

Anschließend habe ich direkt rhoSimpleFoam laufen lassen. Dann kam in der Konsole, dass die Einheiten für U nicht konform sind.

1. Mache ich vielleicht einen Fehler in der Abfolge der Befehle bzw. im ControlDict?

2. Was ist denn potentialFoam für ein Solver? In OpenFoam wird er nur als "Basis CFD Code" gelistet. Er muss ja irgendeine Annahme für rho treffen, kompressibel oder inkompressibel? Es heißt immer, potentialFoam löst das Geschwindigkeitsfeld. Dafür muss doch aber auch das Druckfeld bekannt sein? Sorry bin noch nicht so sehr mit der Theorie bewandert. Aufjedenfall ist die Einheit im Tutorial für potentialFoam anders als beim kompressiblen Fall.
Und rhoSimpleFoam ist doch ein kompressibler solver . Kommt es daher zum Konflikt wegen den Einheiten für p?

3. Idee: Ich nehme nach der Rechnung mit potentialFoam lediglich das Geschwindigkeitsfeld U und kopiere mir die U  file in meinen 0.Ordner für rhoSimpleFoam. Dann habe ich zumindest die Geschwindigkeit :-)

Nich ganz so trivial das zu durchsteigen

------------------
Moritz Franke

[Diese Nachricht wurde von Studentenmensch am 29. Jul. 2016 editiert.]

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: 01. Aug. 2016 10:36    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 Studentenmensch 10 Unities + Antwort hilfreich

Grüße dich,

also potentialFoam löst nur das Geschwindigkeitsfeld. Wenn du wissen willst wie die Gleichung (Poissen) aussieht, dann musst du lediglich die Navier-Stokes-Gleichung hernehmen und dann nochmals den Divergenzoperator anwenden. Dann erhält man die Poissen-Gleichung für den Druck, der hier gelöst wird. Der Druck wird dann verwendet, um das Geschwindigkeitsfeld abzuschätzen. Ein kurzer Blick in den Quellcode zeigt letztlich was gemacht wird. Ich hab hier 4.x verwendet und ohne Probleme potentialFoam in einem komperessiblen Löser laufen lassen. Die Ausgabe ist ein modifiziertes U File. Auch wenn ich die Einheiten in p ändere, macht er mir keine Probleme. Liegt auch auf der Hand wenn man die Quellen anschaut:

Code:

Info<< "Constructing pressure field " << pName << nl << endl;
volScalarField p
(
    IOobject
    (
        pName,
        runTime.timeName(),
        mesh,
        IOobject::READ_IF_PRESENT,
        IOobject::NO_WRITE
    ),
    mesh,
    dimensionedScalar(pName, sqr(dimVelocity), 0),
    pBCTypes
);


Wie man sieht, werden die Dimensionen explizit gewählt. Vielleicht ist das aber auch neu hinzugekommen in Foam 4.x. Ergo, es müsste in deinem Fall gehen. Lediglich das Schlüsselwort potentialFlow müsste in dein fvSolution hinzugefügt werden. Zudem müsste noch ein Löser für Phi eingetragen werden. Dann müsstest du potentialFoam ausführen können. Manchmal hat potentialFoam Probleme mit Randbedingungen.

------------------
Viele Grüße,
Tobias Holzmann

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

Studentenmensch
Mitglied
Student


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

Beiträge: 47
Registriert: 12.05.2016

erstellt am: 05. Aug. 2016 11:46    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

Super Erklärung. Danke -- > Gelöst

------------------
Moritz Franke

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