Оптические системы, Турбо бейсик и всё остальное

Дмитрий Маштаков
                расчёт оптических систем методом Монте-Карло

ПРО НАС

   Всё остальное - это наша лаборатория, вы можете видеть нас на снимках. Саша, Володя, и я сам - справа около стенда, закручиваю винтик. Чуть повыше моей руки, на боку - узенькая коробочка с чёрным отверстием спереди.
   В рабочем положении коробочка ( лазерно оптический блок называется) закреплена на щелевой лампе, а в отверстие вставлена трубочка с линзами, и врач офтальмолог фокусирует красное излучение лазера-пилота на радужную оболочку глаза больного глаукомой, и нажимает на педаль. Невидимое лазерное излучение с длиной волны 1064 нм (так называемое "чёрное" излучение ) фокусируется чуть дальше красной метки - как раз внутри толщи радужки, там возникает малюсенькая искорка-плазма. Микровзрыв проделывает отверстие в радужной оболочке. Отток внутриглазной жидкости из заднего отдела глаза увеличивается, а внутриглазное давление снижается. Возможно на долгие годы проблем с ним не будет.
   В 40% случаев после имплантации искусственного хрусталика, а вы знаете, что эта операция широко распространена, позади искусственного хрусталика мутнеет капсула глаза. Удалить капсулу и закрепить искусственный хрусталик без неё никак нельзя, он попросту вывалится. Это потом, когда он немного прирастёт, помутневшую капсулу можно разрушить. И делается это тоже лазерным излучением.

ЗАЧЕМ ДЕЛАТЬ ПРОГРАММУ САМОМУ?

  Это всё присказка. А рассказать я вам про Турбо бейсик хочу. Про его возможности на примере программы расчёта оптических систем.
  Программа OPTR_F рассчитывает оптические системы по формулам Федера (буковка F) прогонкой лучей (буковка R) методом Монте-Карло.
  Почему я пользуюсь этой программой, а не профессиональной, которых во множестве в интернете, и скачать можно всё что угодно? Когда я начинал интересоваться расчётами, изобилия программ в интернете ещё не было, да и самого интернета ещё не было. Зато в нашем институте был (он и сейчас есть) отдел расчёта оптики. Можно туда обратиться, и вам рассчитают всё, что хотите.
  Но мне хотелось самому. И я был очень прав. Самые большие трудности в современном совместном производстве состоят в том, что исполнители и заказчики, как правило, очень плохо понимают друг друга. На стадии проектирования часто нужны компромиссные решения, но исполнители часто не могут понять, а заказчики не могут объяснить - в чём собственно состоит компромисс. Чем можно поступиться, а чем нет. Когда дело сосредоточено в одних руках, то и идёт оно несравненно лучше.
  Кроме того в лазерных оптических системах есть своя специфика и хорошо, если ей сопутствует и своя эргономика организации расчёта. Но об этом я расскажу по ходу дела.

НЕДОСТАТКИ И ДОСТОИНСТВА ТУРБО БЕЙСИКА

  Прежде всего скажу о недостатках и о достоинствах Турбо бейсика.
  Программисты профессионалы привыкли пользоваться библиотеками подключаемых подпрограмм для обеспечения удобств своей жизни. Особенно чувствуется в Турбо бейсике недостаток современных средств диалога с пользователем, похожих на окна и кнопочки систем Виндос. С другой стороны, эти, казалось бы развитые средства (используемые, к слову сказать, Визуал бейсиком) всё же оказываются недостаточно совершенными. Так в наборе этих средств отсутствует стандартный диалог в двухмерном индексированном массиве, его приходится программировать отдельно.
  Я этот недостаток Турбо бейсика успешно преодолел. Уже на протяжении 20 лет я использую подключаемые функции FND и FNDG для организации диалога (буковка D) в окнах в текстовом и графическом (буковка G) режимах. Та программа, о которой я рассказываю тоже использует функцию FNDG, те красоты и перемещения в окнах, которые вы можете видеть в левой части иллюстрации, создаёт она.
  Достоинства Турбо бейсика тоже всем известны. Язык непритязательный. Он сам разбирается с переменными, даже не требуя их обязательного описания. Вместе с тем он имеет достаточно развитые низкоуровневые средства, позволяющие подключать фрагменты, написанные на ассемблере, работать с видеопамятью, файлами и проч. Интересно, что всё это, созданное в DOS-овские времена, до сих пор работает. Правда цвета на экране, получаемые по старым описаниям (Р.Джордейн Справочник...PC,XT и AT), оказываются несколько другими, но это не очень мешает.
   Операторную же гибкость и плотность старый Бейсик имеет непревзойдённую. И опять же - всё что имею, ношу с собой. Никаких дополнительных обслуживающих файлов. Кроме файла сохранения конфигурации и файла с Help. И даже устанавливать на компьютер не надо, обычный ЕХЕ файл-приложение. Ну уж про объём я не говорю - 199 кбайт, что это за объём? Арпеджио на звуковой дорожке.

РАССКАЗЫВАЮ О ПРОГРАММЕ

  Основные окна программы (синего цвета) вы видите на рисунке слева. Их два. Верхнее задаёт параметры и конфигурацию счёта, на нижнем представлена оптическая система. То, что система показывает и элементы, и расстояния перед ними (левые поля ), и параметры элементов (радиусы кривизны поверхностей, толщина линз, показатели преломления) сразу в одной строке - очень удобно. Сразу обособлено то, с чем работаешь. И сразу всё наглядно видно.
  Хочешь поменять элементы, или вставить новые на место пустых строк - пожалуйста. Не надо даже задумываться о том, какой элемент нужен, просто несколько раз нажимаешь на поле Enter - до тех пор, пока нужный элемент на нём не увидишь. А возможностей много - цилиндрические линзы, зеркала, преломляющие поверхности, диафрагмы и экраны, развороты и сдвиги, маркированные плоскости.
  Собственно на маркированных плоскостях результаты счёта и накапливаются. Это могут быть сетки, в ячейках которой накапливается поглощённая в лазерном кристалле энергия (программа позволяет рассчитать прокачку активного элемента лазера световым излучением, и не только таблицы результата выводятся, но и строится красивая диаграмма из зелёных столбиков, показывающая, как поглощённое излучение распределено по поперечному сечению), это может быть и массив координат входа и выхода лучей из пары маркированных плоскостей. По этому массиву в режиме View строятся каустики пучка, которые тут же анализируются. Даже аберрационные кривые могут быть рассчитаны и продемонстрированы (диаграмма справа внизу).
  Исходные данные счёта, конфигурация оптической системы и все полученные результаты могут быть выведены не только в виде таблиц в текстовый файл, но и выведены в виде картинок, которые могут быть затем собраны вместе в Автокаде для наглядных пояснений. Разумеется, всё это легко оформляется в Вордовский файл, который будет являться отчётом о проделанной работе.

  В программе нет автоматической коррекции параметров, но быстрота и эргономические удобства их вариации позволяют вести эффективные расчёты и быстро находить нужные решения. Лазерные системы имеют свою специфику - во первых, их элементы обычно рассредоточены по пути от лазера до пункта воздействия лазерным излучением, во вторых, они сравнительно просты - двухкомпонентные линзы, самое большее, что может встретиться на пути лазерного пучка. Зато изгибы, смещения, изменения углов отражения на зеркалах светопровода - сколько угодно. Программа оптимизирована по эргономике как раз под такие системы.

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

  И всё это делается в обычном Турбо бейсике. Возникает вопрос - а каких же трудов это стоит, организовать столь изощрённый диалог с созданием окон, с организацией ввода и вывода данных на полях этих окон?
  А никаких трудов это не стоит! Я использую стандартную функцию организации диалога в окнах для Турбо бейсика. Подробно о ней вы можете прочесть тут - http://www.proza.ru/2015/06/05/670
 
ПРИМЕР РАСЧЁТА

  Расскажу вам о том расчёте, слайды которого вы можете видеть на рисунке. Офтальмодеструктор, лазерная офтальмологическая установка о которой говорилось выше.
  Источник излучения - лазер на алюмоиттриевом гранате с нестабильным резонатором. Он устроен достаточно просто - два зеркала на расстоянии 80 мм друг от друга, а между ними активный элемент, цилиндр розового цвета диаметром 3 мм, а длиной 50 мм. Заднее зеркало - слегка выпуклое (радиус кривизны отражающей поверхности 1000 мм), между ним и активным элементом - пассивный затвор, чёрного цвета, через него ничего не видно, так что заглядывать туда бесполезно). Рядом с активным элементом - длинненькая и тоненькая, под стать самому элементу, лампа-вспышка. И всё это в компактной посеребренной трубочке из кварцевого стекла.
   Лампа вспыхивает, затвор просветляется, короткий импульс лазерного излучения вырывается через полупрозрачное переднее зеркало наружу. Всего-то это излучение, летящее со скоростью света, занимает в пространстве длину 2 метра. Такая летящая пика, или копьё. И в глаз!
   Не бойтесь, энергия ничтожна, но надо очень точно сфокусировать её в нужном месте. Ни на одну десятую миллиметра ни дальше (иначе эффекта не будет), ни ближе (иначе искусственный хрусталик разобьёте) - вот и приходиться наводить излучение с хирургической точностью. Врачи офтальмологи, работающие с лазерами, вообще в этом отношении - кудесники. И блики, и веки мешают, и глаз, прошу прощения, он живой, двигается. И пациента в это время нужно успокаивать. Не больно, но страшновато, разумеется. Зато потом - сразу видят, это ли не чудо?

  Я отвлёкся. Давайте, посмотрим на верхнее окно. Что там написано? Можем прочесть:
Предмет: Круг X,Y,D    0       0       0      
Зрачок:  Круг N(R), - или X=..Y=.. 121(1.55)    ............
Удаление зрачка 235   
что означает - из точки с координатами X=0,Y=0 (может быть и не точка, а круг, но его диаметр D=0 указывает, что точка) выходит пучок из 121 луча случайно распределённых в плоскости зрачка в круге с центром X=0,Y=0 и радиусом 1,55 мм, удалённым на расстояние 235 мм.
   Почему R=1.55, а не 1.5 - ведь диаметр активного элемента составляет ровно 3 мм? Потому, что выходное зеркало расположено ближе торца активного элемента,  а лазерный пучок идущий от заднего зеркала через активный элемент немного расходится.
  Почему 235 ? Что за число такое? Число интересное.
  Лазерный пучок внутри резонатора, попадая на заднее выпуклое зеркало, каждый раз отражается от него более широко, но что оказывается! Радиус кривизны волнового фронта, независимо от того, была ли эта кривизна менее 235-ти миллиметров, или более, она стремится, и довольно быстро, именно к этому значению.
Будь радиус кривизны заднего зеркала не 1000 мм, а другим, или расстояние между зеркалами другое, и это число было бы другим. Но в нашем случае расчёт, да и эксперимент показывают, что оно именно такое - 235 мм.

   Выход лазера у нас совмещён с входом в оптическую систему.
На нижнем окне можно видеть, что на расстоянии 54 мм от входа стоит диафрагма:

235     ---------------- ........ ........ ........ ........
54      Диафрагма     D= 20       ........ ........ ........
20.5    ---------------- 0        ........ ........ ........
6.5     ЛИНЗА R1 R2 T N  0        22.91    3        1.506   
88.5    ---------------- ........ ........ ........ ........
39      ЛИНЗА R1 R2 T N  0        -86.3    3        1.506   
2.4     ЛИНЗА R1 R2 T N  29.65    -24.21   6        1.506   
.25     ЛИНЗА R1 R2 T N  -24.21   -158.49  1.6      1.651   
10.74   ---------------- ........ ........ ........ ........
48      ПЛОСКОСТЬ  MARK= ........ ........ ........ ........
1       ПЛОСКОСТЬ  MARK= ........ ........ ........ ........
....... RETURN        K= ........ ........ ........ ........

последняя строка не поместилась в окно, но можно строки прокрутить и увидеть её.
  Зачем нужна диафрагма, тем более, такая широкая - 20 мм? Через неё всё излучение заведомо пройдёт целиком.
  Да, расчёт на полной энергии именно таков. Но предусмотрено и ослабление энергии до нужного уровня. Причём ослабление как поглощающими фильтрами, так и путём диафрагмирования пучка.
  Дело в том. что обуженный по диаметру пучок легче и с меньшими искажениями проникает в разные "щёлочки", в угол передней камеры глаза, например. Тогда как широкий по диаметру сфокусированный пучок имеет меньшую длину каустики, и позволяет проводить воздействие более избирательно. Оба режима нужны.
  Захотим узнать, как с диафрагмой, заменим 20 на 2.5 и увидим, что будет.

  Чем хороша такая запись системы - она сразу показывает все потенциальные возможности расчёта. Вы видите пустую строку - прочерки под диафрагмой. Это - местоположение поворотного зеркала. Зеркало съюстировано - пучок, отражённый от него идёт точно по оси оптической системы. Но что будет, если зеркало выставлено не точно? Появятся ли аберрации, и какие?
  На поле с прочерками нажимаем несколько раз Enter, пока не появится элемент "Сдвиг луча". Указываем величину поперечного сдвига и можем смотреть, что будет, если зеркало немного сдвинуть. Точно также можно проанализировать децентровки линз.
  Хотим анализировать не сдвиг а наклон? Нажимаем клавиши Alt/M и модифицируем элемент. Сферические линзы, поверхности и зеркала таким же способом могут быть модифицированы в цилиндрические. Диафрагма модифицируется в прямоугольное окно.
  Вы видите на оптической схеме ещё два прочерка - они тоже отмечают местоположения поворотных зеркал.

 В оптической системе 4 линзы. Первые две, отрицательная и положительная, представляют собой телескоп (трубу Галилея), который расширяет лазерный пучок до диаметра 18 мм. Расширенный пучок фокусируется двухлинзовым объективом.
  Зачем понадобилось пучок расширять? Почему его не сфокусировать сразу?
  Расширенный пучок обеспечивает достаточно протяжённую свободную рабочую зону от последнего поворотного зеркала до точки фокусировки лазерного излучения. В этой зоне работают руки офтальмолога, в ней может быть размещена и контактная линза, применяемая иногда во время лазерного воздействия.

  Плоскости MARK, между ними расстояние взято 1 мм, отмечают поперечные сечения, между которыми будет строиться интересующая нас каустика .
  Последняя строка RETURN показывает, сколько раз мы будем повторять счёт. Если указано 1, или ничего не указано, то 1 раз. Укажем 2 - в нашем случае будет просчитан не 121 луч, а вдвое больше. Так мы можем насобирать достаточное количество лучей для уверенного построения распределения с зелёными столбиками. Но для построения каустики это не пригодится, в нём может быть использовано не более 121 луча. Зато они могут быть разделены на 2, 3 или 4 порции, просчитаны в разных условиях и продемонстрированы разным цветом.

  Нажимаем Enter на поле "Очистить", потом - на поле "ПУСК". После окончания счёта жмём на "Wiev" и смотрим на полученные каустики. Нажимаем "Пробел" - между каустикой по Y и каустикой по X появляется маленькая цветная чёрточка, двигаем её вправо-влево вдоль каустик, в интересующем нас месте нажимаем Enter и получаем справа кружочек - поперечный срез каустики. А сверху - цифры, относительное положение сечения между плоскостями MARK, и w - радиус кружочка.
  Видите, какая у нас хорошая получилась система - w=.00216. Диаметр кружка сфокусированного лазерного излучения равен 4.3 мкм. Очень хорошо для двухлинзового объектива при угле сходимости 16 градусов. Это потому, что объектив у нас не склеенный. Между линзами имеется зазор 0.25 мм, который практически может быть обеспечен такой же толщины мягким (из меди) кольцом-прокладкой по краям линз.
  Роль зазора очень хорошо демонстрирует аберрационная кривая на правом нижнем слайде. По вертикальной оси - тангенс угла наклона луча к оси в каустике пучка. Максимальное значение 0.14 ( 8 градусов). По горизонтали - расстояние от выбранного поперечного сечения до точки пересечения луча с осью. Размер диаграммы по горизонтали - 0.1 мм. Видите - зона фокусировки всех лучей занимает 25 микрон по оси.
  Посмотрите, как ведёт себя кривая в параксиальной области - небольшие значения углов наклона. С точки зрения склеенного объектива сферическая аберрация перекомпенсирована - у простой фокусирующей линзы кривая идёт вверх и влево, чем дальше лучи от центра линзы, тем ближе к ней они фокусируются. А у нас - наоборот. И это было бы плохо, если бы не зазор между линзами. Как оказывается, для больших углов он изгибает кривую влево, возвращая точку фокусировки лучей большого наклона к точке фокусировки параксиальных лучей.
  А теперь посмотрите на диаграмму из столбиков. Вы видите, какой отличный керн имеется посредине пятна шириной 4 микрона (каждая клеточка на диаграмме, как видно из надписи, имеет размер 1/2 микрона). В этом-то керне, созданным сходящимися лучами большого наклона, и начинается оптический пробой. Потом искра лазерной плазмы распространяется на некоторое расстояние навстречу лазерному излучению, поглощая его. Всем этим достигается исключительная избирательность лазерного воздействия.
  Если конечно правильно собрать линзы объектива с зазором и не перекосить их. Но на это есть и свои методы контроля.

Спасибо за внимание.
==========
Программу расчёта оптических систем OPTR_F вместе со вспомогательными файлами, содержащими шрифт для графического режима F.E, и таблицу перекодировки символов T_C.FNT, а также подробное описание с примерами, вы можете скачать здесь - http://yadi.sk/d/UHuS1JPYb-zbqQ в архиве.

Эта же программа OPTR1_F в другом оформлении, с Бейсиком и bas файлами, находится здесь - http://yadi.sk/d/MxlAz2rHipDnm
DOS ящик можно скачать тут - www.dosbox.com
Когда запустите программу, укажите d.F_F в верхнем поле, нажмите Enter.
Нажав Alt/C перейдите в нижнее окно. Нажав Alt/F загрузите каталог. Нажав Alt/L загрузите выбранную оптическую систему, ту самую, которую мы здесь рассматривали.
Нажав Alt/C перейдите в верхнее окно. Идите на поля "Очистить" - очищайте массив результатов. Жмите "ПУСК". Просматривайте и выводите результаты.
Успехов.
______________
Про институт, где я работал - http://youtu.be/8y_CnWZZUlc