FLDX. FLDY. FWGT. FVDX. FVDY. FVCX. FVCY

Назначение:

FLDX и FLDY используются для изменения позиций поля; FWGT используется для изменения весового коэффициента поля. FVDX и FVDY служат для изменения (виньетирующих) коэффициентов децентрировки по осям х и у. FVCX и FVCY служат для изменения (виньетирующих) коэффициентов сжатия зрачка по осям х и у.

Синтаксис:

FLDX(номер_поля) =      (новое_значение)

FLDY(номер поля) =     (новое значение)

FWGT(номер_поля) =     (новое_значение)

FVDX(номер_поля) =     (новое_значение)

FVDY(номер_поля) =     (новое_значение)

FVCX(номер поля) =     (новое значение)

FVCY(номер_поля) ==   (новое_значение)

Обсуждение:

Эти ключевые слова требуют два выражения: одно - для задания номера поля и другое - для определения нового значения. Выражение номер поля оценивается и округляется с понижением до целого для получения номера поля. Если полученный номер поля будет меньше 1 или больше числа заданных в схеме полей, то команда игнорируется; в других случаях данному номеру поля присваивается новое значение. Так как координаты лучей и величины полудиаметров поверхностей изменяются с изменениями полей, рекомендуется после задания новых полей использовать команду UPDATE.

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-19


Пример:

FLDX 1 = 0.0

FLDY 1 = 12.5

FWGT 1 = 1.0

Родственные функции:

FLDX, FLDY, FWGT, MAXF, FTYP, FVDX, FVDY, FVCX, FVCY

Связанные ключевые слова:

UPDATE, FTYP                                                        


FOR.NEXT

Назначение:

Ключевые слова FOR и NEXT определяют блок программы, выполняемой в цикле установленное число раз.

Синтаксис:

FOR variable = начальное значение/конечное значение,шаг переменной NEXT

Обсуждение:

Ключевое слово FOR обозначает начало группы операций, которая должна быть выполнена в цикле заданное число раз. FOR требует введения переменной, играющей роль счетчика повторений; начального значения; конечного значения и шага изменения переменной. Слово NEXT служит для обозначения конца группы операций. Циклы FOR-NEXT могут быть встроенными друг в друга. Количество операторов FOR и NEXT должны быть равными.

J

По команде FOR выражения, определяющие начальное и конечное значения, а также шаг переменной вычисляются и записываются в память. Выражения конечное_значение и шаг_переменной больше не пересчитываются, если даже значение переменной изменяется в пределах цикла программы. Используются только те значения, которые были заданы в начале цикла (при операторе FOR).

Если начальное и конечные значения переменной равны между собой, то цикл выполняется только один раз. Если начальное значение переменной меньше ее конечного значения, то выполнение цикла продолжается до тех пор, пока значение переменной не станет больше ее конечного значения. Если начальное значение переменной больше ее конечного значения, то выполнение цикла продолжается до тех пор, пока значение переменной не станет меньше ее конечного значения.

Пример:

FOR i = 1, 25, 1

PRINT i

 NEXT

J = 5

k = 0

FOR i = j, j + 5, 2

k = i + j + k

NEXT

24 -20                                                                Chapter 24: ZEMAX PROGRAMMING LANGUAGE



FORMAT

Назначение:

Для последующей команды PRINT определяет формат числа при печати.

Синтаксис:

FORMAT m.n [ЕХР]

Обсуждение:

Целые числа тип разделяются десятичной точкой. Значение m определяет полное число печатаемых знаков, включая пробелы. Значение п определяет число знаков, высвечиваемых после десятичной точки. Поэтому, если установить FORMAT 8.4, то после последующей команды PRINT будет печататься число, состоящее из 8 знаков, четыре из которых будут расположены после десятичной точки. FORMAT.5 по команде PRINT покажет 5 десятичных знаков, а всего знаков будет столько, сколько требуется Команда FORMAT относится только к числовым данным, выводимым на печать командой PRINT. Если (высвечиваемое) число является слишком большим, чтобы уложиться в m знаков, то установленное число m просто игнорируется. Дополнительное ключевое слово ЕХР, записанное после выражения m.n означает, что число должно быть записано в экспоненциальной форме.

Пример:

х = 1.123

FORMAT 12.0

PRINT "An integer portion=”, x

FORMAT 12.8

PRINT "A decimal portion = ", x

FORMAT 12.8 ЕХР

PRINT "Exponential notation = ", x

FTYP

Назначение:

FTYP используется для изменения способа задания поля: с помощью углов (в граду­сах), с помощью высот объекта или с помощью высот изображения.

Синтаксис:

FTYP = (новое_значение)

Обсуждение:

В качестве нового значения должны быть использованы числа 0, 1 или 2. Для установки поля в градусах используется число 0, для установки поля в высотах объекта (в принятых линейных единицах) - число 1, для установки поля в высотах изображения (в принятых линейных единицах) - число 2. С установкой нового способа задания поля величины поля не изменяются и не происходит обновления системы. Обычно величины поля должны уточняться с помощью ключевых слов FLDX и FLDY всякий раз, когда производится изменение способа задания поля.

Родственные функции:

FLDX, FLDY, FWGT, MAXF

Связанные ключевые слова:

UPDATE, FLDX, FLDY, FWGT

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                         24-21



GDATE

Назначение:

GDATE печатает текущую календарную дату под именем схемы в текстовой рамке созданного пользователем графического окна.

Синтаксис:

GDATE

Обсуждение:

GDATE в основном используется для того, чтобы созданный вами график имел такой же вид, как все другие графики ZEMAX.

Пример:

Смотри описание и пример GRAPHICS.

GETEXTRADATA

Назначение:

Извлечение внешних данных из редактора Extra data editor. Данные помещаются в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETEXTRADATA номер_матрицы,номер_поверхности

Обсуждение:

Данные записываются в матрицу VECn. Например, по команде GETEXTRADATA 1, 5 внешние данные для поверхности 5 будут помещены в матрицу VEC1, Данные записываются в следующем формате (первые числа в каждой строке обозначают позицию в матрице):

0 Число внешних данных в матрице

1  Первое значение внешних данных

n n-ое значение внешних данных

Смотри главу "Surface Types", в которой дано описание внешних данных.

GETGLASSDATA

Назначение:

Извлечение данных для какого-либо стекла из текущего каталога. Данные помеща­ются в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETGLASSDATA номер_матрицы, порядковый номер стекла

Обсуждение:

Данные записываются в указанную матрицу VECn. Например, по команде GETGLASSDATA 1, 32 данные для стекла номер 32 будут помещены в матрицу VEC1. Порядковый номер стекла в каталоге можно определить с помощью функции GNUM. Данные записываются в следующем формате (первые числа в каждой линии обозначают позицию в матрице):

0: Число данных, записанных в матрицу.

 1: Номер формулы: 1- для Schott, 2 - для Sellmeie1,

    3 - для Herzberger, 4 - для Sellmeier2, 5 - для Conrady.

24 -22                                                     Chapter 24: ZEMAX PROGRAMMING LANGUAGE


2: mil-число (обозначение стекла шестизначным числом).

3: Nd

4: Vd

5: Коэфф. теплового расширения для диапазона от -30 до +70 С.

6: Коэфф. теплового расширения для диапазона от +20 до 300 С.

7: Плотность в г/см3.

8: Отклонение Рg,F (ΔРg,F) от нормальной прямой.

9: Минимальная длина волны.

10: Максимальная длина волны.

11-16: Коэффициенты дисперсионной формулы (зависят от вида формулы)

17-22: Тепловые коэффициенты дисперсии.


GETMTF

Назначение:

Для текущей (загруженной) схемы вычисляет МПФ для меридиональной и сагит­тальной плоскостей, действительную часть, мнимую часть, фазу, МПФ для прямоугольной решетки и помещает данные в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETMTF частота, волна, поле, отсчеты, вектор, тип

Обсуждение:

Частота - желаемая пространственная частота в единицах «пар линий на милли­метр»; если частота меньше нуля или больше частоты среза, то результат GETMTF будет равен нулю.

Волна - целое число, соответствующее номеру длины волны, для которой должны быть выполнены вычисления (число 0 означает, что вычисляются полихроматические значения).

Поле - целое число, соответствующие номеру поля для которого должны быть выполнены вычисления (целые числа должны находиться в пределах от 1 до максимального номера поля).

Отсчеты - могут принимать значения: 1 для плотности (32х32), 2 - (64х64), 3 -(128х128), и так далее до 2048х2048.

Вектор - должен быть целым числом от 1 до 4, определяющим номер векторной матрицы, в которую должны быть записаны результаты вычислений. Тип - определяет тип данных, которые должны быть вычислены: 1 - для МПФ, 2 -для действительной части, 3 - для мнимой части, 4 - для фазы в радианах, 5 - для МПФ для прямоугольной решетки. Если значение одного из аргументов попадает за пределы допустимой области изменений, то используется ближайшее приемлемое значение!

Данные помещаются в одну из векторных матриц в следующем формате (первое число в строке - положение в матрице):

0: результат в меридиональном сечении;

1: результат в сагиттальном сечении.

Пример:

! Этот макрос вычисляет МПФ текущей схемы:

! полихроматическую;

! для меридионального и сагиттального сечений;

! для частоты 30 (пар) линий на мм;

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                        24-23


! для максимального из заданных полей

! при размере сетки отсчетов 32х32 (отсчеты=1);

! данные будут помещены в векторную матрицу 1.

! Все, что требуется для получения этих данных:

GETMTF 30, 0, NFLD(), 1, 1, 1

PRINT "Tangential response: ", vec1(0)

PRINT "Sagittal response: ", vec1(1)


GETPSF

Назначение:

Для текущей загруженной схемы вычисляет дифракционную ФРТ и помещает данные в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETPSF волна, поле, отсчеты, вектор

Обсуждение:

Волна - целое число, соответствующее номеру длины волны, для которой должны быть выполнены вычисления (число 0 означает, что вычисляются полихроматические значения).

Поле - целое число, соответствующие номеру поля, для которого должны быть выполнены вычисления (целые числа должны находиться в пределах от 1 до макси­мального номера поля).

Отсчеты - могут принимать значения: 1 для плотности (32х32), 2 - (64х64), 3 -(128х128), и так далее до 2048х2048.

Вектор - должен быть целым числом от 1 до 4, определяющим номер векторной матрицы, в которую должны быть записаны результаты вычислений.

Если значение одного из аргументов попадает за пределы допустимой области изменений, то используется ближайшее приемлемое значение!

Данные вычислений помещаются в одну из векторных матрица следующем формате:

Позиция 0: общее число выборок (отсчетов) ФРТ в векторной матрице. Обычно это число равно 4 х n х n, где n - размер сетки отсчетов (32, 64, и т.д.). Например, если плотность отсчетов определена числом 2, сетка на зрачке будет иметь размер 64х64, и матрица будет содержать 128х128, или 16384 значений; это потребует 8 байт на выборку, или всего 131 кБ. Плотность отсчетов 1024 потребует по меньшей мере 8 Мб только для матрицы; еще 64 Мб или больше потребуются для вычисления ФРТ. Позиция 0 используется также для индикации ошибок: если в позиции 0 появляется число 0, то это означает, что вычисления были прерваны, если появляется число -1 -размер векторной матрицы недостаточен для помещения в нее всех значений. В последнем случае используйте команду SETVECSIZE для увеличения размера матрицы. Если в позиции 0 появляется число -2, то это означает, что в компьютере не хватает оперативной памяти (RAM) для вычисления ФРТ.

В позициях от 1 до (4хnхn) записываются данные об (интенсивности) ФРТ, нормированные к единице. Первые n значений соответствуют первому ряду сетки отсчетов, идущему слева направо от -х до +х; каждый следующий блок n значений соответствует следующему, идущему от +у к -у, ряду в сетке отсчетов. В позицию (4 х n х n + 1) записывается линейное расстояние между отсчетами в микронах!

24 -24                                                     Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Пример:

! Этот макрос вычисляет ФРТ (PSF) для текущей (загруженной) схемы:

! полихроматическую;

! для первого из определенных полей,

! с размером сетки отсчетов 32х32 (отсчеты=1);

! данные будут помещены в векторную матрицу 1.

SETVECSIZE 4500

GETPSF 0, 1, 1, 1

np = vec 1 (0)

IF (np == 0)

          PRINT "PSF Computation aborted."

          GOTO 1

ENDIF

IF (np == -1)

          PRINT "SETVECSIZE too small for PSF data."

          GOTO 1

ENDIF

IF (np == -2)

         PRINT "Not enough system RAM for PSF data."

         GOTO 1

ENDIF

PRINT "There are ", np, "data points, spaced ",

                                     vecl(np+l), " microns араrt.”

LABEL 1


GETSYSTEMDATA

Назначение:

Извлекает большинство характерных для системы данных, таких как эффективная фокальная длина, рабочее F/число, факторы аподизации и другие данные, не относящиеся к отдельным поверхностям. Данные помещаются в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETSYSTEMDATA номер_векторной_матрицы

Обсуждение:

Данные записываются в указанную векторную матрицу VECn: например, если дана команда GETSYSTEMDATA 1, то данные системы будут записаны в векторную матрицу VEC1. Данные записываются в следующем формате (первое число в строке обозначает номер позиции в матрице):

0:  Количество записанных данных

1:  Величина апертуры системы

2:  Фактор аподизации

3:  Тип аподизации (0 - нет аподизации, 1 - гауссовская, 2 - тангенциальная)

4:  Использование данных об окружающей среде (1, если да; 0, если нет)

5:  Температура в градусах Цельсия (выводится только при использовании

данных об окружающей среде)

6:  Давление в атмосферах (выводится только при использовании данных об

окружающей среде)

7:  Эффективная фокальная длина

8:  F/# в пространстве изображений

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                        24-25


9:            Числовая апертура в пространстве объектов

10:          Рабочее F/#

11:          Диаметр входного зрачка

12:          Положение входного зрачка

13:          Диаметр выходного зрачка

14:          Положение выходного зрачка

15:          Параксиальная высота изображения

16:          Параксиальное увеличение

17:          Угловое увеличение

18:          Полная длина

19:          Использование Ray Aiming (1, если да; 0, если нет)

20:          Смещение зрачка по оси Х

21:          Смещение зрачка по оси Y

22:          Смещение зрачка по оси Z

23:          Номер поверхности, на которой расположена апертура системы


GETVARDATA

Назначение:

Извлекает число, тип и значение всех переменных параметров оптимизации. Помещает данные в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETVARDATA номер_векторной матрицы

Обсуждение:

Данные записываются в указанную векторную матрицу VECn: например, если дана команда GETVARDATA 1, то данные системы будут записаны в векторную матрицу VEC1. Данные записываются в следующем формате (первое число в строке обозначает номер позиции в матрице):

0:   n, число переменных

1:   код типа первой переменной

2:   идентификационный номер первой переменной

3:      значение первой переменной

3*q -2: тип кода q-ой переменной

3*q -1: идентификационный номер q-ой переменной

3*q: значение q-ой переменной

Числа q идут от 1 до n, где n - номер переменной. Если n равно нулю, то данные не выводятся! Позиции матрицы 0 и n действуют во всех случаях. Коды типов переменных приведены в нижеследующей таблице.

                                            GETVARDATA TYPE AND ID CODES

                          КОДЫ И ИДЕНТИФИКАЦИОННЫЕ НОМЕРА ПЕРЕМЕННЫХ

 

Тип переменной   Код   Идентификационный номер  
Кривизна   1   номер поверхности  
Толщина   2   номер поверхности  
Коническая постоянная   3   номер поверхности  
Параметры 1-8   4-11   номер поверхности  
Показатель преломления Nd   12   номер поверхности  
Число Аббе Vd   13   номер поверхности  

 

24-26                                                       Chapter 24: ZEMAX PROGRAMMING LANGUAGE


Тип переменной   Код   Идентификационный номер  
Частная дисперсия ΔPq,F   14   номер поверхности  
Внешние данные 1 - 200   15-214   номер поверхности  
Коэффициент теплового расширения (ТСЕ)   215   номер поверхности  
Мультиконфигурационный оператор i в конфигурации j   300+i   300+j  

 

GETZERNIKE

Назначение:

Вычисляет коэффициенты полинома Цернике для текущей (загруженной) схемы и помещает данные в одну из матриц переменных (VEC1, VEC2, VEC3 или VEC4).

Синтаксис:

GETZERNIKE порядок, волна, поле, отсчеты, вектор

Обсуждение:

Порядок - любое число между 4 и 36, определяющее требуемый наивысший

порядок полинома Цернике.

Волна и Поле - целые числа, соответствующие номеру длины волны и номеру

поля.

Отсчеты - определяет размер сетки, по которой производится подгонка

коэффициентов; значение этого аргумента может быть 1 (32х32), 2 (64х64), и так

далее до 2048х2048.

Вектор - значение этого аргумента должно быть целым числом от 1 до 4,

определяющим, в какую векторную матрицу должны быть помещены вычисленные

данные.

Если значение какого-либо из аргументов выходит за допустимые пределы, то принимается ближайшее допустимое значение!

Данные помещаются в указанную матрицу в следующем формате:

Позиция 1: величина "Peak to valley" в волнах;

Позиция 2: СКЗ (относительно нулевого значения) в волнах;

Позиция 3: СКЗ (относительно среднего значения) в волнах;

Позиция 4: СКЗ (относительно центра тяжести) в волнах;

Позиция 5: дисперсия в волнах;

Позиция 6: число Штреля;

Позиция 7: СКЗ ошибки подгонки в волнах;

Позиция 8: Максимальная ошибка подгонки (при какой-либо одной точке) в волнах. Остальные позиции векторной матрицы содержат вычисленные коэффициенты Цернике: например, значение коэффициента нулевого члена Цернике помещается в позицию 9, 1-го члена - в позицию 10, и так далее.

Пример:

! Этот макрос вычисляет первые 8 коэффициентов Цернике

! для текущей загруженной схемы

! для 1-ой длины волны,

! 3-го поля,

! при плотности сетки отсчетов 32х32;

Глава 24: ЯЗЫК ПРОГРАММИРОВАНИЯ ZEMAX                                                          24-27


! вычисленные коэффициенты будут помещены в векторную матрицу VEC1.

Сначала задаем:

GETZERNIKE 8, 1, 3, 1, 1

! Теперь выводим данные на печать:

FORMAT 16.6

 

PRINT   "Peak   to   Valley   : ”, ^….:: vecl   (1)  
PRINT   "RMS   to   zero   : ”,   vecl   (2)  
PRINT   "RMS   to   mean   : ”,   vecl   (3)  
PRINT   "RMS   to   centroid   : ”, r   vecl   (4)  
PRINT  

"Variance

 

: ”,   vecl   (5)  
PRINT  

"Strehl

 

ratio   : ”,   vecl   (6)  
PRINT   "RMS   Fit   Error   : ”,   vecl   (7)  
PRINT  

"Maximum

 

Fit Error   : ”,   vecl   (8888888888888888888888888)  
i = 0          

 

 

       

 

                                label 1

                                           FORMAT 2.0

                                            PRINT "Zernike #"', i, "=",

            FORMAT 16.6

            PRINT vec1(9+i)

             i = i + 1

if (i<9) THEN GOTO 1

PRINT "All Done!"



GLAS

Назначение:

Используется для установки какой-либо марки стекла на указанную поверхность.

Синтаксис:

GLAS (поверхность) = (номер стекла)

GLAS (поверхность) = glass$

Обсуждение:

Это ключевое слово требует двух выражений: одно для определения номера поверх­ности и другое для определения порядкового номера стекла в каталоге. Если указан номер стекла -1, то устанавливается зеркальная поверхность (mirror); если указан номер стекла 0, то стекло не устанавливается (то есть принимается показатель преломления равный 1). Во всех других случаях номер стекла должен находиться между 1 и числом, которое выводится командой MAXG (полное число стекол в каталоге). Команда GLAS позволяет также использовать строчную переменную, которая содержит имя нужного стекла, такое как "ВК7".

Пример:

GLAS 3 = MAXG ()

А$ = "ВК7"

GLAS 4 = GNUM(A$)

GLAS 4 = А$

Связанныеслова:

UPDATE

24-28                                                      Chapter 24: ZEMAX PROGRAMMING LANGUAGE



GLENSNAME

Назначение:

Команда GLENSNAME помещает имя текущей схемы в левый верхний угол текстовой рамки созданного вами графического окна.

Синтаксис:

GLENSNAME

Обсуждение:

Команда GLENSNAME в основном используется для того, чтобы ваш график выглядел подобно другим графикам ZEMAX.

Пример:

Смотри раздел GRAFICS.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: