-
Notifications
You must be signed in to change notification settings - Fork 5
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
Documentation updates #165
base: main
Are you sure you want to change the base?
Conversation
Benchmark Results
Benchmark PlotsA plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR. |
Work still in progress, but I'm open to feedback on what I've written so far. |
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.
This looks already quite nice. Thanks!
I left some small suggestions below.
Co-authored-by: Joshua Lampert <[email protected]>
Co-authored-by: Joshua Lampert <[email protected]>
We also need to add Meshes.jl and Unitful.jl to https://github.com/JuliaGeometry/MeshIntegrals.jl/blob/main/docs/Project.toml. |
Hm, Documenter.jl errors instead of showing the error if there is an error thrown within an |
Maybe we could put these in a separate |
If the labels cross-over between |
Trying a |
Looks like the |
Since this block is kind of an outlier and fairly simple, I think I'm just going to convert it back to a static |
Co-authored-by: Joshua Lampert <[email protected]>
Calculating this problem with a default `GaussKronrod()` rule produces a solution that is very close to zero, on the order of $10^{-11}$. However, the result took a non-trivial amount of time due to a large number of memory allocatons for such a trivial problem. | ||
```julia | ||
julia> @btime integral(f, segment, GaussKronrod()) | ||
154.285 ms (28 allocations: 33.70 MiB) | ||
2.3298940582252377e-11 m N | ||
``` |
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.
What might be interesting and worth mentioning is that using AD via Enzyme also speeds up the computation significantly. I believe, this is due to the fact that with AD we are exact and the relative tolerance is reached (much) earlier:
julia> using Enzyme
julia> @btime integral(f, segment, GaussKronrod())
1.006 μs (7 allocations: 480 bytes)
0.0 m N
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.
This is a really interesting counter-example, actually. In this case it seems like maybe quadgk
is struggling to meet the required tolerances because the finite-difference differential
is just noisy enough to be a problem.
I think I'll do some re-wording to move away from the causal connection to exactly-zero-solutions, and just refer to the general phenomena that sometimes it can surprisingly struggle to close on a solution, in which case providing explicit setting tolerances can be beneficial.
Changed
/docs/src/index.md
with a symlink to/README.md
for consistency.Will close #23
Documenter preview: https://juliageometry.github.io/MeshIntegrals.jl/previews/PR165/