CloudModel - это комплексная реализация гравитационной модели газовых облаков в астрофизике на языке программирования Julia. Модель позволяет рассчитывать гравитационный потенциал, плотность и распределение массы в газовом облаке с использованием итеративных численных методов и многопоточных вычислений.
Модель основана на следующих физических принципах и уравнениях:
-
Уравнение Пуассона для гравитационного потенциала: ∇²Φ = 4πGρ
-
Барометрическое уравнение для распределения плотности: ρ = ρ₀·exp(-Φμ/RT)
-
Итеративное решение связанной системы уравнений:
- Решение уравнения Пуассона с текущей плотностью
- Обновление распределения плотности по барометрическому закону
- Пересчет общей массы облака
-
Фундаментальные константы:
- Гравитационная постоянная G = 6.67×10⁻¹¹ м³/кг/с²
- Газовая постоянная R = 8.31 Дж/моль/К
- Julia версии 1.6 или выше
- Многоядерный процессор для эффективного использования многопоточности
- Минимум 4 ГБ оперативной памяти (рекомендуется 8 ГБ)
- Графическая карта с поддержкой OpenGL для визуализации
- Клонируйте репозиторий:
git clone https://github.com/AlarionCaelestine/cloud-model.git
cd cloud-model- Установите необходимые пакеты Julia:
julia -e 'using Pkg; Pkg.add(["Unitful", "UnitfulAstro", "GLMakie", "StaticArrays", "ProgressBars"])'julia --threads=auto run_model.jl --iterations=5000 --N=100 --size=50Доступные параметры:
--iterations=N: Количество итераций (по умолчанию: 1000)--N=N: Размер сетки (по умолчанию: 50)--size=N: Размер области в а.е. (по умолчанию: 40)--threads=N: Количество потоков (по умолчанию: 1)
using CloudModel
# Запуск симуляции с параметрами по умолчанию
state, constants = run_simulation()
# Запуск с пользовательскими параметрами
state, constants = run_simulation(
n_iterations=2000,
size=60.0,
N=100,
T=30.0,
rho_0=5e-17,
mu=2.35e-3,
verbose=true
)
# Визуализация результатов
visualize_results(state, constants)- Многопоточные вычисления для ускорения расчетов
- Комплексная визуализация результатов:
- 1D графики распределения плотности и потенциала
- 2D тепловые карты срезов облака
- 3D контурные поверхности для анализа структуры
- Работа с физическими единицами через пакеты Unitful.jl и UnitfulAstro.jl
- Гибкая настройка параметров через командную строку или код
- Автоматическое сохранение результатов визуализации
| Параметр | Описание | Тип | Значение по умолчанию |
|---|---|---|---|
n_iterations |
Количество итераций | Int | 1000 |
size |
Размер области в а.е. | Float64 | 40.0 |
N |
Количество точек сетки | Int | 50 |
T |
Температура облака в К | Float64 | 50.0 |
rho_0 |
Начальная плотность в кг/m³ | Float64 | 6e-17 |
mu |
Молекулярная масса в кг/моль | Float64 | 2.35e-3 |
verbose |
Вывод информации о прогрессе | Bool | true |
Результаты симуляции автоматически сохраняются в директории visualizations/ в формате PNG. Файлы именуются по шаблону:
cloud_model_N_iterations_size.png
Где:
N- размер сеткиiterations- количество итерацийsize- размер области в а.е.
using CloudModel
# Запуск симуляции с параметрами по умолчанию
state, constants = run_simulation()
# Визуализация результатов
visualize_results(state, constants)using CloudModel
# Запуск симуляции с высоким разрешением
state, constants = run_simulation(
n_iterations=5000,
N=100,
size=80.0,
T=30.0,
verbose=true
)
# Визуализация с пользовательскими параметрами
visualize_results(
state, constants,
n_iterations=5000,
output_prefix="high_res_cloud"
)Если возникли проблемы с установкой пакетов, попробуйте:
julia -e 'using Pkg; Pkg.update()'
julia -e 'using Pkg; Pkg.add(["Unitful", "UnitfulAstro", "GLMakie", "StaticArrays", "ProgressBars"])'Если возникают проблемы с визуализацией:
- Убедитесь, что установлен OpenGL
- Проверьте, что установлен пакет GLMakie
- Попробуйте переустановить GLMakie:
julia -e 'using Pkg; Pkg.rm("GLMakie"); Pkg.add("GLMakie")'Для проверки количества доступных потоков:
julia -e 'println(Threads.nthreads())'Для установки количества потоков:
export JULIA_NUM_THREADS=4Модель может быть использована для:
- Моделирования протозвездных облаков
- Анализа стабильности газовых облаков
- Изучения распределения массы
- Исследования условий коллапса и фрагментации
- Предполагается изотермическое состояние газа
- Не учитывается вращение облака
- Не моделируются магнитные поля
- Не учитывается турбулентность
- Добавление магнитных полей
- Учет вращения облака
- Адаптивное разрешение сетки
- Неизотермические расчеты
- Использование GPU для ускорения вычислений
Проект распространяется под лицензией MIT.