Autor
|
Thema: rhoSimpleFoam Problem (3384 mal gelesen)
|
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 13. Mai. 2010 13:35 <-- editieren / zitieren --> Unities abgeben:
Hallo an alle! Ich bin ein relativer Neuling was die Verwendung von OF angeht. Ich soll Fluentrechnungen mit OF wiederholen. Bei der Berechnung einer Rohrdurchströmung erhalte ich mit dem Solver rhoSimpleFoam ein Druck- und Geschwindigkeitsfeld, dass mit dem von Fluent sehr gut überein stimmt. Das Problem besteht im Temperaturfeld: Bei OF geht ein Teil der Totalen Enthalpie bei der Durchströmung verloren, obwohl ich adiabate Randbedingungen geesetzt habe. Bei Fluent hingegen bleibt die Enthalpie erhalten, d.h. die Enthalpie an der Ein-und Austrittsfläche sind etwa gleichgroß, im Gegensatz zum OF. Kann es sein, dass in der Enerhiebilanz, die Dissipation der turbulenten Strömung bei OF nicht in Wärme umgewandelt wird, und dadurch der Enthalpieverlust verursacht wird. Kann mir jemand ein gutes Tutorial empfehlen, indem beschrieben wird wie man die Solver selber bearbeitet und z.B. zusätzliche Terme in die Energiegleichung einführen kann? Im Voraus vielen Dank. Gruß Chrisi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 14. Mai. 2010 08:53 <-- editieren / zitieren --> Unities abgeben:
Hi, ich bin es noch mal. Kann mir vielleicht jemand sagen, ob es eventuell einen Unterschied zwischen Fluent und OF gibt, was die Berechnung der Temperatur betrifft? Sind die Temperaturen evtl. gar nicht vergleichbar? Können bei einer kompressiblen Gasströmung die Druck- und Geschwindigkeitsfelder überhaupt identisch sein, wenn sich das Temperarturfeld unterscheidet? Gruß Chrisi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
t.schumacher Mitglied CFD Engineer
Beiträge: 184 Registriert: 03.05.2010
|
erstellt am: 21. Mai. 2010 08:20 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisi1984
|
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 21. Mai. 2010 08:32 <-- editieren / zitieren --> Unities abgeben:
Ich verwende die Version 1.6. Die Daten exportiere ich mit foamDataToFluent und mache anschließend auch die auswertung mit Fluent. Inzwischen habe ich die Gleichungen des Solvers etwas verändert. Ich habe in den hEqn zusätzlich den Reibungsterm implementiert. So sieht nun mein hEqn aus: volTensorField gradU = fvc::grad(U); volTensorField tau = - turbulence->muEff() * (gradU + gradU.T()) + (2.0/3.0 * turbulence->muEff() * fvc::div(U)) * I; volScalarField tauGradU = tau && gradU; fvScalarMatrix hEqn ( fvm::div(phi, h) - fvm::Sp(fvc::div(phi), h) - fvm::laplacian(turbulence->alphaEff(), h) == fvc::div(phi/fvc::interpolate(rho), p, "div(U,p)") - p*fvc::div(phi/fvc::interpolate(rho)) - tauGradU Nun erhalte ich am Ausgang eine zu hohe Temperatur, es erfolgt eine Zunahme der totalen Enthalpie. Es fehlt wohl noch ein Senkenterm in hEqn. Vielleicht könnt ihr mir ja einen Tipp geben. Gruß Chrisi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
t.schumacher Mitglied CFD Engineer
Beiträge: 184 Registriert: 03.05.2010
|
erstellt am: 21. Mai. 2010 08:51 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisi1984
|
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 21. Mai. 2010 15:35 <-- editieren / zitieren --> Unities abgeben:
Ja ich habe die Daten auch in ParaFoam betrachtet. Der Fehler liegt definitiv nicht bei der Datenkonvertierung! Ich habe aber hier http://www.cfd-online.com/Forums/openfoam-solving/59468-full-energy-equation-enthalpy.html den vermutlichen Grund des Problems erfahren. Aber ich kann es leider nicht umsetzten. Das Problem ist, dass ich den Tensor tau mit den Geschwindigkeiten der Zellzentren gebildet habe. Die Reibung in der Impulsgleichung U wird aber direkt mit den Geschwindigkeiten auf den Zellsurfaces berechnet. Dies führt zu Inkonsistenzen mit der Folge, dass ich fälschlicherweise eine Zunahme der totalen Enthalpie zu verzeichnen habe. Der Term für die viskose Dissipation sollte so lauten: uFace = interpolate(U,phi,"methodString"); uFace = uFace + ( phi/interpolate(rho) - uFace & mesh.Sf() ) * mesh.Sf()/mesh.magSf()/mesh.magSf(); viscDiss = div( uFace & interpolate(tau) & mesh.Sf() ) - U & div(tau) Es wäre schön wenn mir jemand diese Gleichungen in OpenFoam-Sprache übersetzten könnte, denn mir ist es bisher nicht erfolgreich gelungen.
Gruß Chrisi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TTB Mitglied CFD Engineer
Beiträge: 353 Registriert: 02.10.2008 BIM HVACTool für Windows OpenFOAM-2.2.x
|
erstellt am: 25. Mai. 2010 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisi1984
Hi Chrisi, ich gehe mal davon aus, dass du den Therm "tauGradU" einfach mit der neuen Variable "viscDiss" tauschen musst. Code:
volTensorField gradU = fvc::grad(U);volTensorField tau = - turbulence->muEff() * (gradU + gradU.T()) - (2.0/3.0 * turbulence->muEff() * fvc::Div(U)) * I; uFace = interpolate(U,phi,"methodString"); // <---- Hier denke ich, dass du ein Schema noch vorgeben musst. uFace = uFace + ( phi/interpolate(rho) - uFace & mesh.Sf() ) * mesh.Sf()/mesh.magSf()/mesh.magSf(); volScalarField viscDiss = div( uFace & interpolate(tau) & mesh.Sf() ) - U & div(tau); fvScalarMatrix hEqn ( fvm::Div(phi, h) - fvm::Sp(fvc::Div(phi), h) - fvm::laplacian(turbulence->alphaEff(), h) == fvc::Div(phi/fvc::interpolate(rho), p, "div(U,p)") - p*fvc::Div(phi/fvc::interpolate(rho)) - viscDiss )
Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 25. Mai. 2010 14:10 <-- editieren / zitieren --> Unities abgeben:
Danke für deine Antwort! Mir ist bewusst, dass ich mein tau&&gradU gegen vissDiss tauschen muss. Mein Problem besteht in der Umsetzung der Terme mit uFace=... in OpenFoam-Sprache. Wie müssen die Gleichungen geschrieben werden, dass ich meinen Solver damit füttern kann und dieser erfolgreich compiliert? Gruß Chrisi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TTB Mitglied CFD Engineer
Beiträge: 353 Registriert: 02.10.2008 BIM HVACTool für Windows OpenFOAM-2.2.x
|
erstellt am: 25. Mai. 2010 18:04 <-- editieren / zitieren --> Unities abgeben: Nur für Chrisi1984
Hallo Chrisi, Zitat: Mir ist bewusst, dass ich mein tau&&gradU gegen vissDiss tauschen muss
sorry, das war nicht böse gemeint. Vielleicht kannst du den ganzen Solver mal hier hochladen? Ich kann mir vorstellen, das der Compiler wegen "uFace" meckert. Die Variable muss du noch vorher deklarieren: Beispiel: volVektorField uFace = .... Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Chrisi1984 Mitglied Berechnungsingenieur
Beiträge: 35 Registriert: 13.05.2010
|
erstellt am: 26. Mai. 2010 08:20 <-- editieren / zitieren --> Unities abgeben:
Hi! Also so sieht hEqn des Solvers aus: surfaceScalarField uFace = phi/fvc::interpolate(rho); surfaceScalarField uFace2 = uFace + ( phi/fvc::interpolate(rho) - uFace & mesh.Sf() ) * mesh.Sf()/mesh.magSf()/mesh.magSf();
viscDiss = div( uFace2 & interpolate(tau) & mesh.Sf() ) - U & div(tau); fvScalarMatrix hEqn ( fvm::div(phi, h) - fvm::Sp(fvc::div(phi), h) - fvm::laplacian(turbulence->alphaEff(), h) == fvc::div(phi/fvc::interpolate(rho), p, "div(U,p)") - p*fvc::div(phi/fvc::interpolate(rho)) - viscDiss ); hEqn.relax(); eqnResidual = hEqn.solve().initialResidual(); maxResidual = max(eqnResidual, maxResidual); thermo.correct(); Mein Problem ist zum einen, dass der Compiler an dem interpolations Aufruf meckert. Und an der Variable uFace ansich. Als was muss ich diese definieren? Gruß Chrisi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |