Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Variable Haltekraft implementieren

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:  Variable Haltekraft implementieren (1851 mal gelesen)
u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 22. Feb. 2013 14:41    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 Zusammen,

ich bin OpenFOAM-Neuling und würde gerne Eure Hilfe in Anspruch nehmen.

Ich simuliere einen Wassertropfen in einem vom Luft durchströmten Kanal. Ich bin davon ausgegangen, dass interFoam dafür der beste Solver ist und habe den DamBreak Case als Grundlage genommen. Ich habe es geschafft, den Fall so zu modifizieren, dass ich nun einen 2D-Kanal von 20cm Länge und 1cm Höhe habe. Der Wassertropfen befindet sich zu Beginn in der Mitte des Kanals. Luft strömt von links ein und rechts aus und setzt den Wassertropfen mit der Zeit in Bewegung und bläst ihn aus dem Kanal. Soweit funktioniert alles ganz gut.

Nun möchte ich eine variable Haltekraft einführen, die auf den Wassertropfen wirkt und während der Simulation so angepasst wird, dass der Tropfen für unterschiedliche/variierende Strömungsgeschwindigkeiten immer in der Mitte des Kanals bleibt. Ich bin aber etwas ratlos, wie sich das am besten umsetzen lässt, und konnte bisher auch weder hier noch anderswo etwas dazu finden. Wenn also jemand eine Idee hat, wäre ich sehr dankbar.

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: 22. Feb. 2013 19:04    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 u2947 10 Unities + Antwort hilfreich

Hi und willkommen,

bin grade kurz angebunden aber was hat es mit diesem "statischen" Tropfen auf sich?
Schon mal mit bubbleFoam gearbeitet?

------------------
Grüße Tobias Holzmann

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 25. Feb. 2013 14:15    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, danke für die Antwort.

Ziel des Ganzen ist die Bestimmung des Widerstandskoeffizienten des Tropfens. Für jede vorgegebene Strömungsgeschwindigkeit soll die virtuelle Haltekraft bestimmt werden, um den Tropfen an Ort und Stelle zu halten. Wenn die Haltekraft bekannt ist soll dann damit (in Abhängigkeit von der Geometrie, Tropfengröße, etc.) der Widerstandskoeffizient berechnet werden, der für Folgeversuche benötigt wird.

Ich habe bisher noch nicht mit bubbleFoam gearbeitet. Ich möchte nur einen Tropfen betrachten und nicht viele, ich vermute aber mal das spielt keine Rolle?
Außerdem habe ich auf "openfoamwiki.net" folgendes gefunden: "The diameter of the particles1 constituting the dispersed phase is assumed to be constant." Kann bubbleFoam trotzdem Verformungen des Tropfens modellieren? Das wäre nämlich sehr wichtig für mich. Der Tropfen soll auch keine "Kugel" sein, die durch den Kanal schwebt, sondern mehr oder weniger halbkreisförmig an der Wand haften.

Wäre es für den Anfang vielleicht möglich, die Gewichtskraft als Haltekraft zu nehmen? Die statt nach unten nach links wirken zu lassen ist ja kein problem, aber kann man die während der laufenden Simulation (automatisch) anpassen? Langfristig wäre aber eine separate Kraft besser.

Gruß
Moritz

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 17. Jun. 2013 15: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


interFoam_simple_control.txt

 
Hi, ich habe eine Lösung gefunden, falls es noch jemanden interessieren sollte. Es ist ziemlich einfach, die Gravitation während der Simulation zu variieren. Ich habe in einem anderen Forum einen Ansatz gefunden (http://www.cfd-online.com/Forums/openfoam/71740-variation-gravity-time-2.html) und dann abgewandelt. Ich hänge eine (sehr primitive!) Möglichkeit als Beispiel an.

[Diese Nachricht wurde von u2947 am 18. Jun. 2013 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: 17. Jun. 2013 17: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 Nur für u2947 10 Unities + Antwort hilfreich

Hey,

dein Anhang ist beschädigt bzw. kann nicht gefunden werden.

------------------
Grüße Tobias Holzmann

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 18. Jun. 2013 09:56    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

Sollte jetzt funktionieren.

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: 18. Jun. 2013 12: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 u2947 10 Unities + Antwort hilfreich

Interessant:

das wurde implementiert?

Code:

forAll(mesh.cells(),i)  //forAll(mesh.C(),i)    works as well
        {
          double currentPosition = mesh.C()[i][0];
          if (currentPosition < 0.)
          {
            alphaSum -= alpha1[i];  //*mesh.V()[i];  multiplication with cell voulme only necessary for non-uniform mesh
          }
          else if (currentPosition > 0.)
          {
            alphaSum += alpha1[i];
          }
        }
        Info << "\nalphaSum: " << alphaSum << "\n";
       
       

        if (alphaSum < 0.)
        {
          g=gunits*vector(0,-1,0) + gunits2*vector(1,0,0);
        }
        else if (alphaSum > 0.)
        {
          g=gunits*vector(0,-1,0) + gunits2*vector(-1,0,0);
        }
        else
        {
          g=gunits*vector(0,-1,0);
        }

        // VVPF c:
        Info << " AnalyzeGravity "
            << " " << g.component(vector::X).value()
            << " " << g.component(vector::Y).value()
            << " " << g.component(vector::Z).value()
            << endl;
       
       


        // VVPF d:
        // Comes from the file "createFields.H". You dont have to delete the lines
        // in "createFields.H". The field gh is just initilaized there.
        Info<< "Calculating field g.h\n" << endl;
        volScalarField gh("gh", g & mesh.C());
        surfaceScalarField ghf("ghf", g & mesh.Cf());


------------------
Grüße Tobias Holzmann

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 19. Jun. 2013 10: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

Wie gesagt, es ist sehr primitiv, funktioniert aber grundsätzlich. Das war mein erster Versuch. Eigentlich war ich dabei, eine ordentliche Regelung zu implementieren, aber habe dann bemerkt, dass der Tropfen sich merkwürdig verhält
(http://ww3.cad.de/foren/ubb/Forum527/HTML/000449.shtml)
und muss jetzt erst mal herausfinden, woran das liegt.

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: 19. Jun. 2013 12:18    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 u2947 10 Unities + Antwort hilfreich

Hi,


für deine Haltekraft änderst du also die Erdbeschleunigung g. Hierzu addierst du dann eine Beschleunigung (negativ oder positiv) in einer entsprechenden Richtung, oder? Den Betrag der Kraft leitest du über die Beschleunigung her; sehe ich das richtig? Die Betragsänderung die du implementiert hast ist immer 1 m / s ² oder?

------------------
Grüße Tobias Holzmann

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 19. Jun. 2013 14: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

Hi,

nicht ganz, es sind 1.5 m/s². Ich definiere am Anfang ja zwei skalare Größen

    const dimensionedScalar gunits("gunits", dimensionSet(0,1,-2,0,0,0,0), 9.81);
    const dimensionedScalar gunits2("gunits", dimensionSet(0,1,-2,0,0,0,0), 1.5);

die erste ist der Betrag der normalen Gravitation, die zweite die (willkürlich gewählte) Haltebeschleunigung. Nach der Abfrage, ob sich der Tropfen auf der rechten oder linken Kanalseite befindet, setzt ich daraus dann den Gravitationsvektor zusammen.

    g=gunits*vector(0,-1,0) + gunits2*vector(1,0,0);
bzw.
    g=gunits*vector(0,-1,0) + gunits2*vector(-1,0,0);

Die Erdbeschleunigung wirkt also in jedem Fall nach unten und die Haltebeschleunigung nach rechts oder links. Wenn die Beschleunigung so gewählt ist, dass der Tropfen stillsteht, kann ich mir dann die Haltekraft als Produkt von Haltebeschleunigung und Tropfenmasse ausrechnen.
Das geht natürlich nicht mit einem festen Wert, aber man kann ja den Betrag der Beschleunigung während der Rechnung anpassen.

    retentionAcceleration = ...
    dimensionedScalar retentionScalar("gunits", dimensionSet(0,1,-2,0,0,0,0), retentionAcceleration);
    g = retentionScalar*vector(1,0,0);

(Hier jetzt ohne Erdbeschleunigung)

Gruß
Moritz

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: 21. Jun. 2013 12: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 Nur für u2947 10 Unities + Antwort hilfreich

Hi,

so ganz komm ich noch nicht mit.
Du änderst doch deine Erdbeschleunigung "g" bei jeder Iteration?!

------------------
Grüße Tobias Holzmann

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

u2947
Mitglied
Student


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

Beiträge: 10
Registriert: 22.02.2013

erstellt am: 21. Jun. 2013 14:35    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, das war vielleicht etwas missverständlich ausgedrückt.

Ich ändere "g", was für den Solver die Erdbeschleunigung ist, und das bei jeder Iteration. Nur was das "g" für mich bedeutet ist unterschiedlich. Im ersten Fall

    g=gunits*vector(0,-1,0) + gunits2*vector(1,0,0);

addiere ich zu der normalen Erdbeschleunigung noch eine zweite Beschleunigung hinzu, aber da die Vektoren senkrecht aufeinander stehen, sind die beiden ja prinzipiell unabhängig voneinander.

Im zweiten Fall

    g = retentionScalar*vector(1,0,0);

(stammt aus einer späteren Version, nicht aus dem Code den ich hochgeladen habe) rechne ich ohne Schwerkraft und das "g" besteht nur noch aus der Haltebeschleunigung, auch wenn der Solver es weiterhin als Gravitation behandelt. Ich zweckentfremde die Gravitationskomponente quasi.

Hoffe das war jetzt verständlicher.

Gruß
Moritz

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