Releases: boutproject/BOUT-dev
Releases · boutproject/BOUT-dev
v5.1.1
What's Changed
- Fix sphinx configuration by @dschwoerer in #2762
- Prefer dnf5 for fedora CI (master) by @dschwoerer in #2764
- [RTD] add os to read the docs config by @dschwoerer in #2779
- Fix test-laplace-petsc3d by @dschwoerer in #2781
- Ensure also lower case is accepted by @dschwoerer in #2759
- CI: Increase shm size in container by @dschwoerer in #2777
- CI: user master branch for docker actions by @dschwoerer in #2780
- Bump actions/setup-python from 1 to 4 by @dependabot in #2771
- CI: Run on PETSc developement branch by @dschwoerer in #2765
- Bump stefanzweifel/git-auto-commit-action from 4 to 5 by @dependabot in #2772
- Bump ZedThree/clang-tidy-review from 0.13.1 to 0.14.0 by @dependabot in #2773
- Bump externalpackages/fmt from
f0903ad
to2ac6c5c
by @dependabot in #2776 - master branch will be 5.1.1 not 5.2.0 by @dschwoerer in #2784
- CI: Replace pip script with requirements.txt by @ZedThree in #2794
- Set oversubscribe flags for openmpi 5 by @dschwoerer in #2800
- CI: Bump actions/setup-python from 4 to 5 by @dependabot in #2819
- Remove propietary data (master) by @dschwoerer in #2832
- Do not excessively bump googletest by @dschwoerer in #2836
- Bump actions/cache from 3 to 4 by @dependabot in #2845
- Bump ZedThree/clang-tidy-review from 0.14.0 to 0.17.0 by @dependabot in #2846
- Add warnings about SUNDIALS versions <4 by @Steven-Roberts in #2840
- Bump codecov/codecov-action from 3 to 4 by @dependabot in #2860
- Fix name of PVODE Config file by @dschwoerer in #2903
- SUNDIALS v7 support (backport to v5) by @ZedThree in #2937
- CI: Ensure we do not timeout due to slow mirrors by @dschwoerer in #2940
- mark fmt::format() const by @tchaikov in #2942
- Update netcdf4 requirement from ~=1.6.0 to ~=1.7.1 by @dependabot in #2960
- Update boutdata and boututils submodules by @dschwoerer in #2959
- Small clang-tidy fixes for sundials solvers by @ZedThree in #2953
- Resolve merge conflict for v5.1.1-rc by @dschwoerer in #2964
- Tools for updating contributors and version numbers by @tomc271 in #2734
- V5.1.1 rc by @ZedThree in #2935
- Update jinja2 requirement from ~=3.1.0 to ~=3.1.4 by @dependabot in #2972
New Contributors
Full Changelog: v5.1.0...v5.1.1
v5.1.0
What's Changed
- SNB and InvertParDiv for nonuniform grids by @bendudson in #2572
- Fix error message by @dschwoerer in #2642
- Expose mixed derivatives by @dschwoerer in #2639
- Cleanup syntax by @dschwoerer in #2638
- Merge v5 into next - resolve conflicts by @dschwoerer in #2658
- Merge v5 into next by @ZedThree in #2655
- Squash optional by @dschwoerer in #2659
- Always provide applyParallelBoundary by @dschwoerer in #2640
- Fix getUniform warning by @dschwoerer in #2644
- Handle missing python better for finding numpy by @dschwoerer in #2643
- Fix some warnings and deprecated headers by @ZedThree in #2666
- Fix versions after release by @dschwoerer in #2669
- Improve docs + fix boutpp docs (master) by @dschwoerer in #2664
- Fix some warnings by @dschwoerer in #2661
- switch to BOUT_FOR and simplify Div_a_Grad_perp by @dschwoerer in #2641
- fix boutconfig's
has
by @dschwoerer in #2647 - Fix versions after release (next) by @dschwoerer in #2670
- Compute modulo only once by @dschwoerer in #2645
- Set some _ROOT vars by @dschwoerer in #2652
- Add dependabot config by @dschwoerer in #2680
- Some fixes for tokamak-2fluid example by @ZedThree in #2668
- Error early with in-source-builds by @dschwoerer in #2660
- More forgiving restart inputs by @bendudson in #2676
- apply clang-format v15.0.7 and .clang-format@d8f14fdd by @dschwoerer in #2662
- Python: If we are on a tag, we should use that as version by @dschwoerer in #2683
- Recommend
requirements.txt
for dependencies by @dschwoerer in #2689 - Add
plt.show()
to example by @dschwoerer in #2687 - CI: switch to openmpi for fedora GHA by @dschwoerer in #2682
- Fix pvode warnings by @dschwoerer in #2684
- Track more build options by @dschwoerer in #2634
- Revert "Workaround for test-restart-io for recent boututils" by @dschwoerer in #2685
- Update boututils and boutdata to working versions by @dschwoerer in #2679
- Update bundled boututils and boutdata by @dschwoerer in #2657
- isUniform: Do not fail if numbers are only almost equal by @dschwoerer in #2693
- Docs for docs improvements by @dschwoerer in #2690
- Fix SUNDIALS
Context
construction for MPICH by @dschwoerer in #2678 - Improve checking in coords constructor by @dschwoerer in #2650
- CI: do not run on removed old ubuntu by @dschwoerer in #2695
- Fall back to pkgconfig for finding netcdf-cxx4 by @dschwoerer in #2686
- CI: Update runs-on (next) by @dschwoerer in #2696
- Docs: Fix default branch for "suggest edit" by @ZedThree in #2697
- Improve invSg calculation by @dschwoerer in #2646
- Add support for PETSc & SLEPc 3.18 / 3.19 by @ZedThree in #2704
- provide VectorMetric in vectormetric.hxx by @dschwoerer in #2706
- Remove last uses of
bout::globals::dump
by @ZedThree in #2699 - Remove unnecessary check for aligned fields when applying twist-shift by @dschwoerer in #2711
- The additional check is not needed by @dschwoerer in #2710
- Get mesh outputs after physics init by @bendudson in #2714
- Solver improvements by @bendudson in #2716
- Review of PR #2514 (Switch to CMake) by @tomc271 in #2694
- Do not try to run SLEPc or PETSc in configure by @dschwoerer in #2709
- Switch to CMake in CI and docs by @dschwoerer in #2514
- Update
make dist
invocation by @dschwoerer in #2707 - mesh:paralleltransform is a section by @dschwoerer in #2702
- Remove references to build dir from install by @dschwoerer in #2628
- CI install natsort by @bendudson in #2723
- Revert sundials detection by @dschwoerer in #2725
- Fix static CI build by @dschwoerer in #2724
- Bump
clang-tidy-review
version by @ZedThree in #2726 - CI: Install dnf5 for Fedora by @dschwoerer in #2731
- Build containers in GHA CI by @dschwoerer in #2511
- Generate BOUT++ tar via boutpp backend by @dschwoerer in #2708
- Remove h5py - we only support netcdf by @dschwoerer in #2735
- Update to dnf5 (master) by @dschwoerer in #2732
- Improving compatibility with fmt 10 by @dschwoerer in #2730
- Fix FV::Div_a_Grad_perp Y alignment by @bendudson in #2722
- Update RELEASE_HOWTO.md by @dschwoerer in #2741
- 5.1 release candidate by @ZedThree in #2720
- CMake: Fix version detection from git tag by @ZedThree in #2753
- Add fallback if the version has been bumped bot not tagged by @dschwoerer in #2754
New Contributors
Full Changelog: v5.0.0...v5.1.0
v5.0.0
What's Changed
- Parse params by @bendudson in #1706
- More expressions "improvements" by @bendudson in #1764
- Fix some issues in hypnotoad by @friva000 in #1783
- Add macro for Scorep instrumentation of a user-defined code region by @JosephThomasParker in #1784
- Merge v4.3.0 into next by @ZedThree in #1826
- Bump version in next to 5.0.0-alpha by @ZedThree in #1827
- Require C++14 by @ZedThree in #1830
- Get latest versions of submodules by @ZedThree in #1831
- Fix various warnings by @ZedThree in #1832
- Include all boundary cells in GlobalNy by @johnomotani in #1829
- Fix typo in initialisation of rgn_outer_x by @AdamD94 in #1837
- Petsc interface by @cmacmackin in #1805
- Remove deprecated Laplacian API by @ZedThree in #1834
- Add remaining integrated tests to CMake build by @ZedThree in #1833
- Rename Positon -> Context, simplify class, fix things by @bendudson in #1750
- Standardise factories by @ZedThree in #1842
- Allow user to override library option defaults by @johnomotani in #1773
- Fix PETSc Laplace tests by @ZedThree in #1859
- MPI wrapper class by @cmacmackin in #1808
- Add fmtlib locale corrections by @bendudson in #1866
- Use {fmt} for all string formatting by @ZedThree in #1847
- CMake: fix FindSlepc for non-make generators by @ZedThree in #1881
- Fixes for Windows by @ZedThree in #1874
- FieldGenerate refactor by @dschwoerer in #1705
- Remove unused parameters to silence warnings in MsgStack by @ZedThree in #1887
- Generate report for Timers by @ZedThree in #1882
- Petsc interface generalisation by @cmacmackin in #1889
- Rename death tests according to gtest recommendations by @ZedThree in #1891
- Cmake fixes by @dschwoerer in #1909
- Macro for creating enum classes by @johnomotani in #1841
- Laplace performance test by @JosephThomasParker in #1908
- Implement toFieldAligned and fromFieldAligned for Vector3D by @johnomotani in #1877
- Add v5 upgrader scripts for XZInterpolation by @ZedThree in #1919
- Workaround for Petsc init/finialise not being idempotent by @ZedThree in #1922
- Fix segfaults from PvodeSolver by @johnomotani in #1926
- Implement BOUT_FOR for FV::div_f_v by @bshanahan in #1918
- XZInterpolation rename, and passing Options to XZInterpolation objects by @johnomotani in #1896
- Fixes for staggering in lapd-drift example by @johnomotani in #1925
- Various minor fixes for the sphinx docs by @ZedThree in #1935
- Minor Travis fixes and job names by @ZedThree in #1942
- Rely on latexmk in noninteractive mode by @dschwoerer in #1938
- use system library, if GIT_SUBMODULE=OFF by @dschwoerer in #1907
- ensure make clean cleans tests by @dschwoerer in #1738
- Ignore latexmk files by @dschwoerer in #1947
- Add Mesh::getRegion for use in generic code by @ZedThree in #1890
- MsgStack and PetscLib thread safety by @ZedThree in #1941
- Add ZInterpolation, ZHermiteSpline by @ZedThree in #1944
- Add full perpendicular Laplacian, inverse of LaplaceXY by @ZedThree in #1939
- Generate version header by @ZedThree in #1920
- Update staggered grids implementation in various examples by @johnomotani in #1954
- Add ShiftedMetricInterp: shifted metric using interpolation in Z by @ZedThree in #1946
- Set corner cells consistently by @johnomotani in #1885
- Exclude corner cells in LaplaceXY by @ZedThree in #1957
- Fix some missed fmt format strings by @ZedThree in #1943
- Fix possible data race in MsgStack::push() by @johnomotani in #1955
- Add extra region option for mixed derivatives by @ZedThree in #1936
- CMake: find package fixes by @ZedThree in #1912
- Pass method and region arguments to D2DXDY in Laplace(Field2D) by @johnomotani in #1961
- CMake: enable using external mpark.variant by @ZedThree in #1900
- Fix runtest for non-make generators by @ZedThree in #1952
- fix for running unit-test as root by @dschwoerer in #1959
- Field3d copy parallel slices by @ZedThree in #1960
- Fix typo in example/performance/communications by @johnomotani in #1963
- LaplaceXY: finite difference option by @johnomotani in #1789
- Add region argument to XZInterpolations by @ZedThree in #1962
- Algebraic multigrid by @cmacmackin in #1803
- Fix typo in Ubuntu 16.04 installation command by @bshanahan in #1964
- fix test-laplace-petsc3d by @dschwoerer in #1985
- Use custom main instead of PhysicsModel in test-communications by @johnomotani in #1983
- Merge v4.3.1 into next by @ZedThree in #1999
- Include smaller "fmt/core.h" by @ZedThree in #2001
- Fix --enabled-shared for configure by @dschwoerer in #1984
- Provide better error if fields are not compatible by @dschwoerer in #2012
- Ensure quiet script isn't too verbose on error by @dschwoerer in #2011
- fix requires in options-netcdf test by @dschwoerer in #2009
- Improve some error messages by @dschwoerer in #2005
- Ensure ffts are OpenMP thread safe by @dschwoerer in #2006
- pkg-config petsc (next) by @dschwoerer in #1914
- Minor fixes for elm-pb and python tools by @dschwoerer in #1958
- Run wrapper improvements by @dschwoerer in #2007
- Fix bug in configure when using dash as shell by @dschwoerer in #2016
- Fix formatting of 'Obtaining BOUT++' section heading by @johnomotani in #2015
- Remove MUMPS by @dschwoerer in #2018
- Update the staggered grids section of the manual by @johnomotani in #2028
- remove checklib dependency from unit tests by @dschwoerer in #2002
- Fix and unit tests for BOUT_ENUM_CLASS by @johnomotani in #2031
- Parallel tests by @dschwoerer in #2000
- filledFrom using lambda function by @bendudson in #2037
- Construct Option with initializer_list by @bendudson in #1772
- Allow PETSc options to be passed from BOUT.inp by @johnomotani in #1795
- Travis: add Fedora job by @dschwoerer in #2036
- Add location checks to Div_par_K_Grad_par by @bshanahan in #2038
- Minor optimizations for ZHermiteSpline by @johnomotani in #2035
- Add Physi...
BOUT++ v4.4.2
- CMake: option to ignore a conda environment; fix for PVODE #2494 (johnomotani)
- CMake fixes for netCDF #2493 (johnomotani)
- Fix bug in PetscLib that broke no-PETSc builds #2492 (johnomotani)
- Remove tests depending on UB #2491 (j-b-o)
- Make cmake submodule update work with older versions of git #2490 (johnomotani)
BOUT++ v4.4.1
4.4.1 is a bugfix release:
- Fixed some issues building BOUT++ on MacOS
- Fixed some issues when installing
- Fixed some issues when downloading SUNDIALS and netCDF C++
- Fixed some out of date documentation
- Some improvements/fixes to the
beuler/snes
solver
BOUT++ v4.4.0
4.4.0 is a feature release. The main new features are:
- The CMake support has been expanded, and will replace the autotools build
system in the next major release. See the CMake installation
instructions
for details on building with CMake. - Output files can now handle
FieldPerp
,std::vector<int>
, and
std::string
, while input options can now handleFieldPerp
. - Output and evolving variables can now have an optional description
- The
boutdata
andboututils
python libraries have been moved to standalone
packages. BOUT++ still comes bundled with them as submodules, but you can now
install them separately. - Staggered grids now work with
InvertPar
and split flux derivatives. - User code can set default values that override the library's default values.
- Timing information can be output in a table at the end of the run with
time_report:show
- Some basic provenance information tracking has been enabled: each run now
generates a random unique ID. Hypnotoad grid files that contain a UUID will
also be tracked. - A new time solver has been added, an adaptive, arbitrary order Adams-Bashforth
solver. - FFTs can use the
FFTW_EXHAUSTIVE
input option.
See the full changelog for more details
BOUT++ v4.3.3
4.3.3 is a bugfix release:
- Better documentation and tests
- Fix
shiftOutput
for aligned fields - Some improvements to the Python API, including support for Python's
exponentiation operator**
, and MPI-aware logging - Fix an uninitialised variable in
Delp2
- Bump the version of jinja2 from 2.10 to 2.11
- Fix for some Solvers not always using user preconditioner/Jacobian
- Some minor fixes to the build systems
BOUT++ v4.3.2
4.3.2 is a bugfix release:
- Make downloading the submodules a bit nicer, including an option for
using non-bundled versions when usingconfigure
- Make
dz
in the Python API a property - Make
Div_par_K_Grad_par
check the staggered location of its inputs - Enable split-flux derivatives on staggered fields
- Fix
Grad2_par2
implementation inInvertParCR
- Fix an issue writing
FieldPerp
s - Make it easier to compile the examples with different versions of
BOUT++, plus fixes for thetokamak-2fluid
example - Fix
Div_par
when using more than one y-guard cell - Fix an issue with text attributes in HDF5 files
BOUT++ v4.3.1
4.3.1 is a bugfix release, with a few minor fixes to library code, notably:
- Fix the creation of the
RGN_OUTER_X
region - Several small bugs in the Python API
- Preserve restart files if there's a crash during initialisation
- Fix some segfaults in the PvodeSolver
- Fix some issues with Hypnotoad (see #1783)
Other changes are mostly housekeeping changes for the BOUT++ project.
BOUT++ v4.3.0
4.3.0 is a big feature release:
Field
s are now "tagged" with their "y-direction": that is, whether
they are in field-aligned space or not. This allows us to perform
more internal checking, for example, that only field-aligned
Field3D
s are passed tofromFieldAligned
and that calculations
are done in the correct y-direction space. Users may need to call
f.setDirectionY(YDirectionType::Aligned)
for aField3D f
to set
the direction tag- Add
toFieldAligned
andfromFieldAligned
free functions bout::utils::is_Field
and variants provide simpler methods of
checking that input types areField
s in templated code- Many, many more functions and operators support staggering. We're
now also much more consistent about checking function arguments have
compatible staggered locations - New
emptyFrom(f)
andzeroFrom(f)
helper functions for creating
Field
s either allocated but not initialised, or allocated and
initialised to0.0
respectively, while ensuring the result is
compatible with theField
f
(same mesh, same staggering, etc.) - Expressions used in input files now have support for unicode,
escaping characters and implicit multiplication. See
#1333 for more
details. - Internationalisation support, including translations for French,
German, Spanish, and Simplified and Traditional Chinese - Keyword arguments for boundaries in input files, e.g.
dirichlet(1, width=3)
- File-level attributes in output files
- Write more things to output files, including processor indices and
parallel transform information - Complete overhaul of the derivative operators:
- derivative operators can now use native vectorisation where
possible, as well parallelisation via OpenMP. - users can register their own derivative operators and choose
them at runtime - more consistent handling of staggering in all directions and for
allField
types - better handling of field-aligned
Field
s
- derivative operators can now use native vectorisation where
- Various bug fixes for parallel derivative inversions
- Introduced
zstart
andzend
, in preparation for introducing
guard cells in the z-direction Options
has several new features:- it can now store
Field
s. This uses an implementation
of C++17'sstd::variant
backported to work with
C++11. Unfortunately, there are some compilers which have
problems (see installation issues for help) Options::isSection
gained the ability to check whether an
input argument is a subsection or not- now records the type of the option when used
- gained the
.doc
method which allows documentation to be added
as an attribute, which can be recorded in theBOUT.settings
file post-run
- it can now store
- FFTW is now an optional dependency
- A non-Fourier implementation of
Delp2
- A generic linear operator inversion class (see
#1439) Array
,Matrix
andTensor
all gained areallocate
method. This allows dynamic resizing of those objects, but
invalidates the existing dataFieldFactory
now has separate parsing and generating stages, so
functions can be parsed once and evaluated multiple times (e.g. for
time-dependent functions)- Enable communications for simulations with no core, only divertor
legs Coordinates
on staggered grids can now be read from grid files- New
FDDX_U2
implementation - Support for SUNDIALS versions 2.6 to 4.1.0
BoutInitialise
has been pulled apart into separate utility
functions under thebout::experimental
namespace so that they can
be used individuallyLaplaceCyclic
now acceptsC1
andC2
coefficients which may be
differentLaplaceNaulin
may use the DC parts ofC
for faster convergenceLaplaceNaulin
also gained an under-relaxation factor, which may
improve convergence and robustness- The
Laplace
solvers gained auses3DCoefs
method. This returns
true
if the solver can make use ofField3D
coefficients rather
than using the DC component of them - A new time
Solver
: Runge-Kutta-Legendre stabilised explicit
method,splitrk
. See
#1673 for more
details - Experimental support for CMake
- Added
HeatFluxSNB
which calculates heat flux using the
Shurtz-Nicolai-Busquet (SNB) model. Nonlocal (kinetic) corrections
to the Spitzer-Harm collisional heat flux, which become important
when the mean free path becomes a small (~1%) fraction of the
temperature scale length - The new
BOUT_SCOREP_REGION("name")
will automatically instrument a
scope with Score-P if BOUT++ was compiled with Score-P
support (see the documentation for more information) NYPE
may be given instead ofNXPE
in input files for decomposing
the mesh in(x, y)
- Many fixes and improvements for Hypnotoad:
- Use centred differencing to compute
dx
frompsi
instead of
forward differencing - Fix for when the separatrix is exactly on a grid point
- Fix for when the separatrix is very close to the X-point
- Fix computation of
ShiftAngle
- Add a checkbox to the 'Output' tab, which if selected outputs
metrics for orthogonal coordinates (i.e. usingShiftedMetric
) - We now check what coordinate system was used to generate grid
files in Hypnotoad when reading them in BOUT++ - Lots of fixes for non-orthogonal grids (see
#1593,
#1596, and
#1636) - Use double precision everywhere
- Add option to write y-boundary guard cells
- See here for a complete
list
- Use centred differencing to compute
- Many, many more tests! Unit test coverage since v4.2.0 has doubled
- We have begun to move parts of the codebase into a
bout::
namespace. This should help ensure we play nice with other
libraries, as well as logically group related things across parts of
the codebase
Deprecations:
invert_laplace
: create an instance of aLaplacian
via
Laplacian::create
and use thesetCoef*
andsolve
methods- Karniadakis time
Solver
: the current implementation is very slow
and will be removed in 5.0 MsgStack::setPoint
: useMsgStack::push("")
- The following
Mesh
methods were experimental, low-level
communication routines that turned out to not be so useful:sendToProc
receiveFromProc
UpXSplitIndex
DownXSplitIndex
sendYOutIndest
sendYOutOutdest
sendYInIndest
sendYInOutdest
irecvYOutIndest
irecvYOutOutdest
irecvYInIndest
irecvYInOutdest
Mesh::XGLOBAL
andMesh::YGLOBAL
: useMesh::getGlobalXIndex
and
eitherMesh::getGlobalYIndexNoBoundaries
or
Mesh::getGlobalYIndex
instead. The former (NoBoundaries
) is a
direct replacement forYGLOBAL
, whereas the latter includes the
boundaries and so is consistent withXGLOBAL
which does tooLaplacian::setFlags
: useLaplacian::setGlobalFlags
,
Laplacian::setInnerBoundaryFlags
and
Laplacian::setOuterBoundaryFlags
instead- The staggered parallel differential operators that end
CtoL
or
LtoC
(e.g.Div_par_CtoL
,Grad_par_LtoC
): the corresponding
versions without the suffix now support staggering. For example,
instead ofDiv_par_CtoL(f)
useDiv_par(f, CELL_YLOW)
instead
Removed:
- The
serial
implementation ofparderiv
. Thecyclic
version
works both serially and in parallel comm_group
: not used internally and too low-level to be useful- Support for the
scipy
andscientific
netCDF libraries in
boututils
has been dropped. These were very slow andscientific
is no longer available Laplace3D
: useLaplacian
instead