
PYSDM은 입자 집단의 역학을 시뮬레이션하기위한 패키지입니다. PYSDM은 분산 된 단계의 표현을 담당하는 분산 상을 포함하는 유체 흐름을 모델링하는 시뮬레이션 시스템을위한 빌딩 블록 역할을합니다. 현재, 개발은 대기 구름 물리 응용 분야, 특히 에어로졸/클라우드/비 미세 물리학을 나타내는 입자 기반 (일명 슈퍼 드로플렛) 접근법을 사용하여 습한 공기에 침수 된 입자의 역학을 모델링하는 데 중점을 둡니다. 이 패키지는 충돌 성장을 나타내는 (Shima et al. 2009)를위한 수퍼 드로플렛 메소드 (SDM) Monte-Carlo 알고리즘의 Pythonic 고성능 구현을 특징으로합니다.
PYSDM 문서화는 https://open-atmos.github.io/pysdm에서 유지됩니다
PYSDM을 사용하여 다양한 유형의 계산 및 시뮬레이션을 수행하는 방법을 보여주는 예제 Jupyter Notebooks가 점점 커지고 있습니다. 대부분의 예제 노트북은 결과를 재현하고 문헌에서 플롯을 작성합니다. 예제 목록과 노트북에 대한 링크 (클라우드에서 실행되거나 볼 수 있음)는 아래를 참조하십시오.
Jupyter 노트북 형태의 튜토리얼 세트도 있습니다. 이 튜토리얼은 교육 목적을위한 것이며 PYSDM을 사용하여 대화식 시뮬레이션을 실행하기 위해 위젯과 짝을 이루는 클라우드 미세 물리적 개념에 대한 간단한 설명을 포함합니다. 각 튜토리얼에는 또한 숙제 문제로 사용할 수있는 일련의 질문이 있습니다. 예와 마찬가지로,이 튜토리얼은 "클라우드에서"실행되거나 볼 수 있습니다.
PYSDM에는 NUMBA 및 Thrustrtc 위에 구축 된 GPU 기지 백엔드를 기반으로 한 다중 스레드 CPU 백엔드가 이용 가능한 두 가지 대체 병렬 숫자 크런치 백엔드가 있습니다. Numba 백엔드 (별칭 CPU )는 멀티 코어 CPU에 대한 다중 스레드 병렬 처리 기능을 갖추고 있으며 LLVM 인프라를 기반으로 한 정시 컴파일 기술을 사용합니다. ThrustRTC 백엔드 (Aliased GPU )는 SIMT 병렬화 모델을 활용하는 PYSDM의 GPU 기지 작업을 제공합니다. GPU 백엔드를 사용하려면 NVIDIA 하드웨어 및 CUDA 드라이버가 필요합니다.
PYSDM 기능에 대한 개요 (및 논문에서 PYSDM을 인용하는 선호하는 방법)는 Joss 논문을 참조하십시오.
PYSDM은 De Jong, Mackay et al. 2023.
PYSDM 시뮬레이션을 특징으로하는 출판 된 논문 목록뿐만 아니라 PYSDM의 대화 및 기타 자료 목록은 Project Wiki를 참조하십시오.
PYSDM 의존성은 Numpy, Numba, Scipy, Pint, Chempy, Pyevtk, Thrustrtc 및 Curandrtc입니다.
pip 사용하여 PYSDM을 설치하려면 PIP를 사용하십시오 : pip install PySDM (또는 pip install git+https://github.com/open-atmos/PySDM.git 최신 릴리스 이상의 업데이트를 얻습니다).
Conda 사용자는 pip 사용할 수 있습니다. Conda Docs의 설치가 아닌 패키지 섹션을 참조하십시오. PYSDM의 종속성은 다음 콘다 채널에서 사용할 수 있습니다.
개발 목적으로 저장소를 복제하고 pip -e 사용하여 설치하는 것이 좋습니다. 테스트 시간 종속성은 pip -e .[tests] 와 함께 설치할 수 있습니다.
PYSDM 예제는 PySDM-examples 패키지를 구성합니다. 예제에는 PySDM_examples package setup.py 파일에 추가 종속성이 나와 있습니다. 예제 Jupyter 노트북을 실행하려면 PySDM_examples 패키지를 설치해야합니다. 제안 된 설치 및 발사 단계는 다음과 같습니다.
git clone https://github.com/open-atmos/PySDM.git
pip install -e PySDM
pip install -e PySDM/examples
jupyter-notebook PySDM/examples/PySDM_examples
또는 pip install PySDM-examples 사용하여 pypi.org에서 예제 패키지를 설치할 수도 있습니다 (이것은 노트북 자체에 적용되지 않고 지원하는 .py 파일에만 적용됨).
프로젝트에 새 코드를 제출하면 GitHub PULL 요청을 사용하십시오. 코드 작성자의 기록을 유지하고 코드 검토 워크 플로우를 추적하고 보관하는 데 도움이되며 새로 추가 된 코드로 테스트 실행을 자동화하는 지속적인 통합 설정의 이점을 얻을 수 있습니다.
코드 기여는 저작권의 전송을 암시하는 것으로 가정합니다. 예외를 만들 필요가 있다면, 풀 요청을 만들 때 또는 다른 방식으로 코드를 기여할 때 표시하십시오. 어쨌든 기여한 코드의 라이센스는 GPL v3과 호환되어야합니다.
코드를 개발하면 파이썬의 길과 키스 원칙을 따릅니다. Codebase는 Pycharm Code Inspections 및 Pylint, Black 및 Isort Code Analysis (모두 CI 워크 플로의 일부)의 혜택을 받았습니다.
우리는 또한 사전 커밋 후크를 사용합니다. 우리의 경우, 후크는 파일을 수정하고 다시 형성합니다. 사전 커밋 후크를 로컬로 실행할 수 있으며, 그 결과 커밋하기 전에 결과적인 변경 사항을 준비해야합니다. 후크를 로컬로 설정하려면 pip install pre-commit pre-commit install 통해 GIT 후크를 설정하십시오 (프로젝트를 복제 할 때마다 수행해야 함). 모든 사전 커밋 후크를 실행하려면 pre-commit run --all-files . 새 후크를 추가하거나 기존 후크를 변경 해야하는 경우 .pre-commit-config.yaml 파일을 수정할 수 있습니다.
PYSDM 개발자에게 다루어진 추가 힌트는 Open-Atmos/Python-Dev-Hints Wiki 및 PYSDM Howtos에서 유지됩니다.
PYSDM의 부정확하거나 직관적이지 않거나 문서화되지 않은 Bahaviour에 관한 문제는 GitHub 문제 추적기에서보고하는 것이 가장 좋습니다. 기능 요청은 "Ideas ..."PYSDM Wiki 페이지에 기록됩니다.
PYSDM 코드를 이해, 사용 및 확장하는 데 도움을 구하기 위해 GitHub 토론 기능 (문제 추적기가 아닌)을 사용하는 것이 좋습니다.
우리는 귀하의 기여와 피드백을 기대합니다.
저작권 : Jagiellonian University (2019-2023) & Agh University of Krakow (2023 -...)
라이센스 : GPL V3