Line data Source code
1 0 : \cond NEVER 2 : Distributed under the MIT License. 3 : See LICENSE.txt for details. 4 : \endcond 5 : # Developer Guides {#dev_guide} 6 : 7 : ### Adaptive Mesh Refinement 8 : - \subpage dev_guide_amr "Adaptive Mesh Refinement" 9 : 10 : ### Charm++ Interface 11 : - \subpage load_balancing_notes "Load Balancing Notes and Recommendations" 12 : 13 : ### Continuous Integration 14 : Explanations on our automated tests and deployments can be found here. 15 : - \subpage dev_guide_automatic_versioning 16 : 17 : ### CoordinateMap Guide 18 : Methods for creating custom coordinate maps are discussed here. 19 : - \subpage redistributing_gridpoints "Methods for redistributing gridpoints" 20 : 21 : ### Developing and Improving Executables 22 : - \subpage dev_guide_creating_executables "Executables and how to add them" 23 : - \subpage tutorials_parallel - A series of tutorials demonstrating how to write 24 : a parallel executable, and explaining some of the metaprogramming that turns 25 : user-provided code into a SpECTRE parallel executable 26 : - \subpage dev_guide_option_parsing "Option parsing" to get options from input 27 : files 28 : - \subpage dev_guide_importing "Importing" data from files 29 : - \subpage profiling "Profiling" SpECTRE with a variety of different tools 30 : - \subpage spectre_writing_python_bindings "Writing Python Bindings" to use 31 : SpECTRE C++ classes and functions from within python. 32 : - \subpage implementing_vectors "Implementing SpECTRE vectors" a quick how-to 33 : for making new generalizations of DataVectors 34 : - \subpage compiler_and_linker_errors "How to parse linker and compiler errors" 35 : - \subpage static_analysis_tools "Static analysis tools" 36 : - \subpage build_profiling_and_optimization - Getting started with improving 37 : compilation time and memory use 38 : - \subpage runtime_errors "Tips for debugging an executable" 39 : 40 : ### Foundational Concepts in SpECTRE 41 : Designed to give the reader an introduction to SpECTRE's most recurring concepts 42 : and patterns. 43 : - \subpage databox_foundations "Towards SpECTRE's DataBox" 44 : - \subpage protocols "Protocols: metaprogramming interfaces" 45 : - \subpage variables_foundations "Using the Variables class" to improve 46 : efficiency 47 : 48 : ### GPU Support 49 : Information on how to use and develop GPU support in SpECTRE. 50 : - \subpage gpu_support "GPU support" 51 : 52 : ### General SpECTRE Terminology 53 : Terms with SpECTRE-specific meanings are defined here. 54 : - \subpage domain_concepts "Domain Concepts" used throughout the code are 55 : defined here for reference. 56 : - \subpage visualisation_connectivity "Visualisation Connectivity" is defined 57 : and explained here for reference. 58 : 59 : ### Having your Contributions Merged into SpECTRE 60 : - \subpage writing_good_dox "Writing good documentation" is key for long term 61 : maintainability of the project. 62 : - \subpage writing_unit_tests "Writing Unit Tests" to catch bugs and to make 63 : sure future changes don't cause your code to regress. 64 : - \subpage github_actions_guide "GitHub Actions" is used to test every pull 65 : request. 66 : - \subpage code_review_guide "Code review guidelines." All code merged into 67 : develop must follow these requirements. 68 : 69 : ### Performance and Optimization 70 : - \subpage general_perf_guide "General performance guidelines" 71 : 72 : ### Technical Documentation for Fluent Developers 73 : Assumes a thorough familiarity and fluency in SpECTRE's usage of TMP. 74 : - \subpage DataBoxGroup "DataBox" 75 : - \subpage observers_infrastructure_dev_guide "Observers infrastructure" 76 : - \subpage dev_guide_parallelization_foundations - Parallelization 77 : infrastructure components and usage 78 : 79 : ### Template Metaprogramming (TMP) 80 : Explanations for TMP concepts and patterns known to the greater C++ community 81 : can be found here. 82 : - \subpage sfinae "SFINAE" 83 : - \subpage brigand "The Brigand TMP library"