Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Frage bzgl. interfaceProperties

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:  Frage bzgl. interfaceProperties (337 mal gelesen)
OFAmateur007ek
Mitglied


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

Beiträge: 5
Registriert: 04.09.2020

erstellt am: 27. Jan. 2023 17:09    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 miteinander,

ich bin dabei die Krümmung in interfaceProperties.C (v6) anders zu berechnen, als Alternative zum Standard CSF-Modell (man soll aber mit einem Dict-File zwischen den Modellen switchen können).

Mein Problem: Die "Sharp Surface Force" Methode nach Raeini et al. ermittelt am Ende eine Krümmung an den Seitenflächen (also vom Typus surfaceScalarField statt volScalarField), nennen wir sie Kf_, aber folgende Verrechnung mit sigma erfordert regulär K_ als volScalarField:

Code:

Foam::tmp<Foam::volScalarField>
Foam::interfaceProperties::sigmaK() const
{
    return sigmaPtr_->sigma()*K_;
}

Ich habe das hier versucht:

Code:

Foam::tmp<Foam::volScalarField>
Foam::interfaceProperties::sigmaK() const
{
    return sigmaPtr_->sigma();
}

...und die Oberflächenkraftsberechnung so umgeschrieben:

Code:

Foam::tmp<Foam::surfaceScalarField>
Foam::interfaceProperties::surfaceTensionForce() const
{
    return fvc::interpolate(sigmaK())*Kf_*fvc::snGrad(alpha1_);
}

...aber es kompiliert nicht, sigma alleine interpoliert macht hier Probleme.

Meine Frage wäre: Wie kann ich effektiv eine Krümmung an der Seitenfläche ermitteln und es mit sigma verrechnen? C++ habe ich noch nicht komplett "gemeistert", womit ich sicherlich einige entscheidende Aspekt hier nicht berücksichtigt habe.

Danke im voraus!

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: 24. Feb. 2023 12:11    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 OFAmateur007ek 10 Unities + Antwort hilfreich

Hey,

das ist ganz klar wieso das nicht geht, da Kf_ ein (wahrscheinlich) privates Objekt der Klasse interfaceProperties ist. Du hast damit keinen Zugriff in der Klasse surfaceTensionForce.

Ich möchte jetzt keine Aussage zu Deinem Wissensstand zu c++ nennen aber das sei mal dahingestellt.

Da Du auch keine Fehlermeldung vom Kompiler lieferst, gehe ich mal (ohne den Code jetzt zu prüfen - dafür hab ich grad keine Zeit) davon aus, dass Du das von mir beschrieben Problem hast.

Demnach musst Du eine Public Funktion in interfaceProperties erstellen, die den Wert von Kf_ zurückgibt.

Quasi so in der Art:

interfaceProperties.H

Code:

    public:
  
            const volScalarField& Kf();

interfaceProperties.C

Code:

const volScalarField& Foam::interfaceProperties::Kf()
{
    return Kf_;
}


Vllt sind die Namespaces jetzt nicht ganz richtig aber das siehst Du ja dann.
Im Anschluss, sofern surfaceTensionForce einen Bezug zur interfaceProperties hat, kannst Du folgendes machen:

Code:

Foam::tmp<Foam::surfaceScalarField>
Foam::interfaceProperties::surfaceTensionForce() const
{
    return fvc::interpolate(sigmaK())*fvc::interpolate(Kf())*fvc::snGrad(alpha1_);
}



Anmerkung:


  • Du hast einmal K_ und dann wieder Kf_, Fehler oder gewollt? Ich geh gerade  davon aus das es beidesmal Kf_ ist.
  • Meine Analyse ist nur Oberflächlich ohne das ich irgendwas von dem verstehe was Du machen willst
  • Codeschnippsel sind ggf. falsch
  • Da ich nicht weiß ob Kf_ und K_ gleich sind und welchen Typ diese darstellen, musst Du natürlich sicherstellen das Du nicht Gummibärchen mit Plastikspielzeug vertauscht. Du kannst keine Multiplication von surfaceScalarField*volScalarField machen. Das ist einfach nonsense.

------------------
Glück Auf,
Tobi

OpenFOAM® Community - Knowledge Base

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