Changelog

Trixi.jl follows the interpretation of semantic versioning (semver) used in the Julia ecosystem. Notable changes will be documented in this file for human readability.

Changes in the v0.9 lifecycle

Added

  • New time integrator PairedExplicitRK3, implementing the third-order paired explicit Runge-Kutta method with Convex.jl, ECOS.jl, and NLsolve.jl (#2008)
  • LobattoLegendreBasis and related datastructures made fully floating-type general, enabling calculations with higher than double (Float64) precision (#2128)

Changes when updating to v0.9 from v0.8.x

Added

  • Boundary conditions are now supported on nonconservative terms (#2062).

Changed

  • We removed the first argument semi corresponding to a Semidiscretization from the AnalysisSurfaceIntegral constructor, as it is no longer needed (see #1959). The AnalysisSurfaceIntegral now only takes the arguments boundary_symbols and variable. (#2069)
  • In functions rhs!, rhs_parabolic! we removed the unused argument initial_condition. (#2037) Users should not be affected by this.
  • Nonconservative terms depend only on normal_direction_average instead of both normal_direction_average and normal_direction_ll, such that the function signature is now identical with conservative fluxes. This required a change of the normal_direction in flux_nonconservative_powell (#2062).

Deprecated

Removed

Changes in the v0.8 lifecycle

Changed

  • The AMR routines for P4estMesh and T8codeMesh were changed to work on the product of the Jacobian and the conserved variables instead of the conserved variables only to make AMR fully conservative (#2028). This may change AMR results slightly.
  • Subcell (IDP) limiting is now officially supported and not marked as experimental anymore (see VolumeIntegralSubcellLimiting).

Changes when updating to v0.8 from v0.7.x

Added

Changed

  • The specification of boundary names on which AnalysisSurfaceIntegrals are computed (such as drag and lift coefficients) has changed from Symbol and Vector{Symbol} to NTuple{Symbol}. Thus, for one boundary the syntax changes from :boundary to (:boundary,) and for Vectors [:boundary1, :boundary2] to (:boundary1, :boundary2) (#1959).
  • The names of output files like the one created from the SaveSolutionCallback have changed from %06d to %09d to allow longer-running simulations (#1996).

Deprecated

Removed

Changes in the v0.7 lifecycle

Added

  • Implementation of TimeSeriesCallback for curvilinear meshes on UnstructuredMesh2D and extension to 1D and 3D on TreeMesh (#1855, #1873).
  • Implementation of 1D Linearized Euler Equations (#1867).
  • New analysis callback for 2D P4estMesh to compute integrated quantities along a boundary surface, e.g., pressure lift and drag coefficients (#1812).
  • Optional tuple parameter for GlmSpeedCallback called semi_indices to specify for which semidiscretization of a SemidiscretizationCoupled we need to update the GLM speed (#1835).
  • Subcell local one-sided limiting support for nonlinear variables in 2D for TreeMesh (#1792).
  • New time integrator PairedExplicitRK2, implementing the second-order paired explicit Runge-Kutta method with Convex.jl and ECOS.jl (#1908)
  • Add subcell limiting support for StructuredMesh (#1946).

Changes when updating to v0.7 from v0.6.x

Added

Changed

  • The default wave speed estimate used within flux_hll is now min_max_speed_davis instead of min_max_speed_naive.

Deprecated

Removed

  • Some specialized shallow water specific features are no longer available directly in Trixi.jl, but are moved to a dedicated repository: TrixiShallowWater.jl. This includes all features related to wetting and drying, as well as the ShallowWaterTwoLayerEquations1D and ShallowWaterTwoLayerEquations2D. However, the basic shallow water equations are still part of Trixi.jl. We'll also be updating the TrixiShallowWater.jl documentation with instructions on how to use these relocated features in the future.

Changes in the v0.6 lifecycle

Added

  • AMR for hyperbolic-parabolic equations on 3D P4estMesh
  • flux_hllc on non-cartesian meshes for CompressibleEulerEquations{2,3}D
  • Different boundary conditions for quad/hex meshes in Abaqus format, even if not generated by HOHQMesh, can now be digested by Trixi in 2D and 3D.
  • Subcell (positivity) limiting support for nonlinear variables in 2D for TreeMesh
  • Added Lighthill-Whitham-Richards (LWR) traffic model

Changes when updating to v0.6 from v0.5.x

Added

  • AMR for hyperbolic-parabolic equations on 2D P4estMesh

Changed

  • The wave speed estimates for flux_hll, FluxHLL() are now consistent across equations. In particular, the functions min_max_speed_naive, min_max_speed_einfeldt are now conceptually identical across equations. Users, who have been using flux_hll for MHD have now to use flux_hlle in order to use the Einfeldt wave speed estimate.
  • Parabolic diffusion terms are now officially supported and not marked as experimental anymore.

Deprecated

Removed

  • The neural network-based shock indicators have been migrated to a new repository TrixiSmartShockFinder.jl. To continue using the indicators, you will need to use both Trixi.jl and TrixiSmartShockFinder.jl, as explained in the latter packages' README.md.

Changes in the v0.5 lifecycle

Added

  • Experimental support for 3D parabolic diffusion terms has been added.
  • Non-uniform TreeMesh available for hyperbolic-parabolic equations.
  • Capability to set truly discontinuous initial conditions in 1D.
  • Wetting and drying feature and examples for 1D and 2D shallow water equations
  • Implementation of the polytropic Euler equations in 2D
  • Implementation of the quasi-1D shallow water and compressible Euler equations
  • Subcell (positivity and local min/max) limiting support for conservative variables in 2D for TreeMesh
  • AMR for hyperbolic-parabolic equations on 2D/3D TreeMesh
  • Added GradientVariables type parameter to AbstractEquationsParabolic

Changed

  • The required Julia version is updated to v1.8 in Trixi.jl v0.5.13.

Deprecated

  • The macro @unpack (re-exported originally from UnPack.jl) is deprecated and will be removed. Consider using Julia's standard destructuring syntax (; a, b) = stuff instead of @unpack a, b = stuff.
  • The constructor DGMultiMesh(dg; cells_per_dimension, kwargs...) is deprecated and will be removed. The new constructor DGMultiMesh(dg, cells_per_dimension; kwargs...) does not have cells_per_dimesion as a keyword argument.

Removed

Changes when updating to v0.5 from v0.4.x

Added

Changed

  • Compile-time boolean indicators have been changed from Val{true}/Val{false} to Trixi.True/Trixi.False. This affects user code only if new equations with nonconservative terms are created. Change Trixi.has_nonconservative_terms(::YourEquations) = Val{true}() to Trixi.has_nonconservative_terms(::YourEquations) = Trixi.True().
  • The (non-exported) DGSEM function split_form_kernel! has been renamed to flux_differencing_kernel!
  • Trixi.jl updated its dependency P4est.jl from v0.3 to v0.4. The new bindings of the C library p4est have been generated using Clang.jl instead of CBinding.jl v0.9. This affects only user code that is interacting directly with p4est, e.g., because custom refinement functions have been passed to p4est. Please consult the NEWS.md of P4est.jl for further information.

Deprecated

  • The signature of the DGMultiMesh constructors has changed - the dg::DGMulti argument now comes first.
  • The undocumented and unused DGMultiMesh(triangulateIO, rd::RefElemData{2, Tri}, boundary_dict::Dict{Symbol, Int}) constructor was removed.

Removed

  • Everything deprecated in Trixi.jl v0.4.x has been removed.

Changes in the v0.4 lifecycle

Added

  • Implementation of linearized Euler equations in 2D
  • Experimental support for upwind finite difference summation by parts (FDSBP) has been added in Trixi.jl v0.4.55. The first implementation requires a TreeMesh and comes with several examples in the examples_dir() of Trixi.jl.
  • Experimental support for 2D parabolic diffusion terms has been added.
    • LaplaceDiffusion2D and CompressibleNavierStokesDiffusion2D can be used to add
    diffusion to systems. LaplaceDiffusion2D can be used to add scalar diffusion to each equation of a system, while CompressibleNavierStokesDiffusion2D can be used to add Navier-Stokes diffusion to CompressibleEulerEquations2D.
    • Parabolic boundary conditions can be imposed as well. For LaplaceDiffusion2D, both
    Dirichlet and Neumann conditions are supported. For CompressibleNavierStokesDiffusion2D, viscous no-slip velocity boundary conditions are supported, along with adiabatic and isothermal temperature boundary conditions. See the boundary condition container BoundaryConditionNavierStokesWall and boundary condition types NoSlip, Adiabatic, and Isothermal for more information.
    • CompressibleNavierStokesDiffusion2D can utilize both primitive variables (which are not
    guaranteed to provably dissipate entropy) and entropy variables (which provably dissipate entropy at the semi-discrete level).
    • Please check the examples directory for further information about the supported setups. Further documentation will be added later.
  • Numerical fluxes flux_shima_etal_turbo and flux_ranocha_turbo that are equivalent to their non-_turbo counterparts but may enable specialized methods making use of SIMD instructions to increase runtime efficiency
  • Support for (periodic and non-periodic) SBP operators of SummationByPartsOperators.jl as approximation type in DGMulti solvers
  • Initial support for MPI-based parallel simulations using non-conforming meshes of type P4estMesh in 2D and 3D including adaptive mesh refinement

Removed

  • The VertexMappedMesh type is removed in favor of the DGMultiMesh type. The VertexMappedMesh constructor is deprecated.

Changed

  • The required Julia version is updated to v1.7.
  • The isentropic vortex setups contained a bug that was fixed in Trixi.jl v0.4.54. Moreover, the setup was made a bit more challenging. See https://github.com/trixi-framework/Trixi.jl/issues/1269 for further information.

Deprecated

  • The DGMultiMesh constructor which uses a rd::RefElemData argument is deprecated in favor of the constructor which uses a dg::DGMulti argument instead.

Changes when updating to v0.4 from v0.3.x

Added

  • Experimental support for artificial neural network-based indicators for shock capturing and adaptive mesh refinement (#632)
  • Experimental support for direct-hybrid aeroacoustics simulations (#712)
  • Implementation of shallow water equations in 2D
  • Experimental support for interactive visualization with Makie.jl

Changed

  • Implementation of acoustic perturbation equations now uses the conservative form, i.e. the perturbed pressure p_prime has been replaced with p_prime_scaled = p_prime / c_mean^2.
  • Removed the experimental BoundaryConditionWall and instead directly compute slip wall boundary condition flux term using the function boundary_condition_slip_wall.
  • Renamed advectionvelocity in LinearScalarAdvectionEquation to advection_velocity.
  • The signature of indicators used for adaptive mesh refinement (AMR) and shock capturing changed to generalize them to curved meshes.

Deprecated

Removed

  • Many initial/boundary conditions and source terms for typical setups were moved from Trixi/src to the example elixirs Trixi/examples. Thus, they are no longer available when using Trixi, e.g., the initial condition for the Kelvin Helmholtz instability.
  • Features deprecated in v0.3 were removed.

Changes in the v0.3 lifecycle

Added

  • Support for automatic differentiation, e.g. jacobian_ad_forward
  • In-situ visualization and post hoc visualization with Plots.jl
  • New systems of equations
    • multicomponent compressible Euler and MHD equations
    • acoustic perturbation equations
    • Lattice-Boltzmann equations
  • Composable FluxPlusDissipation and FluxLaxFriedrichs(), FluxHLL() with adaptable wave speed estimates were added in #493
  • New structured, curvilinear, conforming mesh type StructuredMesh
  • New unstructured, curvilinear, conforming mesh type UnstructuredMesh2D in 2D
  • New unstructured, curvilinear, adaptive (non-conforming) mesh type P4estMesh in 2D and 3D
  • Experimental support for finite difference (FD) summation-by-parts (SBP) methods via SummationByPartsOperators.jl
  • New support for modal DG and SBP-DG methods on triangular and tetrahedral meshes via StartUpDG.jl

Changed

  • flux_lax_friedrichs(u_ll, u_rr, orientation, equations::LatticeBoltzmannEquations2D) and flux_lax_friedrichs(u_ll, u_rr, orientation, equations::LatticeBoltzmannEquations3D) were actually using the logic of flux_godunov. Thus, they were renamed accordingly in #493. This is considered a bugfix (released in Trixi.jl v0.3.22).
  • The required Julia version is updated to v1.6.

Deprecated

  • calcfluxflux (#463)
  • flux_upwindflux_godunov
  • flux_hindenlangflux_hindenlang_gassner
  • Providing the keyword argument solution_variables of SaveSolutionCallback as Symbol is deprecated in favor of using functions like cons2cons and cons2prim
  • varnames_cons(equations)varnames(cons2cons, equations)
  • varnames_prim(equations)varnames(cons2prim, equations)
  • The old interface for nonconservative terms is deprecated. In particular, passing only a single two-point numerical flux for nonconservative is deprecated. The new interface is described in a tutorial. Now, a tuple of two numerical fluxes of the form (conservative_flux, nonconservative_flux) needs to be passed for nonconservative equations, see #657.

Removed