Belegarbeit

zur Erlangung des Forschungsbeleges





Simulation neuartiger Zentrierrichttechnik mit Hilfe eines Savartschen Polariskopes durch das Computerprogramm
" savpolif "






eingereicht von

Ralf Arnold
FSU Jena
Student der Fachrichtung Physik-Diplom
Matrikel 1988
am 04.05.1992



Betreuer:
Fachbetreuer: Dipl.-Phys- R. Büchner, Carl Zeiss Jena GmbH
Informatikbetreuer: Dr. R. Dürselen, Carl Zeiss Jena GmbH






Anmerkung 1999: Inhaltlich stehe ich zu den Aussagen dieses Dokuments. Ausdrucksmäßig und formal entspricht dieses Protokoll dem Stand eines Studenten nach dem 8. Semester Physik. Computertechnisch entspricht das Dokument dem Stand 1991.

Dieses Dokument kann als PDF-Datei (217 kB) heruntergeladen werden. Ebenso stehen die Installationsdisketten (1,4 MB) (Quellcode und Programm) zum Download zur Verfügung. Eine Kurzfassung des Verfahrens und Ergebnisse der Berechnungen/Simulationen liegen ebenfalls bereit

I n h a l t s v e r z e i c h n i s

1.Aufgabenstellung
2.Allgemeine Grundlagen
3.Aufbau der zu simulierenden Versuchsanordnung
4.Theoretische Grundlagen
4.1Strahldurchrechnung
4.2Wellenoptik an der Savartschen Doppelplatte
4.3Senarmont-Verfahren
5.Programmaufbau
5.1Beschreibung der Bibliotheksaufrufe
5.1.1Die Bibliothek "mathe"
5.1.2Die Bibliothek "virt_mem"
5.1.2.1Beschreibung der einzelnen Funktionsaufrufe
5.1.2.2Beschreibung der einzelnen Funktionen
5.1.3Die Bibliothek "file"
5.1.3.1Die Bibliothek "window"
5.1.3.2Die Bibliothek "rahmen"
5.1.3.3Die Bibliothek "asmlib"
5.1.3.4Die Bibliothek "pulldown"
5.1.4Die Bibliothek "hc24"
5.2Das Hauptprogramm
5.3Das Menü "Datei"
5.4Das Menü "Bearbeiten"
5.5Das Menü "Ausführen"
5.5.1Die Strahldurchrechnung (SUB strahl)
5.5.2Das Intensitätsbild (SUB Intens.lesen)
5.5.3Die beiden Phasendifferenzbilder (SUB Phase)
5.5.4Die Mittelung (SUB mittelung)
5.5Die Strahldurchrechnung (SUB strahl)
5.6Das Menü "Drucken"
6.Bedienungsanleitung
6.1Hardwarevoraussetzungen und Installation
6.2Übersicht
6.3Das Menü "Datei"
6.4Das Menü "Bearbeiten"
6.5Das Menü "Ausführen"
6.6Das Menü "Drucken"
6.7Systemdaten
6.8Bemerkungen zu den Datenfeldern
7.Literaturverzeichnis

AnlagenBasic-Quelltexte
Programm "savpolif"
Beispielinterferogramme

1. Aufgabenstellung

In der Forschungsbelegarbeit hat der Student Ralf Arnold ein EDV-Programm zur Simulation neuartiger Zentriertechnik mit Hilfe eines polarisationsoptischen Richtungssensors zu erarbeiten.

2. Allgemeine Grundlagen

Zur Minimierung von Bildfehlern bei der Abbildung mit optischen Systemen ist es erforderlich, die Krümmungsmittelpunkte aller brechenden bzw. reflektierenden Flächen auf einer Linie, der Systemachse anzuordnen. Einflüsse von Dezentrierungen auf die optische Abbildung sowie deren Definition werden in [1], [2], [3], [4] und [5] beschrieben.

Aufgabe der Zentriertechnik ist es, die Übereinstimmung der Lage der Krümmungsmittelpunkte mit der Systemachse herzustellen oder vorhandene Abweichungen zu messen.

Ein Maß für die Abweichung des Krümmunsmittelpunktes einer Fläche von der Systemachse ist die Dezentrierung. Sie ist definiert durch (Bild 1):
- die Flächenkippung qi
- den Azimut ti
der Fläche i.

Definitionen als Skizze

Bild 1: Definition der Dezentrierung einer Fläche

Dabei ist die z-Achse des Koordinatensystemes mit der Systemachse identisch. Der Azimut wird durch Drehung im Uhrzeigersinn beginnend von der x-Achse als positiv definiert.


3. Aufbau der zu simulierenden Versuchsanordnung

Der Aufbau der zu simulierenden Versuchsanordnung ergibt sich aus folgender praktischer Problemstellung (Bild2):

Skizze der Anordnung
A...Laser mit Strahlaufweitung
B... Objektiv
C... Prüfling (hier Reflexion an der zweiten Fläche) D... Strahlteiler E... Richtungssensor (Meßkopf) F... Auffangebene

Bild 2: Prinzipskizze der zu berechnenden Anordnung


Ein paralleles, aufgeweitetes Laserbündel wird mit Hilfe eines Objektives auf den Hauptschnitt, das ist der durch die vorhergehenden brechenden Flächen transformierte Brennpunkt, einer Prüflingsfläche fokussiert. Das den Prüfling verlassende, reflektierte Bündel ist parallel in sich. Setzt man die Zentrierung aller Flächen voraus, ist das Bündel ebenfalls parallel und symmetrisch zur optischen Achse, deren Richtung mit den Normalen der parallelen Planflächen des Richtungssensors (im weiteren auch als "Meßkopf" bezeichnet) übereinstimmen soll.

Sind eine oder mehrere optisch wirksame Flächen dezentriert, so ist erstens die Symmetrie zur z-Achse gestört und zweitens die Parallelität des Bündels mit der optischen Achse im Meßkopf nicht mehr gegeben.

Die Parallelität des Schwerstrahles, d.h. des Symmetriestrahles zur optischen Achse ist die Meßgröße für die Kippung der Prüflingsfläche.

Eine umfangreichere Beschreibung des zu simulierenden Versuchsaufbaues befindet sich in [12], dessen Studium empfohlen wird.


4. Theoretische Grundlagen

4.1 Strahldurchrechnung

Der im aufgabengemäß angefertigten Programm verwande Algorithmus zur Strahldurchrechnung beruht auf einem Verfahren von Haferkorn/Tautz [6], welches seinerseits auf Anwendung des vektoriellen Brechungsgesetzes [2]

Formel
Strahleneinheitsvektoren vor/nach der brechenden Fläche
Normalenvektor der Fläche im Schnittpunkt mit dem Strahl
Brechzahlen vor/nach der brechenden Fläche

beruht.

Zur Berechnung der Reflexion wurde das vektorielle Reflexionsgesetz [2]

Strahleneinheitsvektoren vor/nach der reflektierenden Fläche
Normalenvektor der Fläche im Schnittpunkt mit dem Strahl
Brechzahlen vor/nach der brechenden Fläche

verwendet.


4.2 Wellenoptik an der Savartschen Doppelplatte

Die Savartsche Doppelplatte besteht aus zwei unter 45° zur Hauptachse geschnittenen einachsigen Kristallplatten gleichen Materials, die unter gekreuzten Hauptschnitten miteinander verkittet sind [7].

Zur Berechnung der an einer Kristallplatte erzeugten Phasendifferenz gilt nach [8] die allgemeine Formel:

Formel

Setzt man die Daten der Savartschen Doppelplattej = 45° , y2 = y1 + 90° , d = d1 - d2, d1 = d2 = d / 2 ein , so ergibt sich die spezielle Formel für die an der Savartschen Doppelplatte erzeugte Phasendifferenz

Formel

Da diese Formel wegen ihrer Länge zur Programmierung ungeeignet ist, zerlegt man Sie in

Formel

wobei die Bedeutung der Konstanten k1 bis k3 den oben genannten entspricht.


4.3 Senarmont-Verfahren

Ziel des Verfahrens nach de Senarmont [9],[10] ist es, eine Phasendifferenz in eine Drehung der Polarisationsebene des verwendeten Lichtes umzuwandeln. Dazu wird das phasendifferenzerzeugende Medium (hier die Savartsche Doppelplatte) mit einem zusätzlichen l/4-Plättchen zwischen zwei gekreuzte Polarisatoren (Bild 3) gebracht.

Senarmont-Messkopf

Bild 3: Aufbau zur Umwandlung einer Phasendifferenz in eine Schwingungsebenendrehung nach de Senarmont

Da einerseits die Savartsche Doppelplatte ein Maximum der Empfindlichkeit bei 45° besitzt und andererseits ein in der y-z-Ebene liegender Winkels gegen die z-Achse gemessen werden soll, ergibt sich , wenn man die positive x-Achse als Nullpunkt des Azimutes definiert, eine maximale Empfindlichkeit der Savartschen Doppelplatte bei einem Azimut ihrer optischen Achse von -135° (Bild 4).

Azimutlagen

Bild 4: Azimutlagen (Pfeile) der einzelnen Elemente beim Senarmont Verfahren

Daraus folgen die Azimutlagen der anderen Elemente mit 90° für den Polarisator, 90° für das l/4-Plättchen und 180° für den Analysator.

Nach einer zu [11] analogen Betrachtung ergibt sich für die transmittierte Intensität einer Anordnung entsprechend Bild 5

Modellbild

Bild 5: Modell zur Berechnung der transmittieren Intensität

die Formel

I = 0,5 Io { 1 + cos2f1 cos2(f1-f2) cos2(f2-s)
+ sin2f1 sin2(f1-f2) cos2(f2-s) cosd1
- cos2f1 cos2(f1-f2) sin2(f2-s) cosd2
+ sin2f1 cos2(f1-f2) sin2(f2-s) cosd1 cosd2
- sin2f1 sin2(f2-s) sind1}

s Azimut des Analysators (der Azimut des Polarisators ist hier gleich null)
fi Azimut der i-ten Kristallplatte zur y-Achse
di Phasendifferenz der i-ten Kristallplatte.

Setzt man nun für die Kristallplatten

Savartsche Doppelplatte f1 = 135°; d1,
l/4-Platte f2 = 0° ; d2 = 90° und
Analysator s = 90° ,

so erhält man mit

I = I0 sin2 (d/2)

die Formel für die transmittierte Intensität.


5. Programmaufbau

Das Kapitel enthält eine Darstellung der Bilbliotheksaufrufe und eine Prinzip-Beschreibung der einzelnen Programmteile. Bei Interesse an einer tiefgründigeren Beschreibung sei der Leser auf den ausführlich kommentierten Quelltext "savpolif.bas" (siehe Anlage; Nichtmitarbeiter der Carl Zeiss Jena GmbH wenden sich auf urhebrrechtlichen Gründen bitte an Herrn Dr. R. Dürselen, Produktbereich Optische Meßtechnik der Carl Zeiss Jena GmbH, Pf 125, O-6900 Jena) verwiesen.

Dem nur an der Anwendung der Programmes interessierten Nutzer wird ein Überspringen des Kapitels 5 empfohlen.


5.1 Beschreibung der Bibliotheksaufrufe

5.1.1 Die Biliothek "mathe"

Die Bibliothek "mathe" beinhaltet die einfachen mathematischen Funktionen y=arccos(x), y=arcsin(x) und z=arctan(x,y). Die Werte x,y und z sind doppelt genau und im Bogenmaß anzugeben. Die Arcustangensfunktion besitzt als Aufrufparameter die Koordinaten der (x,y)-Ebene (Bild 6).

Parameterdefinition

Bild 6: Parameter der arctan-Funktion

Bei den Funktionen handelt es sich um Aufrufe von C-Routinen (mit MS-Basic möglich). Die Werte werden dabei direkt übergeben, was durch das "BYVAL" in der Funktionsdeklaration zum Ausdruck kommt.


5.1.2 Die Biliothek "virt_mem"

Variablenfelder unter MS-Basic sind größenmäßig auf die 640kB Hauptspeicher (abzüglich Systembedarf) beschränkt. Um vernünftige Intensitätsbilder zu erhalten sind aber wesentlich größere Datenfelder erforderlich (siehe unten). Deshalb wurde der Weg der Datenverwaltung per Diektzugriffsdatei beschritten. Daher ist die maximale Anzahl der durchzurechnenden Strahlen im Prinzip nur durch die Größe des gewählten Speichers beschränkt. Es erfolgte zwar eine Begrenzung im Programm (siehe weiter unten), die aber im Quelltext beliebig vergrößerbar ist.

Um Zugriffszeiten auf Datenträger zu sparen, ist es sinnvoll, mit dem Programm "smartdrv.sys" unter DOS eine RAM-Disk zu errichten (erforderlich: 1MB für 60000 Strahlen, 4MB für 225000 Strahlen) und diese zu nutzen. Das ist aber kein unbedingtes Erfordernis.

Zur Vereinfachung der Erstellung/Verwaltung dieser Direktzugriffdatein, wurde durch den Autor die Bibliothek "virt_mem" erstellt, deren Name sich von "virtueller Speicher (Memory)" ableitet.


5.1.2.1 Beschreibung der einzelnen Funktionsaufrufe

Die Funktion "VDIM" erzeugt ein virtuelles zweidimensionales Datenfeld, welches in einem Verzeichnis lt. Pfadbezeichnung abgelegt wird. Der Datenträger lt. Pfad kann eine Diskette, Festplatte oder Ramdisk sein. Das komplette Datenfeld wird mit den ASCII-Zeichen 0 gefüllt und bleibt nach Aufruf geöffnet.

Der Aufruf erfolgt mit

Funktionswert = vdim (Pfad, typ, Dimension1, Dimension2, filenummer).

Die einzelnen Parameter haben folgende Bedeutung:
Pfad Typ: $ vollständiger Pfad und Name, des zu erstellenden virtuellen Feldes
type Typ: $ Variablentyp: zulässig ist Integer, Long, Single, Double oder %, &, !, #
Dimension1 Typ: % Anzahl der Komponenten in der ersten Dimension,Langzahl
Dimension2 Typ: % Anzahl der Komponenten in der zweiten Dimension,Langzahl
bei eindimensionalen Feldern ist Dimension2=1
filenr Typ: % Rückgabeparameter, der für die Open-Anweisung bereitgestellten Filenummer

Der zurückgegebene Funktionswert ist ein Fehlerparameter:
0 kein Fehler
1 falscher Variablen-Typ
2 Directory nicht vorhanden oder File readonly (falscher path)
3 nicht genügend Platz auf dem Datenträger vorhanden (Disk voll)

Die Funktionen "VGET.D", "VGET.I", "VGET.L", "VGET.S" lesen Daten aus einem eindimensionalen virtuellen Feld , welches vorher mit 'VDIM' erzeugt worden seien muß. Die Erweiterungen (D...double, I...integer, L...long und S...single) bezeichnen den Variablen-Typ, der mit der Funktion gelesen werden kann.

Die Filenummer (filenr%) muß mit der in "VDIM" verwendeten identisch, die Satznummer (satznr%) kleiner als die Dimension (Dimension%) in "VDIM" sein.

Der Aufruf erfolgt mit
Funktionswert = VGET.D% (filenr%, satznr&, Wert#)
Funktionswert = VGET.I% (filenr%, satznr&, Wert%)
Funktionswert = VGET.L% (filenr%, satznr&, Wert&)
Funktionswert = VGET.S% (filenr%, satznr&, Wert!)

Die einzelnen Parameter haben folgende Bedeutung:
filenr Rückgabeparameter, der bereitgestellten Filenummer aus "VDIM"
satznr Nummer der zu lesenden Feldelementes des Datenfeldes
Wert* Wert des zu lesenden Feldelements

Der zurückgegebene Funktionswert ist ein Fehlerparameter:
0 kein Fehler
4 Wert ist ein falscher Daten-Typ (z.B. long bei VGET.D)
5 falsche Filenummer oder Zugriff auf unöffnetes File
7 Überschreitung der Satznummer (Satznummer>Dimension)
100 sonstiger Fehler

Die Funktionen "VPUT.D", "VPUT.I", "VPUT.L", "VPUT.S" schreiben in ein virtuelles Datenfeld , welches vorher jeweils mit "VDIM" erzeugt worden seien muß. Aufruf , -Parameter und Funktionswerte entsprechen denen von "VGET", wobei hier noch ein

zusätzlicher Funktionswert
3 kein Platz im Verzeichnis lt. Pfad (Disk voll)

existiert.

Die Funktionen "VPUT2.*", "VGET2.*" schreiben bzw. lesen in bzw. aus einem zweidimensionalen virtuellen Datenfeld , welches vorher jeweils mit "VDIM" erzeugt worden seien muß. Die Erweiterung "*" (D...double, I...integer, L...long und S...single) bezeichnet den Daten-Typ, der mit der Funktion gelesen/geschrieben werden kann. Die Filenummer (filenr%) und die Dimension1 (Dimension1&) muß mit der in "VDIM" verwendeten identisch, die Koordinate1 (Koordinate1&) kleiner als die Dimension1 (Dimension1%) und die Koordinate2& (Koordinate2&) kleiner als die Dimension2 (Dimension2%) in "VDIM" sein.

Der Aufruf erfolgt mit
Funktionswert = VGET2.D% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert#)
Funktionswert = VGET2.I% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert%)
Funktionswert = VGET2.L% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert&)
Funktionswert = VGET2.S% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert!)
Funktionswert = VPUT2.D% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert#)
Funktionswert = VPUT2.I% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert%)
Funktionswert = VPUT2.L% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert&)
Funktionswert = VPUT2.S% (filenr%, Dimension1&, Koordinate1&, Koordinate2&, Wert!)

Die einzelnen Parameter haben folgende Bedeutung:

filenr Rückgabeparameter, der aus "VDIM" bereitgestellten Filenummer
Dimension1& identisch mit Dimension1& in 'VDIM'
Koordinate1& Nummer des Matrixelementes in Richtung1
Koordinate2& Nummer des Matrixelementes in Richtung2
Wert* Wert des zu schreibenden Feldelementes

Die Funktionswerte stimmen mit denen der eindimensionalen Feldzugriffe überein.


5.1.2.2 Beschreibung der einzelnen Funktionen

Die Funktion "VDIM" erzeugt ein Datenfeld welches entsprechend seiner gewünschten Länge mit ASCII(0) vollgeschrieben wird. Hierbei werden zweidimensionale Datenfelder in eindimensionale Felder entsprechend größerer Länge umgewandelt.

Zur Berechnung der Feldlänge sowie in der OPEN-Anweisung wird die Bytelänge der Variable benötigt, da die einzelnen Daten-Typen unterschiedliche Bytelängen haben. Das Zuordnen geschied in einer SELECT CASE Anweisung.

Um Überschneidungen von Filenummern zu verhindern wird die Filenummer mit FREEFILE zugewiesen, d.h. das Programm selbst weißt die nächstmögliche Filenummer zu.

Nun wird das File zur Ausgabe geöffnet, was dazu dient, bei einem schon vorhandenem File das gesetzte readonly-Attribut zu erkennen. Gleichzeitig wird dabei, falls noch nicht vorhanden, der Direktory-Eintrag des Files erzeugt. Fileinhalt sind bis jetzt noch die zufällig an der entsprechenden Speicherstelle vorhandenen Alt-Inhalte. Um das zu ändern, wird in einer PRINT$-Anweisung der Speicherbereich entsprechend Feldlänge mit ASCII(0) gefüllt. Da die PRINT$-Anweisung nur mit Integer-Länge möglich ist, mußte diese zur Realisierung von Long-Längen in eine DO-LOOP-Schleife eingebunden werden. Die Restlänge wird nach der Schleife geschrieben.

Nun erfolgt eine CLOSE-Anweisung, um das File anschließend als Direktzugriffs-datei öffnen zu können.

Die Funktionen VPUT.* (VGET.*) dienen zum Schreiben (Lesen) von Werten in (aus) eindimensionale(n) Felder(n). In ihnen werden die Werte mit der GET(PUT)-Anweisung in (aus) die (den) entsprechende(n) Datenfelder(n) geschrieben (gelesen). Zur Unterdrückung von Laufzeitfehlern verzweigt das Programm bei Auftreten dieser mit einer ON ERROR-Anweisung und erzeugt mit einer SELECT CASE-Anweisung aus dem Laufzeitfehlercode den Funktionswert.

Mit den Funktionen VPUT.* (VGET2.*) werden Werte in (aus) zwei-dimensionale(n) Felder(n) gelesen (geschrieben). Dabei berechnet die Funktion entsprechend der Formel Satznummer = Koordinate2 * Dimension1 + Koordinate1 die entsprechende eindimensionale Satzlänge und ruft die Funktion VPUT.* (VGET.*) auf.


5.1.3 Die Biliothek "file"

Alle Aufrufe der Bibliothek "file" und darin beinhaltener Bibliotheken setzen den Blidschirmmodus SCREEN 0 (text mode only) voraus.

Die Funktion InFileName (Kennung) fährt über Cursorsteuerung ein gewünschtes File an, setzt den aktuellen Pfad auf dessen Directory und übergibt den Name als Funktionswert (String). Es werden standardmäßig die Files mit entsprechenden Extensions laut Kennung angezeigt (z.B. Kennung$ = "*.*" oder "a*.dat" usw). Ein Abbruch der Funktion mit Esc ist möglich.

Analog fordert die Funktion OutFileName (Standard, Kennung) zur Eingabe des Namens eines Ausgabefiles auf. Es folgt ein Test, ob ein File dieses Namens bereits existiert. Wenn ja, erfolgt eine Warnung und die Möglichkeit, einen neuen Namen zu wählen oder das alte File zu überschreiben. Der Name dieses Files wird als Funktionswert zurückgegeben. Standard ist die Extension, die standardmäßig angehängt wird (z.B. Standard$ = "bas" oder "*.bas" oder ""), Kennung entspricht dem Aufruf in InFileName. Die Files der aktuellen Directory werden zur Kontrolle auf den Bildschirm ausgegeben.

Die in der Bibliothek enthaltenen Funktionen Bibliotheken "scroll" und "qbx" besitzen nur internen Charakter obiger Funktionen. Daher erfolgt keine nähere Erläuterung.

Aus der ebenfalls in "File" enthaltenen Bibliothek "pulldown", die ihrerseits die Bibliotheken "asmlib", "pulldown", "rahmen" und "window" enthält, sollen nur die im Programm verwendeten Funktionsaufrufe erläutert werden


5.1.3.1 Die Bibliothek "window"

Sie beinhaltet die Subroutines PushScreen und PullScreen, die die Rettung (PushScreen) und Wiederherstellung (PullScreen) von Bidschirminhalten vor/nach der Öffnung von Fenstern auf der grafischen Benutzeroberfläche organisieren. Der Aufruf erfolgt mit

CALL PushScreen (Spalte%, Zeile%, Breite%, Höhe%)

CALL PullScreen (Spalte%, Zeile%, Breite%, Höhe%)

wobei sich Spalte/Zeile auf die linke obere Ecke und Breite/Höhe auf die Größe des zu Bereiches beziehen.


5.1.3.2 Die Bibliothek "rahmen"

Aus dieser Bibliothek wird nur das Unterprogramm Rahmen genutzt. Es erzeugt ein Ausgabefenster, wobei der Aufruf mit

CALL Rahmen (Spalte%, Zeile%, Breite%, Laenge%, Farbe%, Typ%, Schatten%)

erfolgt. Dabei gelten Spalte, Zeile, Breite, Laenge analog oben, Farbe bezeichnet die Bildschirmfarbe, Typ ist die Code-Nummer der gewünschten Farbe , und Schatten ist 0/1 für Fenster ohne/mit Schatten. Bei Aufruf mit Schatten beachte man, daß das Push/PullScreen-Gebiet um den Schatten vergrößert werden muß.


5.1.3.3 Die Bibliothek "asmlib"

Diese Bibliothek beinhaltet neben weiteren nur intern genutzten Aufrufen die im Programm genutzte Subroutine PrintF. Sie stellt eine schnelle Bildschirmausgabe von Strings unter Umgehung von DOS-Interrupten dar. Ihr Aufruf erfolgt mit

PrintF (Spalte%, Zeile%, Text$, Col%),

worin

Spalte%, Zeile% den Ausgabestartpunkt,
Text$ den Ausgabestring und
Col% die Ausgabefarbe

darstellt.


5.1.3.4 Die Bibliothek "polldown"

erzeugt eine Kopfleiste mit Pulldown-Menüs. Dabei erfolgt die Anwahl der Menüpunkte über "HotKey" mit der ALT-Taste oder mit den Cursor-Tasten. Die Aktivierung der Pull-Down-Leiste geschied grundsätzlich mit der ALT-Taste.

Der Funktionsautruf ist

CALL PullDown(Header$,Menue$(),EndKeys$,Menue%,CrsRow%,Key$,Shad%).

Die Aufrufparameter des Pull-Down-Menues haben folgende Bedeutung:

Header$ Text der Kopfzeile
Menue$() Text der einzelnen Menues (siehe unten)
EndKeys$ Liste der Tastencodes, die einen Abbruch bewirken, im Programm ist EndKeys$ = ""
Menue% Nr. des aktiven Menüs (Rückgabeparameter)
CrsRow% Nr. des selektierten Befehls (Rückgabeparameter)
Key$ letzte gedrückte Taste (Kommando-Anwahl oder ESC zum Verlassen des Menüs)
Shad% 0 - ohne, 1 - mit Schatten

Hinweise zur Menüdefinition:
1. <Header$> enthält die durch Leerzeichen getrennten Namen der Menüs
2. <Menue$( )> enthält pro Menü einen String. Jeder String enthält die durch "#" getrennten Menükommandos und endet mit "#".
Mit "#-#" wird eine Trennlinie zwischen zwei Kommandos erzeugt.
3. Shortkeys werden durch vorangestelltes "@" markiert.

Beispiel (Bild 7):
Header$ = " @Datei @File"
Menue$(1) = "@Eintragen#@Suchen/Edit#-#@Ausgabefolge#"
Menue$(2) = "@Directory#-#@Umbenennen#@Löschen#-#@Formatieren#"

Menuebild
Bild 7: Beispiel zur Nutzung der "PullDown"-Routine


5.1.4 Die Biliothek "hc24"

Diese Bibliothek ist verantwortlich für die Druckerausgabe, die folgendermaßen vonstatten geht.
1. Ausgabe der gewünschten Grafik (VGA) auf den Bildschirm
2. Hardcopy auf den Drucker

Die Hardcopy-Versionen eignen sich für alle epsonkompatibelen 24-Nadeldrucker , über Kompatibilitäten mit anderen Druckern kann keine Aussage getroffen werden.

Der Aufruf der Hardcopy-Routinen erfolgt mit

CALL hc.24.klein (x1%, y1%, x2%, y2%, offset%, fehler%),
CALL hc.24.mittel (x1%, y1%, x2%, y2%, offset%, fehler%) oder
CALL hc.24.gross (x1%, y1%, x2%, y2%, offset%, fehler%),

wobei 1 Nadel pro Pixel (klein), 2 Nadeln pro Pixel (mittel) oder 4 Nadeln pro Pixel (groß) ausgeführt werden, was dementsprechend ein kleines, mittleres oder großes Druckbild ergibt.

Die Aufrufparameter haben die Bedeutung:
x1%, y1%, x2%, y2% Koordinaten des zu druckenden Ausschnittes
offset% horizontale Verschiebung des Druckbildes in Millimetern nach rechts
fehler% Rückgabeparameter, bei Fehler: Druckerstatusbyte, sonst 0

Weiterhin enthält die Bibliothek die Funktion "isprint", die die Bereitschaft des Druckers zum Drucken testet.

Aufruf:
Funktionswert%=isprint.

Antwort ist das Druckerstatusbyte:
isprint AND &H1 = &H1: Time Out,
isprint AND &H8 = &H8: Fehler (Off-Line, Papierende),
isprint AND &H10 = &H10: Drucker Empfangsbereit,
isprint AND &H20 = &H20: Papierende,
isprint AND &H80 = &H80: Drucker Empfangsbereit,

der empfohlene Test lautet:
IF Funktionswert = &H90 THEN END/EXIT/GOTO Fehlerbehandlung... .


5.2 Das Hauptprogramm

Das Hauptprogramm dient dazu, die grafische Benutzeroberfläche zu generiern und entsprechend Bedienerwunsch die einzelnen Unterprogramme aufzurufen. Einzelheiten sind in den Kommentaren im Programm-Quelltext (siehe Anlage) erläutert.

Der Nutzer hat die Möglichkeit, aus vier Menüs die einzelnen Aktionen/Befehle auszuwählen und zu starten, tiefere PC-Kenntnisse werden dabei nicht vorausgesetzt. Bei der Programmierung wurde wert auf eine umfangreiche Fehlerbehandlung gelegt, sodaß ungewollte Programmabbrüche (mit Ausnahme des Abbruchs des Unterprogrammes "Fehlertest" bei Datenfeldfehlern) nicht auftreten sollten.

Im einzelnen besteht die Benutzeroberfläche aus den Menüs

Nachfolgend soll die Struktur/Arbeitsweise des Programmes anhand der einzelnen Menüpunkte und in deren Reihenfolge erläutert werden. Auf Flußbilder wird verzichtet.


5.3 Das Menü "Datei"

Die einzelnen Befehle des Datei-Menüs verzweigen das Hauptprogramm zu den entsprechenden Unterprogrammen:

Befehl Verzweigung zum Unterprogramm
Neu clr
Optikdaten laden Optik.lesen
Optikdaten kontrollieren Optik.schreiben
Festdaten lesen Festdaten
Verzeichnis erzeugen makedir
Info info
Ende ende

SUB clr

Dieses Unterprogramm setzt (mit einer notwendigen Ausnahme, siehe Quelltext) alle globalen Variablen auf Null. Das ist nie direkt erforderlich, dient aber letztlich der Sicherheit des Programmes (Sicherheitsaufruf vor SUB Optik.neu) und haupsächlich der Beruhigung des Nutzers.

SUB Optik.lesen

Mit Hilfe dieser SUB liest man ein Optikdatensatz aus einem gewünschten Verzeichnis. Dazu wird die Bibliotheksfunktion InFileName mit der Erweiterung *.opt aufgerufen. Sie gibt den Namen des zu öffnenden Datenfiles zurück, welches in der folgenden OPEN-Anweisung geöffnet und gelesen wird. Wichtig beim Datenlesen ist, das der erste Datensatz die Flächenzahl sein muß, da sich danach die Größe der Optikdatenfelder richtet, die unmittelbar nach dem Lesen der Flächenzahl mit "CALL clearDaten" dimensioniert werden.

Die im Datensatz enthaltene Systemnummer hat programmtechnisch keine Bedeutung, sie dient nur dem Nutzer als Ordnungsprinzip. Die ebenfalls im Datensatz enthaltene Nummer der ersten Fläche der Savartplatte (Variable numsav) ist nicht unbedingt erforderlich, da man diese jederzeit aus der Flächenzahl berechnen könnte, sie dient aber als Vorbeugung gegenüber späteren möglichen Programmerweiterungen, bei denen evtl. der Meßkopf modifiziert wird.

Die im Programmkommenetar an dieser Stelle nicht näher erläuterten Variablen lambda, no, ne und empfgr stehen für die Wellenlänge des verwendeten Lichtes, die ordinäre und extraordinäre Brechzahl der Savartschen Doppelplatte und die Größe der Empfängerfläche (im mm), deren Variabilitäten ebenfalls einer späteren Erweiterung vorbehalten sind.

Der CLOSE-Befehl am Ende dient zur Gewährleistung der Datensicherheit des gelesenen Files.

SUB Optik.schreiben

Aufbau und Struktur dieses Unterprogrammes entsprechen dem des Unterprogrammes "Optik.lesen", wobei hier das Zielfile mit dem Bibliotheksprogramm "OutFileName" ausgewählt und mit "VDIM" dimensioniert wird.

SUB Festdaten

Um die Bedienung des Programmes komfortabel zu gestalten, wurde ein Datensatz im Quelltext fest installiert. Das hat den Vorteil, das nach Neuinstallation oder einem Datenverlust (aus welchen Gründen auch immer) die mühsame Datensatzneueingabe von Hand entfällt. Weiterhin dient es demjenigen Nutzer als Arbeitserleichterung, der nur an prinzipiellen Untersuchungen interessiert ist oder evtl. keinen kongreten Datensatz zur Hand hat.

Der Festdatensatz repräsentiert die im Bild 8 gezeigte Optik, die Reflexion erfolgt an Fläche 8.

Festtdatensatz

Bild 8: Grafische Darstellung des Festdatensatzes

Wie im Bild 8 zu sehen ist wurde der Strahlenverlauf rechentechnisch am objektivseitigen Ende des Prüflings nach der Reflexion aufgeklappt. Die Größe der Darstellung bis zum Aufklappunkt ist maßstäblich zu den eingegebenen Daten, die Größe nach dem Aufklappunkt nicht.

Zu beachten ist weiterhin, daß der exakte Abstand der letzten Objektiv- und der ersten Prüflingsfläche bei Übereinstimmung der Hauptschnitte von Objektiv- und reflektierender Fläche 148,9 mm beträgt die Festdaten aber einen Abstand von 156,9 mm enthalten. Dieser Abstand ist so gewählt, daß ein Bild mit einer Anzahl von Interferenzstreifen entsteht (Bild 9), die geeignet ist, das Wesentliche im Überblick zu erfassen.

Bild 9: aus Festdaten berechnetes Interferogramm (ohne Graustufen)

Eine weitere Vergrößerung des Abstandes führt zu einer Erhöhung der Anzahl von Interferenzstreifen.

SUB makedir

Dieses Unterprogramm ermöglicht es dem DOS-unkundigen Nutzer, ein Verzeichnis zu erstellen. Es entspricht dem gleichnamigen DOS-Befehl.

SUB info

Wie in allen Programmen üblich ist hier eine Kurzinformation über Ursprung und Urheberrechte enthalten, welche als Text auf der Benotzeroberfläche ausgegeben wird.

SUB Ende

Bei Aufruf dieser SUB wird der zum Programmstart aktuelle Pfad wieder gesetzt, der Bildschirm gelöscht und das Programm beendet.


5.4 Das Menü "Bearbeiten"

ermöglicht dem Nutzer Manipulationen des optischen Systemes.

Die einzelnen Befehle des Bearbeiten-Menüs verzweigen das Hauptprogramm zu folgenden Unterprogrammen:

Befehl Verzweigung zum Unterprogramm
Optikdaten neu clr; Optik.neu
Optikdaten kontrollieren Optik.kontr mit Parameter 0
P>Optikdaten verändern Optik.kontr mit Parameter 1
Savartplatte dezentrieren sav.dez

SUB Optik.neu

Vor Aufruf des Unterprogrammes "Optik.neu" wird aus Sicherheitsgründen das Unterprogramm "clr" (Beschreibung siehe vorheriges Kapitel) ausgeführt.

Diese Subroutine ermöglicht es dem Nutzer einen neuen Satz von Optikdaten, (d.h. ein neues optisches System) einzugeben. Zu diesem Zwecke erscheint als erstes die Frage nach der Anzahl der Flächen des Systemes. Die abgefragte Flächenzahl beinhaltet die Flächen des Fokussierobjektives und die des Prüflings, nicht aber Empfänger- und Meßkopfflächen. Letztere werden durch das Programm automatisch angefügt, die Startfläche spielt im Strahldurchrechnungsalgorithmus keine Rolle. Anschließend fragt das Programm die Systemnummer ab, die (wie oben bereits geschildert) nur ein Ordnungsmerkmal des Nutzers ist, programmtechnisch aber keine Rolle spielt und setzt die Systemdaten (vgl. Kapitel 6.7), deren Angabe vom Nutzer einer späteren Erweiterung vorbehalten ist.

Nun werden die Meßkopfflächen der Flächenzahl zuaddiert und die Optikdatenfelder durch Aufruf der SUB clearDaten auf Flächenzahlgröße dimensioniert. Nachdem dies geschehen ist, erfolgt die Abfrage der Daten (Scheitelabstände und Brechzahlen vor den; Krümmungsradien, Dezentrierungen und freie Durchmesser der einzelnen) Flächen.

SUB Optik.kontr

Der Aufruf dieses Unterprogrammes erfolgt vom Hauptprogramm aus mit dem Parameter "ändern". Dieser Parameter ist bei Anwahl des Befehles "Optikdaten kontrollieren" null, bei Anwahl des Befehles "Optikdaten verändern" eins. In beiden Fällen werden die Optikdaten komplexweise in der Reihenfolge Scheitelabstände, Krümmungsradien, Dezentrierungswinkel, Brechzahlen und freie Durchmesser angezeigt. Nach jedem Komplex erfolgt im Falle des gesetzten Änderungsparameters eine Verzweigung zum Unterprogramm Optik.aendern zur Änderung eines Parameters des betreffenden Komplexes, andernfalls wird das Bild bis zum Drücken einer beliebigen Taste gehalten. Falls diese Taste "escape" ist erfolgt dabei gleichzeitig ein Abbruch der SUB und die Rückkehr zum Hauptprogramm, falls nicht wird mit dem nächsten Komplex fortgesetzt.

SUB Optik.aendern

Dies ist die Routine, zu der die SUB Optik.kontr bei gesetztem Änderungsparameter verzweigt wird. Dabei erhält "Optik.aendern" einen Übergabeparameter, der den aktuellen Komplex von "Optik.kontr" charakterisiert.

Als erstes erfolgt eine Pauschalfrage, ob im aktuellen Komplex Daten geändert werden sollen. In Falle der Verneinung kehrt das Programm zur SUB Optik.kontr zurück, im anderen Falle selektiert es anhand des Übergabeparameters die entsprechende Änderungsabfrage, erfragt die Flächennummer und führt die Änderung eines Datums nach Wunsch durch.

Pro Komplex ist nur eine Änderung möglich, sollen mehrere Daten eines Komplexes geändert werden, ist der Befehl "Bearbeiten-Optikdaten verändern" entsprechend oft auszuführen. Das ist sinnvoll, da meist nur ein Datum verändert werden soll.

SUB sav.dez

Bei Auswahl des Befehles "Bearbeiten-Savartplatte dezentrieren" erfolgt eine Verzweigung des Hauptprogramms in diese SUB. Sie ermöglicht es, die Lage der Savartschen Doppelplatte, deren Normale nach [12] die Richtung der Bezugsachse definiert bis maximal 5° Flächenkippung bei beliebigen Azimut zu verändern.

Dazu wird zuerst die aktuelle Dezentrierung in ein Fenster ausgegeben und, nach kurzer zeitlicher Verzögerung in einem gesonderten Fenster die neue Dezentrierung abgefragt.

Danach erfolgt die Wiederherstellung des Bildschirmes und die Umrechnung der Winkelangaben in das Bogenmaß.


5.5 Das Menü "Ausführen"

enthält die eigentlichen wesentlichen Programmteile, die Strahldurchrechnung durchführen und Ergebnisse anzeigen.

Die einzelnen Befehle des Ausführen-Menüs verzweigen das Hauptprogramm zu folgenden Unterprogrammen:

Befehl Verzweigung zum Unterprogramm
Strahlrechnung Strahl
Intensitätsbild Intens.lesen
Gesamt-Phasendifferenzbild Phase mit Parameter 1
mod2p-Phasendifferenzbild Phase mit Parameter 2
Mittelung Mittelung mit Parametern 0, 0

5.5.1 Die Strahlrechnung (SUB strahl)

Mit dem Aufruf dieser SUB aktiviert man die Strahldurchrechnung, das eigentliche Kernstück des gesamten Programmes.

Hier erfolgt als erstes ein Test der Anzahl der vorhandenen Flächen. Falls diese Zahl kleiner oder gleich neun ist (<10) erfolgt ein Abbruch der SUB unter Ausgabe einer Fehlermeldung "kein sinnvoller Datensatz vorhanden" und Rückkehr zum Hauptprogramm. Die kongrete Zahl neun ergibt sich aus den acht Meßkopfflächen und der Empfängerfläche, da eine Strahldurchrechnung ohne benutzerdefinierte Fläche nicht sinnvoll ist.

Bei vorhandenem, sinnvollen Datensatz wird nun zur SUB Anfangsangaben übergegangen, mit deren Hilfe alle noch erforderlichen Angaben zur Strahldurchrechnung abgefragt und deren Korrektheit getestet werden. Dazu gehören der Radius des Ausgangsbündels (0,1 <= r <= 0,5*freier Durchmesser der ersten Fläche), die Anzahl der radialen Rasterungen und die Anzahl der Rasterungen des äußeren Kreisringes.

Die radiale Rasterung (Bild 10) erfolgt derart, daß Kreisringe gleicher Fläche entstehen, die sich nach der einfachen Gleichung

Rasterungsschema
Bild 10: Rasterung des Ausgangsbündels in Kreisringe gleicher Fläche

berechnen. Das hat den Vorteil, das unter der Voraussetzung der Gleichverteilung der Intensität (in praxi nicht immer gegeben ist) über das gesamte Bündel jeder Kreisring die gleiche Intensität repräsentiert.

Bei der Rasterung der Kreisringe über deren Azimut (deren Rasterzahlen immer Potenzen von zwei ergeben) wurde ein Weg beschritten, der für die kongret vorliegende Aufgabenstellung einfacher zu realisieren gewesen wäre, der aber eine größere Universalität gegenüber späteren Erweiterungen (beispielsweise Isotropierechnungen) gestattet. Weiterhin lassen sich dadurch die Deformierungen von Kreisen und Radialen in der Empfängerebene darstellen, was bei einer kartesischen Rasterung des Ausgangsbündels nicht der Fall gewesen wäre.Diese Rasterung der Azimute der Kreisringe hat den Vorteil, das sich alle Rasterpunkte auf Kreisen bzw. Radialen befinden (Bild11).

Rasterpunkte
Bild 11: Beispiel für die Rasterung des Ausgangsbündels

Die Berechnung der Anzahl der azimutalen Rasterungen erfolgt dabei in folgender Reihenfolge:

1. Abfrage der Rasterungen des äußeren Kreises
2. Test, ob dies eine Potenz von zwei ist
nein -> zurück zu erstens
ja -> weiter
3. Berechnung der maximalen Bogenlänge "maxbogen"
4. Division der Radius' des aktuellen Kreises durch die Bogenlänge und Aufrunden dieses Quotienten auf eine ganze Zahl
5. Aufrunden dieser Zahl auf eine volle Zweierpotenz.

Die maximale Anzahl der Rasterungen des Azimutes ist aus Gründen der Rechenkapazität auf 1024 beschränkt.

Auf Wunsch erfolgt nun eine Ausgabe der Rasterung des Ausgangsbündels auf den Bildschirm, die in ihrer Art dem Bild 11 entspricht. Dabei ist die Ausgabe beliebiger Rasterungen möglich, jedoch nur die mit kleineren Rasterzahlen sinnvoll, da man bei größeren Rasterzahlen nichts mehr erkennen kann.

Anschließend erfolgt ein Test, ob die Gesamtzahl der zu rechnenden Strahlen nicht größer als 352032 , das entspricht einer radialen Rasterpunktzahl von 800 und einer azimutalen Rasterpunktezahl von maximal 512, ist. Dabei ist die Gesamtzahl so gewählt, daß sichergestellt ist, daß sich die einzelnen Datenfelder gerade noch auf eine 3,5"-HD-Diskette (1,44MB) kopieren lassen (wichtig, um den einfachen Transport von Daten (ohne BACKUP) zu gewährleisten). Ist die Strahlenzahl größer als das Limit, startet die Abfrageschleife von vorn.

Nachdem nun die Frage der Startwerte abgearbeitet ist, erfolgt ein Aufruf der SUB Ausgabefragen, die die Nummer der reflektierenden Fläche, die Ausgabeart (Punkte Kreisringe, Intensitätsbild oder Radiale, vgl. später) und die automatische/Standart-Dimensionierung der Empfängerfläche abfragt.

Jetzt wird die SUB ClearStrahl aufgerufen, welche die Aufgabe hat, die Datenfelder der Strahldurchrechnung zu dimensionieren. Die Gesamtgröße der anzulegenden Datenfelder (die Rasterdatein werden erst später angelegt) für einen Datensatz beträgt je 60000 Strahlen ca. 1MByte (Rasterdatein inclusive).

Am Ende der SUB Anfangsangaben gibt das Programm eine Laufzeitinformation "Rechnung läuft" aus und speichert die Durchrechnungsparameter in der Parameterdatei. Diese Datei ermöglicht es dem Nutzer bei späterer Betrachtung der Bilder die Anfangsparameter zu sehen, darüber hinaus wird ein später noch in dieser Datei abzuspeichernder Parameter für die Grafikausgabe benötigt.

Nun kehrt das Programm zur SUB Strahl zurück, nimmt die Systemzeit (für die Rechenzeitausgabe am Ende des Programmes) und beginnt mit der eingentlichen Strahldurchrechnung.

Die Strahldurchrechnung erfolgt innerhalb zweier ineinander angeordneter FOR-NEXT-Schleifen, die als Integer-Schleifen über die radialen und azimutalen Rasterzahlen radius (1 bis rraster) und iazimut (1 bis str(radius) ) laufen. Aus den radialen Laufindex wird analog der in Bild 10 dargestellten Gleichung

k Gesamtzahl der radialen Rasterungen
ri Radius des i-ten Kreises
rges Pupillenradius des Ausgangsbündels

der Radius des Kreisringes und aus dem azimutalen Laufindex der Azimutwinkel des Startpunktes des jeweiligen Strahles

azimut = ( 2p / str(i) ) * iazimut azimut Azimutwinkel
iazimut Laufindex des Azimutes
str(i) Anzahl der Strahlen auf dem Kreisring i

erzeugt. Aus den beiden Werten Azimut und Radius wird nun der kartesische Ortsvektor der Startpunktes erzeugt (Transformation von Polarkoordinaten in kartesische Koordinaten). Da durch die unterschiedlichen Zahlen der Azimut-Rasterungen je Kreisring die Startintensität, die jeder Strahl repräsentiert unterschiedlich ist, ist es erforderlich, jedem Strahl eine solche Startintensität mit Hilfe der Gleichung

intensi = str(1) / str(i) intensi Startintensität
str(1) Anzahl der Strahlen des inneren Kreises
str(i) Anzahl der Strahlen des inneren Kreises

zuzuordnen. Sie ist normiert auf die Intensität der Einzelstrahlen des inneren Kreisringes, um eine möglichst hohe Intensität der Einzelstrahlen zu gewährleisten.

Als letzten Wert erhält der aktuelle Strahl noch den Strahlvektor (Einheitsvektor)

S = (0, 0, 1) S Strahlvektor

zugewiesen. Nun kann die Strahldurchrechnung beginnen.

Zu diesem Zweck wurde das optische System im drei Komplexe eingeteilt, die in FOR-NEXT-Schleifen abgehandelt werden:

Komplex 1: Schleife bis zur reflektierenden Fläche

In diesem Komplex wird (mit Flächennummer und Intensität als Parameter) die

SUB Strahl.positiv aufgerufen, welche wiederum als erstes die

SUB Strahl.parameter aufruft. Im Unterprogramm "Strahl.parameter", der mit dem Parameter der aktuellen Fläche aufgerufen wird, werden den SHARED-Variablen für die Brechung die Parameter der aktuellen Fläche (Dezentrierungsvektor, freier Weg vor der Fläche, Krümmung und freie Höhe der Fläche und das Verhältnis der Brechzahlen vor/nach der Fläche) zugewiesen.

Jetzt wird die FUNCTION Flaeche.Brechung oder falls die aktuelle Fläche die Reflexionsfläche ist die SUB Flaeche.Reflexion aufgerufen. Eine Beschreibung der SUB Flaeche.Brechung soll hier nicht erfolgen, es sei auf [6] verwiesen.

Die FUNCTION Flaeche.Reflexion ist bis einschließlich der Transformation des Durchstoßpunktes und dem Höhenverfehlungstest mit der Funktion Flaeche.Brechung identisch. Nun wird der Normalenvektor der Fläche im Durchstoßpunkt ebenfalls entsprechend [6] berechnet. Danach wird das vektorielle Reflexionsgesetz (vgl. Kapitel 4.1) zur Berechnung des Strahlvektors nach der Reflexion verwendet. Am Schluß der Funktion "Flaeche.Reflexion" wird der Strahlengang mit Hilfe der Gleichungen

Sz = -Sz und S Strahlvektor
Xz = -Xz X Ortsvektor des Durchstoßungspunktes

aufgeklappt, was für eine Weiterführung der Rechnung mit positiver Strahlrichtung jenseits der reflektierenden Fläche sorgt.

Damit sind die Funktionen Flaeche.Brechung/Reflexion abgearbeitet. Sollte es während dieser Abarbeitung zu einem Fehler (Kugel-, Höhenverfehlung, Flächenüberschneidung) gekommen sein, was sich im als Fehlerparameter verwendeten Funktionswert ausdrückt, wird in der SUB Strahl.positiv die Intensität des Strahles auf Null gesetzt und im Falle einer Flächenüberschneidung das Progamm mit entsprechender Fehlermeldung abgebrochen und beendet.

Damit ist das Unterprogramm Strahl.positiv beendet, es erfolgt eine Rückkehr zu "Strahl", sowie ein Übergang zum Komplex 2.

Komplex 2: Schleife bis zur Ausgangsfläche des Prüflings zurück

In diesem Komplex wird (mit Flächennummer und Intensität als Parameter) analog zum Komplex 1 die SUB Strahl.negativ aufgerufen, welche als erstes die Parameter der aktuellen Fläche den SHARED-Variablen (Dezentrierungsvektor, freier Weg vor der Fläche, Krümmung und freie Höhe der Fläche und das Verhältnis der Brechzahlen vor/nach der Fläche)für die Brechung zuweist. Zu beachten ist hierbei, daß der Strahl eigentlich negativ läuft, d.h. das

R = -R(j) R(j) Krümmung der Fläche j
bzv = bz(j+1) / bz(j) bzv Brechzahlverhältnis vor/nach der Fläche
l = sa(j+1) l freie Weglänge vor der Fläche

zugewiesen werden muß. Die anderen Zuweisungen erfolgen analog der SUB Strahl.parameter. Nun wird die Funktion Flaeche.Brechung aufgerufen und anschließend der zurückgegebene Funktionswert als Fehlerparameter getestet. Damit ist der Komplex 2 beendet.

Komplex 3: Schleife durch den Meßkopf

In diesem Komplex erfolgt die Brechung des Strahlenganges durch den Meßkopf. Dazu erfolgt bei jedem Durchlauf zuerst ein Test, ob die aktuelle Fläche die erste Fläche der Savartplatte ist. Ist das nicht der Fall, ruft das Programm die SUB Strahl.Kopf auf welche bis auf das Fehlen der Fehlerabfrage für Flächenüberschneidungen nach Ausführung der Funktion Flaeche.Brechung (diese können hier nicht auftreten, deshalb wird diese Abfrage zwecks Rechenzeitersparnis weggelassen) mit der SUB Strahl.positiv des Komplexes 1 identisch ist.

Falls die Nummer der aktuellen Fläche und die Nummer der ersten Fläche der Savartplatte übereinstimmen, wird die SUB Wellenoptik aufgerufen, die die Berechnung der den Meßkopf transmittierenden Intensität übernimmt. Der Einfallwinkel des Strahles berechnet sich nach der Gleichung

q = arccos (S, k) q Einfallswinkel gegen das Lot der Savartplatte
S Strahlvektor (Einheitsvektor)
k Dezentrierungsvektor (Einheitsvektor)

der Azimut des einfallenden Strahles nach

y = arctan (S2, S1) + savazi q Azimut des einfallenden Strahles zum Hauptschnitt der ersten Savartplatte
savazi Azimut des Hauptschnittes der ersten Savartplatte zur x-Achse
S Strahlvektor.

Die Berechnung der Phasendifferenz erfolgt nach Kapitel 4.2 mit

Formel fuer Phasendifferenz

wobei die Konstanten

sind, die Berechnung der den Meßkopf transmittierenden Intensität erfolgt nach Kapitel 4.3 mit

I = I0 sin2 (d/2). I0 Anfangsintensität
I transmittierte Intensität
d Phasendifferenz

Unmittelbar nach Berechnung der Phasendifferenz wird diese in dem dafür vorgesehenen Datenfeld gespeichert. Anschließend wird sin2(d/2) berechnet und, falls er kleiner als 2*10-25 ist auf 2*10-25 gesetzt. Das ist erforderlich damit die Intensität noch größer als 2*10-28 ist, da nur dann bei Ausgabe mit der SUB Punkte noch ein Punkt gesetzt wird (und Faktor 1000 als Reserve). Bleibt nur noch die Berechnung der transmittierten Intensität gemäß obiger Formel und die Wellenoptik ist abgearbeitet, womit auch nach fertiger Abarbeitung der FOR-NEXT-Schleife der SUB Strahl der Komplex 3 beendet ist.

Es erfolgt der Aufruf der SUB put.dat, die die Aufgabe hat, die Werte x und y der Strahlschnittpunkte mit der Empfängerebene und die Intensität in sie Datenfelder zu schreiben. Die Strahlnummer ist dabei mit der Satznummer identisch.

Um dem Nutzer einen ungefähren Zeitmaßstab für die Abarbeitung der Strahldurchrechnung zu geben, andererseits den Programmablauf nicht durch unnötig viele PRINT-Befehle zu verzögern, wird innerhalb der äußeren Schleife der Radius-Laufindex als Information auf den Bildschirm ausgegeben, welcher mit der Nummer des aktuellen Kreisringes identisch ist.

Daran anschließend ruft "Strahl" das Unterprogramm SUB Achsstrahl auf, das dem Unterprogramm "Strahl" entspricht, aber nur den Achsstrahl rechnet. Der Ablauf dieser SUB entspricht der von "Strahl", wobei die Anfangsintensität auf 3*1028 gesetzt wird, da dieser Strahl nur der Symmetriestrahl ist, aber keine Intensität vertritt. Der Aufruf der SUB Wellenoptik entfällt.

Nachdem nun alle Strahlen durchgerechnet sind und als Datensätze der Satznummer "Strahlnummer" in den Dateien "xkoord.dat", "ykoord.dat" und "inull.dat" vorliegen ist die Strahldurchrechnung beendet.

Das Unterprogramm Strahl übergibt mittels Aufruf an die SUB Endausgabe. Dort wird die Größe der Ausgabematix mit matdim=101 definiert, das bedeutet, daß die Grafikausgabe verschiedener Endbilder mit einer (101, 101)-Bildpunkt-Rastermatrix erfolgt und auch das Datenfeld "raster.dat" in dieser Größe angelegt wird. Das geschied im Anschluß, nachdem der matdim-Wert in der Parameterdatei "paramet.dat" gespeichert wurde. Da die "paramet.dat" eine Long-Datei ist wurde matdim als Langzahl definiert.

Entsprechend der Beantwortung der Ausgabefrage "Ausgabefeld auf Randstrahl oder Empfängerfläche dimensionieren (r/e) wird im Fall der Antwort "r" nun die SUB dim.emfgr aufgerufen, die alle Strahlkoordinaten x und y aus ihren Datenfeldern liest und das Betragsmaximun aus beiden Werten ermittelt. Dieses Betragsmaximum definiert "dim.empfgr" als Variable empfgr (das ist die halbe Kantenlänge der quadratischen Empfängerfläche) und überschreibt den alten Wert in der Parameterdatei.

Nun berechnet "Endausgabe" die Kantenlänge eines Rasterfeldes mit

rastl = 2 empfgr / matdim, rastl Kantenlänge eines Rasterfeldes
empfgr halbe Kantenlänge der Empfängerfläche
matdim Größe der quadratischen Rastermatrix

gibt eine Laufzeitmitteilung auf den Bildschirm aus und ruft die FUNCTION rastersort auf, die alle Paare (x, y) der Strahlkoordinaten in der Empfängerfläche liest und diese gemäß Bild 12 dem Empfängerflächenraster der Datei "raster.dat" , deren Feldkoordinaten den Rasterkoordinaten und deren Feldinhalte den Intensitäten im betreffenden Rasterpunkt entsprechen, zuordnet.

Rasterung in die Empfaengerflaeche

Bild 12: Konvertierung der Strahlkoordinaten in das Empfängerraster.

Nach erfolgter Zuordnung des einzelnen Strahles zu einem Rasterpunkt, wird die Intensität des jeweiligen Strahles der im Matrixelement bereits vorhandenen Intensität zuaddiert. Gleichzeitig dazu bestimmt "rastersort" die maximale Intensität eines Rasterpunktes aus der Gesamtheit aller Rasterpunkte und gibt diese als Funktionswert an die SUB Endausgabe zurück.

Der Aufruf der Mittelung aus der SUB Endausgabe heraus ist vorbereitet und kann optional durch entfernen des REMARK-Apostrophs aktiviert werden. Das ist jedoch nicht unbedingt erforderlich, da die SUB Mittelung einen extra Aufruf im Hauptprogramm besitzt. Die Beschreibung der Mittelung erfolgt dieser späteren Stelle.

Um eine gleichmäßig gute Darstellung des Empfängerbildes zu erreichen, erfolgt nun der Aufruf der SUB normierung, die das Rasterfeld normiert. Die dazu notwendige max. Intensität und die Größe der Empfängermatrix sind die dazu erforderlichen Übergabeparameter. Das Unterprogramm "normierung" gibt die max. Intensität auf den Bildschirm aus, liest die Intensitäten aller Matrixelemente, teilt diese durch die Maximalintensität und speichert sie wieder ab.

Nun löscht "Endausgabe" den Bildschirm, gibt die System- und Berechnungsparameter aus und ruft je nach gewünschter Ausgabeart eine der vier Ausgabe-Subroutines (Punkte, Kreise, Radiale, Bild.intens) auf.

1. SUB Punkte

Aufgabe des Unterprogrammes ist es, die Rastermatrix als Punkte ohne Rücksicht auf ihre Intensität auszugeben. Dazu laufen zwei Schleifen mit den Matrixkoordinaten als Laufindex ineinander, die die einzelnen Rasterwerte lesen und als Punkt ausgeben, wenn deren Intensität größer als 2*1028 ist. Der Schwellwert ist dabei willkürlich gewählt und dient dazu, das nicht bei Rasterelementen mit Wert null oder fast null (Maschinenfehler) ein Punkt gesetzt wird.

2. SUB Kreise

Das Unterprogramm "Kreise gibt die Punkte eines Kreisringes in der Empfängerfläche durch Linien verbunden (d. h. als Polygon-"Kreise") aus. Dazu liest eine Schleife mit der Strahlnummer als Laufindex die (x, y)-Koordinaten der Strahlen und verbindet diese mit Geraden. Dabei registriert das Unterprogramm die ersten/letzten Strahlen eines Kreisringes, die Entstehung einer Spirale wird verhindert.

3. SUB radiale

Diese SUB gibt acht vom Mittelpunkt der Empfängerfläche ausgehende Radiale (Bild13) als Verbindung der in der Startebene auf diesen Radialen gelegenen

Radialenbild

Bild 13: Beispiel für ein mit einer zentrierten Optik erzeugtes Radialenbild

Punkte aus. Zu diesem Zweck wird der Achsstrahl, der der letzte Strahl im x und im y-Datenfeld ist als Startpunkt gelesen und gesetzt, es läuft eine Schleife über die Kreisringe (bis rraster = radiale Rasterzahl) und erzeugt die Linien über die Punkte der Radiale. Ist das geschehen, wird solange mit der nächsten Radiale fortgesetzt, bis alle Radialen gezeichnet sind.

4. SUB Bild.intens

Durch das Unterprogramm Bild.intens wird ein Intensitätsbild erzeugt, wie es in der Auffangebene des Interferometers (Bild 2, Kap. 3) zu sehen ist. Dazu erzeugt "Bild.intens" eine eigene Farbpalette, wobei den 16 Farben des VGA-Bildschirmes (SCREEN 12) je eine Graustufe zugeordnet werden. Die Formel dazu lautet

Farbe = 65536*Anteil1 + 256*Anteil2 + Anteil3

wobei Anteil1...3 die Anteile der Grundfarben sind. Da es sich bei Grauwerten bekanntlich um die Farbe weiß in unterschiedlichen Intensitätsstufen handelt, vereinfacht sich die Formel zu

Farbe = 65536*Anteil + 256*Anteil + Anteil

wobei Anteil jetzt für die Intensität steht und zwischen null und 63 liegt. Da die Intensität unserer Punkte normiert ist, ergibt sich der Grauwert "Anteil" zu

Anteil = Intensitätswert * 63 / 15,

und der Intensitätswert ( 0 <= Intensitätswert <= 15 ) ergibt sich zu

Intensitätswert = CINT ( normierte Intensität * 15 ).

Die Operation CINT ( ) ist eine Rundung auf eine ganze Zahl.

Nun wird ein Ausgabefenster mit (nicht sichtbarem) Koordinatensystem erzeugt, dessen Größe und Skalierung einem Vielfachen der Anzahl der Rasterelemente pro Dimension (matdim) entsprechen muß, damit jedem Rasterelement genau gleich viele Pixel zugeordnet sind und somit unerwünschte Effekte der Konvertierung des Datenrasters in das Pixelraster vermieden werden. Im kongreten Fall ist jedem Rasterelement ein (2, 2)-Pixelfeld zugeordnet. Die Ausgabe erfolgt gleich der SUB Punkte in zwei verschachtelten Schleifen, wobei hier jedoch die Intensitäten der Punkte berücksichtigt werden.

Damit ist die SUB Endausgabe beendet, die Steuerung kehrt zum Unterprogramm "Strahl" zurück, gibt die Rechenzeit aus und macht den Nutzer mit einem doppelten Piepton kenntlich, die Arbeit beendet zu haben. Dabei erhält eine leere INPUT-Anweisung das ausgegebene Bild bis der Nutzer <enter> drückt. Danach erfolgt eine Rückkehr zum Hauptprogramm.


5.5.2 Das Intensitätsbild (SUB Intens.lesen)

Das Unterprogramm Intens.lesen steuert die Ausgabe bereits fertig berechneter Intensitätsbilder auf den Bildschirm. Dazu ruft es als erstes die SUB openStrahl auf, die den Nutzer das Quellverzeichnis abfragt. Nach einer Kontrolle, ob die Datenfiles dort vorhanden sind, werden diese geöffnet, oder bei Fehlen eines Datenfiles bricht das Programm ab.

Jetzt ruft "Intens.lesen" die SUB intangaben auf, die die Parameterdatei liest und deren Angaben auf den Ausgabebildschirm ausgibt.

Als letztes erfolgt der Aufruf der Subroutine Bild.intens, welche (wie im vorhergehenden Kapitel beschrieben) das Intensitätsbild erzeugt.


5.5.3 Die beiden Phasendifferenzbilder (Sub Phase)

Wählt der Nutzer den Befehl Gesamt-Phasendifferenzbild oder mod2p-Phasendifferenzbild an, so erfolgt der Aufruf der SUB Phase mit dem Parameter eins für Gesamtbild oder dem Parameter zwei für ein 2p-periodisches Bild.

In dieser SUB wird vom Nutzer der Pfad für die Datenfelder abgefragt und kontrolliert, ob bereits ein Phasenrasterfeld "phraster.dat" vorhanden ist. Wenn das nicht der Fall ist, kontrolliert das Programm das Vorhandensein der Dateien "xkoord.dat", "ykoord.dat"und "delta.dat" da diese zur Erzeugung der Phasenrasterdatei erforderlich sind. Ist eines der Datenfelder nicht vorhanden, erfolgt ein Programmabbruch mit entsprechender Fehlermeldung. Ebenfalls kontrolliert wird die Existenz der Parameterdatei, wobei bei Fehlen selbiger das Programm ebenfalls abbricht.

Die Parameterdatei wird geöffnet und die Größe der Rasterdatei gelesen, die mit der Größe der Phasenrasterdatei identisch ist.

Im Falle des Vorhandenseins einer Phasenrasterdatei wird diese geöffnet, andernfalls erfolgt ein Aufruf der SUB Phasenrastererzeugung, die , wie ihr Name schon sagt, die Phasenrasterdatei erzeugt:

Zuerst wird das Phasenrasterfeld dimensioniert, dann werden die Empfängergröße und die Strahlenzahl gelesen, da sie Ausgangsdaten für die Rasterkonvertierung sind. Es erfolgt (analog Kap. 5.5.1) die Berechnung der Rasterlänge und die Raster-konvertierung. Am Ende der SUB Phasenrastererzeugung schließt ein CLOSE-Befehl die Datenfelder "xkoord.dat", "ykoord.dat"und "delta.dat" geschlossen, das Phasenrasterfeld bleibt geöffnet.

Innerhalb der SUB Phase werden nun die Daten der Parameterdatei gelesen. Mittels der PALETTE-Anweisung definiert das Programm die Farben neu, die 16-VGA-Farben werden zugewiesen:

Farbtabelle

Jetzt erfolgt die Ausgabe der Berechnungsparameter und entsprechend Aufrufparameter aus dem Hauptprogramm (er heißt in der SUB Phase "modus") des Kommentares zum Bild. Das Ausgabefenster mit (nicht sichtbarem) Koordinatensystem in der Pixelgröße der doppelten Rasterfeldgröße wird erzeugt und die Ausgabe entsprechend "modus" beginnt.

modus=1 (Gesamtbild)
Die Ausgabe erfolgt mit PSET innerhalb zweier geschachtelter Schleifen, die über die Koordinaten der Phasenrasterdatei laufen. Die Phasendifferenz wird aus dem Phasenrasterfeld gelesen und die Darstellungsfarbe nach

f = CINT ( p/4 * - 0,5 ) + 8 f Farbnummer zur PSET-Anweisung
p Phasendifferenz

berechnet. Die Ausgabe jedes Punktes erfolgt als (2, 2)-Feld.

modus=2 (modula 2p)
Die Ausgabe der Punkte erfolgt analog oben mit der Änderung, das die Phasen-differenz mit Hilfe zweier DO-LOOP-Schleifen in das Intervall [-p,+p] gelegt und die Darstellungsfarbe nach

f = CINT ( (p+p)/2p * 16 ) + 8 f Farbnummer zur PSET-Anweisung
p Phasendifferenz

berechnet wird.

In beiden Fällen ist ein Abbruch der Schleifen mit Escape möglich. Am Ende der Ausgabe werden die Datenfelder geschlossen und ein leere Inputanweisung hält den Bildschirm, bei die <enter>-Taste gedrückt wird.


5.5.4 Die Mittelung (SUB mittelung)

Aufgabe dieses Unterprogrammes ist es, das Intensitätsrasterfeld mit einem 3*3-Filter zu mitteln. Das ist ratsam, da durch die Transformation der Polarkoordinaten zu kartesischen Koordinaten in der Startebene der Strahldurchrechnung und der Konvertierung der (x,y)-Koordinaten in die Rasterkoordinaten in der Empfängerebene eine Feinstruktur (Bild 14) entsteht, die nicht dem physikalischen Sachverhalt entspricht.

berechnetes Interferogramm

Bild 14: Feinstruktur des ungemittelten Datenfeldes, die infolge Koordinatentransformation und Rasterkonvertierung entsteht

Zur Mittelung werden, nachdem dem Nutzer das zu mittelnde Verzeichnis abgefragt wurde, im Arbeitsspeicher drei eindimensionale Datenfelder mit "matdim"-Größe als Puffer definiert, in die die Rasterdatei zeilenweise eingelesen wird. Das dient dazu, die Zugriffe auf externe Speichermedien gering zu halten. Dazu erfolgt zuerst das Einlesen der Zeile 1 in den Puffer 1 und Zeile 2 in Puffer 2. Dann startet eine Schleife mit m=2...matdim-1 als Laufindex, die folgenden Ablauf hat:

Der escape - Test bricht bei gedrückter <esc> -Taste die Mittelung nach Sicherheitsrückfrage ab.

Da die Mittelung die Randelemente des Datenfeldes nicht erfassen kann, existieren für sie noch Extra-Schleifen, die innerhalb der Randzeile (-spalte) jedes Element mit seinem Vorgänger und seinem Nachfolger mittlen. Die Eckpunkte des Rasterfeldes bleiben von der Mittelung unberührt, was aber nicht stört, da ihre Inhalte meist null sind.

Bild einfach gemittelt

Bild 15a: Feinstruktur des einfach gemittelten Datenfeldes

Bild doppelt gemittelt

Bild 15b: Feinstruktur des doppelt gemittelten Datenfeldes

Zum Abschluß der Subroutine erfolgt ein Aufruf der bereits aus Kap. 5.5.5 bekannten SUB normierung um die durch die Mittelung abgeflachte Intensitätsverteilung wieder auf ihr Maximum zu normieren.

Bild 15a zeigt das einmal gemittelte Analogon zu Bild 14. Die Feinstruktur des Bildes 15a ist gegenüber der des Bildes 14 deutlich reduziert, es soll aber nicht verschwiegen werden, das jede Mittelung einen unerwünschten Nebeneffekt hat: Sie verfälscht die über der Vertikalen des Bildes vorhandene sin2-Verteilung, indem sie die Minimas der Intensität anhebt und die Maximas absenkt. Das führt dazu, das die Bereiche der intensitätsmäßig kleinsten Graustufe (schwarz) des Bildes 15a deutlich kleiner sind als die des Bildes 14. Zusätzlich werden die Randbereiche des linken und der rechten Randes des Intensitätsbildes verzerrt. Deutlicher sind diese Effekte in Bild 15b zu sehen. Aus diesem Grund ist die Anwendung der Mittelung höchstens einmal und dann auch nur bei Bildern für qualitative Verwendungen zu empfehlen.


5.6 Das Menü "Drucken"

Das Druck-Menü ermöglicht den Ausdruck von Intensitätsbildern, die in einem beliebigen Verzeichnis vorliegen. Dazu wird entsprechend Befehl verzweigt:

Befehl Verzweigung zum Unterprogramm
kleines Intensitätsbild "drucke" mit Parameter 1
mittleres Intensitätsbild "drucke" mit Parameter 2
großes Intensitätsbild "drucke" mit Parameter 3

In der SUB drucke, erfolgt ein Aufruf der SUB openStrahl, die dem Nutzer das Quellverzeichnis abfragt und nach einer Kontrolle, ob die Datenfiles dort vorhanden sind, diese öffnet bzw bei Fehlen eines erforderlichen Datenfiles (vgl. Kap.6.8) das Programm abbricht.

Ist das geschehen, schaltet "drucke" dem Bildschirm auf VGA-Auflösung und ruft die SUB intausgabe.lpt auf, die die eigentliche Ausgabe erledigt. In dieser SUB wird, nachdem die Parameterdatei gelesen und eine Bildüberschrift gedruckt wurde, die SUB Bild.prt aufgerufen, die das Intensitätsbild als Pseudo-Graustufenbild mit Hilfe eines Rasters auf dem Bildschirm in einem Fenster dargestellt. Dazu wird innerhalb zweier geschachtelter Schleifen über die Feldindizes die Intensität jedes Elementes gelesen und mit 16 multipliziert. Eine SELECT CASE-Anweisung ruft eine SUB printerx mit den Feldindizes als Parameter auf,wobei x der aufgerundeten Intensität entspricht. In dem Unterprogramm printerx bekommt jedes Element der auszugebenden Rasterdatei "raster.dat" ein 4*4-Pixelfeld zugeordnet. Da ein 4*4-Feld 16 Elemente enthält lassen sich damit 16 Graustufen unter Nutzung nur einer Farbe (der Druckfarbe des Schwarz-Weiß-Druckers) darstellen (Bild 16).

Rastermuster

Bild 16: Erzeugung einer Graustufenillusion durch Rastermuster

Der Aufruf der SUB printerx erzeugt also an der Stelle (4m, 4n) ein Pixelfeld mit x-Pixeln, dabei entspricht das rechte obere Pixel der Position (4m, 4n). Bei einem darzustellenden Rasterfeld von 101*101 Elementen hat das Ausgabebild die Größe 404*404 Pixel zuzüglich des Rahmens.

Ist das Bildschirmbild erzeugt, erfolgt innerhalb der SUB intausgabe.lpt der Aufruf der Bibliotheksroutiene hc24.klein, hc24.mittel oder hc24.gross (je nach Aufrufparameter aus Hauptprogramm), eine Hardcopy des Bildschirmes wird realisiert.

Daran anschließend folgt die Druckerausgabe der Daten der Parameterdatei. Damit ist die Druckerausgabe beendet.


6. Bedienungsanleitung

Das vorliegende Kapitel wendet sich an denjenigen Nutzter, der Wert auf die Verwendung des Programmes nicht aber auf seine innere Struktur legt.

6.1 Hardwarevoraussetzungen und Installation

Die Installation erfolgt mit Hilfe eines Installationsprogrammes (Batch-Datei) automatisch, kann aber auch von Hand durchgeführt werden.

Zur automatischen Installation, die nach C: erfolgt und eine freie Festplattenkapazität von 6 MB erfordert, lege man die Installationsdiskette in das Laufwerk A (oder B) und starte den Installationsvorgang mit

installa + <enter> ( oder installb + <enter> ).

Alle durchzuführenden Handlungen erfolgen automatisch, zum Diskettenwechsel wird der Nutzer an den entsprechenden Stellen aufgefordert.

Die Installation von Hand ist zu empfehlen, falls nicht alle Daten kopiert werden sollen, ein anderes Ziellaufwerk als C: gewünscht wird oder die Kapazität der Festplatte nicht ausreichend ist.

Dazu sind folgende Handlungen auszuführen:

  1. kopieren des Programmes "savpolif.exe" in ein beliebiges Zielverzeichnis
  2. falls gewünscht: kopieren des Programmes "savpolif.bas" (Quelltext zu "savpolif.exe") in ein beliebiges Zielverzeichnis
  3. erzeugen zweier beliebiger Zielverzeichnisse
  4. Datein "daten1.exe" von Diskette1 und "daten2.exe" von Diskette2 in je ein Verzeichnis kopieren (nicht zusammen in ein Verzeichnis)
  5. "daten1.exe" und "daten2.exe" starten, die Datenfiles entpacken sich
  6. "arc.bat" und "ice.exe" in beiden Verzeichnissen löschen, da diese nicht mehr benötigt werden
  7. Verzeichnis c:\savart\daten2 ergzeugen und mit dem DOS-Befehl RESTORE die Datei "daten2.exe" von den Sicherungsdisketten 1-4 erzeugen
  8. "daten2.exe" starten, die Datenfiles entpacken sich
  9. "arc.bat" und "ice.exe" löschen, da diese nicht mehr benötigt werden

Auflistung der Files auf den Disketten:

Diskette File Größe (entpackt) in Byte Bemerkungen
Installationsdiskette installa.bat 79 Batch-Datein
zur
Komplett-
Installation
installb.bat 79
insta.bat 653
instb.bat 653
savpolif.exe 242135 Programm
Quelltext
savpolif.bas 113686
Diskette 2 daten1.exe 980014 Datensätze 1-3 ohne *.exe,arc.bat und ohne ice.exe
Sicherungsdisk.1-4 daten2.exe 3675683
Diskette 7 daten3.exe 980126

Die Nutzung des Programmes "savpolif.exe" erfordert einen Computer mit VGA-Grafikkarte, -monitor und Festplatte, eine Maus ist nicht erforderlich.

Auf der Festplatte ist bei der Installation mit Beispieldaten eine Plattenkapazität von 6MB erforderlich ist. Die reine Verwendung des Programmes "savpolif.exe" ohne Komplettinstallation erfordert eine Speicherkapazität der Platte von 237 kB und ist möglich, der Direktstart von der Installationsdiskette auch. Allerdings ist ein Anlegen der Datenfelder auf Diskette nicht zu empfehlen (obwohl möglich), da durch die langen Zugriffszeiten die Berbeitungszeit ins Unendliche wächst.

Um keine lückenhaften Intensitätsbilder zu berechnen empfielt es sich, ca. 50000 bis 60000 Strahlen zu berechnen, der Speicherbedarf auf dem Zieldatenträger liegt dafür bei knapp einem Megabyte.

Die Rechenleistung auf einem Computer 386/40MHz ohne Coprozessor mit einer RAM-Disk als Zieldatenträger beträgt etwa 30000 Strahlen/Stunde, ein 486/33MHz-Copmuter ist um den Faktor sieben bis acht schneller.

Zur Erzielung günstiger Rechenleistungen empfielt es sich, eine RAM-Disk einzurichten. Das geschieht, indem in der autoexec.bat die Befehlszeile
C:\DOS\SMARTDRV.SYS x x...Größe des Laufwerkes in kB

oder besser in der config.sys die Befehlszeile
DEVICE[HIGH]=C:\DOS\SMARTDRV.SYS x x...Größe des Laufwerkes in kB

ergänzt wird. Sollte sich das File "smartdrv.sys" nicht in C:\DOS befinden, so ist der entsprechende Pfad einzusetzten. Die Laufwerksgröße richtet sich nach der Größe des beim Nutzer vorhandenen RAM, sollte aber mindetens 1024kB (=1MB) betragen.

Eine genauere Beschreibung von "SMARTDRIVE.SYS", DEVICE oder DEVICEHIGH befindet sich im DOS-Handbuch.


6.2 Übersicht

In der Kopfzeile der Programmoberfläche wird der Programmname und der Name des aktuellen Optikdatensatzes dargestellt. Die Optikdaten charakterisieren die durchzurechnende Optik. Sie enthalten die Scheitelabstände, die Krümmungen, die freien Durchmesser und die Dezentrierungen der einzelnen Flächen sowie die Brechzahlen zwischen ihnen, wobei die Daten des Richtungssensors (E in Bild 2, S.4) und die Wellenlänge fest im Programm integriert (nicht variabel) sind. Ihre Auflistung erfolgt im Kapitel 6.7 .

Nicht in den Optikdaten und somit nicht im Strahlverlauf enthalten ist der Strahlteiler (D in Bild 2, S.4), da sich die Spiegelung im Stahlteiler an ihrer Spiegelfläche aufklappen läßt und als Resultat eine einer Planplatte analoge Wirkung bleibt. Durch das Weglassen der Planplatte wird die Optik um vier brechende Flächen reduziert, was eine beträchtliche Rechenzeitersparnis zur Folge hat.

Durch Anwahl der Menüleiste mittels der <ALT>-Taste hat der Nutzer die Möglichkeit, aus vier Menüs die einzelnen Aktionen/Befehle auszuwählen und zu starten. Die Auswahl erfolgt mittels Cursortasten, die einen Auswahlbalken bewegen oder durch Drücken der Buchstabentaste, die dem hellen Buchstaben (Short-KEY) des gewünschten Menüs oder Befehls entspricht.

Im einzelnen besteht die Benotzeroberfläche aus folgenden Menüs:

Nachfolgend sollen die einzelnen Befehle in deren Reihenfolge erläutert werden.


6.3 Das Menü "Datei"

Der Befehl neu löscht die aktuell in Programm geladenen Optikdaten. Dabei wird der in der Kopfzeile stehende Name der Datensatz-Bezeichnung "Datensatz: Name" gelöscht und durch "Datensatz: keiner" ersetzt.

Die Befehle Optikdaten laden und Optikdaten speichern ermöglichen dem Nutzer einmal eingegebene Optikdatensätze zu speichern / laden. Nach Aufruf des Befehles Optikdaten laden erscheint das Bild 17.

Optikdaten laden

Bild 17: Anwahl einer Datei nach Aufruf von Datei-Optikdaten laden

Die zweite Zeile zeigt dabei das aktuelle Verzeichnis, im Bild 17 ist das C:\STRAHL.

In der darunter befindlichen Tabelle werden die im Verzeichnis enthaltenen Unterverzeichnisse in Großbuchstaben, die Datein in Kleinbuchstaben dargestellt. Standartmäßig erfogt beim Aufruf nur die Anzeige der Datein mit der Erweiterung ".opt", die die Optikdatensätze kennzeichnen. Das Auswählen einer Datei oder eines Verzeichnisses erfolgt mit den Cursor-Tasten, wobei sich ein Auswahlbalken über das Anzeigefeld bewegt. Die Bezeichnung ".." steht für das übergeordnete Verzeichnis, die Bezeichnungen "-A-", "-C-" usw. sind die Laufwerksbezeichnungen.

Durch Drücken der Taste <F2> kann man die Erweiterung, die die anzuzeigenden Datein auswählt, ändern. Es erscheint Bild 18 und fordert zur Angabe einer neuen Erweiterung auf. Als Erweiterung

Extensionwahl

Bild 18: Dialogfenster zur Änderung der Erweiterung

gelten drei Buchstaben, wobei die Verwendung von Fragezeichen als Buchstabenersatz zulässig ist. Ebenfalls zulässig ist die Erweiterung ".*" , dann werden alle Datein des Verzeichnisses angezeigt.

Nach Eingabe einer Erweiterung und Bestätigung mit <enter> oder durch Abbruch mittels <esc> beendet man die Funktion "Erweiterung ändern".

Drückt man die Funktionstaste <F3>, so kommt der Inhalt der angewählten Datei zur Anzeige. Ein Verlassen der Anzeige erfolgt mit <esc>.

Bei Anwahl des Befehles Optikdaten speichern erscheint ebenfalls das im Bild 17 Dargestellte. Zusätzlich öffnet sich ein Eingabefenster (Bild 19) und fordert zur Eingabe eines Filenamens auf.

speichern

Bild 19: Aufforderung zur Eingabe eines Namens in Datei-Optikdaten speichern

Zulässig ist jeder unter MS-DOS mögliche Name, die Erweiterung ".opt" wird automatisch ergänzt.

Macht sich ein Wechsel des Verzeichnisses erforderlich, aktiviert man mit <F2> das Verzeichnisschema (Bild 17) und wechselt wie oben erläutert. Die Eingabeaufforderung (Bild 19) erhält man mit <esc> zurück. Ebenfalls mit <esc> kann man die Gesamtfunktionen "Optikdaten laden" bzw. "Optikdaten speichern" verlassen.

Der Befehl Festdaten lesen lädt einen fest in das Programm integrierten Optikdatensatz, der der in Bild 8 gezeigten Grafik entspricht und die Systemdaten (Kap. 6.6) mit einschließt. Dieser Datensatz ist so gewählt, das bei Reflexion an Fläche 8 ein geeignet vielstreifiges Interferenzbild entsteht (vgl. auch Kap.5.3, SUB Festdaten). Nach Abschluß des Lesens erscheint kurz eine o.k.-Meldung.

Die im Datensatz enthaltenen Daten können jederzeit mit den Befehlen des Menüs "Bearbeiten" betrachtet oder verändert werden. Das Veränderung der Festdaten mit Bearbeiten-Optikdaten verändern hat keine Auswirkungen auf die fest im Programm integrieren Festdaten, die bei jedem Aufruf von "Festdaten lesen" neu gelesen werden.

Der Festdatensatz besteht aus folgenden Daten:

Anzahl der brechenden Flächen = 9
Datensatz-Name: Festdaten
Systemnummer = 888888

Flächennummern: 1-5 Fokussierobjektiv
6-9 zu untersuchende optische Flächen

Scheitelabstände vor den Flächen (in mm):
sa(1) = 10 sa(2) = 3.96 sa(3) = 29.297
sa(4) = 2.87 sa(5) = 11.08
sa(6) = 156.9 Bemerkung: 148.9 ist der fokussierte Abstand
sa(7) = 1.4 sa(8) = 6.9 sa(9) = 1.4

Krümmungsradien (in mm):
r(1) = 80.79 r(2) = 27.235 r(3) = 68.58
r(4) = 24.025 r(5) = -51.725 r(6) = 26.955
r(7) = 6.925 r(8) = -11.62 r(9) = 123.66

Dezentrierungen:
Flächenkippung(1...9) = 0°
Azimute(1...9) = 0°

Brechzahlen vor den Flächen:
bz(1) = 1 bz(2) = 1.65221 bz(3) = 1
bz(4) = 1.52928 bz(5) = 1.51859 bz(6) = 1
bz(7) = 1.58564 bz(8) = 1.435 bz(9) = 1.52928

Freie Durchmesser (in mm):
Freier Durchmesser(1) = 20,2 Freier Durchmesser(2) = 19,8
Freier Durchmesser(3) = 30,4 Freier Durchmesser(4) = 30,8
Freier Durchmesser(5) = 31,2 Freier Durchmesser(6) = 13,8
Freier Durchmesser(7) = 12,6 Freier Durchmesser(8) = 12,6
Freier Durchmesser(9) = 19,8

Der Befehl Verzeichnis erzeugen ermöglicht es dem Nutzer, in einem beliebigen Verzeichnis ein Unterverzeichnis zu erzeugen. Er entspricht dem MS-DOS-Befehl MD bzw. MKDIR.

Bei Anwahl des Befehles erscheint die Grafik nach Bild 17 und ermöglicht es, ein Verzeichnis auszuwählen, in dem das neue Verzeichnis erstellt werden soll. Nach erfolgter Anwahl verläßt man mit <esc> die Anwahlgrafik. Es erscheint ein Eingabefenster mit der Aufforderung, den Name für das neue Verzeichnis einzugeben. Die Eingabe bestätigt man mit <enter>, und das Verzeichnis wird erzeugt. Ein Abbruch des Befehles mit <esc> ist nicht möglich.

Die Beendigung des Programmes "savpolif.exe" erfolgt mit dem Befehl Ende, ist aber auch mit <esc> oder <alt> möglich.

Anmerkung 1999: Dieses Programm kann unter www.arnolds.de heruntergeladen werden. Der Einsatz ist zu Zwecken der Forschung und Lehre gestattet. Zur kommerziellen Nutzung kann eine Freigabe von Zeiss Jena erbeten werden. Ansprechpartner ist Dr. Dürselen duerselen@zeiss.de.


6.4 Das Menü "Bearbeiten"

beinhaltet alle Befehle, die der Veränderung einzelner Optikdaten dienen. Das sind im einzelnen:

Der Befehl Optikdaten neu dient der kompletten Neueingabe von Optikdaten. Ein vorheriges Ausführen von Datei-Neu ist dazu nicht erforderlich.

Nach Anwahl werden die Systemdaten (Kap. 6.7) automatisch geladen. Anschließend erfolgt eine Abfrage der einzelnen Daten in folgender Reihenfolge:

  1. Anzahl der optischen Flächen (ohne Systemflächen)?
    Die Frage bezieht sich auf die Flächen des Fokussierobjektives und des Prüflings.
  2. Name des optischen Systems?
    Dieser Name erscheint anschließend in der Kopfzeile als Datensatzname.
  3. Nummer des optischen Systems?
    Die Systemnummer erscheint mit jedem Ausgabebild und soll dem Nutzer als Ordnungskriterium dienen.
  4. Nummer der letzten Fläche des Fokussierobjektives?
    Die Strahldurchrechnung ist (Kap. 3) so ausgelegt, das nach Reflexion an der zu prüfenden Fläche bis einschließlich zur ersten Prüflingsfläche zurückgerechnet wird. Die Angabe der letzen Objektivfläche ist dazu erforderlich.
  5. Scheitelabstände (in mm) vor den Flächen in ihrer Reihenfolge
  6. Krümmungsradien (in mm) der Flächen in ihrer Reihenfolge
  7. Dezentrierungen (in Grad) der Flächen in ihrer Reihenfolge, dabei zuerst die Flächenkippungen, dann die Azimute

  8. Brechzahlen vor den Flächen in ihrer Reihenfolge
  9. freie Durchmesser der Flächen in ihrer Reihenfolge

Bei versehendlicher Anwahl des Befehles Optikdaten neu ist ein Abbruch dadurch möglich, daß man die Frage nach der Anzah der optischen Flächen unbeantwortet läßt und nur <enter> drückt. Der vorher aktuelle Datensatz bleibt dabei allerdings gelöscht.

Der Befehl Optikdaten kontrollieren listet die einzelnen Daten komplexweise in Fenstern auf. Im Bild 20 ist hierfür das Beispiel der Scheitelabstände der Festdaten zu sehen. Das Fenster bleibt

Bild 20: Beispiel für die Auflistung der Optikdaten

geöffnet, bis die Tasten <enter> für das nächste Datenfenster oder <esc> für einen Abbruch des Befehles betätigt werden.

Ruft man den Befehl Optikdaten verändern auf, so öffnen sich analog zum vorhergehenden Befehl die Datenfenster, um noch einmal die Daten betrachten zu können. Nach <enter> oder automatisch nach 5 Sekunden öffnet sich ein weiteres Fenster mit der Frage "Ändern (J/N)?", deren Beantwortung mit <enter> bestätigt werden muß. Beantwortet man die Frage mit N(ein), wird mit dem nächsten Datenfenster fortgesetzt, beantwortet man mit J(a), kann man ein Datum des
Komplexes ändern, wobei vorher natürlich die Flächennummer des zu ändernden Datums angegeben werden muß. Ein Abbrechen des Befehles ist nicht möglich.

In Ausführung des Befehls Savartplatte dezentrieren ergibt sich die Möglichkeit, die Savartsche Doppelplatte bis maximal 5° zu dezentrieren. Der Handlungsablauf ist übereinstimmend mit Bearbeiten-Optikdaten verändern und kann ebenfalls nicht abgebrochen werden.


6.5 Das Menü "Ausführen"

ist das eigentliche Arbeitsmenü des Programmes "savpolif.exe" und beinhaltet die Befehle

Die Auswahl des Befehles Strahlrechnung startet die Strahldurchrechnung und setzt einen geladenen Optikdatensatz voraus. Ist ein aktueller Datensatz vorhanden, fragt das Programm folgende noch benötigte Daten ab:

1. Radius des Ausgangsbündels in mm (mind. 0,1) ?
Gemeint ist damit der Radius des zur Startebene senkrecht verlaufenden, parallelen Lichtbündels, das den Ausgangspunkt der Strahldurchrechnung bildet.

2. Anzahl der Rasterungen des Radius'?
Zur Strahldurchrechnung muß das einfallende Lichtbündel in eine endliche Anzahl diskrete Strahlen aufgeteilt werden. Die Aufteilung erfolgt in Polarkoordinaten in der Startebene, wobei die hier abgefragte radiale Rasterzahl die Startebene vom mit dem Schwerstrahl des Bündels zusammenfallenden Koordinatenursprung bis zum Radius des Ausgangsbündels in Kreisringe gleicher Fläche und damit (bei geforderter Gleichverteilung der Intensität des Bündels über die Fläche) gleicher Intensität einteilt (Bild 10).

3. Anzahl der Rasterungen des äußeren Kreises, nur Zweierpotenzen möglich?
Die Antwort ist die azimutale Rasterzahl, die sich zwingend nur auf den äußeren Kreis bezieht. Die nach innen folgenden Kreise werden so gerastert, das die durch die Rasterung des äußeren Kreises vorgegebene Bogenlänge gerade nicht überschritten wird und das die Rasterzahl des jeweiligen Kreisringes eine Potenz von zwei ist. Das erhöht die Universalität des Programmes gegenüber späteren Erweiterungen und ermöglicht die Radialenausgabe (vgl. weiter unten), die nur möglich ist, wenn alle Kreisringe azimutale Rasterpunkte bei 45°, 90°, 135°, ..., 360° haben.

4. Grafische Ausgabe der Rasterung gewünscht (j/n), default=n?
Beantwortet man diese Frage mit J(a)+<enter>, so erfolgt eine Bildschirmausgabe der Rasterung des Ausgangsbündels wie sie in Bild 11 als Beispiel dargestellt ist. Gibt man N(ein)+<enter> oder nur <enter> ein, so erfolgt keine Ausgabe.

5. Nummer der reflektierenden Fläche?
Antwort ist die Flächennummer, an der die Reflexion erfolgen soll. Die Flächen werden dabei vom Objektivanfang an gezählt.

6. Ausgabe als Kreisringe, Punkte, Intensitätsbild oder Radiale (K, P, I, R)?
Die Beantwortung dieser Frage entscheidet über die Ausgabeart. Dabei werden alle Kreisringe als Polygonkreise über die einzelnen Punkte, die Auftreffpunkte der Strahlen in der Empfängerfläche, ein Intensitätsbild (wie es in der Schirmebene des entsprechenden Interferometers zu sehen wäre) oder ein Radialenbild bestehend aus 8 Radialen (Bild 13) über alle Radialenpunkte dargestellt.

7. Ausgabe auf Randstrahl oder Empfängerfläche dimensionieren (R/E)?
Die Größe der Empfängerfläche beträgt standartmäßig 120mm*120mm und liegt symmetrisch zur Systemachse in der Empfängerebene. Beantwortet man die Frage mit E(mpfängerfläche), wird dieser Standartwert genutzt, antwortet man mit R(andstrahl), so erfolgt eine Umdimensionierung der Empfängerfläche in der Größe, das der in einer kartesischen Achsrichtung am weitesten vom Ursprung entfernte Strahl die Größe der Empfängerfläche festlegt. Die Empfängerfläche bleibt dabei in jedem Falle symmetrisch zur Systemachse.

8. In welchem Verzeichnis sollen die Datenfelder angelegt werden? Bitte in das entsprechende Verzeichnis wechseln und <esc> drücken. Da die Datenfelder infolge Ihrer Größe nicht im Arbeitsspeicher direkt verwaltet werden können, erfolgt die Datenauslagerung auf ein externes Speichermedium (z.B. Festplatte). Aus Zeitgründen wird hier die Verwendung einer RAM-Disk empfohlen. Die Auswahl der Datenfelder erfolgt nach dem in Datei-Optikdaten laden erläuterten Prinzip.

Die Abfrage aller Daten erfolgt bewußt am Anfang der Strahldurchrechnung, da diese je nach Umfang und vorhandener Hardware mehrere Stunden in Anspruch nehmen kann. Während der gesamten Zeit sind keine weiteren Eingaben erforderlich, der Nutzer kann sich anderen Aufgaben widmen.

Im Verlaufe der Rechnung, die nun beginnt, werden ständig Informationen über die Abarbeitung des Programmes gegeben. Der Nutzer ist damit jederzeit in der Lage abzuschätzen, wie lang die Rechnung noch dauern wird.

Ist die Durchrechnung der Strahlen beendet findet (falls gewünscht) die Umdimensionierung der Empfängerfläche statt, ihre neue Größe kommt zur Ausgabe. Die sich anschließendeErzeugung eines Bildpunktrasters zur Intensitätsbildausgabe, die Konvertierung der Strahlen in dieses Raster und die Normierung des Rasters erfolgen unabhängig von der Ausgabeart.

Das Endbild der Berechnung wird mit den verwendeten Parametern zusammen dargestellt und bleibt bestehen, bis die Taste <enter> betätigt wird.

Der Aufruf des Befehles Intensitätsbild gestattet die Betrachtung eines bereits früher berechneten Intensitätsbildes einschließlich der dazu gehörigen Parameter. Zur Anwahl des Verzeichnisse erscheint eine dem Bild 17 entsprechende Grafik, die Anwahl erfolgt in der dort beschriebenen Art und Weise. Ist man in das gewünschte Verzeichnis gewechselt, verläßt man die Grafik mit <esc>. Der Aufbau des Intensitätsbildes beginnt und kann mit <esc> abgebrochen werden.

Die Aufrufe der Befehle Gesamt-Phasendifferenzbild und mod2p-Phasen-differenzbild sind in ihrer Handhabung übereinstimmend mit dem Befehl Intensitätsbild.

Beim Gesamtphasendifferenzbild werden die Phasen folgendermaßen dargestellt:
Grün: Phasendifferenz größer Null
Blau: Phasendifferenz kleiner Null
Schwarz: -0,1 < Phasendifferenz < +0,1
Farbgrenzen: bei +/-0.1 ; +/-4 ; +/-8 ; +/-12 ; +/-16 usw.

Wurde das mod2p-Phasendifferenzbild gewählt, erfolgt die Darstellung so:
Grün: Phasendifferenz größer Null
Blau: Phasendifferenz kleiner Null
Schwarz: |Phasendifferenz| < 0.1
Ausgabe: modula 2p bei einem Ausgabeintervall -p < 0 <= p

Der Befehl Mittelung hat die Aufgabe, das Intensitätsrasterfeld mit einem 3*3-Filter zu mitteln. Das ist oft ratsam, da durch die Transformation der Polkoordinaten zu kartesischen Koordinaten in der Startebene der Strahldurchrechnung und der Konvertierung der (x, y)-Koordinaten in die Rasterkoordinaten in der Empfänger-ebene eine Feinstruktur (Bild 13) entsteht, die nicht dem physikalischen Sachverhalt entspricht.

Die Mittelung erfolgt direkt im Datenfeld und ist nicht reversilel. Deshalb steht an erster Stelle eine Sicherheitsabfrage, ob die Mittelung durchgeführt werden soll. Nur nach Betätigung der J(a)-Taste wird dem Nutzer das zu mittelnde Verzeichnis analog zu Ausführen-Intensitätsbild abgefragt, und die Mittelung beginnt. Ein Abbruch ist mit <esc> möglich, jedoch werden dann nur teilweise gemittelte Datenfelder hinterlssen. Deshalb wurde dem Abbruch noch eine zusätzliche Sicherheitsabfrage vorangestellt.

Genauere Angaben über den Mittelungsprozeß befinden sich in Kapitel 5.5.4.


6.6 Das Menü "Drucken"

Das Menü "Drucken" gestattet es mit seinen Befehlen

eine Druckerausgabe berechneter Intensitätsbilder zu realisieren.

Bei Anwahl einer der Befehle wird dem Nutzer das Quellverzeichnis seiner Daten abgefragt, das entsprechende Intensitätsbild prinzipbedingt auf dem Bildschirm erzeugt und an den Drucker ausgegeben. Zur Ausgabe gelangt dabei ein kleines, mittleres oder großes Bild, je nachdem welcher Befehl ausgewählt wurde. Bis auf die Größe identische Beispiele einer solchen Ausgabe befinden sich im Anhang 3. Die zur Berechnung verwendeten Parameter werden ebenfalls abgedruckt.

Als Drucker eignet sich ein epsonkompatibeler 24-Nadeldrucker, auf Sonderwunsch ist die Unterstützung einesHP Deskjet 500 oder NEC-P60 möglich. Über die Verwendungsmöglichkeit anderer Drucker kann keine Aussage getroffen werden.


6.7 Die Systemdaten

Die in allen Datensätzen enthaltenen Systemdaten sind:

Konstanten:
l = 632,8 nm Wellenlänge des Lichtes (He-Ne-Laser)
odentliche u. außerordentliche Brechzahl der Savartplatte
no = 1.54295 gilt für Quarz bei 633nm
ne = 1.55202 gilt für Quarz bei 633nm

Flächennummern:
0,1 Polarisator
2,3 Savartplatte (ohne Mittelfläche)
4,5 l/4 - Platte
6,7 Analysator
8 Schirmebene

Scheitelabstände vor den Flächen (in mm):
sa(0) = 100 sa(1) = 5 sa(2) = 20
sa(3) = 2 Bemerkung: Savartplattendicke
sa(4) = 20 sa(5) = 5 sa(6) = 20
sa(7) = 5 sa(8) = 100

Krümmungen = 1 / Krümmungsradien (in mm)
r(1...8) = 0 (alles Planflächen)

Dezentrierungen:

Flächenkippung(1...8) = 0°

Azimute(1...8) = 0°

Brechzahlen vor den Flächen:
bz(0) = 1 bz(1) = 1.6 bz(2) = 1
bz(3) = (no + ne) / 2 Bem.: Näherung zur Einsparung von Rechenzeit
bz(4) = 1 bz(5) = 1.6 bz(6) = 1
bz(7) = 1.6 bz(8) = 1

Freie Durchmesser: alle 240 mm


6.8 Bemerkungen zu den Datenfeldern

Die Optikdatensätze werden bei Speicherung mit der Erweiterung ".opt" versehen. Ihre Verwaltung stellt keine besonderen Anforderungen.

Die Datensätze der Strahldurchrechnung benötigen im Gegensatz zu den Optikdaten eigene Verzeichnisse auf dem Speichermedium.

Jeder Strahl-Datensatz benötigt ein Verzeichnis!

Beim Versuch nach Anwahl von Ausführen-Strahlrechnung einen Datensatz in einem Verzeichnis anzulegen, das schon Strahl-Daten enthält, werden die vorhandenen (alten) Strahl-Daten gelöscht.

Der Strahldatensatz besteht aus den Dateien

Die Datei "phraster.dat" wird beim erstmaligen Aufruf eines Phasendifferenzbildes aud dem Menü "Ausführen" erzeugt, die anderen Dateien bei der Strahldurchrechnung.

Die einzelnen Strahl-Datein haben nachfolgend beschriebene Inhalte.
Datei Inhalt
xkoord.dat x-Koordinaten der Schittpunkte der Strahlen mit der Empfängerfläche
ykoord.dat y-Koordinaten der Schittpunkte der Strahlen mit der Empfängerfläche
delta.dat Phasendifferenzen, die an der Savartplatte erzeugt werden
inull.dat Intensitäten der Strahlen im Schnittpunkt mit der Empfängerfläche
paramet.dat zur Durchrechnung verwendete Parameter (z.B. Rasterzahlen)
raster.dat Bildpunktraster der Empfängerfläche mit Intensitätsdaten
phraster.dat Bildpunktraster der Empfängerfläche mit Phasendaten

Zur Realisierung der einzelnen Aktivitäten müssen folgende Datensätze zur Verfügung stehen:
Aktivitat Datensätze
Intensitätsbild paramet.dat; raster.dat
Phasendiff.bild paramet.dat; phraster.dat oder xkoord.dat, ykoord.dat, delta.dat
Drucken, alle paramet.dat; raster.dat
Mittelung paramet.dat; raster.dat


7.Literaturverzeichnis

[1] Hofman, Ch. Dezentrierte Optik
Jenaer Jahrbuch 1969/70, S.111-150,
VEB Gustav Fischer Verlag Jena, Jena 1970
[2] Hofmann, Ch. Die optische Abbildung
Akademische Verlagsgesellschaft
Geest & Portig K.-G., Leipzig 1980
[3] Hofman, Ch. Definition und Messung der Dezentrierungen sphärischer Einzellinsen
Experimentelle Technik der Physik, Heft 4, S. 145-183
Deutscher Verlag der Wissenschaften, Berlin 1960
[4] Hofman, Ch. Eine neue Definition der Dezentrierungen sphärischer Einzellinsen
Optik 17, Band 1960, S. 465-484
Wissenschaftliche Verlagsgesellschaft mbH, Stuttgart 1960
[5] Hofman, Ch. Zentrierfehler und Dezentrierungsmessungen
Optik 19, Band 1962, S. 41-55
Wissenschaftliche Verlagsgesellschaft mbH, Stuttgart 1962
[6] Haferkorn, H.
Tautz, V.
Strahl- und Wellenflächendurchrechnung an
dezentrierten optischen Systemen
Wissenschaftliche Zeitung der TH Ilmenau, Nr. 25 (1979), Heft 3
[7] Gärtner
Hofmann
Bestimmung von Inhomogenitäten
Feingerätetechnik 22 (1973), S. 182ff
[8] Merkel Ein Polarisationsshearinginterferometer zur Messung der Modulationsübertragungsfunktion
Dissertation, Jena, Friedrich-Schiller-Universität, Sektion Technologie, 1978
[9] Wolf, H. Spannungsoptik
Springer - Verlag, Berlin/Göttingen/Heidelberg 1961
[10] Flynn, P. D. Theorems For Senarmont Compensation
Exp. Mech. (Aug.70), S. 343-345
[11] Rath, R. Theoretische Grundlagen der allgemeinen Kristalldiagnose im durchfallenden Licht
Springer - Verlag, Berlin/Heidelberg/New York 1969
[12] Arnold, R. Bericht über die Absolvierung eines Betriebspraktikums bei der Jenoptik Carl Zeiss Jena GmbH
Jena 1991



Mail an Autor / to author