| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys | | | | NVH-Toolkit – Messung & Simulation zusammenbringen | Tech Artikel, ein Fachartikel
|
Autor
|
Thema: Mittlere Temperatur auf Fläche berechnen (4372 mal gelesen)
|
nimrod85 Mitglied
Beiträge: 21 Registriert: 16.01.2014
|
erstellt am: 01. Mrz. 2014 17:19 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich versuche gerade mit einem APDL Skript in ANSYS WB 14.0 die mittlere Temperatur auf einer Fläche für jeden Zeitschritt zu berechnen (in einer transienten Analyse). Zunächst versuche ich es erst einmal in einer stationären Analyse, da ich hier ja nur ein einziges Ergebnis und nicht viele Substeps vorliegen habe. Wenn das mit der stationären Analyse funktioniert will ich das Skript für eine transiente Analyse erweitern. Ich will die Knoten der Fläche flaeche selektieren und den kleinsten, den größten und die Anzahl der selektierten Knoten bestimmen. Hierfür habe ich folgende Befehle im Post-Processing (Lösung) eingefügt: nsel,,,,flaeche ! Fläche selektieren *get,my_minNode,node,0,num,min ! Minimale Knotennummer der Fläche ermitteln *get,my_maxNode,node,0,num,max ! Maximale Knotennummer der Fläche ermitteln *get,my_numnode,node,0,count ! Anzahl der Knoten der Fläche ermitteln nsel,all Hier ist das Problem, dass die ermittelten Werte immer Null sind. Wenn ich obigen Code vor dem Lösungsschritt einfüge unter bspw. Thermisch-Stationär(C4) ermittelt ANSYS die Werte korrekt. Kann ich diese ermittelten Werte, die ja dann nicht im Post-Processing Schritt ermittelt wurden trotzdem im einem zweiten APDL Skript, dass ich unter Lösung drin habe verwenden?? Falls ja wäre das Problem gelöst. Wenn nicht, wie funktioniert das dann im Lösungsschritt? Anschließend möchte ich über folgendes Schleifenkonstrukt, das ich im Post-Processing (Lösung) in ein APDL Skript eingefügt habe die mittlere Temperatur der selektierten Fläche berechnen, was aber nicht funktioniert (Ergebnis ist für my_mtemp immer 0):
/OUTPUT,testout,out,, set,last nsel,,,,flaeche my_minNode=my_minNode my_maxNode=my_maxNode my_numnode=my_numnode set,my_sum,0.0 set,my_tempNode,0 my_curnode=my_minNode !Aktuelle Knotennummer ist am Anfan Knoten mit kleinster Nummer *do,ii,1,my_numnode *get,my_tempNode,node,my_curnode,ntemp !Temperatur am Knoten ermitteln my_sum=my_sum+my_tempNode !Summe der Temperaturen berechnen *get,my_nextnode,node,my_curnode,nxth !Nummer des nächsten Knotens ermitteln my_curnod=my_nextnode !Aktuelle Knotennummer aktualisieren *enddo my_mtemp=my_sum/my_numnode !Mittlere Temperatur berechnen In der Output File stehen folgende Meldungen: SET COMMAND GOT LOAD STEP= 1 SUBSTEP= 7 CUMULATIVE ITERATION= 7 TIME/FREQUENCY= 1.0000 TITLE= gehaeuse--Thermisch-stationär (C4) 280 NODES (OF 3600 DEFINED) SELECTED BY NSEL COMMAND. PARAMETER MY_MINNODE = 1.000000000 PARAMETER MY_MAXNODE = 1423.000000 PARAMETER MY_NUMNODE = 280.0000000 PARAMETER MY_SUM = 0.000000000 PARAMETER MY_TEMPNODE = 0.000000000 PARAMETER MY_CURNODE = 1.000000000 *DO LOOP ON PARAMETER= II FROM 1.0000 TO 280.00 BY 1.0000 *** WARNING *** CP = 5.585 TIME= 21:54:41 The data for *GET entity NODE item NTEMP and NODE= 1 is not defined. The *GET command is ignored. PARAMETER MY_SUM = 0.000000000 *GET MY_NEXTNODE FROM NODE 1 ITEM=NXTH VALUE= 2.00000000 PARAMETER MY_CURNOD = 2.000000000 *ENDDO INDEX= II *** WARNING *** CP = 5.585 TIME= 21:54:41 The data for *GET entity NODE item NTEMP and NODE= 1 is not defined. The *GET command is ignored. Wenn ich das richtig verstehe behauptet ANSYS, dass für Knoten 1 keine Temperatur vorliegt. Ergebnisse sind aber vorhanden. Vielen Dank. [Diese Nachricht wurde von nimrod85 am 01. Mrz. 2014 editiert.] [Diese Nachricht wurde von nimrod85 am 01. Mrz. 2014 editiert.] [Diese Nachricht wurde von nimrod85 am 01. Mrz. 2014 editiert.] [Diese Nachricht wurde von nimrod85 am 01. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nimrod85 Mitglied
Beiträge: 21 Registriert: 16.01.2014
|
erstellt am: 01. Mrz. 2014 18:49 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von nimrod85:
Hier ist das Problem, dass die ermittelten Werte immer Null sind. Wenn ich obigen Code vor dem Lösungsschritt einfüge unter bspw. Thermisch-Stationär(C4) ermittelt ANSYS die Werte korrekt. Kann ich diese ermittelten Werte, die ja dann nicht im Post-Processing Schritt ermittelt wurden trotzdem im einem zweiten APDL Skript, dass ich unter Lösung drin habe verwenden?? Falls ja wäre das Problem gelöst. Wenn nicht, wie funktioniert das dann im Lösungsschritt?
Dieses Problem habe ich nun selbst lösen können mit einem Trick: Ich habe folgende APDL-Kommandos im Prep7 dringelassen: nsel,,,,flaeche ! Fläche selektieren *get,my_minNode,node,0,num,min ! Minimale Knotennummer der Fläche ermitteln *get,my_maxNode,node,0,num,max ! Maximale Knotennummer der Fläche ermitteln *get,my_numnode,node,0,count ! Anzahl der Knoten der Fläche ermitteln nsel,all im Post1 mache ich dann: my_minNode=my_minNode my_maxNode=my_maxNode my_numnode=my_numnode damit sind auch im Lösungsschritt die im Prep7 ermittelten Werte vorhanden
[Diese Nachricht wurde von nimrod85 am 01. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nimrod85 Mitglied
Beiträge: 21 Registriert: 16.01.2014
|
erstellt am: 01. Mrz. 2014 22:53 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von nimrod85:
Anschließend möchte ich über folgendes Schleifenkonstrukt, das ich im Post-Processing (Lösung) in ein APDL Skript eingefügt habe die mittlere Temperatur der selektierten Fläche berechnen, was aber nicht funktioniert (Ergebnis ist für my_mtemp immer 0): /OUTPUT,testout,out,, set,last nsel,,,,flaeche my_minNode=my_minNode my_maxNode=my_maxNode my_numnode=my_numnode set,my_sum,0.0 set,my_tempNode,0 my_curnode=my_minNode !Aktuelle Knotennummer ist am Anfan Knoten mit kleinster Nummer *do,ii,1,my_numnode *get,my_tempNode,node,my_curnode,ntemp !Temperatur am Knoten ermitteln my_sum=my_sum+my_tempNode !Summe der Temperaturen berechnen *get,my_nextnode,node,my_curnode,nxth !Nummer des nächsten Knotens ermitteln my_curnod=my_nextnode !Aktuelle Knotennummer aktualisieren *enddo my_mtemp=my_sum/my_numnode !Mittlere Temperatur berechnen In der Output File stehen folgende Meldungen: SET COMMAND GOT LOAD STEP= 1 SUBSTEP= 7 CUMULATIVE ITERATION= 7 TIME/FREQUENCY= 1.0000 TITLE= gehaeuse--Thermisch-stationär (C4) 280 NODES (OF 3600 DEFINED) SELECTED BY NSEL COMMAND. PARAMETER MY_MINNODE = 1.000000000 PARAMETER MY_MAXNODE = 1423.000000 PARAMETER MY_NUMNODE = 280.0000000 PARAMETER MY_SUM = 0.000000000 PARAMETER MY_TEMPNODE = 0.000000000 PARAMETER MY_CURNODE = 1.000000000 *DO LOOP ON PARAMETER= II FROM 1.0000 TO 280.00 BY 1.0000 *** WARNING *** CP = 5.585 TIME= 21:54:41 The data for *GET entity NODE item NTEMP and NODE= 1 is not defined. The *GET command is ignored. PARAMETER MY_SUM = 0.000000000 *GET MY_NEXTNODE FROM NODE 1 ITEM=NXTH VALUE= 2.00000000 PARAMETER MY_CURNOD = 2.000000000 *ENDDO INDEX= II *** WARNING *** CP = 5.585 TIME= 21:54:41 The data for *GET entity NODE item NTEMP and NODE= 1 is not defined. The *GET command is ignored. Wenn ich das richtig verstehe behauptet ANSYS, dass für Knoten 1 keine Temperatur vorliegt. Ergebnisse sind aber vorhanden. Vielen Dank.
Der Fehler lag an der Zeile: *get,my_tempNode,node,my_curnode,ntemp ntemp ist ein Preprocessing Item es muss lauten: *get,my_tempNode,node,my_curnode,temp Dann funktioniert alles wunderbar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wosch Ehrenmitglied V.I.P. h.c. Elektrotechniker im Ruhestand
Beiträge: 2607 Registriert: 16.12.2004 Rechne zuerst ein Problem nach, für das Du eine analytische Lösung kennst.
|
erstellt am: 02. Mrz. 2014 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für nimrod85
|
nimrod85 Mitglied
Beiträge: 21 Registriert: 16.01.2014
|
erstellt am: 02. Mrz. 2014 17:18 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von wosch: Die mittlere Temperatur einer Fläche ist nur dann der Mittelwert aller Knotentemperaturen, wenn alle Elemente gleich groß sind.
Hallo Wolfgang, ja das ist mir bekannt. Deshalb habe ich an den Stellen an denen ich den Mittelwert berechne extra regelmäßig komplett mit Hexaedern vernetzt. Trotzdem vielen Dank für den Hinweis. Bei allgemein orientierten Elementen mit unterschiedlichen Flächen muss ich ja über alle Elemente laufen und an jedem Knoten eines jeden Elements einen Wichtungsfaktor bestimmen und damit die Knotenergebnisse (Temperaturen) im Element gewichten. Daür würde ich mir dann aber ein extra TCL/Fortran oder Matlab Skript schreiben. Ist für meine Zwecke auch etwas zu aufwändig. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
smittytomcat Mitglied Naval Architect / Dipl.-Ing. Schiffbau, selbstständig
Beiträge: 1325 Registriert: 23.08.2005 ANSYS Bricscad Windows XP Prof 32 bit SP 3 Windoof 7 Prof 64 bit Dell Precision's Bleistift Radiergummi Dreieck Papier Dubbel etc. Taschenrechner den eigenen Kopf ...
|
erstellt am: 02. Mrz. 2014 19:25 <-- editieren / zitieren --> Unities abgeben: Nur für nimrod85
Moin, mal blöde gefragt. Da man sich mittels *get Funktion ja die Fläche eines Elements ausgeben lassen kann - ist die bulk-Temperatur (die ja auch die *get Funktion liefert) nicht ein Weg, oder verstehe ich da den Unterschied nicht (pardon, habe noch nie Temperatur-kritische Rechnungen durchgeführt) die Mittelung über die gesamte Fläche durchzuführen? ------------------ Gruß Gerd Hunde haben ein Herrchen oder Frauchen - Katzen haben Personal. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nimrod85 Mitglied
Beiträge: 21 Registriert: 16.01.2014
|
erstellt am: 02. Mrz. 2014 20:17 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von smittytomcat: Moin,mal blöde gefragt. Da man sich mittels *get Funktion ja die Fläche eines Elements ausgeben lassen kann - ist die bulk-Temperatur (die ja auch die *get Funktion liefert) nicht ein Weg, oder verstehe ich da den Unterschied nicht (pardon, habe noch nie Temperatur-kritische Rechnungen durchgeführt) die Mittelung über die gesamte Fläche durchzuführen?
Ja die Fläche eines Elements schon, aber man muss sich auch für jeden Knoten über die Formfunktionen im Einheitselement den Anteil des jeweiligen Knotes an der Fläche ermitteln. Hierfür muss man auf jedenfall neben der Fläche des Elements über jedes Element laufen und über die Gausspunkte des Elements und den Flächenanteil durch Formfunktion * Jacobideterminante * Wichtung an jedem Knoten den Anteil an er Fläche des Elements ermitteln. Das ist aufwändig, da man die Fläche abreifen muss. Ermitteln muss welches Element vorliegt, passende Formfunktionen und Wichtungsfaktoren abgelegt haben muss, sowie natürlich die Knoten-Element-Zuordung und die Knotenkoordinaten. Das ist mit APDL denke ich nicht mehr so einfach zu realisieren. Aber dann könnte man einen dimensionslosen Wichtungsfaktor einführen: Flächenanteil des Knotens/Gesamtelementfläche Mit diesem dann die Temperaturen am jeweiligen Knoten wichten. Sowas würde ich in TCL oder Fortran umsetzen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IronW Mitglied
Beiträge: 2 Registriert: 12.09.2017 Ansys WB 18.0
|
erstellt am: 18. Sep. 2017 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für nimrod85
Hallo, ich möchte ebenfalls die gemittelte Knotentemperatur auf einer Fläche (bzw. mehrere Flächen als Komponente zusammengefasst) im Letzten Zeitschritt einer transienten Analyse ausgeben. Ich habe eigentlich alles so übernommen, wie beschrieben. Allerdings bekomme ich immer nur die Temperatur des ersten Knotens, da die Schleife dann scheinbar abbricht Laut der Output file wird der Parameter my_sum nicht erkannt. Dabei wird dieser doch durch "set,my_sum,0.0" vorher definiert? Wäre cool, wenn mir hier jemand weiterhelfen könnte ---------------------------------------------- USE LAST SUBSTEP ON RESULT FILE FOR LOAD CASE 0 SET COMMAND GOT LOAD STEP= 1 SUBSTEP= 9 CUMULATIVE ITERATION= 9 TIME/FREQUENCY= 10.000 TITLE= Fertig2--Thermisch-transient (A5) 5192 NODES (OF 171159 DEFINED) SELECTED BY NSEL COMMAND. PARAMETER MY_MINNODE = 1.000000000 PARAMETER MY_MAXNODE = 55011.00000 PARAMETER MY_NUMNODE = 5192.000000 USE LOAD STEP 1 SUBSTEP LAST FOR LOAD CASE 0
SET COMMAND GOT LOAD STEP= 1 SUBSTEP= 9 CUMULATIVE ITERATION= 9 TIME/FREQUENCY= 10.000 TITLE= Fertig2--Thermisch-transient (A5) USE LOAD STEP 1 SUBSTEP LAST FOR LOAD CASE 0
SET COMMAND GOT LOAD STEP= 1 SUBSTEP= 9 CUMULATIVE ITERATION= 9 TIME/FREQUENCY= 10.000 TITLE= Fertig2--Thermisch-transient (A5) PARAMETER MY_CURNODE = 1.000000000 *DO LOOP ON PARAMETER= II FROM 1.0000 TO 5192.0 BY 1.0000 *GET MY_TEMPNODE FROM NODE 1 ITEM=TEMP VALUE= 165.509034 *** WARNING *** CP = 34.913 TIME= 11:17:12 Unknown parameter name= MY_SUM. A value of 7.888609052E-31 will be used. PARAMETER MY_SUM = 165.5090341 *GET MY_NEXTNODE FROM NODE 1 ITEM=NXTH VALUE= 2.00000000 PARAMETER MY_CURNOD = 2.000000000 *ENDDO INDEX= II PARAMETER MY_MTEMP = 165.5090341 Set Encoding of XML File to:ISO-8859-1 Set Output of XML File to: PARM, , , , , , , , , , , , , , , , , , , DATABASE WRITTEN ON FILE parm.xml EXIT THE ANSYS POST1 DATABASE PROCESSOR ***** ROUTINE COMPLETED ***** CP = 35.038
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
solve1 Mitglied Berechnungsingenieur
Beiträge: 624 Registriert: 27.05.2008 Ansys APDL Ansys WorkBench
|
erstellt am: 19. Sep. 2017 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für nimrod85
hi, um da was zu sagen zu können, wäre das APDL Script besser geeignet als der Solver Output. Mglw kannst du ja das mal zeigen. abgesehen davon wäre noch die Frage ob du wirklich den Mittelwert der Knotentemperaturen willst oder ob nicht sowas wie ein flächengewichtetes mittel sinnvoller wäre. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|