SpECTRE  2021.08.02
Developer Guides

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.