trixi-framework / Trixi.jl

Trixi.jl: Adaptive high-order numerical simulations of conservation laws in Julia
https://trixi-framework.github.io/Trixi.jl
MIT License
519 stars 100 forks source link

Trixi v0.4 #720

Closed ranocha closed 2 years ago

ranocha commented 3 years ago

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

Left for Trixi v0.5 or later:

ranocha commented 3 years ago

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

Cczernik commented 3 years ago

@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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

ranocha commented 2 years ago

@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 commented 2 years ago

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

ranocha commented 2 years ago

My plan for releasing v0.4 is as follows.

ranocha commented 2 years ago

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):

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

jlchan commented 2 years ago

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 commented 2 years ago

This sounds already great, thanks for creating this! I especially like the highlighting :+1:

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 commented 2 years ago
  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 commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago
  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 commented 2 years ago
  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 commented 2 years ago

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 commented 2 years ago

Thanks, @jlchan - I changed the draft above

ranocha commented 2 years ago

Announced https://discourse.julialang.org/t/ann-trixi-jl-v0-4-new-features-and-performance-improvements-for-hyperbolic-pdes/69995