Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  ANSYS
  Problem beim Einlese von Daten mit *vread

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Ansys
Autor Thema:  Problem beim Einlese von Daten mit *vread (1396 mal gelesen)
pminf
Mitglied



Sehen Sie sich das Profil von pminf an!   Senden Sie eine Private Message an pminf  Schreiben Sie einen Gästebucheintrag für pminf

Beiträge: 16
Registriert: 04.06.2013

erstellt am: 23. Sep. 2013 14:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


knotenarea94.txt

 
Hallo,

ich habe ein kleines Problem beim Einlesen einer Textfile in ANSYS. Und zwar verwende ich den *vread-Befehl, jedoch wird nicht die komplette Textdatei eingelesen, sondern nur der erste Wert. Ich habe die Textdatei auch mal angehängt (sie enthält 150 Einträge). Der Ansys-Quelltext zum Einlesen sieht bei mir so aus:

                  *DIM,node94inp,array,150
                  *create,knotenarea94macroinp
                  *vread,node94inp(1),knotenarea94,txt
                  (F8.0)
                  *end
                  *use,knotenarea94macroinp

Wenn ich danach node94inp über den *status-Befehl abfrage, steht darin nur 190 (also der erste Eintrag der Textdatei). Wo kann mein Fehler liegen?

Viele Grüße
PMinf

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MESHPARTS
Mitglied



Sehen Sie sich das Profil von MESHPARTS an!   Senden Sie eine Private Message an MESHPARTS  Schreiben Sie einen Gästebucheintrag für MESHPARTS

Beiträge: 411
Registriert: 08.03.2013

Meshparts Software (https://www.meshparts.de/products)
Ansys
SolidWorks

erstellt am: 23. Sep. 2013 17:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pminf 10 Unities + Antwort hilfreich

Hallo,

ich kann am Code keinen Fehler erkennen und das Testen liefert bei mir korrekte Ergebnisse.

Wie genau führst du den APDL-Code aus?

Viele Grüße
Alex

------------------
MESHPARTS
Tuning Your Simulation
www.meshparts.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pminf
Mitglied



Sehen Sie sich das Profil von pminf an!   Senden Sie eine Private Message an pminf  Schreiben Sie einen Gästebucheintrag für pminf

Beiträge: 16
Registriert: 04.06.2013

erstellt am: 23. Sep. 2013 18:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

was genau meinst du mit "ausführen"? Ich kopiere obigen Code einfach in das Input-Window von ANSYS Classic. Dabei befinde ich mich im Preprocessor /prep7.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MESHPARTS
Mitglied



Sehen Sie sich das Profil von MESHPARTS an!   Senden Sie eine Private Message an MESHPARTS  Schreiben Sie einen Gästebucheintrag für MESHPARTS

Beiträge: 411
Registriert: 08.03.2013

Meshparts Software (https://www.meshparts.de/products)
Ansys
SolidWorks

erstellt am: 23. Sep. 2013 19:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pminf 10 Unities + Antwort hilfreich

genau das habe ich vermutet... Der Befehl *vread und einige andere APDL-Befehle funktionieren nur innerhalb einer Makrodatei (das wird beim jeweiligen Befehl in der Hilfe spezifiziert).

Du musst deine Befehle in eine Makrodatei kopieren und dann die Makrodatei ausführen. Wenn die Endung der Makrodatei mac ist, dann lässt sich die Datei ausführen durch einfach Eingeben des Dateinamens in die Kommandozeile. Vorteil der mac-Endung ist noch, dass man dem Makro Parameter wie einer Funktion übergeben kann.

Viele Grüße
Alex

------------------
MESHPARTS
Tuning Your Simulation
www.meshparts.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pminf
Mitglied



Sehen Sie sich das Profil von pminf an!   Senden Sie eine Private Message an pminf  Schreiben Sie einen Gästebucheintrag für pminf

Beiträge: 16
Registriert: 04.06.2013

erstellt am: 24. Sep. 2013 08:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

danke für den Hinweis, aber soweit ich das richtig verstanden habe, erzeuge ich mir doch durch
       
          *create,knotenarea94macroinp
          *vread,node94inp(1),knotenarea94,txt
          (F8.0)
          *end

eine Makro namens "knotenarea94macroinp", dass ich dann durch den *use-befehl aufrufe?

Auf jeden Fall habe ich es jetzt noch einmal mit dem Quelltext aus meinem ersten Beitrag versucht und es funktioniert tatsächlich. Problem dabei ist nur, dass ich eigentlich nicht die feste Zuweisung auf eine Länge von 150 in dem Befehl "*DIM,node94inp,array,150" haben möchte, sondern dort die Länge entsprechend eines Parameters festlegen will (also irgendwie sowas: "*DIM,node94inp,array,nodeanz94inp"). Der *status-Befehl liefert für nodeanz94inp einen Wert von 150, aber das Einlesen von node94inp wie bereits oben erwähnt nur den ersten Eintrag 190? Vielleicht kurz zum Hintergrund: Ich speichere mir einerseits die Knotennummern in einem Textfile "knotenarea94" ab und andererseits die Anzahl der Knoten in einem File "knotenanzarea94", worin also in diesem Fall nur die 150 steht. Das gesamte Kommmando sieht dann so aus:

            *DIM,nodeanz94inp,array,1
            *create,knotenanzarea94macroinp
            *vread,nodeanz94inp,knotenanzarea94,txt
            (F8.0)
            *end
            *use,knotenanzarea94macroinp !Anzahl der Knoten in
                                          !Fläche 94 bestimmen
            *DIM,node94inp,array,nodeanz94inp
            *create,knotenarea94macroinp
            *vread,node94inp(1),knotenarea94,txt
            (F8.0)
            *end
            *use,knotenarea94macroinp

Für den Fall, dass ich das ganze in ein externes Makro schreibe, können die *create-, *end- und *use-Befehle dann natürlich weggelassen werden.
         

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MESHPARTS
Mitglied



Sehen Sie sich das Profil von MESHPARTS an!   Senden Sie eine Private Message an MESHPARTS  Schreiben Sie einen Gästebucheintrag für MESHPARTS

Beiträge: 411
Registriert: 08.03.2013

Meshparts Software (https://www.meshparts.de/products)
Ansys
SolidWorks

erstellt am: 24. Sep. 2013 08:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pminf 10 Unities + Antwort hilfreich

Hallo,

ich habe leider nicht verstanden, ob dein letzter Beitrag eine Frage ist.

Die *create und *use Befehle brauchst du, denke ich auch, nicht.

Viele Grüße
Alex

------------------
MESHPARTS
Tuning Your Simulation
www.meshparts.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pminf
Mitglied



Sehen Sie sich das Profil von pminf an!   Senden Sie eine Private Message an pminf  Schreiben Sie einen Gästebucheintrag für pminf

Beiträge: 16
Registriert: 04.06.2013

erstellt am: 24. Sep. 2013 09:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


knotenanzarea94.txt

 
ja, war vielleicht etwas komisch formuliert. Also das Problem ist ja, dass die Zuweisung bzw. das Einlesen funktioniert, wenn ich das Array mit der festen Länge von 150 definiere. Definiere ich es aber über den Parameter nodeanz94inp, dann funktioniert es nicht mehr (d.h. nur der erste Wert wird zugewiesen). Woran kann das liegen?

PS: Ich habe die Datei "knotenanzarea94.txt" nochmal angehängt, so dass du es vielleicht nochmal bei dir versuchen kannst? 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MESHPARTS
Mitglied



Sehen Sie sich das Profil von MESHPARTS an!   Senden Sie eine Private Message an MESHPARTS  Schreiben Sie einen Gästebucheintrag für MESHPARTS

Beiträge: 411
Registriert: 08.03.2013

Meshparts Software (https://www.meshparts.de/products)
Ansys
SolidWorks

erstellt am: 24. Sep. 2013 09:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pminf 10 Unities + Antwort hilfreich

Du hast vergessen den Index des Vektors nodeanz94inp anzugeben. Das Funktioniert bei mir aus einer Makro-Datei:

*DIM,nodeanz94inp,array,1
*vread,nodeanz94inp,knotenanzarea94,txt
(F8.0)

*DIM,node94inp,array,nodeanz94inp(1)
*vread,node94inp(1),knotenarea94,txt
(F8.0)

------------------
MESHPARTS
Tuning Your Simulation
www.meshparts.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

pminf
Mitglied



Sehen Sie sich das Profil von pminf an!   Senden Sie eine Private Message an pminf  Schreiben Sie einen Gästebucheintrag für pminf

Beiträge: 16
Registriert: 04.06.2013

erstellt am: 24. Sep. 2013 10:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Cool, vielen Dank. Jetzt funktioniert's endlich so, wie es soll.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

MESHPARTS
Mitglied



Sehen Sie sich das Profil von MESHPARTS an!   Senden Sie eine Private Message an MESHPARTS  Schreiben Sie einen Gästebucheintrag für MESHPARTS

Beiträge: 411
Registriert: 08.03.2013

Meshparts Software (https://www.meshparts.de/products)
Ansys
SolidWorks

erstellt am: 24. Sep. 2013 10:48    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für pminf 10 Unities + Antwort hilfreich

Super!

Vieleicht noch eine kleine Anmerkung:

Das Einlesen von Vektoren oder Matrizen aus Textdateien mit APDL ist relativ umständlich, weil man vorher die Anzahl der Zeilen und Spalten wissen muss.

Wir haben bei uns eine benutzerfreundlichere Tcl-Funktion implementiert, die Matrizen aus Textdateien direkt einliest. Die Größe der Matrix muss nicht mehr apriori bekannt sein.

In deinem Fall lauten die APDL-Befehle dann so:

~eui,'package require meshparts'
~eui,'meshparts::vread knotenarea94.txt knotenarea94'

Mit ~eui lassen sich Tcl-Befehle aus APDL-Code ausführen.

Die Funktion ist Teil der Meshparts Add-On Software für Ansys MAPDL (kann von http://www.meshparts.de/license heruntergeladen werden) und hat eine unbegrenzte Benutzungsdauer. Bei Lust und Laune einfach mal testen.

Viele Grüße
Alex

------------------
MESHPARTS
Tuning Your Simulation
www.meshparts.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz