Verbindung von Mathematica und AVS

Aus der mathsource Item #0205-805 oder dem Directory

/scratch/h0052aah/avs

auf der Convex ("joker"), kann man sich Programme holen, die es gestatten, eine Verbindung zwischen Mathematica und AVS über MathLink herzustellen. Zwischen diesen beiden Programmsystemen können Daten ausgetauscht und aus Mathematica 3D-Grafiken exportiert werden.
Es ist günstig, eine eigene .avsrc zu erstellen, so daß die zur Verfügung gestellten AVS-Moduln field2 from math, field3 from math, geom from math und field2 to math automatisch geladen werden. Ein Muster für .avsrc steht im obigen Directory. Nach dem Start von AVS durch

setenv DISPLAY `hostname`:0
cd /scratch/h0052aah/avs
avsstart

erscheint das AVS-Anfangsmenü. Nach dem Aufruf von Network Editor wird mit dem Knopf Read Network ein File-Browser sichtbar. Durch Auswahl von field3.net erhält man ein vorgefertigtes Beispielnetzwerk. Mit diesem Netzwerk wird der Modul field3 from Math geladen, der ein Mathematica-Fenster öffnet, in dem schon einige Voreinstellungen für die Kommunikation realisiert sind. Es sind dem Modul entsprechend zusätzliche Packages geladen, z.B. bei field3 from math das Paket :

AVSOutputField3`

Die neuen Pakete bekommt man mit dem Kommando $ContextPath und in unserem Beispiel die neu verfügbaren Kommandos mit ?AVSOutputField3`* , es sind:

AVSLinkName AVSWriteField FieldTable.

Im Mathematica-Fenster kann man in der üblichen Weise 3dimensionale Listen erzeugen, die etwa eine Fläche im Raum darstellen, und dann mit dem Kommando AVSWriteField[liste] exportieren. In unserem Mathematica-Fenster kann mit

In[1]:=<<example3.m

ein Beispielprogramm, das man sich mit !!example3.m ansehen könnte, gestartet werden, und mit

In[2]:=AVSWriteField[data]

wird anschließend die berechnete Liste data nach AVS exportiert. In dem Fenster mit der Bezeichnung AVS geometry viewer werden Isoflächen der Liste data dargestellt.
Die Liste data enthält Berechnungen der Funktion

x4 + y4 + z4 - (xy)2 - (xz)2 - (yz)2

3in äquidistanten Raumgitterpunkten.
Lädt man geom from Math, so ist in dem zugehörigen Mathematica-Fenster die Displayvariable $DisplayFunction auf

AVSExportGeometry

gestellt. Erzeugt man eine 3D-Grafik, so wird durch die im Hintergrund wirkende Ersetzungsregel

DisplayFunction->$DisplayFunction

die Grafik sofort über Mathlink nach AVS exportiert. Dabei ist zu beachten, daß die Convex nur den Motif-Windowmanager unterstützt und die Farbe der Grafik verlorengeht, weil in Mathematica nur die Stellung der Flächenelemente zu den Lichtquellen für die Einfärbung bestimmend ist.
Um das Ganze zum Laufen zu bringen, haben wir einen Hinweis in den Beschreibungen verwirklicht und in der libML.a wegen Namenkonflikts string_to_argv durch MLring_to_argv ersetzt. Alle Beispiele liefen bei uns einwandfrei, und man kann einschätzen, daß diese Verbindung von AVS und Mathematica sehr sinnvoll ist, weil die professionellen grafischen Möglichkeiten von AVS in Mathematica fehlen oder sehr viel Zeit kosten. Mit Mathematica lassen sich auf elegante Weise Datenfelder erzeugen, die dann mit AVS visualisiert werden können. Beide Pakete ergänzen einander in idealer Weise.

Bernhard Barz
Hans-Joachim Spitzer


9.1.95 / cs
Last Update: 9.1.95, 15:15 , cs