Skip to content

Commit

Permalink
build based on 96a7d50
Browse files Browse the repository at this point in the history
  • Loading branch information
Documenter.jl committed Nov 8, 2024
1 parent b4b0c19 commit 851de41
Show file tree
Hide file tree
Showing 35 changed files with 60 additions and 60 deletions.
2 changes: 1 addition & 1 deletion dev/.documenter-siteinfo.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-10-19T16:22:01","documenter_version":"1.7.0"}}
{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-08T07:13:05","documenter_version":"1.7.0"}}
32 changes: 16 additions & 16 deletions dev/docstrings/index.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dev/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[1a804d9e] FMMLIB2D v0.3.2
[705231aa] Gmsh v0.3.1
[8646bddf] HMatrices v0.2.10
[ee78f7c6] Makie v0.21.14
[ee78f7c6] Makie v0.21.16
⌅ [eacbb407] Meshes v0.51.22
Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated`</code></pre><p>Note that the first time you run this command, it may take a while to download and compile the dependencies. Subsequent runs will be faster. If preferred, extensions can be manually controlled by <code>Pkg.add</code>ing the desired packages from the list above.</p><h2 id="Basic-usage"><a class="docs-heading-anchor" href="#Basic-usage">Basic usage</a><a id="Basic-usage-1"></a><a class="docs-heading-anchor-permalink" href="#Basic-usage" title="Permalink"></a></h2><p>Inti.jl can be used to solve a variety of linear partial differential equations by recasting them as integral equations. The general workflow for solving a problem consists of the following steps:</p><p class="math-container">\[ \underbrace{\fbox{Geometry} \rightarrow \fbox{Mesh}}_{\textbf{pre-processing}} \rightarrow \fbox{\color{red}{Solver}} \rightarrow \underbrace{\fbox{Visualization}}_{\textbf{post-processing}}\]</p><ul><li><strong>Geometry</strong>: Define the domain of interest using simple shapes (e.g., circles, rectangles) or more complex CAD models.</li><li><strong>Mesh</strong>: Create a mesh to approximate the geometry. The mesh is used to define a quadrature and discretize the boundary integral equation.</li><li><strong>Solver</strong>: With a mesh and an accompanying quadrature, Inti.jl&#39;s routines provide ways to assemble and solve the system of equations arising from the discretization of the integral operators. The core of the library lies in service of this step.</li><li><strong>Visualization</strong>: Visualize the solution using a plotting library such as Makie.jl, or export it to a file for further analysis.</li></ul><p>As a simple example illustrating the steps above, consider an interior Laplace problem, in two dimensions, with Dirichlet boundary conditions:</p><p class="math-container">\[\begin{aligned}
\Delta u &amp;= 0 \quad \text{in } \Omega,\\
Expand Down Expand Up @@ -50,4 +50,4 @@
cb = Colorbar(fig[1, 3], h1, size = 20, height = 200)
ax2 = Axis(fig[1, 2]; title = &quot;Approx. solution&quot;, opts...)
h2 = heatmap!(ax2, xx,yy, (x, y) -&gt; inside((x,y)) ? uₕ((x,y)) : NaN, colorrange = cb.limits[])
viz!(msh; segmentsize = 3)</code></pre><img src="index-d6bc3839.png" alt="Example block output"/><div class="admonition is-info"><header class="admonition-header">Formulation of the problem as an integral equation</header><div class="admonition-body"><p>Given a PDE and boundary conditions, there are often many ways to recast the problem as an integral equation, and the choice of formulation plays an important role in the unique solvability, efficiency, and accuracy of the numerical solution. Inti.jl provides a flexible framework for experimenting with different formulations, but it is up to the user to choose the most appropriate one for their problem.</p></div></div><p>While the example above is a simple one, Inti.jl can handle significantly more complex problems involving multiple domains, heterogeneous coefficients, vector-valued PDEs, and three-dimensional geometries. The best way to dive deeper into Inti.jl&#39;s capabilities is the <a href="tutorials/getting_started/#Getting-started">tutorials</a> section. More advanced usage can be found in the <a href="pluto-examples/toy_example/#Toy-example">examples</a> section.</p><h2 id="Contributing"><a class="docs-heading-anchor" href="#Contributing">Contributing</a><a id="Contributing-1"></a><a class="docs-heading-anchor-permalink" href="#Contributing" title="Permalink"></a></h2><p>There are several ways to contribute to Inti.jl:</p><ul><li><strong>Reporting bugs</strong>: If you encounter a bug, please <a href="https://github.com/IntegralEquations/Inti.jl/issues/new">open an issue</a> on the GitHub. If possible, please include a minimal working example that reproduces the problem.</li><li><strong>Examples</strong>: If you have a cool example that showcases Inti.jl&#39;s capabilities, consider submitting a PR to add it to the examples section.</li><li><strong>Contributing code</strong>: If you would like to contribute code to Inti.jl, please fork the repository and submit a pull request. Feel free to open a draft PR early in the development process to get feedback on your changes.</li><li><strong>Feature requests</strong>: If you have an idea for a new feature or improvement, we would love to hear about it.</li><li><strong>Documentation</strong>: If you find any part of the documentation unclear or incomplete, please let us know. Or even better, submit a PR with the improved documentation.</li></ul><h2 id="Acknowledgements"><a class="docs-heading-anchor" href="#Acknowledgements">Acknowledgements</a><a id="Acknowledgements-1"></a><a class="docs-heading-anchor-permalink" href="#Acknowledgements" title="Permalink"></a></h2></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="tutorials/getting_started/">Getting started »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Saturday 19 October 2024 16:22">Saturday 19 October 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
viz!(msh; segmentsize = 3)</code></pre><img src="index-d6bc3839.png" alt="Example block output"/><div class="admonition is-info"><header class="admonition-header">Formulation of the problem as an integral equation</header><div class="admonition-body"><p>Given a PDE and boundary conditions, there are often many ways to recast the problem as an integral equation, and the choice of formulation plays an important role in the unique solvability, efficiency, and accuracy of the numerical solution. Inti.jl provides a flexible framework for experimenting with different formulations, but it is up to the user to choose the most appropriate one for their problem.</p></div></div><p>While the example above is a simple one, Inti.jl can handle significantly more complex problems involving multiple domains, heterogeneous coefficients, vector-valued PDEs, and three-dimensional geometries. The best way to dive deeper into Inti.jl&#39;s capabilities is the <a href="tutorials/getting_started/#Getting-started">tutorials</a> section. More advanced usage can be found in the <a href="pluto-examples/toy_example/#Toy-example">examples</a> section.</p><h2 id="Contributing"><a class="docs-heading-anchor" href="#Contributing">Contributing</a><a id="Contributing-1"></a><a class="docs-heading-anchor-permalink" href="#Contributing" title="Permalink"></a></h2><p>There are several ways to contribute to Inti.jl:</p><ul><li><strong>Reporting bugs</strong>: If you encounter a bug, please <a href="https://github.com/IntegralEquations/Inti.jl/issues/new">open an issue</a> on the GitHub. If possible, please include a minimal working example that reproduces the problem.</li><li><strong>Examples</strong>: If you have a cool example that showcases Inti.jl&#39;s capabilities, consider submitting a PR to add it to the examples section.</li><li><strong>Contributing code</strong>: If you would like to contribute code to Inti.jl, please fork the repository and submit a pull request. Feel free to open a draft PR early in the development process to get feedback on your changes.</li><li><strong>Feature requests</strong>: If you have an idea for a new feature or improvement, we would love to hear about it.</li><li><strong>Documentation</strong>: If you find any part of the documentation unclear or incomplete, please let us know. Or even better, submit a PR with the improved documentation.</li></ul><h2 id="Acknowledgements"><a class="docs-heading-anchor" href="#Acknowledgements">Acknowledgements</a><a id="Acknowledgements-1"></a><a class="docs-heading-anchor-permalink" href="#Acknowledgements" title="Permalink"></a></h2></article><nav class="docs-footer"><a class="docs-footer-nextpage" href="tutorials/getting_started/">Getting started »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 8 November 2024 07:13">Friday 8 November 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Binary file modified dev/objects.inv
Binary file not shown.
2 changes: 1 addition & 1 deletion dev/pluto-examples/helmholtz_scattering.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
### A Pluto.jl notebook ###
# v0.20.0
# v0.20.3

using Markdown
using InteractiveUtils
Expand Down
12 changes: 6 additions & 6 deletions dev/pluto-examples/helmholtz_scattering/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
meshsize = λ / 5
gmsh_circle(; meshsize, order = gorder, name)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Info : Meshing 1D...
Info : Meshing curve 1 (Ellipse)
Info : Done meshing 1D (Wall 0.000153396s, CPU 0.000155s)
Info : Done meshing 1D (Wall 0.000146754s, CPU 0.000148s)
Info : 63 nodes 64 elements
Info : Meshing order 2 (curvilinear on)...
Info : [ 0%] Meshing curve 1 order 2
Info : [ 60%] Meshing surface 1 order 2
Info : Done meshing order 2 (Wall 0.000377956s, CPU 0.000374s)
Info : Done meshing order 2 (Wall 0.000377535s, CPU 0.000374s)
Info : Writing &#39;/home/runner/work/Inti.jl/Inti.jl/docs/build/pluto-examples/circle.msh&#39;...
Info : Done writing &#39;/home/runner/work/Inti.jl/Inti.jl/docs/build/pluto-examples/circle.msh&#39;</code></pre><p>We can now import the file and parse the mesh and domain information into <code>Inti.jl</code> using the <a href="../../docstrings/#Inti.import_mesh-Tuple"><code>import_mesh</code></a> function:</p><pre><code class="language-julia hljs">Inti.clear_entities!() # empty the entity cache
msh = Inti.import_mesh(name; dim = 2)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Inti.Mesh{2, Float64} containing:
Expand Down Expand Up @@ -155,9 +155,9 @@
end</code></pre><p>As before, lets write a file with our mesh, and import it into <code>Inti.jl</code>:</p><pre><code class="language-julia hljs">name_sphere = joinpath(@__DIR__, &quot;sphere.msh&quot;)
gmsh_sphere(; meshsize = (λ / 5), order = gorder, name = name_sphere, visualize = false)
msh_3d = Inti.import_mesh(name_sphere; dim = 3)</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">Inti.Mesh{3, Float64} containing:
7 elements of type StaticArraysCore.SVector{3, Float64}
255 elements of type Inti.LagrangeElement{Inti.ReferenceHyperCube{1}, 3, StaticArraysCore.SVector{3, Float64}}
6239 elements of type Inti.LagrangeElement{Inti.ReferenceSimplex{2}, 6, StaticArraysCore.SVector{3, Float64}}
7 elements of type StaticArraysCore.SVector{3, Float64}</code></pre><div class="admonition is-success"><header class="admonition-header">Tip</header><div class="admonition-body"><p>If you pass <code>visualize=true</code> to <code>gmsh_sphere</code>, it will open a window with the current model. This is done by calling <code>gmsh.fltk.run()</code>. Note that the main julia thread will be blocked until the window is closed.</p></div></div><p>Since we created physical groups in <code>Gmsh</code>, we can use them to extract the relevant domains <code>Ω</code> and <code>Σ</code>:</p><pre><code class="language-julia hljs">Ω_3d = Inti.Domain(e -&gt; &quot;omega&quot; ∈ Inti.labels(e), Inti.entities(msh_3d))
6239 elements of type Inti.LagrangeElement{Inti.ReferenceSimplex{2}, 6, StaticArraysCore.SVector{3, Float64}}</code></pre><div class="admonition is-success"><header class="admonition-header">Tip</header><div class="admonition-body"><p>If you pass <code>visualize=true</code> to <code>gmsh_sphere</code>, it will open a window with the current model. This is done by calling <code>gmsh.fltk.run()</code>. Note that the main julia thread will be blocked until the window is closed.</p></div></div><p>Since we created physical groups in <code>Gmsh</code>, we can use them to extract the relevant domains <code>Ω</code> and <code>Σ</code>:</p><pre><code class="language-julia hljs">Ω_3d = Inti.Domain(e -&gt; &quot;omega&quot; ∈ Inti.labels(e), Inti.entities(msh_3d))
Σ_3d = Inti.Domain(e -&gt; &quot;sigma&quot; ∈ Inti.labels(e), Inti.entities(msh_3d))
Γ_3d = Inti.boundary(Ω_3d)</code></pre><p>We can now create a quadrature as before</p><pre><code class="language-julia hljs">Γ_msh_3d = view(msh_3d, Γ_3d)
Q_3d = Inti.Quadrature(Γ_msh_3d; qorder)</code></pre><div class="admonition is-success"><header class="admonition-header">Writing/reading a mesh from disk</header><div class="admonition-body"><p>Writing and reading a mesh to/from disk can be time consuming. You can avoid doing so by using <a href="../../docstrings/#Inti.import_mesh-Tuple"><code>import_mesh</code></a> without a file name to import the mesh from the current <code>gmsh</code> session without the need to write it to disk.</p></div></div><p>Next we assemble the integral operators, indicating that we wish to compress them using hierarchical matrices:</p><pre><code class="language-julia hljs">using HMatrices
Expand Down Expand Up @@ -213,7 +213,7 @@
x = 2 * x̂
return abs(uₛ_3d(x) - uₑ_3d(x))
end
@info &quot;error with correction = $er_3d&quot;</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">[ Info: error with correction = 3.328221427459476e-5</code></pre><p>We see that, once again, the approximation is quite accurate. Let us now visualize the solution on the punctured plane (which we labeled as &quot;sigma&quot;). Since evaluating the integral representation of the solution at many points is expensive, we will use again use a method to accelerate the evaluation:</p><pre><code class="language-julia hljs">Σ_msh = view(msh_3d, Σ_3d)
@info &quot;error with correction = $er_3d&quot;</code></pre><pre class="documenter-example-output"><code class="nohighlight hljs ansi">[ Info: error with correction = 3.2643662518176203e-5</code></pre><p>We see that, once again, the approximation is quite accurate. Let us now visualize the solution on the punctured plane (which we labeled as &quot;sigma&quot;). Since evaluating the integral representation of the solution at many points is expensive, we will use again use a method to accelerate the evaluation:</p><pre><code class="language-julia hljs">Σ_msh = view(msh_3d, Σ_3d)
target = Inti.nodes(Σ_msh)

S_viz, D_viz = Inti.single_double_layer(;
Expand All @@ -234,4 +234,4 @@
ax_3d = Axis3(fig_3d[1, 1]; aspect = :data)
viz!(Γ_msh_3d; colorrange, colormap, color = zeros(nv), interpolate = true)
viz!(Σ_msh; colorrange, colormap, color = real(u_eval_msh))
cb = Colorbar(fig_3d[1, 2]; label = &quot;real(u)&quot;, colormap, colorrange)</code></pre><img src="d51694bb.png" alt="Example block output"/></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../toy_example/">« Toy example</a><a class="docs-footer-nextpage" href="../poisson/">Poisson problem »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Saturday 19 October 2024 16:22">Saturday 19 October 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
cb = Colorbar(fig_3d[1, 2]; label = &quot;real(u)&quot;, colormap, colorrange)</code></pre><img src="d51694bb.png" alt="Example block output"/></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../toy_example/">« Toy example</a><a class="docs-footer-nextpage" href="../poisson/">Poisson problem »</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option><option value="catppuccin-latte">catppuccin-latte</option><option value="catppuccin-frappe">catppuccin-frappe</option><option value="catppuccin-macchiato">catppuccin-macchiato</option><option value="catppuccin-mocha">catppuccin-mocha</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.7.0 on <span class="colophon-date" title="Friday 8 November 2024 07:13">Friday 8 November 2024</span>. Using Julia version 1.11.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Loading

0 comments on commit 851de41

Please sign in to comment.