Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

Трассировщик лучей для моделирования "кривого зеркала"

Итак, сегодня я более-менее доделал трассировщик (правда, пока только на CUDA — надо будет еще с OpenMP для CPU написать, чтобы работало, если GPU будет недоступен или не справится).
Для сохранения результатов подключил cfitsio, еще планирую сделать сохранение в png/tiff.
13.01.23_21:12:22
Изображение точечного объекта с точностью поверхности зеркала 30 нм. Размер пикселя: 10мкм
Выше — пример изображения, которое получилось у меня на «матрице» 1000×1000 пикселей с пикселем 10×10 мкм при наложении на поверхность зеркала сглаженную матрицу 10×10 со случайными значениями (от 0 до 30 нм) отклонений. Вроде бы не так уж и много: 30 нм — это всего-то порядка λ/16, а уже получаем гауссиану с полушириной порядка 1'' (а весь разброс пикселей доходит до трех секунд).
Для примера вот что получается, если поднять точность поверхности зеркала до десяти нанометров (правда, здесь уже сильно сказывается ограниченность float):
13.01.23_21:12:59
Точечный объект с десятимикронной точностью поверхности.
Получаем полуширину в четверть секунды, а полную — в полторы!
Ладно, на «точечки» посмотрели, надо бы проверить, получится ли кома. Для начала я «наклонил» зеркало на 1°, а чтобы изображение оставалось в той же точке, объект «наклонил» в противоположную сторону на 2°. В итоге получилась вот такая прелесть (количество «фотонов» увеличил до ста миллионов):
Кома при отклонении объекта от оптической оси на 1°.
Отклонения (все те же 0..30 нм):
Поверхность зеркала для предыдущей картинки, отклонения: 0..30 нм.
А вот такая кома получается при наклоне на полградуса:
Кома при наклоне на 0.5°
Тоже сказывается нехватка «фотонов», несмотря на то, что их количество было повышено до пятиста миллионов.
Ну и напоследок — кома для идеального зеркала:
Кома «идеального» зеркала.
И она же посимпатишней:
Кома «идеального» зеркала.
Слабовато, но заметно, что какой-то дальний край комы получился неправильный: вместо положительной кривизны он имеет отрицательную. То ли это связано с моей криворукостью, то ли опять фотонов не хватает — не знаю. Надо проверять.
Итак, нужно еще дописать CPU-версию того же самого, чтобы сравнить производительность, а еще — сделать наконец маскирование. И можно будет строить гартманнограммы для проверки своих теорий. А то версия на Octave была уж слишком медленной и неточной.
Subscribe

  • Опять Подорванка смыла мост

    В четверг лило настолько, что, похоже, опять на подорванке забилась стремнина бревнами, а потом внезапно это все прорвало. МЧСовсцы перетаскивали…

  • Аж коробит…

    Уже который раз вижу (даже в прессе) выражение: "ставить прививку". Это что за странное такое словоблудие? Либо эпохи царской России, либо даже…

  • Упаковочка

    Получил сегодня пару посылок с алиэкспресса. Одна из них была с новым для меня способом доставки (на посылке не указывался адрес, а лишь "до…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments