BOUT++: Plasma fluid finite-difference simulation code in curvilinear coordinate systems
has
by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2647
requirements.txt
for dependencies by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2689
plt.show()
to example by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2687
Context
construction for MPICH by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2678
bout::globals::dump
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2699
make dist
invocation by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2707
clang-tidy-review
version by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2726
Full Changelog: https://github.com/boutproject/BOUT-dev/compare/v5.0.0...v5.1.0
build_defines
header by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2130
boutconfig
Python module with build configuration information by @dschwoerer in https://github.com/boutproject/BOUT-dev/pull/2010
brackets
->bracket
in manual by @johnomotani in https://github.com/boutproject/BOUT-dev/pull/2250
Monitor
documentation by @johnomotani in https://github.com/boutproject/BOUT-dev/pull/2255
Solver
API by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2285
FieldData
to be base class of Field
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2313
bout-config
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2328
Options
to be exactly one of either a section or a value by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2277
max_nonlinear_it
to max_nonlinear_iterations
by @johnomotani in https://github.com/boutproject/BOUT-dev/pull/2338
fmt::formatter
for Options
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2341
Coordinates::zlength()
result by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2471
hist_hi
and iteration
outputs by @johnomotani in https://github.com/boutproject/BOUT-dev/pull/2534
Solver
input options into constructor by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2484
LaplacePDD
implementation by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2567
Field3D.background
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2565
ShiftedMetric::shiftz
overloads by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2566
SAVE_ONCE
for Vector2/3D
by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2633
include/bout
and fix #include
s by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2568
Datafile
in Laplacian
constructor; update docs by @ZedThree in https://github.com/boutproject/BOUT-dev/pull/2636
Full Changelog: https://github.com/boutproject/BOUT-dev/compare/v4.4.2...v5.0.0
4.4.1 is a bugfix release:
beuler/snes
solver4.4.0 is a feature release. The main new features are:
FieldPerp
, std::vector<int>
, and
std::string
, while input options can now handle FieldPerp
.boutdata
and boututils
python libraries have been moved to standalone
packages. BOUT++ still comes bundled with them as submodules, but you can now
install them separately.InvertPar
and split flux derivatives.time_report:show
FFTW_EXHAUSTIVE
input option.See the full changelog for more details
4.3.3 is a bugfix release:
shiftOutput
for aligned fields**
, and MPI-aware loggingDelp2
4.3.2 is a bugfix release:
configure
dz
in the Python API a propertyDiv_par_K_Grad_par
check the staggered location of its inputsGrad2_par2
implementation in InvertParCR
FieldPerp
stokamak-2fluid
exampleDiv_par
when using more than one y-guard cell4.3.1 is a bugfix release, with a few minor fixes to library code, notably:
RGN_OUTER_X
regionOther changes are mostly housekeeping changes for the BOUT++ project.
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 to fromFieldAligned
and that calculations
are done in the correct y-direction space. Users may need to call
f.setDirectionY(YDirectionType::Aligned)
for a Field3D f
to set
the direction tagtoFieldAligned
and fromFieldAligned
free functionsbout::utils::is_Field
and variants provide simpler methods of
checking that input types are Field
s in templated codeemptyFrom(f)
and zeroFrom(f)
helper functions for creating
Field
s either allocated but not initialised, or allocated and
initialised to 0.0
respectively, while ensuring the result is
compatible with the Field
f
(same mesh, same staggering, etc.)dirichlet(1, width=3)
Field
typesField
szstart
and zend
, in preparation for introducing
guard cells in the z-directionOptions
has several new features:
Field
s. This uses an implementation
of C++17's std::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.doc
method which allows documentation to be added
as an attribute, which can be recorded in the BOUT.settings
file post-runDelp2
Array
, Matrix
and Tensor
all gained a reallocate
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)Coordinates
on staggered grids can now be read from grid filesFDDX_U2
implementationBoutInitialise
has been pulled apart into separate utility
functions under the bout::experimental
namespace so that they can
be used individuallyLaplaceCyclic
now accepts C1
and C2
coefficients which may be
differentLaplaceNaulin
may use the DC parts of C
for faster convergenceLaplaceNaulin
also gained an under-relaxation factor, which may
improve convergence and robustnessLaplace
solvers gained a uses3DCoefs
method. This returns
true
if the solver can make use of Field3D
coefficients rather
than using the DC component of themSolver
: Runge-Kutta-Legendre stabilised explicit
method, splitrk
. See
#1673 for more
detailsHeatFluxSNB
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 lengthBOUT_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 of NXPE
in input files for decomposing
the mesh in (x, y)
dx
from psi
instead of
forward differencingShiftAngle
ShiftedMetric
)bout::
namespace. This should help ensure we play nice with other
libraries, as well as logically group related things across parts of
the codebaseDeprecations:
invert_laplace
: create an instance of a Laplacian
via
Laplacian::create
and use the setCoef*
and solve
methodsSolver
: the current implementation is very slow
and will be removed in 5.0MsgStack::setPoint
: use MsgStack::push("")
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
and Mesh::YGLOBAL
: use Mesh::getGlobalXIndex
and
either Mesh::getGlobalYIndexNoBoundaries
or
Mesh::getGlobalYIndex
instead. The former (NoBoundaries
) is a
direct replacement for YGLOBAL
, whereas the latter includes the
boundaries and so is consistent with XGLOBAL
which does tooLaplacian::setFlags
: use Laplacian::setGlobalFlags
,
Laplacian::setInnerBoundaryFlags
and
Laplacian::setOuterBoundaryFlags
insteadCtoL
or
LtoC
(e.g. Div_par_CtoL
, Grad_par_LtoC
): the corresponding
versions without the suffix now support staggering. For example,
instead of Div_par_CtoL(f)
use Div_par(f, CELL_YLOW)
insteadRemoved:
serial
implementation of parderiv
. The cyclic
version
works both serially and in parallelcomm_group
: not used internally and too low-level to be usefulscipy
and scientific
netCDF libraries in
boututils
has been dropped. These were very slow and scientific
is no longer availableLaplace3D
: use Laplacian
insteadThis is a bugfix release:
See CHANGELOG.md for more details
Note: if you download the source code tarball from GitHub, please download the file BOUT++-v4.2.3.tar.gz
rather than the GitHub generated tarballs. This is because the GitHub tarball does not include the submodules.