Autor
|
Thema: scalarField in vectorField (2021 mal gelesen)
|
anton.lias Mitglied
Beiträge: 2 Registriert: 24.01.2013
|
erstellt am: 24. Jan. 2013 11:06 <-- editieren / zitieren --> Unities abgeben:
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 |
| |
anton.lias Mitglied
Beiträge: 2 Registriert: 24.01.2013
|
erstellt am: 25. Jan. 2013 16:48 <-- editieren / zitieren --> Unities abgeben:
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 >>)
|