This is ETICS (Expansion Techniques In Collisionless Systems), a GPU (currently CUDA only) N-body code which uses series expansion to calculate the gravitational field. See more details in this publication:
Meiron, Y., Li, B., Holley-Bockelmann, K., & Spurzem, R. 2014, ApJ, 792, 98
http://adsabs.harvard.edu/abs/2014ApJ...792...98M
- ETICS standalone program
- ETICS static library
- ETICS module for AMUSE
- CUDA (>= 6; mandatory)
- HDF5 (optional)
- Boost (optional)
- AMUSE (mandatory only for AMUSE module)
To disable HDF5 [insert explanation here] To disable Boost [insert explanation here]
make standalone
builds in src/
.
make library
builds in src/
.
make
builds in top level directory. The whole etics
directory has to be placed (or
linked) inside:
$AMUSE_DIR/src/amuse/community/
The file.ini
is a self-explanatory input file; if compiled without Boost, fill
in the relevant variables in file noboost.inc
which is compiled into the
executable (any change of parameters requires re-compilation). Start simulation
with:
./etics file.ini
Any input file name is acceptable.
- No MEX
The MEX (Multipole Expansion) method is not available in this version; thus, the SCF (Self-Consistent Field) method is the only expansion technique available. The ETICS program has been heavily restructured and the MEX routines are no longer compatible. Hopefully this will be fixed.
- Hardcoded launch configuration
For at least one of the CUDA kernels, for various reasons, it seems that "brute force" search is needed to find the optimal launch configuration. Currently it is hardcoded, and a primitive search routine is provided.
- Problem for particles with |θ| << 1
Due to using an unstable recursion relation to calculate the Associated Legendre polynomials, particles in a narrow cone around the z-axis cannot be considered accurately. This means that they give an erroneous contribution to the gravitational field and also are assigned erroneous force and potential. The size of this cone increases with the angular term of the expansion. To partly solve this, the current (ugly) fix is to only consider particles with cos(θ) > 0.999 at the monopole level. This is not so bad because the monopole is always the most dominant term (and is error free) and the number of particles in this cone is small and they are transient (i.e. they come out of it usually in a small number of steps). A somewhat better solution is to make this arbitrary cutoff of 0.999 l-dependent, and an even better solution would be to use an asymptotic expression for the Associated Legendre polynomials.