SkyMapMod 0.1.33__py3-none-any.whl → 0.1.35__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- SkyMapMod/airglow.py +32 -1
- SkyMapMod/planets.py +244 -3
- SkyMapMod/star_catalogues.py +35 -0
- SkyMapMod/total_background.py +96 -2
- SkyMapMod/zodiac.py +525 -15
- {skymapmod-0.1.33.dist-info → skymapmod-0.1.35.dist-info}/METADATA +1 -1
- {skymapmod-0.1.33.dist-info → skymapmod-0.1.35.dist-info}/RECORD +9 -9
- {skymapmod-0.1.33.dist-info → skymapmod-0.1.35.dist-info}/WHEEL +0 -0
- {skymapmod-0.1.33.dist-info → skymapmod-0.1.35.dist-info}/licenses/LICENSE +0 -0
SkyMapMod/airglow.py
CHANGED
@@ -24,6 +24,32 @@ def radioflux(date, time): #date -- в формате строки 'дд.мм.г
|
|
24
24
|
|
25
25
|
|
26
26
|
def airglow_spectrum(wavelenght_airglow = wavelenght_kp, intensity_airglow = intensity_kp, wavelenght_atmosphere = wavelenght_modtran_kp, transparency_atmosphere = trancparency_modtran_kp):
|
27
|
+
"""
|
28
|
+
Возвращает длины волн и спектр собственного свечения за атмосферой.
|
29
|
+
|
30
|
+
Функция корректирует спектр собственного свечения, учитывая прозрачность атмосферы на соответствующих
|
31
|
+
длинах волн. Затем пересчитывает интенсивность из Рэлей/Ангстрем в фот/(с·м²·бин·нм).
|
32
|
+
|
33
|
+
Параметры:
|
34
|
+
wavelenght_airglow (np.ndarray, optional): Длины волн спектра собственного свечения, нм.
|
35
|
+
По умолчанию — wavelenght_kp.
|
36
|
+
intensity_airglow (np.ndarray, optional): Интенсивность собственного свечения, Рэлей/Ангстрем.
|
37
|
+
По умолчанию — intensity_kp.
|
38
|
+
wavelenght_atmosphere (np.ndarray, optional): Длины волн атмосферных данных, нм.
|
39
|
+
По умолчанию — wavelenght_modtran_kp.
|
40
|
+
transparency_atmosphere (np.ndarray, optional): Прозрачность атмосферы (от 0 до 1).
|
41
|
+
По умолчанию — transparency_modtran_kp.
|
42
|
+
|
43
|
+
Возвращает:
|
44
|
+
wavelength_corrected (np.ndarray): Общие длины волн для спектра и атмосферных данных, нм.
|
45
|
+
intensity_corrected (np.ndarray): Скорректированная интенсивность,
|
46
|
+
фот/(с·м²·бин·нм).
|
47
|
+
|
48
|
+
Примечания:
|
49
|
+
- Для совпадающих длин волн значение интенсивности делится на соответствующую прозрачность.
|
50
|
+
- Пересчёт из "Рэлей/Ангстрем" в "фотоны/(с·м²·бин·нм)" производится по формуле:
|
51
|
+
intensity = intensity * 10^11 / (4 * pi) * pi^2 / (1800 * 1800)
|
52
|
+
"""
|
27
53
|
wavelenght = []
|
28
54
|
intensity = []
|
29
55
|
for i in range(wavelenght_airglow.shape[0]):
|
@@ -31,7 +57,12 @@ def airglow_spectrum(wavelenght_airglow = wavelenght_kp, intensity_airglow = int
|
|
31
57
|
if wavelenght_airglow[i] == wavelenght_atmosphere[j]:
|
32
58
|
wavelenght.append(wavelenght_airglow[i])
|
33
59
|
intensity.append(intensity_airglow[i] / transparency_atmosphere[j])
|
34
|
-
|
60
|
+
intensity = np.array(intensity)
|
61
|
+
intensity = intensity * 10**11 / (4 * np.pi) * np.pi**2 / (1800 * 1800)
|
62
|
+
wavelenght = np.array(wavelenght)
|
63
|
+
return(wavelenght, intensity) #возвращает длину волны в нм и поток в фот / (сек м^2 ср нм) + от стерадиан к сетке
|
64
|
+
|
65
|
+
|
35
66
|
#функция написана для спектра взятого от китт пик, прозрачность атмосферы взята из модтрана, параметры -- см. доклад, там прямо скрин. Прозрачность взята для 45 градусов, пересчитана в 30 градусов
|
36
67
|
|
37
68
|
from .solar_radio_flux import fluxdate
|
SkyMapMod/planets.py
CHANGED
@@ -10,6 +10,30 @@ from .band_V_data import wavelenght_band_V, trancparency_band_V
|
|
10
10
|
|
11
11
|
|
12
12
|
def coordinates_of_planet(body, date, time): #'mars', 'venus', 'saturn', 'jupyter'; 2023-11-03; 12:00:00; return galactic coordinates of planet
|
13
|
+
"""
|
14
|
+
Вычисляет галактические координаты указанной планеты на заданную дату и время.
|
15
|
+
|
16
|
+
Функция принимает название планеты, дату и время, преобразует их в объект времени,
|
17
|
+
вычисляет положение планеты с использованием эфемерид и возвращает её галактические
|
18
|
+
координаты (долготу l и широту b).
|
19
|
+
|
20
|
+
Параметры:
|
21
|
+
body (str): Название планеты. Допустимые значения: 'mars', 'venus', 'saturn', 'jupiter'.
|
22
|
+
date (str): Дата в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
23
|
+
time (str): Время в формате 'HH:MM:SS' (например, '12:00:00').
|
24
|
+
|
25
|
+
Возвращает:
|
26
|
+
tuple: Кортеж из двух значений:
|
27
|
+
- l (float): Галактическая долгота планеты (в градусах).
|
28
|
+
- b (float): Галактическая широта планеты (в градусах).
|
29
|
+
|
30
|
+
Примечания:
|
31
|
+
- Для вычисления положения планеты используется библиотека `astropy`:
|
32
|
+
- `get_body`: Получает положение планеты в экваториальной системе координат.
|
33
|
+
- `transform_to(Galactic)`: Преобразует координаты в галактическую систему.
|
34
|
+
- Эфемериды берутся из встроенного набора данных (`ephemeris='builtin'`).
|
35
|
+
- Результат возвращается в градусах, так как метод `.value` извлекает числовое значение углов.
|
36
|
+
"""
|
13
37
|
datetime = date + ' ' + time
|
14
38
|
time = Time(datetime)
|
15
39
|
planet = get_body(body, time, ephemeris='builtin').transform_to(Galactic)
|
@@ -19,6 +43,34 @@ def coordinates_of_planet(body, date, time): #'mars', 'venus', 'saturn', 'jupyte
|
|
19
43
|
|
20
44
|
|
21
45
|
def magnitude_of_planet(body, date, time): #'mars', 'venus', 'saturn', 'jupiter'; 2023-11-03; 12:00:00';
|
46
|
+
"""
|
47
|
+
Вычисляет видимую звездную величину указанной планеты на заданную дату и время.
|
48
|
+
|
49
|
+
Функция принимает название планеты, дату и время наблюдения, использует библиотеку `ephem`
|
50
|
+
для расчета положения планеты и возвращает её видимую звездную величину (magnitude).
|
51
|
+
|
52
|
+
Параметры:
|
53
|
+
body (str): Название планеты. Допустимые значения: 'venus', 'mars', 'jupiter', 'saturn'.
|
54
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
55
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
56
|
+
В текущей реализации параметр time не используется, так как библиотека `ephem`
|
57
|
+
автоматически учитывает время при вычислениях.
|
58
|
+
|
59
|
+
Возвращает:
|
60
|
+
magnitude (float): Видимая звездная величина планеты (magnitude). Чем меньше значение, тем ярче объект.
|
61
|
+
|
62
|
+
Примечания:
|
63
|
+
- Для расчетов используется библиотека `ephem`, которая моделирует движение небесных тел.
|
64
|
+
- Дата преобразуется из формата 'YYYY-MM-DD' в формат 'YYYY/MM/DD', так как это требование библиотеки `ephem`.
|
65
|
+
- Видимая звездная величина (magnitude) зависит от положения планеты относительно Земли и Солнца.
|
66
|
+
- Если планета не указана в списке допустимых значений ('venus', 'mars', 'jupiter', 'saturn'),
|
67
|
+
функция вызовет ошибку.
|
68
|
+
|
69
|
+
|
70
|
+
Зависимости:
|
71
|
+
- `ephem`: Библиотека для астрономических расчетов.
|
72
|
+
Установка: `pip install ephem`
|
73
|
+
"""
|
22
74
|
if body == 'venus':
|
23
75
|
planet = ephem.Venus()
|
24
76
|
elif body == 'mars':
|
@@ -32,16 +84,79 @@ def magnitude_of_planet(body, date, time): #'mars', 'venus', 'saturn', 'jupiter'
|
|
32
84
|
date = date.replace('-', '/')
|
33
85
|
|
34
86
|
planet.compute(date)
|
35
|
-
|
87
|
+
magnitude = planet.mag
|
88
|
+
return magnitude
|
36
89
|
|
37
90
|
def mag_to_phot(mag): #в полосе V
|
38
|
-
|
39
|
-
|
91
|
+
"""
|
92
|
+
Пересчитывает звездную величину (magnitude) в поток фотонов в полосе V, используя эталонную звезду 10-й звездной величины.
|
93
|
+
|
94
|
+
Функция использует формулу Погсона для пересчета звездной величины в поток фотонов.
|
95
|
+
Звезда 10-й звездной величины в полосе V имеет эталонный поток F0 = 10^2 фот / (см^2 сек).
|
96
|
+
|
97
|
+
Параметры:
|
98
|
+
mag (float): Звездная величина (magnitude) объекта в полосе V.
|
99
|
+
|
100
|
+
Возвращает:
|
101
|
+
F1 (float): Поток фотонов в единицах фот / (м^2 сек).
|
102
|
+
|
103
|
+
Примечания:
|
104
|
+
- Формула Погсона: F = F0 * 10^(0.4 * (10 - mag)),
|
105
|
+
где F0 — поток фотонов для звезды 10-й звездной величины.
|
106
|
+
- В данной реализации F0 = 10^2 фот / (см^2 сек).
|
107
|
+
- Результат переводится из фот / (см^2 сек) в фот / (м^2 сек) умножением на 10^4.
|
108
|
+
- Полоса V соответствует видимому диапазону спектра (визуальная звездная величина).
|
109
|
+
- Деление на 4π (для перехода к стерадианам) не выполняется, так как это зависит от контекста использования.
|
110
|
+
"""
|
111
|
+
F0 = 10**2
|
112
|
+
F1 = F0 * 10 ** (0.4 * (10 - mag)) # фот / (см^2 сек)
|
40
113
|
F1 = F1 * 10**4 #/ (4 * np.pi) # фот / (м^2 сек ср) -- НАДО ЛИ ДЕЛИТЬ НА 4 ПИ?
|
41
114
|
return F1
|
42
115
|
|
43
116
|
|
44
117
|
def venus_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = flux_newguey2003, albedo_wl = venus_alb_wl, albedo_rf = venus_alb_rf, V_wl = wavelenght_band_V, V_tr = trancparency_band_V):
|
118
|
+
"""
|
119
|
+
Вычисляет спектр Венеры на основе заданных даты и времени наблюдения.
|
120
|
+
|
121
|
+
Функция использует спектр альбедо Венеры, солнечный спектр и полосу пропускания V
|
122
|
+
для вычисления нормированного спектра планеты. Нормировка производится так, чтобы
|
123
|
+
интегральная яркость в полосе V соответствовала видимой звездной величине Венеры на
|
124
|
+
указанную дату и время.
|
125
|
+
|
126
|
+
Параметры:
|
127
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
128
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
129
|
+
Sun_sp_wl (ndarray, optional): Массив длин волн солнечного спектра (в нм).
|
130
|
+
По умолчанию используется `wavelenght_newguey2003`.
|
131
|
+
Sun_sp_fx (ndarray, optional): Массив значений солнечного спектра (в фот / (сек м^2 нм)).
|
132
|
+
По умолчанию используется `flux_newguey2003`.
|
133
|
+
albedo_wl (ndarray, optional): Массив длин волн спектра альбедо Венеры (в нм).
|
134
|
+
По умолчанию используется `venus_alb_wl`.
|
135
|
+
albedo_rf (ndarray, optional): Массив значений спектра альбедо Венеры.
|
136
|
+
По умолчанию используется `venus_alb_rf`.
|
137
|
+
V_wl (ndarray, optional): Массив длин волн полосы пропускания V (в нм).
|
138
|
+
По умолчанию используется `wavelenght_band_V`.
|
139
|
+
V_tr (ndarray, optional): Массив значений прозрачности полосы пропускания V.
|
140
|
+
По умолчанию используется `trancparency_band_V`.
|
141
|
+
|
142
|
+
Возвращает:
|
143
|
+
tuple: Кортеж из двух массивов:
|
144
|
+
- planet_wl (ndarray): Массив длин волн спектра планеты (в нм).
|
145
|
+
- planet_sp (ndarray): Массив значений спектра планеты (в фот / (сек ср м^2 нм)).
|
146
|
+
|
147
|
+
Примечания:
|
148
|
+
- Спектр планеты вычисляется как свертка спектра альбедо планеты с солнечным спектром.
|
149
|
+
- Нормировка спектра производится так, чтобы интегральная яркость в полосе V
|
150
|
+
соответствовала видимой звездной величине планеты, вычисленной с помощью
|
151
|
+
функции `magnitude_of_planet`.
|
152
|
+
- Пользователь может задать свои спектры вместо стандартных данных.
|
153
|
+
|
154
|
+
Зависимости:
|
155
|
+
- `convolution`: Функция для свертки спектров.
|
156
|
+
- `integral`: Функция для численного интегрирования.
|
157
|
+
- `magnitude_of_planet`: Функция для вычисления видимой звездной величины планеты.
|
158
|
+
- `mag_to_phot`: Функция для пересчета звездной величины в поток фотонов.
|
159
|
+
"""
|
45
160
|
body = 'venus'
|
46
161
|
planet_wl, planet_sp = convolution(albedo_wl, albedo_rf, Sun_sp_wl, Sun_sp_fx) #вот тут получили спектр планеты
|
47
162
|
planet_V_wl, planet_V_sp = convolution(planet_wl, planet_sp, V_wl, V_tr) #свернули с полосой V, фот / (сек ср м^2 нм)
|
@@ -63,6 +178,48 @@ def venus_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = f
|
|
63
178
|
return planet_wl, planet_sp
|
64
179
|
|
65
180
|
def mars_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = flux_newguey2003, albedo_wl = mars_alb_wl, albedo_rf = mars_alb_rf, V_wl = wavelenght_band_V, V_tr = trancparency_band_V):
|
181
|
+
"""
|
182
|
+
Вычисляет спектр Марса на основе заданных даты и времени наблюдения.
|
183
|
+
|
184
|
+
Функция использует спектр альбедо Марса, солнечный спектр и полосу пропускания V
|
185
|
+
для вычисления нормированного спектра планеты. Нормировка производится так, чтобы
|
186
|
+
интегральная яркость в полосе V соответствовала видимой звездной величине Марса на
|
187
|
+
указанную дату и время.
|
188
|
+
|
189
|
+
Параметры:
|
190
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
191
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
192
|
+
Sun_sp_wl (ndarray, optional): Массив длин волн солнечного спектра (в нм).
|
193
|
+
По умолчанию используется `wavelenght_newguey2003`.
|
194
|
+
Sun_sp_fx (ndarray, optional): Массив значений солнечного спектра (в фот / (сек м^2 нм)).
|
195
|
+
По умолчанию используется `flux_newguey2003`.
|
196
|
+
albedo_wl (ndarray, optional): Массив длин волн спектра альбедо Марса (в нм).
|
197
|
+
По умолчанию используется `mars_alb_wl`.
|
198
|
+
albedo_rf (ndarray, optional): Массив значений спектра альбедо Марса.
|
199
|
+
По умолчанию используется `mars_alb_rf`.
|
200
|
+
V_wl (ndarray, optional): Массив длин волн полосы пропускания V (в нм).
|
201
|
+
По умолчанию используется `wavelenght_band_V`.
|
202
|
+
V_tr (ndarray, optional): Массив значений прозрачности полосы пропускания V.
|
203
|
+
По умолчанию используется `trancparency_band_V`.
|
204
|
+
|
205
|
+
Возвращает:
|
206
|
+
tuple: Кортеж из двух массивов:
|
207
|
+
- planet_wl (ndarray): Массив длин волн спектра планеты (в нм).
|
208
|
+
- planet_sp (ndarray): Массив значений спектра планеты (в фот / (сек ср м^2 нм)).
|
209
|
+
|
210
|
+
Примечания:
|
211
|
+
- Спектр планеты вычисляется как свертка спектра альбедо планеты с солнечным спектром.
|
212
|
+
- Нормировка спектра производится так, чтобы интегральная яркость в полосе V
|
213
|
+
соответствовала видимой звездной величине планеты, вычисленной с помощью
|
214
|
+
функции `magnitude_of_planet`.
|
215
|
+
- Пользователь может задать свои спектры вместо стандартных данных.
|
216
|
+
|
217
|
+
Зависимости:
|
218
|
+
- `convolution`: Функция для свертки спектров.
|
219
|
+
- `integral`: Функция для численного интегрирования.
|
220
|
+
- `magnitude_of_planet`: Функция для вычисления видимой звездной величины планеты.
|
221
|
+
- `mag_to_phot`: Функция для пересчета звездной величины в поток фотонов.
|
222
|
+
"""
|
66
223
|
body = 'mars'
|
67
224
|
planet_wl, planet_sp = convolution(albedo_wl, albedo_rf, Sun_sp_wl, Sun_sp_fx) #вот тут получили спектр планеты
|
68
225
|
planet_V_wl, planet_V_sp = convolution(planet_wl, planet_sp, V_wl, V_tr) #свернули с полосой V, фот / (сек ср м^2 нм)
|
@@ -84,6 +241,48 @@ def mars_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = fl
|
|
84
241
|
return planet_wl, planet_sp
|
85
242
|
|
86
243
|
def jupiter_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = flux_newguey2003, albedo_wl = jupiter_alb_wl, albedo_rf = jupiter_alb_rf, V_wl = wavelenght_band_V, V_tr = trancparency_band_V):
|
244
|
+
"""
|
245
|
+
Вычисляет спектр Юпитера на основе заданных даты и времени наблюдения.
|
246
|
+
|
247
|
+
Функция использует спектр альбедо Юпитера, солнечный спектр и полосу пропускания V
|
248
|
+
для вычисления нормированного спектра планеты. Нормировка производится так, чтобы
|
249
|
+
интегральная яркость в полосе V соответствовала видимой звездной величине Юпитера на
|
250
|
+
указанную дату и время.
|
251
|
+
|
252
|
+
Параметры:
|
253
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
254
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
255
|
+
Sun_sp_wl (ndarray, optional): Массив длин волн солнечного спектра (в нм).
|
256
|
+
По умолчанию используется `wavelenght_newguey2003`.
|
257
|
+
Sun_sp_fx (ndarray, optional): Массив значений солнечного спектра (в фот / (сек м^2 нм)).
|
258
|
+
По умолчанию используется `flux_newguey2003`.
|
259
|
+
albedo_wl (ndarray, optional): Массив длин волн спектра альбедо Юпитера (в нм).
|
260
|
+
По умолчанию используется `jupiter_alb_wl`.
|
261
|
+
albedo_rf (ndarray, optional): Массив значений спектра альбедо Юпитера.
|
262
|
+
По умолчанию используется `jupiter_alb_rf`.
|
263
|
+
V_wl (ndarray, optional): Массив длин волн полосы пропускания V (в нм).
|
264
|
+
По умолчанию используется `wavelenght_band_V`.
|
265
|
+
V_tr (ndarray, optional): Массив значений прозрачности полосы пропускания V.
|
266
|
+
По умолчанию используется `trancparency_band_V`.
|
267
|
+
|
268
|
+
Возвращает:
|
269
|
+
tuple: Кортеж из двух массивов:
|
270
|
+
- planet_wl (ndarray): Массив длин волн спектра планеты (в нм).
|
271
|
+
- planet_sp (ndarray): Массив значений спектра планеты (в фот / (сек ср м^2 нм)).
|
272
|
+
|
273
|
+
Примечания:
|
274
|
+
- Спектр планеты вычисляется как свертка спектра альбедо планеты с солнечным спектром.
|
275
|
+
- Нормировка спектра производится так, чтобы интегральная яркость в полосе V
|
276
|
+
соответствовала видимой звездной величине планеты, вычисленной с помощью
|
277
|
+
функции `magnitude_of_planet`.
|
278
|
+
- Пользователь может задать свои спектры вместо стандартных данных.
|
279
|
+
|
280
|
+
Зависимости:
|
281
|
+
- `convolution`: Функция для свертки спектров.
|
282
|
+
- `integral`: Функция для численного интегрирования.
|
283
|
+
- `magnitude_of_planet`: Функция для вычисления видимой звездной величины планеты.
|
284
|
+
- `mag_to_phot`: Функция для пересчета звездной величины в поток фотонов.
|
285
|
+
"""
|
87
286
|
body = 'jupiter'
|
88
287
|
planet_wl, planet_sp = convolution(albedo_wl, albedo_rf, Sun_sp_wl, Sun_sp_fx) #вот тут получили спектр планеты
|
89
288
|
planet_V_wl, planet_V_sp = convolution(planet_wl, planet_sp, V_wl, V_tr) #свернули с полосой V, фот / (сек ср м^2 нм)
|
@@ -105,6 +304,48 @@ def jupiter_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx =
|
|
105
304
|
return planet_wl, planet_sp
|
106
305
|
|
107
306
|
def saturn_spectrum(date, time, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = flux_newguey2003, albedo_wl = saturn_alb_wl, albedo_rf = saturn_alb_rf, V_wl = wavelenght_band_V, V_tr = trancparency_band_V):
|
307
|
+
"""
|
308
|
+
Вычисляет спектр Сатурна на основе заданных даты и времени наблюдения.
|
309
|
+
|
310
|
+
Функция использует спектр альбедо Сатурна, солнечный спектр и полосу пропускания V
|
311
|
+
для вычисления нормированного спектра планеты. Нормировка производится так, чтобы
|
312
|
+
интегральная яркость в полосе V соответствовала видимой звездной величине Сатурна на
|
313
|
+
указанную дату и время.
|
314
|
+
|
315
|
+
Параметры:
|
316
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
317
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
318
|
+
Sun_sp_wl (ndarray, optional): Массив длин волн солнечного спектра (в нм).
|
319
|
+
По умолчанию используется `wavelenght_newguey2003`.
|
320
|
+
Sun_sp_fx (ndarray, optional): Массив значений солнечного спектра (в фот / (сек м^2 нм)).
|
321
|
+
По умолчанию используется `flux_newguey2003`.
|
322
|
+
albedo_wl (ndarray, optional): Массив длин волн спектра альбедо Сатурна (в нм).
|
323
|
+
По умолчанию используется `saturn_alb_wl`.
|
324
|
+
albedo_rf (ndarray, optional): Массив значений спектра альбедо Сатурна.
|
325
|
+
По умолчанию используется `saturn_alb_rf`.
|
326
|
+
V_wl (ndarray, optional): Массив длин волн полосы пропускания V (в нм).
|
327
|
+
По умолчанию используется `wavelenght_band_V`.
|
328
|
+
V_tr (ndarray, optional): Массив значений прозрачности полосы пропускания V.
|
329
|
+
По умолчанию используется `trancparency_band_V`.
|
330
|
+
|
331
|
+
Возвращает:
|
332
|
+
tuple: Кортеж из двух массивов:
|
333
|
+
- planet_wl (ndarray): Массив длин волн спектра планеты (в нм).
|
334
|
+
- planet_sp (ndarray): Массив значений спектра планеты (в фот / (сек ср м^2 нм)).
|
335
|
+
|
336
|
+
Примечания:
|
337
|
+
- Спектр планеты вычисляется как свертка спектра альбедо планеты с солнечным спектром.
|
338
|
+
- Нормировка спектра производится так, чтобы интегральная яркость в полосе V
|
339
|
+
соответствовала видимой звездной величине планеты, вычисленной с помощью
|
340
|
+
функции `magnitude_of_planet`.
|
341
|
+
- Пользователь может задать свои спектры вместо стандартных данных.
|
342
|
+
|
343
|
+
Зависимости:
|
344
|
+
- `convolution`: Функция для свертки спектров.
|
345
|
+
- `integral`: Функция для численного интегрирования.
|
346
|
+
- `magnitude_of_planet`: Функция для вычисления видимой звездной величины планеты.
|
347
|
+
- `mag_to_phot`: Функция для пересчета звездной величины в поток фотонов.
|
348
|
+
"""
|
108
349
|
body = 'saturn'
|
109
350
|
planet_wl, planet_sp = convolution(albedo_wl, albedo_rf, Sun_sp_wl, Sun_sp_fx) #вот тут получили спектр планеты
|
110
351
|
planet_V_wl, planet_V_sp = convolution(planet_wl, planet_sp, V_wl, V_tr) #свернули с полосой V, фот / (сек ср м^2 нм)
|
SkyMapMod/star_catalogues.py
CHANGED
@@ -7,6 +7,41 @@ from.zodiac import black_body_phot
|
|
7
7
|
#на вход подаем галактические координаты (l -- долгота, b -- широта) и массив длин волн, по которым строим спектр
|
8
8
|
#РАЗОБРАТЬСЯ С КОЭФФИЦИЕНТАМИ А -- НАДО ЛИ НОРМИРОВАТЬ НА C (КАЖЕТСЯ НАДО) А ЕЩЕ ВРОДЕ Я ЕГО ОТНОРМИРОВАЛА И ПОДГРУЗИЛА -- ПРОВЕРИТЬ
|
9
9
|
def star_spectrum(l, b, lmbd):
|
10
|
+
"""
|
11
|
+
Вычисляет спектр звезды по её галактическим координатам и массиву длин волн.
|
12
|
+
|
13
|
+
Функция принимает галактические координаты (долгота и широта) и массив длин волн,
|
14
|
+
пересчитывает координаты в индексы массива, извлекает температуру и амплитуду
|
15
|
+
из предварительно рассчитанных массивов данных, и вычисляет спектр звезды
|
16
|
+
с использованием формулы Планка для абсолютно черного тела.
|
17
|
+
|
18
|
+
Параметры:
|
19
|
+
l (float): Галактическая долгота точки наблюдения (в градусах).
|
20
|
+
b (float): Галактическая широта точки наблюдения (в градусах).
|
21
|
+
lmbd (ndarray): Массив длин волн, для которых рассчитывается спектр (в нм).
|
22
|
+
|
23
|
+
Возвращает:
|
24
|
+
ndarray: Массив значений спектра звезды (в фот / (сек * м^2 * нм)).
|
25
|
+
|
26
|
+
Примечания:
|
27
|
+
- Пересчет галактических координат в индексы массива:
|
28
|
+
- Долгота преобразуется в диапазон от 0 до 3600.
|
29
|
+
- Широта преобразуется в диапазон от 0 до 1800.
|
30
|
+
- Используются два предварительно рассчитанных массива:
|
31
|
+
- `star_brightness`: массив амплитуд яркости звезд.
|
32
|
+
- `star_temperatures`: массив температур звезд (в Кельвинах).
|
33
|
+
- Спектр рассчитывается по формуле Планка для абсолютно черного тела:
|
34
|
+
- spectrum = A * black_body_phot(lmbd, T),
|
35
|
+
где A — амплитуда, T — температура, lmbd — длина волны.
|
36
|
+
- Функция `black_body_phot` определена отдельно.
|
37
|
+
|
38
|
+
|
39
|
+
Зависимости:
|
40
|
+
- `load_star_brightness()`: загружает массив амплитуд яркости звезд.
|
41
|
+
- `load_star_temperatures()`: загружает массив температур звезд.
|
42
|
+
- `black_body_phot(lmbd, T)`: вычисляет спектральную плотность излучения
|
43
|
+
абсолютно черного тела для заданной длины волны и температуры.
|
44
|
+
"""
|
10
45
|
#пересчет из галактических к позиции в массиве, ЕСЛИ ПРОБЛЕМЫ ВОЗНИКЛИ, ПЕРЕПРОВЕРИТЬ
|
11
46
|
if round(l*10) >= 1800:
|
12
47
|
j = int((1800 - round(l*10)) + 3600)
|
SkyMapMod/total_background.py
CHANGED
@@ -15,6 +15,35 @@ from .albedo_of_planets import *
|
|
15
15
|
from .planets import *
|
16
16
|
|
17
17
|
def galactic_to_equatorial(l, b):
|
18
|
+
"""
|
19
|
+
Преобразует галактические координаты в эклиптические.
|
20
|
+
|
21
|
+
Функция принимает галактическую долготу и широту объекта, преобразует их
|
22
|
+
в эклиптические координаты (долготу и широту) с использованием стандартной
|
23
|
+
эпохи J2000.0 и библиотеки `astropy`.
|
24
|
+
|
25
|
+
Параметры:
|
26
|
+
l (float): Галактическая долгота объекта (в градусах).
|
27
|
+
b (float): Галактическая широта объекта (в градусах).
|
28
|
+
|
29
|
+
Возвращает:
|
30
|
+
tuple: Кортеж из двух значений:
|
31
|
+
- ecl_lon (float): Эклиптическая долгота объекта (в градусах).
|
32
|
+
- ecl_lat (float): Эклиптическая широта объекта (в градусах).
|
33
|
+
|
34
|
+
Примечания:
|
35
|
+
- Для преобразования используется библиотека `astropy`:
|
36
|
+
- `Galactic`: Представляет галактические координаты.
|
37
|
+
- `GeocentricMeanEcliptic`: Представляет эклиптические координаты.
|
38
|
+
- Эпоха расчетов фиксирована как J2000.0.
|
39
|
+
- Результат возвращается в градусах, так как это наиболее распространенный формат для астрономических данных.
|
40
|
+
|
41
|
+
Зависимости:
|
42
|
+
- `astropy.units`: Для работы с единицами измерения (градусы).
|
43
|
+
- `astropy.time.Time`: Для задания эпохи J2000.0.
|
44
|
+
- `astropy.coordinates.Galactic`: Для представления галактических координат.
|
45
|
+
- `astropy.coordinates.GeocentricMeanEcliptic`: Для представления эклиптических координат.
|
46
|
+
"""
|
18
47
|
import astropy.units as u
|
19
48
|
# Входные данные: галактические координаты и эпоха
|
20
49
|
galactic_l = l * u.deg # Галактическая долгота
|
@@ -31,9 +60,40 @@ def galactic_to_equatorial(l, b):
|
|
31
60
|
print("Техническая проверка")
|
32
61
|
print(f"Эклиптическая долгота (λ): {ecliptic_coords.lon.to(u.deg)}")
|
33
62
|
print(f"Эклиптическая широта (β): {ecliptic_coords.lat.to(u.deg)}")
|
34
|
-
|
63
|
+
|
64
|
+
ecl_lon = ecliptic_coords.lon.to(u.deg).value
|
65
|
+
ecl_lat = ecliptic_coords.lat.to(u.deg).value
|
66
|
+
return(ecl_lon, ecl_lat)
|
35
67
|
|
36
68
|
def Sun_ecl_lon(date, time):
|
69
|
+
"""
|
70
|
+
Вычисляет эклиптическую долготу Солнца по заданным дате и времени.
|
71
|
+
|
72
|
+
Функция принимает дату и время наблюдения, использует библиотеку `astropy`
|
73
|
+
для расчета положения Солнца в геоцентрической эклиптической системе координат
|
74
|
+
и возвращает эклиптическую долготу Солнца.
|
75
|
+
|
76
|
+
Параметры:
|
77
|
+
date (str): Дата наблюдения в формате 'YYYY-MM-DD' (например, '2023-11-03').
|
78
|
+
time (str): Время наблюдения в формате 'HH:MM:SS' (например, '12:00:00').
|
79
|
+
|
80
|
+
Возвращает:
|
81
|
+
ecl_lon_of_Sun (float): Эклиптическая долгота Солнца (в градусах).
|
82
|
+
|
83
|
+
Примечания:
|
84
|
+
- Для расчетов используется библиотека `astropy`:
|
85
|
+
- `get_sun`: Получает положение Солнца в геоцентрической системе координат.
|
86
|
+
- `GeocentricMeanEcliptic`: Преобразует координаты в эклиптическую систему.
|
87
|
+
- Результат возвращается в градусах, так как это наиболее распространенный формат
|
88
|
+
для астрономических данных.
|
89
|
+
- Эклиптическая широта Солнца не возвращается, так как она не используется в дальнейших расчетах.
|
90
|
+
|
91
|
+
Зависимости:
|
92
|
+
- `astropy.time.Time`: Для обработки даты и времени.
|
93
|
+
- `astropy.coordinates.get_sun`: Для получения положения Солнца.
|
94
|
+
- `astropy.coordinates.GeocentricMeanEcliptic`: Для преобразования координат
|
95
|
+
в эклиптическую систему.
|
96
|
+
"""
|
37
97
|
datetime = date + ' ' + time
|
38
98
|
observation_time = Time(datetime)
|
39
99
|
|
@@ -51,9 +111,43 @@ def Sun_ecl_lon(date, time):
|
|
51
111
|
print("Техническая проверка:")
|
52
112
|
print(f"Эклиптическая долгота Солнца: {ecliptic_longitude}")
|
53
113
|
print(f"Эклиптическая широта Солнца: {ecliptic_latitude}")
|
54
|
-
|
114
|
+
ecl_lon_of_Sun = ecliptic_longitude.value
|
115
|
+
return(ecl_lon_of_Sun)
|
55
116
|
|
56
117
|
def sum_of_spectrums(wl_1, sp_1, wl_2, sp_2):
|
118
|
+
"""
|
119
|
+
Суммирует два спектра, заданных длинами волн и их интенсивностями.
|
120
|
+
|
121
|
+
Функция принимает два спектра, представленных массивами длин волн и соответствующих
|
122
|
+
интенсивностей, объединяет их по длинам волн и вычисляет сумму интенсивностей
|
123
|
+
на совпадающих длинах волн. Результатом является общий спектр, содержащий все
|
124
|
+
уникальные длины волн из обоих входных спектров.
|
125
|
+
|
126
|
+
Параметры:
|
127
|
+
wl_1 (ndarray): Массив длин волн первого спектра (в нм).
|
128
|
+
sp_1 (ndarray): Массив интенсивностей первого спектра.
|
129
|
+
wl_2 (ndarray): Массив длин волн второго спектра (в нм).
|
130
|
+
sp_2 (ndarray): Массив интенсивностей второго спектра.
|
131
|
+
|
132
|
+
Возвращает:
|
133
|
+
tuple: Кортеж из двух массивов:
|
134
|
+
- result_wl (ndarray): Массив уникальных длин волн, объединяющий
|
135
|
+
длины волн из обоих спектров (в нм).
|
136
|
+
- result_spec (ndarray): Массив суммарных интенсивностей для каждой
|
137
|
+
длины волны из `result_wl`.
|
138
|
+
|
139
|
+
Примечания:
|
140
|
+
- Если длина волны присутствует только в одном из спектров, её интенсивность
|
141
|
+
добавляется без изменений.
|
142
|
+
- Если длина волны присутствует в обоих спектрах, её интенсивности суммируются.
|
143
|
+
- Для объединения длин волн используется функция `numpy.union1d`, которая
|
144
|
+
гарантирует уникальность значений и их сортировку.
|
145
|
+
- Функция предполагает, что входные массивы `wl_1` и `sp_1`, а также `wl_2`
|
146
|
+
и `sp_2`, имеют одинаковую длину.
|
147
|
+
|
148
|
+
Зависимости:
|
149
|
+
- `numpy`: Для работы с массивами и выполнения операций объединения и поиска.
|
150
|
+
"""
|
57
151
|
result_wl = np.union1d(wl_1, wl_2) #создали массив совокупности длин волн
|
58
152
|
result_spec = np.zeros(result_wl.shape[0]) #создали массив для спектра
|
59
153
|
for i in range(result_wl.shape[0]):
|
SkyMapMod/zodiac.py
CHANGED
@@ -8,55 +8,276 @@ import random
|
|
8
8
|
|
9
9
|
#переопределяю тригонометрические функции, чтобы работать с градусами
|
10
10
|
def cos(x):
|
11
|
+
"""
|
12
|
+
Вычисляет косинус угла, заданного в градусах.
|
13
|
+
|
14
|
+
Параметры:
|
15
|
+
x (float): Угол в градусах.
|
16
|
+
|
17
|
+
Возвращает:
|
18
|
+
float: Значение косинуса угла.
|
19
|
+
|
20
|
+
Примечания:
|
21
|
+
- Функция преобразует угол из градусов в радианы перед вычислением.
|
22
|
+
"""
|
11
23
|
return np.cos(x * np.pi / 180)
|
12
24
|
|
13
25
|
def sin(x):
|
26
|
+
"""
|
27
|
+
Вычисляет синус угла, заданного в градусах.
|
28
|
+
|
29
|
+
Параметры:
|
30
|
+
x (float): Угол в градусах.
|
31
|
+
|
32
|
+
Возвращает:
|
33
|
+
float: Значение синуса угла.
|
34
|
+
|
35
|
+
Примечания:
|
36
|
+
- Функция преобразует угол из градусов в радианы перед вычислением.
|
37
|
+
"""
|
14
38
|
return np.sin(x * np.pi / 180)
|
15
39
|
|
16
40
|
def tan(x):
|
41
|
+
"""
|
42
|
+
Вычисляет тангенс угла, заданного в градусах.
|
43
|
+
|
44
|
+
Параметры:
|
45
|
+
x (float): Угол в градусах.
|
46
|
+
|
47
|
+
Возвращает:
|
48
|
+
float: Значение тангенса угла.
|
49
|
+
|
50
|
+
Примечания:
|
51
|
+
- Функция преобразует угол из градусов в радианы перед вычислением.
|
52
|
+
- Для углов, близких к 90° или 270°, результат может быть неопределённым (деление на ноль).
|
53
|
+
"""
|
17
54
|
return np.tan(x * np.pi / 180)
|
18
55
|
|
19
56
|
def acos(x):
|
57
|
+
"""
|
58
|
+
Вычисляет арккосинус числа и возвращает результат в градусах.
|
59
|
+
|
60
|
+
Параметры:
|
61
|
+
x (float): Число в диапазоне [-1, 1].
|
62
|
+
|
63
|
+
Возвращает:
|
64
|
+
float: Значение арккосинуса в градусах.
|
65
|
+
|
66
|
+
Примечания:
|
67
|
+
- Результат преобразуется из радиан в градусы.
|
68
|
+
- Если x не находится в диапазоне [-1, 1], возникает ошибка (ValueError).
|
69
|
+
"""
|
20
70
|
return np.arccos(x) * 180 / np.pi
|
21
71
|
|
22
72
|
def asin(x):
|
73
|
+
"""
|
74
|
+
Вычисляет арксинус числа и возвращает результат в градусах.
|
75
|
+
|
76
|
+
Параметры:
|
77
|
+
x (float): Число в диапазоне [-1, 1].
|
78
|
+
|
79
|
+
Возвращает:
|
80
|
+
float: Значение арксинуса в градусах.
|
81
|
+
|
82
|
+
Примечания:
|
83
|
+
- Результат преобразуется из радиан в градусы.
|
84
|
+
- Если x не находится в диапазоне [-1, 1], возникает ошибка (ValueError).
|
85
|
+
"""
|
23
86
|
return np.arcsin(x) * 180 / np.pi
|
24
87
|
|
25
88
|
def atan(x):
|
89
|
+
"""
|
90
|
+
Вычисляет арктангенс числа и возвращает результат в градусах.
|
91
|
+
|
92
|
+
Параметры:
|
93
|
+
x (float): Число.
|
94
|
+
|
95
|
+
Возвращает:
|
96
|
+
float: Значение арктангенса в градусах.
|
97
|
+
|
98
|
+
Примечания:
|
99
|
+
- Результат преобразуется из радиан в градусы.
|
100
|
+
"""
|
26
101
|
return np.arctan(x) * 180 / np.pi
|
27
102
|
|
28
103
|
#переопределяю прочие функции для красоты записи
|
29
104
|
def exp(x):
|
105
|
+
"""
|
106
|
+
Вычисляет экспоненту числа.
|
107
|
+
|
108
|
+
Параметры:
|
109
|
+
x (float): Число.
|
110
|
+
|
111
|
+
Возвращает:
|
112
|
+
float: Значение экспоненты числа.
|
113
|
+
|
114
|
+
Примечания:
|
115
|
+
- Используется стандартная функция np.exp(x).
|
116
|
+
"""
|
30
117
|
return np.exp(x)
|
31
118
|
|
32
119
|
def sqrt(x):
|
120
|
+
"""
|
121
|
+
Вычисляет квадратный корень числа.
|
122
|
+
|
123
|
+
Параметры:
|
124
|
+
x (float): Неотрицательное число.
|
125
|
+
|
126
|
+
Возвращает:
|
127
|
+
float: Значение квадратного корня числа.
|
128
|
+
|
129
|
+
Примечания:
|
130
|
+
- Если x < 0, возникает ошибка (ValueError).
|
131
|
+
- Используется стандартная функция np.sqrt(x).
|
132
|
+
"""
|
33
133
|
return np.sqrt(x)
|
34
134
|
|
35
135
|
#функция Хевисайда (в контексте статьи определяется именно так)
|
36
136
|
def u(x):
|
137
|
+
"""
|
138
|
+
Вычисляет значение функции Хевисайда (Heaviside step function).
|
139
|
+
|
140
|
+
Функция Хевисайда определяется как:
|
141
|
+
- 0, если x ≤ 0,
|
142
|
+
- 1, если x > 0.
|
143
|
+
Она используется для моделирования условий, которые применяются только
|
144
|
+
в определённых областях небесной сферы, например, для разделения солнечного
|
145
|
+
и антисолнечного полушарий.
|
146
|
+
|
147
|
+
Параметры:
|
148
|
+
x (float): Входное значение, для которого вычисляется функция.
|
149
|
+
|
150
|
+
Возвращает:
|
151
|
+
int: Значение функции Хевисайда:
|
152
|
+
- 0, если x ≤ 0,
|
153
|
+
- 1, если x > 0.
|
154
|
+
|
155
|
+
Примечания:
|
156
|
+
- Функция используется в модели зодиакального света для определения областей
|
157
|
+
применения различных слагаемых в уравнении (1) из статьи Buffington et al. (2016).
|
158
|
+
- Например:
|
159
|
+
- u(90 - ε) ≠ 0 только в солнечном полушарии,
|
160
|
+
- u(ε - 90) ≠ 0 только в антисолнечном полушарии.
|
161
|
+
|
162
|
+
Пример:
|
163
|
+
>>> u(-5)
|
164
|
+
0
|
165
|
+
>>> u(0)
|
166
|
+
0
|
167
|
+
>>> u(5)
|
168
|
+
1
|
169
|
+
"""
|
37
170
|
if x <= 0:
|
38
171
|
return 0
|
39
172
|
elif x > 0:
|
40
173
|
return 1
|
41
174
|
|
42
|
-
#функции для перехода из одной СК в другую
|
43
|
-
#сферические в декартовы
|
44
175
|
def spheral_to_decart(r, lmbd, beta):
|
176
|
+
"""
|
177
|
+
Преобразует сферические координаты в декартовы.
|
178
|
+
|
179
|
+
Функция принимает сферические координаты точки (радиус, долгота, широта)
|
180
|
+
и преобразует их в декартовы координаты (x, y, z). Углы задаются в градусах. Обозначения и порядок следования углов выбраны для
|
181
|
+
удобства использования функции в дальнейшем коде.
|
182
|
+
|
183
|
+
Параметры:
|
184
|
+
r (float): Радиус (расстояние от начала координат до точки).
|
185
|
+
lmbd (float): Долгота (угол в градусах, измеренный от оси X в плоскости XY). Лежит в диапазоне от 0° до 360°.
|
186
|
+
beta (float): Широта (угол в градусах, измеренный от плоскости XY). Лежит в диапазоне от -90° до 90°.
|
187
|
+
|
188
|
+
Возвращает:
|
189
|
+
tuple: Кортеж из трех значений (x, y, z), представляющих декартовы координаты точки:
|
190
|
+
- x (float): Координата по оси X.
|
191
|
+
- y (float): Координата по оси Y.
|
192
|
+
- z (float): Координата по оси Z.
|
193
|
+
|
194
|
+
Пример:
|
195
|
+
>>> r = 1.0
|
196
|
+
>>> lmbd = 45.0 # 45 градусов
|
197
|
+
>>> beta = 30.0 # 30 градусов
|
198
|
+
>>> spheral_to_decart(r, lmbd, beta)
|
199
|
+
(0.6123724356957945, 0.6123724356957945, 0.5)
|
200
|
+
|
201
|
+
Примечания:
|
202
|
+
- Углы `lmbd` (долгота) и `beta` (широта) должны быть заданы в градусах.
|
203
|
+
- Если вы используете углы в радианах, преобразуйте их в градусы с помощью формулы: degrees = radians * 180 / pi.
|
204
|
+
"""
|
45
205
|
x = r * cos(lmbd) * cos(beta)
|
46
206
|
y = r * sin(lmbd) * cos(beta)
|
47
207
|
z = r * sin(beta)
|
48
208
|
return (x, y, z)
|
49
209
|
|
50
|
-
|
210
|
+
|
51
211
|
def decart_to_spheral(x, y, z):
|
212
|
+
"""
|
213
|
+
Преобразует декартовы координаты в сферические.
|
214
|
+
|
215
|
+
Функция принимает декартовы координаты точки (x, y, z)
|
216
|
+
и преобразует их в сферические координаты (радиус, долгота, широта).
|
217
|
+
Углы возвращаются в градусах. Обозначения и порядок следования углов выбраны для удобства использования функции в дальнейшем коде.
|
218
|
+
|
219
|
+
Параметры:
|
220
|
+
x (float): Координата по оси X.
|
221
|
+
y (float): Координата по оси Y.
|
222
|
+
z (float): Координата по оси Z.
|
223
|
+
|
224
|
+
Возвращает:
|
225
|
+
tuple: Кортеж из трех значений (r, lmbd, beta), представляющих сферические координаты точки:
|
226
|
+
- r (float): Радиус (расстояние от начала координат до точки).
|
227
|
+
- lmbd (float): Долгота (угол в градусах, измеренный от оси X в плоскости XY). Лежит в диапазоне от 0° до 360°.
|
228
|
+
- beta (float): Широта (угол в градусах, измеренный от плоскости XY). Лежит в диапазоне от -90° до 90°.
|
229
|
+
|
230
|
+
Пример:
|
231
|
+
>>> x = 0.6123724356957945
|
232
|
+
>>> y = 0.6123724356957945
|
233
|
+
>>> z = 0.5
|
234
|
+
>>> decart_to_spheral(x, y, z)
|
235
|
+
(1.0, 45.0, 30.0)
|
236
|
+
|
237
|
+
Примечания:
|
238
|
+
- Углы `lmbd` (долгота) и `beta` (широта) возвращаются в градусах.
|
239
|
+
- Для преобразования углов обратно в радианы используйте формулу: radians = degrees * pi / 180.
|
240
|
+
- Если `x` близко к нулю, используется малая добавка (1e-30) для избежания деления на ноль.
|
241
|
+
"""
|
52
242
|
r = sqrt(x**2 + y**2 + z**2)
|
53
243
|
lmbd = atan(y/(x + 1e-30))
|
54
244
|
beta = asin(z/r)
|
55
245
|
return(r, lmbd, beta)
|
56
246
|
|
57
|
-
|
58
|
-
def
|
59
|
-
|
247
|
+
|
248
|
+
def rotate_ecl(lmbd, beta, lmbd0, beta0):
|
249
|
+
"""
|
250
|
+
Поворачивает эклиптические координаты на заданные углы.
|
251
|
+
|
252
|
+
Функция принимает начальные эклиптические координаты (долгота и широта)
|
253
|
+
и выполняет их поворот на указанные углы (lmbd0 и beta0).
|
254
|
+
Все углы задаются и возвращаются в градусах.
|
255
|
+
|
256
|
+
Параметры:
|
257
|
+
lmbd (float): Начальная эклиптическая долгота (в градусах).
|
258
|
+
beta (float): Начальная эклиптическая широта (в градусах).
|
259
|
+
lmbd0 (float): Угол поворота по долготе (в градусах).
|
260
|
+
beta0 (float): Угол поворота по широте (в градусах).
|
261
|
+
|
262
|
+
Возвращает:
|
263
|
+
tuple: Кортеж из двух значений (lmbd2, beta2), представляющих новые эклиптические координаты:
|
264
|
+
- lmbd2 (float): Новая эклиптическая долгота (в градусах).
|
265
|
+
- beta2 (float): Новая эклиптическая широта (в градусах).
|
266
|
+
|
267
|
+
Пример:
|
268
|
+
>>> lmbd = 45.0 # Начальная долгота
|
269
|
+
>>> beta = 10.0 # Начальная широта
|
270
|
+
>>> lmbd0 = 30.0 # Угол поворота по долготе
|
271
|
+
>>> beta0 = 5.0 # Угол поворота по широте
|
272
|
+
>>> rotate_ecl(lmbd, beta, lmbd0, beta0)
|
273
|
+
(75.0, 15.0)
|
274
|
+
|
275
|
+
Примечания:
|
276
|
+
- Все углы задаются и возвращаются в градусах.
|
277
|
+
- Для преобразования углов обратно в радианы используйте формулу: radians = degrees * pi / 180.
|
278
|
+
- Функция использует промежуточное преобразование в декартовы координаты для выполнения поворота.
|
279
|
+
"""
|
280
|
+
x, y, z = spheral_to_decart(1, lmbd+lmbd0, beta) #ВОТ ТУТ БЫЛО ИЗНАЧАЛЬНО lmbd-lmbd0
|
60
281
|
x1 = x * cos(beta0) + z * sin(beta0)
|
61
282
|
z1 = - x * sin(beta0) + z * cos(beta0)
|
62
283
|
y1 = y
|
@@ -66,6 +287,26 @@ def rotate_ekl(lmbd, beta, lmbd0, beta0):
|
|
66
287
|
#Далее идут функции, которые входят в общую формулу для расчета зод. света
|
67
288
|
#Компонента S
|
68
289
|
def S(lmbd, beta, lmbd_sun, Omega):
|
290
|
+
"""
|
291
|
+
Вычисляет компоненту S модели зодиакального света.
|
292
|
+
|
293
|
+
Компонента S представляет собой слагаемое, которое моделирует годовое изменение
|
294
|
+
яркости зодиакального света, вызванное наклоном плоскости симметрии пылевого облака
|
295
|
+
относительно эклиптики. Этот эффект перемещается между северным и южным полушариями в течение года.
|
296
|
+
|
297
|
+
Параметры:
|
298
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
299
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
300
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
301
|
+
Omega (float): Долгота восходящего узла плоскости симметрии пылевого облака
|
302
|
+
(в градусах). В модели используется значение Omega = 78.25°.
|
303
|
+
|
304
|
+
Возвращает:
|
305
|
+
float: Значение компоненты S, выраженное в единицах яркости (SMEI ADUs).
|
306
|
+
|
307
|
+
Примечания:
|
308
|
+
- Используется функция u(x)
|
309
|
+
"""
|
69
310
|
c = cos(lmbd - lmbd_sun) * cos(beta)
|
70
311
|
eps = acos(c)
|
71
312
|
first = 6 * abs(sin(lmbd_sun - Omega))
|
@@ -80,13 +321,30 @@ def S(lmbd, beta, lmbd_sun, Omega):
|
|
80
321
|
|
81
322
|
#Компонента D -- "эмпирический вклад в форме гантели"
|
82
323
|
def D(lmbd, beta, lmbd_sun):
|
83
|
-
|
324
|
+
"""
|
325
|
+
Вычисляет компоненту D модели зодиакального света.
|
326
|
+
|
327
|
+
Компонента D представляет собой аналитическое слагаемое в форме "гантели", которое
|
328
|
+
улучшает соответствие модели данным в областях, близких к Солнцу, но удаленных от
|
329
|
+
эклиптики и полюсов. Это эмпирический вклад.
|
330
|
+
|
331
|
+
Параметры:
|
332
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
333
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
334
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
335
|
+
|
336
|
+
Возвращает:
|
337
|
+
float: Значение компоненты D, выраженное в единицах яркости (SMEI ADUs).
|
338
|
+
|
339
|
+
Примечания:
|
340
|
+
- Используется функция rotate_ecl для поворота координат относительно Солнца.
|
341
|
+
"""
|
84
342
|
d = abs(lmbd - lmbd_sun) / 6.5 - abs(beta) + 15 + 5 * u(beta)
|
85
343
|
eps = acos(cos(lmbd - lmbd_sun) * cos(beta))
|
86
344
|
if beta > 0:
|
87
|
-
lmbd1, beta1 =
|
345
|
+
lmbd1, beta1 = rotate_ecl(lmbd, beta, lmbd_sun, 21)
|
88
346
|
elif beta <= 0:
|
89
|
-
lmbd1, beta1 =
|
347
|
+
lmbd1, beta1 = rotate_ecl(lmbd, beta, lmbd_sun, -15)
|
90
348
|
gamma1 = atan(sin(lmbd1)/( 1e-30 + tan(beta1)))
|
91
349
|
eps1 = acos(cos(lmbd1) * cos(beta1))
|
92
350
|
h = gamma1 * (1 - u(beta)) + (gamma1) * u(beta)
|
@@ -99,14 +357,69 @@ def D(lmbd, beta, lmbd_sun):
|
|
99
357
|
|
100
358
|
#Компонента E -- остаточная, не учитывалась
|
101
359
|
def E(lmbd, beta):
|
360
|
+
"""
|
361
|
+
Вычисляет компоненту E модели зодиакального света.
|
362
|
+
|
363
|
+
Компонента E представляет собой остаточный член, который не учитывается в данной
|
364
|
+
реализации модели. Она могла бы быть использована для покрытия дополнительных
|
365
|
+
эмпирических остатков, если бы они были значимыми.
|
366
|
+
|
367
|
+
Параметры:
|
368
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
369
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
370
|
+
|
371
|
+
Возвращает:
|
372
|
+
float: Значение компоненты E, всегда равное 0.
|
373
|
+
|
374
|
+
Примечания:
|
375
|
+
- Компонента E не используется в текущей реализации модели.
|
376
|
+
"""
|
102
377
|
return 0
|
103
378
|
|
104
379
|
#Компонента F -- остаточная, не учитывалась
|
105
380
|
def F(lmbd, beta, lmbd_sun):
|
381
|
+
"""
|
382
|
+
Вычисляет компоненту F модели зодиакального света.
|
383
|
+
|
384
|
+
Компонента F представляет собой остаточный член, который также не учитывается в данной
|
385
|
+
реализации модели. Она могла бы быть использована для покрытия недостатков модели,
|
386
|
+
связанных с инструментальными артефактами.
|
387
|
+
|
388
|
+
Параметры:
|
389
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
390
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
391
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
392
|
+
|
393
|
+
Возвращает:
|
394
|
+
float: Значение компоненты F, всегда равное 0.
|
395
|
+
|
396
|
+
Примечания:
|
397
|
+
- Компонента F не используется в текущей реализации модели.
|
398
|
+
"""
|
106
399
|
return 0
|
107
400
|
|
108
401
|
#Компонента G -- антисолнечная точка
|
109
402
|
def G(lmbd, beta, lmbd_sun):
|
403
|
+
"""
|
404
|
+
Вычисляет компоненту G модели зодиакального света.
|
405
|
+
|
406
|
+
Компонента G моделирует усиление яркости в антисолнечной точке (Gegenschein).
|
407
|
+
Она учитывает угловое расстояние до антисолнечной точки и его влияние на яркость.
|
408
|
+
|
409
|
+
Параметры:
|
410
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
411
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
412
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
413
|
+
|
414
|
+
Возвращает:
|
415
|
+
float: Значение компоненты G, выраженное в единицах яркости (SMEI ADUs).
|
416
|
+
|
417
|
+
Примечания:
|
418
|
+
- Антисолнечная точка определяется как точка, противоположная Солнцу
|
419
|
+
(lmbd_tild = lmbd - lmbd_sun - 180°).
|
420
|
+
- Компонента G убывает для угловых расстояний ε_tild ≥ 60°, чтобы свести
|
421
|
+
вклад усиления к нулю в солнечном полушарии.
|
422
|
+
"""
|
110
423
|
lmbd_tild = lmbd - lmbd_sun - 180
|
111
424
|
if lmbd_tild > 180:
|
112
425
|
lmbd_tild = lmbd_tild - 360
|
@@ -123,6 +436,31 @@ def G(lmbd, beta, lmbd_sun):
|
|
123
436
|
|
124
437
|
#Общая формула для зод. света
|
125
438
|
def zodiacal_light(lmbd, beta, lmbd_sun):
|
439
|
+
"""
|
440
|
+
Вычисляет яркость зодиакального света в заданной точке небесной сферы.
|
441
|
+
|
442
|
+
Функция реализует эмпирическую модель зодиакального света, основанную на данных
|
443
|
+
Solar Mass Ejection Imager (SMEI).
|
444
|
+
|
445
|
+
Параметры:
|
446
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
447
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
448
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
449
|
+
|
450
|
+
Возвращает:
|
451
|
+
float: Значение яркости зодиакального света в единицах S10.
|
452
|
+
|
453
|
+
Примечания:
|
454
|
+
- Все углы задаются в градусах.
|
455
|
+
- Используется функция u(x)
|
456
|
+
- Результат делится на 0.415 для перевода из единиц ADU (SMEI) в единицы S10.
|
457
|
+
- Omega = 78.25° — долгота восходящего узла плоскости симметрии пылевого облака.
|
458
|
+
|
459
|
+
Ссылки:
|
460
|
+
- Buffington, A., Bisi, M.M., Clover, J.M., et al., 2016. Measurements and an empirical
|
461
|
+
model of the Zodiacal brightness as observed by the Solar Mass Ejection Imager (SMEI).
|
462
|
+
Icarus 272, 88–101. doi: 10.1016/j.icarus.2016.02.037
|
463
|
+
"""
|
126
464
|
b = 1.5 * (sqrt(1 + (beta / 1.5)**2) - 1)
|
127
465
|
c = cos(lmbd - lmbd_sun) * cos(beta)
|
128
466
|
eps = acos(c)
|
@@ -145,9 +483,42 @@ def zodiacal_light(lmbd, beta, lmbd_sun):
|
|
145
483
|
from .solar_spectrum import wavelenght_newguey2003, flux_newguey2003
|
146
484
|
from .band_V_data import wavelenght_band_V, trancparency_band_V
|
147
485
|
|
148
|
-
|
149
|
-
#на вход -- массив длин волн и температура. На выходе -- массив значений в Вт/(м^2 м)
|
486
|
+
|
150
487
|
def black_body(lmbd, T):
|
488
|
+
"""
|
489
|
+
Рассчитывает спектр излучения абсолютно черного тела (АЧТ) по закону Планка.
|
490
|
+
|
491
|
+
Функция принимает массив длин волн (в нанометрах) и температуру (в кельвинах),
|
492
|
+
и возвращает спектральную плотность излучения абсолютно черного тела.
|
493
|
+
Расчет выполняется по формуле Планка.
|
494
|
+
|
495
|
+
Параметры:
|
496
|
+
lmbd (ndarray): Массив длин волн в нанометрах (нм).
|
497
|
+
T (float): Температура абсолютно черного тела в кельвинах (K).
|
498
|
+
|
499
|
+
Возвращает:
|
500
|
+
ndarray: Массив значений спектральной плотности излучения в Вт/(м^2 * м).
|
501
|
+
Размерность выходного массива совпадает с размерностью входного массива длин волн.
|
502
|
+
|
503
|
+
Пример:
|
504
|
+
>>> wavelengths = np.array([400, 500, 600]) # Длины волн в нанометрах
|
505
|
+
>>> temperature = 10000 # Температура в кельвинах
|
506
|
+
>>> black_body(wavelengths, temperature)
|
507
|
+
array([1.83e+13, 7.95e+13, 1.29e+14])
|
508
|
+
|
509
|
+
Примечания:
|
510
|
+
- Длина волны задается в нанометрах (нм), но внутри функции преобразуется в метры.
|
511
|
+
- Температура задается в кельвинах (K).
|
512
|
+
- Формула Планка:
|
513
|
+
u(λ, T) = (2 * h * c^2) / λ^5 / (exp((h * c) / (λ * k * T)) - 1),
|
514
|
+
где:
|
515
|
+
- h = 6.63e-34 Дж·с — постоянная Планка,
|
516
|
+
- c = 3e8 м/с — скорость света,
|
517
|
+
- k = 1.38e-23 Дж/К — постоянная Больцмана,
|
518
|
+
- λ — длина волны в метрах,
|
519
|
+
- T — температура в кельвинах.
|
520
|
+
- Выходной массив имеет размерность Вт/(м^2 * м), что соответствует спектральной плотности излучения.
|
521
|
+
"""
|
151
522
|
h = 6.63e-34 #Дж * сек
|
152
523
|
c = 3e8 # м / сек
|
153
524
|
k = 1.38e-23 # Дж / К
|
@@ -155,8 +526,42 @@ def black_body(lmbd, T):
|
|
155
526
|
u = 2 * h * c**2 / (lmbd**5) / (np.exp(h * c / (lmbd) / k / T) - 1)
|
156
527
|
return u
|
157
528
|
|
158
|
-
|
529
|
+
|
159
530
|
def black_body_phot(lmbd, T):
|
531
|
+
"""
|
532
|
+
Рассчитывает спектр излучения абсолютно черного тела (АЧТ) в фотонах.
|
533
|
+
|
534
|
+
Функция принимает массив длин волн (в нанометрах) и температуру (в кельвинах),
|
535
|
+
и возвращает спектральную плотность числа фотонов, излучаемых абсолютно черным телом.
|
536
|
+
Расчет выполняется по модифицированной формуле Планка, учитывающей энергию фотонов.
|
537
|
+
|
538
|
+
Параметры:
|
539
|
+
lmbd (ndarray): Массив длин волн в нанометрах (нм).
|
540
|
+
T (float): Температура абсолютно черного тела в кельвинах (K).
|
541
|
+
|
542
|
+
Возвращает:
|
543
|
+
ndarray: Массив значений спектральной плотности числа фотонов в фот/(м^2 * м * сек).
|
544
|
+
Размерность выходного массива совпадает с размерностью входного массива длин волн.
|
545
|
+
|
546
|
+
Пример:
|
547
|
+
>>> wavelengths = np.array([400, 500, 600]) # Длины волн в нанометрах
|
548
|
+
>>> temperature = 10000 # Температура в кельвинах
|
549
|
+
>>> black_body_phot(wavelengths, temperature)
|
550
|
+
array([5.53e+22, 2.41e+23, 3.89e+23])
|
551
|
+
|
552
|
+
Примечания:
|
553
|
+
- Длина волны задается в нанометрах (нм), но внутри функции преобразуется в метры.
|
554
|
+
- Температура задается в кельвинах (K).
|
555
|
+
- Формула расчета:
|
556
|
+
u(λ, T) = (2 * c) / λ^4 / (exp((h * c) / (λ * k * T)) - 1),
|
557
|
+
где:
|
558
|
+
- h = 6.63e-34 Дж·с — постоянная Планка,
|
559
|
+
- c = 3e8 м/с — скорость света,
|
560
|
+
- k = 1.38e-23 Дж/К — постоянная Больцмана,
|
561
|
+
- λ — длина волны в метрах,
|
562
|
+
- T — температура в кельвинах.
|
563
|
+
- Выходной массив имеет размерность фот/(м^2 * м * сек), что соответствует спектральной плотности числа фотонов.
|
564
|
+
"""
|
160
565
|
h = 6.63e-34 #Дж * сек
|
161
566
|
c = 3e8 # м / сек
|
162
567
|
k = 1.38e-23 # Дж / К
|
@@ -164,8 +569,35 @@ def black_body_phot(lmbd, T):
|
|
164
569
|
u = 2 * c / (lmbd**4) / (np.exp(h * c / (lmbd) / k / T) - 1)
|
165
570
|
return u #уже в фотонах/сек (поделено на hc/lambda)
|
166
571
|
|
167
|
-
|
572
|
+
|
168
573
|
def convolution(array_1, meaning_1, array_2, meaning_2):
|
574
|
+
"""
|
575
|
+
Универсальная функция для свертки двух спектров.
|
576
|
+
|
577
|
+
Эта функция принимает два набора данных: массивы длин волн и соответствующие им спектры для двух объектов,
|
578
|
+
и выполняет операцию свертки на основе совпадающих длин волн.
|
579
|
+
|
580
|
+
Параметры:
|
581
|
+
array_1 (ndarray): Массив длин волн первого объекта.
|
582
|
+
meaning_1 (ndarray): Спектр (значения) первого объекта, соответствующий array_1.
|
583
|
+
array_2 (ndarray): Массив длин волн второго объекта.
|
584
|
+
meaning_2 (ndarray): Спектр (значения) второго объекта, соответствующий array_2.
|
585
|
+
|
586
|
+
Возвращает:
|
587
|
+
tuple: Кортеж из двух NumPy массивов:
|
588
|
+
- array (ndarray): массив, содержащий совпадающие длины волн из array_1 и array_2.
|
589
|
+
- meaning (ndarray): массив, содержащий произведения значений спектров (meaning_1 * meaning_2)
|
590
|
+
для соответствующих длин волн.
|
591
|
+
|
592
|
+
Пример:
|
593
|
+
>>> array_1 = np.array([400, 500, 600])
|
594
|
+
>>> meaning_1 = np.array([1.0, 2.0, 3.0])
|
595
|
+
>>> array_2 = np.array([500, 600, 700])
|
596
|
+
>>> meaning_2 = np.array([4.0, 5.0, 6.0])
|
597
|
+
>>> result = convolution(array_1, meaning_1, array_2, meaning_2)
|
598
|
+
>>> print(result)
|
599
|
+
(array([500, 600]), array([8.0, 15.0]))
|
600
|
+
"""
|
169
601
|
array = []
|
170
602
|
meaning = []
|
171
603
|
for i in range(array_1.shape[0]):
|
@@ -175,7 +607,45 @@ def convolution(array_1, meaning_1, array_2, meaning_2):
|
|
175
607
|
meaning.append(meaning_1[i] * meaning_2[j])
|
176
608
|
return np.array(array), np.array(meaning)
|
177
609
|
|
610
|
+
|
178
611
|
def integral(wl, spec):
|
612
|
+
"""
|
613
|
+
Вычисляет интеграл по спектру методом трапеций.
|
614
|
+
|
615
|
+
Функция принимает массив длин волн (в нанометрах) и соответствующий массив значений спектра,
|
616
|
+
и вычисляет интеграл методом трапеций. Это позволяет получить общую интенсивность излучения
|
617
|
+
или количество фотонов, учитывая заданный спектр.
|
618
|
+
|
619
|
+
Параметры:
|
620
|
+
wl (ndarray): Массив длин волн в нанометрах (нм). Должен быть отсортирован по возрастанию.
|
621
|
+
spec (ndarray): Массив значений спектра в фот/(м^2 * нм * сек).
|
622
|
+
Размерность массива должна совпадать с размерностью массива длин волн.
|
623
|
+
|
624
|
+
Возвращает:
|
625
|
+
float: Значение интеграла, представляющее площадь под кривой спектра.
|
626
|
+
Размерность результата зависит от входных данных:
|
627
|
+
- Если спектр задан в фот/(м^2 * нм * сек), результат будет в фот/(м^2 * сек).
|
628
|
+
|
629
|
+
Пример:
|
630
|
+
>>> wavelengths = np.array([400, 500, 600]) # Длины волн в нанометрах
|
631
|
+
>>> spectrum = np.array([1e13, 2e13, 1.5e13]) # Спектр в фот/(м^2 * нм * сек)
|
632
|
+
>>> integral(wavelengths, spectrum)
|
633
|
+
1.75e16
|
634
|
+
|
635
|
+
Примечания:
|
636
|
+
- Метод трапеций используется для численного интегрирования. Он аппроксимирует площадь под кривой
|
637
|
+
как сумму трапеций, образованных соседними точками.
|
638
|
+
- Формула для одной трапеции:
|
639
|
+
area = (spec[i] + spec[i+1]) / 2 * (wl[i+1] - wl[i]),
|
640
|
+
где:
|
641
|
+
- spec[i] и spec[i+1] — значения спектра в соседних точках,
|
642
|
+
- wl[i] и wl[i+1] — длины волн в соседних точках.
|
643
|
+
- Массивы `wl` и `spec` должны иметь одинаковую размерность.
|
644
|
+
- Результат интегрирования имеет размерность, равную произведению размерностей входных данных:
|
645
|
+
- [wl] = нм,
|
646
|
+
- [spec] = фот/(м^2 * нм * сек),
|
647
|
+
- [результат] = фот/(м^2 * сек).
|
648
|
+
"""
|
179
649
|
shape = wl.shape[0]
|
180
650
|
result = 0
|
181
651
|
for i in range(shape - 1):
|
@@ -183,11 +653,50 @@ def integral(wl, spec):
|
|
183
653
|
return result
|
184
654
|
|
185
655
|
def zodiacal_spectrum(lmbd, beta, lmbd_sun, Sun_sp_wl = wavelenght_newguey2003, Sun_sp_fx = flux_newguey2003, V_wl = wavelenght_band_V, V_tr = trancparency_band_V):
|
656
|
+
"""
|
657
|
+
Вычисляет спектр зодиакального света для заданных эклиптических координат.
|
658
|
+
|
659
|
+
Функция принимает эклиптические координаты точки наблюдения, эклиптическую долготу Солнца,
|
660
|
+
а также спектр Солнца и полосу пропускания V (по умолчанию используются стандартные данные).
|
661
|
+
На основе этих данных функция вычисляет нормировочную константу для солнечного спектра,
|
662
|
+
чтобы его можно было использовать как спектр зодиакального света. Расчет основан на единицах
|
663
|
+
S10, их связи со звездой 10-й звездной величины и коэффициенте пересчета от звезды 10-й величины в полосе V
|
664
|
+
к Солнцу в полосе V.
|
665
|
+
|
666
|
+
Параметры:
|
667
|
+
lmbd (float): Эклиптическая долгота точки наблюдения (в градусах).
|
668
|
+
beta (float): Эклиптическая широта точки наблюдения (в градусах).
|
669
|
+
lmbd_sun (float): Эклиптическая долгота Солнца (в градусах).
|
670
|
+
Sun_sp_wl (ndarray, optional): Массив длин волн солнечного спектра (в нм).
|
671
|
+
По умолчанию используется `wavelenght_newguey2003`.
|
672
|
+
Sun_sp_fx (ndarray, optional): Массив значений солнечного спектра (в фот / (м^2 сек нм)).
|
673
|
+
По умолчанию используется `flux_newguey2003`.
|
674
|
+
V_wl (ndarray, optional): Массив длин волн полосы пропускания V (в нм).
|
675
|
+
По умолчанию используется `wavelenght_band_V`.
|
676
|
+
V_tr (ndarray, optional): Массив значений прозрачности полосы пропускания V.
|
677
|
+
По умолчанию используется `trancparency_band_V`.
|
678
|
+
|
679
|
+
Возвращает:
|
680
|
+
tuple: Кортеж из двух массивов:
|
681
|
+
- Sun_sp_wl (ndarray): Массив длин волн зодиакального спектра (в нм),
|
682
|
+
- Sun_sp_fx (ndarray): Массив значений спектра зодиакального света (в фот / (м^2 сек нм)).
|
683
|
+
|
684
|
+
Примечания:
|
685
|
+
- Единица яркости S10 соответствует 100 фотонам/(см^2 сек) от звезды класса A0.
|
686
|
+
- Коэффициент пересчета N_S10 из единиц S10 в количество фотонов от Солнца:
|
687
|
+
- 1 ед. S10 = 100.6 фотонов/(см^2 сек),
|
688
|
+
- Нормировка солнечного спектра производится путем свертки с полосой пропускания V
|
689
|
+
и последующего интегрирования.
|
690
|
+
- Используется функция `zodiacal_light` для расчета яркости зодиакального света в единицах S10.
|
691
|
+
|
692
|
+
Ссылки:
|
693
|
+
- Buffington, A., Bisi, M.M., Clover, J.M., et al., 2016. Measurements and an empirical model of the Zodiacal brightness as observed by the Solar Mass Ejection Imager (SMEI). Icarus 272, 88–101. doi: 10.1016/j.icarus.2016.02.037
|
694
|
+
"""
|
186
695
|
#коэффициент пересчета из единиц S10 в количество фотонов от Солнца
|
187
696
|
#вычислен на основе спектра АЧТ от звезды класса A0, солнечного спектра и факта, что 1 ед. S10 соответствует 100 фотонов от звезды класса A0
|
188
697
|
#вот столько фотонов/(см^2 сек) от Солнца несет 1 ед S10:
|
189
698
|
N_S10 = 100.6
|
190
|
-
N_S10 = N_S10 * 10**4
|
699
|
+
N_S10 = N_S10 * 10**4 #/ (4 * np.pi) # фот / (м^2 сек ср) -- НАДО ЛИ ДЕЛИТЬ НА 4 ПИ?
|
191
700
|
S10 = zodiacal_light(lmbd, beta, lmbd_sun)
|
192
701
|
Sun_V_wl, Sun_V_sp = convolution(Sun_sp_wl, Sun_sp_fx, V_wl, V_tr) #свертка Солнечного спектра с полосой V
|
193
702
|
integr = integral(Sun_V_wl, Sun_V_sp)
|
@@ -200,7 +709,8 @@ def zodiacal_spectrum(lmbd, beta, lmbd_sun, Sun_sp_wl = wavelenght_newguey2003,
|
|
200
709
|
print('Техническая проверка: S10*N_S10 =', S10 * N_S10)
|
201
710
|
print('А при нормировке и интекрированию получается:', c)
|
202
711
|
#############################################
|
712
|
+
Sun_sp_fx = Sun_sp_fx * A
|
203
713
|
|
204
|
-
return Sun_sp_wl,
|
714
|
+
return Sun_sp_wl, Sun_sp_fx #нм, фот / (м^2 сек нм ср)
|
205
715
|
|
206
716
|
|
@@ -1,21 +1,21 @@
|
|
1
1
|
SkyMapMod/__init__.py,sha256=wCfBqXAT9oawNOwo_FhQwXjeK7SEZSiU-ggVPVUArwg,359
|
2
|
-
SkyMapMod/airglow.py,sha256=
|
2
|
+
SkyMapMod/airglow.py,sha256=tE2Te7WsGbpJtHQLCdzs3-6MoayVIbAqhXb8244BFbo,4473
|
3
3
|
SkyMapMod/airglow_spectrum.py,sha256=4pY4QSGjIDvjs_jvxrowsZ9WLtIUwR0DesoCK6moWjs,127314
|
4
4
|
SkyMapMod/albedo_of_planets.py,sha256=4vlya40XmSfQGsuK_bVFSQSA-uJzYKNNA5UoU4oOZg4,88424
|
5
5
|
SkyMapMod/band_V_data.py,sha256=fOj9H2IdZuqErAxnoLq4A02UXfYMgLNBiLjwrzjfWTs,15223
|
6
6
|
SkyMapMod/modtran_default_kp_transparency.py,sha256=QeLYQA9FNUsKp-eRtOMQFxfq0pdwCnqVIl0X6Vvf7GU,78306
|
7
|
-
SkyMapMod/planets.py,sha256=
|
7
|
+
SkyMapMod/planets.py,sha256=NKNehWtUPDJZGaZbE36il8ng659AKzHhoJHAVIa6wBw,27707
|
8
8
|
SkyMapMod/solar_radio_flux.py,sha256=I02O6Mltv3lfqxif3BHUNAzeElQ5AZax_2L09A3cXb8,842
|
9
9
|
SkyMapMod/solar_spectrum.py,sha256=LjBPSTI6Yq86pwF7haUja7RjRYH4C8HZL8SjyI7zp6g,24433
|
10
|
-
SkyMapMod/star_catalogues.py,sha256
|
11
|
-
SkyMapMod/total_background.py,sha256=
|
10
|
+
SkyMapMod/star_catalogues.py,sha256=-JGHE3m6NCg4Ea57ZR6RuxfftkPJyjJHOaU5Wf7qvRc,4102
|
11
|
+
SkyMapMod/total_background.py,sha256=QeN3NFpqCirB1Cjbp3xZweOeLn45A1ALxMT94MpiOsk,15068
|
12
12
|
SkyMapMod/transparency.py,sha256=HiSbbVX80neh3n284f64sWnrbxpRzPGKvFyid9sVo7I,376
|
13
|
-
SkyMapMod/zodiac.py,sha256=
|
13
|
+
SkyMapMod/zodiac.py,sha256=mT08Cjh2qcL3FVEM0B4G52OeuzWPB9w9mpp89sWRVJo,40729
|
14
14
|
SkyMapMod/data/__init__.py,sha256=_292qgM72hPa2vxDNSaI9QvPunvi-aSXUsZki99q63o,83
|
15
15
|
SkyMapMod/data/load_data.py,sha256=p-Nq5St713HTTDunSWu9ANrF9V0Slaak17IhD0n_bSY,931
|
16
16
|
SkyMapMod/data/star_brightness.npy,sha256=aTsrvGU-vl9pqcOLMz3kqsSA15piynS1aP19aqjT6fQ,51840128
|
17
17
|
SkyMapMod/data/star_temperatures.npy,sha256=Yjp252bzqmKQz00K0ADTkstjzGFulRMgyW1b8kaDOPE,51840128
|
18
|
-
skymapmod-0.1.
|
19
|
-
skymapmod-0.1.
|
20
|
-
skymapmod-0.1.
|
21
|
-
skymapmod-0.1.
|
18
|
+
skymapmod-0.1.35.dist-info/METADATA,sha256=pajZ04HKEiKeWjIqg0aAyX5ey4Rcc-PyJeFEefPqRHA,469
|
19
|
+
skymapmod-0.1.35.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
20
|
+
skymapmod-0.1.35.dist-info/licenses/LICENSE,sha256=eShhW1a77wkzEW9UASG0IaNNaJ3vnxmpcxp8tXh5WCA,1045
|
21
|
+
skymapmod-0.1.35.dist-info/RECORD,,
|
File without changes
|
File without changes
|