多体N-body模型

概述

N-Body问题又称为N体问题或多体问题,N表示任意正整数,研究N个质点相互之间作用的运动规律。在物理学和天文学中,N体模拟是通常在物理力(例如重力)的影响下对粒子动力学系统的模拟(请参见n体问题)。N体模拟是天体物理学中广泛使用的工具,从研究诸如地球 - 月 - 太阳系统之类的少数体系统的动力学到了解宇宙大尺度结构的演化。在N-body系统中,每个粒子体都会与剩下的其他粒子产生交互作用(交互作用因具体问题而异),从而产生相应的物理现象。对于大量的粒子,计算过程花费巨大,从而可以利用计算算法优化和高性能的并行计算来减少计算时间。

All-Pairs法

这是一种最简单的暴力求解的方法,它直接计算每一个粒子体与剩下的所有粒子体的相互作用,算法复杂度为O(n^2).

天体星系模拟主要考虑的是万有引力。根据万有引力定律计算每个粒子与其他粒子的作用力,计算出所有粒子的相互作用力后,即可计算加速度以及更新后的位置。(考虑方向矢量)。

代码实现天体模拟的计算并不复杂,最重要的是如何优化计算。

一种MPI+Openmp结合的并行优化方法:

  • MPI控制进程,每个进程平均分配粒子进行计算
  • openmp并行处理计算集中部分

我的代码: 戳这里


   转载规则


《多体N-body模型》 tannl 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
CSAPP DataLab——信息的表示和处理 CSAPP DataLab——信息的表示和处理
数据实验室《深入理解计算机系统》书籍的配套作业。光看书实在是枯燥到有点看不下去,打算做一下MIT这门课程的实验,反正资源是公开的感觉也比较有趣。 实验资源 开始之前测试环境就遇到了报错: 错误: fatal error: bits/libc
2020-07-28
下一篇 
并行计算——MPI(三) 并行计算——MPI(三)
高级并行程序设计具有不连续数据发送的程序设计MPI除了可以发送或接收连续的数据之外,还可以处理不连续的数据,其基本方法有两种:一是允许用户自定义新的数据类型,又称派生数据类型;二是数据的打包与解包,即在发送方将不连续的数据打包到连续的区域,
2020-04-15
  目录