strees uses some Python libraries for the numerical computations as well as its output format and plotting. You have to have them installed and accesible to run strees:
- NumPy and SciPy. See here for installation instructions for your operating system.
- Matplotlib
- h5py
For Linux and Mac OS X we recommend using the package repositories of your distribution or MacPorts/Homebrew for Macs.
strees is mostly written in Python but in order to speed up the code, C is used in the calculation of electrostatic interactions. For this purpose we built the mpolar library, which implements both Fast Multipole Method (FMM) calculations and direct, \(O(N^2)\) electrostatic computations.
This means that you have to compile the C code to obtain a mpolar library. You can do this by typing:
make
from the /src sub-directory.
Before you run the code, make sure that the mpolar library is accessible to the dynamic linker of your operating system. In Linux you achive that with:
export LD_LIBRARY_PATH=/path/to/your/mpolar.so
In Mac OS X, you do the same with:
export DYLD_LIBRARY_PATH=/path/to/your/mpolar.so
Once the code is set up, you use the script grow_tree.py to start a simulation:
python /path/to/grow_tree.py simulation.ini
where the file simulation.ini contains the input parameters of the simulation. See parameters for a list of all valid parameters with a short description.
Input files for the code are .ini files with key/value pairs. Here is an example:
[global]
run_name = %(input)s
out_file = %(input_dir)s/%(run_name)s.h5
desc = A canonical simulation with the standard parameter set
[parameters]
external_field = -1.5e6
tip_mobility = 0.09
end_time = 3.5e-07
time_step = 2.5e-10
branching_probability = 100.0
branching_sigma = 0.0001
conductor_thickness = 0.001
conductance = 9.6e-07
maxwell_factor = 9e9
fmm_threshold = 500000
max_charges_per_box = 200
multipolar_terms = 10
random_seed = 11
electrode_geometry = planar
The input file contains two sections:
[global] contains the parameters run_name, out_file and desc. In this section you can use substitutions. The code provides substitutions variables
- %(input), containing the basename of the input file (i.e. if the input file is simulation.ini %(input) is replaced by simulation.
- %(input_dir) is replaced by the directory containing the input file.
[parameters] contains all other parameters. In general you can specify these parameters in any unit system. In the example above we used SI units, so we set maxwel_factor=9e9. This is \(1/4\pi \varepsilon_0\).
The code produces a single output file per simulation, specified in the parameters.out_file() parameter. The output is a HDF5 file, organized as follows:
The file contains a single group, called main. This group contains attributes containing the input parameters used in the simulation as well as information about the running environment:
The group main contains a sub-group per saved timestep, with names 00000, 00001 and so forth. Each of these sub-groups contains a snapshot of the tree at the given time. The attributes of the groups are:
The data is contained in these fields:
The script plotter.py can be used to plot the results of a simulation for a quick inspection. Use it with:
python /path/to/plotter.py outputfile.h5 [steps] [options]
Where
step indicates the step that you want to plot, such as 00300. You can also specify latest to see the latest snapshot. If you do not provide a step, the program will plot all the available steps.
options stands for a combination of these options:
- -h, --help
Show a help message and exit.
- --ref=REF
The reference step
- --show
Open the matplotlib window?
- --field
Plot the electric field instead of the charge?
- --print-parameters
The reference step
- --print-times
Print real and simulated times for each step
- --format=FORMAT
Format of the output figures
- --single
Plot only one projection
- --axisbg=AXISBG
Background color
If you do not set the --show option, the code will produce an output file named outputfile/outputfile_XXXXX.png, where XXXXX is the step index.