VINE—A NUMERICAL CODE FOR SIMULATING ASTROPHYSICAL SYSTEMS USING PARTICLES. I. DESCRIPTION OF THE PHYSICS AND THE NUMERICAL METHODS

VINE—A NUMERICAL CODE FOR SIMULATING ASTROPHYSICAL SYSTEMS USING PARTICLES. I. DESCRIPTION OF THE PHYSICS AND THE NUMERICAL METHODS
复制标题

DOI:
10.1088/0067-0049/184/2/298
复制
发表时间:
2008-02
期刊:
The Astrophysical Journal Supplement Series
影响因子:
--
通讯作者:
M. Wetzstein;A. Nelson;T. Naab;Andreas Burkert
M. Wetzstein;A. Nelson;T. Naab;Andreas Burkert
中科院分区:
其他
文献类型:
--
作者:
M. Wetzstein;A. Nelson;T. Naab;Andreas Burkert

文献摘要

被引文献

相似文献

我们提出了一个数值代码模拟天体物理系统的演变使用粒子来代表底层流体流动。该代码是用Fortran 95编写的,并且被设计为通用、灵活和可扩展的,具有模块化选项,可以在代码编译时或运行时通过文本输入文件进行选择。我们包括一些通用的模块,描述了各种物理过程中通常需要在天体物理界,我们预计,所需的努力,将额外的或替代模块集成到代码将是小的。在其最简单的形式中,代码可以使用一个模块在二维或三维中演化一组粒子的动力学轨迹,该模块实现了用户在编译时选择的Leapfrog或Runge-Kutta-Fehlberg积分器。用户可以选择允许积分器对每个粒子使用单独的时间步长或对所有粒子使用单个全局时间步长来演化系统。粒子可以像N体粒子一样在引力作用下相互作用,所有粒子或任何子集也可以在流体动力学作用下相互作用,通过选择光滑粒子流体动力学(SPH)模块使用SPH方法。第三种粒子种类可以包括在一个模块中,以模拟可能吸积附近SPH或N体粒子的大质量点粒子。这样的颗粒可以用于建模,例如,分子云中的恒星默认情况下,自由边界条件被实现,并且可以选择模块以包括周期性边界条件。我们使用一个二进制的“按”树来组织粒子的快速访问重力和SPH计算。还可以选择实现具有专用“GRAPE”硬件的接口的模块来加速重力计算。如果可用,从GRAPE协处理器获得的力可以透明地替换从树获得的力,或者树和GRAPE两者可以用作GRAPE/树代码的组合。该代码可以在单处理器上不加修改地运行,也可以在大规模共享内存并行机上使用OpenMP编译器指令并行运行。我们提出了几个测试问题的模拟,包括合并模拟两个椭圆星系与80万个粒子。与Springel的Gadget-2代码相比,引力计算是任何模拟(包括自引力)中最昂贵的部分,当在SGI Altix中的Itanium 2处理器上运行时,在椭圆星系合并模拟的不同快照上进行测试时,VINE的速度快了4.6-4.9倍。使用八个处理器对相同设置进行完整模拟,VINE的速度提高了2.91倍。该代码在Gnu通用公共许可证的条款下向公众开放。
We present a numerical code for simulating the evolution of astrophysical systems using particles to represent the underlying fluid flow. The code is written in Fortran 95 and is designed to be versatile, flexible, and extensible, with modular options that can be selected either at the time the code is compiled or at run time through a text input file. We include a number of general purpose modules describing a variety of physical processes commonly required in the astrophysical community and we expect that the effort required to integrate additional or alternate modules into the code will be small. In its simplest form the code can evolve the dynamical trajectories of a set of particles in two or three dimensions using a module which implements either a Leapfrog or Runge–Kutta–Fehlberg integrator, selected by the user at compile time. The user may choose to allow the integrator to evolve the system using individual time steps for each particle or with a single, global time step for all. Particles may interact gravitationally as N-body particles, and all or any subset may also interact hydrodynamically, using the smoothed particle hydrodynamic (SPH) method by selecting the SPH module. A third particle species can be included with a module to model massive point particles which may accrete nearby SPH or N-body particles. Such particles may be used to model, e.g., stars in a molecular cloud. Free boundary conditions are implemented by default, and a module may be selected to include periodic boundary conditions. We use a binary “Press” tree to organize particles for rapid access in gravity and SPH calculations. Modules implementing an interface with special purpose “GRAPE” hardware may also be selected to accelerate the gravity calculations. If available, forces obtained from the GRAPE coprocessors may be transparently substituted for those obtained from the tree, or both tree and GRAPE may be used as a combination GRAPE/tree code. The code may be run without modification on single processors or in parallel using OpenMP compiler directives on large-scale, shared memory parallel machines. We present simulations of several test problems, including a merger simulation of two elliptical galaxies with 800,000 particles. In comparison to the Gadget-2 code of Springel, the gravitational force calculation, which is the most costly part of any simulation including self-gravity, is ∼4.6–4.9 times faster with VINE when tested on different snapshots of the elliptical galaxy merger simulation when run on an Itanium 2 processor in an SGI Altix. A full simulation of the same setup with eight processors is a factor of 2.91 faster with VINE. The code is available to the public under the terms of the Gnu General Public License.