galotfa
: galactic on-the-fly analysis,
is a library of on-the-fly analysis for astronomical N-body simulations.
Design scheme (contents)
The on-the-fly analysis is done at specified synchronized time steps. Its workflow is:
!!!!! To be updated!
graph TB
Data((Data))
Pre[Pre-process]
Model[Model level]
Par[Particle level]
Pop[Population level]
Selct[Particle selection]
Snap([Expansion snapshot])
LogMd([Log of model])
LogOC([Log of orbital curves])
LogPop([Log of populations])
Data --> Pre
Pre --> Model
Pre --> Par
Pre --> Selct
Par --> Pop
Model --> Pop
Pop --> LogPop
Par --> Snap
Selct --> LogOC
Model --> LogMd
Every box is a separate module in the codes. The details of them are explained in the file
development-manual/development.md
. The runtime parameters of each module are specified in the
galotfa.ini
file, which is a INI format file. The parameters are explained in Usage.
Features of galotfa
(contents)
- Out-of-the-box: in general there is no need to modify the simulation code or parameter files. Just run
simulation with demo ini files is enough. Feel free to raise your issue, if you feel hard to use any part
of
galotfa
. - User friendly program API and usage guidance: most functions of
galotfa
can be used out-of-the-box, and we also provide detailed informations for persons who are interested to change the codes. - Extensible: easy to add new analysis functions in
galotfa
, and easy usegalotfa
in your own simulation code (if such code follows the general simulation convention in the society).- The compiled shared library of
galotfa
offers C-style APIs, so it can be in simulation codes written in many languages. - Although this project is concentrated on disk galaxy simulations, it can also be easily extended to other types of simulations, such as cluster simulations, cosmology simulations, etc.
- The compiled shared library of
- You-Complete-Me flavor: if you need more wonderful features, you can make this project better.
- Least dependency on other libraries: only standard libraries or widely used libraries are used in this project, so it's easy to compile and install in most systems.
- Fast: use
MPI
to parallelize the analysis, and use efficient algorithms to calculate the quantities. - All output files are in
HDF5
format, which is a widely used format in astronomy.
Fork of Gadget4
(contents)
There is a built-in fork of Gadget4
in the galotfa
repo, which is a modified version of
Springel's famous codes with following additional features:
-
Zero-mass potential tracers: can use a separate particle types to served as potential tracer, which has 0 mass. During gravity calculation, their position is fixed to some anchor particles, so they can be used to measure the potential at their positions.
- This feature is controlled by an additional config parameter
ZERO_MASS_POT_TRACER
in the configuration file ofGadget4
. - Cost of such tracers: additional memory and time cost of gravity calculation, slightly change the gravity tree's structure.
- The potential at the position of the potential tracers will be output to a separate file, which can be used get the potential at time steps that have no snapshot output.
- This feature is controlled by an additional config parameter
-
Additional runtime parameters related to the potential tracers:
PotTracerType
: specify the particle type of potential tracer. Note that this should be consistent with the given initial condition, namely it should really be zero-mass particles in the initial condition.PotOutStep
: the output period in unit of synchronized time steps.PotOutFile
: output filename.RecenterPartType
: the particle type(s) used to anchor the positions of the tracers. In some cases, if the whole galaxy is drifting and the tracers are fixed then their measured potential may be outside of the galaxy. So you can use some particles to anchor the positions of the tracers, then tracers are rigidly attached to the anchors' center-of-mass. For example, for disk galaxy, use disk particles to anchor the tracers is a good choice.RecenterThreshold
: the threshold to determine whether the calculation of the anchors' center-of-mass is convergent or not. The unit is the internal length during the simulation.
- The config parameter to enable
galotfa
or not:GALOTFA_ON
.
Installation (contents)
First, you need to check the following dependencies before you install galotfa
:
galotfa
needs the following non-standard libraries for compilation:
- A
MPI
library:openmpi
,mpich
,intel-mpi
, etc. gsl
library.hdf5
library.
-
make
: the compilation is organized bymake
.Run
which make
to check whether you havemake
or not. If you get a path, then you havemake
. Otherwise, you don't havemake
and you need to install it first. You can search on the internet to find how to installmake
on your system. -
A
c++
compiler withc++11
support, e.g.g++
>4.8.5 orclang++
>3.9.1 are recommended.You can run
g++ --version
,clang++ --version
orc++ --version
to check whether you have such compiler or not. If you get a version number, then you have such compiler. Otherwise, you need to install a suitable compiler first. You can search on the internet to find how to installg++
on your system. -
At least one tool to download the
galotfa
repo:git
,wget
orcurl
.
-
Clone the
galotfa
repo: rungit clone -b main https://github.com/blackbhc/galotfa --depth=1
If you don't have
git
, try runwget -O- https://github.com/blackbhc/galotfa/archive/main.tar.gz | tar xzv
orcurl -O https://github.com/blackbhc/galotfa/archive/main.tar.gz && tar xzv mian.tar.gz
. -
Run
cd galotfa
-
run
mkdir -p <path/to/install>
:Create the directory for the installation of
galotfa
, if it already exists, you can skip this step. -
run
make install mode=release type=library prefix=</path/to/install>
:Install the
galotfa
to the directory specified byprefix
, which should be the same as the one you specified in the last step.-
the
mode
option can berelease
ordebug
, default isrelease
which has-O3
optimization mode.debug
make the compiled library includes debug information, which is only useful for developers. Note that the debug mode has some platform dependency issues, and may not work in some cases. -
the
type
option can beheader-only
orlibrary
(default).header-only
: only copy the header and source files, and don't compile a library file. Note thatgalotfa
in this mode can only be used inc++
simulation codes.library
: build the shared library, works for any simulation code supporting C-style APIs.
Note:
header-only
is recommended for the first time installation. Such option will define aheader-only
macro in thegalotfa
header files, which will make the library can be used without linking to the library files.- If you encounter any error during the installation, after you resolve the error, please run
make clean
to clean the build files before you try to install again.
-
-
Configure environment variables:
CPATH
,LIBRARY_PATH
andLD_LIBRARY_PATH
-
(temporary configuration) run
export CPATH=$CPATH:<prefix>/include
,export LIBRARY_PATH=$LIBRARY_PATH:<prefix>/lib
,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:<prefix>/lib
before you compile your simulation program. This only works for the current terminal session, if you open a new terminal, you need to run the above commands again. Or you can add the above threeexport
commands into your shell configuration file, see below. -
(permanent configuration) add the above three
export
commands into your shell configuration file: e.g.~/.bashrc
forbash
or~/.zshrc
forzsh
. You can runecho $SHELL
to check your shell type, which will print something like/bin/bash
on your screen. Then runsource ~/.bashrc
/source ~/.zshrc
to make the changes take effect. Then you can usegalotfa
without configure every time.
-
-
After this step, you can compile your simulation code with
galotfa
by adding-lgalotfa
to the compiler flags, e.g.g++ ... -lgalotfa ...
ormpicxx ... -lgalotfa ...
. In general, this flags are specified in Makefile or other configuration files within the simulation codes. -
If you want to uninstall
galotfa
, runmake uninstall
in thegalotfa
repo directory.If the install path end up with
galotfa
, then such directory will be removed completely. Otherwise, only thegalotfa
library files under such directory will be removed.
Usage (contents)
To get start with the built-in Gadget4
fork, you can go through the following steps:
- Install
galotfa
as usually, see in the previous section. - Go into the
Gadget4
directory ingalotfa
repo, use as a normalGadget4
code. Note that the built-inGadget4
fork has additional configuration and runtime parameters, which are described in the Fork ofGadget4
section. - Copy the
galotfa.ini
from theexamples
directory into the working directory of your simulation, namely the directory where you run the simulation. For example, if you runGadget4
by command likempirun -np 32 ./Gadeget4 param.txt
, then the working directory is just the current directory. - Modify the parameters in the
galotfa.ini
file according to your requirement of the analysis. - Run the simulation, and the output files will be generated in the
output_dir
specified in thegalotfa.ini
file.
Due to the mutability of the simulation's internal units, so galotfa
just use the internal units of the
simulation, keep this in mind when you use the analysis results.
Note: for INI file, the section name is case sensitive, but the key/value name is case insensitive.
- Available booleans:
true
andfalse
,on
andoff
,enable
anddisable
,yes
andno
. This is case insensitive. - Available value type: boolean, string(s), number(s). For numbers,
galotfa
doesn't distinguish integer and float, and just convert them to required types during analysis. - Comment prefix:
#
and;
. Any text after these characters will be ignored. - Supported value separator: white space,
,
,+
and:
. Note that the name of key should not contain these characters otherwise the parser will raise an error. - Unexpected additional value for a key will be illegal, e.g.
<a key for boolean> = true
is OK, but<a key for boolean> = true yes
is wrong as it will make the parser to treat it as a string "true yes".
All parameters are listed in the following table, you can click their links to see their explanation.
Section | Key Name | Value Type | Default | Available Values |
---|---|---|---|---|
Global |
||||
switch_on |
Boolean | on |
||
output_dir |
String | ./otfoutput |
Any valid path. | |
convergence_type |
String | absolute |
absolute or relative . |
|
convergence_threshold |
Float | 0.001 |
convergence_type = relative
|
|
max_iter |
Integer | 25 | ||
equal_threshold |
Float | 1e-10 |
|
|
sim_type |
String | galaxy |
Only galaxy at present. |
|
pot_tracer |
Integer | |||
Pre |
||||
recenter |
Boolean | on |
on or off
|
|
recenter_anchors |
Integer(s) | Any avaiable particle types of the simulation IC | ||
region_shape |
String | cylinder |
sphere , cylinder or box . |
|
axis_ratio |
Float | 1.0 | ||
region_size |
Float | 20.0 | ||
recenter_method |
String | density |
com , density or potential
|
|
Model |
||||
switch_on |
Boolean | off |
on or off
|
|
filename |
String | model |
Any valid filename. | |
period |
Integer | 10 | ||
particle_types |
Integer(s) | Any avaiable particle types of the simulation IC | ||
multiple |
Boolean | off |
on or off
|
|
classification |
Strings | empty | see in the text | |
region_shape |
String | cylinder |
sphere , cylinder or box . |
|
axis_ratio |
Float | 1.0 | ||
region_size |
Float | 20.0 | ||
align_bar |
Boolean | on |
on or off
|
|
image |
Boolean | off |
on or off
|
|
image_bins |
Integer | 100 | ||
colors |
String(s) | see in the text | ||
sbar |
Boolean | off |
on or off
|
|
bar_threshold |
Float | 0.15 | ||
bar_major_axis |
Boolean | off |
on of off
|
|
bar_radius |
Boolean | off |
on or off
|
|
rmin |
Float | 0.0 | ||
rmax |
Float | Region size | ||
rbins |
Integer | 20 | ||
percentage |
Float | 70 | ||
sbuckle |
Boolean | off |
on or off
|
|
An |
Integer(s) | > 0 | ||
inertia_tensor |
Boolean | off |
on or off
|
|
dispersion_tensor |
Boolean | off |
on or off
|
|
Particle |
||||
switch_on |
Boolean | off |
on or off
|
|
filename |
String | particle |
Any valid filename. | |
period |
Integer | 10000 | ||
particle_types |
Integer(s) | Any avaiable particle types of the simulation IC | ||
circularity |
Boolean | off |
on or off
|
|
circularity_3d |
Boolean | off |
on or off
|
|
rg |
Boolean | off |
on or off
|
|
freq |
Boolean | off |
on or off
|
|
Orbit |
on or off
|
|||
switch_on |
Boolean | off |
on or off
|
|
filename |
String | orbit |
Any valid filename prefix. | |
period |
Integer | 1 | ||
idfile |
String | Any valid filename. | ||
Group |
||||
switch_on |
Boolean | off |
on or off
|
|
filename |
String | group |
Any valid filename prefix. | |
period |
Integer | 10 | ||
group_types |
String(s) | (future feature) | ||
ellipticity |
Boolean | off |
on or off
|
|
rmg |
Boolean | off |
on or off
|
|
vmg |
Boolean | off |
on or off
|
|
Post |
||||
switch_on |
Boolean | off |
on or off
|
|
filename |
String | post |
Any valid filename. | |
pattern_speed |
Boolean | off |
on or off
|
-
switch_on
: whether to switch on on-the-fly analysis. Ifon
,galotfa
will analyze the data at specified time steps and output analysis results to theoutput_dir
. -
output_dir
: the path to output the analysis results. -
convergence_type
: the type of numerical convergence criterion, can beabsolute
orrelative
. -
convergence_threshold
: the threshold for numerical convergence check.- If
convergence_type
=absolute
: the convergence criterion is$\Delta Q_i<\epsilon$ for some quantity$Q$ , where$\epsilon$ is theconvergence_threshold
. - If
convergence_type
=relative
: the convergence criterion is$\Delta Q_{i+1} / Q_{i} < \epsilon$ for some quantity$Q$ , where$\epsilon$ is theconvergence_threshold
.
- If
-
max_iter
: the maximum number of iterations. -
equal_threshold
: the threshold for equality of two floating point numbers. For example, ifequal_threshold
=0.001, then two float numbers$a,b$ s.t.$|a-b|<0.001$ are considered equal. Recommended value is from$10^{-6}$ to$10^{-20}$ . -
sim_type
: the type of simulation, can be one ofgalaxy
,cluster
,cosmology
andcosmology_zoom_in
. At present, onlygalaxy
is supported. -
pot_tracer
: the particle type of the zero-mass potential tracers, which will be used to calculate the potential related quantities. (future feature)
-
recenter
: whether to align the origin of coordinates to the center of the target particle(s) or not during calculation. Note that this alignment is only for data analysis and doesn't change the simulation data. This alignment will significantly affect the quality of analysis results which are sensitive to the origin of coordinates, such as the bar major axis. Therefore, it should always be turn on, unless you know what you are doing. The program will iterate until the center is convergent or reach the iteration limit (seeconvergence_type
,convergence_threshold
andmax_iter
in the Global section). -
recenter_anchors
: the particle type id(s) which are used to calculate the center of the system, ifrecenter
=on
then this parameter must be given at least one type, otherwise the program will raise an error. For example, the particle type of disk particles is 2, then you can setrecenter_anchors
=2
to use the disk particles to calculate the center of the system. !!!! Remove this! -
region_shape
: the program only includes the particles within a central region to do the system center calculation, and the shape of the region is specified by this parameter. Only effective whenrecenter
=on
. This parameter works together withaxis_ratio
andregion_size
. Available values:-
spheroid
: the region is a spheroid, or a sphere ifaxis_ratio
$=$ 1, the axis of symmetry of the spheroid is parallel to the$z$ -axis. -
cylinder
: the region is a cylinder with symmetry axis parallel to the$z$ -axis. -
box
: the region is a box with sides parallel to the$x$ ,$y$ and$z$ axes.
-
-
axis_ratio
: specifies the axis ratio of the region, which will affect how theregion_size
takes effect. Only effective whenrecenter
=on
, -
region_size
: specifies the size of the region used to align the system center. Only effective whenrecenter
=on
, and has different meaning based on the value ofregion_shape
:-
region_shape
=sphere
: radius in the mid-plane =region_size
, half length of the third axis =axis_ratio
$\times$ region_size
. -
region_shape
=cylinder
: radius =region_size
, half height =axis_ratio
$\times$ region_size
. -
region_shape
=box
:$x$ and$y$ side lengths =region_size
,$z$ side length =axis_ratio
$\times$ region_size
.
-
-
recenter_method
: the method used to calculate the center of target particles.-
recenter_method
=com
: the center is defined as the center of mass of target particles. -
recenter_method
=density
: the center is defined as the center of the pixel with highest surface density, in the faced-on and edge-on matrix of the target particles. The size and number of pixels are determined byregion_size
and theimage_bins
parameter in theModel
section. Note that if theregion_method
=density
, then theimage
option in theModel
section will be automatically turned on andsurface_density
will be automatically added into thecolors
parameter in theModel
section. -
recenter_method
=potential
: defined the center as the position of the most bound particle in the target particles, namely the particle with the lowest potential (energy). Note that this is a future feature, and not available at present.
-
switch_on
: whether to switch on the model level analysis.filename
: the filename of the model level analysis results.period
: the period of model level analysis, in unit of synchronized time steps in the simulation.particle_types
: the type(s) of target particles to do the model level analysis. Must be given at least one type if the model level analysis is switched on.
The following 5 parameters will be deprecated in the future.
-
multiple
: whether to enable multiple analysis subsets, namely analyze different target particles separately. Ifon
, the target particles will be divided into different subsets, which are specified by the next parameterclassification
. Default ismultiple
=off
, which means all target particles will be analyzed as a whole. -
classification
: specify how to classify target particles as different analysis subsets. Must be given ifmultiple
=on
. The value should be strings of target types in each subset, for example "1&2" "3" "4&5&6" means there are 3 subsets, the first subset contains target particles of type 1 and 2, the second subset contains target particles of type 3, and the third subset contains target particles of type 4, 5 and 6.- Each string should be enclosed by quotation marks.
- There could be ordinary delimiters between each string, such as white space, comma, plus sign and colon.
For example,
"1&2" "3" "4&5&6"
and"1&2","3","4&5&6"
are both OK. - However, there should has no space between, before or after the integers in each pair of quotation marks,
otherwise the program will raise an error:
"1 & 2" "3" "4 & 5 & 6"
is illegal. - Different sets can share the same particle types, e.g.
"1&2" "2&3"
is legal, which means the first subset contains the target particles of type 1 and 2, and the second subset contains target particles of type 2 and 3. - The type ids should in the range of
particle_types
, otherwise the program will raise an error.
-
region_shape
: similar to theregion_shape
in thePre
section, but this one is used to calculate the model quantifications of target particles, can get multiple values.-
region_shape
=sphere
: the region is a sphere or spheroid ifaxis_ratio
$\neq$ 1, the axis of the spheroid is the parallel to the$z$ -axis. -
region_shape
=cylinder
: the region is a cylinder with symmetry axis parallel to the$z$ -axis. -
region_shape
=box
: the region is a box with sides parallel to the$x$ ,$y$ and$z$ axis.
-
-
axis_ratio
: similar to theaxis_ratio
in thePre
section, but this one is used to calculate the model quantifications of target particles. -
region_size
: similar to theregion_size
in thePre
section, but this one is used to-
region_shape
=sphere
: the region is a sphere with$R=$ region_size
ifaxis_ratio
= 1. Ifaxis_ratio
$\neq$ 1, the sphere will be stretched along the$z$ -axis with$R_z=$ axis_ratio
$\times$ region_size
. -
region_shape
=cylinder
: the region is a cylinder with$R=$ region_size
, and half height$H=$ axis_ratio
$\times$ region_size
. -
region_shape
=box
: the region is a cube with side length$L=$ region_size
, and stretched along the$z$ -axis with$L_z=$ axis_ratio
$\times$ region_size
.
-
-
align_bar
: whether to rotate the coordinates to align the$x$ -axis with the bar major axis. This is only done when the bar is detected, namely bar strength$>$ bar_threshold
. Note that:- If this option is activated then the
bar_major_axis
andsbar
will be automatically activated. - The
recenter
parameter inPre
section should be switched on otherwise the program will raise an error. Of course the program can automatically turn on therecenter
parameter if it is off, but we don't do this to make the user aware of what they are doing.
- If this option is activated then the
Note: all the following bar related quantities assume that the bar is in the
-
image
: whether to output the image matrices of the target particles. If activated, the particles will be binned into 2D matrices in the$x-y$ plane,$x-z$ plane and$y-z$ plane.- The bin number is specified by the
image_bins
parameter (see below). - The statistical quantities in each pixel are specified by the
colors
parameter (see below).
- The bin number is specified by the
-
image_bins
: how many bins of the image matrices in each dimension. For the axis that may be stretched, the number of bins in such axis isaxis_ratio
$\times$ image_bins
. Note that this number should not be too large, otherwise the chunk size of image matrix may overflow the limit chunk size of HDF5 library, which is 4GB. In general, a number in$[50, 200]$ is recommended. -
colors
: If theimage
is enabled, at least one value must be given.-
number_density
: the number of particles in each bin. -
surface_density
: the surface density of the particles in each bin. The unit is$[M]/[L]^2$ ,$[M]$ and$[L]$ are the internal units of mass and length in the simulation. -
mean_velocity
: the mean velocity of the particles in each bin, depending on the region shape and one component for each axis w.r.t the region shape. -
velocity_dispersion
: similar tomean_velocity
, but for velocity dispersion.
-
-
sbar
: whether to calculate the bar strength parameter$S_{\rm{bar}}$ , which is defined as$A_2/A_0$ . -
bar_threshold
: the threshold to determine whether there is a bar, namely if$S_{\rm bar}>$ bar_threshold
, the program will consider there is a bar.- In general, a range in
$[0.1, 0.2]$ is recommended, but it depends on the actual situation.
- In general, a range in
-
bar_major_axis
: whether to calculate the bar major axis in target particles, which is defined as$\arg{(A2)}$ , the argument angle of the$m$ =2 Fourier component of the projected surface density in the$x-y$ plane. This is only done when the bar is detected, namely bar strength$>$ bar_threshold
. -
bar_radius
: whether to calculate the radius or half length of the bar, this is calculated with the first three methods in Ghosh & Di Matteo 2023. They are called$R_{\rm bar,1}$ ,$R_{\rm bar,2}$ and$R_{\rm bar,3}$ , respectively. See more details in the development-manual/computation.md, all the three different methods will be calculated if this option is turned on. -
rmin
: the minimum radius of data points during calculating the bar radius, only$R_{\rm bar,2}$ is sensitive to this parameter, due to the inner most region is generally spherical, so the argument angle of$m=2$ Fourier component is noisy in such region. Default is 0, effective only whenbar_radius
=on
. -
rmax
: the maximum radius of data points during calculating the bar radius. If not given, the maximum radius will be set asregion_size
, which means all particles in the analysis region will be included. This parameter is only effective whenbar_radius
=on
. -
rbins
: the number of bins during calculating the bar radius. Default is 20, effective only whenbar_radius
=on
. -
deg
: the degree threshold to determine the location of the bar ends, only effective whenbar_radius
=on
. This is the free parameter of$R_{\rm bar,1}$ in Ghosh & Di Matteo 2023. In general,$3^\circ\sim5^\circ$ is recommended, but it depends on the actual situation. The unit is degree, only effective whenbar_radius
=on
. -
percentage
: the percentage of drop to be considered as the bar ends, the free parameter of$R_{\rm bar,3}$ in Ghosh & Di Matteo 2023. In general,$70%\sim80%$ is recommended, but it depends on the actual situation. Effective only whenbar_radius
=on
. -
sbuckle
: whether to calculate the buckling strength parameter$S_{\rm{buckle}}$ ,
is defined as$\sum m_i z_i \exp(-2i \phi_i) / \sum m_i$ . -
An
: whether to calculate the$A_n$ parameters, which is the$n$ -th Fourier component of the projected surface density in the$x-y$ plane. Note that actually only 0 - 6 are supported, as higher order components are not so important and may be noisy. So if you really want to calculate$A_n$ with$n>6$ , you need to change the code by yourself. -
inertia_tensor
: whether to calculate the inertia tensor of target particles. -
dispersion_tensor
: whether to calculate the velocity dispersion tensor of target particles in each bin.- The principle axes of the tensor are dependent on the region shape: for example, if the region shape is
sphere
, the three principle axes are$\hat{r}$ ,$\hat{\theta}$ and$\hat{\phi}$ . - Its spatial resolution is the same as the
image_bins
: so ifimage_bins
= 100, there will be$100\times100\times100$ bins.
- The principle axes of the tensor are dependent on the region shape: for example, if the region shape is
switch_on
: whether to enable the particle level analysis or not.filename
: the filename of the particle level analysis results.period
: the period of particle level analysis, in unit of synchronized time steps in the simulation. Note: the particle level analysis will output all information of target particles into a single file at each analysis time step. The size of such output file is comparable or even larger than a snapshot file, so the period should not be not be set too small, otherwise the output files will consume too much disk space. Take as an example,period
= 5000 is a good choice for a 1e5 time steps simulation.particle_types
: the type(s) of particle to do the particle level analysis. Must be given at least one type if the particle level analysis is enabled.circularity
: whether to calculate the circularity of target particles.circularity_3d
: whether calculate the 3D circularity of target particles.rg
: whether to calculate the guiding radii of target particles. (future feature)freq
: whether to calculate the orbital frequency of target particles. (future feature)
switch_on
: whether to enable the orbit curve log.filename
: the filename of orbit curves.period
: the period of orbit curve log, in unit of synchronized time steps in the simulation. If there is only a few particles to be logged, the period can be set to a small value.idfile
: the particles ids' file to specify which particles to be logged. Must be given if the orbit curve log is enabled, otherwise the program will raise an error.- The particle id in this file can be separated by any one of the following delimiters: white space, new line,
,
,-
,+
,:
and&
. - Particle IDs that is not exist in the simulation will be ignored.
- In the future, if this parameter is not given, the program will randomly select some particles to log.
- The particle id in this file can be separated by any one of the following delimiters: white space, new line,
switch_on
: whether to enable the group level analysis.filename
: the filename the group level analysis results.period
: the period of group level analysis, in unit of synchronized time steps in the simulation.group_types
: the type(s) of group classification to do the group level analysis. Must be given at least one type if the group level analysis is enabled.age
: divide the particles into different age groups.metallicity
: divide the particles into different metallicity groups.
ellipticity
: whether to calculate the ellipticity of target particles.rmg
: whether to calculate the radial metallicity gradient of target particles.vmg
: whether to calculate the vertical metallicity gradient of target particles.
switch_on
: whether to enable the post analysis or not.filename
: the filename of the post analysis results.pattern_speed
: whether to calculate the pattern speed of the bar. If this option is enabled, thebar_major_axis
option in theModel
section will be automatically enabled.SFH
: whether to calculate the star formation history of target particles.
Due to there may be a case of a restart simulation such as in Gadget4
, galotfa
will not overwrite any
existing file, but create a new file with a -n
suffix, where n
is an integer and starts from 1.
galotfa
is based on MPI
, and all galotfa
APIs are designed to be used in MPI
mode. So you need to
call MPI_Init
before using any galotfa
APIs.
- (other) add potential tracer support into the built-in simulation codes.
- (other) add built-in fork of
Gadget4
withgalotfa
built-in. - (global) output the used parameters to a separate file: galotfa-used.ini
- (global) specify different target particle types (and possible multiple analysis sets) in different analysis level.
- (pre-process) support triaxial region shape.
- (model) the bar length calculation.
- (model) model level analysis for different components.
- (model) DM halo spin parameter
- (particle) the guiding radius calculation.
- (particle) the orbital frequency calculation.
- (particle) the actions calculation.
- group based analysis.
- orbit curves: raw, recentered, aligned, corotating, etc.
- orbit curves: randomly selected particles.
- (post) pattern speed
- (post) star formation history