| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Wärmeleitung Blech/Platte (4566 mal gelesen)
|
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 18. Sep. 2013 22:30 <-- editieren / zitieren --> Unities abgeben:         
Guten Tag, ich bin neu hier im Forum und habe eine Frage zur Wärmeleitung. Und zwar möchte ich den Abkühlvorgang eines, zu Beginn, ca. 950°C heißen Blechs durch Anlegen einer Stahlplatte (zu Beginn 20°C) simulieren. Dabei würde ich gerne den Temperaturabfall im Blech und gleichzeitig den Temperaturanstieg der Platte über die Zeit ermitteln. Da ich noch keine Erfahrung mit OpenFOAM habe, würde ich gerne wissen, ob das generell mit OpenFOAM lösbar ist und welchen Solver ich dafür verwenden sollte. Für einen Vorschlag wäre ich sehr dankbar. Gruß, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 18. Sep. 2013 23:29 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Hallo und willkommen im Forum,... ja das geht. Hierzu solltest du einen conjugated heat transfer Solver verwenden (CHT). Da du eine zeitliche Information auswerten willst also folgender: chtMultiRegionFoam
------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 18. Sep. 2013 23:32 <-- editieren / zitieren --> Unities abgeben:         
|
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 25. Sep. 2013 01:22 <-- editieren / zitieren --> Unities abgeben:         
Beim Ausführen von chtMultiRegionFoam erhalte ich folgenden Fehler: "--> FOAM FATAL ERROR:
gradientInternalCoeffs cannot be called for a calculatedFvPatchField on patch maxY of field h in file "/Volumes/OpenFOAM-v2.2/OpenFOAM-2.2.0/RUN/Presshardening/heatTransfer/chtMultiRegionFoam/0/Air/h" You are probably trying to solve for a field with a default boundary condition. From function calculatedFvPatchField<Type>::gradientInternalCoeffs() const in file fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C at line 199." Ich kann mit der Fehlermeldung leider nicht viel anfangen. Weiß jemand, wo der Fehler liegt?
Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
User1000 Mitglied Student
 
 Beiträge: 163 Registriert: 07.06.2011
|
erstellt am: 25. Sep. 2013 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Hallo, Laut deiner Fehlermeldung: "You are probably trying to solve for a field with a default boundary condition" scheint etwas mit deinen Randbedingungen nicht zu stimmen. Da du geschrieben hast das du neu im OF-Forum bist, gehe ich mal davon aus das du auch neu im Bezug auf OF-Allgemein bist. Wenn dies so ist, solltetst du erst einmal die tutorials aus dem UserGuide dir anschauen, um dir die Funktionsweise und den Aufbau von Of genauer anzuschauen. Ansonsten schätze ich mal, dass die Namen deiner Randbedingungen und deiner Flächen (innerhalb der boundary-Datei) nicht übereinstimmen. Ist jedoch nur eine Vermutung und andere können dir vielleicht hier besser helfen. Ist aber prinzipiell schwer zu sagen ohne den Case vor sich zu haben. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 26. Sep. 2013 12:57 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Kann meinem Vorgänger nur zustimmen. Wie sieht den deine Enthalpiedatei (h) aus? (bitte mit "code" Tags) Weiter würde mich deine boundary-Datei des Fluids interessieren. Der CHT ist für den Einsteiger schon einer der schwersten (allgemein auch leicht aber vor allem für Neulinge sehr verwirrend). ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 26. Sep. 2013 14:44 <-- editieren / zitieren --> Unities abgeben:         
Danke schonmal für die Antworten! Ich habe versucht das Tutorial /heatTransfer/chtMultiRegionFoam/multiRegionHeater an meine Bedürfnisse anzupassen. Dazu habe ich den "heater", und "bottomAir" entfernt und "leftSolid" und "rightSolid" in "Solid1" und "Solid2" umbenannt. Dabei habe ich auch alle Einträge in den Codes umbenannt, bzw. die Einträge für "heater" und "bottomAir" enfernt. Im Tutorial konnte ich keine "Enthalpiedatei (h)" finden. Also habe ich versucht selber eine zu erstellen. Ich habe einen Enthalpiewert von 42.3 kJ/kg angenommen. Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; object h; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //dimensions [0 2 -2 0 0 0 0]; internalField uniform 42300; boundaryField { maxY { type fixedValue; value uniform 42300; } minX { type fixedValue; value uniform 42300; maxX { type fixedValue; value uniform 42300; } minZ { type fixedValue; value uniform 42300; } maxZ { type fixedValue; value uniform 42300; } minY { type fixedValue; value uniform 42300; } } // ************************************************************************* //
Die boundary-Datei habe ich ebenfalls aus dem Tutorial übernommen. Ich vermute, dass ich dort die "patch" bzw. "wall" types anpassen muss!? Code:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //6 ( maxY { type wall; nFaces 400; startFace 11100; } minX { type patch; nFaces 400; startFace 11500; } maxX { type patch; nFaces 400; startFace 11900; } minY { type wall; nFaces 400; startFace 12300; } minZ { type wall; nFaces 100; startFace 12700; } maxZ { type wall; nFaces 100; startFace 12800; } ) // ************************************************************************* //
Zum Verständnis habe ich hier eine Prinzipskizze von meinem Aufbau mit angehängt. Ich will eine heiße Platte (Solid1) durch anlegen einen kalten Platte (Solid2) abkühlen. 
Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 26. Sep. 2013 18:23 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Also eine Enthalpiedatei gibts wirklich nicht. Entsprechend kannst du diese Datei löschen. Wie kommst du denn darauf, dass du diese Datei benötigst. deine Boundarydatei sieht keineswegs aus als wäre es ein MultiRegion Solver. -> Du solltest dir das "Allrun" Skript mal anschauen. Da werden die Dateien noch ziemlich bearbeitet. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 26. Sep. 2013 19:08 <-- editieren / zitieren --> Unities abgeben:         
Aufgrund der Fehlermeldung ging ich davon aus, dass eine Enthalpiedatei benötigt wird. Code:
gradientInternalCoeffs cannot be called for a calculatedFvPatchField on patch maxY of field h in file "/Volumes/OpenFOAM-v2.2/OpenFOAM-2.2.0/RUN/Presshardening/heatTransfer/chtMultiRegionFoam/0/Air/h" You are probably trying to solve for a field with a default boundary condition.
Mein "Allrun" Script sieht wie folgt aus. Ich kann da nichts bezüglich einer Änderung der Enthalpie sehen. Code: #!/bin/sh cd ${0%/*} | | exit 1 # run from this directory # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions
runApplication blockMesh runApplication topoSet runApplication splitMeshRegions -cellZones -overwrite # remove fluid fields from solid regions (important for post-processing) for i in Solid1 Solid2 do rm -f 0*/$i/{mut,alphat,epsilon,k,U,p_rgh} done for i in Air Solid1 Solid2 do changeDictionary -region $i > log.changeDictionary.$i 2>&1 done
#-- Run on single processor #runApplication `getApplication`
# Decompose runApplication decomposePar -allRegions # Run runParallel `getApplication` 4 # Reconstruct runApplication reconstructPar -allRegions echo echo "creating files for paraview post-processing" echo paraFoam -touchAll
# ----------------------------------------------------------------- end-of-file
Gruß, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 26. Sep. 2013 19:35 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 27. Sep. 2013 12:28 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Zu deinem Aufbau. Die kalte Platte wird nur über die Luft gekühlt oder hat die kalte Platte ggf. irgendwelche innenliegenden Kanäle zur Kühlung dieser? Die Frage deshalb, weil ohne dein SOLID II die Kühlung normalerweise besser ist als mit. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 27. Sep. 2013 12:39 <-- editieren / zitieren --> Unities abgeben:         
Die Platte Solid2 ist massiv. Ich gehe davon aus, dass durch das Anlegen der Platte mehr Wärme aus Solid1 entzogen wird als durch reine Luftkühlung, da die Platte eine höhere Wärmeleitung hat, als wenn man Solid1 durch Konvektion an der Luft (geringer Wärmeübergangskoeffizient) abkühlen lässt. Die Platte müsste dann entsprechend dickwandig sein, um durch den Temperaturausgleich auf eine möglichst geringe Temperatur zu kommen. Mit Hilfe der Simulation möchte ich gerne überprüfen, wie dick die Platte sein müsste, um das Blech (Dicke 1mm) innerhalb von 30 Sekunden von 950°C auf 150°C abzukühlen. Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 27. Sep. 2013 16:19 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Hallo Eugen, so sieht das schon anders aus. Wieso benötigst du dann die Luft? Massiv ist nicht entscheidend  Wärmeleitfähigkeit und Wärmekapazität  Aber dein Problem ist also instationär und die abzukühlende Platte wird nicht beheizt sondern ist auf T=950°C und muss abgekühlt werden - wie das Abschrecken von Stahl in Wasser. Dann macht deine Simulation natürlich wieder sehr viel Sinn  ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 27. Sep. 2013 16:28 <-- editieren / zitieren --> Unities abgeben:         
Ja, genau. Im Prinzip will ich das Blech abschrecken, nur ohne Wasser. Die Luft kann ich in der Tat weglassen, die wird in den ersten 30 Sekunden keinen großen Einfluss auf den Abkühlprozess haben. Ich werde das ganze mal nur mit den 2 Solids versuchen. Mal sehen, ob das funktioniert. Gruß, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 27. Sep. 2013 17:08 <-- editieren / zitieren --> Unities abgeben:         
Wenn ich die Luft entferne und chtMultiRegionFoam ausführe erhalte ich diese Fehlermeldung: Code:
--> FOAM FATAL ERROR: fluid not found in table. Valid entries: 1(solid) From function HashTable<T, Key, Hash>: perator[](const Key&) in file /Users/Eugen/OpenFOAM/OpenFOAM-2.2.0/src/OpenFOAM/lnInclude/HashTableI.H at line 117. FOAM exiting
Anscheinend wird ein Fluid für die Berechnung benötigt. Muss ich jetzt etwas in HashTableI.H verändern, damit ich ohne Fluid arbeiten kann? Gruß, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 27. Sep. 2013 19:12 <-- editieren / zitieren --> Unities abgeben:         
Ich glaube ich habe mein Problem gefunden. Wenn ich das Allrun-Script im tutorial ausführe wird immer ein polyMesh-Ordner in den constant/Solid und constant/Air Ordnern erzeugt. Wenn ich allerdings in meiner Simulation "Allrun" ausführe wird kein polyMesh-Ordner erzeugt. Ich habe deshalb manuell den polyMesh-Ordner aus dem constant-Verzeichnis in die Unterverzeichnisse constant/Solid und constant/Air kopiert. Jetzt sehe ich aber, dass die Dateien in verschiedenen polyMesh-Ordnern verschieden sein müssen. Also lag mein Problem vermutlich daran, dass ich es einfach kopiert habe. Ich frage mich jetzt allerdings, wieso mein Allrun-Script keine polyMesh-Ordner erstellt. Hier ist nochmal der Code. Das Allrun-Script habe ich aus dem Tutorial "multRegionLiquidHeater" kopiert und lediglich heater aus der ersten for-Schleife und bottomWater und heater aus der zweiten for-Schleife entfernt. leftSolid und rightSolid habe ich umbenannt in Solid1 und Solid2.
Code:
#!/bin/sh cd ${0%/*} | | exit 1 # run from this directory # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions
runApplication blockMesh runApplication topoSet runApplication splitMeshRegions -cellZones -overwrite # remove fluid fields from solid regions (important for post-processing) for i in Solid1 Solid2 do rm -f 0*/$i/{mut,alphat,epsilon,k,U,p_rgh} done for i in topAir Solid1 Solid2 do changeDictionary -region $i > log.changeDictionary.$i 2>&1 done
#-- Run on single processor #runApplication chtMultiRegionFoam
# Decompose runApplication decomposePar -allRegions # Run runParallel `getApplication` 4 # Reconstruct runApplication reconstructPar -allRegions echo echo "creating files for paraview post-processing" echo paraFoam -touchAll
# ----------------------------------------------------------------- end-of-file
Gruß, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 30. Sep. 2013 18:39 <-- editieren / zitieren --> Unities abgeben:         
Ich vermute, mein Fehler liegt bei der Erstellung der Mesh-Dateien. Ich habe versucht die blockMeshDict und boundary Dateien aus dem Tutorial manuell zu verändern und an meine Bedürfnisse anzupassen. Allerdings war und ist mir nicht ganz klar, wo genau die einzelnen Körpergeometrien festgelegt werden und wo festgelegt wird, an welchen Flächen sich die Solids berühren. So wie ich das verstehe, wird in der blockMeshDict festgelegt, in wieviele Netze das Bauteil unterteilt werden soll. Brauche ich die blockMeshDict-Datei, wenn ich einen Mash-Generator wie z.B. Gmsh nutze? Ich nehme an, ich muss dann für jedes Bauteil einzeln eine Mash-Datei erstellen und z.B. in den Ordner constant/Solid1/polyMesh/ einfügen. Kann mir jemand das genaue Vorgehen erklären? Ich habe mir den UserGuide durchgelesen, allerdings ist mir einiges noch nicht ganz klar. Was ist z.B. der Unterschied zwischen type wall und type patch in der boundary-Datei? Handelt es sich beim patch um die Verbindungsfläche zum nächsten Solid, bzw. Fluid? Viele Grüße, Eugen Code: maxY { type wall; nFaces 300; startFace 8300; } minX { type patch; nFaces 100; startFace 8600; }
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Sep. 2013 20:54 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
|
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 01. Okt. 2013 10:06 <-- editieren / zitieren --> Unities abgeben:         
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 01. Okt. 2013 12:09 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Was ist wenn du dein Mesh mal Step by Step erstellst und die Settings manuell eingibst? Das mit dem Skript scheint bei dir ja nicht richtig zu funktionieren. Somit könntest du dann auch deine Fehlerquellen eingrenzen. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 01. Okt. 2013 18:16 <-- editieren / zitieren --> Unities abgeben:         
Wie muss ich denn genau vorgehen? Ich versuche mein Mesh mit Gmsh zu erstellen. Muss ich mit Gmsh die Geometrie von jeder Platte einzeln erstellen ("Solid1" und "Solid2") und diese dann in die jeweiligen polymesh-Ordner integrieren? Mir ist noch nicht klar, wo ich festlege, an welcher Fläche sich die beiden Platten berühren. Wird das in makeCellSets.setSet festgelegt? Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 01. Okt. 2013 19:02 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Richtig. Du machst Region1 und kopierst diese in constant/region1 Dann das Mesh #2 und das kopierst du dann in constant/region2 Welche Flächen sich berühren sagst du im File constant/region*/polyMesh/boundary: [code] flache1_to_flache2 { type mappedWall; . }
------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 01. Okt. 2013 23:22 <-- editieren / zitieren --> Unities abgeben:         
Wenn ich das Mesh für "Solid1" mit Gmsh erstelle und mit dem Befehl "gmshToFoam Solid1.msh" umwandle, wird der Ordner constant/polyMesh angelegt mit den Dateien: Code: boundary faceZones neighbour pointZones sets cellZones faces owner points
Wenn ich das gleiche für "Solid2" ausführe, wird der Ordner constant/polyMesh überschrieben. So wie ich das sehe, kann ich die so erzeugten "polyMesh"-Ordner nicht einfach in constant/Solid1 und constant/Solid2 kopieren. Die Ordnerstruktur unterscheidet sich zu denen in den Tutorials bei z.B. constant/leftSolid/polyMesh:
Code: boundary faces boundaryRegionAddressing neighbour cellRegionAddressing owner cellZones pointRegionAddressing faceRegionAddressing pointZones faceZones points
Ist der Befehl "gmshToFoam Solid1.msh" der falsche für meinen Fall? Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 02. Okt. 2013 10:21 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
1. mesh1 konvertieren 2. mesh1 von constant/polyMesh in constant/region1/polyMesh schieben 3. mesh2 konvertieren 4. mesh2 von constant/polyMesh in constant/region2/polyMesh schieben Die ganzen Dateien die du zusätzlich im Tutorial hast, kommen von diversen Skripten. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 02. Okt. 2013 15:48 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für die Hilfe! Ich habe die einzelnen polyMesh-Ordner in die jeweiligen Regions kopiert. Jetzt funktioniert es auch mit dem Simulieren. Fürs erste habe ich die Platten "Solid1" und "Solid2" gleich dick gestaltet, um zu überprüfen, ob das Ergebnis plausibel ist. Wenn "Solid1" eine Temperatur von 1200K und "Solid2" eine Temperatur von 300K aufweisen, dann sollte sich durch den Temperaturausgleich eine Mitteltemperatur einstellen. Diese sollte 750K betragen, da die Platten aus dem selben Werkstoff bestehen und die gleichen Geometrien haben. Meine Simulation ergibt allerdings dieses Bild:
 Der Temperaturausgleich ist schon nach 4 Sekunden abgeschlossen. Allerdings beträgt die Temperatur nur etwas über 300K. Liegt der Fehler evtl. in meiner boundary? Hier ist die boundary-Datei von Solid1. Die von Solid2 ist dem entsprechend ähnlich. Wenn ich type patch in type wall ändere erhalte ich eine etwas höhere Temperatur von ca. 350K, was jedoch immer noch viel zu niedrig ist. Viele Grüße, Eugen
Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class polyBoundaryMesh; location "constant/polyMesh"; object boundary; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //6 ( Solid1_to_Solid2 { type mappedWall; nFaces 256; startFace 32416; sampleMode nearestPatchFace; sampleRegion Solid2; samplePatch Solid2_to_Solid1; offsetMode uniform; offset ( 0 0 0 ); } Solid1minZ { type patch; physicalType patch; nFaces 256; startFace 32672; } Solid1maxX { type patch; physicalType patch; nFaces 256; startFace 32928; } Solid1minX { type patch; physicalType patch; nFaces 256; startFace 33184; } Solid1maxY { type patch; physicalType patch; nFaces 256; startFace 33440; } Solid1minY { type patch; physicalType patch; nFaces 256; startFace 33696; } ) // ************************************************************************* //
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 02. Okt. 2013 17:28 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
|
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 02. Okt. 2013 17:38 <-- editieren / zitieren --> Unities abgeben:         
Für Solid1 sieht das T-File wie folgt aus: Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //dimensions [ 0 0 0 1 0 0 0 ]; internalField uniform 1200; boundaryField { Solid1minX { type zeroGradient; value uniform 1200; } Solid1minZ { type zeroGradient; value uniform 1200; } Solid1minY { type zeroGradient; value uniform 1200; } Solid1_to_Solid2 { type compressible::turbulentTemperatureCoupledBaffleMixed; value uniform 1200; neighbourFieldName T; kappa solidThermo; kappaName none; } Solid1maxY { type zeroGradient; value uniform 1200; } Solid1maxX { type zeroGradient; value uniform 1200; } } // ************************************************************************* //
Hier ist das T-File für Solid2: Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //dimensions [ 0 0 0 1 0 0 0 ]; internalField uniform 300; boundaryField { minX { type zeroGradient; value uniform 300; } maxZ { type zeroGradient; value uniform 300; } minY { type zeroGradient; value uniform 300; } Solid2_to_Solid1 { type compressible::turbulentTemperatureCoupledBaffleMixed; value uniform 300; neighbourFieldName T; kappa solidThermo; kappaName none; } maxY { type zeroGradient; value uniform 300; } maxX { type zeroGradient; value uniform 300; } } // ************************************************************************* //
Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 02. Okt. 2013 17:55 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
|
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 04. Okt. 2013 20:08 <-- editieren / zitieren --> Unities abgeben:         
Ich habe alle patches auf wall umbenannt. Das Ergebnis ist annähernd das selbe. Die Cp-Werte betragen bei beiden Solids 450. Ich habe schon mehrere Male die Dateien durchgeguckt, aber konnte nichts finden, was falsch sein könnte. Vielleicht kannst du dir das mal ansehen. Ansonsten wüsste ich nicht, was ich verändern sollte. Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 10. Okt. 2013 21:13 <-- editieren / zitieren --> Unities abgeben:         
Hallo nochmal, ich habe meine Dateien noch mal durchgesehen. Ist der type: compressible::turbulentTemperatureCoupledBaffleMixed der korrekte für einen reinen Solid/Solid Kontakt? Es handelt sich ja um kein turbulentes Fluid. Viele Grüße, Eugen Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.2.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format binary; class volScalarField; location "0"; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //dimensions [ 0 0 0 1 0 0 0 ]; internalField uniform 1200; boundaryField { minX { type zeroGradient; value uniform 1200; } minZ { type zeroGradient; value uniform 1200; } minY { type zeroGradient; value uniform 1200; } Solid1_to_Solid2 { type compressible::turbulentTemperatureCoupledBaffleMixed; value uniform 1200; neighbourFieldName T; kappa solidThermo; kappaName none; } maxY { type zeroGradient; value uniform 1200; } maxX { type zeroGradient; value uniform 1200; } } // ************************************************************************* //
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 10. Okt. 2013 22:55 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010
|
erstellt am: 11. Okt. 2013 00:00 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Code:
Solving for solid region Solid1 DICPCG: Solving for h, Initial residual = 0.00011274847, Final residual = 2.8017294e-07, No Iterations 1 DICPCG: Solving for h, Initial residual = 2.8043922e-07, Final residual = 2.8043922e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 747.51381 max(T) [0 0 0 1 0 0 0] 747.51383Solving for solid region Solid2 DICPCG: Solving for h, Initial residual = 0.00011266262, Final residual = 2.7863282e-07, No Iterations 1 DICPCG: Solving for h, Initial residual = 2.7918287e-07, Final residual = 2.7918287e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 747.51381 max(T) [0 0 0 1 0 0 0] 747.51383 ExecutionTime = 79.88 s ClockTime = 81 s Region: Solid1 Diffusion Number mean: 0.00011111111 max: 0.00011111111 Region: Solid2 Diffusion Number mean: 0.00011111111 max: 0.00011111111 Time = 47.24 Solving for solid region Solid1 DICPCG: Solving for h, Initial residual = 0.00011274418, Final residual = 2.8016351e-07, No Iterations 1 DICPCG: Solving for h, Initial residual = 2.8033461e-07, Final residual = 2.8033461e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 747.51381 max(T) [0 0 0 1 0 0 0] 747.51383
Solving for solid region Solid2 DICPCG: Solving for h, Initial residual = 0.00011265899, Final residual = 2.7862411e-07, No Iterations 1 DICPCG: Solving for h, Initial residual = 2.7897005e-07, Final residual = 2.7897005e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 747.51381 max(T) [0 0 0 1 0 0 0] 747.51383 ExecutionTime = 79.9 s ClockTime = 81 s Region: Solid1 Diffusion Number mean: 0.00011111111 max: 0.00011111111 Region: Solid2 Diffusion Number mean: 0.00011111111 max: 0.00011111111 Time = 47.25 Solving for solid region Solid1 DICPCG: Solving for h, Initial residual = 0.00011274018, Final residual = 2.8015553e-07, No Iterations 1 DICPCG: Solving for h, Initial residual = 2.8045618e-07, Final residual = 2.8045618e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 747.51381 max(T) [0 0 0 1 0 0 0] 747.51383
Video hier: http://www.holzmann-cfd.de/media/openfoam/simulation/zweiBloecke.flv
1. (wohl dein Problem) - dein Netz ist sehr komisch. Vor allem bei reiner Wärmeleitung kannst du ruhig grobstrukturiert Vernetzen (und wieso nicht Hexaederzellen?). 2. Du rechnest auf einem Mac :) ? 3. Meine Berechnung ist teils dein Case teils neu aufgesetzt (das Netz habe ich schnell neu gemacht und andere Abmaße genommen). 4. Strahlungsmodell habe ich mal ausgeschalten (aber das hat keinen Einfluss / anscheinend - habs nicht genau geprüft). 5. controlDict hab ich noch geändert, sonst hat er mir nichts berechnet - kommt nur folgende Ausgabe:
Code:
Selecting thermodynamics package { type heSolidThermo; mixture pureMixture; transport constIso; thermo hConst; equationOfState rhoConst; specie specie; energy sensibleEnthalpy; } Adding to radiations Selecting radiationModel opaqueSolid Selecting absorptionEmissionModel constantAbsorptionEmission Selecting scatterModel none Adding fvOptions No finite volume options present Region: Solid1 Diffusion Number mean: 0.00011111111 max: 0.00011111111 Region: Solid2 Diffusion Number mean: 0.00011111111 max: 0.00011111111 End
Um auf dein Case zurückzukommen. Du hast prinzipiell alles richtig gemacht. Konnte keine Fehler entdecken außer Initialisierungssachen, die aber irrelevant sein sollten. Ich tippe definitiv auf dein komisches Netz (das es in der Tat ist).
IM Anhang ist nochmals ein Screenshot deines Falles nach 0,3375 s. Hier ist schon deutlich zu erkennen, dass dies physikalisch unsinnig ist. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 11. Okt. 2013 19:01 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für diese ausführliche Antwort. 1.) Das Mesh hatte ich mit GMSH erstellt. Dort konnte ich keine hexagonale Vernetzung auswählen. Ich werde es mal mit blockMeshDict versuchen. 2.) Ja, ich nutze OpenFoam unter Mac OS X. Was hast du denn an der controlDict verändert? Ich habe mein Mesh jetzt mit blockMeshDict erstellt. Wenn ich die Simulation ausführe kommt bei mir die gleiche Meldung, allerdings wird danach trotzdem gerechnet. Das komische ist nur, dass bei 2,16 Sekunden statt bei 1 Sekunde die ersten Werte gespeichert werden. Code:
Adding to thermosSelecting thermodynamics package { type heSolidThermo; mixture pureMixture; transport constIso; thermo hConst; equationOfState rhoConst; specie specie; energy sensibleEnthalpy; } Adding to radiations Selecting radiationModel opaqueSolid Selecting absorptionEmissionModel constantAbsorptionEmission Selecting scatterModel none Adding fvOptions No finite volume options present Region: Solid1 Diffusion Number mean: 7.7037037e-05 max: 0.00022222222 Region: Solid2 Diffusion Number mean: 7.7037037e-05 max: 0.00022222222 deltaT = 9 Region: Solid1 Diffusion Number mean: 0.69333333 max: 2 Region: Solid2 Diffusion Number mean: 0.69333333 max: 2 deltaT = 2.16 Time = 2.16 Solving for solid region Solid1 DICPCG: Solving for h, Initial residual = 1, Final residual = 2.6706191e-08, No Iterations 4 DICPCG: Solving for h, Initial residual = 1.3907909e-06, Final residual = 4.0781012e-08, No Iterations 1 Min/max T:min(T) [0 0 0 1 0 0 0] 301.8601 max(T) [0 0 0 1 0 0 0] 750
Solving for solid region Solid2 DICPCG: Solving for h, Initial residual = 1, Final residual = 1.2522037e-08, No Iterations 4 DICPCG: Solving for h, Initial residual = 6.5211644e-07, Final residual = 6.5211644e-07, No Iterations 0 Min/max T:min(T) [0 0 0 1 0 0 0] 300.93005 max(T) [0 0 0 1 0 0 0] 301.85626 ExecutionTime = 0.06 s ClockTime = 0 s
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 11. Okt. 2013 22:10 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Angaben zur Verwendung des controlDicts findest du im Userguide. Aber sieht doch schon viel besser aus! Also die Meldung kommt schon nur bei mir war dann schon ende ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StudentMB77 Mitglied

 Beiträge: 22 Registriert: 18.09.2013
|
erstellt am: 15. Okt. 2013 17:58 <-- editieren / zitieren --> Unities abgeben:         
Jetzt läuft meine Simulation endlich wie sie soll!  Vielen, vielen Dank für die ausführliche Hilfe!! Ich habe die Vernetzung mit Salome erstellt. Jetzt erhalte ich auch plausible Ergebnisse. Anscheinend lag es wirklich nur am schlechten Netz. Ich habe bei dir im Video gesehen, dass die Zeit in der Simulation mit angezeigt wird. Wenn ich ich ein Video mit ParaView erstelle, fehlt bei mir die Zeitanzeige. Muss ich das irgendwo zusätzlich einstellen? Und gibt es eine Möglichkeit, das Temperaturprofil in Form eines Graphen darzustellen? Also, dass ich beispielsweise zum Zeitpunkt t=3s die Temperaturverteilung im Bauteil sehen kann? Viele Grüße, Eugen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 15. Okt. 2013 18:45 <-- editieren / zitieren --> Unities abgeben:          Nur für StudentMB77
Hallo Eugen, 1. ja du kannst die Temperaturverläufe als Graphen darstellen -> Filter -> Plot Over Line oder sowas 2. Die Zeit kannst du mit Source -> Time irgendwas einstellen, mache ich aber anders: a) Jeden Zeitschritt speichern (*png) b) Alle Bilder werden mit einem Bash-Skript bearbeitet. In diesem Skript stell ich dann alles ein. 3. Dein Netz ist für eine numerische Berechnung wirklich nicht zu gebrauchen gewesen - siehe Ferziger oder weiterführende Literatur. Aufjedenfall freut es mich zu hören, dass deine Simulation nun funktioniert. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |