| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Löser einbinden (2072 mal gelesen)
|
Holzbasti Mitglied Student, Praktikant

 Beiträge: 16 Registriert: 26.10.2012 OpenFOAM 2.3.0 Ubuntu 14.04 LTS 64-bit
|
erstellt am: 12. Sep. 2013 21:14 <-- editieren / zitieren --> Unities abgeben:         
Hallo miteinander, ich soll und möchte gern ein viskoelastisches Material simulieren. Dazu haben ich bereits einen Löser gefunden, heißt viscoelasticFluidFoam. Den habe ich auch eingebunden bekommen. Ich verwenden OpenFOAM 2.1.1 auf Ubuntu 12.04 LTS 64-bit. Dieser Löser enthält auch Tutorials, die ich natürlich zuerste probierte. Da kommt das erste Problem: Code:
--> FOAM FATAL IO ERROR: Unknown asymmetric matrix solver BiCGStabValid asymmetric matrix solvers are : 4 ( BICCG GAMG PBiCG smoothSolver )
Nach einigem Suchen fand ich 1. heraus, dass dieser Löser eigentlich für OF 1.6-ext geschrieben wurde und 2. dass ich den Fehlenden Löser einfach mit BICCG ersetzen könnte. Hab ich gemacht, klappt auch. Nun habe ich mir aber gedacht, dass es vielleicht doch sinnvoll sein kann, die vorgegebenen Löser zu verwenden. Gesagt getan, Quellcode von OF 1.6-ext runtergeladen, besagtenn Löser gesucht und zwei Ordner gefunden. Einmal (alle in src/) coupledMatrix und einmal lduSolvers. Meine Idee war nun, die beiden Löser zu nehmen und in meine bestehende Installation einzufügen. Dazu also beide Ordner in openfoam211/scr/ kopiert und in beiden Ordnern
Code: wmake libso
ausgeführt. Bei coupledMatrix erhalte ich folgende Meldungen:
Code: root@Basti:/opt/openfoam211/src/coupledMatrix# wmake libso SOURCE=coupledLduMatrix/coupledLduMatrix.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -I/opt/openfoam211/src/finiteVolume/lnInclude -IlnInclude -I. -I/opt/openfoam211/src/OpenFOAM/lnInclude -I/opt/openfoam211/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/coupledLduMatrix.o In file included from coupledLduMatrix/coupledLduMatrix.C:36:0: coupledLduMatrix/coupledLduMatrix.H:109:23: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.H:109:54: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.H:119:23: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.H:119:54: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.H:129:23: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.H:129:54: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.H:139:23: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.H:139:54: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.C:118:11: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.C:118:42: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.C: In Elementfunktion »void Foam::coupledLduMatrix::Amul(Foam::FieldField<Foam::Field, double>&, const Foam::FieldField<Foam::Field, double>&, const Foam::PtrList<Foam::FieldField<Foam::Field, double> >&, const int&, Foam::Direction) const«: coupledLduMatrix/coupledLduMatrix.C:139:24: Fehler: »const class Foam::lduMatrix« hat kein Element namens »AmulCore« coupledLduMatrix/coupledLduMatrix.C: Im globalen Gültigkeitsbereich: coupledLduMatrix/coupledLduMatrix.C:159:11: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.C:159:42: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.C: In Elementfunktion »void Foam::coupledLduMatrix::Tmul(Foam::FieldField<Foam::Field, double>&, const Foam::FieldField<Foam::Field, double>&, const Foam::PtrList<Foam::FieldField<Foam::Field, double> >&, const int&, Foam::Direction) const«: coupledLduMatrix/coupledLduMatrix.C:180:24: Fehler: »const class Foam::lduMatrix« hat kein Element namens »TmulCore« coupledLduMatrix/coupledLduMatrix.C: Im globalen Gültigkeitsbereich: coupledLduMatrix/coupledLduMatrix.C:198:11: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.C:198:42: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.C: In Elementfunktion »void Foam::coupledLduMatrix::initMatrixInterfaces(const Foam::PtrList<Foam::FieldField<Foam::Field, double> >&, const int&, const Foam::FieldField<Foam::Field, double>&, Foam::FieldField<Foam::Field, double>&, Foam::Direction) const«: coupledLduMatrix/coupledLduMatrix.C:211:28: Fehler: ungültige Typen »const int[Foam::label {aka int}]« für Feldindex coupledLduMatrix/coupledLduMatrix.C: Im globalen Gültigkeitsbereich: coupledLduMatrix/coupledLduMatrix.C:223:11: Fehler: »lduInterfaceFieldPtrsListList« bezeichnet keinen Typ coupledLduMatrix/coupledLduMatrix.C:223:42: Fehler: ISO-C++ verbietet Deklaration von »interfaces« ohne Typ [-fpermissive] coupledLduMatrix/coupledLduMatrix.C: In Elementfunktion »void Foam::coupledLduMatrix::updateMatrixInterfaces(const Foam::PtrList<Foam::FieldField<Foam::Field, double> >&, const int&, const Foam::FieldField<Foam::Field, double>&, Foam::FieldField<Foam::Field, double>&, Foam::Direction) const«: coupledLduMatrix/coupledLduMatrix.C:236:28: Fehler: ungültige Typen »const int[Foam::label {aka int}]« für Feldindex make: *** [Make/linux64GccDPOpt/coupledLduMatrix.o] Fehler 1
und bei lduSolvers
Code: root@Basti:/opt/openfoam211/src/lduSolvers# wmake libso SOURCE=lduPrecon/CholeskyPrecon/CholeskyPrecon.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -IlnInclude -I. -I/opt/openfoam211/src/OpenFOAM/lnInclude -I/opt/openfoam211/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/CholeskyPrecon.o In file included from lduPrecon/CholeskyPrecon/CholeskyPrecon.C:36:0: lduPrecon/CholeskyPrecon/CholeskyPrecon.H:56:1: Fehler: expected class-name before »{« token lduPrecon/CholeskyPrecon/CholeskyPrecon.C:45:5: Fehler: »lduPreconditioner« bezeichnet keinen Typ lduPrecon/CholeskyPrecon/CholeskyPrecon.C: In Elementfunktion »void Foam::CholeskyPrecon::calcPreconDiag()«: lduPrecon/CholeskyPrecon/CholeskyPrecon.C:56:9: Fehler: »matrix_« wurde in diesem Gültigkeitsbereich nicht definiert lduPrecon/CholeskyPrecon/CholeskyPrecon.C: In Konstruktor »Foam::CholeskyPrecon::CholeskyPrecon(const Foam::lduMatrix&, const Foam::FieldField<Foam::Field, double>&, const Foam::FieldField<Foam::Field, double>&, const lduInterfaceFieldPtrsList&, const Foam::Dictionary&)«: lduPrecon/CholeskyPrecon/CholeskyPrecon.C:90:5: Fehler: Klasse »Foam::CholeskyPrecon« hat keinen Feldnamen »lduPreconditioner« lduPrecon/CholeskyPrecon/CholeskyPrecon.C:97:17: Fehler: »matrix_« wurde in diesem Gültigkeitsbereich nicht definiert lduPrecon/CholeskyPrecon/CholeskyPrecon.C: In Konstruktor »Foam::CholeskyPrecon::CholeskyPrecon(const Foam::lduMatrix&, const Foam::FieldField<Foam::Field, double>&, const Foam::FieldField<Foam::Field, double>&, const lduInterfaceFieldPtrsList&)«: lduPrecon/CholeskyPrecon/CholeskyPrecon.C:111:5: Fehler: Klasse »Foam::CholeskyPrecon« hat keinen Feldnamen »lduPreconditioner« lduPrecon/CholeskyPrecon/CholeskyPrecon.C:118:17: Fehler: »matrix_« wurde in diesem Gültigkeitsbereich nicht definiert lduPrecon/CholeskyPrecon/CholeskyPrecon.C: In Elementfunktion »virtual void Foam::CholeskyPrecon: :tongue:recondition(Foam::scalarField&, const scalarField&, Foam::Direction) const«: lduPrecon/CholeskyPrecon/CholeskyPrecon.C:144:9: Fehler: »matrix_« wurde in diesem Gültigkeitsbereich nicht definiert make: *** [Make/linux64GccDPOpt/CholeskyPrecon.o] Fehler 1
. Beide enden mit Fehler 1, also nicht so, wie es sollte. Der Test zeigte auch die gleiche Fehlermeldung wie am Anfang. Kann mir jemand sagen, wie ich den Löser zum Laufen bringen kann? Vielen Danke, Holzbasti Nochmal mein System: OpenFOAM 2.1.1, Ubuntu 12.04 LTS 64-bit Im Anhang findet sich der viskoelastische Löser (gibt's auch über die Googlesuche) und die beiden Ordner (aus OF 1.6-ext) samt Löser um die es geht. [Diese Nachricht wurde von Holzbasti am 12. Sep. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 13. Sep. 2013 08:25 <-- editieren / zitieren --> Unities abgeben:          Nur für Holzbasti
Das g eht nicht so einfach. Du benötigst dabei eine Anpassung der Solver auf die OF-2.1 Struktur. Von 1.x auf 2.x haben sich einige Klassen geändert etc. entsprechend müsstest du das alles abändern, was zu ändern wäre. An deiner Stelle würde ich andere Berechnungslöser verwenden. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Holzbasti Mitglied Student, Praktikant

 Beiträge: 16 Registriert: 26.10.2012 OpenFOAM 2.3.0 Ubuntu 14.04 LTS 64-bit
|
erstellt am: 13. Sep. 2013 13:38 <-- editieren / zitieren --> Unities abgeben:         
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 16. Sep. 2013 12:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Holzbasti
Hallo Basti, bist du auf diese Methode den angewiesen? Wieso verwendest du keine andere? Irgendwie gibt's sicher ne andere Möglichkeit zum Beispiel du findest jemanden der es bereits in OF-2.2 implementiert hat und den Quellcode offenlegt. Ansonsten musst du es halt selber machen oder eine andere Methode verwenden. In deinem Fall eben möglicherweise: PBiCG ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulrich Heck Mitglied OpenFOAM Tool Entwicklung
 
 Beiträge: 291 Registriert: 08.09.2003 CastNet (DHCAE Tools) OpenFOAM CalculiX
|
erstellt am: 17. Sep. 2013 08:14 <-- editieren / zitieren --> Unities abgeben:          Nur für Holzbasti
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 17. Sep. 2013 12:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Holzbasti
Hallo Ulrich, danke für die Information. Ich bewege mich nicht in der viskoelastischen CFD aber bezüglich den Methoden
Code:
PBiCG BiCGStab
Letzteres ist doch eigentlich numerisch stabiler. Beide Methoden sollten aber zum gleichen Ergebnis führen, oder? ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulrich Heck Mitglied OpenFOAM Tool Entwicklung
 
 Beiträge: 291 Registriert: 08.09.2003 CastNet (DHCAE Tools) OpenFOAM CalculiX
|
erstellt am: 17. Sep. 2013 13:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Holzbasti
|
Holzbasti Mitglied Student, Praktikant

 Beiträge: 16 Registriert: 26.10.2012
|
erstellt am: 18. Sep. 2013 13:21 <-- editieren / zitieren --> Unities abgeben:         
Hallöchen, erstmal danke für eure Antworten. Wie gesagt, mit BICCG klappt es, mit PBiCG gibt es Probleme mit dem preconditioner und dann wieder mit dem löser und dann mit dem agglomerator. Es war nur eine Idee, um sich ein wenig Aufwand zu sparen und so nicht so viel am Beispiel ändern muss. Eine Portierung nach OF 2.x.y habe ich nicht finden können. Ich habe in BlueCFD (Single-core) keinen viskoelastischen Löser gefunden. Das prinzipielle Einbinden in OF 2.1.1 (unter Ubuntu) war aber kein Problem. Wie gesagt, nur der Löser fehlte. Ich werde dann wohl mit BICCG arbeiten. Wenn der genauso stabil, bzw. genau das gleiche macht, ist das ja kein Problem. Viele Grüße, Basti Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |