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