Skip to content
/ BART Public
forked from SlaybaughLab/BART

A deterministic finite-element-based solver for the neutron transport equation designed for the evaluation of acceleration methods.

License

Notifications You must be signed in to change notification settings

nuomi68/BART

 
 

Repository files navigation

master dev
Build StatusCodecov Build StatusCodecov

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.

Test-driven development

BART uses the following applications and libraries for testing:

  • Travis CI for continuous integration
  • CTest for unit testings requiring MPI
  • Google Test for all other serial unit testings.
  • Codecov for code coverage of unit tests.

Rationale

Finite element method based code

BART is based off the general purpose finite element method deal.II. 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 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 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.

Benchmarks

Benchmarks from Sood (1999) are provided in the benchmarks folder for validation of the code.

Install and build

Please check install_build.md for installation and building instructions.

More to read

  • deal.II: general purpose finite element library
  • PETSc: high-performance parallel linear algebra library
  • Doxygen: documentation.
  • p4est: distributed meshing in multi-D.
  • Google Style Guide: consistent code convention.
  • Google Test: efficient unit testing tools.
  • CTest: unit testing tools with Google Test.

Developers

The development work is led by Dr. Rachel Slaybaugh. Graduate students actively involved in the development include:

Previous developers include

About

A deterministic finite-element-based solver for the neutron transport equation designed for the evaluation of acceleration methods.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 99.4%
  • Other 0.6%