samuelkgutierrez / branson

A Monte Carlo transport mini-app for studying new parallel algorithms

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Branson

Linux Build Status Windows Build Status codecov.io Latest Version PyPI

Introduction

So you've decided to use Branson...

Here are some things to know:

  • Branson is not an acronym.
  • The point of Branson is to study different algorithms for parallel Monte Carlo transport. Currently it contains particle passing and mesh passing methods for domain decomposition.
  • Many of the parameters that impact parallel performance can be set in the input file.
  • The input file format is ugly right now and I don't have a good list of parameters and what they do. Sorry.
  • Input files are in XML, which makes them easy to generate and change in python.
  • Input files are complicated when you want to have multiple spatial regions but are pretty simple otherwise.

How to install

Accessing the sources

  • Download a tarball from Github, or
  • Fork and clone the git repository.
# after forking the repository
git clone git@github.com:[github-username]/branson
cd branson
git remote add upstream git@github.com:lanl/branson
git checkout -b develop upstream/develop

Installing Branson:

  • Build requirements:
  • Optional dependencies (needed for visualization)
    • HDF5
    • Silo
    • If these tools aren't readily avilable on your target machine, consider using a package manager like spack to help you install these tools.
  • There is only one CMake user option right now: CMAKE_BUILD_TYPE which can be set on the command line with -DCMAKE_BUILD_TYPE=<Debug|Release> and the default is Release.
  • If cmake has trouble finding your installed TPLs, you can try
    • appending their locations to CMAKE_PREFIX_PATH,
    • Setting helper variables like BOOST_ROOT or HDF5_ROOT (refer to the cmake documentation or the FindXXX.cmake scripts in Branson's src/config directory for a list of variables), or
    • try running ccmake . from the build directory and changing the values of build system variables related to TPL locations.
EXPORT CXX=`which g++`
cd $build_dir
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=<install-location> ${branson_source_dir}/src
make -j

Testing the build:

cd $build_dir
ctest -j 32

Special builds

Fake Multigrop Branson:

  • The clean_mg branch has a new capability that mimics the data flow in real multigroup transport.
  • This branch sets the number of groups at the configure step in CMake. I know this is messy from a usability standpoint but it makes the data layout very easy to control when the number of groups is known at compile time. Use the N_GROUPS CMake variable to set the number of groups (e.g. cmake -DN_GROUPS=10 ../path/to/CMakeLists.txt).
  • The code will still produce gray results! The physical value in each group is the same and it's still set via the input deck.
  • This branch samples a group with a uniform PDF (it does not weight the opacity with a Planckian spectrum).

Authors

  • Branson was written by Alex R. Long
  • Random123 is by D. E. Shaw Research, Copyright 2010-2011
  • RNG.h uses code from Draco

Release

Branson is released under the BSD 3-Clause License. For more details see the LICENSE.md file.

LANL code designation: C17048

About

A Monte Carlo transport mini-app for studying new parallel algorithms

License:Other


Languages

Language:C++ 80.0%Language:C 8.3%Language:Objective-C 5.6%Language:CMake 5.2%Language:Python 0.9%