ALIs

kommt noch

Das LRZ-Graphiksystem

Zweck dieser Schrift ist zum einen, eine leicht abrufbare Kurzübersicht zum LRZ-Graphiksystem zu geben, zum anderen, Neuerungen und Änderungen, die in den ausgedruckten LRZ-Benutzerschriften noch nicht enthalten sind, auf stets aktuellem Stand wiederzugeben.

Kurzbeschreibung des LRZ-Graphiksystems

Um das LRZ-Graphiksystem zu verwenden, ist vom Benutzer ein Programm in der Programmiersprache Fortran oder C zu schreiben. Außerdem muss an dem verwendeten Rechner natürlich ein entsprechender Compiler vorhanden sein.

Das LRZ-Graphiksystem ist zweistufig aufgebaut:

  • Das Benutzerprogramm ruft Unterprogramme der Graphikbibliothek auf. Dabei wird eine geräteunabhängige Übergabedatei erstellt, die die Zeichnung in symbolischer Form beschreibt.
  • In einem zweiten Schritt kann ein Nachbearbeiter gestartet werden, der diese Übergabedatei zur Ausgabe auf ein Ausgabegerät umsetzt (Bildschirm, Laserdrucker, Plotter, Diabelichter).

Die Dokumentation des LRZ-Graphiksystems umfasst zwei Schriften:

LRZ-Graphiksystem Benutzermanual:
Teil I Grundsoftware 
beschreibt den Funktionsumfang der Grunddienste sowie die Anwendung auf den verschiedenen Rechenanlagen und ist für jeden Anwender empfehlenswert (Nr. 7708)
Teil II Anwendungsprogramme 
beschreibt Unterprogramme, die auf die Grunddienste aufbauen und Graphiken erstellen wie perspektivische Ansichten, 3D-Flächen, Umrisslinien, Höhenlinien (Nr. 7710)

Diese Schriften können im Benutzersekretat des LRZ erworben werden.


Die LRZ-Graphik unter Unix

Durch Laden eines geeigneten Environment Moduls werden die für das Arbeiten mit dem Graphiksystem notwendigen Umgebungsvariablen belegt:

module load lrzgraphik

Danach können dann die verschiedenen Varianten wie im Folgenden beschrieben in das Benutzerprogramm eingebunden werden.

Zugriff auf die Laufzeit-Bibliothek

Zur Verwendung der Laufzeit-Bibliothek, bei dem das Programm lediglich eine später weiter zu verarbeitende Datei im ASCII-Format generiert, dient

  • für Fortran 77 Programme die Variable $LRZGRA_F77_LIB
  • für Fortran 90 Programme die Variable $LRZGRA_F90_LIB
  • für C Programme die Variable $LRZGRA_C_LIB

Zum Beispiel würde man für ein Fortran 90 Programm auf dem Linux-Cluster beim Binden das Kommando

ifort -o myprog.exe myprog.o  ... $LRZGRA_F90_LIB

verwenden.

Zugriff auf die Interaktiv-Bibliothek

Zur Verwendung der Interaktiv-Bibliothek, bei dem das Programm zur Laufzeit ein X Window erzeugt und auf Eingaben in demselben reagieren kann, dient

  • für Fortran 77 Programme die Variable $LRZGRA_I_F77_LIB
  • für Fortran 90 Programme die Variable $LRZGRA_I_F90_LIB

Zum Beispiel würde man für ein Fortran 90 Programm auf dem Linux-Cluster beim Binden das Kommando

ifort -o myprog.exe myprog.o  ... $LRZGRA_I_F90_LIB

verwenden.

Unterstützte Compiler

Plattform Compiler Bemerkungen
IA32 und IA64 Linux-Cluster Intel Default-Einstellung
IA32 Linux-Cluster PGI Vor dem Laden des lrzgraphik Moduls bitte module load pgi ausführen
IA32 und IA64 Linux-Cluster GCC/g95 Vor dem Laden des lrzgraphik Moduls bitte module load g95 ausführen
IBM p690 (ibmsmp) IBM Default-Einstellung
Hitachi SR8000 Hitachi f90 Default-Einstellung, jedoch kein Modul verfügbar (s. u.)

Da auf der Hitachi SR8000 keine Environment Module zur Verfügung stehen, werden die notwendigen Umgebungsvariablen dort durch Aufrufen eines Setup-Skripts

. lrzgraphik.setup

bereitgestellt. Defaultmäßig ist hierbei der 32 Bit Modus eingestellt, durch Setzen von export MODE=64 vor dem Aufruf des Setup-Skriptes kann man auf 64 Bit Modus umstellen.

Start eines Nachbearbeiters

Bei passiven Nachbearbeitern werden alle Zeichnungen (Sheets) einer Übergabedatei bearbeitet und auf dem gewählten Ausgabegerät ausgegeben. Bei Previewing-Nachbearbeitern steuert der Benutzer über Kommandos, welche Zeichnungen oder Ausschnitte davon darzustellen oder auf ein Gerät bzw. in eine Datei auszugeben sind.

An allen Unix-Plattformen des LRZ werden die Nachbearbeiter der LRZ-Graphik durch das Kommando graphik gestartet: Nachbearbeiter zum Previewing, zur Plotfile-Erstellung und zur Ausgabe auf Geräte im LRZ-Netz (Plotter, Laserdrucker).

Das Kommando graphik liefert bei Eingabe ohne weitere Parameter die folgenden Hinweise zum korrekten Aufruf:

 

Usage: 
------
graphik -n name [-z file] [-b] [-c] [-p plotter] [-a format] [-d display] [-g geometry] [-f font]
Options: 
--------
-n name xprev, ps, eps, hpgl
specifies the device (required)
-z file inputfile (default: ZZZG67)
-b  additional banner page if specified, else none (default).
Used by ps and hpgl only.
-c  PostScript in colormode if specified, else black and white (default).
Used by ps, eps, xprev only.
-p plotter 7470 (default), 7475, 7550, 7576.
Used by hpgl only.
-a format A4 (default) or A3, for model 7576 up to A0.
-d display specifies the X display in use if not already set (default: DISPLAY).
Used by xprev only.
-g geometry dimension (width, height in pixels) and position (xpos, ypos) of the application window in the form: widthxheight+xpos+ypos (default: suitable).
Used by xprev only.
-f font font name. Using a wildcarded font name requires preceeding each wildcard character by a backslash or quoting the font name (default: suitable).
Used by xprev only.
Examples: 
---------
graphik -n xprev starts X-Previewing
graphik -n hpgl converts the file ZZZG67 to HP/GL-format stored in ZZZG67.hpgl
graphik -n ps -c converts ZZZG67 to Postscript-format stored in ZZZG67.ps; output in color if sent to a color printer
Documentation:
--------------
"Das LRZ-Graphiksystem, Benutzermanual, Teil 1"

Kurze Charakterisierung der passiven Nachbearbeiter:

 

ps PostScript-Programmbefehle in eine Datei ('.ps')
eps Encapsulated-PostScript-Programmbefehle in eine Datei ('.eps')
hpgl HP/GL-Befehle für verschiedene HP-Plotter in eine Datei ('.hpgl')
 

Kurze Charakterisierung des Previewing-Nachbearbeiters:

 

xprev Previewing unter X Windows, optional PostScript-Ausgabe 
 

X Window Resource Files

Eine Reihe von Merkmalen von X Window Anwendungen, wie Fenstergröße und Hintergrundfarbe, werden durch sogenannte Ressourcen festgelegt. Diese Ressourcen sind einerseits im Anwendungsprogramm definiert, sie können aber auch in entsprechenden Dateien voreingestellt werden.

Resource Files für das Previewing unter X Windows und für interaktive Anwendungen unter X Windows stehen unter XLrzpreview und XLrzgraphfi im Verzeichnis /usr/lib/X11/app-defaults bereit. Der Benutzer kann diese in sein HOME-Verzeichnis kopieren und geeignet modifizieren. Der Aufbau dieser Resource Files soll hier nicht näher erläutert werden, der folgende Inhalt der Datei /usr/lib/X11/app-defaults/XLrzgraphfi verdeutlicht jedoch das Prinzip:

# die Anfangsgröße des Graphikfensters
XLrzgraphfi*width: 500
XLrzgraphfi*height: 500
# oder komplett:
# XLrzgraphfi*geometry: 1000x900+1+1
#
# Vorder- und Hintergrundfarbe werden vertauscht, falls on
# Default ist off (schwarzer Hintergrund)
XLrzgraphfi*pictureRv: off
#
# falls die Defaults für Vorder/Hintergrundfarben nicht gefallen
XLrzgraphfi*pictureBg: black
XLrzgraphfi*pictureFg: white


Ergänzungen

Übergabedateiformat

Die Übergabedateien der LRZ-Graphik sind ASCII-Dateien mit maximal 80 Zeichen pro Zeile, die problemlos auf andere Rechner übertragen und dort verarbeitet werden können. Die Graphikdienste und ihre Parameter sind in festgelegtem Format beschrieben, was ein Inspizieren oder Ändern mit einem Texteditor nur eingeschränkt erlaubt. Die zwei Nummer nach dem Fluchtsymbol ::$064 entsprechen der Kennzahl, die im Manual bei jeder Routine angegeben ist. Beispiel:

::$064 008 .100000000E+01 .200000000E+03 .170000000E+03
::$064 019
::$064 017 .200000000E+01 .198000000E+03 .200000000E+01 ..
::$064 019
::$064 001SR .100000000E+01
::$064 015 .800000000E+01
::$064 022 .400000000E+02 .400000000E+02
1. Sheet

PostScript-Dateien

PostScript-Dateien sind gemäß der Spezifikation der Fa. Adobe Textdateien (Ascii). Sie dürfen alle druckbaren Ascii-Zeichen enthalten sowie die Zeichen Linefeed (hex 0a) und Carriage-Return (hex 0d), zusätzlich können rechnerabhängige Bildschirmdarstellungen enthalten sein.

Die PostScript-Dateien, die von den verschiedenen Nachbearbeitern der LRZ-Graphik erzeugt werden, haben auf allen Rechnerplattformen dieselbe Struktur: sie enthalten Textzeilen mit PostScript-Befehlen und solche mit sogenannten 'document structuring comments' (DSC), jeweils abgeschlossen durch ein Linefeed-Character. Diese DSC-Zeilen beginnen mit den Zeichen '%%' und dürfen von Programmen interpretiert werden, die solche Dateien importieren können. Für die direkte Ausgabe auf PostScript-fähige Drucker sind diese Kommentare ohne Bedeutung.

PostScript-Dateien der LRZ-Graphik können Farbinformation enthalten (Parameter -c des Kommandos graphik), Voreinstellung ist Schwarz/Weiß. Farbe wird mit RGB-Werten kodiert, es sind dabei theoretisch beliebig viele Nuancen möglich.

Die von den passiven Nachbearbeitern erstellten PostScript-Dateien bekommen die Endung '.ps', sie enthalten die Beschreibung einer oder mehrerer Zeichnungen bzw. Seiten in einer Datei. Die Previewing-Nachbearbeiter erstellen sogenannte Encapsulated-PostScript-Files (EPS), die stets nur die Beschreibung einer Seite enthalten: wird in einer Previewing-Sitzung mehrmals ausgegeben, werden Folgedateien kreiert, die Endungen der Dateien lauten .epsf1, .epsf2, usw. EPS-Dateien sind primär gedacht zum Import in andere Programme, insbesondere der Textverarbeitung. Sie können aber problemlos auch direkt auf PostScript-Drucker ausgegeben werden, mehrere davon nach vorheriger Konkatenation auch in einem Auftrag, zum Beispiel

cat *.epsf* >> out
lpr -Ppub1 out

Die für PostScript-Dateien der LRZ-Graphik gewählte Dateistruktur mit Linefeed-Characters als Zeilenenden ist optimiert in Hinblick auf Ausgabedateigröße, Rechenzeit und Einheitlichkeit über alle Rechnerplattformen. Sie erschwert allerdings das Editieren auf einzelnen Plattformen.

Plotausgabe in den Formaten DIN A4 bis DIN A0

Plotausgabe in den Formaten DIN A4 und DIN A3 kann am LRZ auf Laserdruckern in Schwarz/Weiß und in Farbe ausgegeben werden. Dazu wird mit Hilfe der LRZ-Graphik eine PostScript-Datei der Zeichnungen erstellt und zu dem entsprechenden Drucker gesandt.

Zur Ausgabe größerer Formate bis zu DIN A0 betreibt das LRZ Tintenstrahldrucker vom Typ Hewlett Packard DesignJet. Auch hier erstellen Sie zuerst eine PostScript-Datei Ihrer Zeichnungen und schicken diese anschließend zu dem entsprechenden Plotter. Näheres dazu finden Sie in dem Beitrag über Farbdruck am LRZ.

Die C-Schnittstelle des LRZ-Graphiksystems

Auf allen Rechensystemen des LRZ mit Ausnahme der PCs steht die gesamte sogenannte Grundsoftware der LRZ-Graphik (Manual Teil I) auch für Anwender der Programmiersprache C zur Verfügung. Die Unterschiede zu der im Manual beschriebenen Fortran-Schnittstelle sind geringfügig: jede der Graphikroutinen hat als zusätzlichen ersten Parameter einen Pointer auf die gewählte Übergabedatei des Benutzers und die Namen der Routinen sind generell in Kleinbuchstaben zu spezifizieren.

Ein Beispiel:

#include <stdio.h>
#include <math.h>
#define  N 60

main()
{
    FILE *fp;
    int i, err;
    float x[N], y[N], dx, period = 5.0*3.14159;
    float w = 200.0, h = 170.0, s = 8.0, rd = 10.;

    fp = fopen ("ZZZG67", "w");
    sheet (fp, 1.0, w, h);
    note (fp, "ein einfaches Beispiel.");
    frame (fp);
    moveto (fp, w/2.0, h/2.0);
    font (fp, "ci",1.0);
    setext (fp, "m","m",0.0);
    size (fp, s);
    text (fp, "LRZ-Graphik und C");
    /* oder, mit demselben Ergebnis:
       fprintf (fp, "LRZ-Graphik und C\n"); */
    blank (fp, 1, 30., w-30., 0.5*h-s, 0.5*h+s);
    frameb (fp, 1);
    for (i=0; i<5; i++) {
        moveto (fp, 50.0+i*25.0, 85.0);
        circle (fp, 30.0, 0.0, 360.0);
    }
    select (fp, 2);
    window (fp, rd, w-rd, rd, h-rd);
    frame (fp);
    dx = period/(N-1);
    for (i=0; i <N> i++) {
        x[i] = i*dx;
        y[i] = sin( (double)x[i] );
    }
    uscale (fp, 0.0, period, 0.0, -1.1, 1.1, 0.0);
    select (fp, 3);
    curve (fp, 0, N-1, x, y, "dspln1");
    fclose (fp);
    return (0);
}

Alphabetische Liste aller Routinen der C Schnittstelle:

 

blank circle code curve curvex defsym drawby
drawon drawto exitgr font frame frameb hatch4
hatchc hatchf hatchp hatchs initgr level linax
lintyp logax mapsym mark moveby moveon moveto
note ppause repeat seg select setbac setdel
setext setrgb shear sheet sheeta size step
xgrid ygrid
 

Zusätzliche Hinweise:

  • die Routinen der C-Schnittstelle beschreiben eine codierte Übergabedatei, die identisch ist zu einer analogen, mit der Fortran-Bibliothek graphf erstellten; an eine Bibliothek für binäre Übergabedateien ist derzeit nicht gedacht (zu Übergabedateiformaten siehe weiter oben unter Übergabedateiformate)
  • die sogenannten HCBS-Routinen stehen nicht zur Verfügung; dies bedeutet aber keinerlei Einschränkung, da deren Dienste bequemer durch die anderen Routinen abgedeckt sind
  • die Routinen initgr und exitgr für interaktive Anwendungen sind hier Dummy-Routinen und nur der Vollständigkeit wegen enthalten
  • bei Parametern vom Typ String sowie bei der Übergabe von Feldern orientiere man sich an obigem Beispielprogramm.