Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  solver modifizieren

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:  solver modifizieren (1494 mal gelesen)
johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 30. Jan. 2020 09:40    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!

Ich möchte einen solver für mich so modifizieren, dass dieser ein volVectorField U nach jedem timeStep neu einliest, da das Feld U instationär ist und immer einen andern Wert annimmt. Dafür habe ich in der C Datei des Solvers (unter applications zu finden) in der while schleife etwas eingefügt. Allerdings tut OpenFOAM so noch nicht das was ich möchte. Vielleicht hat jemand eine Idee wie ich es programmieren muss das es funktioniert. Meine c++ Kenntnisse sind leider nicht sehr gut.

Hier mein bisheriger code:

Code:

/*---------------------------------------------------------------------------*\
  =========                |
  \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox
  \\    /  O peration    | Website:  https://openfoam.org
    \\  /    A nd          | Copyright (C) 2011-2018 OpenFOAM Foundation
    \\/    M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.
    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
Application
    uncoupledKinematicParcelFoam
Description
    Transient solver for the passive transport of a single kinematic
    particle cloud, with optional mesh motion and mesh topology changes.
    Uses a pre-calculated velocity field to evolve the cloud.
\*---------------------------------------------------------------------------*/

#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "basicKinematicCollidingCloud.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])
{
    argList::addOption
    (
        "cloudName",
        "name",
        "specify alternative cloud name. default is 'kinematicCloud'"
    );


    #define NO_CONTROL
    #include "postProcess.H"

    #include "setRootCaseLists.H"
    #include "createTime.H"
    #include "createDynamicFvMesh.H"
    #include "createFields.H"
    #include "CourantNo.H"

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    Info<< "\nStarting time loop\n" << endl;

    while (runTime.loop())
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;
       
        volVectorField U
        (
            IOobject
            (
                "U",
                runTime.timeName(),
                mesh,
                IOobject::MUST_READ,
                IOobject::NO_WRITE
            ),
            mesh
        );
            Info<< "Reading field U\n" << endl;
       
       
        kinematicCloud.storeGlobalPositions();

        mesh.update();

        if (mesh.changing())
        {
            U.correctBoundaryConditions();

        }

        laminarTransport.correct();

        Info<< "Evolving " << kinematicCloud.name() << endl;
        mu = laminarTransport.nu()*rhoInfValue;

        kinematicCloud.evolve();

        runTime.write();

        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
            << nl << endl;
    }

    Info<< "End\n" << endl;

    return 0;
}


// ************************************************************************* //


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: 30. Jan. 2020 12: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 Nur für johanning 10 Unities + Antwort hilfreich

Hallo,

wieso dein neues Feld nichts macht ist klar. Deine U variable würde nur dann was machen, wenn sich dein Netz ändern würde. Für alle anderen Berechnung wird dir aber nicht dieses U sondern das U von createFields verwendet.

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

OpenFOAM® Tutorials | 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: 30. Jan. 2020 17:39    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 johanning 10 Unities + Antwort hilfreich

Hi,

um Dir das mal genauer zu erklären. In createFields.H erstellst Du Dein KinematicCloud objekt namens kinematicCloud. Das hält die Referenz zu Deinem U Feld. So in C++ ist es jetzt so, dass Du mehrere Instanzen von einem Feld erzeugen kannst, wenn es verschachtelt ist:

Code:

scalar A = 5;
Info << A << endl;  // Gibt 5 aus

Man kann das hier aber nicht machen:

Code:

scalar A = 5;
Info << A << endl;
scalar A = 6;          // Kompilierfehler, da A schon deklariert wurde

Das wiederum geht aber...

Code:

scalar A = 5;
Info << A << endl;
{
    scalar A = 6;      // Neue Instanz möglich da neuer Block { }
    Info << A << endl; // Gibt 6 aus
}   // << mit dem Schließen des Blocks '}' wird das zweitobjekt A gelöscht

Info << A << endl;     // Gibt 5 aus


Du hast sowas jetzt eigentlich gemacht, weshalb du keine Kompilierungsprobleme bekommst da es ja bereits ein U gibt. Dein zweites U macht aber überhaupt nichts :), außer in dem Fall, dass sich Dein Netz bewegt. Deine kinematicCloud hält aber die Referenz zum erst-erstellten U. Folglich musst du das erste U verändern. Das macht man so:

Code:

    #include "createFields.H"   // << Erste Instanz von U mit dem gerechnet wird, da das Objekt kinematicCloud auf dieses U referenziert
                                // U ist übrigens ein Objekt vom Typ volVectorField (eigentlich GeometricField)
    #include "CourantNo.H"

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    Info<< "\nStarting time loop\n" << endl;

    while (runTime.loop())
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;
      
        // Lese Dein neues U ein
        const volVectorField tempU
        (
            IOobject
            (
                "U",
                runTime.timeName(),
                mesh,
                IOobject::MUST_READ,
                IOobject::NO_WRITE
            ),
            mesh
        );
       
        // Wertänderung von U mittels tempU
        // Da kinematicCloud die Referenz von U hält, ist das jetzt hier auch aktualisiert
        U = tempU;
      
        // Testen ob U Feld aktualisiert
        Info<< kinematicCloud.U() << endl;

        kinematicCloud.storeGlobalPositions();



Sollte sich Deine Dichte auch ändern, musst Du das genauso machen. Kompilieren kann man den Code, sollte also funktionieren.

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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 30. Jan. 2020 19:07    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

hi Tobi,

erstmal vielen Dank für deine schnelle und vorallem ausführliche Antwort. Es hat mir wirklich weitergeholfen. Das U-Feld wird nun immer wieder neu erstellt. Allerdings werden komischerweise die Partikel in Paraview immer noch nicht mit dem Feld gekoppelt dargestellt.
Da sich das rho Feld auch ändert, habe ich versucht es genauso zu machen wie du es gesagt hast. Allerdings bekomme ich dann beim kompilieren des solvers immer eine Fehlermeldung.

Code:

Making dependency list for source file my_icoUncoupledKinematicParcelFoam.C
g++ -std=c++11 -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -O3  -DNoRepository -ftemplate-depth-100 -I/opt/openfoam7/src/lagrangian/basic/lnInclude -I/opt/openfoam7/src/lagrangian/intermediate/lnInclude -I/opt/openfoam7/src/TurbulenceModels/turbulenceModels/lnInclude -I/opt/openfoam7/src/TurbulenceModels/incompressible/lnInclude -I/opt/openfoam7/src/transportModels -I/opt/openfoam7/src/transportModels/incompressible/singlePhaseTransportModel -I/opt/openfoam7/src/finiteVolume/lnInclude -I/opt/openfoam7/src/regionModels/regionModel/lnInclude -I/opt/openfoam7/src/regionModels/surfaceFilmModels/lnInclude -I/opt/openfoam7/src/dynamicFvMesh/lnInclude -I/opt/openfoam7/src/meshTools/lnInclude -IlnInclude -I. -I/opt/openfoam7/src/OpenFOAM/lnInclude -I/opt/openfoam7/src/OSspecific/POSIX/lnInclude  -fPIC -c my_icoUncoupledKinematicParcelFoam.C -o Make/linux64GccDPInt32Opt/my_icoUncoupledKinematicParcelFoam.o
my_icoUncoupledKinematicParcelFoam.C: In function \u2018int main(int, char**)\u2019:
my_icoUncoupledKinematicParcelFoam.C:107:10: error: \u2018rho\u2019 was not declared in this scope
        rho = rhoTemp;
        ^~~
/opt/openfoam7/wmake/rules/General/transform:25: recipe for target 'Make/linux64GccDPInt32Opt/my_icoUncoupledKinematicParcelFoam.o' failed
make: *** [Make/linux64GccDPInt32Opt/my_icoUncoupledKinematicParcelFoam.o] Error 1


hier nochmal meine jetzige c Datei

Code:

/*---------------------------------------------------------------------------*\
  =========                |
  \\      /  F ield        | OpenFOAM: The Open Source CFD Toolbox
  \\    /  O peration    | Website:  https://openfoam.org
    \\  /    A nd          | Copyright (C) 2011-2018 OpenFOAM Foundation
    \\/    M anipulation  |
-------------------------------------------------------------------------------
License
    This file is part of OpenFOAM.
    OpenFOAM is free software: you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    for more details.
    You should have received a copy of the GNU General Public License
    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
Application
    uncoupledKinematicParcelFoam
Description
    Transient solver for the passive transport of a single kinematic
    particle cloud, with optional mesh motion and mesh topology changes.
    Uses a pre-calculated velocity field to evolve the cloud.
\*---------------------------------------------------------------------------*/

#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "basicKinematicCollidingCloud.H"

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

int main(int argc, char *argv[])
{
    argList::addOption
    (
        "cloudName",
        "name",
        "specify alternative cloud name. default is 'kinematicCloud'"
    );


    #define NO_CONTROL
    #include "postProcess.H"

    #include "setRootCaseLists.H"
    #include "createTime.H"
    #include "createDynamicFvMesh.H"
    #include "createFields.H"
    #include "CourantNo.H"

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    Info<< "\nStarting time loop\n" << endl;

    while (runTime.loop())
    {
        Info<< "Time = " << runTime.timeName() << nl << endl;
       
        // Lese Dein neues U ein
        Info<< "Reading field U" << nl << endl;
        const volVectorField tempU
        (
            IOobject
            (
                "U",
                runTime.timeName(),
                mesh,
                IOobject::MUST_READ,
                IOobject::NO_WRITE
            ),
            mesh
        );
       
        // Wertänderung von U mittels tempU
        // Da kinematicCloud die Referenz von U hält, ist das jetzt hier auch aktualisiert
        U = tempU;
       
        //Testen ob U Feld aktualisiert
        Info<< kinematicCloud.U() << endl;
       
       
        // Lese Dein neues rho ein
        Info<< "Reading field rho" << nl << endl;
        const volScalarField rhoTemp
        (
            IOobject
            (
                "rho",
                runTime.timeName(),
                mesh,
                IOobject::MUST_READ,
                IOobject::NO_WRITE
            ),
            mesh
        );
       
        rho = rhoTemp;
       

       
        kinematicCloud.storeGlobalPositions();

        mesh.update();

        if (mesh.changing())
        {
            U.correctBoundaryConditions();

        }

        laminarTransport.correct();

        Info<< "Evolving " << kinematicCloud.name() << endl;
        mu = laminarTransport.nu()*rhoInfValue;

        kinematicCloud.evolve();

        runTime.write();

        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
            << nl << endl;
    }

    Info<< "End\n" << endl;

    return 0;
}


// ************************************************************************* //



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: 30. Jan. 2020 20:29    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 johanning 10 Unities + Antwort hilfreich

Die Dichte ist auch nicht als Objekt rho sondern rhoInf in Deinen createFields.H definiert. Den Quellcode von FOAM hab ich übrigens auch 


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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 03. Feb. 2020 13: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


Bildschirmfoto2020-02-03um13.45.46.png

 
okay ja das macht sinn. Habe alles kompiliert bekommen und es läuft. Öffne ich es mit Paraview werden mir meine Partikel nicht gekoppelt mit dem Ultraschallfeld dargestellt. Sie bewegen sich alle entlang einer Linie durch das Feld. Da muss dann ein Fehler in den Einstellungen im constant/sytsem Ordner sein oder ??
ich habe die Darstellung in paraview als bild angehängt.

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: 04. Feb. 2020 13:21    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 johanning 10 Unities + Antwort hilfreich

Hi,

Wieso muss da ein Fehler vorliegen? Zu allererst solltest du prüfen, ob dein Geschwindigkeitsfeld auch wirklich upgedated wird. Ferner frage ich mich, wieso du denkst, dass sich deine Partikel den streamlines anpassen sollten? Das ist ja unphysikalisch. Ob und in wie weit sich deine Partikel dem Stromungsverlauf anpassen hängt davon an, wie groß deine Partikel sind und welche dichte diese haben (quasi inertia). Eine fliegende stahlkugel ändert ihren Kurs ja auch nicht komplett wenn ein Wind weht. Dann ist natürlich noch die Frage, welche Modelle du Ferner verwendest wie bspw. Gravity force etc.

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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 04. Feb. 2020 13:57    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

Mein plan für die Lösung wären folgende Schritte:
1. Schauen ob Utemp = U ist, bedeutet ob das neu erstellte Feld U gleich dem berechnet Feld U ist. Hier ist die Frage wie mache ich das ?
2. Falls ja, dann Muss noch wein Teil fehlen, in dem der kinematicCloud das neue Feld übergeben wird

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 04. Feb. 2020 14:02    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

Hi,

habe leider erst jetzt nach meiner letzten Antwort deine gesehen.
Also es war so gemeint, dass nicht die Partikel dem Feld folgen müssen, sondern wie sie die Partikel im Feld bewegen. Also inwieweit folgen die Partikel der Strömung. Dafür muss das Feld mit den Partikeln gekoppelt werden. Allerdings reicht eine Ein-Wege Kopplung aus.
Dafür würde ich jetzt im ersten Schritt schauen, ob das neu erzeigte Feld von U auch dem richtigen entspricht. Ob ich also das richtige einlese. Dann würde ich schauen was noch fehlt, um die PartikelCloud mit dem Feld zu koppeln.

Zur Zeit hänge ich damit fest, herauszufinden von Utemo = U ist. also ob das richtige Feld auch eingelesen und hinterlegt ist.
Oder bin ich auf dem völlig falschen weg?

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: 04. Feb. 2020 16:42    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 johanning 10 Unities + Antwort hilfreich

Hi,

also meine kurze Analyse der Klasse kinetmaticCloud war folgende:


  • Das Objekt hält eine Referenz zu U
  • Mit U = Utemp, wird U definitiv überschrieben
  • Damit sollte auch die Referenz Referenz aktualisiert werden (außer es wird nur zur Initialisierung verwendet und ein Const-Objekt angelegt)
  • Um das zu prüfen habe ich das hier eingebaut:

Code:

        //Testen ob U Feld aktualisiert
        Info<< kinematicCloud.U() << endl;



  • Damit bekommst du mit jedem Zeitschritt eine neue Ausgabe vom kompletten U-Feld
  • Das sollte sich Ändern. Du kannst auch nur kinematicCloud.U()[0] nehmen (dann wird nur der Werte der Zelle 0 angezeigt)
  • Letztere Option muss aber dann gewährleisten, dass auch der U-Wert von dieser Zelle sich ändert (muss aber nicht)

Um zu sehen, ob dein tempU Feld gelesen wird, kannst einfach mal aus einem Zeitordner das U Feld herauslöschen. Der Solver braucht es nämlich.
Sollte der Zeitschritt aber ohne Probleme durchlaufen, hast hier shcon n Fehler.

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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 05. Feb. 2020 09:44    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

ah okay danke für die nähere Erklärung.
Also ich habe ein U Feld gelöscht, und es wird mir ein error angezeigt, dass das U Feld fehlt, bedeutet das ist ja schon mal gut.
Ich habe mir auch die Felder ausgeben lassen und mit den U Feldern verglichen und sie unterscheiden sich. Also fehlt noch was zum erfolgreichen Einlesen der Felder.
Habe zur Zeit keine weitere Lösungsansätze..würde mich über weitere Hilfe sehr freuen.

Danke!!

LG

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: 05. Feb. 2020 17:05    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 johanning 10 Unities + Antwort hilfreich

Geb mal deinen Case mit 2 - 3 Zeitschritten her.

Grüße Tobi

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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 07. Feb. 2020 07:29    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

kannst du mir deine mail schicken?

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: 07. Feb. 2020 11: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 Nur für johanning 10 Unities + Antwort hilfreich

Kurzinfo.

Man kann auch den Projektordner zippen und nicht jeden einzelnen. Damit erreicht man, dass der Bearbeiter keine weiteren Umstände hat. 
Zeit ist kostbar wenn man nicht mehr studiert und man im Wahnsinn der Gesellschaft unterwegs ist. 

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

OpenFOAM® Tutorials | 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: 07. Feb. 2020 14:23    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 johanning 10 Unities + Antwort hilfreich

Hallo,

also die Übernahme des Geschwindigkeitsfelds ist in Ordnung:

Code:

// Zeitschritt 1
(0.022717 -2.87986 0.72871)          << alt
(0.000251282 -2.8207 0.695496)      << neu

// Zeitschritt 2
(0.000251282 -2.8207 0.695496)        << alt (von ZS 1)
(-0.0220559 -2.76104 0.662482)        << neu


Was mich gerade stutzig macht. Deine Partikel haben eine Dichte von 2650 kg/m³ (Aluminium). Mit einem Durchmesser von 4e-6 m folgt eine relativ große Masse (im Vergleich). Zusätzlich sind deine zeitlichen Änderungen im 0.1 ms Bereich. Aus dem normalen Gefühl würde ich sagen, dass die Partikel überhaupt keine Ahnung haben das sich da das Geschwindigkeitsfeld ändert (Trägheit). Das passiert so schnell, dass ich davon ausgehe, dass die Partikel ihre Laufbahn beibehalten.

Die Kopplung funktioniert jedenfalls. Alles weitere müsstest Du mit Deiner expertise Beantworten.

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

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

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

johanning
Mitglied



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

Beiträge: 16
Registriert: 08.10.2019

OpenFoamdev 7

erstellt am: 10. Feb. 2020 09:55    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

ich habe die Dichte deutlich kleiner gemacht und auch dann ändert sich nichts. Das Feld ist ein Ultraschallfeld und ändert sich ganz gewiss in diesem Zeitraum. Ich denke, dass das Feld zwar nach jedem Schritt richtig eingelesen wird, aber noch nicht erfolgreich übergeben wird, an die partikelcloud

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