| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys |
Autor
|
Thema: Maximum des Kontaktdrucks! (3869 mal gelesen)
|
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 09:59 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich möchte bei einer Kontaktuntersuchung das Maximum des Kontaktdrucks herausschreiben. Über get scalar data kann ich mir an einem bestimmten Node den Druck ausgeben lassen. Gibt es eine Möglichkeit nur den Maximalwert rauszuschreiben? Dies möchte ich dann am besten für mehrere Substeps tun. Mir schwebt da eine Schleife vor in der ich mit einer Laufvariable (zb. I) die Werte abfrage. I müsste im Parameternamen erscheinen. z.B. Substep1 I=1 Parameter CP1=? Substep2 I=2 Parameter CP2=? usw..... ich hoffe ich habe mich verständlich ausgedrückt und bitte um eure Hilfe Viele Grüsse Jens
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 10:17 <-- editieren / zitieren --> Unities abgeben:
Hallo, den ersten Teil des Problems hab ich gelöst: NSORT,CONT,PRES *Get,CP,sort,,max werden die Nodal Results aufsteigend nach dem contact Pressure werte geordnet und dann mit GET wird ein Parameter mit dem Maximum erzeugt. Dies möchte ich jetzt gern für 100 Substeps in einer Schelife lösen. Hat jemand eine Idee? Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sören24 Mitglied Bauteilprüfung und Berechnung
Beiträge: 102 Registriert: 30.07.2005
|
erstellt am: 11. Okt. 2005 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
Hallo am besten du speicherst die Ergebnisse in einen Tabelle, da kammt man am leichtesten wieder ran und da kann nichts verloren gehen. Am besten du nimmst eine *do - Schleife. *dim, ergebnis, array, 1, 100 !Tabelle anlegen *do, i, 1, 100 substep laden *get,wert, ... !Befehl zum auslesen der Daten *vfill, ergbnis(i), data, wert *enddo Ich hoffe mal das hilft dir weiter Gruß Sören
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 12:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Sören, dankeschön. Läuft schon gut. Ich kann jetzt ein Array erstellen was den Step und den maxPress ausgibt. Schön, aber wie schreibe ich das ganze jetzt in eine Excel oder .txt datei? Ich probiere schon die ganze Zeit mit *vwrite rum aber irgendwie begreife ichs leider nicht. Kannst du mir weiterhelfen Gruss Jens P.S. Hier der Imput meiner Schleife *DIM,VALUE,,50,3 !Array mit 50 Zeilen und 2 Spalten *VFILL,VALUE(1,1),RAMP,1,1 !Füllen der ersten Spalte mit 1-50 *DO,I,1,50,1 !Schleife mit den Substeps 1 bis 50 Set,2,I !Setzen der Substeps im 2. Loadstep NSORT,CONT,PRES !Nodes ordnen *Get,CP,sort,,max !Maximalwert als Parameter CP *get,NCP,sort,,imax !Nodenummer MAXPRES *VFILL,VALUE(I,2),DATA,CP !Füllen des Array an der Stelle I,2 *VFILL,VALUE(I,3),DATA,NCP !Füllen des Array an der Stelle I,3 *ENDDO !Schleifenende :-))
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 12:49 <-- editieren / zitieren --> Unities abgeben:
Wenn ich nun *CFOPEN,create,dat,C:\Ansys_Projekte *VWRITE,VALUE(1,1),VALUE(1,2) *CFCLOS ausführe wird mir eine leere Datei erstellt und ich bekomme einen Fehler "ERROR in Format, not enough data format specifies" keine ahnung was das soll! Gruss Jens Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
sören24 Mitglied Bauteilprüfung und Berechnung
Beiträge: 102 Registriert: 30.07.2005
|
erstellt am: 11. Okt. 2005 13:42 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
Der Befehl zum schreiben in eine Datei hat so seine Tücken, man muss eine Formatierung angeben. *cfopen, ergebnisse,txt, *vwrite, ergebnis(1), ergebnis(2), ergebnis(3) !Zugriff auf Array möglich, auch als Schleife (3x,F10.2,3x,F10.4,3x,F10.1) *cfclose 3x als leerzeichen und das andere als formatierung, dabei steht F für float (glaube ich), der Wert nach dem Punkt sind die Nachkommastellen, man kann aber auch E für Exponetialschreibweise machen. Ich gebe dann alles in eine Textdatei aus und lese diese in excel ein, wenn man Leerzeichen zwischen den Tabellenspalten hat geht das ganz gut. Gruß Sören Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 13:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Sören ich begreif es leider immer noch nicht! Hier nochmal mein Imput: *DIM,VALUE,,50,4 !Array mit 50 Zeilen und 2 Spalten *VFILL,VALUE(1,1),RAMP,1,1 !Füllen der ersten Spalte mit Zahlen ab 1 mit dem Inkrement 1 *DO,I,1,50,1 !Schleife mit den Substeps 1 bis 50 Set,2,I !Setzen der Substeps im 2. Loadstep NSORT,CONT,PRES !Nodes aufsteigend nach contact pressure ordnen! *Get,CP,sort,,max !Maximalwert als Parameter CP rausschreiben (Mit *VGET ist auch ein Vektor rausschreibbar) *get,NCP,sort,,imax !Nodenummer MAXPRES *VFILL,VALUE(I,2),DATA,ANST *VFILL,VALUE(I,3),DATA,CP !Füllen des Array an der Stelle I,2 mit den Daten von CP *VFILL,VALUE(I,4),DATA,NCP !Füllen des Array an der Stelle I,2 mit den Daten von CP *ENDDO !Schleifenende :-)) *STATUS,ANST *STATUS,VALUE *cfopen, ergebnisse,txt,C:\Ansys_Projekte *vwrite, VALUE(1,1),VALUE(1,2) (F10.2,F10.4) *cfclose Ich bekomme folgende Warnings! *** WARNING *** CP = 25.953 TIME= 13:51:03 In the graphical user interface,the *VWRITE command can only be executed from an external file such as /INPUT or *USE. The command is ignored.
*** WARNING *** CP = 25.969 TIME= 13:51:03 Error in format, not enough data format specifiers . *** WARNING *** CP = 26.047 TIME= 13:51:03 (F10.2,F is not a recognized POST1 command, abbreviation, or macro. This command will be ignored. HILFE!!!!!!!!!
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: 11. Okt. 2005 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
|
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 11. Okt. 2005 16:40 <-- editieren / zitieren --> Unities abgeben:
Zusammenefasst habe ich also den heutigen Tag damit verbracht herauszufinden, dass Ansys dies nur über den Umweg über ein Macro schafft. Warum dies so ist, ist mir bis jetzt nicht klar. Noch weniger logisch erscheint mir, dass ich ein Feld was mir schon angezeigt wird nicht einfach geplottet werden kann! Warum kann man da nicht einfach ein "save as" integieren? Vielen Dank auf jeden Fall für eure Hilfe. Allein aufgrund der Ansys-Hilfe hätte ichs wohl nie hinbekommen. Hier nochmal für alle "Dummies" mein Imput zum Auslesen des Maximalen Kontaktdrucks in 50 Substeps (LS,2) und dem schreiben einer txt-datei die sich in Excel weiterverarbeiten lässt: *DIM,VALUE,,50,4 !Array mit 50 Zeilen und 4 Spalten *VFILL,VALUE(1,1),RAMP,1,1 !Füllen der ersten Spalte mit Zahlen ab 1 mit dem Inkrement 1
*DO,I,1,50,1 !Schleife mit den Substeps 1 bis 50 Set,2,I !Setzen der Substeps im 2. Loadstep NSORT,CONT,PRES !Nodes aufsteigend nach contact pressure ordnen! *Get,CP,sort,,max !Maximalwert als Parameter CP rausschreiben *get,NCP,sort,,imax !Nodenummer MAXPRES *VFILL,VALUE(I,2),DATA,ANST *VFILL,VALUE(I,3),DATA,CP !Füllen des Array an der Stelle I,3 mit den Daten von CP *VFILL,VALUE(I,4),DATA,NCP !Füllen des Array an der Stelle I,3 mit den Daten von NCP *ENDDO !Schleifenende :-)) !---------Makro---------------------------- *create,ausgabe !Makro generieren *cfopen,20,txt,C:\Ansys_Projekte,append !Datei erstellen *vwrite,'Substep','Anstellwinkel','PressMax','Node' (a10,';',a10,';',a10,';',a10) !Formatierung *vwrite,VALUE(1,1),VALUE(1,2),VALUE(1,3),VALUE(1,4) (f10.4,';',f10.4,';',f10.4,';',f10.4) !Formatierung *cfclos !Datei schließen *end !Makro beenden !---------------------------------------
*use,ausgabe !Makro ausführen PLNSOL, CONT,PRES, Gruss Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nohlesepiet Mitglied
Beiträge: 18 Registriert: 29.09.2011
|
erstellt am: 05. Okt. 2011 19:41 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
Morgen! Ich stehe grade vor einem ähnlichen Problem. Und zwar würde ich gerne den Contactsatus (3&2 -> Contact closed und 1&0 Contact open) an meinen relevanten Knoten auslesen. Und zwar am besten über einen *get Befehl. Allerdings kann ich den Status zwar plotten (PLNSOL,CONT,STAT) aber nicht auslesen. Für den *get befehlt kann ich keine adequate Lösung finden (ich dachte es ginge über Get,param,NODE,Cont,Stat o.Ä. aber neee is nich) gibt es da Alternativen ohne allzu umständlich zu werden? Ich simuliere debonding mit >100 substeps und würde gerne über die Belastung der Substeps verfolgen wann die Contactelemente (bei welcher Last) an welchem Ort den Kontact verlieren. Und das am Besten automatisch . Irgendwelche Erfahrungen/Hilfen? Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 06. Okt. 2011 10:28 <-- editieren / zitieren --> Unities abgeben:
Naja, so ganz einfach ist das nicht. Du willst ja quasi einen Ort bei einer bestimmten Zeit ausgeben. für einen Knoten könnte man das recht geschickt per /post26 machen ANSOL,5,319,CONT,STAT,CONTSTAT_5 vielleicht gibts noch ne möglichkeit das ganze mit nem Pfad auszuwerten. ich schau mal ------------------ Jens Friedrich TU-Dresden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nohlesepiet Mitglied
Beiträge: 18 Registriert: 29.09.2011
|
erstellt am: 06. Okt. 2011 12:07 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
Danke für deine Antwort! Ich hab mir in meiner Verzweiflung einfach ein makro geschrieben, das ganze sieht so aus und funktioniert recht ansehnlich auch wenns umständlich ist. Für elegantere Lösungen bin ich allerdings offen /COM,Postprocessing load_step=2 ini_set_nr=340 ! Set Nummer bei einsetzen der Schädigung last_set_nr=400 ! Set Nummer bei Geschädigtem Zustande delta_ss=last_set_nr-ini_set_nr *DIM,ergebnis_vektor,ARRAY,delta_ss,2 ! Ablösewinkel und Spannung ESEL,S,TYPE,,3 ! Contactelemente wählen *GET,Anz_Cont_elem,ELEM,,COUNT ETABLE,ConStat,CONT,STAT ! Contactstatus in eine Tabelle schreiben
*GET,anz_elem,ELEM,0,COUNT
*DIM,elem_nummern,ARRAY,anz_elem *DO,i,1,anz_elem,1 ! wird hier gefüllt *GET,temp_min,ELEM,0,NUM,MIN elem_nummern(i)=temp_min ESEL,U,ELEM,,temp_min *ENDDO ALLSEL,ALL *DO,j,1,delta_ss,1 SET,load_step,ini_set_nr+j
anz_nodes=2*(anz_elem) *DIM,node_conta_stat,ARRAY,anz_nodes,3 ! 3 Spalten x,y,z Koordinaten 1 Spalte Kontaktstatus CSYS,11 *DO,i,1,anz_elem,1 temp_e_nr=elem_nummern(i) ESEL,S,ELEM,,temp_e_nr *GET,node_conta_stat(2*i,3),ETAB,1,ELEM,temp_e_nr ! Schreibt den Kontaktatus des Elements in den Ergebnisvektor *GET,node_conta_stat(2*i-1,3),ETAB,1,ELEM,temp_e_nr NSLE,S *GET,temp_node_nr_min,NODE,,NUM,MIN ! Mininale Knotennummer *GET,temp_node_nr_max,NODE,,NUM,MAX node_conta_stat(2*i-1,1)=NX(temp_node_nr_min) node_conta_stat(2*i-1,2)=NY(temp_node_nr_min) node_conta_stat(2*i,1)=NX(temp_node_nr_max) node_conta_stat(2*i,2)=NY(temp_node_nr_max) *ENDDO
CSYS ! Abgelöste Knoten auskondensieren vergl_winkel=0 *DO,i,1,anz_nodes *IF,node_conta_stat(i,3),LT,2,THEN ! Geschlossene Kontakte ausschließen *IF,vergl_winkel,GT,node_conta_stat(i,2),THEN *ELSE vergl_winkel=node_conta_stat(i,2) *ENDIF *ENDIF *ENDDO deb_winkel=vergl_winkel NSEL,S,LOC,X,kantenlaenge *GET,anz_knoten,NODE,0,COUNT *DIM,knoten,ARRAY,anz_knoten ! Vektor mit den Nummern der Knoten bei y=0 *DO,i,1,anz_knoten,1 ! wird hier gefüllt *GET,temp_min,NODE,0,NUM,MIN knoten(i)=temp_min NSEL,U,NODE,,temp_min *ENDDO ALLSEL ! Spannungen für die Knoten aufsummieren SSUM=0 ! Initialisieren *DO,i,1,anz_knoten,1 *GET,stress,NODE,knoten(i),S,EQV SSUM=SSUM+stress *ENDDO ALLSEL,ALL SAVG=SSUM/anz_knoten ergebnis_vektor(j,1)=SAVG ergebnis_vektor(j,2)=deb_winkel
SAVG=0 SSUM=0 vergl_winkel=0 *DEL,KNOTEN *DEL,NODE_CONTA_STAT ALLSEL,all *ENDDO ! Substep Schleife Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 06. Okt. 2011 12:28 <-- editieren / zitieren --> Unities abgeben:
puh also deinen input konnte ich jetzt nicht nachvollziehen. Scheint aber damit schon geschafft, oder? Ich hab gerade mal für vm255 ein auswertemacro geschrieben. Wenn noch interesse besteht schick ichs dir gern per PM Gruß Jens ------------------ Jens Friedrich TU-Dresden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nohlesepiet Mitglied
Beiträge: 18 Registriert: 29.09.2011
|
erstellt am: 06. Okt. 2011 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für Jens.Friedrich
Ja immer her damit. Das Makro was ich geschrieben läuft quasi so: - Kontaktelemente auswählen und den gewünschten Wert in eine Element Table schreiben - Die Nummern der Elemente in nen Vektor schreiben - Dann die Elemente aus dem Vektor einzel abklappern und den Kontaktstatus sowie die Koordinaten der jeweiligen Knotem am Element in nen Ergebnisvektor schreiben und das für jeden Substep. Umständlich aber funktioniert Danke! Piet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens.Friedrich Moderator Dipl. -Ing.
Beiträge: 1048 Registriert: 09.09.2005 ANSYS2021 R2
|
erstellt am: 06. Okt. 2011 12:41 <-- editieren / zitieren --> Unities abgeben:
guddi! Das ganze geht deutlich einfacher mit pfaden Bei mir läufts so: Pfad anlegen Kontaktstatus drauf und dann rausschreiben. den ganzen spass findest du im Anhang Ach, ausgewertet wird mit Excel und dann Bereichspunktverschieben Gruß Jens ------------------ Jens Friedrich TU-Dresden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|