{"id":22819868,"url":"https://github.com/aemarkov/gravsim2","last_synced_at":"2025-03-30T23:15:28.926Z","repository":{"id":86785974,"uuid":"78189392","full_name":"aemarkov/GravSim2","owner":"aemarkov","description":"Расчет гравитационной задачи N-тел при помощи OpenMP и MPI - семестровая работа к курсу \"Параллельное программирование\"","archived":false,"fork":false,"pushed_at":"2017-01-06T09:30:33.000Z","size":47598,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-06T04:43:42.521Z","etag":null,"topics":["mpi","n-body","openmp","simulation","study-project"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aemarkov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2017-01-06T08:35:53.000Z","updated_at":"2023-03-03T21:24:17.000Z","dependencies_parsed_at":"2023-03-13T19:53:08.904Z","dependency_job_id":null,"html_url":"https://github.com/aemarkov/GravSim2","commit_stats":null,"previous_names":["aemarkov/gravsim2"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aemarkov%2FGravSim2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aemarkov%2FGravSim2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aemarkov%2FGravSim2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aemarkov%2FGravSim2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aemarkov","download_url":"https://codeload.github.com/aemarkov/GravSim2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246390859,"owners_count":20769478,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mpi","n-body","openmp","simulation","study-project"],"created_at":"2024-12-12T15:14:37.137Z","updated_at":"2025-03-30T23:15:28.900Z","avatar_url":"https://github.com/aemarkov.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GravSim2\nРасчет гравитационной задачи N-тел при помощи OpenMP и MPI\n\n## Описание\nЭти программы позволяют моделировать движение какого-то количества притягивающихся частиц и визуализировать их движение.\n\n Сюда входят следующие программы\n\n  - Моделирование при помощи OpenMP (рекомендуется для запуска на 1м вычислительном узле)\n  - Моделирование при помощи MPI\n  - Визуализатор\n\nПрограммы моделирования записывают анимацию движения точек в файл, а затем при помощи визуализатора можно ее просмотреть. Визуализатор\nпозволяет перемещать и вращать камеру.\n\n![](images/gravsim.jpg)\n\n## Сборка\n### Сборка под Windows\nДля сборки используйте Visual Studio 2015, достаточно просто собрать решение. Для наибольшей производительности\n(в несколько раз\\десятков раз больше) используйте `Release`, а не `Debug`. Для сборки проекта с MPI необходимо, чтобы Microsoft MPI\nбыл установлен на компьютер.\n\n#### Запуск визуализатора\nИз Visual Studio визуализатор запускается просто запуском проекта `Visualizer`, но чтобы иметь возможность запускать его отдельно,\nв папку с  `.exe` файлом визуализатора скопируйте следующие файлы и папки из папки `Visualizer`:\n\n - glew32.dll\n - SDL32.dll\n - shaders\n\n#### Бинарники\nВы можете скачать [релиз](https://github.com/Garrus007/GravSim2/releases) и просто запустить, скорее всего он работает.\n\n### Сборка под Linux\nВам потребуется g++ (с поддержкой C++ 11, но на дворе 2017 год!)\n\n#### Сборка OpenMP проекта\nOpenMP отлично собирается и работает\n\n```\nmake OpenMPGrav\n```\n\n#### Сборка MPI проекта\nЯ вроде бы сделал, чтобы он собирался, но MPI у меня нет. Я закинул проект на кластер ВолгГТУ, собрал там и возникло несколько ошибок.\nЯ их потом вроде исправил, но не факт, что все, а качать проект обратно лень. Но там ничего смертельного.\n\nДля сборки с MPI вам потребуется какой-то поддерживающий это компилятор, например Intel C++ Compiler.\nИсправьте `Makefile`, в случае с Intel C++ Compiler:\n\n```Makefile\nCC=mpiicc\n```\nСборка\n\n```\nmake MPIGrav\n```\n\n#### Сборка визуализатора\nНикак. Он у меня зависит от Windows-версий SDL2 и glew32. Для сборки под Linux самостоятельно напишите Makefile и, возможно, что придется\nисправить.\n\n## Запуск\nОба проекта (OpenMP и MPI) используют одни и те же аргументы командной строки\n\n```\n -particles \u003cnum of particles\u003e -steps \u003cnum of steps\u003e -params \u003csimulation params file\u003e  -out \u003coutput file\u003e [-nt \u003cnumber of threads\u003e]\n ```\n\n Если число потоков не указано, будет столько, сколько установит OpenMP (по-умолчанию - все доступные потоки).\n\n Формат файла параметров\n\n ```\n  \u003cDt\u003e\n  \u003cPoint mass\u003e\n  \u003cG\u003e\n  \u003cMin dist\u003e\n  \u003cRadius\u003e\n ```\n### Запуск визуализатора\n\n```\nVisualizer \u003cpoints file\u003e\n```\n\nШаг по времени `Dt` не используется\n\n### Настройки визуализатора\nУ визуализатора нет настроек, и чтобы настроить скорость воспроизведения и начальное положение камеры придется редактировать код.\n\n#### Скорость воспроизведения\n`Visualizer.cpp`\n\n```cpp\nunsigned int framesPerRenderFrame = 1;   //Скорость воспроизведения\n```\n\n`framesPerRenderFram` указывает, раз в сколько кадров рендера будет загружаться новые координаты точек из файла\n\n#### Начальное положение и поворот камеры\n`Engine\\Engine.cpp`\n\n```cpp\n\tcamera.SetPosition(0, 300, 0);         //X Y Z, ось X - влево, Y - вверх, Z - вперед,\n\tcamera.SetRotationAngles(0, -85, 0);   //YAW PITCH ROLL в градусах\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faemarkov%2Fgravsim2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faemarkov%2Fgravsim2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faemarkov%2Fgravsim2/lists"}