Autor
|
Thema: Scalar aus dict einlesen (1683 mal gelesen)
|
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 24. Feb. 2016 07:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich würde gerne "nur" einen Scalar aus den Files im 0-Ordner einlesen, um ihn dann in dem C-File der Boundary weiter zu verwenden. Ich habe es zwar bisher durch copy-paste geschafft einen Wert einzulesen, jedoch macht er bei U ein Vektor draus, den ich aber nicht haben möchte.
------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 24. Feb. 2016 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Hey Michael, deine Frage ist etwas undeutlich. U ist allgemein das Vektorfeld von OpenFOAM. Willst du ein scalar, dimensionedScalar, ein scalarField oder ein volScalarField? Für die ersten zwei würde ich nämlich nicht den 0 Ordner (da hier nur vol...Fields sind) sondern das transportProperties File oder thermodynamicProperties File verwenden (je nach dem was du eben für Dictionarys als Objekte zur Verfügung hast). ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 24. Feb. 2016 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, ich dachte mir schon, dass es nicht so verständlich ist. Jedoch wusste ich nicht wie ich es anders erklären sollte. Ich möchte gerade einen Relaxationsfaktor in die "mapped"-Boundary integrieren. Aber jetzt wo du es sagst, macht es natürlich Sinn, dass der Faktor bei U eben auch ein Vektor ist. Ich möchte folgendermaßen meinen Wert am Inlet berechnen lassen (Beispiel Temperatur):
Code: Tein = Tein + (Taus - Tein) * Faktor
Kannst ud mir eventuell sagen, wie ich die Bezeichnung "inlet" automatisch ermitteln kann?
Code: const label patchIDM = nbrMesh.boundaryMesh().findPatchID("inlet");
Das müsste eigentlich der aufrufende Patch sein. ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 24. Feb. 2016 12:51 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Wieso machst du es so schwer? Nimm einfach GroovyBC und du kannst sowas bereits machen. Code:
inlet { type groovyBC; variables "Tin@inlet=sum(T*mag(Sf()))/sum(mag(Sf()); Tout@outlet=sum(T*mag(Sf()))/sum(mag(Sf()); alpha=0.3;"; valueExpression "Tin+(Tout-Tin) * alpha"; value uniform 400; }
------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 24. Feb. 2016 15:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, daran hatte ich auch schon gedacht. Gibt es bei groovy auch noch eine Möglichkeit, das erhaltene Feld auf einen gewissen Durchschnittswert anzupassen. ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 24. Feb. 2016 19:43 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
|
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 25. Feb. 2016 09:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, da habe ich, nach ein wenig nachdenken, auch eine Idee wie ich das machen kann. Jedoch habe ich gerade noch Probleme das zu installieren. In der Boundary (hard-coded) funktioniert geht es soweit. Nur muss ich hier eben den "Faktor" vor dem Compilieren festlegen. Gibt es nun eine Möglichkeit den "Faktor"
Code: Tein = Tein + (Taus - Tein) * Faktor
ganz normal über die U,T - Files einzulesen? Ich schaffe es zwar, dass er in den Files nach dem Faktor fragt, jedoch muss das ein Skalar sein und kein Vektor. ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 25. Feb. 2016 10:49 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Okay du verwendest also nicht Groovy,... Klar kannst du das machen aber bitte nicht in den Files 0/U 0/T oder sonst wo in den vol***Fields. Was du in deiner Boundary benötigst ist ein Objekt das dir bspw. Zugang zum transportProperties File gibt, hier mal ein Beispiel:
Code:
Info<< "Boudary access to transportProperties\n" << endl; IOdictionary transportProperties ( IOobject ( "transportProperties", runTime.constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE ) ); Info<< "Reading relaxation factor alpha\n" << endl; dimensionedScalar alpha ( transportProperties.lookup("alpha") );
Geht sicher auch ein normaler Scalar ansonsten in deinem C++ Abschnitt:
Code:
(^-^) + ( <3 <3 <3 <3 - :-* :-* :-*) * alpha.value()
den Wert von "alpha" ansprechen. Sonst macht er noch mehr Vergleiche (Dimensionscheck). Du kannst natürlich auch Zugang zu jedem x-beliebigen File bekommen. Denkbar wäre hier ggf. auch das du dein Relaxfaktor in fvSolutions in die RelaxFactors reinpackst. Aber das ist dann eher ne Sache die nebensächlich ist (: ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 25. Feb. 2016 11:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, vielen Dank für deine schnelle Rückmeldung. Mit groovy werde ich es auch noch probieren, sofern es sich installieren lässt Wenn ich deinen Code in die C-Datei (mappedPatchFieldBase.C) einfüge, dann kommt ein Fehler, dass er die einzelnen Punkte unter IOobjects nicht kennt:
Code:
fields/fvPatchFields/derived/mappedField/mappedPatchFieldBase.C:289:13: error: ‘runTime’ was not declared in this scope runTime.constant(),
Jetzt müsste ich nur noch wissen, wie ich ihm die Sachen deklarieren kann? Muss ich noch irgendwelche Dateien einbinden? Oder ist das in der C-Datei falsch? ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 25. Feb. 2016 12:32 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich konnte mein Problem lösen. Ich war schon auf dem richtigen Weg, nur scheiterte es an der Definition des Skalares. Ich finde die Trennung durch die U/T/k/o-Files sehr sinnvoll. Da ich so bestimmen kann, welche Parameter eventuell weniger relaxiert werden oder nicht. Ich werde es jetzt mal ausgiebig testen und euch dann eine Rückmeldung geben. Vielen Dank für die Unterstützung. ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 25. Feb. 2016 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Na das ist bei dir nicht gegeben weil die Run-Time fehlt, das zu implementieren würd ich nicht. Du hast die Möglichkeit auch über "mesh.time().constant()" zu gehen. Die Frage ist halt ob dein mesh Objekt auch definiert ist. Du hast viele Möglichkeiten. Entweder du schaust das du dein mappedPatchFieldsBase via Dictionary aufrufst, dann hast du das "dict" nämlich schon da wie hier zu sehen:
Code:
template<class Type> mappedPatchFieldBase<Type>::mappedPatchFieldBase ( const mappedPatchBase& mapper, const fvPatchField<Type>& patchField, const dictionary& dict ) : mapper_(mapper), patchField_(patchField), fieldName_ ( dict.template lookupOrDefault<word> ( "fieldName", patchField_.dimensionedInternalField().name() ) ), setAverage_(readBool(dict.lookup("setAverage"))), average_(pTraits<Type>(dict.lookup("average"))),
Dann wäre es für dich einfach. Header, const scalar alpha_; und in dem Constructor einfach noch ergänzend
Code:
alpha_(readScalar(dict.lookup("alpha")))
Frag ist dann nur welches Dict das ist (:, da müsste man tiefer in den Code. Du könntest auch dein Alpha Feld im Solver definieren (createFields.H) und dann an deiner Codestelle das Feld holen. Allerdings muss es ein regObject sein, sonst gehts nicht. Kann mich aber daran jetzt nicht erinnern. War irgendwas mit ->DB() oder so. Ich nehm mal an du bist irgendwo hier am werkeln:
Code:
if (mag(averagePsi)/mag(average_) > 0.5) { newValues *= mag(average_)/mag(averagePsi); } else { newValues += (average_ - averagePsi); }
Wenn ja, dann sollte es möglich sein dein Dict hier zu erstellen und demnach auch dein Scalar zu lesen:
Code:
IOdictionary tP ( IOobject ( "transportProperties", mesh.time().constant(), mesh, IOobject::MUST_READ_IF_MODIFIED, IOobject::NO_WRITE ) ); Info<< "Reading relaxation factor alpha\n" << endl; alpha(readScalar(tP.lookup("alpha"));
Möglich wäre natürlich das du noch ne Header einbinden musst zwecks dem IODictionary.
------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 25. Feb. 2016 12:45 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Zitat: Original erstellt von Micha6982:
Ich finde die Trennung durch die U/T/k/o-Files sehr sinnvoll.
Ich hab keine Ahnung was du machst Trotzdem gutes gelingen. ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 01. Mrz. 2016 08:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, vielen Dank. Wenn ich fertig bin, werde ich es mal ausführlich erklären. Weißt du vielleicht, wie ich in einer Boundary (.c-File) die aktuelle Iteration herauslesen kann? ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 09:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, ich habe es nun endlich geschafft swak4Foam zu installieren. Wenn ich deinen Code verwende, dann kam eine Fehlermeldung. Kann es sein, dass hinter Code:
sum(mag(Sf())
noch eine Klammer fehlt? Wenn ich das korrigiere (ich hoffe das ist richtig), dann bekomme ich folgende Fehlermeldung:
Code:
--> FOAM FATAL ERROR: Parser Error for driver PatchValueExpressionDriver at "1.1-3" :"field Tin not existing or of wrong type" "Tin+(Tout-Tin)*alpha" ^^^ --| Context of the error: - From dictionary: /home/mleck/Daten/MSc/case_groovy_1/0/T.boundaryField.(inlet) Evaluating expression "Tin+(Tout-Tin)*alpha"
From function parsingValue in file lnInclude/CommonValueExpressionDriverI.H at line 1204.
Folgende libs habe ich in der controlDict hinzugefügt:
Code:
libs ( "libOpenFOAM.so" "libsimpleSwakFunctionObjects.so" "libswakFunctionObjects.so" "libgroovyBC.so" );
Habe ich irgend etwas übersehen?
------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 09:49 <-- editieren / zitieren --> Unities abgeben:
Wer lesen kann ist klar im Vorteil! Code:
Note: New versions of groovyBC included with swak4Foam replace the syntax <variable name>@<patch name> = <expression> with <variable name>{<patch name>} = <expression>
------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 10:41 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, jetzt funktioniert es zwar, aber leider bekomme ich nicht das Temperaturfeld heraus, sondern lediglich nur einen Mittelwert. Gibt es mit groovy eine Möglichkeit, auch das Geschwindigkeitsfeld zu erhalten? Im Prinzip möchte ich die Berechnung
Code:
Tin = Tin -(Tout-Tin)*alpha
zellbasiert durchführen. ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 03. Mrz. 2016 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Mit groovy kannst du fast alles machen. U hast du auch. Schau einfach mal die Tutorials auf der wiki an. Übrigens ist das nicht zellbasiert sondern du willst die Faces mappen. Vllt wäre es auch einfach die Cyclic BC zu manipulieren. Die Mapped dir ja deine Werte von Outlet auf Inlet. PS: Deine anderen 2 Beiträge erst jetzt gesehen... hast recht, da fehlt die Klammer (: ist aber auch logisch und du warst richtig. Freut mich das swak4Foam nun läuft. ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, das geht wohl mit groovy nicht: Code:
This is an example of using groovyBC for creating a simple 2-Way coupling between two patches, such that it acts as more or less, one continuously connected mesh during the simulation. As the title specifies, it is a very limited and simplistic approach to the complex concept of full 2-Way patch to patch coupling, but is sufficient in a lot of situations.
Das Äquivalent zu der Cyclic BC ist ja die mapped BC an der ich mich versuche. Das mit dem Relaxationsfaktor klappt eigentlich auch, nur näherst sich bei mir der Inlet nicht dem Outlet an, zumindestens bei Faktoren um die 0.05 - 0.10. Bei höheren Werten funktioniert es einigermaßen, nur nicht zu 100 %. Warum weiß ich auch nicht. Bisher habe ich folgendes in "mappedPatchFieldBase.C" eingefügt:
Code:
oldValues = nbrField.boundaryField()[patchIDM]; newValues = nbrField.boundaryField()[nbrPatchID]; mapValues = oldValues + (newValues-oldValues) * relaxationFactor_; mapper_.distribute(mapValues);
"OldValues" sind Werte vom inlet und die "newValues" sind die Werte vom "outlet". "mapValues" ist dann mein berechneter Wert. Gibt es eine Möglichkeit in dieser C-Datei die Iterationen heraus zu bekommen? ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 03. Mrz. 2016 12:05 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Ich weiß nicht wie deine Geometrie aussieht und deine Settings, daher auch etwas schwer zu beurteilen wieso das bei dir nicht 100% geht. Allerdings solltest du beachten, dass du nicht Face-to-Face betrachtest, sondern interpolierst (glaub ich). Weiß nicht was die FUnktion distribute() macht. Am Besten wäre in deinem Fall ein einfacher Rechteckkanal in dem du identische Faces am Inlet und Outlet hast. Dann könntest du auch direkt auf die Faces zugreifen. Face 1 von outlet = Face 1 von inlet mit dem modifizierten Werten. ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 12:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, vielen Dank für deine Rückmeldung. Kannst du das deuten:
Code:
if (setAverage_) { Type averagePsi = gSum(patchField_.patch().magSf()*mapValues) /gSum(patchField_.patch().magSf()); if (mag(averagePsi)/mag(average_) > 0.5) { mapValues *= mag(average_)/mag(averagePsi); } else { mapValues += (average_ - averagePsi); } }
Mir ist unklar, warum hier der Mittelwert mit zwei veschiedenen Methoden berechnet wird? Weißt du wie ich die aktuelle Iteration heraus bekomme?
------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 03. Mrz. 2016 14:08 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Hat sicher eine Bedeutung. Habs mir gerade mal aufgezeichnet und versucht zu verstehen warum. Allerdings weiß ich nicht was "average_" für einen Wert hat und ob du selber "setAverage_" setzen kannst. Letzten Endes machst du ja nichts anders als
- Berechne den flächengemittelten Wert phi
- Teile diesen durch setAverage
- Wenn,... dann,...
Was meinst du mit aktueller Iteration? Debug halt die Funktion und setzt ein paar Info Ausgaben rein. Dann wird dir hoffentlich schnell klar warum da was gemacht wird.
------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 03. Mrz. 2016 16:28 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, vielen Dank für deine Hilfe. Den Wert "average_" kann ich vorgeben (z.B. 290 K) und "setAverage_" (0 oder 1) gibt an, ob ein Mittelwert gesetzt werden soll oder nicht. Kannst du mir sagen, was "+=" und "*=" macht? Bezüglich der aktuellen Iteration möchte ich wissen, in welcher Iteration (aktueller Timestep) sich der Solver befindet. Ich möchte gerne versuchen den alpha-Wert, mit zunehmenen Iterationen, ansteigen zu lassen. Oder nur alle x Iterationen einen neuen Wert schreiben. P.S.: Danke für den Hinweis mit dem Rechteckkanal. Ich habe es natürlich wieder an einer komplizierteren Geometrie. Bei der jetzigen sieht es schon besser aus.
Viele Grüße Michael ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 03. Mrz. 2016 22:38 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Hi, += bedeutet: a = a + b *= bedeutet: a = a * b Die Iteration kannst du glaub über mesh.time() bekommen. Sofern es ein stationärer Solver ist. Bei transienten hast das ja nicht direkt. ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 04. Mrz. 2016 06:30 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Tobias, vielen Dank für die Erklärung, das habe ich mir schon fast gedacht. Nur ist mir noch unklar, warum das so gehandhabt wird. Aber ich werde es mir wohl auch mal aufzeichnen müssen. Wenn ich "mesh.time()" aufrufen kommt folgender Fehler:
Code:
fields/fvPatchFields/derived/mappedField/mappedPatchFieldBase.C: In member function ‘virtual Foam::tmp<Foam::Field<Type> > Foam::mappedPatchFieldBase<Type>::mappedField() const’: fields/fvPatchFields/derived/mappedField/mappedPatchFieldBase.C:299:23: error: ‘mesh’ was not declared in this scope Info<< "Time = " << mesh.time() << endl;
Muss da noch etwas eingebunden werden? ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 04. Mrz. 2016 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
Die Sache ist die, du hast in deiner C++ Datei noch kein Objekt das "mesh" heißt: Code:
error: ‘mesh’ was not declared in this scope Info<< "Time = " << mesh.time() << endl;
Heißt also du versuchst es mal mit: mesh().time(); ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 04. Mrz. 2016 09:16 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobias, das funktioniert leider auch nicht:
Code:
fields/fvPatchFields/derived/mappedField/mappedPatchFieldBase.C:334:31: error: there are no arguments to ‘mesh’ that depend on a template parameter, so a declaration of ‘mesh’ must be available [-fpermissive] Info<< "Michael = " << mesh().time() << endl;
Hast du noch eine Idee? ------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 04. Mrz. 2016 09:22 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
|
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 04. Mrz. 2016 11:04 <-- editieren / zitieren --> Unities abgeben:
War das so gemeint?: Code:
Info<< "Zeit = " << thisMesh.time() << endl;
Dann kommt: Code:
fields/fvPatchFields/derived/mappedField/mappedPatchFieldBase.C:336:20: error: ambiguous overload for ‘operator<<’ (operand types are ‘Foam::Ostream’ and ‘const Foam::Time’) Info<< "Zeit = " << thisMesh.time() << endl;
------------------ Viele Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 04. Mrz. 2016 12:43 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 04. Mrz. 2016 14:27 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
|
Micha6982 Mitglied Akademischer Mitarbeiter
Beiträge: 130 Registriert: 20.01.2014 ubuntu 16.04 Salome 7.7.1 & 7.8.0 OpenFOAM 3.x & 4.x
|
erstellt am: 10. Mrz. 2016 15:22 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 10. Mrz. 2016 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für Micha6982
|