Gude Forum, mal wieder ein relativ spezifisches Problem, aber vielleicht kann mir ja trotzdem jemand behilflich sein
Ich möchte auf Grundlage eines Papers einen Solver in OpenFOAM programmieren, mit dem man hyperelastische Materialien mit dem Finite Volumen Ansatz berechnen kann. Meine Frage ist jetzt eigentlich ganz banal...wie geh ich am besten bei der Programmierung eines solchen Solvers vor? (Hab bisher immer nur kleine und einfache Berechnungsprogramme geschrieben). Es gibt einen ähnlichen Solver, der allerdings linear und nicht nichtlinear rechnet, so wie es meiner machen soll. Ich hab angefangen mir den schon bestehenden Solver anzugucken, um da eventuell einiges von benutzen zu können, aber ich check da erstens nicht viel und zweitens hab ich eine Variable mehr, die über eine implizite Kopplung mit dem SIMPLE-Algorithmus berechnet werden muss. Außerdem ist es mir noch nicht ganz klar, wie man die Differenzialgleichungen in algebraische Gleichungen umsetzt. Gibts da spezielle Befehle? War jemand schon mal in einer ähnlichen Situation und kann mir nen Tipp geben, wie man da strukturiert vorgehen kann?
niederrheiner_adler schrieb: Gude Forum, mal wieder ein relativ spezifisches Problem, aber vielleicht kann mir ja trotzdem jemand behilflich sein
Ich möchte auf Grundlage eines Papers einen Solver in OpenFOAM programmieren, mit dem man hyperelastische Materialien mit dem Finite Volumen Ansatz berechnen kann. Meine Frage ist jetzt eigentlich ganz banal...wie geh ich am besten bei der Programmierung eines solchen Solvers vor? (Hab bisher immer nur kleine und einfache Berechnungsprogramme geschrieben). Es gibt einen ähnlichen Solver, der allerdings linear und nicht nichtlinear rechnet, so wie es meiner machen soll. Ich hab angefangen mir den schon bestehenden Solver anzugucken, um da eventuell einiges von benutzen zu können, aber ich check da erstens nicht viel und zweitens hab ich eine Variable mehr, die über eine implizite Kopplung mit dem SIMPLE-Algorithmus berechnet werden muss. Außerdem ist es mir noch nicht ganz klar, wie man die Differenzialgleichungen in algebraische Gleichungen umsetzt. Gibts da spezielle Befehle? War jemand schon mal in einer ähnlichen Situation und kann mir nen Tipp geben, wie man da strukturiert vorgehen kann?
Also wenn genau weißt wie dein Solver funktionieren soll und du ach die Formeln kennst dann schreib dir mal auf ein Blatt Papier auf was passieren soll (in kleinen Sätzen untereinander den Ablauf aufschreiben). Dann machst du dir ein Algorithmus oder Programmablauf basierend auf dem was du in Sätzen geschrieben hat.
Ein Beispiel wie man sich das aufschreibt sieht so aus. Gehen wir mal davon aus das du einen Bruch erweitern willst:
1. Zähler und Nenner bestimmen. 2. Zähler mit der Zahl multiplizieren. 3. Nenner mit der Zahl multiplizieren. . . . n. usw.
Dein Programmablauf sieht dann so aus:
..........(Start) .............| .............| [Zähler und Nenner bestimmen] .............| .............| [Zähler mit der Zahl multiplizieren] .............| .............| [Nenner mit der Zahl multiplizieren] .............| .............| ..........(Ende)
Legende: () Wort in ein Kreis eingeschlossen ..............[] Wort in ein Rechteck eingeschlossen
Eigentlich müßtest du es ja kennen wenn du programmierst.
Es hilft viel da man es dann einfach nachprogrammiert.
Programmieren ist 90% Planung und 10% programmieren.
Hi, vielen Dank. Das mit dem Aufschreiben werd ich echt mal machen. Das wird mich auf jeden Fall weiterbringen denke ich! Hätte man auch eigentlich selbst drauf kommen können...
@goy: Naja, Strömungsmechanik ist das eine, aber numerische Strömungsmechanik und die damit verbundene Kontinuumsmechanik, DAS ist der Horror^^
niederrheiner_adler schrieb: @goy: Naja, Strömungsmechanik ist das eine, aber numerische Strömungsmechanik und die damit verbundene Kontinuumsmechanik, DAS ist der Horror^^
Als WIMB mußte ich damals lediglich zwei Wahlpflichtfächer aus Rätseltechnik, Strömungslehre, Maschinendynamik und Werkstoffkunde belegen.
Strömungslehre und Rätseltechnik (Strom, igitt) waren es nicht.
niederrheiner_adler schrieb: Gude Forum, mal wieder ein relativ spezifisches Problem, aber vielleicht kann mir ja trotzdem jemand behilflich sein
Ich möchte auf Grundlage eines Papers einen Solver in OpenFOAM programmieren, mit dem man hyperelastische Materialien mit dem Finite Volumen Ansatz berechnen kann. Meine Frage ist jetzt eigentlich ganz banal...wie geh ich am besten bei der Programmierung eines solchen Solvers vor? (Hab bisher immer nur kleine und einfache Berechnungsprogramme geschrieben). Es gibt einen ähnlichen Solver, der allerdings linear und nicht nichtlinear rechnet, so wie es meiner machen soll. Ich hab angefangen mir den schon bestehenden Solver anzugucken, um da eventuell einiges von benutzen zu können, aber ich check da erstens nicht viel und zweitens hab ich eine Variable mehr, die über eine implizite Kopplung mit dem SIMPLE-Algorithmus berechnet werden muss. Außerdem ist es mir noch nicht ganz klar, wie man die Differenzialgleichungen in algebraische Gleichungen umsetzt. Gibts da spezielle Befehle? War jemand schon mal in einer ähnlichen Situation und kann mir nen Tipp geben, wie man da strukturiert vorgehen kann?
mal wieder ein relativ spezifisches Problem, aber vielleicht kann mir ja trotzdem jemand behilflich sein
Ich möchte auf Grundlage eines Papers einen Solver in OpenFOAM programmieren, mit dem man hyperelastische Materialien mit dem Finite Volumen Ansatz berechnen kann.
Meine Frage ist jetzt eigentlich ganz banal...wie geh ich am besten bei der Programmierung eines solchen Solvers vor? (Hab bisher immer nur kleine und einfache Berechnungsprogramme geschrieben).
Es gibt einen ähnlichen Solver, der allerdings linear und nicht nichtlinear rechnet, so wie es meiner machen soll.
Ich hab angefangen mir den schon bestehenden Solver anzugucken, um da eventuell einiges von benutzen zu können, aber ich check da erstens nicht viel und zweitens hab ich eine Variable mehr, die über eine implizite Kopplung mit dem SIMPLE-Algorithmus berechnet werden muss. Außerdem ist es mir noch nicht ganz klar, wie man die Differenzialgleichungen in algebraische Gleichungen umsetzt. Gibts da spezielle Befehle?
War jemand schon mal in einer ähnlichen Situation und kann mir nen Tipp geben, wie man da strukturiert vorgehen kann?
Gruß niederrheiner_adler
PS: Programmiersprache ist C++
Und was ist mit den speziFischen? :P
Das ist mir jetzt zu banal.... !
Ich sagte doch, son Müll lernt keiner ausser dir..
http://www.cfd-online.com/Forums/openfoam/
die Seite kenn ich auch, aber da wurd ich noch nicht fündig
Trotzdem Danke für deine Bemühungen!
Dann machst du dir ein Algorithmus oder Programmablauf basierend auf dem was du in Sätzen geschrieben hat.
Ein Beispiel wie man sich das aufschreibt sieht so aus.
Gehen wir mal davon aus das du einen Bruch erweitern willst:
1. Zähler und Nenner bestimmen.
2. Zähler mit der Zahl multiplizieren.
3. Nenner mit der Zahl multiplizieren.
.
.
.
n. usw.
Dein Programmablauf sieht dann so aus:
..........(Start)
.............|
.............|
[Zähler und Nenner bestimmen]
.............|
.............|
[Zähler mit der Zahl multiplizieren]
.............|
.............|
[Nenner mit der Zahl multiplizieren]
.............|
.............|
..........(Ende)
Legende: () Wort in ein Kreis eingeschlossen
..............[] Wort in ein Rechteck eingeschlossen
Eigentlich müßtest du es ja kennen wenn du programmierst.
Es hilft viel da man es dann einfach nachprogrammiert.
Programmieren ist 90% Planung und 10% programmieren.
vielen Dank.
Das mit dem Aufschreiben werd ich echt mal machen. Das wird mich auf jeden Fall weiterbringen denke ich! Hätte man auch eigentlich selbst drauf kommen können...
@goy:
Naja, Strömungsmechanik ist das eine, aber numerische Strömungsmechanik und die damit verbundene Kontinuumsmechanik, DAS ist der Horror^^
Als WIMB mußte ich damals lediglich zwei Wahlpflichtfächer aus Rätseltechnik, Strömungslehre, Maschinendynamik und Werkstoffkunde belegen.
Strömungslehre und Rätseltechnik (Strom, igitt) waren es nicht.
Den Mittelteil habe ich nicht verstanden !