Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/SlaybaughLab/BART
A deterministic finite-element-based solver for the neutron transport equation designed for the evaluation of acceleration methods.
https://github.com/SlaybaughLab/BART
Last synced: about 2 months ago
JSON representation
A deterministic finite-element-based solver for the neutron transport equation designed for the evaluation of acceleration methods.
- Host: GitHub
- URL: https://github.com/SlaybaughLab/BART
- Owner: SlaybaughLab
- License: mit
- Created: 2017-06-29T00:57:24.000Z (over 7 years ago)
- Default Branch: dev
- Last Pushed: 2021-05-19T18:28:29.000Z (over 3 years ago)
- Last Synced: 2024-08-02T15:10:28.948Z (5 months ago)
- Language: C++
- Homepage:
- Size: 14.1 MB
- Stars: 24
- Watchers: 9
- Forks: 13
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nuclear - BART - element, discrete ordinates code developed by UC-Berkeley (Particle Transport / Codes: Deterministic)
README
| `master` | `dev` |
|----------|-------|
|[![Build Status](https://travis-ci.org/SlaybaughLab/BART.svg?branch=master)](https://travis-ci.org/SlaybaughLab/BART)[![Codecov](https://codecov.io/gh/SlaybaughLab/BART/branch/master/graph/badge.svg)](https://codecov.io/gh/SlaybaughLab/BART/branch/master)|[![Build Status](https://travis-ci.org/SlaybaughLab/BART.svg?branch=dev)](https://travis-ci.org/SlaybaughLab/BART)[![Codecov](https://codecov.io/gh/SlaybaughLab/BART/branch/dev/graph/badge.svg)](https://codecov.io/gh/SlaybaughLab/BART/branch/dev)|# Bay Area Radiation Transport (BART)
## What is BART for?
Bay Area Radiation Transport (BART), is a C++-based research-purpose
code for parallel radiation transport computation in nuclear reactor
applications. BART is under active developed by the Computational
Neutronics group in Nuclear Engineering at University of California,
Berkeley.### Documentation
BART documentation is generated using [doxygen](http://www.stack.nl/~dimitri/doxygen/).
### Test-driven development
BART uses the following applications and libraries for testing:
- [Travis CI](https://travis-ci.org) for continuous integration
- [CTest](https://cmake.org/Wiki/CMake/Testing_With_CTest) for unit testings requiring MPI
- [Google Test](https://github.com/google/googletest) for all other
serial unit testings.
- [Codecov](https://codecov.io/) for code coverage of unit tests.## Rationale
### Finite element method based code
BART is based off the general purpose finite element method [deal.II](http://www.dealii.org/). It aims to solve first and second-order forms of linear Boltzmann equation for nuclear reactor applications using continuous/discontinuous finite element methods for spatial discretization with existing/developing acceleration methods. BART uses discrete ordinates method for angular discretization.### Parallelism in meshing and linear algebra
BART uses MPI for parallelism and is designed for computation on distributed memory system:
- By utilizing distributed triangulation enabled by [p4est](https://www.mcs.anl.gov/petsc/) library wrapped in deal.II, BART can automatically partition the mesh by however many number of processors requested and distribute the triangulation onto different processors.
- BART heavily depends on [PETSc](https://www.mcs.anl.gov/petsc/) by utilizing deal.II wrappers of PETSc data structure. Therefore, all the parallel-supported functionalities in PETSc (if wrapped by deal.II) can be invoked by BART. This includes parallel sparse matrix, parallel vectors and parallel preconditioners/algebraic solvers.### Formulations & Methods
BART supports the following formulations:
- the diffusion equation in 1/2/3D
- the Self-Adjoint Angular Flux formulation in 1D & 3D (2D pending implementation of a 2D quadrature)One of the major design goals of BART is to provide a framework for testing acceleration methods. There are no methods implemented in the current version, but multiple methods are planned to be implemented, including:
- Nonlinear diffusion acceleration (NDA)
- Two-grid acceleration (TG)Calculation of discrete Fourier transforms is provided via the [FFTW subroutine library](http://www.fftw.org/).
### Benchmarks
Benchmarks from Sood (1999) are provided in the `benchmarks` folder for validation of the code.
# Install and build
Please check [install_build.md](https://github.com/SlaybaughLab/BART/blob/master/install_build.md) for installation and building instructions.# More to read
- [deal.II](http://www.dealii.org/): general purpose finite element library
- [PETSc](https://www.mcs.anl.gov/petsc/): high-performance parallel linear algebra library
- [Doxygen](http://www.stack.nl/~dimitri/doxygen/): documentation.
- [p4est](http://www.p4est.org/): distributed meshing in multi-D.
- [Google Style Guide](https://google.github.io/styleguide/cppguide.html): consistent code convention.
- [Google Test](https://github.com/google/googletest): efficient unit testing tools.
- [CTest](https://cmake.org/Wiki/CMake/Testing_With_CTest): unit testing tools with Google Test.## Developers
The development work is led by [Dr. Rachel Slaybaugh](https://github.com/rachelslaybaugh). Graduate students actively involved in the development include:
- [Joshua Rehak](https://github.com/jsrehak/)Previous developers include
- [Dr. Weixiong Zheng](https://github.com/weixiong-zheng-berkeley/).
- [Marissa Ramirez Zweiger](https://github.com/mzweig/)
- [Alexander Blank](https://github.com/AlexanderBlank)