Skip to content

physicist2018/py-libspheroid

Repository files navigation

py-libspheroid

Это - обертка над фортрановским кодом расчета оптических свойств сфероидальных частиц. Переж созданием собственно обертки, код на фортране был реорганизован. Из него были удалены части кода, отвечавшие за вывод всякой служебной инфорации на экран. Добавлено несколько процедур для облегчения взаимодействия с кодом на си.

Как им пользоваться

Для начала загрузить пакет

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 - линейное деполяризационное отношение ($\mu_l$).

В файлах Aeronet есть такой параметр, как Spherical_Fraction - сверичность частиц. Для ее учета нужно сделать расчет для сфер, потом для сфероидов, а затем сложить с весом (Spherical Faraction)

Важно:

При сложении нужно учитывать, что Ext, Sca и Absb можно скаладывать как есть, но ldr и lbr складывются по-иному.

Из определения, - где $S_{11}(180^\circ)$, $S_{22}(180^\circ) - элементы матриц мюллера для угра расеяния 180 градусов. Доступ к матрицам мюллера осуществляется по свойству MTX или FMTX.

В случае MTX, $S_{11}$ будет соответствовать первому столбцу, $S_{11}$ - второму. Последний элемент в этих столбцах как раз соответствует углу рассеяния 180 градусов.

То есть, при расчете ldr, нужно проделать (1) с матрицами мюллера.

Для расчета геометрического альбедо потребуется знание lbr - лидарного отношения. $Lbr = Ext/BackScat$. Из этого соотношения находится BackScat. В соотетствии с формулой (1) вычисляется значение BackScat для смеси сфероидов и сфер. Затем вычисляем Tot значение Lbr, как TotExt/TotBack.

По матрице рассеяния для смеси также вычисляем Ldr.

Примечание для расчета сферических частиц необходимо при инициализации передать файл настроек для сфер (см выше его название), для сфероидов - файл для сфероидов.

Чтобы не запускать скрипт два раза и не считать сначала сферы, а затем сфероиды, лучше всего сначала сделать расчеты для сфер, потом вызвать метод finalize, после этого можно наново инициализировать объект SpheroidCalc как указано выше, но пред вызовом метода Calc, установить свойство ndp=0.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published