|
Autor
|
Thema: scalarField in vectorField (2103 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 |

| | Systemkoordinator Rohrleitungen Armaturen Siemens NX (m/w/d) militärischer Schiffbau | Für Tätigkeiten in einem renommierten Unternehmen in Wismar suchen wir zum nächstmöglichen Zeitpunkt einen Systemkoordinator Rohrleitungen Siemens NX (m/w/d) für den militärischen Schiffbau. ORANGE Engineering bietet ausgezeichnete Perspektiven für die berufliche Zukunft ? sowohl in Deutschland als auch in den Niederlanden. Ob langjährige Erfahrung oder Berufseinstieg, es warten spannende Projekte in unterschiedlichen Branchen.... | | Anzeige ansehen | Feste Anstellung |
|
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 >>)
 |