bout-dev

BOUT++: Plasma fluid finite-difference simulation code in curvilinear coordinate systems

https://github.com/boutproject/bout-dev

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (10.9%) to scientific vocabulary

Keywords

c-plus-plus computational-physics numerical-modelling pde physics physics-simulation-library plasma python
Last synced: 6 months ago · JSON representation ·

Repository

BOUT++: Plasma fluid finite-difference simulation code in curvilinear coordinate systems

Basic Info
Statistics
  • Stars: 209
  • Watchers: 30
  • Forks: 102
  • Open Issues: 256
  • Releases: 21
Topics
c-plus-plus computational-physics numerical-modelling pde physics physics-simulation-library plasma python
Created over 12 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Citation

README.md

BOUT++

Build Status License py3comp DOI

.______ ______ __ __ .___________. | _ \ / __ \ | | | | | | _ _ | |_) | | | | | | | | | `---| |----`_| |_ _| |_ | _ < | | | | | | | | | | |_ _|_ _| | |_) | | `--' | | `--' | | | |_| |_| |______/ \______/ \______/ |__|

BOUT++ is a framework for writing fluid and plasma simulations in curvilinear geometry. It is intended to be quite modular, with a variety of numerical methods and time-integration solvers available. BOUT++ is primarily designed and tested with reduced plasma fluid models in mind, but it can evolve any number of equations, with equations appearing in a readable form.

For example, the following set of equations for magnetohydrodynamics (MHD):

ddt_rho ddt_p ddt_v ddt_B

can be written simply as:

cpp ddt(rho) = -V_dot_Grad(v, rho) - rho*Div(v); ddt(p) = -V_dot_Grad(v, p) - g*p*Div(v); ddt(v) = -V_dot_Grad(v, v) + (cross(Curl(B),B) - Grad(p))/rho; ddt(B) = Curl(cross(v,B));

The full code for this example can be found in the orszag-tang example.

Jointly developed by University of York (UK), LLNL, CCFE, DCU, DTU, and other international partners.

Homepage found at http://boutproject.github.io/

Table of Contents

Requirements

BOUT++ needs the following:

  • A C++14 compiler
  • MPI
  • NetCDF

BOUT++ has the following optional dependencies:

  • FFTW3 (strongly recommended!)
  • OpenMP
  • PETSc
  • SLEPc
  • ARKODE
  • IDA
  • CVODE
  • LAPACK
  • Score-p (for performance diagnostics)

Usage and installation

Please see the users manual

Terms of use

BOUT++ is released under the LGPL, but since BOUT++ is a scientific code we also ask that you show professional courtesy when using this code:

  1. Since you are benefiting from work on BOUT++, we ask that you submit any improvements you make to the code to us by submitting a pull request to this repository
  2. If you use BOUT++ results in a paper or professional publication, we ask that you send your results to one of the BOUT++ authors first so that we can check them. It is understood that in most cases if one or more of the BOUT++ team are involved in preparing results then they should appear as co-authors.
  3. If you use BOUT++ in your work, please help ensure that all the authors get the credit they deserve by citing BOUT++, preferably using the DOI of the version you used. See the file CITATION.cff for details. In addition, you may also cite either of the two main papers: B. Dudson et al, Comp. Phys. Comm. 2009, and B. Dudson et al, Phys. of Plasmas 2016

You can convert the CITATION.cff file into a Bibtex file as follows:

pip3 install --user cffconvert
cffconvert -if CITATION.cff -f bibtex -of CITATION.bib

Overview of files

This directory contains

  • bin Files for setting the BOUT++ configuration
  • examples Example models and test codes
  • externalpackages External packages needed for installing BOUT++
  • include Header files used in BOUT++
  • manual Manuals and documentation (also doxygen documentation)
  • src The main code directory
  • CITATION Contains the paper citation for BOUT++
  • LICENSE LGPL license
  • LICENSE.GPL GPL license
  • tools Tools for helping with analysis, mesh generation, and data managment

    • archiving Routines for managing input/output files e.g. compressing data, converting formats, and managing runs
    • cylandhelimak_grids IDL codes for generating cylindrical and helimak grids
    • eigensolver Matlab routines for solving eigenmodes
    • idllib Analysis codes in IDL. Add this to your IDL_PATH environment variable
    • line_tracing IDL routines for line tracing of field lines
    • linetracingv2 Newer version of the IDL routines for line tracing of field lines
    • mathematicalib Library for post processing using Mathematica
    • matlablib Library for post processing using MATLAB
    • numlib Numerical IDL routines
    • octave Routines for post processing using octave
    • plasmalib IDL routines for calculation of plasma parameters
    • pdb2idl Library to read Portable Data Binary (PDB) files into IDL
    • pylib Analysis codes in Python
    • boutdata Routines to simplify accessing BOUT++ output
    • boututils Some useful routines for accessing and plotting data
    • post_bout Routines for post processing in BOUT++
    • slab IDL routine for grid generation of a slab
    • tokamak_grids Code to generate input grids for tokamak equilibria
    • gridgen Grid generator in IDL. Hypnotoad GUI for converting G-EQDSK files into a flux-aligned orthogonal grid.
    • elite Convert ELITE .eqin files into an intermediate binary file
    • gato Convert DSKGATO files into intermediate binary format
    • all Convert the intermediate binary file into BOUT++ input grid
    • coils Routines for calculating the field due to external RMP coils and adding to existing equilibria
    • cyclone Generate cyclone test cases (concentric circle "equilibrium" for local flux-surface calculations)
    • py_gridgen Translation" into python of the corresponding IDL routines in the folder gridgen
    • shifted_circle Produce shifted cirle equilibria input grids

Contributing

See CONTRIBUTING.md.

License

Copyright 2010 B.D.Dudson, S.Farley, M.V.Umansky, X.Q.Xu

BOUT++ is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

BOUT++ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

A copy of the LGPL license is in LICENSE. Since this is based on (and refers to) the GPL, this is included in LICENSE.GPL.

Some of the autoconf macros under m4 are licensed under GPLv3. These are not necessary to either build or run BOUT++, but are used in the creation of configure from configure.ac, and are provided as a courtesy to developers. You are free to substitute them with other autoconf macros that provide equivalent functionality.

BOUT++ links by default with some GPL licensed libraries. Thus if you compile BOUT++ with any of them, BOUT++ will automatically be licensed as GPL. Thus if you want to use BOUT++ with GPL non-compatible code, make sure to compile without GPLed code.

Owner

  • Name: boutproject
  • Login: boutproject
  • Kind: organization

Citation (CITATION.bib)

@misc{BOUTv4-3-2,
  author = {
            Benjamin Daniel Dudson and
            Peter Alec Hill and
            David Dickinson and
            Joseph Parker and
            Adam Dempsey and
            Andrew Allen and
            Arka Bokshi and
            Brendan Shanahan and
            Brett Friedman and
            Chenhao Ma and
            David Schwörer and
            Dmitry Meyerson and
            Eric Grinaker and
            George Breyiannia and
            Hasan Muhammed and
            Haruki Seto and
            Hong Zhang and
            Ilon Joseph and
            Jarrod Leddy and
            Jed Brown and
            Jens Madsen and
            John Omotani and
            Joshua Sauppe and
            Kevin Savage and
            Licheng Wang and
            Luke Easy and
            Marta Estarellas and
            Matt Thomas and
            Maxim Umansky and
            Michael Løiten and
            Minwoo Kim and
            M Leconte and
            Nicholas Walkden and
            Olivier Izacard and
            Pengwei Xi and
            Peter Naylor and
            Fabio Riva and
            Sanat Tiwari and
            Sean Farley and
            Simon Myers and
            Tianyang Xia and
            Tongnyeol Rhee and
            Xiang Liu and
            Xueqiao Xu and
            Zhanhui Wang
         },
title  = {{BOUT++}},
month  = {10},
year   = {2020},
doi    = {10.5281/zenodo.4046792},
url    = {https://github.com/boutproject/BOUT-dev}
}

@article{Dudson2009,
  author = 	 "Dudson, B D and Umansky, M V and Xu, X Q and Snyder, P B and Wilson, H R",
  title = {{BOUT++}: A framework for parallel plasma fluid simulations},
  journal = "Computer Physics Communications",
  volume = 180,
  pages = {1467-1480},
  year = "2009",
  note = "",
  issn = "0010-4655",
  doi = "DOI: 10.1016/j.cpc.2009.03.008",
  url = "http://www.sciencedirect.com/science/article/B6TJ5-4VTCM95-3/2/ed200cd23916d02f86fda4ce6887d798",
}

@Article{boutpp-2009-arxiv,
  author = 	 "Dudson, B D and Umansky, M V and Xu, X Q and Snyder, P B and Wilson, H R",
  title = 	 {{BOUT++}: a framework for parallel plasma fluid simulations},
  journal = 	 {arXiv},
  year = 	 2008,
  volume =	 {physics.plasm-ph},
  pages =	 {0810.5757},
  month =	 {Nov}
}

@article{doi:10.1063/1.4953429,
  author = {Dudson,B. D.  and Madsen,J.  and Omotani,J.  and Hill,P.  and Easy,L.  and Løiten,M. },
  title = {Verification of BOUT++ by the method of manufactured solutions},
  journal = {Physics of Plasmas},
  volume = {23},
  number = {6},
  pages = {062303},
  year = {2016},
  doi = {10.1063/1.4953429},
  url = {https://doi.org/10.1063/1.4953429}
}

GitHub Events

Total
  • Create event: 116
  • Issues event: 25
  • Watch event: 19
  • Delete event: 110
  • Member event: 1
  • Issue comment event: 214
  • Push event: 348
  • Pull request event: 231
  • Pull request review comment event: 618
  • Pull request review event: 194
  • Fork event: 9
Last Year
  • Create event: 116
  • Issues event: 25
  • Watch event: 19
  • Delete event: 110
  • Member event: 1
  • Issue comment event: 214
  • Push event: 348
  • Pull request event: 231
  • Pull request review comment event: 618
  • Pull request review event: 194
  • Fork event: 9

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 15
  • Total pull requests: 84
  • Average time to close issues: 1 day
  • Average time to close pull requests: 19 days
  • Total issue authors: 9
  • Total pull request authors: 16
  • Average comments per issue: 0.07
  • Average comments per pull request: 0.71
  • Merged pull requests: 30
  • Bot issues: 1
  • Bot pull requests: 33
Past Year
  • Issues: 15
  • Pull requests: 83
  • Average time to close issues: 1 day
  • Average time to close pull requests: 11 days
  • Issue authors: 9
  • Pull request authors: 16
  • Average comments per issue: 0.07
  • Average comments per pull request: 0.66
  • Merged pull requests: 29
  • Bot issues: 1
  • Bot pull requests: 33
Top Authors
Issue Authors
  • dschwoerer (16)
  • ZedThree (8)
  • mikekryjak (5)
  • totork (5)
  • yurivict (3)
  • davedavemckay (2)
  • tbody-cfs (1)
  • mrhardman (1)
  • Plasdom (1)
  • ggeorgakoudis (1)
  • bendudson (1)
  • johnomotani (1)
  • jonycastagna (1)
  • carrommad (1)
  • bshanahan (1)
Pull Request Authors
  • dependabot[bot] (106)
  • dschwoerer (60)
  • ZedThree (38)
  • bendudson (28)
  • tomc271 (8)
  • Steven-Roberts (6)
  • tbody-cfs (3)
  • ggeorgakoudis (3)
  • maggul (3)
  • johnomotani (2)
  • rfalgout (1)
  • seimtpow (1)
  • tchaikov (1)
  • pressatojump (1)
  • bshanahan (1)
Top Labels
Issue Labels
build-system (3) documentation (2) question (2) bug (1)
Pull Request Labels
dependencies (107) submodules (76) python (18) github_actions (14) small-change (8) FCI (5) work in progress (2) discussion (2) feature (2) performance (2) bugfix (2) merge-conflicts (1) tests (1) release (1) PythonInterface (1) enhance request (1) easyfix (1) breaking change (1)

Dependencies

.github/workflows/clang-format.yml actions
  • actions/checkout v2 composite
  • stefanzweifel/git-auto-commit-action v4 composite
.github/workflows/clang-tidy-review.yml actions
  • ZedThree/clang-tidy-review v0.8.4 composite
  • actions/checkout v2 composite
.github/workflows/tests.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
manual/sphinx/requirements.txt pypi
  • breathe *
  • sphinx ==4.0.1
requirements.txt pypi
  • Jinja2 ==2.11.3
  • future >=0.16.0
  • matplotlib >=2.0.0
  • netcdf4 >=1.3.1
  • numpy >=1.14.1
  • scipy >=1.0.0
.github/workflows/black-fix.yml actions
  • actions/checkout v3 composite
  • stefanzweifel/git-auto-commit-action v4 composite
.github/workflows/python-package.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v1 composite
pyproject.toml pypi
tools/pylib/_boutpp_build/setup.py pypi