Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trixi v0.4 #720

Closed
32 of 36 tasks
ranocha opened this issue Jul 13, 2021 · 19 comments
Closed
32 of 36 tasks

Trixi v0.4 #720

ranocha opened this issue Jul 13, 2021 · 19 comments
Labels

Comments

@ranocha
Copy link
Member

ranocha commented Jul 13, 2021

Here is a possible plan what to do to create v0.4 of Trixi.jl. These steps can be done without introducing breaking changes. Thus, they can be merged directly into main without further problems.

The following changes are breaking. Thus, I would prefer to create separate PRs for each of them that get merged into some staging area (good old dev? Or main and create a new branch release-0.3 to include possible bug fixes that need to be released immediately? I prefer the second option).

Look for other issues that might require breaking changes:

Additionally, we might want to check

Then, we should be ready to

  • Check whether NEWS.md is up to date
  • Release Trixi v0.4
  • Announce it with all the nice new features (Discourse, Slack, ...)

Left for Trixi v0.5 or later:

@ranocha
Copy link
Member Author

ranocha commented Jul 31, 2021

@Cczernik You have been assigned to the multicomponent stuff. What's your opinion on declaring this part as stable (instead of experimental)?

@Cczernik
Copy link
Contributor

@Cczernik You have been assigned to the multicomponent stuff. What's your opinion on declaring this part as stable (instead of experimental)?

The multicomponent stuff works properly and should not face any serious problems in the near future. So I would be in favor of declaring it as stable.

@jlchan
Copy link
Contributor

jlchan commented Aug 3, 2021

I'd like to update to StartUpDG v0.11 https://github.com/jlchan/StartUpDG.jl/releases/tag/v0.11.0, which contains some breaking API changes. Since those are in the DGMulti elixirs, would this also be something to save for Trixi v0.4 too?

@ranocha
Copy link
Member Author

ranocha commented Aug 4, 2021

Does the user interface of functions defined in Trixi.jl change? If not (and since your solvers are pretty new), I would say we can update now, see #764

@jlchan
Copy link
Contributor

jlchan commented Aug 4, 2021

Sounds good. I'll do that in a separate PR today.

@ranocha
Copy link
Member Author

ranocha commented Oct 7, 2021

@trixi-framework/developers If I didn't miss anything, #895 will close the last breaking change we want to get into v0.4. Please correct me if I'm wrong or forgot anything.

@jlchan
Copy link
Contributor

jlchan commented Oct 7, 2021

Nice! I should be able to finish that review early tomorrow morning.

@ranocha
Copy link
Member Author

ranocha commented Oct 7, 2021

My plan for releasing v0.4 is as follows.

  • Discuss whether we want to get anything else in this release at the next Trixi meeting.
  • At least all @trixi-framework/principal-developers should check our NEWS.md, our README.md, and the feature matrix in our dev docs to verify that we didn't miss anything.
  • We finish the transition of the tutorials to Literate.jl (see Tutorials with Literate.jl: TODOs #872) - we expect to be able to do this until next week.
  • Release v0.4 of Trixi.jl.
  • Announce it on Slack and Discourse.
  • 🥳

@ranocha
Copy link
Member Author

ranocha commented Oct 7, 2021

Here is a first draft of our announcement. Please make suggestions how to improve this.

We are pleased to announce the release of v0.4 of Trixi.jl, our Julia package providing adaptive high-order numerical simulations of hyperbolic PDEs. Compared to the initial release of v0.3, we have introduced a ton of new features. In particular, we added new mesh types enabling simulations on unstructured, curvilinear, non-conforming and adaptive meshes in multiple space dimensions. These new mesh types support all of our solver features, including shock capturing techniques for high-order methods. Additionally, we have introduced new physical models including multicomponent compressible Euler and magnetohydrodynamics equations. Moreover, Trixi.jl composes well with forward mode automatic differentiation and similar approaches. We presented most of these features already in our presentation of Trixi.jl at JuliaCon. Furthermore, we have some interactive visualizations with Makie.jl - kudos to @sdanisch, @jules, and all other developers of Makie!

As a teaser, here is the simulation of the shallow water equations with a bottom topography on a circular domain with slip-wall boundaries using a discontinuous Galerkin method on a high-order curved unstructured quadrilateral mesh.

https://youtu.be/RAXU5BURyKQ

The next video shows an MHD rotor, a rapidly spinning dense cylinder embedded in a magnetized, homogeneous medium at rest. This simulation uses a discontinuous Galerkin method on a high-order, curvilinear mesh with adaptive refinement and shock capturing.

https://youtu.be/Iei7e9oQ0hs

Many of these new features come with additional contributions to the Julia ecosystem. For example, we created P4est.jl as thin wrapper around the C library p4est for adaptive meshes and HOHQMesh.jl as Julia wrapper of a high-order mesh generation library. You can find more information about these and further activities related to Trixi.jl on our summary website.

On top of these new features, we worked on the internals of Trixi.jl. In particular, we improved the performance quite a bit and were able to beat another open source code implementing the same numerical algorithms in Fortran by up to 2x. The details are available in our preprint.

Since this is a breaking release, some user-facing changes are of course necessary. However, they should not affect most codes and are summarized in our NEWS.md.

Kudos to all contributors for exciting developments - and thanks to all users encouraging us!

Here is our current list of main features (changes vs. v0.3.0 highlighted):

  • 1D, 2D, and 3D simulations on line/quad/hex/simplex meshes
    • Cartesian and curvilinear meshes
    • Conforming and non-conforming meshes
    • Structured and unstructured meshes
    • Hierarchical quadtree/octree grid with adaptive mesh refinement
    • Forests of quadtrees/octrees with p4est via P4est.jl
  • High-order accuracy in space in time
  • Discontinuous Galerkin methods
    • Kinetic energy-preserving and entropy-stable methods based on flux differencing
    • Entropy-stable shock capturing
    • Positivity-preserving limiting
  • Compatible with the SciML ecosystem for ordinary differential equations
  • Native support for differentiable programming
  • Periodic and weakly-enforced boundary conditions
  • Multiple governing equations:
    • Compressible Euler equations
    • Magnetohydrodynamics (MHD) equations
    • Multi-component compressible Euler and MHD equations
    • Acoustic perturbation equations
    • Hyperbolic diffusion equations for elliptic problems
    • Lattice-Boltzmann equations (D2Q9 and D3Q27 schemes)
    • Shallow water equations
    • Several scalar conservation laws (e.g., linear advection, Burgers' equation)
  • Multi-physics simulations
  • Shared-memory parallelization via multithreading
  • Visualization and postprocessing of the results
    • In-situ and a posteriori visualization with Plots.jl
    • Interactive visualization with Makie.jl
    • Postprocessing with ParaView/VisIt via Trixi2Vtk

Xref: Previous announcements of v0.3 and v0.2

@jlchan
Copy link
Contributor

jlchan commented Oct 7, 2021

Could we also bold the simplex meshes part of 1D, 2D, and 3D simulations on line/quad/hex/simplex meshes since it's new relative to v0.3?

@sloede
Copy link
Member

sloede commented Oct 11, 2021

This sounds already great, thanks for creating this! I especially like the highlighting 👍

Three comments from my side:

  1. Let's include a fancy picture or video in the post, which should visually demonstrate at least one of the new features. Maybe some result from the unstructured mesh (alien APE or the Julia logo video)?
  2. Should we include a small "looking forward" paragraph in the end? We could mention one or two features that are being worked on, but I am lacking some easy-to-grasp examples besides MPI with AMR.
  3. I was wondering if it makes sense to mention that two of the most wanted features from users are diffusion equations and first-class support for variable coefficient problems, stating that these are on our long-term wish/todo list but that we are looking for users with a "hard" motivation who would be interested in contributing to these. This only makes sense of course if there are resources from our side to actively engage these two topics (unfortunately not from my side, I cannot promise anything for this year).

@ranocha
Copy link
Member Author

ranocha commented Oct 11, 2021

  1. Let's include a fancy picture or video in the post, which should visually demonstrate at least one of the new features. Maybe some result from the unstructured mesh (alien APE or the Julia logo video)?

Good suggestion. How do I embed a Youtube video on Discourse - just by posting the link on a single line? (That's what I added in the draft above)

@ranocha
Copy link
Member Author

ranocha commented Oct 11, 2021

2. Should we include a small "looking forward" paragraph in the end? We could mention one or two features that are being worked on, but I am lacking some easy-to-grasp examples besides MPI with AMR.

I wouldn't want to promise anything but if you're sure about MPI, that's fine - could you please draft such a paragraph?

@ranocha
Copy link
Member Author

ranocha commented Oct 11, 2021

3. I was wondering if it makes sense to mention that two of the most wanted features from users are diffusion equations and first-class support for variable coefficient problems, stating that these are on our long-term wish/todo list but that we are looking for users with a "hard" motivation who would be interested in contributing to these. This only makes sense of course if there are resources from our side to actively engage these two topics (unfortunately not from my side, I cannot promise anything for this year).

Same here. I suggest to write something like this when the question comes up again.

@sloede
Copy link
Member

sloede commented Oct 11, 2021

  1. Let's include a fancy picture or video in the post, which should visually demonstrate at least one of the new features. Maybe some result from the unstructured mesh (alien APE or the Julia logo video)?

Good suggestion. How do I embed a Youtube video on Discourse - just by posting the link on a single line? (That's what I added in the draft above)

Yes, according to my Google search, this is how it it should work.

@sloede
Copy link
Member

sloede commented Oct 11, 2021

  1. Should we include a small "looking forward" paragraph in the end? We could mention one or two features that are being worked on, but I am lacking some easy-to-grasp examples besides MPI with AMR.

I wouldn't want to promise anything but if you're sure about MPI, that's fine - could you please draft such a paragraph?

I can draft something if there are other suggestions. Only a single item does not make sense, as it suggests a rather low development activity, which I think wouldn't do us justice.

@jlchan
Copy link
Contributor

jlchan commented Oct 12, 2021

Looks really good! I have just one minor bikeshedding suggestion

"we got a ton of new features", "we got new physical models", ...

I'd suggest replacing "we got" with "we've introduced" throughout the release.

@ranocha
Copy link
Member Author

ranocha commented Oct 13, 2021

Thanks, @jlchan - I changed the draft above

@ranocha ranocha closed this as completed Oct 19, 2021
@ranocha ranocha unpinned this issue Oct 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants