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 when updating to v0.13 from v0.12.x
Changed
- The
polyesterpreference got merged with thenative_threadingpreference and theTrixi.set_polyester!function got renamed toTrixi.set_threading_backend!(#2476). - Default wave-speed estimate used within
flux_lax_friedrichschanged frommax_abs_speed_naivetomax_abs_speedwhich is less diffusive. In v0.13,flux_lax_friedrichs = FluxLaxFriedrichs(max_abs_speed = max_abs_speed)instead of the previous defaultFluxLaxFriedrichs(max_abs_speed = max_abs_speed_naive)(#2458). - The signature of the
VisualizationCallbackconstructor changed. In the new version, it is mandatory to pass the semidiscretizationsemito determine the default plotting type (1D for 1D simulations, 2D for 2D and 3D simulations). This can further be customized via the keyword argumentplot_data_creator, which had the default valueplot_data_creator = PlotData2Dbefore the change (#2468).
Removed
- Deprecations introduced in earlier versions of Trixi.jl have been removed.
Changes in the v0.12 lifecycle
Added
- Initial support for adapting data-structures between different storage arrays was added. This enables future work to support GPU with Trixi (#2212).
Deprecated
Changes when updating to v0.12 from v0.11.x
Added
- Arbitrary solution-dependent quantities can now be saved in the
SaveSolutionCallback(and thus later on visualized) (#2298). - Added support for nonconservative terms with "local * jump" formulation in
VolumeIntegralSubcellLimiting(#2429).
Changed
- When using the
VolumeIntegralSubcellLimitingwith theSubcellLimiterIDPthe:limiting_coefficientmust be explicitly provided to theSaveSolutionCallbackvia
i.e., is no longer automatically saved (#2298).save_sol_cb = SaveSolutionCallback(interval = 42, extra_node_variables = (:limiting_coefficient,))
Deprecated
Removed
- The shallow-water equation types
ShallowWaterEquations1D,ShallowWaterEquations2D, andShallowWaterEquationsQuasi1Dhave been removed from Trixi.jl and are now available via TrixiShallowWater.jl. This also affects the related functionshydrostatic_reconstruction_audusse_etal,flux_nonconservative_audusse_etal, andFluxHydrostaticReconstruction. (#2379) - The additional
ìnitial_cacheentries in the caches ofSemidiscretizationHyperbolicandSemidiscretizationHyperbolicParabolic, and the corresponding keyword arguments of their constructors have been removed. (#2399)
Changes in the v0.11 lifecycle
Added
- Added symmetry plane/reflective wall velocity+stress boundary conditions for the compressible Navier-Stokes equations in 2D and 3D. Currently available only for the
P4estMeshmesh type,GradientVariablesPrimitive, andAdiabaticheat boundary condition (#2416). - Added
LaplaceDiffusionEntropyVariables1D,LaplaceDiffusionEntropyVariables2D, andLaplaceDiffusionEntropyVariables3D. These add scalar diffusion to each equation of a system, but apply diffusion in terms of the entropy variables, which symmetrizes the viscous formulation and ensures semi-discrete entropy dissipation (#2406). - Added the three-dimensional multi-ion magneto-hydrodynamics (MHD) equations with a generalized Lagrange multipliers (GLM) divergence cleaning technique (#2215).
- New time integrator
PairedExplicitRK4, implementing the fourth-order paired explicit Runge-Kutta method with Convex.jl and ECOS.jl (#2147) - Passive tracers for arbitrary equations with density and flow variables (#2364)
Deprecated
- The (2D) aerodynamic coefficients
DragCoefficientPressure, LiftCoefficientPressure, DragCoefficientShearStress, LiftCoefficientShearStresshave been renamed toDragCoefficientPressure2D, LiftCoefficientPressure2D, DragCoefficientShearStress2D, LiftCoefficientShearStress2D. (#2375)
Changes when updating to v0.11 from v0.10.x
Added
Changed
- The
CallbackSetfrom the OrdinaryDiffEq.jl ecosystem isexported from Trixi.jl (@2266). - The examples switched from OrdinaryDiffEq.jl to its sub-packages such as OrdinaryDiffEqLowStorageRK.jl and OrdinaryDiffEqSSPRK.jl (@2266). The installation instructions for Trixi.jl have been updated accordingly.
- The output of the
SummaryCallbackwill automatically be printed after the simulation is finished. Therefore, manually callingsummary_callback()is not necessary anymore (#2275). - The two performance numbers (local
time/DOF/rhs!and performance indexPID) are now computed taking into account the number of threads (#2292). This allows for a better comparison of shared memory (threads) and hybrid (MPI + threads) simulations with serial simulations.
Deprecated
Removed
Changes when updating to v0.10 from v0.9.x
Added
Changed
- The numerical solution is wrapped in a
VectorOfArraysfrom RecursiveArrayTools.jl forDGMultisolvers (#2150). You can useBase.parentto unwrap the original data. - The
PairedExplicitRK2constructor with second argumentbase_path_monomial_coeffs::AbstractStringrequires nowdt_opt,bS,cSto be given as keyword arguments (#2184). Previously, those where standard function parameters, in the same order as listed above. - The
AnalysisCallbackoutput generated with thesave_analysis = trueoption now prints floating point numbers in their respective (full) precision. Previously, only the first 8 digits were printed to file. Furthermore, the names of the printed fields are now only separated by a single white space, in contrast to before where this were multiple, depending on the actual name of the printed data. - The boundary conditions for non-conservative equations can now be defined separately from the conservative part. The
surface_flux_functionstuple is now passed directly to the boundary condition call, returning a tuple with boundary condition values for both the conservative and non-conservative parts (#2200).
Deprecated
Removed
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) LobattoLegendreBasisand related datastructures made fully floating-type general, enabling calculations with higher than double (Float64) precision (#2128)- In 2D, quadratic elements, i.e., 8-node (quadratic) quadrilaterals are now supported in standard Abaqus
inpformat (#2217) - The
cflvalue supplied in theStepsizeCallbackandGlmStepsizeCallbackcan now be a function of simulation timetto enable e.g. a ramp-up of the CFL value. This is useful for simulations that are initialized with an "unphysical" initial condition, but do not permit the usage of adaptive, error-based timestepping. Examples for this are simulations involving the MHD equations which require in general theGlmStepsizeCallback(#2248)
Changed
- The required Julia version is updated to v1.10.
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
semicorresponding to aSemidiscretizationfrom theAnalysisSurfaceIntegralconstructor, as it is no longer needed (see #1959). TheAnalysisSurfaceIntegralnow only takes the argumentsboundary_symbolsandvariable. (#2069) - In functions
rhs!,rhs_parabolic!we removed the unused argumentinitial_condition. (#2037) Users should not be affected by this. - Nonconservative terms depend only on
normal_direction_averageinstead of bothnormal_direction_averageandnormal_direction_ll, such that the function signature is now identical with conservative fluxes. This required a change of thenormal_directioninflux_nonconservative_powell(#2062).
Deprecated
Removed
Changes in the v0.8 lifecycle
Changed
- The AMR routines for
P4estMeshandT8codeMeshwere 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 fromSymbolandVector{Symbol}toNTuple{Symbol}. Thus, for one boundary the syntax changes from:boundaryto(:boundary,)and forVectors[:boundary1, :boundary2]to(:boundary1, :boundary2)(#1959). - The names of output files like the one created from the
SaveSolutionCallbackhave changed from%06dto%09dto allow longer-running simulations (#1996).
Deprecated
Removed
Changes in the v0.7 lifecycle
Added
- Implementation of
TimeSeriesCallbackfor curvilinear meshes onUnstructuredMesh2Dand extension to 1D and 3D onTreeMesh(#1855, #1873). - Implementation of 1D Linearized Euler Equations (#1867).
- New analysis callback for 2D
P4estMeshto compute integrated quantities along a boundary surface, e.g., pressure lift and drag coefficients (#1812). - Optional tuple parameter for
GlmSpeedCallbackcalledsemi_indicesto specify for which semidiscretization of aSemidiscretizationCoupledwe 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_hllis nowmin_max_speed_davisinstead ofmin_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
ShallowWaterTwoLayerEquations1DandShallowWaterTwoLayerEquations2D. 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_hllcon non-cartesian meshes forCompressibleEulerEquations{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 functionsmin_max_speed_naive,min_max_speed_einfeldtare now conceptually identical across equations. Users, who have been usingflux_hllfor MHD have now to useflux_hllein 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
TreeMeshavailable 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
GradientVariablestype parameter toAbstractEquationsParabolic
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) = stuffinstead of@unpack a, b = stuff. - The constructor
DGMultiMesh(dg; cells_per_dimension, kwargs...)is deprecated and will be removed. The new constructorDGMultiMesh(dg, cells_per_dimension; kwargs...)does not havecells_per_dimensionas a keyword argument.
Removed
- Migrate neural network-based shock indicators to a new repository TrixiSmartShockFinder.jl.
Changes when updating to v0.5 from v0.4.x
Added
Changed
- Compile-time boolean indicators have been changed from
Val{true}/Val{false}toTrixi.True/Trixi.False. This affects user code only if new equations with nonconservative terms are created. ChangeTrixi.has_nonconservative_terms(::YourEquations) = Val{true}()toTrixi.has_nonconservative_terms(::YourEquations) = Trixi.True(). - The (non-exported) DGSEM function
split_form_kernel!has been renamed toflux_differencing_kernel! - Trixi.jl updated its dependency P4est.jl from v0.3 to v0.4. The new bindings of the C library
p4esthave been generated using Clang.jl instead of CBinding.jl v0.9. This affects only user code that is interacting directly withp4est, e.g., because custom refinement functions have been passed top4est. Please consult the NEWS.md of P4est.jl for further information.
Deprecated
- The signature of the
DGMultiMeshconstructors has changed - thedg::DGMultiargument 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
TreeMeshand comes with several examples in theexamples_dir()of Trixi.jl. - Experimental support for 2D parabolic diffusion terms has been added.
LaplaceDiffusion2DandCompressibleNavierStokesDiffusion2Dcan be used to add
LaplaceDiffusion2Dcan be used to add scalar diffusion to each equation of a system, whileCompressibleNavierStokesDiffusion2Dcan be used to add Navier-Stokes diffusion toCompressibleEulerEquations2D.- Parabolic boundary conditions can be imposed as well. For
LaplaceDiffusion2D, both
DirichletandNeumannconditions are supported. ForCompressibleNavierStokesDiffusion2D, viscous no-slip velocity boundary conditions are supported, along with adiabatic and isothermal temperature boundary conditions. See the boundary condition containerBoundaryConditionNavierStokesWalland boundary condition typesNoSlip,Adiabatic, andIsothermalfor more information.CompressibleNavierStokesDiffusion2Dcan utilize both primitive variables (which are not
- Please check the
examplesdirectory for further information about the supported setups. Further documentation will be added later.
- Numerical fluxes
flux_shima_etal_turboandflux_ranocha_turbothat are equivalent to their non-_turbocounterparts 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
DGMultisolvers - Initial support for MPI-based parallel simulations using non-conforming meshes of type
P4estMeshin 2D and 3D including adaptive mesh refinement
Removed
- The
VertexMappedMeshtype is removed in favor of theDGMultiMeshtype. TheVertexMappedMeshconstructor 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
DGMultiMeshconstructor which uses ard::RefElemDataargument is deprecated in favor of the constructor which uses adg::DGMultiargument 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_primehas been replaced withp_prime_scaled = p_prime / c_mean^2. - Removed the experimental
BoundaryConditionWalland instead directly compute slip wall boundary condition flux term using the functionboundary_condition_slip_wall. - Renamed
advectionvelocityinLinearScalarAdvectionEquationtoadvection_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/srcto the example elixirsTrixi/examples. Thus, they are no longer available whenusing 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
FluxPlusDissipationandFluxLaxFriedrichs(),FluxHLL()with adaptable wave speed estimates were added in #493 - New structured, curvilinear, conforming mesh type
StructuredMesh - New unstructured, curvilinear, conforming mesh type
UnstructuredMesh2Din 2D - New unstructured, curvilinear, adaptive (non-conforming) mesh type
P4estMeshin 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)andflux_lax_friedrichs(u_ll, u_rr, orientation, equations::LatticeBoltzmannEquations3D)were actually using the logic offlux_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
calcflux→flux(#463)flux_upwind→flux_godunovflux_hindenlang→flux_hindenlang_gassner- Providing the keyword argument
solution_variablesofSaveSolutionCallbackasSymbolis deprecated in favor of using functions likecons2consandcons2prim 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.