-
Notifications
You must be signed in to change notification settings - Fork 113
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
Merge Taal into master #200
Conversation
Codecov Report
@@ Coverage Diff @@
## master #200 +/- ##
==========================================
- Coverage 91.49% 88.50% -2.99%
==========================================
Files 42 76 +34
Lines 8867 8885 +18
==========================================
- Hits 8113 7864 -249
- Misses 754 1021 +267
Flags with carried forward coverage won't be shown. Click here to find out more.
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, I've reviewed the entire dev
branch at b37c070. Again, great work @ranocha, this is really a huge milestone for Trixi! And at >6000 lines touched...
I left a few comments, some of which are open questions to start a discussion. Overall, there are a few things I would like to note, which more or less apply to the entire changeset:
- dimension-agnostic solvers: It seems like at some places the distinction between the 1D, 2D, and 3D solvers becomes blurry, and in same cases (e.g., indicators) it's already gone. This is at least something we should discuss together.
- restructuring of where methods/structs reside: Some methods and structs feel awkwardly placed, and I've marked this on several occasions. Maybe once Taal is finished in 2D in terms of features, we should sit together and think about a good file and directory structure that makes sense to everyone. Maybe we'll end up with what we have right now, but at least to me some things seemed counter-intuitive.
- distinct method names & method comments: * This code now heavily relies on Julia's dynamic dispatch capabilities. That is, many methods have the same name and are used in different parts of the code for a similar purpose (e.g., 7x
compute_coefficients(!)
, 5xanalyze
, 14xcreate_cache
). I'd argue that it might be sensible to find different names for some of these (e.g.,create_solver_cache
), if that is possible at all. I strongly argue that with such a large changeset coming, we should make sure that we at least add a one-line comment to each method that states its purpose and, preferably, from where it is (usually) called. @ranocha started doing this already, but I think it is really necessary for all methods. - inline comments: I think most of the new code is severely undercommented (is that even a word? If not, I claim first use!). That is, besides providing summary comments that describe an entire method's purpose, we should also add many more comments to the method body itself.
This is especially true for the infrastructure methods (I am looking at you, callbacks!), since there the meaning and purpose of the code is sometimes not easily discernible without knowing much more about the inner workings of Trixi and DiffEq.jl. Also, it would help us when directing students if the code is well-documented at this stage, at least until everyone has started to get a feel for Taal. Right now, I doubt that anyone except @ranocha (and a little bit me by now) is able to navigate Taal, and even I would not be able to explain to a student the overall infrastructure of Trixi anymore (at least when going beyond the 3-4 top-level methods called directly from the elixirs). - review by everyone: I know this is going to be hard, but I strongly urge @gregorgassner and @andrewwinters5000 to also go through the code and try to understand it not just in a high-level fashion, but also in detail - at least for things like callbacks, indicators, and how the new mesh-equations-solver-cache infrastructure is set up. Otherwise it will be hard to change anything fundamental, which is antithetical to the most basic goal of Trixi being an easy-to-understand code.
If you find anything unclear in my comments, please let me know. If I occasionally seem to be overly critical, please don't mind the straight language and know that I wrote everything with a constructive intent in mind. Finally, sorry it took me so long, but it was a lot to digest 🤓
Thanks a lot for your detailed review and comments, @sloede! I will go through them. Let's have some nice discussions and improve Taal for all of us. Some general reactions to your major comments:
|
|
Mix more 3D elixirs and port correspondings tests
update docs to Taal and fix typos
Some CI updates
…jl into reorder-callbacks
…jl into reorder-callbacks
Tighten relative tolerance for the testing
…by the ordering of analysis and AMR callbacks (PRNG issue)
Reorder callbacks
Increase coverage
This PR will track the overall development of Taal (Trixi as a library). Separate work packages will be implemented in PRs into the
dev
branch until we're ready to merge intomaster
.Here is our TODO list from #187
TODO
SummaryCallback
AMRCallback
AMRCallback
for Euler + gravityStepsizeCallback
AnalysisCallback
SaveSolutionCallback
AliveCallback
SummaryCallback
,AliveCallback
,AnalysisCallback
, andSaveSolutionCallback
with sane defaults and keyword arguments for all relevant arguments (tracked in Taal: Make it easier to create new callbacks #261)SteadyStateCallback
stuff for hyperbolic diffusiontrixi_include
with the ability to modify stuff in the REPL via keyword argumentspolydeg
an explicit parameter in order to be able to modify it via keyword arguments intrixi_include
abstract_types.jl
to enable dispatch on them throughout Trixi.jlconvtest
parameters_*.toml
toelixir_*.jl
#219)Vector
-likeu
from DiffEq.jl and "our" solution arrayu
and documentation/explanation ofwrap_array
return
, update the dev docs accordinglyelixir_eqs_specification.jl
in general, e.g.elixir_advection_basic.jl
instead ofparameters.jl
.parameters_file
(and everything else whereparameters
occurs) toelixir
or something similar.# TODO: Taal
master
intodev
and resolve conflicts, make everything work, ...Connections to issues
Xref #161 #19
Closes #237; closes #236; closes #197; closes #185; closes #177; closes #176; closes #173; closes #150; closes #142 (obsolete); closes #139; closes #136 (obsolete); closes #98; closes #83; closes #74 (obsolete); closes #73; closes #70; closes #68 (outdated); closes #42; closes #10; closes #9 (outdated)
Blocked by
#207,#219,#233,#236,#240,#243,#267,#287,#301(i.e., do not merge before these are resolved or removed from this list).