Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CloudModel

Описание проекта

CloudModel - это комплексная реализация гравитационной модели газовых облаков в астрофизике на языке программирования Julia. Модель позволяет рассчитывать гравитационный потенциал, плотность и распределение массы в газовом облаке с использованием итеративных численных методов и многопоточных вычислений.

Физические основы

Модель основана на следующих физических принципах и уравнениях:

  • Уравнение Пуассона для гравитационного потенциала: ∇²Φ = 4πGρ

  • Барометрическое уравнение для распределения плотности: ρ = ρ₀·exp(-Φμ/RT)

  • Итеративное решение связанной системы уравнений:

    1. Решение уравнения Пуассона с текущей плотностью
    2. Обновление распределения плотности по барометрическому закону
    3. Пересчет общей массы облака
  • Фундаментальные константы:

    • Гравитационная постоянная G = 6.67×10⁻¹¹ м³/кг/с²
    • Газовая постоянная R = 8.31 Дж/моль/К

Системные требования

  • Julia версии 1.6 или выше
  • Многоядерный процессор для эффективного использования многопоточности
  • Минимум 4 ГБ оперативной памяти (рекомендуется 8 ГБ)
  • Графическая карта с поддержкой OpenGL для визуализации

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/AlarionCaelestine/cloud-model.git
cd cloud-model
  1. Установите необходимые пакеты 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)

Использование в коде Julia

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"])'

Проблемы с визуализацией

Если возникают проблемы с визуализацией:

  1. Убедитесь, что установлен OpenGL
  2. Проверьте, что установлен пакет GLMakie
  3. Попробуйте переустановить GLMakie:
julia -e 'using Pkg; Pkg.rm("GLMakie"); Pkg.add("GLMakie")'

Проблемы с многопоточностью

Для проверки количества доступных потоков:

julia -e 'println(Threads.nthreads())'

Для установки количества потоков:

export JULIA_NUM_THREADS=4

Применение в астрофизике

Модель может быть использована для:

  • Моделирования протозвездных облаков
  • Анализа стабильности газовых облаков
  • Изучения распределения массы
  • Исследования условий коллапса и фрагментации

Ограничения и дальнейшее развитие

Текущие ограничения

  • Предполагается изотермическое состояние газа
  • Не учитывается вращение облака
  • Не моделируются магнитные поля
  • Не учитывается турбулентность

Планируемые улучшения

  • Добавление магнитных полей
  • Учет вращения облака
  • Адаптивное разрешение сетки
  • Неизотермические расчеты
  • Использование GPU для ускорения вычислений

Лицензия

Проект распространяется под лицензией MIT.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages