Это - обертка над фортрановским кодом расчета оптических свойств сфероидальных частиц. Переж созданием собственно обертки, код на фортране был реорганизован. Из него были удалены части кода, отвечавшие за вывод всякой служебной инфорации на экран. Добавлено несколько процедур для облегчения взаимодействия с кодом на си.
Для начала загрузить пакет
import libspheroid as sprdВ пакете есть класс SpheroidCalc. Это обертка над вызовами фортрановских функций.
o = sprd.SpheroidCalc(input_fname)
# filename - один из файлов настройки input_sphrs.dat или input_sphrds.dat. Для сфер и сфероидов
# соответственно.
# при создании класса происходит чтение конфигурационного файла и инициализация внутренних глобальных
# переменных библиотеки. Это означает, что объект SpheroidCalc может быть только один!. Это важно. После того, как настройки прочитаны, нужно установить длину волны излучения (свойство wvl), коэффициенты преломления (свойство midx - [Complex]). И задать распредеделние объемов частиц по размерам (столбцы из файла с данными 0.05 - 15.0) в виде вектороа.
Вызов метода calc() запускает расчеты. При первом вызове мотода осуществляется подгрузка файлов базы даных из директорий KERNLS_*. Они должны быть в том же каталоге, что и исполняемый скрипт.
свойства Ext Sca, Absb - сответственно оптические толщи ослабления, рассеяния и поглощения.
свойство GAlb - дает геометрическое альбедо, по заданномк распределению. lbr - лидарное отношение, а ldr - линейное деполяризационное отношение (
В файлах Aeronet есть такой параметр, как Spherical_Fraction - сверичность частиц. Для ее учета нужно сделать расчет для сфер, потом для сфероидов, а затем сложить с весом (Spherical Faraction)
Важно:
При сложении нужно учитывать, что Ext, Sca и Absb можно скаладывать как есть, но ldr и lbr складывются по-иному.
Из определения, - где
В случае MTX,
То есть, при расчете ldr, нужно проделать (1) с матрицами мюллера.
Для расчета геометрического альбедо потребуется знание lbr - лидарного отношения.
По матрице рассеяния для смеси также вычисляем Ldr.
Примечание для расчета сферических частиц необходимо при инициализации передать файл настроек для сфер (см выше его название), для сфероидов - файл для сфероидов.
Чтобы не запускать скрипт два раза и не считать сначала сферы, а затем сфероиды, лучше всего сначала сделать расчеты для сфер, потом вызвать метод finalize, после этого можно наново инициализировать объект SpheroidCalc как указано выше, но пред вызовом метода Calc, установить свойство ndp=0.