Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  scalarField in vectorField

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:  scalarField in vectorField (2021 mal gelesen)
anton.lias
Mitglied


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

Beiträge: 2
Registriert: 24.01.2013

erstellt am: 24. Jan. 2013 11:06    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 habe ein Problem beim bearbeiten eines Solvers. Der MRFInterFoam soll bei mir noch die Funktion bekommen Momente nach QMOM zu berechnen. Dafür lasse ich die 6 Momente m0 - m5 als "volScalarField" in "createFields.H" wie folgt einlesen.

Code:
Info<< "Reading field m0" << endl;
volScalarField m0
(
    IOobject
    (
        "m0",
        runTime.timeName(),
        mesh,
        IOobject::MUST_READ,
        IOobject::AUTO_WRITE
    ),
    mesh
);

Anschließend soll mit den Werten m0 - m5 eine 3x3 Matrix (A1, B2, B1, B2, A2, B3, B1, B3, A3) erstellt werden. Um das ganze übersichtlicher zu gestallten habe ich 2 Vektoren jacobiVectorA und jacobiVectorB deffiniert.

Code:

Info<< "Define vectorfield jacobiVectorA" << endl;
volVectorField jacobiVectorA
(
    IOobject
    (
        "jacobiVectorA",
        runTime.timeName(),
        mesh,
        IOobject::NO_READ,
        IOobject::NO_WRITE
    ),
    mesh,
    dimensionedVector("zero", dimensionSet(0, 0, 0, 0, 0, 0, 0), vector::zero)
);

Anschließend werden den Vektoren ihre Werte zugewiesen.

Code:
Info<< "create A1" << endl;
    jacobiVectorA.component(0) = m1;
Info<< "create A2" << endl;
    jacobiVectorA.component(1) = (- pow(m1,2) + m2)/(m1) + (- pow(m2,2) + m1 * m3) / (m1 * (- pow(m1,2) + m2));
Info<< "create A3" << endl;
    jacobiVectorA.component(2) =  ((- pow(m1,2) + m2) * (m5 * pow(m2,2) - 2*m2*m3*m4 + pow(m3,3) - m1*m5*m3 + m1* pow(m4,2)))/((- pow(m2,2) + m1 * m3) * (m4 * pow(m1,2) - 2*m1*m2*m3 + pow(m2,3) - m4*m2 + pow(m3,2))) - (m1*(m4* pow(m1,2) - 2*m1*m2*m3 + pow(m2,3) - m4*m2 + pow(m3,2)))/((- pow(m2,2) + m1*m3) * (- pow(m1,2) + m2));

Das ganze kompiliert auch. Wenn ich den Solver aber ausführe, bekomme ich beim Zuweisen von jacobiVectorA.component(0) = m1; folgende Fehlermeldung.

Zitat:
--> FOAM FATAL ERROR:
attempted to assign to a const reference to constant object

Ich kann gerne auf die Vektoren verzichten und die entsprechenden Werte gleich in die Matrix schreiben, jedoch ist mir dies auch noch nicht gelungen. Die Matrix brauche ich aber leider, da ich aus ihr die Eigenwerte und Eigenvektoren berechnen muss.

Ich hoffe, dass mir jemand helfen kann.

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



Ingenieur, Physiker, Mathematiker - Prozess- & Methodenentwicklung für komplexe Simulationen in der Fahrzeugentwicklung (CFD/FEM/MKS) (m/w/d)

Wir bewerben uns bei dir. Diese Formulierung überrascht dich vielleicht, da du dich gerade mit deiner eigenen Bewerbung beschäftigst? Als Teaser nennen wir dir 5 Argumente. Den Blockbuster zeigen wir im Bewerbungsprozess. Die Sequels erlebst du bei TWT. Find's raus!

  • Themen am Puls der Zeit. Artificial Intelligence, Autonomous Driving, E-Mobility, Model Based Systems Engineering oder Virtual Experience....
Anzeige ansehenElektrotechnik, Elektronik
anton.lias
Mitglied


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

Beiträge: 2
Registriert: 24.01.2013

erstellt am: 25. Jan. 2013 16: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

Erledigt.
Falls jemand auch dieses Problem bekommt

Code:

forAll(mesh.cells(),cellI)
{
jacobiVectorA[cellI].component(0) = m1[cellI];
// für die anderen analog
}

[Diese Nachricht wurde von anton.lias am 25. Jan. 2013 editiert.]

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