swarm | |
py | Python interface, testing and tutorial code |
bin | |
swarm-query.py | Command-line utility to examine BDB log file, for usage see swarm-query.py command-line interface |
swarmng | Python package interface to the Swarm library |
__init__.doc.py | This is the documentation for libswarmng_ext, but because all the symbols from libswarmng_ext are included in the swarmng module we document it under swarmng package |
__init__.py | Loader of libswarmng_ext and root of the swarmng package |
logdb.py | Routines and classes to access the BDB log file To read the documentation generated from this file refer to swarmng.logdb |
logrecord.py | Routines and classes to access a binary log record structure |
query.py | Support routines for swarm-query.py command-line utility |
range_type.py | Support routines for the defining ranges to use with queries |
tests | Python unit testing |
bdb_concurrent.py | Testing that concurrent reads from a BDB log file works |
collision_course.py | Testing collision detection module by putting planets on the same orbit in opposite directions |
common.py | |
parabolic_collision.py | Testing collision detection module by putting planets on a parabolic orbit |
run.py | Runner for all the unittests |
trivial.py | Trivial unit tests that basic features work |
ejection_tutorial.py | |
ensemble_tutorial.py | |
integration_plot_tutorial.py | Advanced tutorial on how to examine the ensemble before and after the integration to plot meaningful results |
logrecord_tutorial.py | Tutorial for using the swarmng.logrecord.LogRecord class for accessing records from a BDB log file |
plot_tutorial.py | Tutorial for extracting and plotting information from the BDB log files |
resume_tutorial.py | Tutorial on resuming integration from saved snapshots |
stats_tutorial.py | Tutorial on extracting statistical information from a data file |
tutorial.py | Beginner tutorial on how to interface with the integrators |
src | |
integrators | This directory implements various integrators using different algorithms, such as Hermite, Mixed-Variable Symplectic (MVS) and Runge-Kutta |
hermite_adap.hpp | Defines and implements swarm::gpu::bppt::hermite_adap class - the GPU implementation of PEC2 Hermite integrator with adaptive time step |
hermite_cpu.hpp | Defines and implements swarm::cpu::hermite_cpu class - the CPU implementation of PEC2 Hermite integrator |
hermite_integrator.hpp | Defines and implements swarm::gpu::bppt::hermite class - the GPU implementation of PEC2 Hermite integrator |
mvs_cpu.hpp | Defines and implements swarm::cpu::mvs_cpu class - the CPU implementation of mixed variables symplectic propagator |
mvs_omp.hpp | Defines OpenMP implementation of mixed variables symplectic propagator on CPU |
rkck_integrator.hpp | Defines and implements swarm::gpu::bppt::rkck class - the GPU implementation of Runge Kutta Cash Karp integrator |
monitors | This directory implements several monitors for recording/logging the system states and events during different computation phases, and also implements the combination of monitors |
combine.hpp | Defines and implements a template swarm::monitors::combine to combine two monitors |
composites.hpp | Defines and implements the combination of monitors |
log_rvs.hpp | Defines and implements the monitor that logs time and events at times near a transit on GPU |
log_time_interval.hpp | Defines and implements the monitor swarm::monitors::log_time_interval that logs the entire state of systems at periodic intervals |
log_transit.hpp | Defines and implements the monitor swarm::monitors::log_transit that logs time and events at times near a transit |
monitor_template.hpp | Defines monitor templates swarm::monitors::monitor_template |
stop_on_all_but_two_at_large_distance.hpp | Defines and implements the monitor swarm::monitors::stop_on_all_but_two_at_large_distance that signals and logs when no more than two bodies are within a distance "rmax" of origin or another body |
stop_on_any_large_distance.hpp | Defines and implements the monitor swarm::monitors::stop_on_any_large_distance that logs the body that is separated from origin and other bodies by at least "rmax" |
stop_on_close_encounter.hpp | Defines and implements the monitor swarm::monitors::stop_on_close_encounter that signals and logs when the distance between any two bodies is less than "close_approach" |
stop_on_collision.hpp | Defines and implements the monitor swarm::monitors::stop_on_collision that detects physical collisions |
stop_on_crossing_orbit.hpp | Defines the monitor swarm::monitors::stop_on_crossing_orbit that detects crossing orbits for planets |
stop_on_ejection.hpp | Defines and implements the monitor swarm::monitors::stop_on_ejection that signals and logs when bodies meets ejection criteria |
plugins | This directory implement plug-ins for Hermite, MVS, Runge-Kutta integrators with different flavors including CPU, GPU and OpenMP |
euler.cu | Initializes the integrator plugin |
hermite.cu | Initializes the hermite integrator plugins |
hermite_adap.cu | Initializes the hermite_adap integrator plugins |
hermite_cpu.cpp | Initializes the hermite CPU integrator plugin |
hermite_prop.cu | Initializes the hermite propagator integrator plugin |
midpoint.cu | Initializes the midpoint propagator integrator plugin |
mvs.cu | Initializes the GPU version of the mixed variables symplectic propagator plugins |
mvs_cpu.cpp | Initializes the CPU version of the mixed variables symplectic propagator plugins |
mvs_omp.cpp | Initializes the OpenMP version of the mixed variables symplectic propagator plugins |
rkck.hpp | Includes a list of header files and global structures |
rkck_adaptive.cu | Initializes the adaptive Runge Kutta Cash Karp integrator plugin |
rkck_fixed.cu | Initializes the fixed Runge Kutta Cash Karp integrator plugin |
verlet.cu | Initializes the verlet propagator integrator plugin |
propagators | This directory defines different propagator plug-ins for different algorithms such as Hermite, MVS, Verlet and Euler |
euler.hpp | Defines and implements swarm::gpu::bppt::EulerPropagator class |
hermite_propagator.hpp | Defines swarm::gpu::bppt::HermitePropagator - implements the GPU version of hermite propagator |
keplerian.hpp | Defines a solver for differential Kepler's equation in universal variable x |
midpoint.hpp | Defines swarm::gpu::bppt::MidpointPropagator - the GPU implementation of modified midpoint method propagator |
mvs.hpp | Defines swarm::gpu::bppt::MVSPropagator - the GPU implementation of mixed variables symplectic propagator |
verlet.hpp | Defines swarm::gpu::bppt::VerletPropagator - the GPU implementation of Verlet propagator |
python | This directory defines python interface to Swarm-NG |
module.cpp | Python interface to the Swarm-NG |
swarm | Swarm-NG's base directory, contains source files for "swarm" - a command-line interface to Swarm-NG library; common header files used in different Swarm-NG components; common utility routines for using Swarm-NG |
gpu | This directory contains source files implementing GPU/CUDA interface including: defining GPU integrator class; setting GPU device related parameters; implementing different gravitation calculations on GPU platforms; several utility functions for Swarm-NG on GPU |
bppt.hpp | Defines and implements the GPU integrator class with one thread for each body-pair and the interface to GPU and CUDA |
device_settings.cpp | Implements the function to set up the GPU related parameters |
device_settings.hpp | Declaration of funtions for GPU device setting |
generic_gpu_bppt_integrator.hpp | Defines and implements class swarm::gpu::bppt::generic - a generic integrator for rapid creation of new GPU integrators |
gravitation_acc.hpp | Defines and implements class swarm::gpu::bppt::GravitationAcc that implements member functions to calculate acceleration part of the gravitation |
gravitation_accjerk.hpp | Defines and implements class swarm::gpu::bppt::GravitationAccJerk that implements the functions to calculate accerleration and jerk of the gravitation in parallel |
gravitation_common.hpp | Defines and implements common utility functions for calculating acceleration and jerk of gravitation |
gravitation_gr_acc.hpp | Defines and implements class swarm::gpu::bppt::GravitationAcc_GR that implements the functions to calculate acceleration part of the gravitation |
gravitation_largen.hpp | Defines and implements class swarm::gpu::bppt::GravitationLargeN that implements functions to calculate acceleration and jerk in parallel for many-body systems |
gravitation_mediumn.hpp | Defines and implements class swarm::gpu::bppt::GravitationMediumN that implements functions to calculate acceleration and jerk in parallel for many-body systems |
helpers.hpp | Template meta-programming combinators (symbolic helper functions) for loop unrolling and selecting the correct templatized integrator at runtime |
pair_calculation.hpp | |
utilities.cu | Several utility functions for public interface for swarm libaray |
utilities.hpp | Defines a function for counting the number of active ensemble systems on GPU and utility functions for finding the best factorization and compute the optimal allowable grid dimensions based on the system configuration |
log | This directory defines Swarm-NG even/data logging system, including input/output (IO) data format, implements IO interface, and provides utilities for processing the log data |
gpulog | This directory defines the log system related to GPU/CUDA interface |
bits | This directory handles the details of the log system for GPU/CUDA, such as CUDA compatible data alignment, log stream records and macros, record layout, and logging data types, etc |
gpulog_align.h | Defines CUDA compatible data alignment |
gpulog_constants.h | Defines message IDs |
gpulog_debug.h | Defines debugging macros |
gpulog_ilogstream.h | Handles log stream records |
gpulog_log.h | Defines templates for logging system on GPU |
gpulog_logrecord.h | Defines methods for processing log records |
gpulog_macro_cleanup.h | Unsets the logging macros |
gpulog_msg_layout.h | Defines class templates to enable compile-time calculations of log record layout |
gpulog_printf.h | |
gpulog_ttraits.h | Defines system compatible data alignment and convenient macros |
gpulog_types.h | Defines the interface for logging data types |
gpulog_write.h | |
gpulog.h | Header file for gpulog |
lprintf.h | Defines and implements the CUDA compatible printf API |
bdb_database.cpp | |
bdb_database.hpp | |
bdb_writer.cpp | Writer plugin to output the log into a Berkeley-DB database |
binary_writer.cpp | Defines and implements a writer that writes to binary files |
fileformat.hpp | Defines swarm header file format |
host_array_writer.cpp | Processes the event log data |
host_array_writer.hpp | Defines an event writer plug-in for io.cpp |
io.cpp | Implements functions for opening a swarm log file using swarmdb |
io.hpp | Defines routines for reading binary log files made by binary_writer |
log.cpp | Process the event types |
log.hpp | Defines an event/data logging system for swarm |
logmanager.cpp | Implements the public interface to swarm logging system |
logmanager.hpp | Defines the class swarm::log::manager - the logging manager for CPU/GPU logs and writing them to appropriate output |
null_writer.cpp | Defines a dummy null writer |
types.hpp | Defines on-GPU state logging of bodies |
writer.cpp | Implements output writer interface |
writer.h | Defines class interface (swarm::writer) for writer plugins |
peyton | This directory implements additional routines for the logging system and memory mapping and also defines some inline math routines |
astro_types.hpp | Defines data types and inline math routines |
binarystream.cpp | Implements the I/O operators and methods |
binarystream.hpp | Defines I/O interface in binary form using boost data types |
constants.hpp | Defines various constants for calculations |
fakemmap.cpp | Implements functions to fake memory mapping for portability |
fakemmap.h | Defines macros and functions for faking memory mapping for portability |
macros.h | Defines macros for convenient array and stream operations |
memorymap.cpp | Implements memory mapping methods |
memorymap.hpp | Defines memory mapping class and interfaces |
util.cpp | Implements utility functions for string operations |
util.hpp | Defines string operation utility functions |
types | This directory defines data structures for configuration, memory allocation, ensemble base class, and utility functions for public interface to Swarm-NG |
allocators.hpp | Defines routines to allocate memory using different APIs and copy between them |
coalescedstructarray.hpp | Defines and implements the array of structures with coalescsed access |
config.cpp | Implements several utility functions for public interface for swarm libaray |
config.hpp | Defines data structure to hold the configuration |
ensemble.hpp | Defines ensemble base class and implements its member functions |
bdb_query.cpp | |
bdb_query.hpp | |
common.hpp | Common external (and some internal) library headers used by all components of swarm |
ensemble_alloc.hpp | |
integrator.cpp | Implements member functions for class integrator |
integrator.hpp | Defines swarm::integrator class for CPU and GPU |
kepler.h | Converts between Cartesian & Keplerian coordinates |
plugin.cpp | Implements the interface and utility functions for plugin system |
plugin.hpp | Defines swarm::plugin class and swarm::basic_plugin class, implements the interface and utility functions for the plugin development and plugin management system |
query.cpp | Routines for extracting text information from binary files generated by swarm GPU logging subsystem |
query.hpp | Defines class arg_parse and validate function for data values |
runtime_error.hpp | Error handling for swarm |
snapshot.cpp | Implements load and save functions for ensemble files |
snapshot.hpp | Defines and implements load and save functions for ensemble files |
stopwatch.h | Defines stopwatch class for benchmarking cpu & gpu performance |
swarm.cpp | Generic command-line interface to use all aspects of the Swarm-NG libraries |
swarm.h | Defines the public interface for Swarm-NG library |
swarmplugin.h | Convenient header file to be used in new plugins |
utils.cpp | Implements the utility functions for swarm |
utils.hpp | Defines utility routines for common tasks that most users would need |
tutorials | This directory implements several tutorials for using Swarm as a beginner and Swarm-NG for more advanced users |
kepler.cpp | Implements functions for converting between Cartesian & Keplerian coordinates |
kepler.hpp | Defines functions for converting between Cartesian & Keplerian coordinates |
montecarlo.cpp | Implement Monte Carlo simulation to find planetary systems and generate ensemble |
montecarlo_ecclimit.cpp | Implement Monte Carlo simulation to find planetary systems and generate ensemble |
montecarlo_mcmc_outputs.cpp | Implement Monte Carlo simulation to find planetary systems and generate ensemble |
random.hpp | Defines and implements simple interfaces to CPU random number generators |
tutorial_ensemble.cpp | A tutorial on how to manipulate ensembles |
tutorial_gpu.cpp | A tutorial for using GPU integrators |
tutorial_integrator.hpp | Defines Tutorial for implementing an Integrator class - implements a tutorial for making a integrator |
tutorial_integrator_plugin.cu | |
tutorial_monitor.hpp | A tutorial on how to make the monitor, for more info see Tutorial for making a monitor (stopper/logger) |
tutorial_monitor_plugin.cu | |
tutorial_propagator.hpp | Defines Tutorial for Making a Propagator class – implements a tutorial for making a propagator |
tutorial_propagator_plugin.cu | A integrator plugin based on tutorial propagator |
tutorial_simple.cpp | A simple tutorial for beginners to use the swarm API |
utils | This directory implements several utility functions that Swarm-NG can readily use, for example, utilities for saving ensemble to a file, performing stability tests, creating default ensemble, running performance benchmark on GPU, and verifying integrators against one another, etc |
binary_reader.cpp | |
binary_reader.hpp | |
log2db.cpp | Implements a utility to that converts binary log files to databases and create indexes on top of them |
parabolic_collision.cpp | Create test case for collision |
straight_line.cpp | Implements a utility to create a default ensemble |
unit_tests.cpp | |