Developing and Improving Executables
- Build system and how to add dependencies, unit tests, and executables.
- Executables and how to add them
- Writing SpECTRE executables - A series of tutorials demonstrating how to write a parallel executable, and explaining some of the metaprogramming that turns user-provided code into a SpECTRE parallel executable
- Option parsing to get options from input files
- Importing data from files
- Profiling With Charm++ Projections and PAPI for optimizing performance
- Writing Python Bindings to use SpECTRE C++ classes and functions from within python.
- Implementing SpECTRE vectors a quick how-to for making new generalizations of DataVectors
- How to parse linker and compiler errors
- Static analysis tools
- Getting started with improving compilation time and memory use"
@subsection autotoc_md29 Having your Contributions Merged into SpECTRE
- @subpage writing_good_dox "Writing good documentation" is key for long term
maintainability of the project.
- @subpage writing_unit_tests "Writing Unit Tests" to catch bugs and to make
sure future changes don't cause your code to regress.
- @subpage travis_guide "Travis CI" is used to test every pull request.
- @subpage code_review_guide "Code review guidelines." All code merged into
develop must follow these requirements.
@subsection autotoc_md30 General SpECTRE Terminology
Terms with SpECTRE-specific meanings are defined here.
- @subpage domain_concepts "Domain Concepts" used throughout the code are
defined here for subpageerence.
@subsection autotoc_md31 Template Metaprogramming (TMP)
Explanations for TMP concepts and patterns known to the greater C++ community
can be found here.
- @subpage sfinae "SFINAE"
@subsection autotoc_md32 Foundational Concepts in SpECTRE
Designed to give the reader an introduction to SpECTRE's most recurring concepts
and patterns.
- @subpage databox_foundations "Towards SpECTRE's DataBox"
- @subpage protocols "Protocols: metaprogramming interfaces"
@subsection autotoc_md33 Technical Documentation for Fluent Developers
Assumes a thorough familiarity and fluency in SpECTRE's usage of TMP.
- @subpage DataBoxGroup "DataBox"
- @subpage observers_infrastructure_dev_guide "Observers infrastructure"
- @subpage dev_guide_parallelization_foundations "Parallelization infrastructure" components and usage
@subsection autotoc_md34 CoordinateMap Guide
Methods for creating custom coordinate maps are discussed here.
- @subpage redistributing_gridpoints "Methods for redistributing gridpoints"
Continuous Integration
Explanations on our automated tests and deployments can be found here.