Recent Releases of gyselalibxx

gyselalibxx - Version 0.2.0

What's New

Added

  • Add a Gyroaverage operator with tests for circular geometry.
  • Curvilinear coordinate change classes have an O-point method to retrieve the O-point in the non-curvilinear coordinates.
  • Add a batched operator() to DiscreteToCartesian allowing a field of coordinates to be converted.
  • Add a LiePoissonBracket::operator() overload which takes a 2D tensor as the second argument to the bracket.
  • Add a function PDI_expose_vector_field to output a vector field via PDI.
  • Add a control_points method to DiscreteToCartesian to allow all control points to be retrieved at once.

Fixed

  • Fix uninitialized warning in the Tensor class.
  • Fix unused m_magnetic_field variable in MaxwellianEquilibrium class.
  • Fix break points incorrectly labelled as knots.
  • Fix minimum version requirement of Kokkos.
  • Fix tolerance of floating point comparisons in JacobianMatrixAndJacobianCoefficients and MultipatchSplineEvaluatorTest tests
  • Fix unnecessary std::move calls.
  • Fix missing assertion in LeviCivitaTensor to prevent division by 0 when Jacobian is calculated at singular point.
  • Fix bad result of is_tensor_v for IdentityTensor.

Changed

  • Change the interface of IVlasovSolver and IQNSolver in geometryXYVxVy to store the electric field in a VectorField.
  • Integration of ddc::StridedDiscreteDomain by making IdxRangeSlice a type alias.
  • The parameter iter_start has been removed from the constructor of RestartInitialisation.
  • Generalise compute_coeffs_on_mapping to work with any mapping.
  • Rely on GPU-aware MPI to allow GPU-direct MPI for MPITransposeAllToAll.
  • Curvilinear coordinate change classes take a Coord type to specify the O-point in the constructor.
  • Allow init_discrete_space to be used to initialise PolarBSplines with a GPU-based DiscreteToCartesian coordinate change operator.

Deprecated

## Contributors - @AbdelhadiKara - @EmilyBourne - @etiennemlb - @gdgirard - @tpadioleau - @yasahi-hpc

Full list of changes: v0.1.1..v0.2.0

- C++
Published by github-actions[bot] 8 months ago

gyselalibxx - Version 0.1.1

What's New

Fixed

  • Fix paths in root CMakeLists.txt file to ensure it can be correctly used in a submodule.
  • Update remaining use of ddc::Coordinate to use Gyselalib++ conventions (Coord).
  • Update coding conventions to match what is applied.
## Contributors - @EmilyBourne

Full list of changes: v0.1.0..v0.1.1

- C++
Published by github-actions[bot] 9 months ago

gyselalibxx - Version 0.1.0

What's New

Added

  • First release of Gyselalib++
  • Advection operators
    • 1D Semi-Lagrangian spatial advection ($\frac{df_s}{dt}= \sqrt{\frac{m_e}{m_s}} v \frac{\partial f_s}{\partial x}$)
    • 1D Semi-Lagrangian velocity advection ($\frac{df_s}{dt}= q_s \sqrt{\frac{m_e}{m_s}} E \frac{\partial f_s}{\partial v}$)
    • 1D Semi-Lagrangian advection with a provided advection field
    • 2D Semi-Lagrangian advection on a polar plane with a provided advection field
  • Collisions
    • Collision operator in $(v_\parallel,\mu)$
  • Coordinate transformation operators and tools
    • Coordinate transformation operators
    • Triangular Barycentric coordinates <-> Cartesian coordinates
    • Circular coordinates <-> Cartesian coordinates
    • Cylindrical coordinates <-> Cartesian coordinates
    • Tokamak-shaped Czarny coordinates <-> Cartesian coordinates
    • Toroidal coordinates -> Cylindrical coordinates
    • Discrete coordinates -> Cartesian coordinates
    • Identity transformation
    • Composite coordinate transformation
    • Tools to manage coordinate transformations by:
    • Getting the inverse Jacobian matrix at a given coordinate
    • Getting the inverse Jacobian matrix at the O-point (to provide explicit equations without an if)
    • Evaluate the metric tensor at a given coordinate
    • Map a vector from one vector space to another
  • Additional data types
    • DerivativeField to store a field and its boundary derivatives
    • VectorField
    • Tensor type and tools
    • Levi-Civita tensor
    • Identity tensor
    • Tensor multiplication operator
  • Interpolation operators
    • Lagrange interpolation
    • Spline interpolation
    • Polar spline evaluation
  • General Mathematical tools
    • Methods for calculating the L-norms
    • Derivative calculators
    • Finite differences method (with and without known boundary values)
    • Derivatives from 1D or 2D spline representations
    • Constant derivatives of a known value
    • Miscellaneous
    • sum
    • norm
    • modulo
    • pow for integer powers
    • factorial
    • min
## Contributors - @AbdelhadiKara - @alex-m-h - @blegouix - @EmilyBourne - @etiennemlb - @gdgirard - @jbigot - @PaulineVidal - @pdonnel - @peyberne - @Philipp137 - @protaisM - @tpadioleau - @yanmnc - @yasahi-hpc

- C++
Published by EmilyBourne 9 months ago