102 lines
2.8 KiB
Markdown
102 lines
2.8 KiB
Markdown
ETICS
|
|
=====
|
|
|
|
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
|
|
|
|
|
|
What's inside
|
|
-------------
|
|
|
|
- ETICS standalone program
|
|
- ETICS static library
|
|
- ETICS module for AMUSE
|
|
|
|
|
|
Prerequisites
|
|
-------------
|
|
|
|
- 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]
|
|
|
|
|
|
Compilation
|
|
-----------
|
|
|
|
### Standalone program
|
|
|
|
make standalone
|
|
|
|
builds in `src/`.
|
|
|
|
|
|
### Static library
|
|
|
|
make library
|
|
|
|
builds in `src/`.
|
|
|
|
|
|
### AMUSE module
|
|
|
|
make
|
|
|
|
builds in top level directory. The whole `etics` directory has to be placed (or
|
|
linked) inside:
|
|
|
|
$AMUSE_DIR/src/amuse/community/
|
|
|
|
|
|
How to use
|
|
----------
|
|
|
|
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.
|
|
|
|
|
|
Known issues
|
|
------------
|
|
|
|
* 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.
|