diff --git a/previews/PR126/404.html b/previews/PR126/404.html index 48e07d6e..2b2598ed 100644 --- a/previews/PR126/404.html +++ b/previews/PR126/404.html @@ -6,10 +6,10 @@ 404 | IncompressibleNavierStokes.jl - + - + @@ -21,7 +21,7 @@
- + \ No newline at end of file diff --git a/previews/PR126/about/citing.html b/previews/PR126/about/citing.html index ab4f82f0..660a8528 100644 --- a/previews/PR126/about/citing.html +++ b/previews/PR126/about/citing.html @@ -6,14 +6,14 @@ Citing | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
Skip to content

Citing

See the CITATION.cff file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the GitHub landing page.

- +
Skip to content

Citing

See the CITATION.cff file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the GitHub landing page.

+ \ No newline at end of file diff --git a/previews/PR126/about/contributing.html b/previews/PR126/about/contributing.html index 742ac745..0c9b5688 100644 --- a/previews/PR126/about/contributing.html +++ b/previews/PR126/about/contributing.html @@ -6,14 +6,14 @@ Contributing | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
Skip to content

Contributing

If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the GitHub repository.

- +
Skip to content

Contributing

If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the GitHub repository.

+ \ No newline at end of file diff --git a/previews/PR126/about/development.html b/previews/PR126/about/development.html index 6659e540..a7e13168 100644 --- a/previews/PR126/about/development.html +++ b/previews/PR126/about/development.html @@ -6,14 +6,14 @@ Local development | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -24,8 +24,8 @@
Skip to content

Local development

Use Juliaup

Install Julia using the juliaup version manager. This allows for choosing the Julia version, e.g. v1.11, by running

juliaup add 1.11
-juliaup default 1.11

Revise

It is recommended to use Revise.jl for interactive development. Add it to your global environment with

julia -e 'using Pkg; Pkg.add("Revise")'

and load it in the startup file (create the file and folder if it is not already there) at ~/.julia/config/startup.jl with

using Revise

Then changes to the IncompressibleNavierStokes modules are detected and reloaded live.

Environments

To keep dependencies sparse, there are multiple Project.toml files in this repository, specifying environments. For example, the docs environment contains packages that are required to build documentation, but not needed to run the simulations. To add local packages to an environment and be detectable by Revise, they need to be Pkg.developed. For example, the package NeuralClosure depends on IncompressibleNavierStokes, and IncompressibleNavierStokes needs to be deved with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.develop(PackageSpec(; path = "."))'

Run this from the repository root, where "." is the path to IncompressibleNavierStokes.

On Julia v1.11, this linking is automatic, with the dedicated [sources] sections in the Project.toml files. In that case, an environment can be instantiated with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.instantiate()'

etc., or interactively from the REPL with ] instantiate.

VSCode

In VSCode, you can choose an active environment by clicking on the Julia env: button in the status bar, or press ctrl/cmd + shift + p and start typing environment:

  • Julia: Activate this environment activates the one of the current open file

  • Julia: Change current environment otherwise

Then scripts will be run from the selected environment.

Environment vs package

If a Project.toml has a header with a name and uuid, then it is a package with the module src/ModuleName.jl, and can be depended on in other projects (by add or dev).

- +juliaup default 1.11

Revise

It is recommended to use Revise.jl for interactive development. Add it to your global environment with

julia -e 'using Pkg; Pkg.add("Revise")'

and load it in the startup file (create the file and folder if it is not already there) at ~/.julia/config/startup.jl with

using Revise

Then changes to the IncompressibleNavierStokes modules are detected and reloaded live.

Environments

To keep dependencies sparse, there are multiple Project.toml files in this repository, specifying environments. For example, the docs environment contains packages that are required to build documentation, but not needed to run the simulations. To add local packages to an environment and be detectable by Revise, they need to be Pkg.developed. For example, the package NeuralClosure depends on IncompressibleNavierStokes, and IncompressibleNavierStokes needs to be deved with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.develop(PackageSpec(; path = "."))'

Run this from the repository root, where "." is the path to IncompressibleNavierStokes.

On Julia v1.11, this linking is automatic, with the dedicated [sources] sections in the Project.toml files. In that case, an environment can be instantiated with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.instantiate()'

etc., or interactively from the REPL with ] instantiate.

VSCode

In VSCode, you can choose an active environment by clicking on the Julia env: button in the status bar, or press ctrl/cmd + shift + p and start typing environment:

Then scripts will be run from the selected environment.

Environment vs package

If a Project.toml has a header with a name and uuid, then it is a package with the module src/ModuleName.jl, and can be depended on in other projects (by add or dev).

+ \ No newline at end of file diff --git a/previews/PR126/about/index.html b/previews/PR126/about/index.html index 211c53c0..84a3ab83 100644 --- a/previews/PR126/about/index.html +++ b/previews/PR126/about/index.html @@ -6,14 +6,14 @@ About IncompressibleNavierStokes.jl | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
Skip to content
- +
Skip to content
+ \ No newline at end of file diff --git a/previews/PR126/about/license.html b/previews/PR126/about/license.html index 8ba6baf0..51b97ded 100644 --- a/previews/PR126/about/license.html +++ b/previews/PR126/about/license.html @@ -6,14 +6,14 @@ License | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
Skip to content

License

IncompressibleNavierStokes.license Constant

MIT License

Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

source

- +
Skip to content

License

IncompressibleNavierStokes.license Constant

MIT License

Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

source

+ \ No newline at end of file diff --git a/previews/PR126/about/versions.html b/previews/PR126/about/versions.html index 62a294b0..c64b786b 100644 --- a/previews/PR126/about/versions.html +++ b/previews/PR126/about/versions.html @@ -6,14 +6,14 @@ Package versions | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -39,13 +39,13 @@ [a4c015fc] ANSIColoredPrinters v0.0.1 [621f4979] AbstractFFTs v1.5.0 [1520ce14] AbstractTrees v0.4.5 - [7d9f7c33] Accessors v0.1.39 + [7d9f7c33] Accessors v0.1.41 [79e6a3ab] Adapt v4.1.1 [35492f91] AdaptivePredicates v1.2.0 [66dad0bd] AliasTables v1.1.3 [27a7e980] Animations v0.4.2 [dce04be8] ArgCheck v2.4.0 - [4fba245c] ArrayInterface v7.17.1 + [4fba245c] ArrayInterface v7.18.0 [a9b6321e] Atomix v1.0.1 [67c07d97] Automa v1.1.0 [13072b0f] AxisAlgorithms v1.1.0 @@ -59,9 +59,9 @@ [fa961155] CEnum v0.5.0 [2a0fbf3d] CPUSummary v0.2.6 [159f3aea] Cairo v1.1.1 - [13f3f980] CairoMakie v0.12.17 - [082447d4] ChainRules v1.72.1 - [d360d2e6] ChainRulesCore v1.25.0 +⌃ [13f3f980] CairoMakie v0.12.18 + [082447d4] ChainRules v1.72.2 + [d360d2e6] ChainRulesCore v1.25.1 [fb6a15b2] CloseOpenIntervals v0.1.13 [944b1d66] CodecZlib v0.7.6 [a2cac450] ColorBrewer v0.4.0 @@ -73,7 +73,7 @@ [bbf7d656] CommonSubexpressions v0.3.1 [f70d9fcc] CommonWorldInvalidations v1.0.0 [34da2185] Compat v4.16.0 - [b0b7db55] ComponentArrays v0.15.19 + [b0b7db55] ComponentArrays v0.15.22 [a33af91c] CompositionsBase v0.1.2 [2569d6c7] ConcreteStructs v0.2.3 [187b0558] ConstructionBase v1.5.8 @@ -86,23 +86,23 @@ [244e2a9f] DefineSingletons v0.1.2 [927a84f5] DelaunayTriangulation v1.6.3 [8bb1440f] DelimitedFiles v1.9.1 - [2b5f629d] DiffEqBase v6.160.0 + [2b5f629d] DiffEqBase v6.161.0 [163ba53b] DiffResults v1.1.0 [b552c78f] DiffRules v1.15.1 - [8d63f2c5] DispatchDoctor v0.4.17 - [31c24e10] Distributions v0.25.113 + [8d63f2c5] DispatchDoctor v0.4.19 + [31c24e10] Distributions v0.25.116 [ffbed154] DocStringExtensions v0.9.3 [e30172f5] Documenter v1.8.0 [daee34ce] DocumenterCitations v1.3.5 - [4710194d] DocumenterVitepress v0.1.3 + [4710194d] DocumenterVitepress v0.1.6 [4e289a0a] EnumX v1.0.4 - [7da242da] Enzyme v0.13.21 + [7da242da] Enzyme v0.13.28 [f151be2c] EnzymeCore v0.8.8 [429591f6] ExactPredicates v2.2.8 [318dbb63] Examples v1.0.0 `../examples` [e2ba6199] ExprTools v0.1.10 ⌅ [6b7a57c9] Expronicon v0.8.5 - [411431e0] Extents v0.1.4 + [411431e0] Extents v0.1.5 [7a1cc6ca] FFTW v1.8.0 [cc61a311] FLoops v0.2.2 [b9860ae5] FLoopsBase v0.1.1 @@ -122,17 +122,18 @@ [77dc65aa] FunctionWrappersWrappers v0.1.3 [d9f16b24] Functors v0.5.2 [f7f18e0c] GLFW v3.4.3 - [e9467ef8] GLMakie v0.10.17 -⌃ [0c68f7d7] GPUArrays v10.3.1 -⌅ [46192b85] GPUArraysCore v0.1.6 - [61eb1bfa] GPUCompiler v1.0.1 - [68eda718] GeoFormatTypes v0.4.2 - [cf35fbd7] GeoInterface v1.3.8 +⌃ [e9467ef8] GLMakie v0.10.18 + [0c68f7d7] GPUArrays v11.2.0 + [46192b85] GPUArraysCore v0.2.0 + [61eb1bfa] GPUCompiler v1.1.0 + [68eda718] GeoFormatTypes v0.4.3 + [cf35fbd7] GeoInterface v1.4.0 ⌅ [5c1252a2] GeometryBasics v0.4.11 [d7ba0133] Git v1.3.1 [a2bd30eb] Graphics v1.1.3 [3955a311] GridLayoutBase v0.11.1 [42e2da0e] Grisu v1.0.2 + [076d061b] HashArrayMappedTries v0.2.0 [0e44f5e4] Hwloc v3.3.0 [34004b35] HypergeometricFunctions v0.3.25 [b5f81e59] IOCapture v0.2.5 @@ -143,12 +144,12 @@ [a09fc81d] ImageCore v0.10.5 [82e4d734] ImageIO v0.6.9 [bc367c6b] ImageMetadata v0.9.10 - [5e318141] IncompressibleNavierStokes v2.1.0 `..` + [5e318141] IncompressibleNavierStokes v2.2.0 `..` [9b13fd28] IndirectArrays v1.0.0 [d25df0c9] Inflate v0.1.5 [22cec73e] InitialValues v0.3.1 [a98d9a8b] Interpolations v0.15.1 - [d1acc4aa] IntervalArithmetic v0.22.19 + [d1acc4aa] IntervalArithmetic v0.22.21 [8197267c] IntervalSets v0.7.10 [3587e190] InverseFunctions v0.1.17 [92d709cd] IrrationalConstants v0.2.2 @@ -156,8 +157,8 @@ [c8e1da08] IterTools v1.10.0 [42fd0dbc] IterativeSolvers v0.9.4 [82899510] IteratorInterfaceExtensions v1.0.0 - [033835bb] JLD2 v0.5.10 - [692b3bcd] JLLWrappers v1.6.1 + [033835bb] JLD2 v0.5.11 + [692b3bcd] JLLWrappers v1.7.0 [682c06a0] JSON v0.21.4 [0f8b85d8] JSON3 v1.14.1 [7d188eb4] JSONSchema v1.4.1 @@ -172,16 +173,16 @@ [8cdb02fc] LazyModules v0.3.1 [9c8b4983] LightXML v0.9.1 [98b081ad] Literate v2.20.1 - [2ab3a3ac] LogExpFunctions v0.3.28 - [b2108857] Lux v1.4.1 - [bb33d45b] LuxCore v1.2.1 - [82251201] LuxLib v1.3.10 - [7e8f7934] MLDataDevices v1.6.3 + [2ab3a3ac] LogExpFunctions v0.3.29 + [b2108857] Lux v1.5.1 + [bb33d45b] LuxCore v1.2.2 + [82251201] LuxLib v1.4.1 + [7e8f7934] MLDataDevices v1.6.8 [d8e11817] MLStyle v0.4.17 - [f1d291b0] MLUtils v0.4.4 - [1914dd2f] MacroTools v0.5.13 - [ee78f7c6] Makie v0.21.17 - [20f20a25] MakieCore v0.8.11 + [f1d291b0] MLUtils v0.4.5 + [1914dd2f] MacroTools v0.5.15 +⌅ [ee78f7c6] Makie v0.21.18 +⌅ [20f20a25] MakieCore v0.8.12 [d125e4d3] ManualMemory v0.1.8 [dbb5928d] MappedArrays v0.4.2 [d0879d2d] MarkdownAST v0.1.2 @@ -192,18 +193,18 @@ [66fc600b] ModernGL v1.1.7 [e94cdb99] MosaicViews v0.3.4 [46d2c3a1] MuladdMacro v0.2.4 - [872c559c] NNlib v0.9.26 - [77ba4419] NaNMath v1.0.2 + [872c559c] NNlib v0.9.27 + [77ba4419] NaNMath v1.0.3 [71a1bf82] NameResolution v0.1.5 [f09324ee] Netpbm v1.1.1 [099dac27] NeuralClosure v1.0.0 `../lib/NeuralClosure` - [d8793406] ObjectFile v0.4.2 + [d8793406] ObjectFile v0.4.3 [510215fc] Observables v0.5.5 - [6fe1bfb0] OffsetArrays v1.14.2 + [6fe1bfb0] OffsetArrays v1.15.0 [52e1d378] OpenEXR v0.3.3 - [3bd65402] Optimisers v0.4.1 + [3bd65402] Optimisers v0.4.4 [bac558e1] OrderedCollections v1.7.0 - [bbf590c4] OrdinaryDiffEqCore v1.13.0 + [bbf590c4] OrdinaryDiffEqCore v1.14.1 [b1df2697] OrdinaryDiffEqTsit5 v1.1.0 [90014a1f] PDMats v0.11.31 [f57f5aa1] PNGFiles v0.4.3 @@ -236,11 +237,12 @@ [79098fc4] Rmath v0.8.0 [5eaf0fd0] RoundingEmulator v0.2.1 [7e49a35a] RuntimeGeneratedFunctions v0.5.13 - [fdea26ae] SIMD v3.7.0 + [fdea26ae] SIMD v3.7.1 [94e857df] SIMDTypes v0.1.0 - [0bca4576] SciMLBase v2.67.0 + [0bca4576] SciMLBase v2.70.0 [c0aeaf25] SciMLOperators v0.3.12 [53ae85a6] SciMLStructures v1.6.1 + [7e506255] ScopedValues v1.3.0 [6c6a2e73] Scratch v1.2.1 [efcf1570] Setfield v1.1.1 ⌅ [65257c39] ShaderAbstractions v0.4.1 @@ -252,30 +254,30 @@ [45858cf5] Sixel v0.1.3 [a2af1166] SortingAlgorithms v1.2.1 [dc90abb0] SparseInverseSubset v0.1.2 - [276daf66] SpecialFunctions v2.4.0 + [276daf66] SpecialFunctions v2.5.0 [171d559e] SplittablesBase v0.1.15 [860ef19b] StableRNGs v1.0.2 [cae243ae] StackViews v0.1.1 [aedffcd0] Static v1.1.1 [0d7ed370] StaticArrayInterface v1.8.0 - [90137ffa] StaticArrays v1.9.8 + [90137ffa] StaticArrays v1.9.10 [1e83bf80] StaticArraysCore v1.4.3 [10745b16] Statistics v1.11.1 [82ae8749] StatsAPI v1.7.0 - [2913bbd2] StatsBase v0.34.3 + [2913bbd2] StatsBase v0.34.4 [4c63d2b9] StatsFuns v1.3.2 [7792a7ef] StrideArraysCore v0.5.7 [69024149] StringEncodings v0.3.7 -⌅ [09ab397b] StructArrays v0.6.18 +⌅ [09ab397b] StructArrays v0.6.21 [53d494c1] StructIO v0.3.1 [856f2bd8] StructTypes v1.11.0 - [2efcf032] SymbolicIndexingInterface v0.3.36 + [2efcf032] SymbolicIndexingInterface v0.3.37 [3783bdb8] TableTraits v1.0.1 [bd369af6] Tables v1.12.0 [62fd8b95] TensorCore v0.1.1 [1c621080] TestItems v1.0.0 [8290d209] ThreadingUtilities v0.5.2 - [731e570b] TiffImages v0.11.1 + [731e570b] TiffImages v0.11.2 [a759f4b9] TimerOutputs v0.5.26 [3bb67fe8] TranscodingStreams v0.11.3 [28d57a85] Transducers v0.4.84 @@ -284,98 +286,98 @@ [5c2747f8] URIs v1.5.1 [3a884ed6] UnPack v1.0.2 [1cfade01] UnicodeFun v0.4.1 - [1986cc42] Unitful v1.21.1 - [013be700] UnsafeAtomics v0.2.1 + [1986cc42] Unitful v1.22.0 + [013be700] UnsafeAtomics v0.3.0 [4004b06d] VTKBase v1.0.1 [e3aaa7dc] WebP v0.1.3 - [d49dbf32] WeightInitializers v1.0.4 + [d49dbf32] WeightInitializers v1.1.1 [efce3f68] WoodburyMatrices v1.0.0 [64499a7a] WriteVTK v1.21.1 [ddb6d928] YAML v0.4.12 - [e88e6eb3] Zygote v0.6.73 +⌃ [e88e6eb3] Zygote v0.6.75 [700de1a5] ZygoteRules v0.2.5 - [6e34b625] Bzip2_jll v1.0.8+2 + [6e34b625] Bzip2_jll v1.0.8+4 [4e9b3aee] CRlibm_jll v1.0.1+0 [83423d85] Cairo_jll v1.18.2+1 [ee1fde0b] Dbus_jll v1.14.10+0 [5ae413db] EarCut_jll v2.2.4+0 - [7cc45869] Enzyme_jll v0.0.168+0 + [7cc45869] Enzyme_jll v0.0.172+0 [2702e6a9] EpollShim_jll v0.0.20230411+1 - [2e619515] Expat_jll v2.6.4+1 + [2e619515] Expat_jll v2.6.4+3 [b22a6f82] FFMPEG_jll v6.1.2+0 - [f5851436] FFTW_jll v3.3.10+1 + [f5851436] FFTW_jll v3.3.10+3 [a3f928ae] Fontconfig_jll v2.15.0+0 [d7e528f0] FreeType2_jll v2.13.3+1 - [559328eb] FriBidi_jll v1.0.14+0 - [0656b61e] GLFW_jll v3.4.0+1 + [559328eb] FriBidi_jll v1.0.16+0 + [0656b61e] GLFW_jll v3.4.0+2 [78b55507] Gettext_jll v0.21.0+0 - [59f7168a] Giflib_jll v5.2.2+0 + [59f7168a] Giflib_jll v5.2.3+0 [f8c6e375] Git_jll v2.47.1+0 - [7746bdde] Glib_jll v2.82.2+1 + [7746bdde] Glib_jll v2.82.4+0 [3b182d85] Graphite2_jll v1.3.14+1 [2e76f6c2] HarfBuzz_jll v8.5.0+0 - [e33a78d0] Hwloc_jll v2.11.2+1 + [e33a78d0] Hwloc_jll v2.11.2+3 [905a6f67] Imath_jll v3.1.11+0 [1d5cc7b8] IntelOpenMP_jll v2024.2.1+0 - [aacddb02] JpegTurbo_jll v3.0.4+0 + [aacddb02] JpegTurbo_jll v3.1.1+0 [c1c5ebd0] LAME_jll v3.100.2+0 - [88015f11] LERC_jll v4.0.0+0 + [88015f11] LERC_jll v4.0.1+0 [dad2f222] LLVMExtra_jll v0.0.34+0 [1d63c593] LLVMOpenMP_jll v18.1.7+0 - [dd4b983a] LZO_jll v2.10.2+1 -⌅ [e9f186c6] Libffi_jll v3.2.2+1 + [dd4b983a] LZO_jll v2.10.3+0 +⌅ [e9f186c6] Libffi_jll v3.2.2+2 [d4300ac3] Libgcrypt_jll v1.11.0+0 [7e76a0d4] Libglvnd_jll v1.7.0+0 - [7add5ba3] Libgpg_error_jll v1.50.0+0 - [94ce4f54] Libiconv_jll v1.17.0+1 - [4b2f31a3] Libmount_jll v2.40.2+0 - [89763e89] Libtiff_jll v4.7.0+0 - [38a345b3] Libuuid_jll v2.40.2+0 + [7add5ba3] Libgpg_error_jll v1.51.1+0 + [94ce4f54] Libiconv_jll v1.18.0+0 + [4b2f31a3] Libmount_jll v2.40.3+0 + [89763e89] Libtiff_jll v4.7.1+0 + [38a345b3] Libuuid_jll v2.40.3+0 [856f044c] MKL_jll v2024.2.0+0 [c7aee132] NodeJS_20_jll v20.12.2+0 [e7412a2a] Ogg_jll v1.3.5+1 [18a262bb] OpenEXR_jll v3.2.4+0 - [458c3c95] OpenSSL_jll v3.0.15+1 - [efe28fd5] OpenSpecFun_jll v0.5.5+0 + [458c3c95] OpenSSL_jll v3.0.15+3 + [efe28fd5] OpenSpecFun_jll v0.5.6+0 [91d4177d] Opus_jll v1.3.3+0 - [36c8627f] Pango_jll v1.54.1+0 + [36c8627f] Pango_jll v1.55.5+0 ⌅ [30392449] Pixman_jll v0.43.4+0 [f50d1b31] Rmath_jll v0.5.1+0 - [a2964d1f] Wayland_jll v1.21.0+1 - [2381bf8a] Wayland_protocols_jll v1.31.0+0 + [a2964d1f] Wayland_jll v1.21.0+2 + [2381bf8a] Wayland_protocols_jll v1.36.0+0 [02c8fc9c] XML2_jll v2.13.5+0 [aed1982a] XSLT_jll v1.1.42+0 - [ffd25f8a] XZ_jll v5.6.3+0 - [4f6342f7] Xorg_libX11_jll v1.8.6+1 - [0c0b7dd1] Xorg_libXau_jll v1.0.11+1 - [935fb764] Xorg_libXcursor_jll v1.2.0+4 - [a3789734] Xorg_libXdmcp_jll v1.1.4+1 - [1082639a] Xorg_libXext_jll v1.3.6+1 - [d091e8ba] Xorg_libXfixes_jll v5.0.3+4 - [a51aa0fd] Xorg_libXi_jll v1.7.10+4 - [d1454406] Xorg_libXinerama_jll v1.1.4+4 - [ec84b674] Xorg_libXrandr_jll v1.5.2+4 - [ea2f1a96] Xorg_libXrender_jll v0.9.11+0 - [14d82f49] Xorg_libpthread_stubs_jll v0.1.1+1 - [c7cfdc94] Xorg_libxcb_jll v1.17.0+1 - [cc61e674] Xorg_libxkbfile_jll v1.1.2+0 - [35661453] Xorg_xkbcomp_jll v1.4.6+0 + [ffd25f8a] XZ_jll v5.6.4+0 + [4f6342f7] Xorg_libX11_jll v1.8.6+3 + [0c0b7dd1] Xorg_libXau_jll v1.0.12+0 + [935fb764] Xorg_libXcursor_jll v1.2.3+0 + [a3789734] Xorg_libXdmcp_jll v1.1.5+0 + [1082639a] Xorg_libXext_jll v1.3.6+3 + [d091e8ba] Xorg_libXfixes_jll v6.0.0+0 + [a51aa0fd] Xorg_libXi_jll v1.8.2+0 + [d1454406] Xorg_libXinerama_jll v1.1.5+0 + [ec84b674] Xorg_libXrandr_jll v1.5.4+0 + [ea2f1a96] Xorg_libXrender_jll v0.9.11+1 + [14d82f49] Xorg_libpthread_stubs_jll v0.1.2+0 + [c7cfdc94] Xorg_libxcb_jll v1.17.0+3 + [cc61e674] Xorg_libxkbfile_jll v1.1.2+1 + [35661453] Xorg_xkbcomp_jll v1.4.6+1 [33bec58e] Xorg_xkeyboard_config_jll v2.39.0+0 - [c5fb5394] Xorg_xtrans_jll v1.5.0+1 - [3161d3a3] Zstd_jll v1.5.6+1 + [c5fb5394] Xorg_xtrans_jll v1.5.1+0 + [3161d3a3] Zstd_jll v1.5.7+0 [9a68df92] isoband_jll v0.2.3+0 - [a4ae2306] libaom_jll v3.9.0+0 + [a4ae2306] libaom_jll v3.11.0+0 [0ac62f75] libass_jll v0.15.2+0 [1183f4f0] libdecor_jll v0.2.2+0 [f638f0a6] libfdk_aac_jll v2.0.3+0 - [b53b4c65] libpng_jll v1.6.44+0 - [075b6546] libsixel_jll v1.10.3+1 + [b53b4c65] libpng_jll v1.6.45+1 + [075b6546] libsixel_jll v1.10.4+1 [f27f6e37] libvorbis_jll v1.3.7+2 - [c5f90fcd] libwebp_jll v1.4.0+0 + [c5f90fcd] libwebp_jll v1.5.0+0 [1317d2d5] oneTBB_jll v2021.12.0+0 - [1270edf5] x264_jll v10164.0.0+0 + [1270edf5] x264_jll v10164.0.1+0 ⌅ [dfaa095f] x265_jll v3.6.0+0 - [d8fb68d0] xkbcommon_jll v1.4.1+1 + [d8fb68d0] xkbcommon_jll v1.4.1+2 [0dad84c5] ArgTools v1.1.2 [56f22d72] Artifacts v1.11.0 [2a0f44e3] Base64 v1.11.0 @@ -425,8 +427,8 @@ [8e850b90] libblastrampoline_jll v5.11.0+0 [8e850ede] nghttp2_jll v1.59.0+0 [3f19e933] p7zip_jll v17.4.0+2 -Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m` - +Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m` + \ No newline at end of file diff --git a/previews/PR126/assets/about_citing.md.Dcb0a_6u.js b/previews/PR126/assets/about_citing.md.TqNm3uUR.js similarity index 93% rename from previews/PR126/assets/about_citing.md.Dcb0a_6u.js rename to previews/PR126/assets/about_citing.md.TqNm3uUR.js index 80b97cab..9cd16723 100644 --- a/previews/PR126/assets/about_citing.md.Dcb0a_6u.js +++ b/previews/PR126/assets/about_citing.md.TqNm3uUR.js @@ -1 +1 @@ -import{_ as a,c as o,j as t,a as e,o as r}from"./chunks/framework.BSoZtefh.js";const p=JSON.parse('{"title":"Citing","description":"","frontmatter":{},"headers":[],"relativePath":"about/citing.md","filePath":"about/citing.md","lastUpdated":null}'),n={name:"about/citing.md"};function s(c,i,l,f,d,g){return r(),o("div",null,i[0]||(i[0]=[t("h1",{id:"citing",tabindex:"-1"},[e("Citing "),t("a",{class:"header-anchor",href:"#citing","aria-label":'Permalink to "Citing"'},"​")],-1),t("p",null,[e("See the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/main/CITATION.cff",target:"_blank",rel:"noreferrer"},[t("code",null,"CITATION.cff")]),e(' file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the '),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub landing page"),e(".")],-1)]))}const m=a(n,[["render",s]]);export{p as __pageData,m as default}; +import{_ as a,c as o,j as t,a as e,o as r}from"./chunks/framework.CojPSOJE.js";const p=JSON.parse('{"title":"Citing","description":"","frontmatter":{},"headers":[],"relativePath":"about/citing.md","filePath":"about/citing.md","lastUpdated":null}'),n={name:"about/citing.md"};function s(c,i,l,f,d,g){return r(),o("div",null,i[0]||(i[0]=[t("h1",{id:"citing",tabindex:"-1"},[e("Citing "),t("a",{class:"header-anchor",href:"#citing","aria-label":'Permalink to "Citing"'},"​")],-1),t("p",null,[e("See the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/main/CITATION.cff",target:"_blank",rel:"noreferrer"},[t("code",null,"CITATION.cff")]),e(' file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the '),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub landing page"),e(".")],-1)]))}const m=a(n,[["render",s]]);export{p as __pageData,m as default}; diff --git a/previews/PR126/assets/about_citing.md.Dcb0a_6u.lean.js b/previews/PR126/assets/about_citing.md.TqNm3uUR.lean.js similarity index 93% rename from previews/PR126/assets/about_citing.md.Dcb0a_6u.lean.js rename to previews/PR126/assets/about_citing.md.TqNm3uUR.lean.js index 80b97cab..9cd16723 100644 --- a/previews/PR126/assets/about_citing.md.Dcb0a_6u.lean.js +++ b/previews/PR126/assets/about_citing.md.TqNm3uUR.lean.js @@ -1 +1 @@ -import{_ as a,c as o,j as t,a as e,o as r}from"./chunks/framework.BSoZtefh.js";const p=JSON.parse('{"title":"Citing","description":"","frontmatter":{},"headers":[],"relativePath":"about/citing.md","filePath":"about/citing.md","lastUpdated":null}'),n={name:"about/citing.md"};function s(c,i,l,f,d,g){return r(),o("div",null,i[0]||(i[0]=[t("h1",{id:"citing",tabindex:"-1"},[e("Citing "),t("a",{class:"header-anchor",href:"#citing","aria-label":'Permalink to "Citing"'},"​")],-1),t("p",null,[e("See the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/main/CITATION.cff",target:"_blank",rel:"noreferrer"},[t("code",null,"CITATION.cff")]),e(' file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the '),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub landing page"),e(".")],-1)]))}const m=a(n,[["render",s]]);export{p as __pageData,m as default}; +import{_ as a,c as o,j as t,a as e,o as r}from"./chunks/framework.CojPSOJE.js";const p=JSON.parse('{"title":"Citing","description":"","frontmatter":{},"headers":[],"relativePath":"about/citing.md","filePath":"about/citing.md","lastUpdated":null}'),n={name:"about/citing.md"};function s(c,i,l,f,d,g){return r(),o("div",null,i[0]||(i[0]=[t("h1",{id:"citing",tabindex:"-1"},[e("Citing "),t("a",{class:"header-anchor",href:"#citing","aria-label":'Permalink to "Citing"'},"​")],-1),t("p",null,[e("See the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/main/CITATION.cff",target:"_blank",rel:"noreferrer"},[t("code",null,"CITATION.cff")]),e(' file in the root of the repository for citation information. To get the citation in BibTeX format, click on "Cite this repository"-button to the right on the '),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub landing page"),e(".")],-1)]))}const m=a(n,[["render",s]]);export{p as __pageData,m as default}; diff --git a/previews/PR126/assets/about_contributing.md.BzPOAokx.js b/previews/PR126/assets/about_contributing.md.D9mywf4p.js similarity index 92% rename from previews/PR126/assets/about_contributing.md.BzPOAokx.js rename to previews/PR126/assets/about_contributing.md.D9mywf4p.js index c5c0cf25..c186f14f 100644 --- a/previews/PR126/assets/about_contributing.md.BzPOAokx.js +++ b/previews/PR126/assets/about_contributing.md.D9mywf4p.js @@ -1 +1 @@ -import{_ as o,c as a,j as t,a as e,o as n}from"./chunks/framework.BSoZtefh.js";const f=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"about/contributing.md","filePath":"about/contributing.md","lastUpdated":null}'),i={name:"about/contributing.md"};function s(u,r,l,c,p,d){return n(),a("div",null,r[0]||(r[0]=[t("h1",{id:"contributing",tabindex:"-1"},[e("Contributing "),t("a",{class:"header-anchor",href:"#contributing","aria-label":'Permalink to "Contributing"'},"​")],-1),t("p",null,[e("If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub repository"),e(".")],-1)]))}const g=o(i,[["render",s]]);export{f as __pageData,g as default}; +import{_ as o,c as a,j as t,a as e,o as n}from"./chunks/framework.CojPSOJE.js";const f=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"about/contributing.md","filePath":"about/contributing.md","lastUpdated":null}'),i={name:"about/contributing.md"};function s(u,r,l,c,p,d){return n(),a("div",null,r[0]||(r[0]=[t("h1",{id:"contributing",tabindex:"-1"},[e("Contributing "),t("a",{class:"header-anchor",href:"#contributing","aria-label":'Permalink to "Contributing"'},"​")],-1),t("p",null,[e("If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub repository"),e(".")],-1)]))}const g=o(i,[["render",s]]);export{f as __pageData,g as default}; diff --git a/previews/PR126/assets/about_contributing.md.BzPOAokx.lean.js b/previews/PR126/assets/about_contributing.md.D9mywf4p.lean.js similarity index 92% rename from previews/PR126/assets/about_contributing.md.BzPOAokx.lean.js rename to previews/PR126/assets/about_contributing.md.D9mywf4p.lean.js index c5c0cf25..c186f14f 100644 --- a/previews/PR126/assets/about_contributing.md.BzPOAokx.lean.js +++ b/previews/PR126/assets/about_contributing.md.D9mywf4p.lean.js @@ -1 +1 @@ -import{_ as o,c as a,j as t,a as e,o as n}from"./chunks/framework.BSoZtefh.js";const f=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"about/contributing.md","filePath":"about/contributing.md","lastUpdated":null}'),i={name:"about/contributing.md"};function s(u,r,l,c,p,d){return n(),a("div",null,r[0]||(r[0]=[t("h1",{id:"contributing",tabindex:"-1"},[e("Contributing "),t("a",{class:"header-anchor",href:"#contributing","aria-label":'Permalink to "Contributing"'},"​")],-1),t("p",null,[e("If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub repository"),e(".")],-1)]))}const g=o(i,[["render",s]]);export{f as __pageData,g as default}; +import{_ as o,c as a,j as t,a as e,o as n}from"./chunks/framework.CojPSOJE.js";const f=JSON.parse('{"title":"Contributing","description":"","frontmatter":{},"headers":[],"relativePath":"about/contributing.md","filePath":"about/contributing.md","lastUpdated":null}'),i={name:"about/contributing.md"};function s(u,r,l,c,p,d){return n(),a("div",null,r[0]||(r[0]=[t("h1",{id:"contributing",tabindex:"-1"},[e("Contributing "),t("a",{class:"header-anchor",href:"#contributing","aria-label":'Permalink to "Contributing"'},"​")],-1),t("p",null,[e("If you encounter errors, typos, or want to propose additional features, feel free to open issues or pull request at the "),t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl",target:"_blank",rel:"noreferrer"},"GitHub repository"),e(".")],-1)]))}const g=o(i,[["render",s]]);export{f as __pageData,g as default}; diff --git a/previews/PR126/assets/about_development.md.DV7wzfz4.js b/previews/PR126/assets/about_development.md.Be53C4_K.js similarity index 97% rename from previews/PR126/assets/about_development.md.DV7wzfz4.js rename to previews/PR126/assets/about_development.md.Be53C4_K.js index 5d894d54..14ad46c4 100644 --- a/previews/PR126/assets/about_development.md.DV7wzfz4.js +++ b/previews/PR126/assets/about_development.md.Be53C4_K.js @@ -1,2 +1,2 @@ -import{_ as a,c as t,a5 as o,o as n}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"Local development","description":"","frontmatter":{},"headers":[],"relativePath":"about/development.md","filePath":"about/development.md","lastUpdated":null}'),i={name:"about/development.md"};function s(l,e,d,r,c,p){return n(),t("div",null,e[0]||(e[0]=[o(`

Local development

Use Juliaup

Install Julia using the juliaup version manager. This allows for choosing the Julia version, e.g. v1.11, by running

juliaup add 1.11
+import{_ as a,c as t,a5 as o,o as n}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"Local development","description":"","frontmatter":{},"headers":[],"relativePath":"about/development.md","filePath":"about/development.md","lastUpdated":null}'),i={name:"about/development.md"};function s(l,e,d,r,c,p){return n(),t("div",null,e[0]||(e[0]=[o(`

Local development

Use Juliaup

Install Julia using the juliaup version manager. This allows for choosing the Julia version, e.g. v1.11, by running

juliaup add 1.11
 juliaup default 1.11

Revise

It is recommended to use Revise.jl for interactive development. Add it to your global environment with

julia -e 'using Pkg; Pkg.add("Revise")'

and load it in the startup file (create the file and folder if it is not already there) at ~/.julia/config/startup.jl with

using Revise

Then changes to the IncompressibleNavierStokes modules are detected and reloaded live.

Environments

To keep dependencies sparse, there are multiple Project.toml files in this repository, specifying environments. For example, the docs environment contains packages that are required to build documentation, but not needed to run the simulations. To add local packages to an environment and be detectable by Revise, they need to be Pkg.developed. For example, the package NeuralClosure depends on IncompressibleNavierStokes, and IncompressibleNavierStokes needs to be deved with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.develop(PackageSpec(; path = "."))'

Run this from the repository root, where "." is the path to IncompressibleNavierStokes.

On Julia v1.11, this linking is automatic, with the dedicated [sources] sections in the Project.toml files. In that case, an environment can be instantiated with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.instantiate()'

etc., or interactively from the REPL with ] instantiate.

VSCode

In VSCode, you can choose an active environment by clicking on the Julia env: button in the status bar, or press ctrl/cmd + shift + p and start typing environment:

  • Julia: Activate this environment activates the one of the current open file

  • Julia: Change current environment otherwise

Then scripts will be run from the selected environment.

Environment vs package

If a Project.toml has a header with a name and uuid, then it is a package with the module src/ModuleName.jl, and can be depended on in other projects (by add or dev).

`,23)]))}const v=a(i,[["render",s]]);export{u as __pageData,v as default}; diff --git a/previews/PR126/assets/about_development.md.DV7wzfz4.lean.js b/previews/PR126/assets/about_development.md.Be53C4_K.lean.js similarity index 97% rename from previews/PR126/assets/about_development.md.DV7wzfz4.lean.js rename to previews/PR126/assets/about_development.md.Be53C4_K.lean.js index 5d894d54..14ad46c4 100644 --- a/previews/PR126/assets/about_development.md.DV7wzfz4.lean.js +++ b/previews/PR126/assets/about_development.md.Be53C4_K.lean.js @@ -1,2 +1,2 @@ -import{_ as a,c as t,a5 as o,o as n}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"Local development","description":"","frontmatter":{},"headers":[],"relativePath":"about/development.md","filePath":"about/development.md","lastUpdated":null}'),i={name:"about/development.md"};function s(l,e,d,r,c,p){return n(),t("div",null,e[0]||(e[0]=[o(`

Local development

Use Juliaup

Install Julia using the juliaup version manager. This allows for choosing the Julia version, e.g. v1.11, by running

juliaup add 1.11
+import{_ as a,c as t,a5 as o,o as n}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"Local development","description":"","frontmatter":{},"headers":[],"relativePath":"about/development.md","filePath":"about/development.md","lastUpdated":null}'),i={name:"about/development.md"};function s(l,e,d,r,c,p){return n(),t("div",null,e[0]||(e[0]=[o(`

Local development

Use Juliaup

Install Julia using the juliaup version manager. This allows for choosing the Julia version, e.g. v1.11, by running

juliaup add 1.11
 juliaup default 1.11

Revise

It is recommended to use Revise.jl for interactive development. Add it to your global environment with

julia -e 'using Pkg; Pkg.add("Revise")'

and load it in the startup file (create the file and folder if it is not already there) at ~/.julia/config/startup.jl with

using Revise

Then changes to the IncompressibleNavierStokes modules are detected and reloaded live.

Environments

To keep dependencies sparse, there are multiple Project.toml files in this repository, specifying environments. For example, the docs environment contains packages that are required to build documentation, but not needed to run the simulations. To add local packages to an environment and be detectable by Revise, they need to be Pkg.developed. For example, the package NeuralClosure depends on IncompressibleNavierStokes, and IncompressibleNavierStokes needs to be deved with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.develop(PackageSpec(; path = "."))'

Run this from the repository root, where "." is the path to IncompressibleNavierStokes.

On Julia v1.11, this linking is automatic, with the dedicated [sources] sections in the Project.toml files. In that case, an environment can be instantiated with

julia --project=lib/NeuralClosure -e 'using Pkg; Pkg.instantiate()'

etc., or interactively from the REPL with ] instantiate.

VSCode

In VSCode, you can choose an active environment by clicking on the Julia env: button in the status bar, or press ctrl/cmd + shift + p and start typing environment:

  • Julia: Activate this environment activates the one of the current open file

  • Julia: Change current environment otherwise

Then scripts will be run from the selected environment.

Environment vs package

If a Project.toml has a header with a name and uuid, then it is a package with the module src/ModuleName.jl, and can be depended on in other projects (by add or dev).

`,23)]))}const v=a(i,[["render",s]]);export{u as __pageData,v as default}; diff --git a/previews/PR126/assets/about_index.md.CEm1ci23.js b/previews/PR126/assets/about_index.md.CmPZh-J-.js similarity index 99% rename from previews/PR126/assets/about_index.md.CEm1ci23.js rename to previews/PR126/assets/about_index.md.CmPZh-J-.js index 8a2400a3..c59db99c 100644 --- a/previews/PR126/assets/about_index.md.CEm1ci23.js +++ b/previews/PR126/assets/about_index.md.CmPZh-J-.js @@ -1 +1 @@ -import{_ as o,c as l,j as s,a as r,G as a,a5 as p,B as n,o as t}from"./chunks/framework.BSoZtefh.js";const I=JSON.parse('{"title":"About IncompressibleNavierStokes.jl","description":"","frontmatter":{},"headers":[],"relativePath":"about/index.md","filePath":"about/index.md","lastUpdated":null}'),c={name:"about/index.md"},m={class:"jldocstring custom-block",open:""};function v(d,e,u,b,k,N){const i=n("Badge");return t(),l("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[r("About IncompressibleNavierStokes.jl "),s("a",{class:"header-anchor",href:"#About-IncompressibleNavierStokes.jl","aria-label":'Permalink to "About IncompressibleNavierStokes.jl {#About-IncompressibleNavierStokes.jl}"'},"​")],-1)),s("details",m,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.IncompressibleNavierStokes",href:"#IncompressibleNavierStokes.IncompressibleNavierStokes"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.IncompressibleNavierStokes")],-1)),e[1]||(e[1]=r()),a(i,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),e[2]||(e[2]=p('

Energy-conserving solvers for the incompressible Navier-Stokes equations.

Exports

The following symbols are exported by IncompressibleNavierStokes:

source

',5))])])}const f=o(c,[["render",v]]);export{I as __pageData,f as default}; +import{_ as o,c as l,j as s,a as r,G as a,a5 as p,B as n,o as t}from"./chunks/framework.CojPSOJE.js";const I=JSON.parse('{"title":"About IncompressibleNavierStokes.jl","description":"","frontmatter":{},"headers":[],"relativePath":"about/index.md","filePath":"about/index.md","lastUpdated":null}'),c={name:"about/index.md"},m={class:"jldocstring custom-block",open:""};function v(d,e,u,b,k,N){const i=n("Badge");return t(),l("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[r("About IncompressibleNavierStokes.jl "),s("a",{class:"header-anchor",href:"#About-IncompressibleNavierStokes.jl","aria-label":'Permalink to "About IncompressibleNavierStokes.jl {#About-IncompressibleNavierStokes.jl}"'},"​")],-1)),s("details",m,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.IncompressibleNavierStokes",href:"#IncompressibleNavierStokes.IncompressibleNavierStokes"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.IncompressibleNavierStokes")],-1)),e[1]||(e[1]=r()),a(i,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),e[2]||(e[2]=p('

Energy-conserving solvers for the incompressible Navier-Stokes equations.

Exports

The following symbols are exported by IncompressibleNavierStokes:

source

',5))])])}const f=o(c,[["render",v]]);export{I as __pageData,f as default}; diff --git a/previews/PR126/assets/about_index.md.CEm1ci23.lean.js b/previews/PR126/assets/about_index.md.CmPZh-J-.lean.js similarity index 99% rename from previews/PR126/assets/about_index.md.CEm1ci23.lean.js rename to previews/PR126/assets/about_index.md.CmPZh-J-.lean.js index 8a2400a3..c59db99c 100644 --- a/previews/PR126/assets/about_index.md.CEm1ci23.lean.js +++ b/previews/PR126/assets/about_index.md.CmPZh-J-.lean.js @@ -1 +1 @@ -import{_ as o,c as l,j as s,a as r,G as a,a5 as p,B as n,o as t}from"./chunks/framework.BSoZtefh.js";const I=JSON.parse('{"title":"About IncompressibleNavierStokes.jl","description":"","frontmatter":{},"headers":[],"relativePath":"about/index.md","filePath":"about/index.md","lastUpdated":null}'),c={name:"about/index.md"},m={class:"jldocstring custom-block",open:""};function v(d,e,u,b,k,N){const i=n("Badge");return t(),l("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[r("About IncompressibleNavierStokes.jl "),s("a",{class:"header-anchor",href:"#About-IncompressibleNavierStokes.jl","aria-label":'Permalink to "About IncompressibleNavierStokes.jl {#About-IncompressibleNavierStokes.jl}"'},"​")],-1)),s("details",m,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.IncompressibleNavierStokes",href:"#IncompressibleNavierStokes.IncompressibleNavierStokes"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.IncompressibleNavierStokes")],-1)),e[1]||(e[1]=r()),a(i,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),e[2]||(e[2]=p('

Energy-conserving solvers for the incompressible Navier-Stokes equations.

Exports

The following symbols are exported by IncompressibleNavierStokes:

source

',5))])])}const f=o(c,[["render",v]]);export{I as __pageData,f as default}; +import{_ as o,c as l,j as s,a as r,G as a,a5 as p,B as n,o as t}from"./chunks/framework.CojPSOJE.js";const I=JSON.parse('{"title":"About IncompressibleNavierStokes.jl","description":"","frontmatter":{},"headers":[],"relativePath":"about/index.md","filePath":"about/index.md","lastUpdated":null}'),c={name:"about/index.md"},m={class:"jldocstring custom-block",open:""};function v(d,e,u,b,k,N){const i=n("Badge");return t(),l("div",null,[e[3]||(e[3]=s("h1",{id:"About-IncompressibleNavierStokes.jl",tabindex:"-1"},[r("About IncompressibleNavierStokes.jl "),s("a",{class:"header-anchor",href:"#About-IncompressibleNavierStokes.jl","aria-label":'Permalink to "About IncompressibleNavierStokes.jl {#About-IncompressibleNavierStokes.jl}"'},"​")],-1)),s("details",m,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.IncompressibleNavierStokes",href:"#IncompressibleNavierStokes.IncompressibleNavierStokes"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.IncompressibleNavierStokes")],-1)),e[1]||(e[1]=r()),a(i,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),e[2]||(e[2]=p('

Energy-conserving solvers for the incompressible Navier-Stokes equations.

Exports

The following symbols are exported by IncompressibleNavierStokes:

source

',5))])])}const f=o(c,[["render",v]]);export{I as __pageData,f as default}; diff --git a/previews/PR126/assets/about_license.md.BWGOXKn6.js b/previews/PR126/assets/about_license.md.CnnGAoVz.js similarity index 92% rename from previews/PR126/assets/about_license.md.BWGOXKn6.js rename to previews/PR126/assets/about_license.md.CnnGAoVz.js index d637c7f7..f4133491 100644 --- a/previews/PR126/assets/about_license.md.BWGOXKn6.js +++ b/previews/PR126/assets/about_license.md.CnnGAoVz.js @@ -1 +1 @@ -import{_ as n,c as i,j as t,a as s,G as r,B as a,o as l}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"License","description":"","frontmatter":{},"headers":[],"relativePath":"about/license.md","filePath":"about/license.md","lastUpdated":null}'),d={name:"about/license.md"},p={class:"jldocstring custom-block",open:""};function T(I,e,N,O,E,c){const o=a("Badge");return l(),i("div",null,[e[8]||(e[8]=t("h1",{id:"license",tabindex:"-1"},[s("License "),t("a",{class:"header-anchor",href:"#license","aria-label":'Permalink to "License"'},"​")],-1)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.license",href:"#IncompressibleNavierStokes.license"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.license")],-1)),e[1]||(e[1]=s()),r(o,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=t("p",null,"MIT License",-1)),e[3]||(e[3]=t("p",null,"Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors",-1)),e[4]||(e[4]=t("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1)),e[5]||(e[5]=t("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1)),e[6]||(e[6]=t("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1)),e[7]||(e[7]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/IncompressibleNavierStokes.jl#L56",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const S=n(d,[["render",T]]);export{u as __pageData,S as default}; +import{_ as n,c as i,j as t,a as s,G as r,B as a,o as l}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"License","description":"","frontmatter":{},"headers":[],"relativePath":"about/license.md","filePath":"about/license.md","lastUpdated":null}'),d={name:"about/license.md"},p={class:"jldocstring custom-block",open:""};function T(I,e,N,O,E,c){const o=a("Badge");return l(),i("div",null,[e[8]||(e[8]=t("h1",{id:"license",tabindex:"-1"},[s("License "),t("a",{class:"header-anchor",href:"#license","aria-label":'Permalink to "License"'},"​")],-1)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.license",href:"#IncompressibleNavierStokes.license"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.license")],-1)),e[1]||(e[1]=s()),r(o,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=t("p",null,"MIT License",-1)),e[3]||(e[3]=t("p",null,"Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors",-1)),e[4]||(e[4]=t("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1)),e[5]||(e[5]=t("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1)),e[6]||(e[6]=t("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1)),e[7]||(e[7]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/IncompressibleNavierStokes.jl#L56",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const S=n(d,[["render",T]]);export{u as __pageData,S as default}; diff --git a/previews/PR126/assets/about_license.md.BWGOXKn6.lean.js b/previews/PR126/assets/about_license.md.CnnGAoVz.lean.js similarity index 92% rename from previews/PR126/assets/about_license.md.BWGOXKn6.lean.js rename to previews/PR126/assets/about_license.md.CnnGAoVz.lean.js index d637c7f7..f4133491 100644 --- a/previews/PR126/assets/about_license.md.BWGOXKn6.lean.js +++ b/previews/PR126/assets/about_license.md.CnnGAoVz.lean.js @@ -1 +1 @@ -import{_ as n,c as i,j as t,a as s,G as r,B as a,o as l}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"License","description":"","frontmatter":{},"headers":[],"relativePath":"about/license.md","filePath":"about/license.md","lastUpdated":null}'),d={name:"about/license.md"},p={class:"jldocstring custom-block",open:""};function T(I,e,N,O,E,c){const o=a("Badge");return l(),i("div",null,[e[8]||(e[8]=t("h1",{id:"license",tabindex:"-1"},[s("License "),t("a",{class:"header-anchor",href:"#license","aria-label":'Permalink to "License"'},"​")],-1)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.license",href:"#IncompressibleNavierStokes.license"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.license")],-1)),e[1]||(e[1]=s()),r(o,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=t("p",null,"MIT License",-1)),e[3]||(e[3]=t("p",null,"Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors",-1)),e[4]||(e[4]=t("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1)),e[5]||(e[5]=t("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1)),e[6]||(e[6]=t("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1)),e[7]||(e[7]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/IncompressibleNavierStokes.jl#L56",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const S=n(d,[["render",T]]);export{u as __pageData,S as default}; +import{_ as n,c as i,j as t,a as s,G as r,B as a,o as l}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"License","description":"","frontmatter":{},"headers":[],"relativePath":"about/license.md","filePath":"about/license.md","lastUpdated":null}'),d={name:"about/license.md"},p={class:"jldocstring custom-block",open:""};function T(I,e,N,O,E,c){const o=a("Badge");return l(),i("div",null,[e[8]||(e[8]=t("h1",{id:"license",tabindex:"-1"},[s("License "),t("a",{class:"header-anchor",href:"#license","aria-label":'Permalink to "License"'},"​")],-1)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.license",href:"#IncompressibleNavierStokes.license"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.license")],-1)),e[1]||(e[1]=s()),r(o,{type:"info",class:"jlObjectType jlConstant",text:"Constant"})]),e[2]||(e[2]=t("p",null,"MIT License",-1)),e[3]||(e[3]=t("p",null,"Copyright (c) 2021 Syver Døving Agdestein, Benjamin Sanderse, and contributors",-1)),e[4]||(e[4]=t("p",null,'Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:',-1)),e[5]||(e[5]=t("p",null,"The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.",-1)),e[6]||(e[6]=t("p",null,'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.',-1)),e[7]||(e[7]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/IncompressibleNavierStokes.jl#L56",target:"_blank",rel:"noreferrer"},"source")],-1))])])}const S=n(d,[["render",T]]);export{u as __pageData,S as default}; diff --git a/previews/PR126/assets/about_versions.md.spYcSs0d.js b/previews/PR126/assets/about_versions.md.Ib_2zz2x.js similarity index 81% rename from previews/PR126/assets/about_versions.md.spYcSs0d.js rename to previews/PR126/assets/about_versions.md.Ib_2zz2x.js index 2a2608f6..737a61af 100644 --- a/previews/PR126/assets/about_versions.md.spYcSs0d.js +++ b/previews/PR126/assets/about_versions.md.Ib_2zz2x.js @@ -1,4 +1,4 @@ -import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b=JSON.parse('{"title":"Package versions","description":"","frontmatter":{},"headers":[],"relativePath":"about/versions.md","filePath":"about/versions.md","lastUpdated":null}'),e={name:"about/versions.md"};function i(c,s,v,t,r,d){return l(),a("div",null,s[0]||(s[0]=[p(`

Package versions

Julia version

The examples were generated with the following Julia version:

julia
using InteractiveUtils
+import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Package versions","description":"","frontmatter":{},"headers":[],"relativePath":"about/versions.md","filePath":"about/versions.md","lastUpdated":null}'),e={name:"about/versions.md"};function i(c,s,v,t,r,d){return l(),a("div",null,s[0]||(s[0]=[p(`

Package versions

Julia version

The examples were generated with the following Julia version:

julia
using InteractiveUtils
 InteractiveUtils.versioninfo()
Julia Version 1.11.2
 Commit 5e9a32e7af2 (2024-12-01 20:02 UTC)
 Build Info:
@@ -14,13 +14,13 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [a4c015fc] ANSIColoredPrinters v0.0.1
   [621f4979] AbstractFFTs v1.5.0
   [1520ce14] AbstractTrees v0.4.5
-  [7d9f7c33] Accessors v0.1.39
+  [7d9f7c33] Accessors v0.1.41
   [79e6a3ab] Adapt v4.1.1
   [35492f91] AdaptivePredicates v1.2.0
   [66dad0bd] AliasTables v1.1.3
   [27a7e980] Animations v0.4.2
   [dce04be8] ArgCheck v2.4.0
-  [4fba245c] ArrayInterface v7.17.1
+  [4fba245c] ArrayInterface v7.18.0
   [a9b6321e] Atomix v1.0.1
   [67c07d97] Automa v1.1.0
   [13072b0f] AxisAlgorithms v1.1.0
@@ -34,9 +34,9 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [fa961155] CEnum v0.5.0
   [2a0fbf3d] CPUSummary v0.2.6
   [159f3aea] Cairo v1.1.1
-  [13f3f980] CairoMakie v0.12.17
-  [082447d4] ChainRules v1.72.1
-  [d360d2e6] ChainRulesCore v1.25.0
+⌃ [13f3f980] CairoMakie v0.12.18
+  [082447d4] ChainRules v1.72.2
+  [d360d2e6] ChainRulesCore v1.25.1
   [fb6a15b2] CloseOpenIntervals v0.1.13
   [944b1d66] CodecZlib v0.7.6
   [a2cac450] ColorBrewer v0.4.0
@@ -48,7 +48,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [bbf7d656] CommonSubexpressions v0.3.1
   [f70d9fcc] CommonWorldInvalidations v1.0.0
   [34da2185] Compat v4.16.0
-  [b0b7db55] ComponentArrays v0.15.19
+  [b0b7db55] ComponentArrays v0.15.22
   [a33af91c] CompositionsBase v0.1.2
   [2569d6c7] ConcreteStructs v0.2.3
   [187b0558] ConstructionBase v1.5.8
@@ -61,23 +61,23 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [244e2a9f] DefineSingletons v0.1.2
   [927a84f5] DelaunayTriangulation v1.6.3
   [8bb1440f] DelimitedFiles v1.9.1
-  [2b5f629d] DiffEqBase v6.160.0
+  [2b5f629d] DiffEqBase v6.161.0
   [163ba53b] DiffResults v1.1.0
   [b552c78f] DiffRules v1.15.1
-  [8d63f2c5] DispatchDoctor v0.4.17
-  [31c24e10] Distributions v0.25.113
+  [8d63f2c5] DispatchDoctor v0.4.19
+  [31c24e10] Distributions v0.25.116
   [ffbed154] DocStringExtensions v0.9.3
   [e30172f5] Documenter v1.8.0
   [daee34ce] DocumenterCitations v1.3.5
-  [4710194d] DocumenterVitepress v0.1.3
+  [4710194d] DocumenterVitepress v0.1.6
   [4e289a0a] EnumX v1.0.4
-  [7da242da] Enzyme v0.13.21
+  [7da242da] Enzyme v0.13.28
   [f151be2c] EnzymeCore v0.8.8
   [429591f6] ExactPredicates v2.2.8
   [318dbb63] Examples v1.0.0 \`../examples\`
   [e2ba6199] ExprTools v0.1.10
 ⌅ [6b7a57c9] Expronicon v0.8.5
-  [411431e0] Extents v0.1.4
+  [411431e0] Extents v0.1.5
   [7a1cc6ca] FFTW v1.8.0
   [cc61a311] FLoops v0.2.2
   [b9860ae5] FLoopsBase v0.1.1
@@ -97,17 +97,18 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [77dc65aa] FunctionWrappersWrappers v0.1.3
   [d9f16b24] Functors v0.5.2
   [f7f18e0c] GLFW v3.4.3
-  [e9467ef8] GLMakie v0.10.17
-⌃ [0c68f7d7] GPUArrays v10.3.1
-⌅ [46192b85] GPUArraysCore v0.1.6
-  [61eb1bfa] GPUCompiler v1.0.1
-  [68eda718] GeoFormatTypes v0.4.2
-  [cf35fbd7] GeoInterface v1.3.8
+⌃ [e9467ef8] GLMakie v0.10.18
+  [0c68f7d7] GPUArrays v11.2.0
+  [46192b85] GPUArraysCore v0.2.0
+  [61eb1bfa] GPUCompiler v1.1.0
+  [68eda718] GeoFormatTypes v0.4.3
+  [cf35fbd7] GeoInterface v1.4.0
 ⌅ [5c1252a2] GeometryBasics v0.4.11
   [d7ba0133] Git v1.3.1
   [a2bd30eb] Graphics v1.1.3
   [3955a311] GridLayoutBase v0.11.1
   [42e2da0e] Grisu v1.0.2
+  [076d061b] HashArrayMappedTries v0.2.0
   [0e44f5e4] Hwloc v3.3.0
   [34004b35] HypergeometricFunctions v0.3.25
   [b5f81e59] IOCapture v0.2.5
@@ -118,12 +119,12 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [a09fc81d] ImageCore v0.10.5
   [82e4d734] ImageIO v0.6.9
   [bc367c6b] ImageMetadata v0.9.10
-  [5e318141] IncompressibleNavierStokes v2.1.0 \`..\`
+  [5e318141] IncompressibleNavierStokes v2.2.0 \`..\`
   [9b13fd28] IndirectArrays v1.0.0
   [d25df0c9] Inflate v0.1.5
   [22cec73e] InitialValues v0.3.1
   [a98d9a8b] Interpolations v0.15.1
-  [d1acc4aa] IntervalArithmetic v0.22.19
+  [d1acc4aa] IntervalArithmetic v0.22.21
   [8197267c] IntervalSets v0.7.10
   [3587e190] InverseFunctions v0.1.17
   [92d709cd] IrrationalConstants v0.2.2
@@ -131,8 +132,8 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [c8e1da08] IterTools v1.10.0
   [42fd0dbc] IterativeSolvers v0.9.4
   [82899510] IteratorInterfaceExtensions v1.0.0
-  [033835bb] JLD2 v0.5.10
-  [692b3bcd] JLLWrappers v1.6.1
+  [033835bb] JLD2 v0.5.11
+  [692b3bcd] JLLWrappers v1.7.0
   [682c06a0] JSON v0.21.4
   [0f8b85d8] JSON3 v1.14.1
   [7d188eb4] JSONSchema v1.4.1
@@ -147,16 +148,16 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [8cdb02fc] LazyModules v0.3.1
   [9c8b4983] LightXML v0.9.1
   [98b081ad] Literate v2.20.1
-  [2ab3a3ac] LogExpFunctions v0.3.28
-  [b2108857] Lux v1.4.1
-  [bb33d45b] LuxCore v1.2.1
-  [82251201] LuxLib v1.3.10
-  [7e8f7934] MLDataDevices v1.6.3
+  [2ab3a3ac] LogExpFunctions v0.3.29
+  [b2108857] Lux v1.5.1
+  [bb33d45b] LuxCore v1.2.2
+  [82251201] LuxLib v1.4.1
+  [7e8f7934] MLDataDevices v1.6.8
   [d8e11817] MLStyle v0.4.17
-  [f1d291b0] MLUtils v0.4.4
-  [1914dd2f] MacroTools v0.5.13
-  [ee78f7c6] Makie v0.21.17
-  [20f20a25] MakieCore v0.8.11
+  [f1d291b0] MLUtils v0.4.5
+  [1914dd2f] MacroTools v0.5.15
+⌅ [ee78f7c6] Makie v0.21.18
+⌅ [20f20a25] MakieCore v0.8.12
   [d125e4d3] ManualMemory v0.1.8
   [dbb5928d] MappedArrays v0.4.2
   [d0879d2d] MarkdownAST v0.1.2
@@ -167,18 +168,18 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [66fc600b] ModernGL v1.1.7
   [e94cdb99] MosaicViews v0.3.4
   [46d2c3a1] MuladdMacro v0.2.4
-  [872c559c] NNlib v0.9.26
-  [77ba4419] NaNMath v1.0.2
+  [872c559c] NNlib v0.9.27
+  [77ba4419] NaNMath v1.0.3
   [71a1bf82] NameResolution v0.1.5
   [f09324ee] Netpbm v1.1.1
   [099dac27] NeuralClosure v1.0.0 \`../lib/NeuralClosure\`
-  [d8793406] ObjectFile v0.4.2
+  [d8793406] ObjectFile v0.4.3
   [510215fc] Observables v0.5.5
-  [6fe1bfb0] OffsetArrays v1.14.2
+  [6fe1bfb0] OffsetArrays v1.15.0
   [52e1d378] OpenEXR v0.3.3
-  [3bd65402] Optimisers v0.4.1
+  [3bd65402] Optimisers v0.4.4
   [bac558e1] OrderedCollections v1.7.0
-  [bbf590c4] OrdinaryDiffEqCore v1.13.0
+  [bbf590c4] OrdinaryDiffEqCore v1.14.1
   [b1df2697] OrdinaryDiffEqTsit5 v1.1.0
   [90014a1f] PDMats v0.11.31
   [f57f5aa1] PNGFiles v0.4.3
@@ -211,11 +212,12 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [79098fc4] Rmath v0.8.0
   [5eaf0fd0] RoundingEmulator v0.2.1
   [7e49a35a] RuntimeGeneratedFunctions v0.5.13
-  [fdea26ae] SIMD v3.7.0
+  [fdea26ae] SIMD v3.7.1
   [94e857df] SIMDTypes v0.1.0
-  [0bca4576] SciMLBase v2.67.0
+  [0bca4576] SciMLBase v2.70.0
   [c0aeaf25] SciMLOperators v0.3.12
   [53ae85a6] SciMLStructures v1.6.1
+  [7e506255] ScopedValues v1.3.0
   [6c6a2e73] Scratch v1.2.1
   [efcf1570] Setfield v1.1.1
 ⌅ [65257c39] ShaderAbstractions v0.4.1
@@ -227,30 +229,30 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [45858cf5] Sixel v0.1.3
   [a2af1166] SortingAlgorithms v1.2.1
   [dc90abb0] SparseInverseSubset v0.1.2
-  [276daf66] SpecialFunctions v2.4.0
+  [276daf66] SpecialFunctions v2.5.0
   [171d559e] SplittablesBase v0.1.15
   [860ef19b] StableRNGs v1.0.2
   [cae243ae] StackViews v0.1.1
   [aedffcd0] Static v1.1.1
   [0d7ed370] StaticArrayInterface v1.8.0
-  [90137ffa] StaticArrays v1.9.8
+  [90137ffa] StaticArrays v1.9.10
   [1e83bf80] StaticArraysCore v1.4.3
   [10745b16] Statistics v1.11.1
   [82ae8749] StatsAPI v1.7.0
-  [2913bbd2] StatsBase v0.34.3
+  [2913bbd2] StatsBase v0.34.4
   [4c63d2b9] StatsFuns v1.3.2
   [7792a7ef] StrideArraysCore v0.5.7
   [69024149] StringEncodings v0.3.7
-⌅ [09ab397b] StructArrays v0.6.18
+⌅ [09ab397b] StructArrays v0.6.21
   [53d494c1] StructIO v0.3.1
   [856f2bd8] StructTypes v1.11.0
-  [2efcf032] SymbolicIndexingInterface v0.3.36
+  [2efcf032] SymbolicIndexingInterface v0.3.37
   [3783bdb8] TableTraits v1.0.1
   [bd369af6] Tables v1.12.0
   [62fd8b95] TensorCore v0.1.1
   [1c621080] TestItems v1.0.0
   [8290d209] ThreadingUtilities v0.5.2
-  [731e570b] TiffImages v0.11.1
+  [731e570b] TiffImages v0.11.2
   [a759f4b9] TimerOutputs v0.5.26
   [3bb67fe8] TranscodingStreams v0.11.3
   [28d57a85] Transducers v0.4.84
@@ -259,98 +261,98 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [5c2747f8] URIs v1.5.1
   [3a884ed6] UnPack v1.0.2
   [1cfade01] UnicodeFun v0.4.1
-  [1986cc42] Unitful v1.21.1
-  [013be700] UnsafeAtomics v0.2.1
+  [1986cc42] Unitful v1.22.0
+  [013be700] UnsafeAtomics v0.3.0
   [4004b06d] VTKBase v1.0.1
   [e3aaa7dc] WebP v0.1.3
-  [d49dbf32] WeightInitializers v1.0.4
+  [d49dbf32] WeightInitializers v1.1.1
   [efce3f68] WoodburyMatrices v1.0.0
   [64499a7a] WriteVTK v1.21.1
   [ddb6d928] YAML v0.4.12
-  [e88e6eb3] Zygote v0.6.73
+⌃ [e88e6eb3] Zygote v0.6.75
   [700de1a5] ZygoteRules v0.2.5
-  [6e34b625] Bzip2_jll v1.0.8+2
+  [6e34b625] Bzip2_jll v1.0.8+4
   [4e9b3aee] CRlibm_jll v1.0.1+0
   [83423d85] Cairo_jll v1.18.2+1
   [ee1fde0b] Dbus_jll v1.14.10+0
   [5ae413db] EarCut_jll v2.2.4+0
-  [7cc45869] Enzyme_jll v0.0.168+0
+  [7cc45869] Enzyme_jll v0.0.172+0
   [2702e6a9] EpollShim_jll v0.0.20230411+1
-  [2e619515] Expat_jll v2.6.4+1
+  [2e619515] Expat_jll v2.6.4+3
   [b22a6f82] FFMPEG_jll v6.1.2+0
-  [f5851436] FFTW_jll v3.3.10+1
+  [f5851436] FFTW_jll v3.3.10+3
   [a3f928ae] Fontconfig_jll v2.15.0+0
   [d7e528f0] FreeType2_jll v2.13.3+1
-  [559328eb] FriBidi_jll v1.0.14+0
-  [0656b61e] GLFW_jll v3.4.0+1
+  [559328eb] FriBidi_jll v1.0.16+0
+  [0656b61e] GLFW_jll v3.4.0+2
   [78b55507] Gettext_jll v0.21.0+0
-  [59f7168a] Giflib_jll v5.2.2+0
+  [59f7168a] Giflib_jll v5.2.3+0
   [f8c6e375] Git_jll v2.47.1+0
-  [7746bdde] Glib_jll v2.82.2+1
+  [7746bdde] Glib_jll v2.82.4+0
   [3b182d85] Graphite2_jll v1.3.14+1
   [2e76f6c2] HarfBuzz_jll v8.5.0+0
-  [e33a78d0] Hwloc_jll v2.11.2+1
+  [e33a78d0] Hwloc_jll v2.11.2+3
   [905a6f67] Imath_jll v3.1.11+0
   [1d5cc7b8] IntelOpenMP_jll v2024.2.1+0
-  [aacddb02] JpegTurbo_jll v3.0.4+0
+  [aacddb02] JpegTurbo_jll v3.1.1+0
   [c1c5ebd0] LAME_jll v3.100.2+0
-  [88015f11] LERC_jll v4.0.0+0
+  [88015f11] LERC_jll v4.0.1+0
   [dad2f222] LLVMExtra_jll v0.0.34+0
   [1d63c593] LLVMOpenMP_jll v18.1.7+0
-  [dd4b983a] LZO_jll v2.10.2+1
-⌅ [e9f186c6] Libffi_jll v3.2.2+1
+  [dd4b983a] LZO_jll v2.10.3+0
+⌅ [e9f186c6] Libffi_jll v3.2.2+2
   [d4300ac3] Libgcrypt_jll v1.11.0+0
   [7e76a0d4] Libglvnd_jll v1.7.0+0
-  [7add5ba3] Libgpg_error_jll v1.50.0+0
-  [94ce4f54] Libiconv_jll v1.17.0+1
-  [4b2f31a3] Libmount_jll v2.40.2+0
-  [89763e89] Libtiff_jll v4.7.0+0
-  [38a345b3] Libuuid_jll v2.40.2+0
+  [7add5ba3] Libgpg_error_jll v1.51.1+0
+  [94ce4f54] Libiconv_jll v1.18.0+0
+  [4b2f31a3] Libmount_jll v2.40.3+0
+  [89763e89] Libtiff_jll v4.7.1+0
+  [38a345b3] Libuuid_jll v2.40.3+0
   [856f044c] MKL_jll v2024.2.0+0
   [c7aee132] NodeJS_20_jll v20.12.2+0
   [e7412a2a] Ogg_jll v1.3.5+1
   [18a262bb] OpenEXR_jll v3.2.4+0
-  [458c3c95] OpenSSL_jll v3.0.15+1
-  [efe28fd5] OpenSpecFun_jll v0.5.5+0
+  [458c3c95] OpenSSL_jll v3.0.15+3
+  [efe28fd5] OpenSpecFun_jll v0.5.6+0
   [91d4177d] Opus_jll v1.3.3+0
-  [36c8627f] Pango_jll v1.54.1+0
+  [36c8627f] Pango_jll v1.55.5+0
 ⌅ [30392449] Pixman_jll v0.43.4+0
   [f50d1b31] Rmath_jll v0.5.1+0
-  [a2964d1f] Wayland_jll v1.21.0+1
-  [2381bf8a] Wayland_protocols_jll v1.31.0+0
+  [a2964d1f] Wayland_jll v1.21.0+2
+  [2381bf8a] Wayland_protocols_jll v1.36.0+0
   [02c8fc9c] XML2_jll v2.13.5+0
   [aed1982a] XSLT_jll v1.1.42+0
-  [ffd25f8a] XZ_jll v5.6.3+0
-  [4f6342f7] Xorg_libX11_jll v1.8.6+1
-  [0c0b7dd1] Xorg_libXau_jll v1.0.11+1
-  [935fb764] Xorg_libXcursor_jll v1.2.0+4
-  [a3789734] Xorg_libXdmcp_jll v1.1.4+1
-  [1082639a] Xorg_libXext_jll v1.3.6+1
-  [d091e8ba] Xorg_libXfixes_jll v5.0.3+4
-  [a51aa0fd] Xorg_libXi_jll v1.7.10+4
-  [d1454406] Xorg_libXinerama_jll v1.1.4+4
-  [ec84b674] Xorg_libXrandr_jll v1.5.2+4
-  [ea2f1a96] Xorg_libXrender_jll v0.9.11+0
-  [14d82f49] Xorg_libpthread_stubs_jll v0.1.1+1
-  [c7cfdc94] Xorg_libxcb_jll v1.17.0+1
-  [cc61e674] Xorg_libxkbfile_jll v1.1.2+0
-  [35661453] Xorg_xkbcomp_jll v1.4.6+0
+  [ffd25f8a] XZ_jll v5.6.4+0
+  [4f6342f7] Xorg_libX11_jll v1.8.6+3
+  [0c0b7dd1] Xorg_libXau_jll v1.0.12+0
+  [935fb764] Xorg_libXcursor_jll v1.2.3+0
+  [a3789734] Xorg_libXdmcp_jll v1.1.5+0
+  [1082639a] Xorg_libXext_jll v1.3.6+3
+  [d091e8ba] Xorg_libXfixes_jll v6.0.0+0
+  [a51aa0fd] Xorg_libXi_jll v1.8.2+0
+  [d1454406] Xorg_libXinerama_jll v1.1.5+0
+  [ec84b674] Xorg_libXrandr_jll v1.5.4+0
+  [ea2f1a96] Xorg_libXrender_jll v0.9.11+1
+  [14d82f49] Xorg_libpthread_stubs_jll v0.1.2+0
+  [c7cfdc94] Xorg_libxcb_jll v1.17.0+3
+  [cc61e674] Xorg_libxkbfile_jll v1.1.2+1
+  [35661453] Xorg_xkbcomp_jll v1.4.6+1
   [33bec58e] Xorg_xkeyboard_config_jll v2.39.0+0
-  [c5fb5394] Xorg_xtrans_jll v1.5.0+1
-  [3161d3a3] Zstd_jll v1.5.6+1
+  [c5fb5394] Xorg_xtrans_jll v1.5.1+0
+  [3161d3a3] Zstd_jll v1.5.7+0
   [9a68df92] isoband_jll v0.2.3+0
-  [a4ae2306] libaom_jll v3.9.0+0
+  [a4ae2306] libaom_jll v3.11.0+0
   [0ac62f75] libass_jll v0.15.2+0
   [1183f4f0] libdecor_jll v0.2.2+0
   [f638f0a6] libfdk_aac_jll v2.0.3+0
-  [b53b4c65] libpng_jll v1.6.44+0
-  [075b6546] libsixel_jll v1.10.3+1
+  [b53b4c65] libpng_jll v1.6.45+1
+  [075b6546] libsixel_jll v1.10.4+1
   [f27f6e37] libvorbis_jll v1.3.7+2
-  [c5f90fcd] libwebp_jll v1.4.0+0
+  [c5f90fcd] libwebp_jll v1.5.0+0
   [1317d2d5] oneTBB_jll v2021.12.0+0
-  [1270edf5] x264_jll v10164.0.0+0
+  [1270edf5] x264_jll v10164.0.1+0
 ⌅ [dfaa095f] x265_jll v3.6.0+0
-  [d8fb68d0] xkbcommon_jll v1.4.1+1
+  [d8fb68d0] xkbcommon_jll v1.4.1+2
   [0dad84c5] ArgTools v1.1.2
   [56f22d72] Artifacts v1.11.0
   [2a0f44e3] Base64 v1.11.0
diff --git a/previews/PR126/assets/about_versions.md.spYcSs0d.lean.js b/previews/PR126/assets/about_versions.md.Ib_2zz2x.lean.js
similarity index 81%
rename from previews/PR126/assets/about_versions.md.spYcSs0d.lean.js
rename to previews/PR126/assets/about_versions.md.Ib_2zz2x.lean.js
index 2a2608f6..737a61af 100644
--- a/previews/PR126/assets/about_versions.md.spYcSs0d.lean.js
+++ b/previews/PR126/assets/about_versions.md.Ib_2zz2x.lean.js
@@ -1,4 +1,4 @@
-import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b=JSON.parse('{"title":"Package versions","description":"","frontmatter":{},"headers":[],"relativePath":"about/versions.md","filePath":"about/versions.md","lastUpdated":null}'),e={name:"about/versions.md"};function i(c,s,v,t,r,d){return l(),a("div",null,s[0]||(s[0]=[p(`

Package versions

Julia version

The examples were generated with the following Julia version:

julia
using InteractiveUtils
+import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Package versions","description":"","frontmatter":{},"headers":[],"relativePath":"about/versions.md","filePath":"about/versions.md","lastUpdated":null}'),e={name:"about/versions.md"};function i(c,s,v,t,r,d){return l(),a("div",null,s[0]||(s[0]=[p(`

Package versions

Julia version

The examples were generated with the following Julia version:

julia
using InteractiveUtils
 InteractiveUtils.versioninfo()
Julia Version 1.11.2
 Commit 5e9a32e7af2 (2024-12-01 20:02 UTC)
 Build Info:
@@ -14,13 +14,13 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [a4c015fc] ANSIColoredPrinters v0.0.1
   [621f4979] AbstractFFTs v1.5.0
   [1520ce14] AbstractTrees v0.4.5
-  [7d9f7c33] Accessors v0.1.39
+  [7d9f7c33] Accessors v0.1.41
   [79e6a3ab] Adapt v4.1.1
   [35492f91] AdaptivePredicates v1.2.0
   [66dad0bd] AliasTables v1.1.3
   [27a7e980] Animations v0.4.2
   [dce04be8] ArgCheck v2.4.0
-  [4fba245c] ArrayInterface v7.17.1
+  [4fba245c] ArrayInterface v7.18.0
   [a9b6321e] Atomix v1.0.1
   [67c07d97] Automa v1.1.0
   [13072b0f] AxisAlgorithms v1.1.0
@@ -34,9 +34,9 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [fa961155] CEnum v0.5.0
   [2a0fbf3d] CPUSummary v0.2.6
   [159f3aea] Cairo v1.1.1
-  [13f3f980] CairoMakie v0.12.17
-  [082447d4] ChainRules v1.72.1
-  [d360d2e6] ChainRulesCore v1.25.0
+⌃ [13f3f980] CairoMakie v0.12.18
+  [082447d4] ChainRules v1.72.2
+  [d360d2e6] ChainRulesCore v1.25.1
   [fb6a15b2] CloseOpenIntervals v0.1.13
   [944b1d66] CodecZlib v0.7.6
   [a2cac450] ColorBrewer v0.4.0
@@ -48,7 +48,7 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [bbf7d656] CommonSubexpressions v0.3.1
   [f70d9fcc] CommonWorldInvalidations v1.0.0
   [34da2185] Compat v4.16.0
-  [b0b7db55] ComponentArrays v0.15.19
+  [b0b7db55] ComponentArrays v0.15.22
   [a33af91c] CompositionsBase v0.1.2
   [2569d6c7] ConcreteStructs v0.2.3
   [187b0558] ConstructionBase v1.5.8
@@ -61,23 +61,23 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [244e2a9f] DefineSingletons v0.1.2
   [927a84f5] DelaunayTriangulation v1.6.3
   [8bb1440f] DelimitedFiles v1.9.1
-  [2b5f629d] DiffEqBase v6.160.0
+  [2b5f629d] DiffEqBase v6.161.0
   [163ba53b] DiffResults v1.1.0
   [b552c78f] DiffRules v1.15.1
-  [8d63f2c5] DispatchDoctor v0.4.17
-  [31c24e10] Distributions v0.25.113
+  [8d63f2c5] DispatchDoctor v0.4.19
+  [31c24e10] Distributions v0.25.116
   [ffbed154] DocStringExtensions v0.9.3
   [e30172f5] Documenter v1.8.0
   [daee34ce] DocumenterCitations v1.3.5
-  [4710194d] DocumenterVitepress v0.1.3
+  [4710194d] DocumenterVitepress v0.1.6
   [4e289a0a] EnumX v1.0.4
-  [7da242da] Enzyme v0.13.21
+  [7da242da] Enzyme v0.13.28
   [f151be2c] EnzymeCore v0.8.8
   [429591f6] ExactPredicates v2.2.8
   [318dbb63] Examples v1.0.0 \`../examples\`
   [e2ba6199] ExprTools v0.1.10
 ⌅ [6b7a57c9] Expronicon v0.8.5
-  [411431e0] Extents v0.1.4
+  [411431e0] Extents v0.1.5
   [7a1cc6ca] FFTW v1.8.0
   [cc61a311] FLoops v0.2.2
   [b9860ae5] FLoopsBase v0.1.1
@@ -97,17 +97,18 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [77dc65aa] FunctionWrappersWrappers v0.1.3
   [d9f16b24] Functors v0.5.2
   [f7f18e0c] GLFW v3.4.3
-  [e9467ef8] GLMakie v0.10.17
-⌃ [0c68f7d7] GPUArrays v10.3.1
-⌅ [46192b85] GPUArraysCore v0.1.6
-  [61eb1bfa] GPUCompiler v1.0.1
-  [68eda718] GeoFormatTypes v0.4.2
-  [cf35fbd7] GeoInterface v1.3.8
+⌃ [e9467ef8] GLMakie v0.10.18
+  [0c68f7d7] GPUArrays v11.2.0
+  [46192b85] GPUArraysCore v0.2.0
+  [61eb1bfa] GPUCompiler v1.1.0
+  [68eda718] GeoFormatTypes v0.4.3
+  [cf35fbd7] GeoInterface v1.4.0
 ⌅ [5c1252a2] GeometryBasics v0.4.11
   [d7ba0133] Git v1.3.1
   [a2bd30eb] Graphics v1.1.3
   [3955a311] GridLayoutBase v0.11.1
   [42e2da0e] Grisu v1.0.2
+  [076d061b] HashArrayMappedTries v0.2.0
   [0e44f5e4] Hwloc v3.3.0
   [34004b35] HypergeometricFunctions v0.3.25
   [b5f81e59] IOCapture v0.2.5
@@ -118,12 +119,12 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [a09fc81d] ImageCore v0.10.5
   [82e4d734] ImageIO v0.6.9
   [bc367c6b] ImageMetadata v0.9.10
-  [5e318141] IncompressibleNavierStokes v2.1.0 \`..\`
+  [5e318141] IncompressibleNavierStokes v2.2.0 \`..\`
   [9b13fd28] IndirectArrays v1.0.0
   [d25df0c9] Inflate v0.1.5
   [22cec73e] InitialValues v0.3.1
   [a98d9a8b] Interpolations v0.15.1
-  [d1acc4aa] IntervalArithmetic v0.22.19
+  [d1acc4aa] IntervalArithmetic v0.22.21
   [8197267c] IntervalSets v0.7.10
   [3587e190] InverseFunctions v0.1.17
   [92d709cd] IrrationalConstants v0.2.2
@@ -131,8 +132,8 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [c8e1da08] IterTools v1.10.0
   [42fd0dbc] IterativeSolvers v0.9.4
   [82899510] IteratorInterfaceExtensions v1.0.0
-  [033835bb] JLD2 v0.5.10
-  [692b3bcd] JLLWrappers v1.6.1
+  [033835bb] JLD2 v0.5.11
+  [692b3bcd] JLLWrappers v1.7.0
   [682c06a0] JSON v0.21.4
   [0f8b85d8] JSON3 v1.14.1
   [7d188eb4] JSONSchema v1.4.1
@@ -147,16 +148,16 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [8cdb02fc] LazyModules v0.3.1
   [9c8b4983] LightXML v0.9.1
   [98b081ad] Literate v2.20.1
-  [2ab3a3ac] LogExpFunctions v0.3.28
-  [b2108857] Lux v1.4.1
-  [bb33d45b] LuxCore v1.2.1
-  [82251201] LuxLib v1.3.10
-  [7e8f7934] MLDataDevices v1.6.3
+  [2ab3a3ac] LogExpFunctions v0.3.29
+  [b2108857] Lux v1.5.1
+  [bb33d45b] LuxCore v1.2.2
+  [82251201] LuxLib v1.4.1
+  [7e8f7934] MLDataDevices v1.6.8
   [d8e11817] MLStyle v0.4.17
-  [f1d291b0] MLUtils v0.4.4
-  [1914dd2f] MacroTools v0.5.13
-  [ee78f7c6] Makie v0.21.17
-  [20f20a25] MakieCore v0.8.11
+  [f1d291b0] MLUtils v0.4.5
+  [1914dd2f] MacroTools v0.5.15
+⌅ [ee78f7c6] Makie v0.21.18
+⌅ [20f20a25] MakieCore v0.8.12
   [d125e4d3] ManualMemory v0.1.8
   [dbb5928d] MappedArrays v0.4.2
   [d0879d2d] MarkdownAST v0.1.2
@@ -167,18 +168,18 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [66fc600b] ModernGL v1.1.7
   [e94cdb99] MosaicViews v0.3.4
   [46d2c3a1] MuladdMacro v0.2.4
-  [872c559c] NNlib v0.9.26
-  [77ba4419] NaNMath v1.0.2
+  [872c559c] NNlib v0.9.27
+  [77ba4419] NaNMath v1.0.3
   [71a1bf82] NameResolution v0.1.5
   [f09324ee] Netpbm v1.1.1
   [099dac27] NeuralClosure v1.0.0 \`../lib/NeuralClosure\`
-  [d8793406] ObjectFile v0.4.2
+  [d8793406] ObjectFile v0.4.3
   [510215fc] Observables v0.5.5
-  [6fe1bfb0] OffsetArrays v1.14.2
+  [6fe1bfb0] OffsetArrays v1.15.0
   [52e1d378] OpenEXR v0.3.3
-  [3bd65402] Optimisers v0.4.1
+  [3bd65402] Optimisers v0.4.4
   [bac558e1] OrderedCollections v1.7.0
-  [bbf590c4] OrdinaryDiffEqCore v1.13.0
+  [bbf590c4] OrdinaryDiffEqCore v1.14.1
   [b1df2697] OrdinaryDiffEqTsit5 v1.1.0
   [90014a1f] PDMats v0.11.31
   [f57f5aa1] PNGFiles v0.4.3
@@ -211,11 +212,12 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [79098fc4] Rmath v0.8.0
   [5eaf0fd0] RoundingEmulator v0.2.1
   [7e49a35a] RuntimeGeneratedFunctions v0.5.13
-  [fdea26ae] SIMD v3.7.0
+  [fdea26ae] SIMD v3.7.1
   [94e857df] SIMDTypes v0.1.0
-  [0bca4576] SciMLBase v2.67.0
+  [0bca4576] SciMLBase v2.70.0
   [c0aeaf25] SciMLOperators v0.3.12
   [53ae85a6] SciMLStructures v1.6.1
+  [7e506255] ScopedValues v1.3.0
   [6c6a2e73] Scratch v1.2.1
   [efcf1570] Setfield v1.1.1
 ⌅ [65257c39] ShaderAbstractions v0.4.1
@@ -227,30 +229,30 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [45858cf5] Sixel v0.1.3
   [a2af1166] SortingAlgorithms v1.2.1
   [dc90abb0] SparseInverseSubset v0.1.2
-  [276daf66] SpecialFunctions v2.4.0
+  [276daf66] SpecialFunctions v2.5.0
   [171d559e] SplittablesBase v0.1.15
   [860ef19b] StableRNGs v1.0.2
   [cae243ae] StackViews v0.1.1
   [aedffcd0] Static v1.1.1
   [0d7ed370] StaticArrayInterface v1.8.0
-  [90137ffa] StaticArrays v1.9.8
+  [90137ffa] StaticArrays v1.9.10
   [1e83bf80] StaticArraysCore v1.4.3
   [10745b16] Statistics v1.11.1
   [82ae8749] StatsAPI v1.7.0
-  [2913bbd2] StatsBase v0.34.3
+  [2913bbd2] StatsBase v0.34.4
   [4c63d2b9] StatsFuns v1.3.2
   [7792a7ef] StrideArraysCore v0.5.7
   [69024149] StringEncodings v0.3.7
-⌅ [09ab397b] StructArrays v0.6.18
+⌅ [09ab397b] StructArrays v0.6.21
   [53d494c1] StructIO v0.3.1
   [856f2bd8] StructTypes v1.11.0
-  [2efcf032] SymbolicIndexingInterface v0.3.36
+  [2efcf032] SymbolicIndexingInterface v0.3.37
   [3783bdb8] TableTraits v1.0.1
   [bd369af6] Tables v1.12.0
   [62fd8b95] TensorCore v0.1.1
   [1c621080] TestItems v1.0.0
   [8290d209] ThreadingUtilities v0.5.2
-  [731e570b] TiffImages v0.11.1
+  [731e570b] TiffImages v0.11.2
   [a759f4b9] TimerOutputs v0.5.26
   [3bb67fe8] TranscodingStreams v0.11.3
   [28d57a85] Transducers v0.4.84
@@ -259,98 +261,98 @@ import{_ as n,c as a,a5 as p,o as l}from"./chunks/framework.BSoZtefh.js";const b
   [5c2747f8] URIs v1.5.1
   [3a884ed6] UnPack v1.0.2
   [1cfade01] UnicodeFun v0.4.1
-  [1986cc42] Unitful v1.21.1
-  [013be700] UnsafeAtomics v0.2.1
+  [1986cc42] Unitful v1.22.0
+  [013be700] UnsafeAtomics v0.3.0
   [4004b06d] VTKBase v1.0.1
   [e3aaa7dc] WebP v0.1.3
-  [d49dbf32] WeightInitializers v1.0.4
+  [d49dbf32] WeightInitializers v1.1.1
   [efce3f68] WoodburyMatrices v1.0.0
   [64499a7a] WriteVTK v1.21.1
   [ddb6d928] YAML v0.4.12
-  [e88e6eb3] Zygote v0.6.73
+⌃ [e88e6eb3] Zygote v0.6.75
   [700de1a5] ZygoteRules v0.2.5
-  [6e34b625] Bzip2_jll v1.0.8+2
+  [6e34b625] Bzip2_jll v1.0.8+4
   [4e9b3aee] CRlibm_jll v1.0.1+0
   [83423d85] Cairo_jll v1.18.2+1
   [ee1fde0b] Dbus_jll v1.14.10+0
   [5ae413db] EarCut_jll v2.2.4+0
-  [7cc45869] Enzyme_jll v0.0.168+0
+  [7cc45869] Enzyme_jll v0.0.172+0
   [2702e6a9] EpollShim_jll v0.0.20230411+1
-  [2e619515] Expat_jll v2.6.4+1
+  [2e619515] Expat_jll v2.6.4+3
   [b22a6f82] FFMPEG_jll v6.1.2+0
-  [f5851436] FFTW_jll v3.3.10+1
+  [f5851436] FFTW_jll v3.3.10+3
   [a3f928ae] Fontconfig_jll v2.15.0+0
   [d7e528f0] FreeType2_jll v2.13.3+1
-  [559328eb] FriBidi_jll v1.0.14+0
-  [0656b61e] GLFW_jll v3.4.0+1
+  [559328eb] FriBidi_jll v1.0.16+0
+  [0656b61e] GLFW_jll v3.4.0+2
   [78b55507] Gettext_jll v0.21.0+0
-  [59f7168a] Giflib_jll v5.2.2+0
+  [59f7168a] Giflib_jll v5.2.3+0
   [f8c6e375] Git_jll v2.47.1+0
-  [7746bdde] Glib_jll v2.82.2+1
+  [7746bdde] Glib_jll v2.82.4+0
   [3b182d85] Graphite2_jll v1.3.14+1
   [2e76f6c2] HarfBuzz_jll v8.5.0+0
-  [e33a78d0] Hwloc_jll v2.11.2+1
+  [e33a78d0] Hwloc_jll v2.11.2+3
   [905a6f67] Imath_jll v3.1.11+0
   [1d5cc7b8] IntelOpenMP_jll v2024.2.1+0
-  [aacddb02] JpegTurbo_jll v3.0.4+0
+  [aacddb02] JpegTurbo_jll v3.1.1+0
   [c1c5ebd0] LAME_jll v3.100.2+0
-  [88015f11] LERC_jll v4.0.0+0
+  [88015f11] LERC_jll v4.0.1+0
   [dad2f222] LLVMExtra_jll v0.0.34+0
   [1d63c593] LLVMOpenMP_jll v18.1.7+0
-  [dd4b983a] LZO_jll v2.10.2+1
-⌅ [e9f186c6] Libffi_jll v3.2.2+1
+  [dd4b983a] LZO_jll v2.10.3+0
+⌅ [e9f186c6] Libffi_jll v3.2.2+2
   [d4300ac3] Libgcrypt_jll v1.11.0+0
   [7e76a0d4] Libglvnd_jll v1.7.0+0
-  [7add5ba3] Libgpg_error_jll v1.50.0+0
-  [94ce4f54] Libiconv_jll v1.17.0+1
-  [4b2f31a3] Libmount_jll v2.40.2+0
-  [89763e89] Libtiff_jll v4.7.0+0
-  [38a345b3] Libuuid_jll v2.40.2+0
+  [7add5ba3] Libgpg_error_jll v1.51.1+0
+  [94ce4f54] Libiconv_jll v1.18.0+0
+  [4b2f31a3] Libmount_jll v2.40.3+0
+  [89763e89] Libtiff_jll v4.7.1+0
+  [38a345b3] Libuuid_jll v2.40.3+0
   [856f044c] MKL_jll v2024.2.0+0
   [c7aee132] NodeJS_20_jll v20.12.2+0
   [e7412a2a] Ogg_jll v1.3.5+1
   [18a262bb] OpenEXR_jll v3.2.4+0
-  [458c3c95] OpenSSL_jll v3.0.15+1
-  [efe28fd5] OpenSpecFun_jll v0.5.5+0
+  [458c3c95] OpenSSL_jll v3.0.15+3
+  [efe28fd5] OpenSpecFun_jll v0.5.6+0
   [91d4177d] Opus_jll v1.3.3+0
-  [36c8627f] Pango_jll v1.54.1+0
+  [36c8627f] Pango_jll v1.55.5+0
 ⌅ [30392449] Pixman_jll v0.43.4+0
   [f50d1b31] Rmath_jll v0.5.1+0
-  [a2964d1f] Wayland_jll v1.21.0+1
-  [2381bf8a] Wayland_protocols_jll v1.31.0+0
+  [a2964d1f] Wayland_jll v1.21.0+2
+  [2381bf8a] Wayland_protocols_jll v1.36.0+0
   [02c8fc9c] XML2_jll v2.13.5+0
   [aed1982a] XSLT_jll v1.1.42+0
-  [ffd25f8a] XZ_jll v5.6.3+0
-  [4f6342f7] Xorg_libX11_jll v1.8.6+1
-  [0c0b7dd1] Xorg_libXau_jll v1.0.11+1
-  [935fb764] Xorg_libXcursor_jll v1.2.0+4
-  [a3789734] Xorg_libXdmcp_jll v1.1.4+1
-  [1082639a] Xorg_libXext_jll v1.3.6+1
-  [d091e8ba] Xorg_libXfixes_jll v5.0.3+4
-  [a51aa0fd] Xorg_libXi_jll v1.7.10+4
-  [d1454406] Xorg_libXinerama_jll v1.1.4+4
-  [ec84b674] Xorg_libXrandr_jll v1.5.2+4
-  [ea2f1a96] Xorg_libXrender_jll v0.9.11+0
-  [14d82f49] Xorg_libpthread_stubs_jll v0.1.1+1
-  [c7cfdc94] Xorg_libxcb_jll v1.17.0+1
-  [cc61e674] Xorg_libxkbfile_jll v1.1.2+0
-  [35661453] Xorg_xkbcomp_jll v1.4.6+0
+  [ffd25f8a] XZ_jll v5.6.4+0
+  [4f6342f7] Xorg_libX11_jll v1.8.6+3
+  [0c0b7dd1] Xorg_libXau_jll v1.0.12+0
+  [935fb764] Xorg_libXcursor_jll v1.2.3+0
+  [a3789734] Xorg_libXdmcp_jll v1.1.5+0
+  [1082639a] Xorg_libXext_jll v1.3.6+3
+  [d091e8ba] Xorg_libXfixes_jll v6.0.0+0
+  [a51aa0fd] Xorg_libXi_jll v1.8.2+0
+  [d1454406] Xorg_libXinerama_jll v1.1.5+0
+  [ec84b674] Xorg_libXrandr_jll v1.5.4+0
+  [ea2f1a96] Xorg_libXrender_jll v0.9.11+1
+  [14d82f49] Xorg_libpthread_stubs_jll v0.1.2+0
+  [c7cfdc94] Xorg_libxcb_jll v1.17.0+3
+  [cc61e674] Xorg_libxkbfile_jll v1.1.2+1
+  [35661453] Xorg_xkbcomp_jll v1.4.6+1
   [33bec58e] Xorg_xkeyboard_config_jll v2.39.0+0
-  [c5fb5394] Xorg_xtrans_jll v1.5.0+1
-  [3161d3a3] Zstd_jll v1.5.6+1
+  [c5fb5394] Xorg_xtrans_jll v1.5.1+0
+  [3161d3a3] Zstd_jll v1.5.7+0
   [9a68df92] isoband_jll v0.2.3+0
-  [a4ae2306] libaom_jll v3.9.0+0
+  [a4ae2306] libaom_jll v3.11.0+0
   [0ac62f75] libass_jll v0.15.2+0
   [1183f4f0] libdecor_jll v0.2.2+0
   [f638f0a6] libfdk_aac_jll v2.0.3+0
-  [b53b4c65] libpng_jll v1.6.44+0
-  [075b6546] libsixel_jll v1.10.3+1
+  [b53b4c65] libpng_jll v1.6.45+1
+  [075b6546] libsixel_jll v1.10.4+1
   [f27f6e37] libvorbis_jll v1.3.7+2
-  [c5f90fcd] libwebp_jll v1.4.0+0
+  [c5f90fcd] libwebp_jll v1.5.0+0
   [1317d2d5] oneTBB_jll v2021.12.0+0
-  [1270edf5] x264_jll v10164.0.0+0
+  [1270edf5] x264_jll v10164.0.1+0
 ⌅ [dfaa095f] x265_jll v3.6.0+0
-  [d8fb68d0] xkbcommon_jll v1.4.1+1
+  [d8fb68d0] xkbcommon_jll v1.4.1+2
   [0dad84c5] ArgTools v1.1.2
   [56f22d72] Artifacts v1.11.0
   [2a0f44e3] Base64 v1.11.0
diff --git a/previews/PR126/assets/app.C73YOZ2t.js b/previews/PR126/assets/app.BPC_4jeU.js
similarity index 90%
rename from previews/PR126/assets/app.C73YOZ2t.js
rename to previews/PR126/assets/app.BPC_4jeU.js
index 03bd6a97..d476d830 100644
--- a/previews/PR126/assets/app.C73YOZ2t.js
+++ b/previews/PR126/assets/app.BPC_4jeU.js
@@ -1 +1 @@
-import{R as p}from"./chunks/theme.CgVVWsvL.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.BSoZtefh.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
+import{R as p}from"./chunks/theme.Cq6vZMMO.js";import{R as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as v,d as P,u as R,v as w,s as y,ag as C,ah as b,ai as E,a4 as S}from"./chunks/framework.CojPSOJE.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=R();return w(()=>{y(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&C(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=v(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
diff --git a/previews/PR126/assets/aqsfkdr.B0sBqA42.png b/previews/PR126/assets/aqsfkdr.B0sBqA42.png
deleted file mode 100644
index ea51209c..00000000
Binary files a/previews/PR126/assets/aqsfkdr.B0sBqA42.png and /dev/null differ
diff --git a/previews/PR126/assets/cellnff.CfNIkngZ.png b/previews/PR126/assets/cellnff.CfNIkngZ.png
deleted file mode 100644
index 2b7b76e9..00000000
Binary files a/previews/PR126/assets/cellnff.CfNIkngZ.png and /dev/null differ
diff --git a/previews/PR126/assets/chunks/@localSearchIndexroot.BCSyAezw.js b/previews/PR126/assets/chunks/@localSearchIndexroot.BCSyAezw.js
new file mode 100644
index 00000000..02658ab7
--- /dev/null
+++ b/previews/PR126/assets/chunks/@localSearchIndexroot.BCSyAezw.js
@@ -0,0 +1 @@
+const e='{"documentCount":148,"nextId":148,"documentIds":{"0":"/IncompressibleNavierStokes.jl/previews/PR126/about/citing#citing","1":"/IncompressibleNavierStokes.jl/previews/PR126/about/contributing#contributing","2":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Local-development","3":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Use-Juliaup","4":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#revise","5":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#environments","6":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#vscode","7":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Environment-vs-package","8":"/IncompressibleNavierStokes.jl/previews/PR126/about/#About-IncompressibleNavierStokes.jl","9":"/IncompressibleNavierStokes.jl/previews/PR126/about/license#license","10":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Package-versions","11":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Julia-version","12":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Package-versions-2","13":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Unsteady-actuator-case-2D","14":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#packages","15":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#setup","16":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Solve-unsteady-problem","17":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#post-process","18":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Copy-pasteable-code","19":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#Unsteady-actuator-case-3D","20":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#post-process","21":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#Copy-pasteable-code","22":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#Backward-Facing-Step-2D","23":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#post-process","24":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#Copy-pasteable-code","25":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#Backward-Facing-Step-3D","26":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#post-process","27":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#Copy-pasteable-code","28":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#Decaying-Homogeneous-Isotropic-Turbulence-2D","29":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#packages","30":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#post-process","31":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#Copy-pasteable-code","32":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Decaying-Homogeneous-Isotropic-Turbulence-3D","33":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Problem-setup","34":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Solve-problem","35":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#post-process","36":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Copy-pasteable-code","37":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Kolmogorov-flow-(2D)","38":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#packages","39":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#setup","40":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Plot-body-force","41":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Solve-unsteady-problem","42":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Copy-pasteable-code","43":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#Tutorial:-Lid-Driven-Cavity-2D","44":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#post-process","45":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#Copy-pasteable-code","46":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#Lid-Driven-Cavity-3D","47":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#post-process","48":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#Copy-pasteable-code","49":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#Unsteady-actuator-case-2D","50":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#post-process","51":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#Copy-pasteable-code","52":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#Planar-mixing-2D","53":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#post-process","54":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#Copy-pasteable-code","55":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#Plane-jets-2D","56":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#post-process","57":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#Copy-pasteable-code","58":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard2D#Rayleigh-Bénard-convection-(2D)","59":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard2D#Copy-pasteable-code","60":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard3D#Rayleigh-Bénard-convection-(3D)","61":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard3D#Copy-pasteable-code","62":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor2D#Rayleigh-Taylor-instability-in-2D","63":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor2D#Copy-pasteable-code","64":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor3D#Rayleigh-Taylor-instability-in-2D","65":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor3D#Copy-pasteable-code","66":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#Shear-layer-2D","67":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#post-process","68":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#Copy-pasteable-code","69":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex2D#Convergence-study:-Taylor-Green-vortex-(2D)","70":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex2D#Copy-pasteable-code","71":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Taylor-Green-vortex-3D","72":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#backend","73":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#setup","74":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Solve-unsteady-problem","75":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#post-process","76":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Copy-pasteable-code","77":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Examples-gallery","78":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Simple-flows","79":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Flows-with-mixed-boundary-conditions","80":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#With-a-temperature-equation","81":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Neural-network-closure-models","82":"/IncompressibleNavierStokes.jl/previews/PR126/getting_started#Getting-Started","83":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Neural-closure-models","84":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#NeuralClosure-module","85":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#filters","86":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#training","87":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Neural-architectures","88":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Data-generation","89":"/IncompressibleNavierStokes.jl/previews/PR126/manual/gpu#GPU-Support","90":"/IncompressibleNavierStokes.jl/previews/PR126/manual/les#Large-eddy-simulation","91":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Differentiating-through-the-code","92":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Automatic-differentiation-with-Zygote","93":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Example:-Gradient-of-kinetic-energy","94":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Automatic-differentiation-with-Enzyme","95":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Example:-Gradient-of-the-right-hand-side","96":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#Sparse-matrices","97":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#example","98":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#Boundary-conditions-and-matrices","99":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#api","100":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Incompressible-Navier-Stokes-equations","101":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Integral-form","102":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Boundary-conditions","103":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Pressure-equation","104":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Other-quantities-of-interest","105":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Reynolds-number","106":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Kinetic-energy","107":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#vorticity","108":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Stream-function","109":"/IncompressibleNavierStokes.jl/previews/PR126/manual/operators#operators","110":"/IncompressibleNavierStokes.jl/previews/PR126/manual/precision#Floating-point-precision","111":"/IncompressibleNavierStokes.jl/previews/PR126/manual/pressure#Pressure-solvers","112":"/IncompressibleNavierStokes.jl/previews/PR126/manual/sciml#Using-IncompressibleNavierStokes-in-SciML","113":"/IncompressibleNavierStokes.jl/previews/PR126/manual/sciml#api","114":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Problem-setup","115":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Boundary-conditions","116":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#grid","117":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#setup","118":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Field-initializers","119":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Spatial-discretization","120":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Finite-volume-discretization-of-the-Navier-Stokes-equations","121":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Boundary-conditions","122":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Fourth-order-accurate-discretization","123":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Matrix-representation","124":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Discrete-pressure-Poisson-equation","125":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Discrete-output-quantities","126":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Kinetic-energy","127":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#vorticity","128":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Stream-function","129":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#solvers","130":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#Solvers-2","131":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#processors","132":"/IncompressibleNavierStokes.jl/previews/PR126/manual/temperature#Temperature-equation","133":"/IncompressibleNavierStokes.jl/previews/PR126/manual/utils#utils","134":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Time-discretization","135":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Adams-Bashforth-Crank-Nicolson-method","136":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#One-leg-beta-method","137":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Runge-Kutta-methods","138":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Explicit-Methods","139":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Implicit-Methods","140":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Half-explicit-methods","141":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Classical-Methods","142":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Chebyshev-methods","143":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Miscellaneous-Methods","144":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#DSRK-Methods","145":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Non-SSP-Methods-of-Wong-and-Spiteri","146":"/IncompressibleNavierStokes.jl/previews/PR126/references#references","147":"/IncompressibleNavierStokes.jl/previews/PR126/references#bibliography"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,28],"1":[1,1,22],"2":[2,1,1],"3":[2,2,21],"4":[1,2,45],"5":[1,2,85],"6":[1,3,46],"7":[3,3,31],"8":[3,1,112],"9":[1,1,126],"10":[2,1,1],"11":[2,2,63],"12":[2,2,942],"13":[4,1,29],"14":[1,4,37],"15":[1,4,95],"16":[3,4,49],"17":[2,4,39],"18":[3,4,109],"19":[4,1,211],"20":[2,4,27],"21":[3,4,129],"22":[4,1,199],"23":[2,4,31],"24":[3,4,126],"25":[4,1,192],"26":[2,4,28],"27":[3,4,120],"28":[5,1,43],"29":[1,5,79],"30":[2,5,20],"31":[3,5,62],"32":[5,1,47],"33":[2,5,29],"34":[2,5,41],"35":[2,5,19],"36":[3,5,82],"37":[4,1,29],"38":[1,4,14],"39":[1,4,42],"40":[3,4,16],"41":[3,4,35],"42":[3,4,78],"43":[5,1,295],"44":[2,5,74],"45":[3,5,106],"46":[4,1,161],"47":[2,4,25],"48":[3,4,108],"49":[4,1,199],"50":[2,4,39],"51":[3,4,153],"52":[3,1,176],"53":[2,3,26],"54":[3,3,122],"55":[3,1,259],"56":[2,3,39],"57":[3,3,194],"58":[5,1,464],"59":[3,5,166],"60":[5,1,150],"61":[3,5,134],"62":[5,1,139],"63":[3,5,101],"64":[5,1,150],"65":[3,5,127],"66":[3,1,165],"67":[2,3,30],"68":[3,3,105],"69":[7,1,192],"70":[3,7,137],"71":[4,1,20],"72":[1,4,40],"73":[1,4,42],"74":[3,4,47],"75":[2,4,7],"76":[3,4,100],"77":[2,1,38],"78":[2,2,1],"79":[5,2,1],"80":[4,2,1],"81":[4,2,1],"82":[2,1,41],"83":[3,1,106],"84":[2,3,53],"85":[1,3,61],"86":[1,3,169],"87":[2,3,184],"88":[2,3,48],"89":[2,1,92],"90":[3,1,120],"91":[4,1,47],"92":[4,4,73],"93":[5,8,84],"94":[4,4,101],"95":[7,8,359],"96":[2,1,37],"97":[1,2,268],"98":[4,2,169],"99":[1,2,102],"100":[4,1,69],"101":[2,4,46],"102":[2,4,44],"103":[2,4,53],"104":[4,4,1],"105":[2,8,19],"106":[2,8,14],"107":[1,8,28],"108":[2,8,26],"109":[1,1,340],"110":[3,1,70],"111":[2,1,123],"112":[4,1,500],"113":[1,4,62],"114":[2,1,1],"115":[2,2,139],"116":[1,2,177],"117":[1,2,85],"118":[2,2,59],"119":[2,1,165],"120":[8,2,158],"121":[2,2,46],"122":[4,2,70],"123":[2,2,99],"124":[4,2,148],"125":[3,2,1],"126":[2,5,32],"127":[1,5,29],"128":[2,2,47],"129":[1,1,1],"130":[1,1,110],"131":[1,1,275],"132":[2,1,74],"133":[1,1,93],"134":[2,1,215],"135":[5,2,194],"136":[4,2,105],"137":[3,2,289],"138":[2,5,51],"139":[2,5,34],"140":[3,5,23],"141":[2,5,36],"142":[2,5,34],"143":[2,5,58],"144":[2,5,21],"145":[9,5,18],"146":[1,1,1],"147":[1,1,264]},"averageFieldLength":[2.662162162162163,2.945945945945946,98.4797297297297],"storedFields":{"0":{"title":"Citing","titles":[]},"1":{"title":"Contributing","titles":[]},"2":{"title":"Local development","titles":[]},"3":{"title":"Use Juliaup","titles":["Local development"]},"4":{"title":"Revise","titles":["Local development"]},"5":{"title":"Environments","titles":["Local development"]},"6":{"title":"VSCode","titles":["Local development","Environments"]},"7":{"title":"Environment vs package","titles":["Local development","Environments"]},"8":{"title":"About IncompressibleNavierStokes.jl","titles":[]},"9":{"title":"License","titles":[]},"10":{"title":"Package versions","titles":[]},"11":{"title":"Julia version","titles":["Package versions"]},"12":{"title":"Package versions","titles":["Package versions"]},"13":{"title":"Unsteady actuator case - 2D","titles":[]},"14":{"title":"Packages","titles":["Unsteady actuator case - 2D"]},"15":{"title":"Setup","titles":["Unsteady actuator case - 2D"]},"16":{"title":"Solve unsteady problem","titles":["Unsteady actuator case - 2D"]},"17":{"title":"Post-process","titles":["Unsteady actuator case - 2D"]},"18":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 2D"]},"19":{"title":"Unsteady actuator case - 3D","titles":[]},"20":{"title":"Post-process","titles":["Unsteady actuator case - 3D"]},"21":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 3D"]},"22":{"title":"Backward Facing Step - 2D","titles":[]},"23":{"title":"Post-process","titles":["Backward Facing Step - 2D"]},"24":{"title":"Copy-pasteable code","titles":["Backward Facing Step - 2D"]},"25":{"title":"Backward Facing Step - 3D","titles":[]},"26":{"title":"Post-process","titles":["Backward Facing Step - 3D"]},"27":{"title":"Copy-pasteable code","titles":["Backward Facing Step - 3D"]},"28":{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","titles":[]},"29":{"title":"Packages","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"30":{"title":"Post-process","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"31":{"title":"Copy-pasteable code","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"32":{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","titles":[]},"33":{"title":"Problem setup","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"34":{"title":"Solve problem","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"35":{"title":"Post-process","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"36":{"title":"Copy-pasteable code","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"37":{"title":"Kolmogorov flow (2D)","titles":[]},"38":{"title":"Packages","titles":["Kolmogorov flow (2D)"]},"39":{"title":"Setup","titles":["Kolmogorov flow (2D)"]},"40":{"title":"Plot body force","titles":["Kolmogorov flow (2D)"]},"41":{"title":"Solve unsteady problem","titles":["Kolmogorov flow (2D)"]},"42":{"title":"Copy-pasteable code","titles":["Kolmogorov flow (2D)"]},"43":{"title":"Tutorial: Lid-Driven Cavity - 2D","titles":[]},"44":{"title":"Post-process","titles":["Tutorial: Lid-Driven Cavity - 2D"]},"45":{"title":"Copy-pasteable code","titles":["Tutorial: Lid-Driven Cavity - 2D"]},"46":{"title":"Lid-Driven Cavity - 3D","titles":[]},"47":{"title":"Post-process","titles":["Lid-Driven Cavity - 3D"]},"48":{"title":"Copy-pasteable code","titles":["Lid-Driven Cavity - 3D"]},"49":{"title":"Unsteady actuator case - 2D","titles":[]},"50":{"title":"Post-process","titles":["Unsteady actuator case - 2D"]},"51":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 2D"]},"52":{"title":"Planar mixing - 2D","titles":[]},"53":{"title":"Post-process","titles":["Planar mixing - 2D"]},"54":{"title":"Copy-pasteable code","titles":["Planar mixing - 2D"]},"55":{"title":"Plane jets - 2D","titles":[]},"56":{"title":"Post-process","titles":["Plane jets - 2D"]},"57":{"title":"Copy-pasteable code","titles":["Plane jets - 2D"]},"58":{"title":"Rayleigh-Bénard convection (2D)","titles":[]},"59":{"title":"Copy-pasteable code","titles":["Rayleigh-Bénard convection (2D)"]},"60":{"title":"Rayleigh-Bénard convection (3D)","titles":[]},"61":{"title":"Copy-pasteable code","titles":["Rayleigh-Bénard convection (3D)"]},"62":{"title":"Rayleigh-Taylor instability in 2D","titles":[]},"63":{"title":"Copy-pasteable code","titles":["Rayleigh-Taylor instability in 2D"]},"64":{"title":"Rayleigh-Taylor instability in 2D","titles":[]},"65":{"title":"Copy-pasteable code","titles":["Rayleigh-Taylor instability in 2D"]},"66":{"title":"Shear layer - 2D","titles":[]},"67":{"title":"Post-process","titles":["Shear layer - 2D"]},"68":{"title":"Copy-pasteable code","titles":["Shear layer - 2D"]},"69":{"title":"Convergence study: Taylor-Green vortex (2D)","titles":[]},"70":{"title":"Copy-pasteable code","titles":["Convergence study: Taylor-Green vortex (2D)"]},"71":{"title":"Taylor-Green vortex - 3D","titles":[]},"72":{"title":"Backend","titles":["Taylor-Green vortex - 3D"]},"73":{"title":"Setup","titles":["Taylor-Green vortex - 3D"]},"74":{"title":"Solve unsteady problem","titles":["Taylor-Green vortex - 3D"]},"75":{"title":"Post-process","titles":["Taylor-Green vortex - 3D"]},"76":{"title":"Copy-pasteable code","titles":["Taylor-Green vortex - 3D"]},"77":{"title":"Examples gallery","titles":[]},"78":{"title":"Simple flows","titles":["Examples gallery"]},"79":{"title":"Flows with mixed boundary conditions","titles":["Examples gallery"]},"80":{"title":"With a temperature equation","titles":["Examples gallery"]},"81":{"title":"Neural network closure models","titles":["Examples gallery"]},"82":{"title":"Getting Started","titles":[]},"83":{"title":"Neural closure models","titles":[]},"84":{"title":"NeuralClosure module","titles":["Neural closure models"]},"85":{"title":"Filters","titles":["Neural closure models"]},"86":{"title":"Training","titles":["Neural closure models"]},"87":{"title":"Neural architectures","titles":["Neural closure models"]},"88":{"title":"Data generation","titles":["Neural closure models"]},"89":{"title":"GPU Support","titles":[]},"90":{"title":"Large eddy simulation","titles":[]},"91":{"title":"Differentiating through the code","titles":[]},"92":{"title":"Automatic differentiation with Zygote","titles":["Differentiating through the code"]},"93":{"title":"Example: Gradient of kinetic energy","titles":["Differentiating through the code","Automatic differentiation with Zygote"]},"94":{"title":"Automatic differentiation with Enzyme","titles":["Differentiating through the code"]},"95":{"title":"Example: Gradient of the right-hand side","titles":["Differentiating through the code","Automatic differentiation with Enzyme"]},"96":{"title":"Sparse matrices","titles":[]},"97":{"title":"Example","titles":["Sparse matrices"]},"98":{"title":"Boundary conditions and matrices","titles":["Sparse matrices"]},"99":{"title":"API","titles":["Sparse matrices"]},"100":{"title":"Incompressible Navier-Stokes equations","titles":[]},"101":{"title":"Integral form","titles":["Incompressible Navier-Stokes equations"]},"102":{"title":"Boundary conditions","titles":["Incompressible Navier-Stokes equations"]},"103":{"title":"Pressure equation","titles":["Incompressible Navier-Stokes equations"]},"104":{"title":"Other quantities of interest","titles":["Incompressible Navier-Stokes equations"]},"105":{"title":"Reynolds number","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"106":{"title":"Kinetic energy","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"107":{"title":"Vorticity","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"108":{"title":"Stream function","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"109":{"title":"Operators","titles":[]},"110":{"title":"Floating point precision","titles":[]},"111":{"title":"Pressure solvers","titles":[]},"112":{"title":"Using IncompressibleNavierStokes in SciML","titles":[]},"113":{"title":"API","titles":["Using IncompressibleNavierStokes in SciML"]},"114":{"title":"Problem setup","titles":[]},"115":{"title":"Boundary conditions","titles":["Problem setup"]},"116":{"title":"Grid","titles":["Problem setup"]},"117":{"title":"Setup","titles":["Problem setup"]},"118":{"title":"Field initializers","titles":["Problem setup"]},"119":{"title":"Spatial discretization","titles":[]},"120":{"title":"Finite volume discretization of the Navier-Stokes equations","titles":["Spatial discretization"]},"121":{"title":"Boundary conditions","titles":["Spatial discretization"]},"122":{"title":"Fourth order accurate discretization","titles":["Spatial discretization"]},"123":{"title":"Matrix representation","titles":["Spatial discretization"]},"124":{"title":"Discrete pressure Poisson equation","titles":["Spatial discretization"]},"125":{"title":"Discrete output quantities","titles":["Spatial discretization"]},"126":{"title":"Kinetic energy","titles":["Spatial discretization","Discrete output quantities"]},"127":{"title":"Vorticity","titles":["Spatial discretization","Discrete output quantities"]},"128":{"title":"Stream function","titles":["Spatial discretization"]},"129":{"title":"Solvers","titles":[]},"130":{"title":"Solvers","titles":["Solvers"]},"131":{"title":"Processors","titles":["Solvers"]},"132":{"title":"Temperature equation","titles":[]},"133":{"title":"Utils","titles":[]},"134":{"title":"Time discretization","titles":[]},"135":{"title":"Adams-Bashforth Crank-Nicolson method","titles":["Time discretization"]},"136":{"title":"One-leg beta method","titles":["Time discretization"]},"137":{"title":"Runge-Kutta methods","titles":["Time discretization"]},"138":{"title":"Explicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"139":{"title":"Implicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"140":{"title":"Half explicit methods","titles":["Time discretization","Runge-Kutta methods"]},"141":{"title":"Classical Methods","titles":["Time discretization","Runge-Kutta methods"]},"142":{"title":"Chebyshev methods","titles":["Time discretization","Runge-Kutta methods"]},"143":{"title":"Miscellaneous Methods","titles":["Time discretization","Runge-Kutta methods"]},"144":{"title":"DSRK Methods","titles":["Time discretization","Runge-Kutta methods"]},"145":{"title":""Non-SSP" Methods of Wong & Spiteri","titles":["Time discretization","Runge-Kutta methods"]},"146":{"title":"References","titles":[]},"147":{"title":"Bibliography","titles":[]}},"dirtCount":0,"index":[["μ±nσ",{"2":{"133":1}}],["κ+1|e^",{"2":{"131":1}}],["κ",{"2":{"131":1,"133":2}}],["κ∈n",{"2":{"131":1}}],["∑α=1d",{"2":{"120":1,"122":1}}],["∫γiudγ≈|γi|ui",{"2":{"120":1}}],["∈nd",{"2":{"119":1}}],["∏",{"2":{"119":1}}],["β−12",{"2":{"136":1}}],["β=12",{"2":{"136":1}}],["β=1d",{"2":{"119":1}}],["β",{"2":{"115":2,"116":6,"120":1,"136":2}}],["β∂uα∂xβ∂uβ∂xα",{"2":{"109":1}}],["η=",{"2":{"109":1}}],["η",{"2":{"109":1}}],["ϕ",{"2":{"109":2}}],["τ=luavg",{"2":{"109":1}}],["τ",{"2":{"102":1,"109":1}}],["∇2ψ=∇×ω",{"2":{"108":1}}],["∇2ψ=−ω",{"2":{"108":1}}],["∇⋅",{"2":{"103":1}}],["∇⋅u=0",{"2":{"100":1}}],["∇u⋅n=0",{"2":{"102":1}}],["⋅ndγ+1|o|∫ofdω",{"2":{"101":1}}],["ν3ϵ",{"2":{"109":1}}],["ν",{"2":{"100":1}}],["∂∂xα",{"2":{"119":1}}],["∂o",{"2":{"101":1}}],["∂u∂t+∇⋅",{"2":{"100":1}}],["∂y",{"2":{"97":1}}],["∂x",{"2":{"97":1}}],["∂",{"2":{"97":2}}],["⎢⠈⠻⢷⢗⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⣦⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠁⠱⢅⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⢤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠈⠻⣿⣿⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠈⠛⣟⣽⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠈⠓⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠓⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢽⣦⡀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣗⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣵⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠻⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⢤⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢑⢆⢀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢵⢷⣦⡀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣿⣿⣦⡀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣟⣽⣤⡀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⢟⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢽⢦⡀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣕⣄⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠓⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠈⠹⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎡⣄⣤⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣦⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⠀⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⠛⠙⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠙⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠃⠑⠀⎦",{"2":{"97":1}}],["ψi+h1+3h2−ψi+h1+h2xi1+3",{"2":{"128":1}}],["ψi+3",{"2":{"128":1}}],["ψ",{"2":{"87":1,"108":1}}],["σ=",{"2":{"102":1}}],["σ⋅n=0",{"2":{"102":1}}],["σ",{"2":{"87":2,"109":4}}],["λ=",{"2":{"109":1}}],["λ",{"2":{"86":2,"109":2}}],["≈c",{"2":{"83":1}}],["θ=12",{"2":{"135":1}}],["θ∈",{"2":{"135":1}}],["θ",{"2":{"83":2,"86":12,"87":9,"109":5,"130":1,"134":2,"135":3}}],["−δt",{"2":{"136":1}}],["−12",{"2":{"135":1}}],["−∫ωi+h1+h2ωdω=∫ωi+h1+h2∇2ψdω=∫γi+e1+h21∂ψ∂x1dγ−∫γi+h21∂ψ∂x1dγ+∫γi+h1+e22∂ψ∂x2dγ−∫γi+h12∂ψ∂x2dγ",{"2":{"128":1}}],["−ym",{"2":{"124":1,"137":2}}],["−yg",{"2":{"112":1,"124":3,"135":2,"137":1}}],["−",{"2":{"120":1,"122":1,"123":1,"134":1,"135":2,"137":1}}],["−∂u2∂x3+∂u3∂x2−∂u3∂x1+∂u1∂x3−∂u1∂x2+∂u2∂x1",{"2":{"107":1}}],["−∑α=1d∂fα∂xα",{"2":{"103":1}}],["−∑α=1d∂2∂xα∂xαp=∑α=1d∑β=1d∂2∂xα∂xβ",{"2":{"103":1}}],["−∇⋅fin",{"2":{"103":1}}],["−∇2p=∇⋅",{"2":{"103":1}}],["−pi+2νs",{"2":{"102":1}}],["−uut−pi+ν∇u",{"2":{"101":1}}],["−c∥2",{"2":{"86":1}}],["−gl−1wdymdt",{"2":{"124":1}}],["−gl−1wdymdt=f",{"2":{"112":1}}],["−gq¯",{"2":{"83":1}}],["−gp",{"2":{"83":1}}],["−f",{"2":{"83":1}}],["φi",{"2":{"119":1}}],["φ=",{"2":{"119":1}}],["φ",{"2":{"83":2}}],["γiα",{"2":{"120":1}}],["γiα=ωi−hα∩ωi+hα=∏β≠αδiββ",{"2":{"119":1}}],["γ+τ⊂∂ω",{"2":{"102":1}}],["γ⊂∂ω",{"2":{"102":1}}],["γ",{"2":{"58":7,"102":3,"116":1}}],["α0",{"2":{"135":1}}],["α0c",{"2":{"135":2}}],["α₂",{"2":{"135":2}}],["α₁",{"2":{"135":2}}],["α−1",{"2":{"127":1,"135":1}}],["α−=mod3",{"2":{"127":1}}],["α+1",{"2":{"127":1}}],["α+=mod3",{"2":{"127":1}}],["α=β",{"2":{"119":1}}],["α∈",{"2":{"119":1}}],["α",{"2":{"69":1,"70":1,"109":4,"115":1,"116":22,"118":2,"119":1,"120":3,"121":1,"123":1}}],["α4",{"2":{"58":7}}],["α3",{"2":{"58":7}}],["α2",{"2":{"58":7}}],["α1",{"2":{"58":8,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["|dk",{"2":{"131":1}}],["|γi+h1+h21|",{"2":{"128":1}}],["|ωi|",{"2":{"123":1}}],["|ωi|=|γiα||δiαα|",{"2":{"120":1}}],["|ωi+δ",{"2":{"123":1}}],["|o|",{"2":{"101":1}}],["|>",{"2":{"58":3,"59":3}}],["||",{"2":{"58":2,"59":2,"69":1,"70":1}}],["$filename",{"2":{"131":1}}],["$dir",{"2":{"131":1}}],["$s",{"2":{"131":1}}],["$t",{"2":{"131":1}}],["$n",{"2":{"60":1,"61":1,"69":1,"70":1,"131":1}}],["$y₁",{"2":{"55":1,"57":1}}],["$y₀",{"2":{"55":1,"57":1}}],["$outdir",{"2":{"19":2,"21":2,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":2,"51":2,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1}}],["^",{"2":{"55":4,"57":4}}],["^2",{"2":{"19":4,"21":4,"52":1,"54":1}}],["÷",{"2":{"55":1,"57":1}}],["ϵ=2ν",{"2":{"109":1}}],["ϵ",{"2":{"52":2,"54":2,"109":3}}],["≥",{"2":{"22":1,"24":1,"25":1,"27":1,"87":1}}],["πin",{"2":{"116":1}}],["πky",{"2":{"37":1}}],["π",{"2":{"19":5,"21":5,"60":1,"61":1,"66":5,"68":5}}],["⋱",{"2":{"15":2,"95":2}}],["⋮",{"2":{"15":6,"95":8,"112":2}}],[">",{"2":{"15":1,"18":1,"19":2,"21":2,"22":1,"24":1,"25":1,"27":1,"39":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":3,"51":3,"52":1,"54":1,"55":3,"57":3,"58":4,"59":4,"60":2,"61":2,"62":3,"63":3,"64":3,"65":3,"66":1,"68":1,"69":5,"70":5,"84":3,"85":2,"86":4,"87":3,"88":1,"99":7,"109":51,"111":7,"113":1,"115":7,"116":6,"118":8,"130":2,"131":3,"133":7,"134":1,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["≤",{"2":{"15":2,"18":2,"19":2,"21":2,"49":2,"51":2,"66":2,"68":2}}],["δp",{"2":{"135":1,"136":1}}],["δβuα",{"2":{"120":2}}],["δβδβuα",{"2":{"120":2,"122":1}}],["δβ",{"2":{"120":1,"122":1}}],["δα3φ",{"2":{"122":1}}],["δα3uα",{"2":{"122":1}}],["δαp",{"2":{"120":1,"122":1}}],["δαuα",{"2":{"120":1,"122":1}}],["δαφ",{"2":{"119":1}}],["δα",{"2":{"119":1}}],["δiα=",{"2":{"119":1}}],["δy2",{"2":{"58":2,"59":2}}],["δy1",{"2":{"58":2,"59":2}}],["δu",{"2":{"52":1,"54":2,"58":9,"59":3,"95":1,"97":1,"98":1,"116":1}}],["δti",{"2":{"137":1}}],["δtinui=vi−δtigpi",{"2":{"137":1}}],["δtin=wmvi+ym",{"2":{"137":1}}],["δti=w",{"2":{"137":1}}],["δti=ciδt",{"2":{"137":1}}],["δts=δt",{"2":{"137":1}}],["δt−wm",{"2":{"135":1}}],["δtr+1",{"2":{"137":1}}],["δtr",{"2":{"134":1,"137":1}}],["δtn=tn+1−tn",{"2":{"134":1}}],["δt",{"2":{"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":3,"70":3,"74":1,"76":1,"86":1,"88":1,"93":2,"124":2,"130":8,"134":2,"135":2,"136":1,"137":2}}],["δ",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"58":12,"59":6,"95":1,"97":1,"98":1,"109":1,"116":1}}],["x2",{"2":{"121":1}}],["x26",{"2":{"15":2,"18":2,"19":2,"21":2,"22":2,"24":2,"25":2,"27":2,"49":4,"51":4}}],["x265",{"2":{"12":1}}],["x264",{"2":{"12":1}}],["x0α",{"2":{"119":1}}],["xnαα",{"2":{"119":1}}],["xn−1",{"2":{"116":1}}],["xn=a+",{"2":{"116":1}}],["xn=a+∑i=1nsi−1h",{"2":{"116":1}}],["xn=b",{"2":{"116":1}}],["x∈rn+1",{"2":{"116":1}}],["x∈γ",{"2":{"102":1}}],["xi+hα",{"2":{"120":1}}],["xi+12α",{"2":{"119":1}}],["xiα=12",{"2":{"119":1}}],["xi−12α+xi+12α",{"2":{"119":1}}],["xi−12α",{"2":{"119":1}}],["xi=a+12",{"2":{"116":1}}],["xi±hβ",{"2":{"116":1}}],["xi",{"2":{"116":1,"120":2,"122":1}}],["x3",{"2":{"107":1,"121":1}}],["x3c",{"2":{"85":2,"87":2,"109":1,"115":4,"117":1,"130":1,"131":2,"133":2,"135":1,"136":1,"137":4}}],["x+τ",{"2":{"102":2}}],["xd",{"2":{"100":1}}],["x1",{"2":{"100":1,"121":1}}],["x10",{"2":{"95":2}}],["x100",{"2":{"95":1}}],["x=",{"2":{"100":1}}],["x51",{"2":{"95":1}}],["xticks",{"2":{"69":1,"70":1}}],["xtrans",{"2":{"12":1}}],["xu",{"2":{"58":6,"95":1,"97":1,"98":1,"116":1}}],["xlims",{"2":{"58":6,"95":1,"97":1,"98":1,"116":1}}],["xlabel",{"2":{"55":2,"57":2,"58":2,"59":2,"69":1,"70":1}}],["xscale",{"2":{"55":1,"57":1,"69":1,"70":1}}],["xslt",{"2":{"12":1}}],["xp",{"2":{"55":6,"57":6,"58":8,"59":2,"95":1,"97":1,"98":1,"116":1}}],["xc",{"2":{"15":1,"17":5,"18":7,"49":11,"51":11}}],["x",{"2":{"15":10,"18":10,"19":14,"21":15,"22":11,"24":12,"25":10,"27":11,"29":1,"31":1,"33":1,"36":1,"37":1,"39":2,"42":2,"43":7,"45":7,"46":6,"48":7,"49":16,"51":16,"52":8,"54":8,"55":9,"57":9,"58":13,"59":7,"60":11,"61":11,"62":8,"63":8,"64":6,"65":6,"66":5,"68":5,"69":13,"70":9,"73":3,"76":3,"86":2,"93":1,"95":2,"97":2,"98":2,"102":2,"112":1,"115":2,"116":3,"117":1,"118":1,"131":1,"133":7,"147":2}}],["xkbcommon",{"2":{"12":1}}],["xkbcomp",{"2":{"12":1}}],["xkeyboard",{"2":{"12":1}}],["xorg",{"2":{"12":16}}],["xz",{"2":{"12":1}}],["xml2",{"2":{"12":1}}],["x86",{"2":{"11":1}}],["zennaro",{"2":{"144":1}}],["zeros",{"2":{"69":1,"70":1,"109":1}}],["zero",{"2":{"19":3,"21":3,"22":2,"24":2,"25":2,"27":2,"43":2,"45":1,"46":1,"48":1,"49":3,"51":3,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"73":1,"76":1,"95":2,"98":2,"99":1,"111":1,"115":4,"123":1,"124":3,"131":1,"134":1}}],["zpull",{"2":{"95":2}}],["z",{"2":{"19":8,"21":8,"25":5,"27":5,"43":1,"46":3,"48":3,"60":2,"61":2,"64":3,"65":3,"73":1,"76":1,"131":1,"133":1}}],["zlib",{"2":{"12":1}}],["zstd",{"2":{"12":1}}],["zygoterules",{"2":{"12":1}}],["zygote",{"0":{"92":1},"1":{"93":1},"2":{"12":1,"91":1,"92":2,"93":2,"95":3}}],["znver3",{"2":{"11":1}}],["yet",{"2":{"135":1}}],["yg",{"2":{"123":1,"135":1}}],["yd",{"2":{"123":1,"135":1}}],["yields",{"2":{"103":1,"124":1,"128":2}}],["ym",{"2":{"98":3,"123":1,"124":1,"137":1}}],["yu",{"2":{"98":2}}],["yy",{"2":{"58":3,"59":3}}],["ylims",{"2":{"55":1,"57":1}}],["ylabel",{"2":{"55":2,"57":2,"58":2,"59":2}}],["yscale",{"2":{"55":1,"57":1,"69":1,"70":1}}],["y₁",{"2":{"55":1,"57":1}}],["y₀",{"2":{"55":1,"57":1}}],["yc",{"2":{"15":2,"17":5,"18":7,"49":11,"51":11}}],["y",{"2":{"15":7,"18":7,"19":8,"21":8,"22":7,"24":7,"25":7,"27":7,"37":1,"39":2,"42":2,"43":3,"45":3,"46":3,"48":3,"49":8,"51":8,"52":7,"54":7,"55":41,"57":41,"58":4,"59":4,"60":3,"61":3,"62":3,"63":3,"64":3,"65":3,"66":10,"68":10,"69":7,"70":3,"73":1,"76":1,"86":2,"133":2}}],["yaml",{"2":{"12":1}}],["your",{"2":{"4":1,"82":1,"92":1}}],["you",{"2":{"1":1,"6":1,"72":1,"91":1,"92":1,"112":1,"130":1,"132":1}}],["``x",{"2":{"116":1}}],["`status",{"2":{"12":1}}],["`",{"2":{"12":4,"116":1}}],["`~",{"2":{"12":1}}],["8741637253888226",{"2":{"112":1}}],["8762706094789094",{"2":{"112":3}}],["875",{"2":{"97":4,"98":4}}],["872c559c",{"2":{"12":1}}],["8531831743790232",{"2":{"112":1}}],["8506901457986655",{"2":{"112":1}}],["859552971776503",{"2":{"95":1}}],["856f044c",{"2":{"12":1}}],["856f2bd8",{"2":{"12":1}}],["8089740336813523",{"2":{"112":3}}],["8088154133813523",{"2":{"112":1}}],["8012086656581645",{"2":{"112":3}}],["809654104932039",{"2":{"95":1}}],["80",{"2":{"64":1,"65":1}}],["8816979780401091",{"2":{"112":1}}],["8872523550652668",{"2":{"112":1}}],["8887849397472614",{"2":{"112":3}}],["88313130037973e",{"2":{"95":1}}],["88\\titertime",{"2":{"62":1}}],["88015f11",{"2":{"12":1}}],["8906927667179808",{"2":{"112":1}}],["8913876494923778",{"2":{"112":1}}],["8937554550180197",{"2":{"112":1}}],["8938100127319855",{"2":{"112":4}}],["8951618846757197",{"2":{"112":1}}],["8953078101536035",{"2":{"112":1}}],["89\\titertime",{"2":{"62":1}}],["89763e89",{"2":{"12":1}}],["8\\tδt",{"2":{"16":2,"62":1}}],["8e850ede",{"2":{"12":1}}],["8e850b90",{"2":{"12":1}}],["8306925883975206",{"2":{"112":3}}],["836077315317973e",{"2":{"95":1}}],["83775a58",{"2":{"12":1}}],["83423d85",{"2":{"12":1}}],["8dfed614",{"2":{"12":1}}],["8d63f2c5",{"2":{"12":1}}],["8f399da3",{"2":{"12":1}}],["8fc22ac5",{"2":{"12":1}}],["8ba89e20",{"2":{"12":1}}],["8bf52ea8",{"2":{"12":1}}],["8bb1440f",{"2":{"12":1}}],["8+4",{"2":{"12":1}}],["842170943040401e",{"2":{"98":1}}],["84375",{"2":{"97":4,"98":4}}],["84\\titertime",{"2":{"62":2}}],["84",{"2":{"12":1}}],["8613612264733349",{"2":{"112":1}}],["861253086923037e",{"2":{"95":1}}],["8647617965965074",{"2":{"112":1}}],["864edb3b",{"2":{"12":1}}],["860ef19b",{"2":{"12":1}}],["8126924689970357",{"2":{"112":3}}],["8125",{"2":{"97":4,"98":4}}],["8132665202195992",{"2":{"112":1}}],["8117828430335173",{"2":{"112":1}}],["8180108075209138",{"2":{"112":3}}],["814087183e",{"2":{"95":1}}],["8101085824812788e",{"2":{"95":1}}],["8162dcfd",{"2":{"12":1}}],["8197267c",{"2":{"12":1}}],["8cdb02fc",{"2":{"12":1}}],["8297647119844105",{"2":{"112":3}}],["8291462584455838",{"2":{"112":4}}],["8290d209",{"2":{"12":1}}],["82",{"2":{"12":1}}],["82ae8749",{"2":{"12":1}}],["82251201",{"2":{"12":1}}],["82899510",{"2":{"12":1}}],["82e4d734",{"2":{"12":1}}],["8",{"2":{"12":18,"16":1,"39":1,"42":1,"64":1,"65":1,"66":1,"68":1,"69":2,"70":1,"95":2,"109":2,"112":2,"131":1,"132":1,"147":1}}],["9180935463070241",{"2":{"112":1}}],["91",{"2":{"95":1}}],["915",{"2":{"95":4}}],["91d4177d",{"2":{"12":1}}],["9\\tδt",{"2":{"62":1}}],["9\\titertime",{"2":{"29":2}}],["9324262333581842",{"2":{"112":1}}],["9342761753547372",{"2":{"112":3}}],["9396497491283882",{"2":{"112":1}}],["9375",{"2":{"97":4,"98":4}}],["9371663222572626",{"2":{"95":1}}],["935",{"2":{"95":4}}],["935fb764",{"2":{"12":1}}],["93",{"2":{"95":4}}],["933f0",{"2":{"58":3}}],["950661239457886",{"2":{"112":1}}],["951586378475656e99im",{"2":{"95":1}}],["955",{"2":{"95":4}}],["955742",{"2":{"58":6}}],["95",{"2":{"95":4}}],["959353",{"2":{"58":6}}],["9587832",{"2":{"58":6}}],["9731711225787223",{"2":{"112":1}}],["9730158",{"2":{"58":6}}],["975",{"2":{"95":4}}],["975736",{"2":{"58":6}}],["97",{"2":{"95":4}}],["9793203",{"2":{"58":6}}],["974473",{"2":{"58":6}}],["9783547",{"2":{"58":6}}],["97029555",{"2":{"58":6}}],["9769204",{"2":{"58":6}}],["9720256",{"2":{"58":6}}],["9718e550",{"2":{"12":1}}],["96875",{"2":{"97":4,"98":4}}],["965",{"2":{"95":4}}],["96",{"2":{"95":4}}],["9695302",{"2":{"58":6}}],["9645745014573777",{"2":{"95":1}}],["9644907",{"2":{"58":6}}],["96464634",{"2":{"58":6}}],["96747094",{"2":{"58":6}}],["9670348",{"2":{"58":6}}],["9618337193811496",{"2":{"112":1}}],["96171474",{"2":{"58":6}}],["9619466",{"2":{"58":6}}],["9e88b42a",{"2":{"12":1}}],["9fa8497b",{"2":{"12":1}}],["9846787126922614",{"2":{"112":1}}],["984229402628956",{"2":{"95":1}}],["9840734",{"2":{"58":6}}],["985",{"2":{"95":4}}],["98",{"2":{"95":4}}],["9887339",{"2":{"58":6}}],["98843646",{"2":{"58":6}}],["9834931",{"2":{"58":6}}],["9860128",{"2":{"58":6}}],["9864266",{"2":{"58":6}}],["9809733",{"2":{"58":6}}],["9817202",{"2":{"58":6}}],["981d1d27",{"2":{"12":1}}],["98b081ad",{"2":{"12":1}}],["90625",{"2":{"97":4,"98":4}}],["9021130325903073",{"2":{"95":1}}],["90",{"2":{"87":1}}],["905614\\tδt",{"2":{"29":1}}],["905a6f67",{"2":{"12":1}}],["90137ffa",{"2":{"12":1}}],["90014a1f",{"2":{"12":1}}],["9929267103789987",{"2":{"112":3}}],["992d4aef",{"2":{"12":1}}],["996361412839949",{"2":{"112":1}}],["996053456856544",{"2":{"95":1}}],["9977826",{"2":{"58":6}}],["9977603",{"2":{"58":6}}],["9933032",{"2":{"58":6}}],["99319035",{"2":{"58":6}}],["9908601",{"2":{"58":6}}],["995",{"2":{"95":4}}],["9955206",{"2":{"58":6}}],["9955652",{"2":{"58":6}}],["995b91a9",{"2":{"12":1}}],["9910412",{"2":{"58":6}}],["99",{"2":{"58":3,"60":1,"61":1,"95":4}}],["947212977565134",{"2":{"112":3}}],["94",{"2":{"95":4,"147":1}}],["945",{"2":{"17":3,"95":4}}],["94ce4f54",{"2":{"12":1}}],["94e857df",{"2":{"12":1}}],["944b1d66",{"2":{"12":1}}],["9c8b4983",{"2":{"12":1}}],["9287950605670815",{"2":{"112":1}}],["9226358005791237e",{"2":{"95":1}}],["920406190823e",{"2":{"95":1}}],["925",{"2":{"95":4}}],["92",{"2":{"95":4}}],["92933f4c",{"2":{"12":1}}],["929cbde3",{"2":{"12":1}}],["92d709cd",{"2":{"12":1}}],["927a84f5",{"2":{"12":1}}],["9b13fd28",{"2":{"12":1}}],["9a3f8284",{"2":{"12":1}}],["9a68df92",{"2":{"12":1}}],["9aa1b823",{"2":{"12":1}}],["9a962f9c",{"2":{"12":1}}],["9",{"2":{"12":13,"16":1,"25":1,"27":1,"82":1,"95":2,"109":2,"131":1}}],["⌃",{"2":{"12":6}}],["⌅",{"2":{"12":15}}],["3rd",{"2":{"137":1,"138":1}}],["339",{"2":{"113":1}}],["3333033984017677",{"2":{"112":3}}],["3319201786040405",{"2":{"112":3}}],["3377339263593422",{"2":{"112":3}}],["33459423769035684",{"2":{"112":1}}],["3359125744024713",{"2":{"112":3}}],["33810243969112724",{"2":{"112":3}}],["33bec58e",{"2":{"12":1}}],["3\\tδt",{"2":{"62":1}}],["3\\titertime",{"2":{"29":3}}],["3π",{"2":{"52":1,"54":1,"66":2,"68":2}}],["3233838504056097",{"2":{"112":3}}],["323im",{"2":{"95":2}}],["324×648",{"2":{"97":1}}],["320",{"2":{"95":1}}],["32\\titertime",{"2":{"62":1}}],["32",{"2":{"43":1,"45":1,"52":2,"54":2,"69":1,"70":1,"73":1,"76":1,"135":1,"147":1}}],["3d",{"0":{"19":1,"25":1,"32":1,"46":1,"60":1,"71":1},"1":{"20":1,"21":1,"26":1,"27":1,"33":1,"34":1,"35":1,"36":1,"47":1,"48":1,"61":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"19":1,"25":1,"43":1,"44":1,"46":1,"55":1,"72":1,"107":2,"108":1,"109":1,"116":1,"119":1,"121":1,"127":1,"131":3}}],["3da002f7",{"2":{"12":1}}],["3063",{"2":{"147":1}}],["3041",{"2":{"147":1}}],["3042677935801389",{"2":{"112":3}}],["3033302294258857",{"2":{"112":3}}],["30392449",{"2":{"12":1}}],["3097852247390696",{"2":{"112":1}}],["307",{"2":{"95":1}}],["301",{"2":{"22":1,"24":1}}],["300",{"2":{"15":1,"16":1,"17":3,"18":5,"49":2,"50":3,"51":5,"62":1,"63":1,"95":1}}],["3f19e933",{"2":{"12":1}}],["3fa0cd96",{"2":{"12":1}}],["368",{"2":{"147":1}}],["3664165852536658",{"2":{"112":3}}],["3632768075167574",{"2":{"112":3}}],["3633376127439469",{"2":{"112":3}}],["36030644877162527",{"2":{"112":1}}],["36993227528061523",{"2":{"112":1}}],["36724612686305513",{"2":{"112":1}}],["36",{"2":{"12":1}}],["36c8627f",{"2":{"12":1}}],["3+0",{"2":{"12":8}}],["3+1",{"2":{"12":1}}],["3a884ed6",{"2":{"12":1}}],["3b182d85",{"2":{"12":1}}],["3bb67fe8",{"2":{"12":1}}],["3bd65402",{"2":{"12":1}}],["374400132844818",{"2":{"112":3}}],["3777229387338287",{"2":{"112":1}}],["37724634474597607",{"2":{"112":1}}],["375",{"2":{"97":4,"98":4}}],["3752",{"2":{"58":3}}],["37e2e46d",{"2":{"12":1}}],["3783bdb8",{"2":{"12":1}}],["37",{"2":{"12":1}}],["3cdcf5f2",{"2":{"12":1}}],["3422573519004336",{"2":{"112":3}}],["3486158886946604",{"2":{"112":1}}],["34870754688428995",{"2":{"112":3}}],["34114843658326266",{"2":{"112":3}}],["343",{"2":{"147":1}}],["3432214137384335",{"2":{"112":3}}],["3434795771460868",{"2":{"112":1}}],["34375",{"2":{"97":4,"98":4}}],["34+0",{"2":{"12":1}}],["34",{"2":{"12":1}}],["34004b35",{"2":{"12":1}}],["34da2185",{"2":{"12":1}}],["39824630093679814",{"2":{"112":3}}],["3944547759171668",{"2":{"112":3}}],["39361546526753777",{"2":{"112":3}}],["39012952150454966",{"2":{"112":1}}],["3913746919645915",{"2":{"112":1}}],["3913130883274286",{"2":{"112":1}}],["391684\\tδt",{"2":{"29":1}}],["39706757933323933",{"2":{"112":4}}],["39",{"2":{"12":1,"43":1,"94":2,"97":1,"137":1,"138":1,"144":3}}],["3955a311",{"2":{"12":1}}],["39de3d68",{"2":{"12":1}}],["3859968980335953",{"2":{"112":3}}],["38540f10",{"2":{"12":1}}],["38348972758687006",{"2":{"112":1}}],["383011302659914",{"2":{"112":1}}],["38775605243015243",{"2":{"112":1}}],["38904336111919496",{"2":{"112":4}}],["3819660112501049",{"2":{"95":1}}],["38a345b3",{"2":{"12":1}}],["38",{"2":{"12":1}}],["3134095274974067",{"2":{"112":3}}],["3136112244033429",{"2":{"112":1}}],["31096681916681274",{"2":{"112":3}}],["31571389869368033",{"2":{"112":1}}],["315",{"2":{"95":5}}],["315im",{"2":{"95":3}}],["3125",{"2":{"97":4,"98":4}}],["312",{"2":{"95":1}}],["3113441489959696",{"2":{"95":1}}],["3113441489959698",{"2":{"95":2}}],["311",{"2":{"95":3}}],["314",{"2":{"95":3}}],["3161d3a3",{"2":{"12":1}}],["31",{"2":{"12":2,"19":1,"21":1}}],["318dbb63",{"2":{"12":1}}],["31c24e10",{"2":{"12":1}}],["3531940008756465",{"2":{"112":3}}],["3526741483872546",{"2":{"112":3}}],["351922786908686",{"2":{"112":1}}],["35541234336812005",{"2":{"112":3}}],["35454388747389226",{"2":{"112":3}}],["35492f91",{"2":{"12":1}}],["3500842508696068",{"2":{"112":1}}],["3507373493510954e",{"2":{"95":1}}],["350",{"2":{"58":2,"59":1}}],["35661453",{"2":{"12":1}}],["3587e190",{"2":{"12":1}}],["35d6a980",{"2":{"12":1}}],["3",{"2":{"12":62,"15":1,"16":1,"19":1,"21":1,"22":1,"24":1,"29":2,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"52":1,"55":4,"57":4,"60":2,"61":2,"62":1,"63":1,"64":1,"65":1,"74":1,"76":1,"87":1,"95":19,"97":1,"100":1,"109":1,"112":1,"116":3,"121":2,"131":2,"137":1,"139":2,"142":1}}],["7456760088369485",{"2":{"112":3}}],["7486602438730344",{"2":{"112":3}}],["74284474256906",{"2":{"112":3}}],["7445184282831224",{"2":{"112":3}}],["7446513079985353",{"2":{"112":1}}],["74",{"2":{"95":1}}],["7608273016555152",{"2":{"112":3}}],["7621432231857432",{"2":{"112":3}}],["7624711663329278",{"2":{"112":3}}],["7620974925853543",{"2":{"112":3}}],["765170719883973",{"2":{"112":3}}],["7667917804973445",{"2":{"112":1}}],["7646027992159439",{"2":{"112":1}}],["76",{"2":{"95":1}}],["76f85450",{"2":{"12":1}}],["7\\tδt",{"2":{"62":1}}],["7\\titertime",{"2":{"29":1}}],["711280985623885",{"2":{"112":3}}],["7109406378100851",{"2":{"112":3}}],["713179343473074",{"2":{"112":3}}],["7120319197818502",{"2":{"112":3}}],["71875",{"2":{"97":4,"98":4}}],["71",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["71a1bf82",{"2":{"12":1}}],["7b1f6079",{"2":{"12":1}}],["7+2",{"2":{"12":1}}],["7+0",{"2":{"12":2}}],["7add5ba3",{"2":{"12":1}}],["7a1cc6ca",{"2":{"12":1}}],["7cc45869",{"2":{"12":1}}],["7581564675498191",{"2":{"112":3}}],["7586606649333464",{"2":{"112":3}}],["7579578537808336",{"2":{"112":3}}],["7526504647780206",{"2":{"112":3}}],["752613360087727",{"2":{"95":1}}],["7548787322869919",{"2":{"112":3}}],["753216807906376",{"2":{"112":3}}],["75\\titertime",{"2":{"62":1}}],["75",{"2":{"12":1,"97":4,"98":4}}],["7862425457346708",{"2":{"112":3}}],["7869d1d1",{"2":{"12":1}}],["7807759349799628",{"2":{"112":1}}],["78125",{"2":{"97":4,"98":4}}],["781d530d",{"2":{"12":1}}],["78\\titertime",{"2":{"62":2}}],["78b55507",{"2":{"12":1}}],["7393444366885983",{"2":{"112":3}}],["7394933393542665",{"2":{"112":1}}],["7337939927024886",{"2":{"112":3}}],["733018259188943",{"2":{"112":3}}],["7339027349829377",{"2":{"112":3}}],["732773503e",{"2":{"95":1}}],["731e570b",{"2":{"12":1}}],["731186ca",{"2":{"12":1}}],["73760f76",{"2":{"12":1}}],["7015524141228384",{"2":{"112":1}}],["7012315932885084",{"2":{"112":3}}],["7023007080275229",{"2":{"112":1}}],["7040803213569757",{"2":{"112":1}}],["7042833888763731",{"2":{"112":3}}],["7051094661178132",{"2":{"112":1}}],["7031425899303251",{"2":{"112":1}}],["7031160512642476",{"2":{"112":3}}],["7034ab61",{"2":{"12":1}}],["7002964119879739",{"2":{"112":1}}],["70088907410381",{"2":{"112":1}}],["7003293819307372",{"2":{"112":3}}],["7005812177844533",{"2":{"112":1}}],["700de1a5",{"2":{"12":1}}],["708884091950401",{"2":{"112":1}}],["70",{"2":{"12":1}}],["7e76a0d4",{"2":{"12":1}}],["7e506255",{"2":{"12":1}}],["7e49a35a",{"2":{"12":1}}],["7e8f7934",{"2":{"12":1}}],["7973333113635569",{"2":{"112":3}}],["7985295299330236",{"2":{"112":1}}],["79098fc4",{"2":{"12":1}}],["79e6a3ab",{"2":{"12":1}}],["7723434658809323",{"2":{"112":3}}],["7754037561894658",{"2":{"112":3}}],["775571081780308",{"2":{"112":3}}],["7756381846387064",{"2":{"112":1}}],["775942\\tδt",{"2":{"29":1}}],["7792596863183789",{"2":{"112":3}}],["7792a7ef",{"2":{"12":1}}],["7746bdde",{"2":{"12":1}}],["77ba4419",{"2":{"12":1}}],["77dc65aa",{"2":{"12":1}}],["7763",{"2":{"11":1}}],["7d188eb4",{"2":{"12":1}}],["7da242da",{"2":{"12":1}}],["7d9f7c33",{"2":{"12":1}}],["722379543235927",{"2":{"112":3}}],["7299735203232772",{"2":{"112":3}}],["7231391610450235",{"2":{"112":3}}],["7238475880139124",{"2":{"112":1}}],["7211930017278865",{"2":{"112":1}}],["72560424690118",{"2":{"112":3}}],["7205144393149414",{"2":{"112":3}}],["7203682339266996",{"2":{"112":3}}],["7209385864723e",{"2":{"95":1}}],["7269a6da",{"2":{"12":1}}],["72",{"2":{"12":1}}],["7",{"2":{"12":19,"16":1,"22":1,"24":1,"25":1,"27":1,"49":1,"51":1,"58":18,"69":2,"95":2,"109":1}}],["586",{"2":{"147":1}}],["5711913409704478",{"2":{"112":3}}],["5789e2e9",{"2":{"12":1}}],["5νϵ",{"2":{"109":1}}],["547473508864641e",{"2":{"97":1}}],["542437186098202e",{"2":{"95":1}}],["54",{"2":{"86":1}}],["5432bcbf",{"2":{"12":1}}],["528894551624645",{"2":{"112":1}}],["52",{"2":{"86":1}}],["52e1d378",{"2":{"12":1}}],["5\\tδt",{"2":{"62":1}}],["5\\titertime",{"2":{"29":2}}],["5068973837688652",{"2":{"112":3}}],["5079484072907596",{"2":{"112":1}}],["507379514117979e",{"2":{"95":1}}],["504894",{"2":{"58":3}}],["5048909",{"2":{"58":3}}],["50485975",{"2":{"58":3}}],["5048374",{"2":{"58":3}}],["50483155",{"2":{"58":3}}],["5048262",{"2":{"58":3}}],["5048146",{"2":{"58":3}}],["5048628",{"2":{"58":3}}],["5049766",{"2":{"58":3}}],["50497997",{"2":{"58":3}}],["5049239",{"2":{"58":3}}],["5049157",{"2":{"58":3}}],["5049094",{"2":{"58":3}}],["50493026",{"2":{"58":3}}],["50495696",{"2":{"58":6}}],["50990593",{"2":{"58":3}}],["5099108",{"2":{"58":3}}],["50982356",{"2":{"58":3}}],["50981885",{"2":{"58":3}}],["50971836",{"2":{"58":3}}],["5097228",{"2":{"58":3}}],["50961626",{"2":{"58":3}}],["50962067",{"2":{"58":3}}],["5095119",{"2":{"58":3}}],["50951755",{"2":{"58":3}}],["50943247e",{"2":{"95":1}}],["5094113",{"2":{"58":3}}],["5094086",{"2":{"58":3}}],["5092935",{"2":{"58":3}}],["50929356",{"2":{"58":3}}],["5091811",{"2":{"58":3}}],["509176",{"2":{"58":3}}],["50",{"2":{"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"58":2,"59":1,"62":2,"63":2}}],["5000000000000001",{"2":{"95":2}}],["5000000000000002",{"2":{"95":2}}],["5000000000000003",{"2":{"95":6}}],["5000000000000056",{"2":{"95":4}}],["500",{"2":{"22":1,"24":1,"52":1,"54":1,"93":1,"95":2,"112":1}}],["5n",{"2":{"15":1,"18":1,"49":1,"51":1,"55":1,"57":1}}],["5983345984476474",{"2":{"112":1}}],["5933162222243581",{"2":{"112":3}}],["59375",{"2":{"97":4,"98":4}}],["59",{"2":{"12":1}}],["59f7168a",{"2":{"12":1}}],["568464077675137",{"2":{"112":3}}],["5644424424610739",{"2":{"112":3}}],["5625",{"2":{"97":4,"98":4}}],["56ddb016",{"2":{"12":1}}],["56f22d72",{"2":{"12":1}}],["5+0",{"2":{"12":4}}],["5+1",{"2":{"12":1}}],["5532718324517414",{"2":{"112":1}}],["5541277796045936",{"2":{"112":3}}],["555300508914644",{"2":{"112":1}}],["5554719943970878",{"2":{"112":3}}],["5570665390686788e",{"2":{"69":1}}],["55\\titertime",{"2":{"58":1}}],["55",{"2":{"12":1,"86":1,"147":1}}],["559328eb",{"2":{"12":1}}],["5194395386158631",{"2":{"112":3}}],["5116144577915119",{"2":{"112":3}}],["5107941098760225",{"2":{"112":3}}],["510215fc",{"2":{"12":1}}],["5174805693233535",{"2":{"112":3}}],["5164758240843459",{"2":{"112":3}}],["5169854288852012e167",{"2":{"95":1}}],["516822\\tδt",{"2":{"29":1}}],["51",{"2":{"12":1,"22":1,"24":1,"86":1}}],["5c2747f8",{"2":{"12":1}}],["5c1252a2",{"2":{"12":1}}],["53125",{"2":{"97":4,"98":4}}],["53",{"2":{"86":2}}],["53d494c1",{"2":{"12":1}}],["53ae85a6",{"2":{"12":1}}],["53c48c17",{"2":{"12":1}}],["5ae413db",{"2":{"12":1}}],["5ae59095",{"2":{"12":1}}],["5ab0869b",{"2":{"12":1}}],["5e",{"2":{"62":1,"63":1}}],["5eaf0fd0",{"2":{"12":1}}],["5e318141",{"2":{"12":1}}],["5e9a32e7af2",{"2":{"11":1}}],["5",{"2":{"12":39,"16":1,"17":5,"18":1,"22":2,"24":2,"25":2,"27":2,"35":1,"36":1,"39":1,"42":1,"46":1,"48":1,"55":21,"57":21,"58":228,"60":4,"61":4,"62":2,"63":2,"64":3,"65":3,"69":1,"95":128,"97":140,"98":132,"109":2,"131":1,"140":1}}],["6781148837864952",{"2":{"112":3}}],["6784394648834674",{"2":{"112":1}}],["6709207752864298",{"2":{"112":3}}],["6757986885447391",{"2":{"112":1}}],["6716905600910769",{"2":{"112":3}}],["6735966431693873",{"2":{"112":1}}],["6740254877366077e",{"2":{"95":1}}],["67c07d97",{"2":{"12":1}}],["6536904301507283",{"2":{"112":3}}],["6521599014458829",{"2":{"112":1}}],["65257c39",{"2":{"12":1}}],["65625",{"2":{"97":4,"98":4}}],["65",{"2":{"95":1}}],["63",{"2":{"147":1}}],["6352636457861688",{"2":{"112":1}}],["639491\\tδt",{"2":{"29":1}}],["63c18a36",{"2":{"12":1}}],["6\\tδt",{"2":{"16":3,"62":1}}],["6070006876953232",{"2":{"112":4}}],["6027028966112923e",{"2":{"95":1}}],["6058662108882434e",{"2":{"69":1}}],["605ecd9f",{"2":{"12":1}}],["60",{"2":{"60":1,"61":1}}],["600",{"2":{"15":1,"16":1,"17":3,"18":5,"22":2,"23":3,"24":5,"49":2,"50":3,"51":5,"52":2,"54":2,"58":2,"59":1,"62":2,"63":2,"64":2,"65":2}}],["6+1",{"2":{"12":1}}],["6+3",{"2":{"12":2}}],["6+0",{"2":{"12":2}}],["6e34b625",{"2":{"12":1}}],["6c6a2e73",{"2":{"12":1}}],["69",{"2":{"147":1}}],["6995965671054124",{"2":{"112":1}}],["699755933948873",{"2":{"112":1}}],["699a6c99",{"2":{"12":1}}],["6903765813076334",{"2":{"112":1}}],["6905188089567419",{"2":{"112":1}}],["6909705203116911",{"2":{"112":1}}],["69024149",{"2":{"12":1}}],["6914207474295654",{"2":{"112":1}}],["691886659893196",{"2":{"112":1}}],["691373970429577",{"2":{"112":3}}],["6947409485882146",{"2":{"112":1}}],["6947475158940635",{"2":{"112":1}}],["6947179115633345",{"2":{"112":1}}],["6946849079856697",{"2":{"112":1}}],["6949448881942601",{"2":{"112":1}}],["6941724708221193",{"2":{"112":1}}],["6953117322349547",{"2":{"112":1}}],["695876566510165",{"2":{"112":1}}],["6923841222225156",{"2":{"112":1}}],["6929260098627148",{"2":{"112":1}}],["692b3bcd",{"2":{"12":1}}],["6935209673176284",{"2":{"112":1}}],["696660491938344",{"2":{"112":1}}],["6976764032560655",{"2":{"112":1}}],["69de0a69",{"2":{"12":1}}],["6fe1bfb0",{"2":{"12":1}}],["6856239819956859",{"2":{"112":1}}],["6855898083159826",{"2":{"112":1}}],["6854669804319274",{"2":{"112":1}}],["6854430483776558",{"2":{"112":1}}],["6853541639991926",{"2":{"112":1}}],["6853073456180867",{"2":{"112":1}}],["6852888281442672",{"2":{"112":1}}],["6857245635110408",{"2":{"112":1}}],["689339625763256",{"2":{"112":3}}],["6861745240666373",{"2":{"112":1}}],["6842105823948037",{"2":{"112":3}}],["6875",{"2":{"97":4,"98":4}}],["68865585100403",{"2":{"95":1}}],["682c06a0",{"2":{"12":1}}],["68eda718",{"2":{"12":1}}],["6113188355612936",{"2":{"112":3}}],["61191569e",{"2":{"95":1}}],["615861342309636",{"2":{"112":3}}],["615f187c",{"2":{"12":1}}],["619435700313733",{"2":{"55":1,"57":1}}],["61eb1bfa",{"2":{"12":1}}],["6637977532679439",{"2":{"112":3}}],["663a7486",{"2":{"12":1}}],["66fc600b",{"2":{"12":1}}],["66dad0bd",{"2":{"12":1}}],["6b7a57c9",{"2":{"12":1}}],["6add18c4",{"2":{"12":1}}],["6253825540141095",{"2":{"112":3}}],["625",{"2":{"97":4,"98":4}}],["62fd8b95",{"2":{"12":1}}],["62783981",{"2":{"12":1}}],["621f4979",{"2":{"12":1}}],["6",{"2":{"11":1,"12":23,"15":2,"18":2,"19":5,"21":5,"49":3,"51":3,"55":1,"57":1,"69":3,"95":2,"109":2,"131":3}}],["6490986149468652",{"2":{"112":1}}],["648",{"2":{"97":1}}],["648×648",{"2":{"97":2}}],["648×324",{"2":{"97":1}}],["6462fe0b",{"2":{"12":1}}],["64499a7a",{"2":{"12":1}}],["647866c9",{"2":{"12":1}}],["64",{"2":{"11":3,"52":1,"54":1,"55":1,"57":1,"58":3,"69":1,"70":1,"95":1,"97":1,"98":1}}],["×",{"2":{"11":1}}],["4476201050854184",{"2":{"112":3}}],["4461634229992338",{"2":{"112":3}}],["44cfe95a",{"2":{"12":1}}],["4th",{"2":{"112":1,"139":1,"140":1}}],["48769451733971814",{"2":{"112":3}}],["487346077e",{"2":{"95":1}}],["48062228",{"2":{"12":1}}],["49732306162838485",{"2":{"112":3}}],["49830968480792187",{"2":{"112":3}}],["49999999999999445",{"2":{"95":4}}],["49999999999999967",{"2":{"95":6}}],["4999999999999999",{"2":{"95":2}}],["4999999999999998",{"2":{"95":2}}],["49521717",{"2":{"58":3}}],["49520862",{"2":{"58":3}}],["4950906",{"2":{"58":3}}],["49506977",{"2":{"58":3}}],["49502006",{"2":{"58":3}}],["49502343",{"2":{"58":3}}],["49504304",{"2":{"58":6}}],["49507612",{"2":{"58":3}}],["4950843",{"2":{"58":3}}],["4951854",{"2":{"58":3}}],["49516848",{"2":{"58":3}}],["4951626",{"2":{"58":3}}],["4951372",{"2":{"58":3}}],["49510905",{"2":{"58":3}}],["49510598",{"2":{"58":3}}],["49514025",{"2":{"58":3}}],["4951738",{"2":{"58":3}}],["49094325",{"2":{"58":3}}],["49093604",{"2":{"58":3}}],["49082395",{"2":{"58":3}}],["49081892",{"2":{"58":3}}],["49070647",{"2":{"58":3}}],["4907065",{"2":{"58":3}}],["49059144",{"2":{"58":3}}],["49058872",{"2":{"58":3}}],["49048245",{"2":{"58":3}}],["4904881",{"2":{"58":3}}],["49037933",{"2":{"58":3}}],["49038374",{"2":{"58":3}}],["49027717",{"2":{"58":3}}],["49028164",{"2":{"58":3}}],["49018115",{"2":{"58":3}}],["49017644",{"2":{"58":3}}],["49008918",{"2":{"58":3}}],["49009407",{"2":{"58":3}}],["4n",{"2":{"52":1,"54":1,"55":1,"57":1}}],["4π",{"2":{"52":1,"54":1}}],["4\\tδt",{"2":{"16":2,"62":1}}],["4af54fe1",{"2":{"12":1}}],["45795886772885214",{"2":{"112":3}}],["4578111083926e",{"2":{"95":1}}],["45637398637517057",{"2":{"112":3}}],["453052732869159",{"2":{"112":3}}],["4536629a",{"2":{"12":1}}],["45+1",{"2":{"12":1}}],["458c3c95",{"2":{"12":1}}],["45858cf5",{"2":{"12":1}}],["4f6342f7",{"2":{"12":1}}],["4fba245c",{"2":{"12":1}}],["4375",{"2":{"97":4,"98":4}}],["43",{"2":{"12":1}}],["43287f4e",{"2":{"12":1}}],["4016783050313231",{"2":{"112":3}}],["40625",{"2":{"97":4,"98":4}}],["400",{"2":{"62":1,"63":1,"64":3,"65":3}}],["4004b06d",{"2":{"12":1}}],["40",{"2":{"12":2,"15":1,"18":1,"64":1,"65":1,"86":1}}],["4b2f31a3",{"2":{"12":1}}],["4b34888f",{"2":{"12":1}}],["4+1",{"2":{"12":1}}],["4+3",{"2":{"12":1}}],["4+0",{"2":{"12":6}}],["4e3",{"2":{"29":1,"31":1,"33":1,"36":1}}],["4ec0a83e",{"2":{"12":1}}],["4e9b3aee",{"2":{"12":1}}],["4e289a0a",{"2":{"12":1}}],["4c63d2b9",{"2":{"12":1}}],["4680589497716697",{"2":{"112":3}}],["46875",{"2":{"97":4,"98":4}}],["46014869396484176",{"2":{"112":3}}],["4607b0f0",{"2":{"12":1}}],["46457135411059036",{"2":{"112":1}}],["465481485673722e146im",{"2":{"95":1}}],["467",{"2":{"55":1,"57":1}}],["46d2c3a1",{"2":{"12":1}}],["46192b85",{"2":{"12":1}}],["42234916731621935",{"2":{"112":1}}],["42im",{"2":{"95":1}}],["4242656052086717",{"2":{"69":1}}],["42",{"2":{"12":1}}],["42+0",{"2":{"12":1}}],["42fd0dbc",{"2":{"12":1}}],["42e2da0e",{"2":{"12":1}}],["429591f6",{"2":{"12":1}}],["47795630815458795",{"2":{"112":3}}],["47254498901215514",{"2":{"112":4}}],["47e",{"2":{"95":1}}],["47edcb42",{"2":{"12":1}}],["47",{"2":{"12":1}}],["4710194d",{"2":{"12":1}}],["4154209528727798",{"2":{"112":3}}],["4112474111851038",{"2":{"112":3}}],["411431e0",{"2":{"12":1}}],["417292500615618e",{"2":{"69":1}}],["41",{"2":{"12":1,"19":2,"21":2}}],["4",{"2":{"11":2,"12":50,"16":1,"29":1,"49":2,"51":2,"55":5,"57":4,"58":2,"69":2,"70":1,"89":1,"95":6,"97":1,"109":1,"130":1,"131":2,"133":1,"147":1}}],["0im",{"2":{"95":4}}],["08674468242062354",{"2":{"112":1}}],["08632948540266908",{"2":{"112":1}}],["0800877787811059",{"2":{"112":1}}],["08011130382809377",{"2":{"112":1}}],["08711969029762791",{"2":{"112":1}}],["08785911634943988",{"2":{"112":1}}],["0879175374118662",{"2":{"112":1}}],["08737433752485839",{"2":{"112":1}}],["08149131311546902",{"2":{"112":1}}],["08146985584337366",{"2":{"112":1}}],["08136799295997219",{"2":{"112":1}}],["0849027348933907",{"2":{"112":1}}],["08499999999999999",{"2":{"95":4}}],["08323181645056422",{"2":{"112":1}}],["08372897008126",{"2":{"112":1}}],["08",{"2":{"95":4}}],["08213587731725909",{"2":{"112":1}}],["082071864773802",{"2":{"112":1}}],["082ubar",{"2":{"52":1,"54":1}}],["082447d4",{"2":{"12":1}}],["041019724203204e130",{"2":{"95":1}}],["04121679",{"2":{"58":6}}],["045",{"2":{"95":4}}],["04",{"2":{"95":4}}],["047299176",{"2":{"58":3}}],["04064697",{"2":{"58":6}}],["044257984",{"2":{"58":6}}],["043240547",{"2":{"58":3}}],["042877991305456e",{"2":{"95":1}}],["042",{"2":{"16":1}}],["03907936680767",{"2":{"112":4}}],["03125",{"2":{"97":14,"98":8}}],["03",{"2":{"95":4}}],["0354254985426227",{"2":{"95":1}}],["035425498542622634",{"2":{"95":2}}],["035",{"2":{"95":4}}],["03550929",{"2":{"58":6}}],["03535363",{"2":{"58":6}}],["030469775",{"2":{"58":6}}],["03828521",{"2":{"58":6}}],["038053393",{"2":{"58":6}}],["03252904",{"2":{"58":6}}],["032965183",{"2":{"58":6}}],["033835bb",{"2":{"12":1}}],["0f0",{"2":{"58":30}}],["0f8b85d8",{"2":{"12":1}}],["007753321995088192",{"2":{"112":1}}],["003946543143456883",{"2":{"95":1}}],["003946543143456876",{"2":{"95":2}}],["003967967340085e",{"2":{"69":1}}],["003421770136632073",{"2":{"112":1}}],["0034",{"2":{"62":1}}],["0032",{"2":{"62":4}}],["0033",{"2":{"62":4}}],["005511656380449501",{"2":{"112":1}}],["0055448413",{"2":{"58":6}}],["005",{"2":{"95":8}}],["005\\tumax",{"2":{"62":10}}],["0053389072",{"2":{"58":3}}],["0053388774",{"2":{"58":3}}],["0057561994",{"2":{"58":3}}],["0057561696",{"2":{"58":3}}],["005972743",{"2":{"58":3}}],["005972773",{"2":{"58":3}}],["005138397",{"2":{"58":3}}],["0051383823",{"2":{"58":3}}],["005137682",{"2":{"58":6}}],["005187154",{"2":{"58":6}}],["0052372813",{"2":{"58":3}}],["0052372515",{"2":{"58":6}}],["0054404736",{"2":{"58":3}}],["0054405034",{"2":{"58":3}}],["005649209",{"2":{"58":3}}],["005649179",{"2":{"58":3}}],["00586313",{"2":{"58":3}}],["00586316",{"2":{"58":3}}],["0050000000000000044",{"2":{"95":6}}],["0050395727",{"2":{"58":3}}],["005039513",{"2":{"58":9}}],["00508821",{"2":{"58":6}}],["004392878613129141",{"2":{"112":1}}],["004943371",{"2":{"58":3}}],["0049433857",{"2":{"58":3}}],["004942775",{"2":{"58":3}}],["004942745",{"2":{"58":3}}],["004990816",{"2":{"58":6}}],["0045699477",{"2":{"58":3}}],["0045699626",{"2":{"58":3}}],["004569292",{"2":{"58":6}}],["0045239925",{"2":{"58":6}}],["004847288",{"2":{"58":6}}],["0048472583",{"2":{"58":6}}],["0048947334",{"2":{"58":3}}],["004894674",{"2":{"58":3}}],["004660487",{"2":{"58":6}}],["004660547",{"2":{"58":6}}],["0046145916",{"2":{"58":6}}],["0047538877",{"2":{"58":3}}],["0047539026",{"2":{"58":3}}],["004753113",{"2":{"58":3}}],["0047531724",{"2":{"58":3}}],["0047063828",{"2":{"58":3}}],["004706502",{"2":{"58":3}}],["004799843",{"2":{"58":6}}],["0044794083",{"2":{"58":6}}],["0044793785",{"2":{"58":12}}],["004434824",{"2":{"58":3}}],["0044347644",{"2":{"58":9}}],["006603690367079683",{"2":{"112":1}}],["0066967607",{"2":{"58":6}}],["0061945915",{"2":{"58":3}}],["006082356",{"2":{"58":3}}],["006082386",{"2":{"58":3}}],["006809652",{"2":{"58":6}}],["001556073323302609",{"2":{"112":1}}],["001",{"2":{"55":1,"57":1}}],["0013\\tumax",{"2":{"29":1}}],["0014\\tumax",{"2":{"29":1}}],["0011\\tumax",{"2":{"29":1}}],["0012\\tumax",{"2":{"29":3}}],["001\\tumax",{"2":{"29":1}}],["0022719733109081946",{"2":{"112":1}}],["0022397041",{"2":{"58":3}}],["0022396892",{"2":{"58":9}}],["002217412",{"2":{"58":3}}],["0022173822",{"2":{"58":9}}],["002",{"2":{"22":1,"24":1}}],["00000000000003",{"2":{"98":1}}],["0001007226650833037",{"2":{"69":1}}],["0001\\tδt",{"2":{"58":1}}],["000378932838635171",{"2":{"69":1}}],["0003752933f0",{"2":{"58":4}}],["0004\\tδt",{"2":{"58":1}}],["00026645826f0",{"2":{"58":8}}],["00081\\tumax",{"2":{"29":1}}],["000",{"2":{"22":2,"24":2,"43":1,"45":1,"46":1,"48":1,"55":1,"57":1}}],["008911590687048847",{"2":{"112":1}}],["008958757",{"2":{"58":6}}],["0089",{"2":{"16":2}}],["009535330400806",{"2":{"112":3}}],["009999999999999981",{"2":{"95":2}}],["009999999999999995",{"2":{"95":8}}],["009999999999999998",{"2":{"95":4}}],["009999999999999898",{"2":{"95":6}}],["009139925",{"2":{"58":6}}],["0091",{"2":{"16":3}}],["009",{"2":{"16":2}}],["0507237810427664e196",{"2":{"95":1}}],["055",{"2":{"17":2,"95":4}}],["05\\tumax",{"2":{"16":10}}],["05",{"2":{"16":1,"18":1,"19":1,"21":1,"66":1,"68":1,"95":4,"109":1}}],["05823500",{"2":{"12":1}}],["05181044",{"2":{"12":1}}],["0dad84c5",{"2":{"12":1}}],["0d7ed370",{"2":{"12":1}}],["07949641409494351",{"2":{"112":1}}],["0796116\\tδt",{"2":{"29":1}}],["07135944587144352",{"2":{"112":1}}],["07193028639620751",{"2":{"112":1}}],["071742276692659",{"2":{"112":1}}],["07086131054405251",{"2":{"112":1}}],["07840672901885568",{"2":{"112":1}}],["07637620818235707",{"2":{"112":1}}],["076d061b",{"2":{"12":1}}],["0730901502800942",{"2":{"112":3}}],["07500000000000001",{"2":{"95":4}}],["075b6546",{"2":{"12":1}}],["07",{"2":{"95":4,"109":1}}],["0ac62f75",{"2":{"12":1}}],["0a4f8689",{"2":{"12":1}}],["0c0b7dd1",{"2":{"12":1}}],["0c68f7d7",{"2":{"12":1}}],["0+1",{"2":{"12":2}}],["0+3",{"2":{"12":1}}],["0+2",{"2":{"12":3}}],["0+0",{"2":{"12":18}}],["06998",{"2":{"147":2}}],["06998500742819176",{"2":{"112":1}}],["06988",{"2":{"147":1}}],["06939482878041375",{"2":{"112":1}}],["06937447110855348",{"2":{"112":1}}],["069b7b12",{"2":{"12":1}}],["0673893886406746",{"2":{"112":1}}],["0625",{"2":{"97":80,"98":66}}],["06283367774273789",{"2":{"95":1}}],["06283367774273778",{"2":{"95":2}}],["06503299545433096",{"2":{"112":1}}],["065",{"2":{"95":4}}],["0656b61e",{"2":{"12":1}}],["06",{"2":{"95":4}}],["09596466821843684",{"2":{"112":1}}],["09511931496103386",{"2":{"112":1}}],["09635681528979329",{"2":{"112":1}}],["09624607120770974",{"2":{"112":1}}],["09718500802575686",{"2":{"112":1}}],["097385864086145",{"2":{"112":1}}],["09704009175453462",{"2":{"112":1}}],["09788696740969302",{"2":{"95":1}}],["09788696740969285",{"2":{"95":2}}],["09379117048994434",{"2":{"112":1}}],["09375",{"2":{"97":4,"98":4}}],["0924068511390998",{"2":{"112":1}}],["09",{"2":{"95":2}}],["09ab397b",{"2":{"12":1}}],["099dac27",{"2":{"12":1}}],["0bca4576",{"2":{"12":1}}],["0e",{"2":{"95":2}}],["0e3",{"2":{"69":1,"70":1}}],["0e77f7df",{"2":{"12":1}}],["0e44f5e4",{"2":{"12":1}}],["0",{"2":{"11":2,"12":125,"15":887,"16":24,"17":5,"18":18,"19":13,"21":13,"22":6,"24":6,"25":8,"27":8,"29":32,"31":8,"33":1,"34":1,"35":1,"36":3,"37":2,"39":5,"41":3,"42":8,"43":3,"45":3,"46":7,"48":7,"49":7,"51":7,"52":23,"54":23,"55":43,"56":1,"57":44,"58":1160,"59":9,"60":11,"61":11,"62":34,"63":5,"64":9,"65":9,"66":4,"68":4,"69":10,"70":7,"73":1,"74":2,"76":3,"93":5,"95":1596,"97":368,"98":739,"109":3,"112":478,"119":1,"131":11,"134":2,"135":1,"137":1}}],["0219088082524375e124im",{"2":{"95":1}}],["021645322",{"2":{"58":6}}],["025",{"2":{"95":4}}],["02552703",{"2":{"58":6}}],["020679772",{"2":{"58":6}}],["0269842",{"2":{"58":6}}],["029704452",{"2":{"58":6}}],["024263948",{"2":{"58":6}}],["023079693",{"2":{"58":6}}],["027974367",{"2":{"58":6}}],["027",{"2":{"29":1}}],["02c8fc9c",{"2":{"12":1}}],["02",{"2":{"11":1,"95":4}}],["010098916435172417",{"2":{"112":1}}],["010000000000000005",{"2":{"95":2}}],["010000000000000002",{"2":{"95":12}}],["010000000000000009",{"2":{"95":42}}],["012",{"2":{"58":1}}],["012ubar",{"2":{"52":1,"54":1}}],["01\\tumax",{"2":{"58":2}}],["011",{"2":{"62":1}}],["011266053",{"2":{"58":6}}],["011563554",{"2":{"58":6}}],["019026697",{"2":{"58":6}}],["01827985",{"2":{"58":6}}],["013987184",{"2":{"58":6}}],["0135733485",{"2":{"58":6}}],["013be700",{"2":{"12":1}}],["015770597371044366",{"2":{"95":1}}],["01577059737104434",{"2":{"95":2}}],["01563057410408e",{"2":{"69":1}}],["0159266",{"2":{"58":6}}],["015",{"2":{"29":6,"58":1,"95":4}}],["01650694",{"2":{"58":6}}],["016",{"2":{"29":1}}],["01",{"2":{"11":1,"16":1,"25":1,"27":1,"60":1,"61":1,"66":1,"68":1,"69":1,"70":1,"93":1,"95":12}}],["2βu0−",{"2":{"136":1}}],["2|",{"2":{"123":1}}],["2−12",{"2":{"119":1}}],["233",{"2":{"147":1}}],["231",{"2":{"147":1}}],["23148070686490213",{"2":{"112":3}}],["2307",{"2":{"147":1}}],["2393008281557438",{"2":{"112":1}}],["2381bf8a",{"2":{"12":1}}],["2uavg",{"2":{"109":1}}],["2ν",{"2":{"109":1}}],["2=∫ωkdω",{"2":{"106":1}}],["2z",{"2":{"73":2,"76":2}}],["2x",{"2":{"73":2,"76":2}}],["2t",{"2":{"69":1,"70":1}}],["2π",{"2":{"66":1,"68":1,"69":1,"70":1}}],["2\\titertime",{"2":{"62":1}}],["2\\tδt",{"2":{"16":2,"62":1}}],["2y",{"2":{"52":1,"54":1,"73":2,"76":2}}],["2nd",{"2":{"138":1}}],["2n",{"2":{"15":1,"18":1,"49":1,"51":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["2d",{"0":{"13":1,"22":1,"28":1,"37":1,"43":1,"49":1,"52":1,"55":1,"58":1,"62":1,"64":1,"66":1,"69":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"23":1,"24":1,"29":1,"30":1,"31":1,"38":1,"39":1,"40":1,"41":1,"42":1,"44":1,"45":1,"50":1,"51":1,"53":1,"54":1,"56":1,"57":1,"59":1,"63":1,"65":1,"67":1,"68":1,"70":1},"2":{"15":1,"22":1,"49":1,"52":1,"55":1,"66":1,"69":2,"72":1,"107":2,"108":1,"116":1,"119":1,"127":1,"128":1,"131":2}}],["2f01184e",{"2":{"12":1}}],["2+",{"2":{"109":1}}],["2+2",{"2":{"12":1}}],["2+3",{"2":{"12":1}}],["2+0",{"2":{"12":8}}],["2+1",{"2":{"12":2}}],["2e3",{"2":{"39":1,"42":1}}],["2e76f6c2",{"2":{"12":1}}],["2e619515",{"2":{"12":1}}],["2efcf032",{"2":{"12":1}}],["2641988258161559",{"2":{"112":3}}],["26",{"2":{"12":1}}],["24738663991227255",{"2":{"95":1}}],["24738663991227286",{"2":{"95":2}}],["2462154169355641",{"2":{"112":3}}],["24660861817531196",{"2":{"112":1}}],["246",{"2":{"95":1}}],["244",{"2":{"95":1}}],["244e2a9f",{"2":{"12":1}}],["24\\titertime",{"2":{"58":1}}],["24y",{"2":{"22":1,"24":1,"25":1,"27":1}}],["24",{"2":{"12":1,"16":1,"18":1}}],["293",{"2":{"147":1}}],["2931007986840914",{"2":{"112":3}}],["295im",{"2":{"95":1}}],["2963296028916884",{"2":{"112":1}}],["29635788393351875",{"2":{"112":3}}],["296",{"2":{"58":1,"131":1}}],["294",{"2":{"58":1,"131":1}}],["292",{"2":{"58":4,"131":2}}],["291",{"2":{"58":4,"131":2}}],["2913bbd2",{"2":{"12":1}}],["29816b5a",{"2":{"12":1}}],["29",{"2":{"12":1,"147":1}}],["2a0f44e3",{"2":{"12":1}}],["2a0fbf3d",{"2":{"12":1}}],["2ab3a3ac",{"2":{"12":1}}],["2189",{"2":{"147":1}}],["2182",{"2":{"147":1}}],["21875",{"2":{"97":4,"98":4}}],["21−xi1−1",{"2":{"128":1}}],["21−xi1+1",{"2":{"128":1}}],["21−ψi+h1+h2−ψi−h1+h2xi1+1",{"2":{"128":1}}],["21592330024807257",{"2":{"112":3}}],["2141858833153945e",{"2":{"95":1}}],["21216c6a",{"2":{"12":1}}],["21",{"2":{"12":7,"55":1,"57":1,"128":1}}],["285",{"2":{"147":1}}],["2873699515434851",{"2":{"112":3}}],["28125",{"2":{"97":4,"98":4}}],["280155\\tδt",{"2":{"29":1}}],["2803e5a7",{"2":{"12":1}}],["28d57a85",{"2":{"12":1}}],["28",{"2":{"12":2}}],["2b5f629d",{"2":{"12":1}}],["2202",{"2":{"147":1}}],["220446049250313e",{"2":{"98":6}}],["22−xi2−1",{"2":{"128":1}}],["22−xi1+1",{"2":{"128":1}}],["22−ψi+h1+h2−ψi+h1−h2xi2+1",{"2":{"128":1}}],["22960206139636438",{"2":{"112":1}}],["2266899400473281",{"2":{"112":3}}],["226759849637e",{"2":{"95":1}}],["225",{"2":{"95":1}}],["22cec73e",{"2":{"12":1}}],["22",{"2":{"12":4,"52":1,"54":1,"128":1,"143":2}}],["27505011099912496",{"2":{"112":1}}],["2762212525839953",{"2":{"112":1}}],["276daf66",{"2":{"12":1}}],["2773323957675547",{"2":{"112":3}}],["2786676916508652",{"2":{"112":3}}],["2706142291619179",{"2":{"112":1}}],["2702e6a9",{"2":{"12":1}}],["27+1",{"2":{"12":1}}],["2792f1a3",{"2":{"12":1}}],["27",{"2":{"12":3}}],["27a7e980",{"2":{"12":1}}],["257",{"2":{"147":1}}],["259",{"2":{"147":1}}],["2594495139580558",{"2":{"112":3}}],["25288023085937766",{"2":{"112":1}}],["250",{"2":{"52":2,"54":2,"112":2}}],["2560",{"2":{"97":1}}],["256",{"2":{"29":1,"31":1,"39":1,"42":1,"52":2,"54":2,"55":1,"57":1,"69":1,"70":1}}],["2569d6c7",{"2":{"12":1}}],["25",{"2":{"12":3,"25":2,"27":2,"46":2,"48":2,"97":4,"98":4}}],["2045755939435638",{"2":{"112":1}}],["2013",{"2":{"147":1}}],["20133259927658942",{"2":{"112":3}}],["2014",{"2":{"147":1}}],["2012",{"2":{"147":2}}],["2017",{"2":{"147":1}}],["2019",{"2":{"147":1}}],["201",{"2":{"58":6}}],["2003",{"2":{"147":1}}],["2007",{"2":{"147":1}}],["2000",{"2":{"66":1,"68":1,"147":2}}],["200",{"2":{"58":9,"62":1,"63":1}}],["20f20a25",{"2":{"12":1}}],["20",{"2":{"11":1,"12":4,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":2,"48":2,"49":1,"51":1,"52":1,"54":1,"58":7,"59":4,"60":3,"61":3,"62":1,"63":1,"64":2,"65":2,"66":1,"68":1,"74":1,"76":1,"95":3}}],["2022",{"2":{"147":2}}],["2023",{"2":{"109":1,"147":1}}],["20230411+1",{"2":{"12":1}}],["202",{"2":{"58":3}}],["202×83×2",{"2":{"15":1}}],["2027ae74",{"2":{"12":1}}],["2024",{"2":{"11":1}}],["2021",{"2":{"9":1,"147":2}}],["2",{"2":{"11":1,"12":65,"15":8,"16":1,"17":12,"18":17,"19":10,"21":10,"22":1,"24":1,"25":1,"27":1,"28":1,"29":4,"32":1,"34":1,"36":1,"37":1,"39":1,"41":1,"42":2,"46":3,"48":3,"49":17,"51":17,"52":2,"54":2,"55":26,"57":26,"58":71,"59":13,"60":7,"61":7,"62":2,"63":2,"64":2,"65":2,"66":4,"68":4,"69":9,"70":8,"73":3,"76":3,"87":1,"93":5,"95":28,"97":8,"98":14,"100":1,"109":4,"119":3,"120":1,"121":2,"131":3,"135":1,"139":1,"143":3}}],["kurz",{"2":{"147":1}}],["kutta",{"0":{"137":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"43":1,"134":4,"137":4,"147":2}}],["koren",{"2":{"147":2}}],["kochkov",{"2":{"147":1}}],["kolmolgorov",{"2":{"109":1}}],["kolmogorov",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"37":1}}],["know",{"2":{"137":1}}],["known",{"2":{"90":2,"124":1}}],["kronecker",{"2":{"119":1}}],["kp",{"2":{"118":2}}],["ki=f",{"2":{"137":1}}],["ki=14∑α",{"2":{"109":1}}],["ki=18∑α",{"2":{"109":1}}],["kinematic",{"2":{"100":1}}],["kinetic",{"0":{"93":1,"106":1,"126":1},"2":{"8":2,"106":1,"109":7,"126":1}}],["kind",{"2":{"9":1}}],["kdk",{"2":{"109":1}}],["k=12∥u∥l2",{"2":{"106":1}}],["k=12∥u∥22=12∑α=1duαuα",{"2":{"126":1}}],["k=12∥u∥22",{"2":{"106":1}}],["kmax",{"2":{"87":4}}],["kwargs",{"2":{"87":2,"88":1,"89":1,"109":4,"111":2,"115":6,"131":7,"132":2,"133":1,"134":1,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["k^",{"2":{"55":2,"57":2}}],["ksub",{"2":{"55":5,"57":5}}],["k",{"2":{"37":1,"55":9,"57":9,"109":2,"119":2,"121":1,"131":1,"133":2}}],["ketcheson",{"2":{"137":1}}],["ke",{"2":{"109":1}}],["keyword",{"2":{"109":1,"117":1,"131":2,"132":2}}],["kernel",{"2":{"97":3,"98":6,"109":1}}],["kernels",{"2":{"96":1,"97":1,"109":1}}],["kerneldensity",{"2":{"12":1}}],["kernelabstractions",{"2":{"12":1,"89":1,"109":1,"117":2}}],["keep",{"2":{"5":1}}],["ωα=−δα−uα++δα+uα−",{"2":{"127":1}}],["ω3",{"2":{"127":1}}],["ω2",{"2":{"127":1}}],["ω1",{"2":{"127":1}}],["ωi+hα3",{"2":{"122":1}}],["ωi3=⋃α=1dωi−eα∪ωi∪ωi+eα",{"2":{"122":1}}],["ωi",{"2":{"120":1}}],["ωi=∏α=1dδiαα",{"2":{"119":1}}],["ωp",{"2":{"109":1}}],["ω⊂rd",{"2":{"100":1}}],["ω=−δ2u1+δ1u2",{"2":{"127":1}}],["ω=−∂u1∂x2+∂u2∂x1",{"2":{"107":1}}],["ω=⋃i∈iωi",{"2":{"119":1}}],["ω=∏α=1d",{"2":{"119":1}}],["ω=∇×u",{"2":{"107":1}}],["ω=",{"2":{"37":1,"107":1}}],["ω",{"2":{"8":1,"52":2,"54":2,"100":1,"106":1,"109":7,"119":1}}],["q=",{"2":{"136":1}}],["q=−12∑α",{"2":{"109":1}}],["q",{"2":{"109":3,"147":1}}],["quadrature",{"2":{"120":2,"128":1,"142":1}}],["quadgk",{"2":{"12":1}}],["quantity",{"2":{"120":2}}],["quantities",{"0":{"104":1,"125":1},"1":{"105":1,"106":1,"107":1,"108":1,"126":1,"127":1},"2":{"44":1,"116":1}}],["quality",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["quot",{"0":{"145":2},"2":{"0":2,"5":2,"9":4,"43":2,"72":4,"115":2,"131":10,"136":2}}],["qoi",{"2":{"12":1}}],["qfield",{"2":{"8":1,"109":2}}],["u−1+δtf",{"2":{"136":1}}],["u−1",{"2":{"135":2,"136":1}}],["u−1=u",{"2":{"135":1}}],["uα",{"2":{"120":1}}],["uαuβ",{"2":{"103":1,"120":2,"122":1}}],["ufunc",{"2":{"118":3}}],["u0−",{"2":{"135":1}}],["u0=u",{"2":{"134":1,"135":1,"137":2}}],["u0",{"2":{"112":4,"135":2,"136":1,"137":1}}],["uh=",{"2":{"121":1}}],["uh",{"2":{"112":2,"123":2,"124":3}}],["ui+2hβα",{"2":{"120":1}}],["ui+hαα",{"2":{"109":1}}],["ui+hαα+ui−hαα",{"2":{"109":1}}],["ui−1",{"2":{"137":1}}],["ui−2hβα",{"2":{"120":1}}],["ui−hαα",{"2":{"109":1}}],["uiα",{"2":{"120":2}}],["uijk",{"2":{"119":1}}],["uij",{"2":{"119":1}}],["ui",{"2":{"119":1,"137":2}}],["uiui",{"2":{"109":1}}],["uavg=",{"2":{"109":1}}],["uavg",{"2":{"109":1}}],["ubc",{"2":{"102":1}}],["ubar",{"2":{"52":1,"54":1}}],["ud",{"2":{"100":1,"115":1}}],["u=v~−δtβ+12gδp",{"2":{"136":1}}],["u=v−δt",{"2":{"135":1}}],["u=∇×ψ",{"2":{"108":1}}],["u=ubc",{"2":{"102":1}}],["u=",{"2":{"100":1}}],["uut",{"2":{"100":1,"103":1}}],["uuids",{"2":{"12":1}}],["uuid",{"2":{"7":1}}],["uzero",{"2":{"98":1}}],["uy",{"2":{"87":2}}],["ux",{"2":{"87":2}}],["u4",{"2":{"87":1}}],["u3",{"2":{"87":2}}],["u2=−∂ψ∂x1",{"2":{"108":1}}],["u2",{"2":{"87":3}}],["u¯",{"2":{"83":3,"86":2,"88":1}}],["u¯=φu",{"2":{"83":1}}],["utilities",{"2":{"133":1}}],["utils",{"0":{"133":1}}],["ut",{"2":{"69":3,"70":3}}],["utc",{"2":{"11":1}}],["uref",{"2":{"69":4,"70":4}}],["uris",{"2":{"12":1}}],["u1=∂ψ∂x2",{"2":{"108":1}}],["u1",{"2":{"66":3,"68":3,"69":1,"87":3,"100":1,"115":1}}],["up",{"2":{"82":1,"103":1,"109":1,"115":1,"124":1,"131":2,"137":1}}],["upper",{"2":{"58":1,"59":1,"133":1}}],["updated",{"2":{"86":3,"131":1}}],["update",{"2":{"58":1,"59":1,"86":2,"131":4}}],["upgrading",{"2":{"12":1}}],["upgradable",{"2":{"12":1}}],["umean",{"2":{"55":2,"57":2}}],["u₀",{"2":{"22":1,"24":1,"25":1,"27":1,"56":1,"57":1}}],["un=u",{"2":{"134":1,"137":1}}],["un",{"2":{"134":1}}],["un≈u",{"2":{"134":1}}],["unless",{"2":{"124":1}}],["unknowns",{"2":{"120":1}}],["unknown",{"2":{"120":1,"124":2}}],["unnecessary",{"2":{"110":1}}],["underlying",{"2":{"96":1}}],["understand",{"2":{"92":1}}],["unresolved",{"2":{"90":2}}],["unsafeatomics",{"2":{"12":1}}],["unsteady",{"0":{"13":1,"16":1,"19":1,"41":1,"49":1,"74":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"8":1,"13":1,"16":1,"18":1,"19":4,"21":1,"22":2,"24":1,"25":2,"27":1,"29":2,"31":1,"34":1,"36":1,"41":1,"42":1,"43":2,"45":1,"46":2,"48":1,"49":3,"51":1,"52":2,"54":1,"55":2,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":1,"69":1,"70":1,"74":1,"76":1,"124":2,"130":3,"131":1,"134":1}}],["university",{"2":{"147":1}}],["unified",{"2":{"112":1}}],["uniformly",{"2":{"87":1}}],["uniform",{"2":{"13":1,"19":1,"39":1,"49":1,"116":1}}],["uniqueness",{"2":{"124":1}}],["unique",{"2":{"103":1}}],["union",{"2":{"58":4,"87":1,"111":2,"134":1,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["units",{"2":{"123":1}}],["unit",{"2":{"100":1,"109":3,"119":1}}],["unitrange",{"2":{"58":18,"95":2}}],["unitful",{"2":{"12":1}}],["unicode",{"2":{"12":1}}],["unicodefun",{"2":{"12":1}}],["unpack",{"2":{"12":1}}],["u",{"2":{"8":3,"19":1,"21":1,"22":3,"24":4,"25":3,"27":4,"43":1,"45":2,"46":2,"48":3,"50":1,"52":3,"53":1,"54":3,"55":28,"56":2,"57":30,"60":2,"61":2,"64":2,"65":2,"66":1,"69":2,"70":2,"73":1,"76":2,"83":2,"84":2,"85":5,"86":2,"87":7,"93":9,"95":7,"97":8,"98":7,"99":3,"102":1,"109":39,"111":5,"112":6,"113":3,"115":13,"116":3,"118":2,"119":3,"121":3,"130":5,"134":5,"135":3,"137":2}}],["us=u",{"2":{"137":1}}],["usually",{"2":{"91":1,"112":1,"115":1}}],["us",{"2":{"69":1,"137":1}}],["ustart",{"2":{"16":1,"18":2,"19":1,"21":2,"22":1,"24":2,"25":1,"27":2,"29":2,"31":2,"33":1,"34":1,"36":2,"39":1,"41":1,"42":2,"43":1,"45":2,"46":1,"48":2,"49":1,"51":2,"52":1,"54":2,"55":1,"57":2,"58":1,"59":2,"60":2,"61":3,"62":1,"63":2,"64":2,"65":3,"66":2,"68":2,"69":2,"70":2,"73":1,"74":1,"76":2,"130":1}}],["using",{"0":{"112":1},"1":{"113":1},"2":{"3":1,"4":2,"5":2,"14":1,"18":2,"19":2,"21":3,"22":2,"24":3,"25":2,"27":3,"29":1,"31":2,"32":1,"33":1,"36":3,"38":1,"42":2,"43":4,"45":3,"46":2,"48":3,"49":3,"51":4,"52":1,"54":2,"55":4,"57":5,"58":2,"59":3,"60":2,"61":3,"62":2,"63":3,"64":2,"65":3,"66":2,"68":3,"69":2,"70":3,"71":1,"72":2,"76":3,"86":3,"89":2,"93":1,"95":1,"109":2,"110":2,"111":1,"112":2,"116":1,"120":3,"124":2,"130":2,"131":1,"135":1,"137":1}}],["user",{"2":{"94":1,"110":1}}],["used",{"2":{"43":2,"44":1,"84":1,"89":1,"90":2,"91":1,"98":1,"101":1,"112":1,"113":1,"116":1,"119":1,"131":1}}],["uses",{"2":{"43":1,"86":1,"117":1,"135":1,"137":1}}],["useful",{"2":{"14":1,"19":1,"22":1,"25":1,"43":2,"44":1,"52":1,"55":1,"66":1,"96":1,"99":1,"116":1}}],["use",{"0":{"3":1},"2":{"4":1,"9":2,"12":1,"87":2,"89":2,"92":2,"94":1,"97":1,"109":1,"110":1,"112":4,"119":2,"121":1,"123":1,"131":1}}],["h",{"2":{"147":2}}],["h1+h2−ψi+h1+h2xi1+3",{"2":{"128":1}}],["hα=eα",{"2":{"119":1}}],["h=",{"2":{"116":1}}],["hussain",{"2":{"109":1,"147":1}}],["html",{"2":{"109":1}}],["https",{"2":{"11":1,"83":1,"109":1,"147":1}}],["hc2cfdftv",{"2":{"95":2}}],["hc2c",{"2":{"95":2}}],["hygiene",{"2":{"43":1}}],["hypergeometricfunctions",{"2":{"12":1}}],["hoyer",{"2":{"147":1}}],["home",{"2":{"58":1,"62":1,"69":1}}],["homogeneous",{"0":{"28":1,"32":1},"1":{"29":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":1},"2":{"28":1,"32":1,"147":1}}],["hot",{"2":{"58":1,"60":1}}],["horizontal",{"2":{"46":1,"97":1}}],["host",{"2":{"43":1,"130":1}}],["however",{"2":{"86":1,"91":1,"92":1,"94":1,"96":1,"124":1,"126":1,"134":1,"135":1}}],["how",{"2":{"43":2,"109":1,"112":2,"120":2,"131":1}}],["holders",{"2":{"9":1}}],["hist",{"2":{"60":1,"61":1,"64":1,"65":1}}],["history",{"2":{"8":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"30":1,"31":1,"34":1,"35":1,"36":1,"41":2,"42":1,"43":1,"45":1,"46":1,"47":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"66":1,"68":1,"74":1,"75":1,"76":1,"131":2}}],["hide",{"2":{"19":3,"22":3,"25":2,"33":1,"34":1,"39":1,"41":1,"43":4,"46":2,"49":2,"52":3,"55":2,"60":1,"64":2,"66":3,"73":2,"74":1}}],["highest",{"2":{"112":1}}],["highly",{"2":{"94":1}}],["high",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"147":1}}],["hwloc",{"2":{"12":2}}],["heun",{"2":{"143":1}}],["heun33",{"2":{"137":1,"143":2}}],["hem5",{"2":{"137":1,"140":1}}],["hem3bs",{"2":{"137":1,"140":2}}],["hem3",{"2":{"137":1,"140":1}}],["heated",{"2":{"147":1}}],["heatmap",{"2":{"42":1,"131":1}}],["heavier",{"2":{"72":1}}],["header",{"2":{"7":1}}],["here",{"2":{"22":1,"43":1,"46":1,"77":1,"83":1,"112":2,"135":1,"136":1}}],["hereby",{"2":{"9":1}}],["hairer",{"2":{"140":2}}],["harlow",{"2":{"119":1,"147":1}}],["hardware",{"2":{"58":1,"60":1,"62":1,"64":1}}],["harfbuzz",{"2":{"12":1}}],["hat",{"2":{"55":1,"57":1}}],["half",{"0":{"140":1},"2":{"22":1,"25":1,"43":1,"110":3}}],["have",{"2":{"12":1,"89":1,"95":1,"101":1,"123":2,"124":1,"130":1,"131":1}}],["handle",{"2":{"94":1}}],["hand",{"0":{"95":1},"2":{"8":2,"90":1,"95":9,"109":2,"111":1,"112":3,"113":11,"135":2}}],["hasharraymappedtries",{"2":{"12":1}}],["has",{"2":{"7":1,"69":1,"86":1,"87":1,"89":3,"91":1,"93":1,"95":1,"112":1,"115":2,"135":1}}],["+θyd",{"2":{"135":1}}],["+θf",{"2":{"135":2}}],["+θ",{"2":{"135":1}}],["+α−1c",{"2":{"135":2}}],["+o",{"2":{"134":1,"137":2}}],["+|γi+h1+h22|",{"2":{"128":1}}],["+l−1wdymdt",{"2":{"124":1}}],["+wdymdt",{"2":{"124":1}}],["+fh−",{"2":{"123":1}}],["+ν",{"2":{"123":1}}],["+m",{"2":{"83":1}}],["+c−gp¯",{"2":{"83":1}}],["+1",{"2":{"55":2,"57":2}}],["+=",{"2":{"49":1,"51":1}}],["+",{"2":{"6":2,"15":3,"17":5,"18":8,"19":1,"21":1,"22":1,"24":1,"29":1,"31":1,"33":1,"36":1,"39":1,"42":1,"49":8,"51":8,"52":2,"54":2,"55":18,"57":18,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":4,"65":4,"66":3,"68":3,"69":1,"70":1,"73":1,"76":1,"93":1,"95":15,"98":1,"116":3,"131":1,"135":4}}],["=∫κ≤∥k∥2",{"2":{"131":1}}],["=|ωi+h1+h2|ωi+h1+h2",{"2":{"128":1}}],["=f",{"2":{"123":1}}],["=p",{"2":{"102":1}}],["=u",{"2":{"102":1}}],["=−∇p+ν∇2u+f",{"2":{"100":1}}],["=−sin⁡",{"2":{"69":1}}],["=∥v¯θ−u¯∥2",{"2":{"86":1}}],["=∥m",{"2":{"86":1}}],["=+cos⁡",{"2":{"69":1}}],["=>",{"2":{"58":4}}],["==",{"2":{"15":2,"18":2,"19":4,"21":4,"22":1,"24":1,"25":1,"27":1,"39":1,"42":1,"49":3,"51":3,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"73":2,"76":2,"95":1}}],["=",{"2":{"5":1,"12":1,"15":19,"16":50,"17":13,"18":40,"19":37,"20":1,"21":38,"22":35,"23":7,"24":42,"25":31,"26":4,"27":35,"29":53,"31":21,"33":10,"34":21,"35":1,"36":32,"37":1,"39":9,"41":16,"42":25,"43":38,"44":4,"45":41,"46":34,"47":1,"48":35,"49":59,"50":13,"51":72,"52":40,"53":1,"54":41,"55":80,"56":8,"57":88,"58":189,"59":74,"60":48,"61":48,"62":71,"63":31,"64":49,"65":49,"66":34,"67":4,"68":38,"69":35,"70":35,"71":1,"72":2,"73":8,"74":23,"76":34,"87":1,"89":2,"93":17,"95":39,"97":32,"98":33,"109":5,"112":17,"115":2,"116":2,"130":1,"131":6,"132":2,"134":2,"135":2}}],["n∈",{"2":{"137":1}}],["nicholson",{"2":{"143":1}}],["nicolson",{"0":{"135":1},"2":{"134":1,"135":3}}],["niter",{"2":{"86":3}}],["n−1",{"2":{"134":1}}],["nα−1",{"2":{"119":1}}],["nα−12",{"2":{"119":1}}],["n1",{"2":{"119":1}}],["n1fv",{"2":{"95":3}}],["n=",{"2":{"119":1}}],["n=0",{"2":{"116":2,"134":1}}],["nd",{"2":{"119":1}}],["ndrange",{"2":{"111":2}}],["ndns",{"2":{"88":1}}],["nles",{"2":{"88":1}}],["nlist",{"2":{"69":8,"70":8}}],["nx",{"2":{"87":3}}],["nssp53",{"2":{"137":1,"145":2}}],["nssp33",{"2":{"137":1,"145":2}}],["nssp32",{"2":{"137":1,"145":2}}],["nssp21",{"2":{"137":1,"145":2}}],["nsee",{"2":{"116":1}}],["nsample",{"2":{"87":3}}],["nstep",{"2":{"86":1,"93":2}}],["nsubstep",{"2":{"86":2}}],["ntrajectory",{"2":{"86":1}}],["ntuple",{"2":{"58":2,"69":1,"70":1,"109":1,"130":1}}],["n^",{"2":{"69":2,"70":2}}],["npoint",{"2":{"131":1,"133":2}}],["np",{"2":{"58":6,"95":1,"97":1,"98":1,"116":1}}],["n₁",{"2":{"55":3,"57":3}}],["n₀",{"2":{"55":3,"57":3}}],["n",{"2":{"18":1,"29":1,"31":2,"33":2,"36":2,"39":1,"42":2,"43":2,"45":3,"51":1,"52":4,"54":5,"55":3,"57":4,"58":7,"59":2,"60":2,"61":3,"62":1,"63":2,"64":2,"65":3,"66":2,"68":3,"69":5,"70":5,"73":1,"76":2,"87":2,"95":1,"97":1,"98":1,"101":1,"115":1,"116":16,"130":4,"131":2,"133":3,"134":3,"137":2,"147":1}}],["nu3",{"2":{"121":3}}],["nunroll",{"2":{"86":1}}],["numa",{"2":{"117":1}}],["numthreads",{"2":{"72":1}}],["numerical",{"2":{"69":1,"70":1,"90":1,"147":5}}],["number",{"0":{"105":1},"2":{"19":1,"22":1,"25":1,"43":2,"46":1,"55":1,"58":1,"59":1,"66":1,"87":3,"105":1,"109":1,"115":2,"116":3,"117":3,"119":1,"130":2,"132":3,"133":1,"137":1}}],["numbers",{"2":{"8":1,"58":3,"59":1,"109":3,"117":1,"132":1}}],["nu2",{"2":{"58":5,"59":5}}],["nu1",{"2":{"58":4,"59":4}}],["nusseltplot",{"2":{"58":5,"59":2}}],["nusselt",{"2":{"58":7,"59":4}}],["nu",{"2":{"55":3,"57":3,"58":12,"59":6,"95":1,"97":1,"98":1,"116":1}}],["nupdate",{"2":{"16":2,"18":2,"19":5,"21":5,"22":5,"24":5,"25":5,"27":5,"29":4,"31":4,"34":6,"36":6,"41":4,"42":4,"43":8,"45":7,"46":7,"48":7,"49":7,"51":7,"52":5,"54":5,"55":5,"57":5,"58":4,"59":4,"60":3,"61":3,"62":2,"63":2,"64":3,"65":3,"66":5,"68":5,"74":6,"76":6,"86":1,"88":1,"131":7}}],["nghttp2",{"2":{"12":1}}],["nnlib",{"2":{"12":1}}],["normalization",{"2":{"123":1}}],["normalize",{"2":{"15":1,"18":1,"86":1}}],["normal",{"2":{"101":1,"115":3}}],["nop",{"2":{"95":1}}],["noiselevel",{"2":{"86":1}}],["noise",{"2":{"55":1}}],["now",{"2":{"43":1,"93":1,"95":1,"120":1,"137":1}}],["nonuniform",{"2":{"116":3,"133":1}}],["nonempty",{"2":{"86":1}}],["nondim",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["non",{"0":{"145":1},"2":{"43":1,"90":1,"92":3,"93":1,"94":1,"95":2,"98":1,"99":1,"115":2,"117":2,"123":1,"124":1,"132":2,"134":3}}],["noninfringement",{"2":{"9":1}}],["nodejs",{"2":{"12":1}}],["no",{"2":{"9":1,"90":1,"103":1,"111":1,"115":1,"137":2}}],["notation",{"2":{"103":1,"119":3,"123":1}}],["noting",{"2":{"127":1}}],["notify",{"2":{"58":1,"59":1}}],["notice",{"2":{"9":2,"95":1}}],["note",{"2":{"43":3,"44":1,"55":1,"82":1,"93":1,"97":1,"103":1,"107":1,"109":1,"115":1,"116":2,"119":1,"120":2,"130":1,"135":1,"137":2,"142":1}}],["nothing",{"2":{"19":3,"22":4,"24":1,"25":3,"27":1,"33":1,"34":1,"39":1,"41":1,"43":4,"44":1,"46":2,"49":2,"52":3,"55":2,"58":60,"60":1,"64":2,"66":3,"73":2,"74":1,"87":1,"93":1,"94":1,"95":8,"97":3,"98":7,"112":1,"113":1,"115":1,"130":1,"131":2,"134":2}}],["not",{"2":{"4":1,"5":1,"9":1,"14":1,"19":1,"22":1,"25":1,"43":2,"52":1,"55":1,"66":1,"86":3,"89":2,"90":1,"94":1,"95":1,"97":1,"99":2,"116":1,"121":1,"124":1,"126":1,"134":2,"142":1,"143":1}}],["natural",{"2":{"147":2}}],["national",{"2":{"147":1}}],["nan",{"2":{"95":2}}],["nanmath",{"2":{"12":1}}],["navier",{"0":{"100":1,"120":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"95":1,"100":1,"101":1,"105":1,"112":2,"113":3,"134":1,"147":3}}],["names",{"2":{"130":1}}],["namedtuple",{"2":{"58":15,"88":1,"109":1,"111":1,"130":1,"131":3,"133":2}}],["named",{"2":{"44":1,"86":2,"97":1,"116":1,"117":2,"130":1,"132":1}}],["nameresolution",{"2":{"12":1}}],["name",{"2":{"7":1,"43":1,"46":1,"97":1}}],["never",{"2":{"130":1}}],["next",{"2":{"124":1,"135":1}}],["negligible",{"2":{"116":1}}],["neumann",{"2":{"98":1,"102":1,"115":1}}],["neural",{"0":{"81":1,"83":1,"87":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"83":1,"84":2,"87":4,"147":1}}],["neuralclosure`",{"2":{"12":1}}],["neuralclosure",{"0":{"84":1},"2":{"5":3,"12":1,"83":2,"84":9,"85":7,"86":16,"87":9,"88":3}}],["near",{"2":{"22":1,"43":1,"46":1}}],["newton",{"2":{"134":1,"137":3}}],["new",{"2":{"12":1,"22":1,"25":1,"86":2,"87":1,"90":1,"133":1}}],["networks",{"2":{"87":1}}],["network",{"0":{"81":1},"2":{"87":1,"147":1}}],["networkoptions",{"2":{"12":1}}],["netpbm",{"2":{"12":1}}],["needs",{"2":{"5":1}}],["need",{"2":{"5":1,"29":1,"38":1,"90":1,"92":1,"98":1,"132":1}}],["needed",{"2":{"5":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["dyn",{"2":{"147":2}}],["dynamics",{"2":{"147":1}}],["dymdt≈",{"2":{"124":1}}],["dymdt",{"2":{"124":1,"134":1,"137":2}}],["dsso2",{"2":{"137":1,"144":1}}],["dsrkso2",{"2":{"144":1}}],["dsrk",{"0":{"144":1}}],["dsrk3",{"2":{"137":1,"144":2}}],["dsrk2",{"2":{"137":1,"144":2}}],["dv+yd",{"2":{"135":1}}],["dv¯dt=f",{"2":{"83":1}}],["drawbacks",{"2":{"112":1}}],["driven",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1}}],["d=2|∇p|∇2p",{"2":{"109":1}}],["dγ",{"2":{"101":1}}],["d∈",{"2":{"97":1,"100":1}}],["d+1",{"2":{"97":1}}],["du0+yd",{"2":{"135":1}}],["duh+yd",{"2":{"123":1}}],["duhdt=−c",{"2":{"123":1}}],["duhdt=",{"2":{"112":1,"124":1}}],["du",{"2":{"95":4,"112":4}}],["dual",{"2":{"95":1}}],["dudt",{"2":{"95":5,"113":4}}],["dudt=f",{"2":{"83":1,"112":1,"134":1}}],["duplicated",{"2":{"94":1,"95":3}}],["du¯dt=f",{"2":{"83":1}}],["due",{"2":{"28":1,"32":1,"137":1}}],["dns",{"2":{"83":2,"85":6,"86":2,"88":4,"90":1}}],["dtdy",{"2":{"58":4,"59":4}}],["d",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"55":3,"57":2,"66":4,"68":5,"69":3,"70":3,"87":1,"88":1,"97":6,"109":8,"115":2,"116":3,"119":3,"120":1,"123":1,"135":1,"147":2}}],["d6f4376e",{"2":{"12":1}}],["dftw",{"2":{"95":1}}],["dft",{"2":{"95":5}}],["dfaa095f",{"2":{"12":1}}],["dfield",{"2":{"8":1,"109":2}}],["d091e8ba",{"2":{"12":1}}],["d0879d2d",{"2":{"12":1}}],["d4300ac3",{"2":{"12":1}}],["d49dbf32",{"2":{"12":1}}],["ddtuiα=−∑β=1d",{"2":{"120":1,"122":1}}],["ddt1|o|∫oudω=1|o|∫∂o",{"2":{"101":1}}],["ddudt",{"2":{"95":1}}],["dd4b983a",{"2":{"12":1}}],["ddb6d928",{"2":{"12":1}}],["d7e528f0",{"2":{"12":1}}],["d7ba0133",{"2":{"12":1}}],["dbodyforce",{"2":{"117":1}}],["dbus",{"2":{"12":1}}],["dbb5928d",{"2":{"12":1}}],["dc90abb0",{"2":{"12":1}}],["dce04be8",{"2":{"12":1}}],["d236fae5",{"2":{"12":1}}],["d25df0c9",{"2":{"12":1}}],["d96e819e",{"2":{"12":1}}],["d9f16b24",{"2":{"12":1}}],["d8fb68d0",{"2":{"12":1}}],["d8793406",{"2":{"12":1}}],["d8e11817",{"2":{"12":1}}],["d1454406",{"2":{"12":1}}],["d125e4d3",{"2":{"12":1}}],["d1acc4aa",{"2":{"12":1}}],["david",{"2":{"137":1}}],["dash",{"2":{"69":1,"70":1}}],["dates",{"2":{"12":1}}],["dataloader",{"2":{"86":11}}],["data",{"0":{"88":1},"2":{"69":1,"70":1,"83":1,"86":4,"88":5,"131":1}}],["datavalueinterfaces",{"2":{"12":1}}],["datastructures",{"2":{"12":1}}],["dataapi",{"2":{"12":1}}],["dad2f222",{"2":{"12":1}}],["daee34ce",{"2":{"12":1}}],["damages",{"2":{"9":1}}],["d38c429a",{"2":{"12":1}}],["d360d2e6",{"2":{"12":1}}],["doi",{"2":{"147":1}}],["doing",{"2":{"137":1}}],["dormand",{"2":{"138":1}}],["dopri6",{"2":{"137":1,"138":1}}],["doproject",{"2":{"69":1,"70":1,"118":1}}],["dots",{"2":{"116":1}}],["dof",{"2":{"115":2}}],["dofs",{"2":{"115":1,"116":4}}],["downside",{"2":{"94":1}}],["downloads",{"2":{"12":1}}],["dodissipation",{"2":{"58":8,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["done",{"2":{"98":1}}],["don",{"2":{"43":1}}],["double",{"2":{"43":2,"110":2}}],["does",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"86":3,"99":1}}],["domain",{"2":{"13":1,"19":1,"43":1,"49":1,"100":2,"115":1,"116":1,"119":2,"134":1}}],["do",{"2":{"9":1,"43":1,"49":2,"51":2,"55":3,"57":3,"58":2,"59":2,"94":1,"131":1}}],["docopy",{"2":{"130":1}}],["docolorbar",{"2":{"22":1,"24":1,"52":1,"54":1}}],["documentervitepress",{"2":{"12":1}}],["documentercitations",{"2":{"12":1}}],["documenter",{"2":{"12":1}}],["documentation",{"2":{"5":1,"9":1,"112":1}}],["docstringextensions",{"2":{"12":1}}],["docs",{"2":{"5":1,"12":1,"58":1,"62":1,"69":1}}],["døving",{"2":{"9":1}}],["diagonally",{"2":{"139":1}}],["diagonal",{"2":{"123":2}}],["diag",{"2":{"111":1}}],["diameter",{"2":{"15":1,"18":1,"19":1,"21":1}}],["dit",{"2":{"95":3}}],["divide",{"2":{"134":1}}],["divided",{"2":{"43":1,"101":1,"123":1,"137":1}}],["dividing",{"2":{"120":1}}],["divoftensor",{"2":{"109":1}}],["div",{"2":{"98":7,"109":1}}],["divergence",{"2":{"8":2,"92":2,"97":3,"98":4,"99":2,"100":1,"103":2,"109":5,"111":3,"118":1,"120":1,"123":2,"124":4,"134":2,"135":2,"136":1,"137":2}}],["digits",{"2":{"43":1}}],["dimensionless",{"2":{"117":1,"132":1}}],["dimensions",{"2":{"109":1,"119":1}}],["dimension",{"2":{"58":12,"87":8,"95":2,"97":3,"98":2,"100":1,"109":3,"115":1,"116":4,"119":2,"122":1}}],["dimensionalization",{"2":{"117":1,"132":1}}],["dimensional",{"2":{"43":1,"109":1,"116":1,"147":2}}],["dims",{"2":{"55":1,"57":1,"58":1,"59":1}}],["dim",{"2":{"15":6,"18":6,"19":7,"21":7,"22":4,"24":4,"25":4,"27":4,"39":2,"42":2,"43":2,"45":1,"46":1,"48":1,"49":8,"51":8,"52":4,"54":4,"55":2,"57":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":2,"69":6,"70":6,"73":3,"76":3,"117":1,"132":1}}],["diff",{"2":{"109":1}}],["diffusive",{"2":{"109":3,"120":1}}],["diffusion",{"2":{"8":3,"97":6,"99":2,"109":8,"123":2,"130":1,"135":2}}],["differences",{"2":{"128":1}}],["difference",{"2":{"120":1,"135":1}}],["differentiability",{"2":{"112":1}}],["differentiable",{"2":{"91":1,"92":4,"93":2,"109":21,"111":3,"115":3,"147":1}}],["differentiation",{"0":{"92":1,"94":1},"1":{"93":1,"95":1}}],["differentiating",{"0":{"91":1},"1":{"92":1,"93":1,"94":1,"95":1},"2":{"95":1}}],["differentiated",{"2":{"134":1}}],["differentiate",{"2":{"86":1,"93":1,"95":2}}],["differentially",{"2":{"147":1}}],["differentialequations",{"2":{"112":1,"134":1}}],["differential",{"2":{"43":1,"112":1,"134":1}}],["different",{"2":{"43":5,"62":1,"64":1,"69":1,"98":1,"110":2,"126":1}}],["diffeqbase",{"2":{"12":1}}],["diffrules",{"2":{"12":1}}],["diffresults",{"2":{"12":1}}],["discussed",{"2":{"112":1}}],["discretize",{"2":{"134":1}}],["discretized",{"2":{"87":1,"134":2}}],["discretizing",{"2":{"124":1}}],["discretization",{"0":{"119":1,"120":1,"122":1,"134":1},"1":{"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"101":1,"119":2,"122":4,"136":1,"137":1,"147":2}}],["discretizations",{"2":{"83":1,"123":1,"147":1}}],["discretely",{"2":{"124":1}}],["discrete",{"0":{"124":1,"125":1},"1":{"126":1,"127":1},"2":{"83":1,"85":1,"109":1,"111":1,"112":1,"119":2,"120":4,"123":3,"124":8,"128":1,"134":3,"137":1}}],["diss",{"2":{"109":2}}],["dissipation",{"2":{"8":2,"28":1,"32":1,"109":9,"147":1}}],["distance",{"2":{"43":1,"116":1}}],["distribution",{"2":{"64":1}}],["distributions",{"2":{"12":1}}],["distributed",{"2":{"12":1,"15":1,"19":1,"49":1}}],["distribute",{"2":{"9":1}}],["display",{"2":{"131":3}}],["displayupdates",{"2":{"86":2,"131":1}}],["displayref",{"2":{"86":1}}],["displayed",{"2":{"77":1,"131":2}}],["displayfig",{"2":{"29":2,"31":2,"41":2,"42":2,"74":1,"76":1,"86":1,"131":1}}],["dispatchdoctor",{"2":{"12":1}}],["disk",{"2":{"15":3,"18":3,"19":3,"21":3,"49":4,"51":4}}],["dirk",{"2":{"139":2,"142":1}}],["dirichlet",{"2":{"43":1,"98":1,"102":1,"115":1,"124":2,"134":1}}],["dirichletbc",{"2":{"8":1,"15":2,"18":1,"19":1,"21":1,"22":3,"24":3,"25":3,"27":3,"43":4,"45":4,"46":4,"48":4,"49":1,"51":1,"52":1,"54":1,"58":44,"59":6,"60":6,"61":6,"62":4,"63":4,"64":6,"65":6,"98":6,"99":1,"115":2}}],["dir",{"2":{"19":2,"21":2,"22":2,"24":2,"25":2,"27":2,"34":1,"36":1,"43":2,"45":2,"46":2,"48":2,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"58":1,"59":1,"60":2,"61":2,"62":1,"63":1,"64":2,"65":2,"66":2,"68":2,"69":1,"70":1,"74":1,"76":1,"131":1}}],["directly",{"2":{"112":1,"124":1,"134":1}}],["direction",{"2":{"109":1,"116":6,"117":1,"132":1}}],["directbuf",{"2":{"95":1}}],["directory",{"2":{"19":1,"22":1,"25":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"69":1}}],["direct",{"2":{"8":1,"52":1,"54":1,"60":1,"61":1,"64":1,"65":1,"89":2,"90":1,"95":7,"110":1,"111":3,"147":2}}],["deep",{"2":{"147":1}}],["details",{"2":{"136":1}}],["determined",{"2":{"124":1,"131":1}}],["determines",{"2":{"43":1}}],["detectable",{"2":{"5":1}}],["detected",{"2":{"4":1}}],["derived",{"2":{"122":2}}],["derive",{"2":{"120":1}}],["derivation",{"2":{"112":1}}],["derivative",{"2":{"95":1,"120":2}}],["derivatives",{"2":{"19":1,"103":1,"120":1,"128":1}}],["denoted",{"2":{"119":1}}],["denotes",{"2":{"116":1}}],["describe",{"2":{"100":1}}],["desired",{"2":{"89":1,"110":1}}],["degrees",{"2":{"87":1,"99":2,"120":1}}],["decomposition",{"2":{"111":1,"135":1}}],["decollocate",{"2":{"84":1}}],["decaying",{"0":{"28":1,"32":1},"1":{"29":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":1},"2":{"28":1,"32":1,"147":1}}],["deac9b47",{"2":{"12":1}}],["dealings",{"2":{"9":1}}],["deal",{"2":{"9":1}}],["de0858da",{"2":{"12":1}}],["delimitedfiles",{"2":{"12":1}}],["delaunaytriangulation",{"2":{"12":1}}],["definite",{"2":{"135":1}}],["definition",{"2":{"134":2}}],["definitions",{"2":{"119":1}}],["defined",{"2":{"94":1,"106":1,"107":1,"112":1,"120":1,"126":1,"127":1,"128":1,"131":1,"134":1,"135":1}}],["define",{"2":{"39":1,"58":2,"95":1,"119":1,"120":1,"127":1,"134":1}}],["definesingletons",{"2":{"12":1}}],["defaults",{"2":{"117":1}}],["default",{"2":{"3":1,"8":1,"11":1,"33":1,"36":1,"43":2,"91":1,"92":1,"93":1,"95":1,"111":2,"112":1,"131":3}}],["deviation",{"2":{"133":1}}],["device",{"2":{"43":2,"86":4,"130":1}}],["dev",{"2":{"7":1}}],["deved",{"2":{"5":1}}],["develop",{"2":{"5":1,"101":1}}],["developed",{"2":{"5":1}}],["development",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"4":1,"112":1}}],["dedicated",{"2":{"5":1}}],["depending",{"2":{"90":1,"99":1}}],["depend",{"2":{"58":1,"98":1}}],["dependent",{"2":{"147":1}}],["dependencies",{"2":{"5":1,"82":1}}],["depended",{"2":{"7":1}}],["depends",{"2":{"5":1}}],["mte22",{"2":{"137":1,"143":1}}],["mvi+ym",{"2":{"137":1}}],["mv~+ym",{"2":{"136":1}}],["mv¯=0",{"2":{"83":1}}],["m",{"2":{"83":3,"84":1,"98":2,"109":2,"123":1,"124":1,"135":1,"136":1,"147":5}}],["mp4",{"2":{"60":1,"61":1,"64":1,"65":1,"131":1}}],["mu0+ym",{"2":{"137":1}}],["mu+ym=0",{"2":{"134":1}}],["muh+ym=0",{"2":{"123":1}}],["mutation",{"2":{"92":1,"94":1}}],["mutating",{"2":{"92":2,"93":1,"94":2,"95":4,"134":2}}],["must",{"2":{"87":1,"90":1,"92":1,"94":1,"115":2,"124":1}}],["mu¯=0",{"2":{"83":1}}],["mu=0",{"2":{"83":1}}],["much",{"2":{"43":1}}],["multiplier",{"2":{"124":1}}],["multiple",{"2":{"5":1,"72":1,"89":1,"109":1,"111":1,"131":1}}],["multi",{"2":{"117":1}}],["multithreaded",{"2":{"89":1}}],["multiactuator",{"2":{"49":1,"51":1}}],["muladdmacro",{"2":{"12":1}}],["mkpath",{"2":{"69":1,"70":1}}],["mkv",{"2":{"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"74":1,"76":1,"131":1}}],["mkl",{"2":{"12":1}}],["m`",{"2":{"12":1}}],["mbedtls",{"2":{"12":1}}],["mmap",{"2":{"12":1}}],["miscellaneous",{"0":{"143":1}}],["missings",{"2":{"12":1}}],["midpoint",{"2":{"143":1}}],["mid22",{"2":{"137":1,"143":1}}],["mid",{"2":{"120":2,"128":1}}],["minimal",{"2":{"143":1}}],["minimize",{"2":{"86":2}}],["minimizing",{"2":{"86":2}}],["min",{"2":{"130":2}}],["minus",{"2":{"43":1}}],["mixed",{"0":{"79":1}}],["mixing",{"0":{"52":1},"1":{"53":1,"54":1},"2":{"43":1,"52":1,"62":1,"64":1,"110":1}}],["microcollections",{"2":{"12":1}}],["mit",{"2":{"9":1}}],["media",{"2":{"147":1}}],["mechanics",{"2":{"147":1}}],["mech",{"2":{"147":1}}],["mesh",{"2":{"116":1,"147":1}}],["meshio",{"2":{"12":1}}],["meet",{"2":{"94":1}}],["metal",{"2":{"89":1}}],["methods",{"0":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"134":2,"135":2,"137":2,"147":4}}],["method",{"0":{"135":1,"136":1},"2":{"15":1,"16":1,"18":1,"19":1,"21":1,"43":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"60":1,"61":1,"69":1,"85":2,"86":3,"88":1,"93":3,"95":1,"130":2,"134":14,"135":2,"136":2,"137":6,"143":2}}],["meaning",{"2":{"94":1}}],["means",{"2":{"91":1,"120":1}}],["mean",{"2":{"55":1,"57":1,"86":1,"133":1}}],["meanplot",{"2":{"55":2,"57":2}}],["memory",{"2":{"43":1,"92":1,"109":1,"116":2,"137":1}}],["merchantability",{"2":{"9":1}}],["merge",{"2":{"9":1}}],["mlutils",{"2":{"12":1}}],["mlstyle",{"2":{"12":1}}],["mldatadevices",{"2":{"12":1}}],["momemtum",{"2":{"103":1}}],["momentum",{"2":{"8":1,"66":1,"100":1,"109":4,"112":1,"120":2,"122":1,"123":2,"124":3,"132":1}}],["more",{"2":{"102":1,"112":2}}],["most",{"2":{"91":2,"92":1,"94":1}}],["mosaicviews",{"2":{"12":1}}],["motions",{"2":{"90":2}}],["move",{"2":{"130":1}}],["moved",{"2":{"86":1}}],["movement",{"2":{"46":1}}],["moving",{"2":{"43":2,"46":1}}],["mozillacacerts",{"2":{"12":1}}],["modeling",{"2":{"112":1,"147":1}}],["modelling",{"2":{"84":1,"147":1}}],["models",{"0":{"81":1,"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"90":4,"147":2}}],["model",{"2":{"52":1,"58":6,"83":3,"84":2,"86":4,"87":3,"90":1,"95":1,"97":1,"98":1,"109":2,"117":1}}],["modeled",{"2":{"13":1,"19":1,"49":1}}],["moderate",{"2":{"43":1}}],["moderngl",{"2":{"12":1}}],["mode",{"2":{"12":1,"82":1,"91":1}}],["modify",{"2":{"9":1}}],["modulename",{"2":{"7":1}}],["module",{"0":{"84":1},"2":{"7":1,"84":1}}],["modules",{"2":{"4":1}}],["macart",{"2":{"147":1}}],["machine",{"2":{"147":1}}],["macrotools",{"2":{"12":1}}],["masks",{"2":{"133":1}}],["mass",{"2":{"100":1,"120":1,"122":1,"123":2,"134":5}}],["margin",{"2":{"133":1}}],["marks",{"2":{"92":1}}],["marked",{"2":{"12":1}}],["markdown",{"2":{"12":1}}],["markdownast",{"2":{"12":1}}],["major",{"2":{"121":2}}],["made",{"2":{"89":1,"120":1,"135":1}}],["maxiter",{"2":{"111":1,"134":1,"137":1}}],["maximum",{"2":{"97":1,"98":1,"130":1}}],["max",{"2":{"58":1,"59":1,"60":1,"61":1,"64":1,"65":1,"116":1}}],["maps",{"2":{"119":1}}],["map",{"2":{"49":1,"51":1}}],["mappedarrays",{"2":{"12":1}}],["main",{"2":{"15":2,"58":4,"69":1}}],["make",{"2":{"66":1,"89":1,"92":1,"93":1,"95":2}}],["makes",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"111":1}}],["makiecore",{"2":{"12":1}}],["makie",{"2":{"12":1,"14":1,"19":1,"22":1,"25":1,"29":1,"38":1,"43":1,"52":1,"55":1,"66":1,"131":1}}],["may",{"2":{"12":1,"20":1,"23":1,"26":1,"30":1,"44":2,"47":1,"50":1,"53":1,"56":1,"67":1,"90":2,"110":1,"130":1,"134":2,"137":1}}],["many",{"2":{"92":1,"112":1}}],["manyforce",{"2":{"49":2,"51":2}}],["manualmemory",{"2":{"12":1}}],["manifest",{"2":{"12":2}}],["manager",{"2":{"3":1}}],["mathematics",{"2":{"147":1}}],["mathtexengine",{"2":{"12":1}}],["matlab",{"2":{"121":1,"131":1,"137":1}}],["matrices",{"0":{"96":1,"98":1},"1":{"97":1,"98":1,"99":1},"2":{"89":1,"96":1,"97":5,"98":1,"109":1}}],["matrix",{"0":{"123":1},"2":{"8":1,"60":1,"64":1,"95":2,"96":3,"97":5,"98":5,"99":13,"110":1,"111":3,"123":4,"124":2,"135":3,"137":1}}],["mat",{"2":{"8":10,"97":12,"98":2,"99":19}}],["~",{"2":{"4":1}}],["smith",{"2":{"147":1}}],["smatrixes",{"2":{"109":1}}],["smagtensor",{"2":{"109":1}}],["smagorinsky",{"2":{"8":1,"109":5}}],["smallest",{"2":{"90":2}}],["small",{"2":{"43":1}}],["s^2",{"2":{"138":1}}],["sdirk34",{"2":{"137":1,"139":1}}],["ssp43",{"2":{"137":1,"138":2}}],["ssp42",{"2":{"137":1,"138":2}}],["ssp33",{"2":{"137":1,"138":2}}],["ssp22",{"2":{"137":1,"138":2}}],["ssp104",{"2":{"137":1,"138":2}}],["ssp",{"0":{"145":1},"2":{"137":1,"138":2,"139":3}}],["snapshotsaver",{"2":{"131":3}}],["skew",{"2":{"120":1}}],["skip",{"2":{"112":1,"131":1}}],["sleeping",{"2":{"131":1}}],["sleeptime",{"2":{"131":2}}],["slept",{"2":{"131":1}}],["slopeoffset",{"2":{"131":1}}],["slope",{"2":{"131":2}}],["sloperange",{"2":{"131":1}}],["slower",{"2":{"95":1}}],["slow",{"2":{"92":1}}],["slip",{"2":{"111":1,"115":1}}],["s2+r2",{"2":{"109":2}}],["s",{"2":{"94":2,"97":1,"109":1,"116":4,"131":6,"137":4,"138":4,"139":2,"144":3,"147":2}}],["squares",{"2":{"126":1}}],["squared",{"2":{"86":1,"109":1}}],["sqrt",{"2":{"55":1,"57":1,"69":2,"70":2}}],["suitable",{"2":{"135":1}}],["suitesparse",{"2":{"12":2}}],["success",{"2":{"112":1}}],["such",{"2":{"43":1,"89":1,"98":1,"103":1,"108":2,"110":2,"116":1,"120":1,"130":1,"134":1,"137":1}}],["surface",{"2":{"101":1,"147":1}}],["sure",{"2":{"89":1}}],["sufficient",{"2":{"90":1}}],["supported",{"2":{"91":1,"94":1}}],["supporting",{"2":{"89":1}}],["supports",{"2":{"89":1,"132":1}}],["support",{"0":{"89":1},"2":{"110":1}}],["summand",{"2":{"131":7}}],["summing",{"2":{"126":1}}],["sum",{"2":{"52":1,"54":1,"55":1,"57":1,"58":6,"59":6,"69":2,"70":2,"93":2,"109":1,"111":1,"131":4}}],["subgrid",{"2":{"147":1}}],["substep",{"2":{"137":1}}],["substantial",{"2":{"9":1}}],["subtract",{"2":{"109":2}}],["subtypes",{"2":{"85":1}}],["sub",{"2":{"90":4,"134":2,"137":2,"147":1}}],["subject",{"2":{"9":1,"134":1}}],["sublicense",{"2":{"9":1}}],["she",{"2":{"123":1}}],["shearlayer2d",{"2":{"66":1,"68":1}}],["shear",{"0":{"66":1},"1":{"67":1,"68":1},"2":{"66":1}}],["shgit",{"2":{"83":1}}],["should",{"2":{"43":3,"46":2,"58":1,"85":1,"109":3,"110":1,"111":1,"115":1,"131":1}}],["short",{"2":{"19":2}}],["showmax",{"2":{"131":1}}],["showdt",{"2":{"131":1}}],["showt",{"2":{"131":1}}],["showiter",{"2":{"131":1}}],["showspeed",{"2":{"131":1}}],["shows",{"2":{"112":1}}],["show",{"2":{"93":1,"131":1}}],["showoff",{"2":{"12":1}}],["showcases",{"2":{"12":1}}],["shaped",{"2":{"97":1}}],["shadd",{"2":{"82":1}}],["shaderabstractions",{"2":{"12":1}}],["sharedarrays",{"2":{"12":1}}],["sha",{"2":{"12":1}}],["shall",{"2":{"9":2}}],["shifted",{"2":{"122":1}}],["shift",{"2":{"6":1}}],["satisfying",{"2":{"143":5}}],["satisfied",{"2":{"142":1}}],["say",{"2":{"134":1}}],["san",{"2":{"131":1,"147":1}}],["sanderse",{"2":{"9":1,"137":3,"147":4}}],["samples",{"2":{"86":1,"87":1}}],["same",{"2":{"43":1,"46":1,"87":1,"93":1,"97":1,"109":1,"111":1,"115":1,"119":1,"123":2,"126":1,"130":1,"135":1,"137":1}}],["saving",{"2":{"43":2,"46":1,"58":1,"62":1}}],["saved",{"2":{"131":2}}],["savefreq",{"2":{"88":1}}],["save",{"2":{"8":1,"21":1,"24":1,"27":1,"45":1,"48":1,"51":1,"54":1,"57":1,"68":1,"69":1,"70":1,"88":1,"131":2}}],["systems",{"2":{"112":1}}],["system",{"2":{"111":1,"134":2,"137":1}}],["syver",{"2":{"9":1}}],["symmetric",{"2":{"115":1,"124":1}}],["symmetricbc",{"2":{"8":1,"58":16,"59":2,"60":2,"61":2,"62":4,"63":4,"64":6,"65":6,"115":2}}],["symmetry",{"2":{"86":5,"109":2,"120":1,"136":1,"147":1}}],["symbol",{"2":{"58":12,"111":1,"119":1}}],["symbolicindexinginterface",{"2":{"12":1}}],["symbols",{"2":{"8":1}}],["scitation",{"2":{"147":1}}],["science",{"2":{"147":1}}],["sciences",{"2":{"147":1}}],["sciml",{"0":{"112":1},"1":{"113":1},"2":{"112":4}}],["scimlstructures",{"2":{"12":1}}],["scimloperators",{"2":{"12":1}}],["scimlbase",{"2":{"12":1,"112":2}}],["schemes",{"2":{"139":2}}],["scheme",{"2":{"119":1,"134":1,"137":1}}],["scatterlines",{"2":{"69":1,"70":1}}],["scatter",{"2":{"55":2,"57":2}}],["scaling",{"2":{"118":1}}],["scalar",{"2":{"94":1,"97":2,"99":2,"103":1,"107":1,"108":1,"109":6,"118":1,"119":2,"127":1,"131":1,"137":1}}],["scalarfield",{"2":{"8":2,"99":3,"118":1}}],["scales",{"2":{"90":2}}],["scaled",{"2":{"43":1}}],["scalewithvolume",{"2":{"8":1,"109":2}}],["scale",{"2":{"8":1,"83":2,"90":1,"109":9,"147":2}}],["screen",{"2":{"59":6,"69":1,"131":2}}],["scratch",{"2":{"12":1}}],["scripts",{"2":{"6":1,"77":1}}],["scopedvalues",{"2":{"12":1}}],["silvis",{"2":{"147":1}}],["sirignano",{"2":{"147":1}}],["sijsij",{"2":{"109":2}}],["singly",{"2":{"139":1}}],["single",{"2":{"43":4,"110":5}}],["since",{"2":{"40":1,"95":1,"119":1,"120":1,"124":1,"135":1}}],["sin⁡",{"2":{"37":1,"69":1}}],["sin",{"2":{"19":3,"21":3,"52":1,"54":1,"60":1,"61":1,"66":1,"68":1,"69":2,"70":2}}],["sinpi",{"2":{"15":2,"18":2,"39":1,"42":1,"49":2,"51":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":2,"65":2,"73":4,"76":4}}],["sixel",{"2":{"12":1}}],["signeddistancefields",{"2":{"12":1}}],["simplicity",{"2":{"120":1}}],["simply",{"2":{"99":1,"137":1}}],["simple",{"0":{"78":1},"2":{"97":1,"147":1}}],["simpleunpack",{"2":{"12":1}}],["simpletraits",{"2":{"12":1}}],["simulation",{"0":{"90":1},"2":{"83":1,"90":2,"93":1,"113":1,"134":1,"147":2}}],["simulations",{"2":{"5":1,"44":1,"77":1,"82":1,"147":2}}],["similarly",{"2":{"120":1}}],["similar",{"2":{"28":1,"32":1,"95":1,"97":1,"99":1,"109":1,"112":2}}],["simdtypes",{"2":{"12":1}}],["simd",{"2":{"12":1}}],["sizes",{"2":{"87":1,"101":1,"109":2,"123":3}}],["size",{"2":{"11":1,"15":1,"16":1,"17":3,"18":5,"22":2,"23":3,"24":5,"43":1,"49":2,"50":3,"51":5,"52":2,"54":2,"58":4,"59":1,"62":2,"63":2,"64":2,"65":2,"83":1,"87":2,"93":3,"97":1,"98":1,"99":1,"101":1,"116":3,"120":1}}],["sides",{"2":{"115":1}}],["side",{"0":{"95":1},"2":{"8":2,"25":1,"95":9,"109":2,"111":1,"112":3,"113":11,"115":2,"135":2}}],["stuff",{"2":{"133":2}}],["study",{"0":{"69":1},"1":{"70":1}}],["stubs",{"2":{"12":1}}],["stimulate",{"2":{"55":1}}],["storage",{"2":{"121":1,"138":2}}],["storing",{"2":{"109":1}}],["store",{"2":{"95":2,"113":1}}],["stores",{"2":{"94":1,"131":1}}],["stored",{"2":{"40":1,"92":1,"95":1,"97":4,"109":1,"113":1,"117":2,"131":1,"132":1}}],["stokes",{"0":{"100":1,"120":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"95":1,"100":1,"101":1,"105":1,"112":2,"113":3,"134":1,"147":3}}],["steady",{"2":{"22":4,"24":1,"25":4,"27":1,"39":1,"40":1,"43":3,"46":3}}],["stepping",{"2":{"93":1,"131":2,"135":2}}],["steppers",{"2":{"134":2}}],["stepper",{"2":{"8":1,"93":5,"130":2,"131":1,"134":6}}],["steps",{"2":{"43":1,"131":4,"135":1,"137":2}}],["step",{"0":{"22":1,"25":1},"1":{"23":1,"24":1,"26":1,"27":1},"2":{"22":1,"25":1,"43":2,"130":4,"131":5,"134":5,"135":3,"136":1,"137":6}}],["styledstrings",{"2":{"12":1}}],["stretch",{"2":{"116":1}}],["stretched",{"2":{"8":1,"116":4}}],["streamfunction",{"2":{"131":1}}],["stream",{"0":{"108":1,"128":1},"2":{"108":2,"128":3}}],["streamwise",{"2":{"55":3,"57":2}}],["stress",{"2":{"102":1,"109":2}}],["stresses",{"2":{"90":5}}],["structures",{"2":{"64":1}}],["structtypes",{"2":{"12":1}}],["structio",{"2":{"12":1}}],["structarrays",{"2":{"12":1}}],["stripped",{"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["stringencodings",{"2":{"12":1}}],["stridearrayscore",{"2":{"12":1}}],["strain",{"2":{"8":1,"109":6}}],["stable",{"2":{"142":1}}],["stablerngs",{"2":{"12":1}}],["stage",{"2":{"138":2,"139":1,"140":1}}],["stages",{"2":{"137":1}}],["staggered",{"2":{"87":1,"119":1,"126":1,"147":1}}],["staples",{"2":{"131":1,"147":1}}],["stays",{"2":{"103":1,"134":1}}],["stamp",{"2":{"44":1}}],["standard",{"2":{"43":1,"133":1}}],["state",{"2":{"17":3,"18":4,"20":1,"21":1,"22":3,"23":4,"24":6,"25":3,"26":4,"27":6,"30":1,"31":2,"35":1,"36":2,"42":1,"43":4,"44":4,"45":5,"46":3,"47":1,"48":1,"49":1,"50":4,"51":6,"53":1,"54":2,"55":4,"56":4,"57":9,"58":10,"59":11,"60":2,"61":3,"63":1,"64":3,"65":4,"67":4,"68":5,"76":1,"86":3,"87":4,"94":1,"130":4,"131":13}}],["statsfuns",{"2":{"12":1}}],["statsbase",{"2":{"12":1}}],["statsapi",{"2":{"12":1}}],["statistics",{"2":{"12":1}}],["static=false",{"2":{"117":1}}],["staticarrayscore",{"2":{"12":1}}],["staticarrays",{"2":{"12":1}}],["staticarrayinterface",{"2":{"12":1}}],["static",{"2":{"12":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"117":3}}],["status",{"2":{"6":1,"12":2}}],["stackviews",{"2":{"12":1}}],["started",{"0":{"82":1},"2":{"89":1}}],["starting",{"2":{"72":1,"101":1,"134":1,"135":1,"137":1}}],["start",{"2":{"6":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"62":1,"64":1,"66":1,"89":1,"130":1,"131":1,"136":1}}],["startup",{"2":{"4":2,"135":1,"136":1}}],["soria",{"2":{"147":1}}],["sortingalgorithms",{"2":{"12":1}}],["sometimes",{"2":{"96":1}}],["some",{"2":{"87":1,"96":1,"97":1,"102":1,"124":1,"134":1,"136":1}}],["sol",{"2":{"112":2}}],["solving",{"2":{"43":1,"46":1,"86":2,"108":2,"111":1,"112":2,"124":1,"135":1,"136":1}}],["solved",{"2":{"90":1,"131":1,"137":1}}],["solver",{"2":{"69":1,"84":1,"89":2,"110":1,"111":5,"112":1,"113":3,"119":1,"135":1}}],["solvers",{"0":{"111":1,"129":1,"130":1},"1":{"130":1,"131":1},"2":{"8":1,"110":1,"112":6,"147":1}}],["solve",{"0":{"16":1,"34":1,"41":1,"74":1},"2":{"8":1,"16":1,"18":1,"19":2,"21":1,"22":4,"24":2,"25":4,"27":2,"29":2,"31":1,"34":1,"36":1,"41":1,"42":1,"43":2,"45":1,"46":2,"48":1,"49":2,"51":1,"52":2,"54":1,"55":2,"57":1,"58":2,"59":1,"60":2,"61":1,"62":2,"63":1,"64":2,"65":1,"66":2,"68":1,"69":1,"70":1,"74":1,"76":1,"111":2,"112":5,"130":2,"131":1,"134":2,"135":2,"136":1,"137":2}}],["solution",{"2":{"19":1,"20":1,"21":2,"22":1,"23":1,"24":2,"25":1,"26":1,"27":2,"34":2,"36":2,"43":3,"44":2,"45":3,"46":3,"47":1,"48":3,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"66":1,"67":1,"68":2,"69":6,"70":4,"74":2,"76":2,"86":2,"98":1,"131":6}}],["sockets",{"2":{"12":1}}],["so",{"2":{"9":1,"84":1}}],["software",{"2":{"9":9}}],["source",{"2":{"8":1,"9":1,"77":1,"84":5,"85":5,"86":11,"87":9,"88":3,"99":10,"109":52,"111":11,"113":2,"115":14,"116":6,"117":3,"118":5,"130":3,"131":13,"132":1,"133":7,"134":6,"135":1,"136":1,"137":5,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["sources",{"2":{"5":1}}],["src",{"2":{"7":1}}],["segarra",{"2":{"147":1}}],["separate",{"2":{"117":1,"131":1,"132":1}}],["separately",{"2":{"98":1}}],["sensitivity",{"2":{"112":2}}],["section",{"2":{"134":1}}],["sections",{"2":{"5":1}}],["second",{"2":{"109":2,"122":2,"123":1,"135":2,"136":1,"143":2}}],["seaborn",{"2":{"58":2,"59":1}}],["serialization",{"2":{"12":1}}],["setting",{"2":{"116":1,"124":1}}],["settings",{"2":{"72":1}}],["set",{"2":{"86":1,"95":1,"103":1,"124":1,"131":1,"132":1,"137":1}}],["setfield",{"2":{"12":1}}],["setup",{"0":{"15":1,"33":1,"39":1,"73":1,"114":1,"117":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"8":1,"15":3,"16":2,"17":3,"18":8,"19":8,"20":1,"21":9,"22":9,"23":4,"24":13,"25":9,"26":4,"27":13,"29":8,"30":1,"31":8,"33":4,"34":6,"35":1,"36":11,"39":3,"40":1,"41":4,"42":8,"43":11,"44":4,"45":14,"46":10,"47":1,"48":11,"49":10,"50":4,"51":14,"52":9,"53":1,"54":10,"55":12,"56":5,"57":17,"58":13,"59":12,"60":12,"61":11,"62":7,"63":6,"64":13,"65":12,"66":8,"67":4,"68":12,"69":7,"70":7,"73":4,"74":6,"76":10,"84":1,"85":6,"86":4,"87":3,"88":1,"89":3,"93":6,"95":6,"97":12,"98":9,"99":7,"109":49,"111":11,"112":6,"113":6,"115":6,"117":3,"118":8,"130":2,"131":7,"132":3,"133":2,"134":2}}],["sell",{"2":{"9":1}}],["selected",{"2":{"6":1,"77":1}}],["seems",{"2":{"131":1}}],["seen",{"2":{"124":1}}],["seeds",{"2":{"133":1}}],["seed",{"2":{"95":1,"133":2}}],["see",{"2":{"0":1,"12":1,"85":1,"87":1,"96":1,"99":1,"109":2,"116":1,"131":2,"134":2,"136":1,"137":2}}],["springer",{"2":{"147":1}}],["spiteri",{"0":{"145":1}}],["span",{"2":{"112":1}}],["space",{"2":{"111":2,"116":1,"124":1,"137":1}}],["spacing",{"2":{"90":1,"116":1}}],["sparsity",{"2":{"97":1}}],["sparsematrixcsc",{"2":{"97":4,"99":4}}],["sparsearrays",{"2":{"12":1,"97":4,"99":4,"110":1}}],["sparseinversesubset",{"2":{"12":1}}],["sparse",{"0":{"96":1},"1":{"97":1,"98":1,"99":1},"2":{"5":1,"89":1,"96":1,"109":1,"110":1}}],["spatially",{"2":{"134":1}}],["spatial",{"0":{"119":1},"1":{"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1},"2":{"83":1,"87":3,"90":2,"100":2,"101":1,"119":1,"120":1,"128":1}}],["speed",{"2":{"43":1}}],["specialized",{"2":{"89":1,"112":1}}],["specialfunctions",{"2":{"12":1}}],["specifies",{"2":{"117":2,"132":2}}],["specified",{"2":{"43":1,"109":1,"118":1}}],["specification",{"2":{"90":1}}],["specific",{"2":{"28":1,"32":1}}],["specifying",{"2":{"5":1}}],["spectral",{"2":{"8":1,"69":1,"70":1,"73":1,"76":1,"111":3,"133":1}}],["spectrum",{"2":{"8":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"34":1,"35":1,"36":1,"41":2,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":5,"57":4,"66":1,"68":1,"74":1,"75":1,"76":1,"131":4,"133":4}}],["split",{"2":{"133":1}}],["splittablesbase",{"2":{"12":1}}],["splitseed",{"2":{"8":1,"133":1}}],["w",{"2":{"123":1,"147":2}}],["wu",{"2":{"123":1}}],["wray",{"2":{"137":1,"138":1}}],["wray3",{"2":{"137":1,"138":1}}],["wrapper",{"2":{"94":1}}],["wrapped",{"2":{"94":1}}],["wrappedclosure",{"2":{"84":1}}],["wrap",{"2":{"84":1,"94":1}}],["writing",{"2":{"109":1}}],["written",{"2":{"100":1}}],["writes",{"2":{"131":1}}],["write",{"2":{"109":1,"112":1,"119":1,"123":1,"124":1}}],["writevtk",{"2":{"12":1}}],["writer",{"2":{"8":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"131":2}}],["wong",{"0":{"145":1}}],["would",{"2":{"124":2}}],["woodburymatrices",{"2":{"12":1}}],["worrying",{"2":{"90":1}}],["works",{"2":{"110":1}}],["workgroupsize",{"2":{"58":6,"95":1,"97":1,"98":1,"111":2,"117":1}}],["work",{"2":{"12":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"58":1,"62":1,"66":1,"69":1,"94":1,"97":2}}],["word",{"2":{"11":1}}],["well",{"2":{"137":1}}],["welch",{"2":{"119":1,"147":1}}],["webm",{"2":{"131":1}}],["webp",{"2":{"12":1}}],["weights",{"2":{"116":1,"120":1}}],["weight",{"2":{"87":1}}],["weightinitializers",{"2":{"12":1}}],["we",{"2":{"17":1,"19":1,"20":1,"22":3,"23":1,"25":2,"26":1,"28":1,"29":1,"30":1,"32":1,"38":1,"43":10,"44":1,"46":2,"47":1,"50":1,"52":1,"53":1,"55":1,"56":1,"66":2,"67":1,"69":1,"71":1,"83":1,"86":1,"87":1,"90":1,"94":1,"95":8,"96":1,"97":1,"98":2,"100":1,"101":1,"103":1,"112":1,"119":5,"120":3,"121":1,"123":2,"124":2,"126":1,"127":1,"134":6,"135":6,"136":2,"137":5}}],["were",{"2":{"11":1,"12":1}}],["wang",{"2":{"147":1}}],["want",{"2":{"1":1,"90":1}}],["waterlily",{"2":{"109":2}}],["way",{"2":{"94":1,"124":1}}],["wayland",{"2":{"12":2}}],["wavenumber",{"2":{"37":1,"87":2,"118":1,"131":1}}],["was",{"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["walls",{"2":{"22":2,"25":1,"43":1,"46":1}}],["wall",{"2":{"13":1,"19":1,"49":1}}],["warranties",{"2":{"9":1}}],["warranty",{"2":{"9":1}}],["whole",{"2":{"121":1}}],["whom",{"2":{"9":1}}],["while",{"2":{"97":2,"103":1,"109":1,"112":1,"117":1,"122":1,"132":1,"136":1}}],["which",{"2":{"82":1,"83":1,"85":1,"91":1,"94":1,"95":1,"100":1,"112":1,"119":1,"120":3,"124":1,"131":1,"132":1,"134":1,"135":1}}],["why",{"2":{"12":1}}],["when",{"2":{"14":1,"19":1,"22":1,"25":1,"43":4,"46":1,"52":1,"55":1,"66":1,"90":1,"110":1,"115":1,"116":1,"131":1}}],["whether",{"2":{"9":1,"134":2}}],["where",{"2":{"5":1,"37":2,"55":2,"57":2,"83":1,"86":2,"87":3,"99":4,"100":1,"101":1,"102":2,"109":2,"111":1,"112":1,"115":3,"119":4,"120":1,"122":1,"123":2,"124":1,"130":1,"131":1,"132":1,"135":1,"137":2}}],["widths",{"2":{"116":1}}],["widely",{"2":{"91":1}}],["windows",{"2":{"131":1}}],["window",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"86":1}}],["wind",{"2":{"13":1,"19":1,"49":1}}],["will",{"2":{"6":1,"60":1,"64":1,"82":1,"89":1,"94":2,"121":1,"123":1,"124":3,"126":1,"134":2,"137":1}}],["without",{"2":{"9":3,"90":2,"92":1,"97":1,"112":1,"124":3}}],["with",{"0":{"79":1,"80":1,"92":1,"94":1},"1":{"93":1,"95":1},"2":{"4":2,"5":4,"7":2,"9":1,"11":1,"12":4,"15":1,"22":2,"25":2,"28":1,"32":1,"39":1,"43":2,"46":1,"58":2,"62":1,"64":1,"69":2,"70":1,"72":1,"77":1,"83":2,"86":2,"87":1,"89":3,"92":2,"93":2,"94":3,"95":3,"97":5,"99":3,"101":1,"109":6,"111":2,"115":1,"116":3,"118":2,"120":6,"122":2,"124":2,"128":3,"130":3,"131":1,"134":3,"137":4,"147":3}}],["journal",{"2":{"147":5}}],["joinpath",{"2":{"19":1,"20":1,"21":2,"22":1,"23":1,"24":2,"25":1,"26":1,"27":2,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"58":1,"59":1,"60":2,"61":2,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":2,"69":2,"70":2}}],["jacobian",{"2":{"137":3}}],["j",{"2":{"119":3,"121":1,"147":9}}],["jeong",{"2":{"109":1,"147":1}}],["jets",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"55":1}}],["jul",{"2":{"147":1}}],["julialiiia3",{"2":{"141":1}}],["julialiiia2",{"2":{"141":1}}],["julialastdimcontract",{"2":{"109":1}}],["julialaplacian",{"2":{"99":1,"109":2}}],["julialang",{"2":{"11":1}}],["juliaheun33",{"2":{"143":1}}],["juliahem5",{"2":{"140":1}}],["juliahem3bs",{"2":{"140":1}}],["juliahem3",{"2":{"140":1}}],["juliaheatmap",{"2":{"40":1}}],["juliaissps3",{"2":{"139":1}}],["juliaisspm2",{"2":{"139":1}}],["juliainterpolate",{"2":{"109":4}}],["juliainflow",{"2":{"15":1}}],["juliawray3",{"2":{"138":1}}],["juliawrappedclosure",{"2":{"84":1}}],["julia>",{"2":{"116":1}}],["juliajulia>",{"2":{"116":1}}],["juliaode",{"2":{"134":1}}],["juliaobservespectrum",{"2":{"131":1}}],["juliaobservefield",{"2":{"131":1}}],["juliaoffset",{"2":{"115":2}}],["juliaoutputs",{"2":{"20":1,"30":2,"35":1,"41":3,"47":1,"53":1,"56":1,"58":2,"67":1,"75":2}}],["juliaoutdir",{"2":{"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"69":1}}],["juliamte22",{"2":{"143":1}}],["juliamid22",{"2":{"143":1}}],["juliamax",{"2":{"116":1}}],["juliamaximum",{"2":{"98":1}}],["juliamomentum",{"2":{"109":2}}],["juliakinetic",{"2":{"109":2}}],["juliagl3",{"2":{"141":1}}],["juliagl2",{"2":{"141":1}}],["juliagl1",{"2":{"141":1}}],["juliagrid",{"2":{"116":1}}],["juliagravity",{"2":{"109":2}}],["juliagetval",{"2":{"133":1}}],["juliagetoffset",{"2":{"133":1}}],["juliaget",{"2":{"109":1,"130":2,"133":2}}],["juliagcnn",{"2":{"87":1}}],["juliaeig2field",{"2":{"109":2}}],["juliaenzyme",{"2":{"95":1}}],["juliaavg",{"2":{"109":1}}],["juliaapply",{"2":{"115":6}}],["juliaapplypressure",{"2":{"109":2}}],["juliaapplybodyforce",{"2":{"109":2}}],["juliaabstract",{"2":{"85":1,"115":1,"134":1,"137":1}}],["juliaqfield",{"2":{"109":2}}],["juliaplotgrid",{"2":{"133":1}}],["juliapsolver",{"2":{"111":4}}],["juliapoisson",{"2":{"111":2}}],["juliapad",{"2":{"99":2}}],["juliaparams",{"2":{"95":1}}],["juliaprocessor",{"2":{"131":1}}],["juliaprocessors",{"2":{"43":1,"58":1}}],["juliaproject",{"2":{"111":2}}],["juliapressure",{"2":{"111":2}}],["juliapressuregradient",{"2":{"97":1,"99":1,"109":2}}],["juliavtk",{"2":{"131":1}}],["juliavelocityfield",{"2":{"118":1}}],["juliavectorfield",{"2":{"118":1}}],["juliavecrot2",{"2":{"87":1}}],["juliavorticity",{"2":{"109":2}}],["juliavolume",{"2":{"99":1}}],["juliavariables",{"2":{"12":1}}],["juliark44p2",{"2":{"143":1}}],["juliark44c23",{"2":{"143":1}}],["juliark44c2",{"2":{"143":1}}],["juliark44",{"2":{"143":1}}],["juliark33p2",{"2":{"143":1}}],["juliark33c2",{"2":{"143":1}}],["juliark56",{"2":{"138":1}}],["juliariia3",{"2":{"141":1}}],["juliariia2",{"2":{"141":1}}],["juliariia1",{"2":{"141":1}}],["juliaria3",{"2":{"141":1}}],["juliaria2",{"2":{"141":1}}],["juliaria1",{"2":{"141":1}}],["juliaright",{"2":{"113":1}}],["juliarssps3",{"2":{"138":1}}],["juliarssps2",{"2":{"138":1}}],["juliarunge",{"2":{"134":1}}],["juliarandom",{"2":{"118":1}}],["juliarot2stag",{"2":{"87":1}}],["juliarot2",{"2":{"87":2}}],["juliareconstruct",{"2":{"85":2}}],["juliare",{"2":{"19":1,"22":1,"25":1,"43":1,"46":1,"52":1,"55":1,"66":1,"69":1}}],["juliadsrk3",{"2":{"144":1}}],["juliadsrk2",{"2":{"144":1}}],["juliadsso2",{"2":{"144":1}}],["juliadopri6",{"2":{"138":1}}],["juliadefault",{"2":{"111":1}}],["juliadecollocate",{"2":{"84":1}}],["juliadfield",{"2":{"109":2}}],["juliadivoftensor",{"2":{"109":1}}],["juliadivergence",{"2":{"97":1,"99":1,"109":2}}],["juliadissipation",{"2":{"109":4}}],["juliadiffusion",{"2":{"97":1,"99":1,"109":2}}],["juliaddudt",{"2":{"95":1}}],["juliad",{"2":{"66":1}}],["juliafe11",{"2":{"138":1}}],["juliaf",{"2":{"95":1,"112":1}}],["juliafno",{"2":{"87":1}}],["juliafunction",{"2":{"55":1,"58":2,"131":1}}],["juliafiltersaver",{"2":{"88":1}}],["juliafieldsaver",{"2":{"131":1}}],["juliafield",{"2":{"64":1}}],["juliafieldplot",{"2":{"23":3,"26":3,"30":1,"44":3,"56":4,"64":1,"67":3}}],["juliafig",{"2":{"17":3,"50":3,"69":1}}],["juliaδu",{"2":{"52":1}}],["juliacn22",{"2":{"143":1}}],["juliacnn",{"2":{"87":1}}],["juliachc5",{"2":{"142":1}}],["juliachc3",{"2":{"142":1}}],["juliachcons3",{"2":{"142":1}}],["juliachdirk3",{"2":{"142":1}}],["juliacosine",{"2":{"116":1}}],["juliaconvectiondiffusion",{"2":{"109":1}}],["juliaconvection",{"2":{"109":4}}],["juliacollocate",{"2":{"84":1}}],["juliacreate",{"2":{"49":1,"84":1,"86":9,"88":2,"113":1,"134":1}}],["juliacx",{"2":{"19":1}}],["juliax",{"2":{"19":1,"22":1,"25":1,"46":1}}],["juliaxc",{"2":{"15":1}}],["juliabe11",{"2":{"139":1}}],["juliabc",{"2":{"97":1}}],["juliaboundary",{"2":{"19":1,"49":1,"115":1}}],["juliabox",{"2":{"17":1}}],["juliabackend",{"2":{"19":1,"22":1,"25":1,"33":1,"43":1,"46":1,"49":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"72":1}}],["juliatimestep",{"2":{"134":2}}],["juliatimelogger",{"2":{"131":1}}],["juliatanh",{"2":{"116":1}}],["juliatensorbasis",{"2":{"109":2}}],["juliatemperaturefield",{"2":{"118":1}}],["juliatemperature",{"2":{"58":1,"60":1,"62":1,"64":1,"117":1,"132":1}}],["juliatotal",{"2":{"109":1}}],["juliatrainepoch",{"2":{"86":1}}],["juliatrain",{"2":{"86":1}}],["juliatlims",{"2":{"43":1}}],["juliat",{"2":{"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"71":1}}],["juliasdirk34",{"2":{"139":1}}],["juliassp104",{"2":{"138":1}}],["juliassp43",{"2":{"138":1}}],["juliassp42",{"2":{"138":1}}],["juliassp33",{"2":{"138":1}}],["juliassp22",{"2":{"138":1}}],["juliasplitseed",{"2":{"133":1}}],["juliaspectral",{"2":{"133":1}}],["juliasnapshotsaver",{"2":{"131":1}}],["juliasolve",{"2":{"130":1}}],["juliasolution",{"2":{"69":1}}],["juliascalarfield",{"2":{"118":1}}],["juliascalewithvolume",{"2":{"109":2}}],["juliasmagtensor",{"2":{"109":1}}],["juliasmagorinsky",{"2":{"109":1}}],["juliastretched",{"2":{"116":1}}],["juliastruct",{"2":{"85":2,"87":2,"109":1,"115":4,"116":1,"117":1,"135":1,"136":1,"137":3}}],["juliastate",{"2":{"16":1,"22":1,"25":1,"29":1,"34":1,"41":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"74":1}}],["juliasave",{"2":{"20":1,"23":1,"26":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"69":1,"131":1}}],["juliasetup",{"2":{"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"66":1,"98":1,"117":1,"132":1}}],["julianssp53",{"2":{"145":1}}],["julianssp33",{"2":{"145":1}}],["julianssp32",{"2":{"145":1}}],["julianssp21",{"2":{"145":1}}],["julian",{"2":{"15":1,"29":1,"39":1,"43":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"73":1}}],["juliaunit",{"2":{"109":1}}],["juliauzero",{"2":{"98":1}}],["juliau",{"2":{"22":1,"25":1,"43":1,"46":1,"55":1,"73":1}}],["juliaustart",{"2":{"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1}}],["juliausing",{"2":{"11":1,"12":1,"14":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"32":1,"36":1,"38":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"76":1,"89":1,"93":1,"95":1,"97":2,"98":1,"112":1}}],["juliaup",{"0":{"3":1},"2":{"3":3}}],["julia",{"0":{"11":1},"2":{"3":2,"4":2,"5":3,"6":3,"11":2,"19":1,"22":1,"25":1,"35":2,"43":1,"44":1,"46":1,"55":1,"60":1,"64":1,"69":1,"72":3,"77":1,"82":2,"89":2,"91":2,"92":1,"119":1,"121":1}}],["judiciously",{"2":{"43":1,"122":1,"137":1}}],["just",{"2":{"29":1,"38":1,"40":1,"115":1}}],["jpegturbo",{"2":{"12":2}}],["jsonschema",{"2":{"12":1}}],["json3",{"2":{"12":1}}],["json",{"2":{"12":1}}],["jls",{"2":{"110":2}}],["jll",{"2":{"12":96}}],["jllwrappers",{"2":{"12":1}}],["jld2",{"2":{"12":1}}],["jl",{"0":{"8":1},"2":{"4":2,"7":1,"12":2,"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"58":2,"59":1,"61":1,"62":2,"63":1,"65":1,"68":1,"69":2,"70":1,"76":1,"77":1,"83":1,"89":6,"91":2,"92":1,"94":1,"109":2,"111":1,"112":1,"132":1,"134":1}}],["1δti−θd",{"2":{"135":2}}],["1δti−",{"2":{"135":1}}],["1−θ",{"2":{"135":5}}],["1−sn1−sn",{"2":{"116":1}}],["1−s1−sn",{"2":{"116":1}}],["1−cos⁡",{"2":{"116":1}}],["1|o|∫∂ou⋅ndγ=0",{"2":{"101":1}}],["1\\tδt",{"2":{"62":1}}],["1\\titertime",{"2":{"16":10,"62":1}}],["1e3",{"2":{"73":1,"76":1,"97":1}}],["1e6",{"2":{"62":1,"63":1,"64":1,"65":1}}],["1e7",{"2":{"55":1,"57":1,"58":1,"59":1,"60":1,"61":1}}],["1e",{"2":{"39":1,"41":1,"42":2,"43":1,"45":1,"46":1,"48":1,"58":1,"59":1,"60":1,"61":1,"64":1,"65":1,"74":1,"76":1,"112":2,"133":1}}],["1e83bf80",{"2":{"12":1}}],["1a1011a3",{"2":{"12":1}}],["1a297f60",{"2":{"12":1}}],["1+β",{"2":{"136":2}}],["1+2",{"2":{"12":2}}],["1+0",{"2":{"12":11}}],["1d",{"2":{"116":1}}],["1d63c593",{"2":{"12":1}}],["1d5cc7b8",{"2":{"12":1}}],["1d0040c9",{"2":{"12":1}}],["1cfade01",{"2":{"12":1}}],["1c621080",{"2":{"12":1}}],["1fd47b50",{"2":{"12":1}}],["1fa38f19",{"2":{"12":1}}],["1761178",{"2":{"147":1}}],["1776923174767342",{"2":{"112":3}}],["17030399583320407",{"2":{"112":3}}],["172+0",{"2":{"12":1}}],["171d559e",{"2":{"12":1}}],["17",{"2":{"12":4,"25":1,"27":1,"97":7,"98":5,"137":1}}],["143",{"2":{"147":1}}],["1472",{"2":{"147":1}}],["140243995152969",{"2":{"112":3}}],["14044702822349744",{"2":{"95":1}}],["1404470282234972",{"2":{"95":2}}],["142",{"2":{"95":1}}],["14a3606d",{"2":{"12":1}}],["14d82f49",{"2":{"12":1}}],["14+1",{"2":{"12":1}}],["14",{"2":{"12":4,"95":1,"98":1,"120":1,"122":1,"136":1}}],["1965",{"2":{"147":1}}],["196100131813737",{"2":{"112":3}}],["1910",{"2":{"147":2}}],["1916302889845585",{"2":{"112":3}}],["1914dd2f",{"2":{"12":1}}],["19539736486988413",{"2":{"112":4}}],["19034589506796068",{"2":{"95":1}}],["19034589506796099",{"2":{"95":2}}],["1920929f",{"2":{"58":18}}],["1997",{"2":{"147":1}}],["1995",{"2":{"147":1}}],["1995970577474693e",{"2":{"95":1}}],["199",{"2":{"58":3}}],["1986cc42",{"2":{"12":1}}],["198e06fe",{"2":{"12":1}}],["19eb6ba3",{"2":{"12":1}}],["19",{"2":{"12":1}}],["1063",{"2":{"147":1}}],["1066968228277734",{"2":{"112":3}}],["10874v1",{"2":{"147":1}}],["1082639a",{"2":{"12":1}}],["1048800462393567",{"2":{"112":1}}],["105",{"2":{"111":1,"147":1}}],["109",{"2":{"111":1}}],["10\\tδt",{"2":{"62":1}}],["101703954e",{"2":{"95":1}}],["10171079e",{"2":{"95":1}}],["101",{"2":{"58":6,"93":1,"95":9,"111":2,"112":1}}],["1024",{"2":{"97":2}}],["102×102×2",{"2":{"95":1}}],["102",{"2":{"58":3,"93":2,"95":2}}],["10^4",{"2":{"55":1,"57":1}}],["10^",{"2":{"55":1,"57":1}}],["100×100",{"2":{"95":1}}],["1000",{"2":{"25":1,"27":1,"43":1,"45":1,"49":1,"51":1,"55":1,"57":1,"58":2,"59":1,"97":1,"98":1}}],["100",{"2":{"12":1,"15":1,"18":1,"19":1,"21":1,"25":1,"27":1,"29":1,"31":1,"41":2,"42":2,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":2,"54":2,"55":1,"57":1,"58":11,"59":2,"60":2,"61":2,"66":1,"68":1,"74":1,"76":1,"93":1,"95":6,"147":1}}],["10+3",{"2":{"12":1}}],["10+0",{"2":{"12":1}}],["10745b16",{"2":{"12":1}}],["10f19ff3",{"2":{"12":1}}],["10",{"2":{"12":14,"15":1,"16":1,"18":1,"19":2,"21":2,"22":3,"24":3,"25":3,"27":3,"29":3,"31":3,"34":5,"36":5,"41":2,"42":2,"43":4,"45":4,"46":3,"48":3,"49":3,"51":3,"52":2,"54":2,"55":5,"57":5,"58":4,"60":4,"61":4,"62":1,"63":1,"64":4,"65":4,"66":2,"68":2,"74":3,"76":3,"95":7,"98":2,"116":1,"147":1}}],["159",{"2":{"147":1}}],["159f3aea",{"2":{"12":1}}],["1521046561379444",{"2":{"112":3}}],["1520ce14",{"2":{"12":1}}],["15625",{"2":{"97":4,"98":4}}],["15304289223675197",{"2":{"112":3}}],["153453405e",{"2":{"95":1}}],["153im",{"2":{"95":1}}],["154",{"2":{"95":1}}],["1505",{"2":{"147":1}}],["150",{"2":{"22":2,"23":3,"24":5}}],["15+3",{"2":{"12":1}}],["15",{"2":{"12":8,"66":1,"68":1,"98":1,"122":1,"131":1}}],["131",{"2":{"147":1}}],["1317d2d5",{"2":{"12":1}}],["13791381931950897",{"2":{"112":3}}],["1389341858331228",{"2":{"112":3}}],["1395757760607585",{"2":{"112":1}}],["13+1",{"2":{"12":1}}],["13",{"2":{"12":7,"97":1,"119":1}}],["13f3f980",{"2":{"12":1}}],["13533e5b",{"2":{"12":1}}],["13072b0f",{"2":{"12":1}}],["18432917246446268",{"2":{"112":3}}],["184",{"2":{"109":1}}],["1844512363060048e92",{"2":{"95":1}}],["18×18",{"2":{"98":1}}],["187",{"2":{"147":1}}],["1875",{"2":{"97":4,"98":4}}],["187b0558",{"2":{"12":1}}],["18a262bb",{"2":{"12":1}}],["189a3867",{"2":{"12":1}}],["18",{"2":{"12":7,"97":2,"98":2,"137":1}}],["1645485037241428",{"2":{"112":3}}],["1643784257900822",{"2":{"112":3}}],["1695019008798557",{"2":{"112":1}}],["160",{"2":{"98":9}}],["166772\\tδt",{"2":{"29":1}}],["16+0",{"2":{"12":1}}],["163ba53b",{"2":{"12":1}}],["161",{"2":{"12":1}}],["16",{"2":{"11":1,"12":4,"55":1,"57":1,"69":1,"70":1,"97":6,"98":12,"136":1}}],["127",{"2":{"147":1}}],["1270edf5",{"2":{"12":1}}],["12181430001360327",{"2":{"112":3}}],["1219957905e",{"2":{"95":3}}],["125192961125848",{"2":{"112":3}}],["125",{"2":{"97":4,"98":4}}],["120",{"2":{"95":1,"111":2}}],["128829845262931",{"2":{"112":3}}],["128",{"2":{"33":1,"36":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"95":3}}],["128add7d",{"2":{"12":1}}],["129",{"2":{"25":1,"27":1}}],["12\\tδt",{"2":{"16":1}}],["12+0",{"2":{"12":1}}],["12",{"2":{"11":1,"12":13,"16":2,"18":1,"49":1,"51":1,"58":3,"119":1,"131":1}}],["1",{"2":{"3":2,"11":3,"12":118,"15":274,"16":2,"17":3,"18":5,"19":6,"21":6,"22":3,"24":3,"25":2,"27":2,"28":1,"29":3,"31":3,"32":1,"33":2,"36":2,"37":1,"39":3,"40":1,"42":4,"43":5,"45":3,"46":5,"48":5,"49":11,"51":11,"52":7,"54":7,"55":49,"57":49,"58":218,"59":26,"60":12,"61":12,"62":8,"63":7,"64":13,"65":13,"66":6,"68":5,"69":10,"70":7,"73":3,"74":2,"76":5,"82":1,"84":1,"87":1,"93":4,"95":40,"97":23,"98":26,"103":1,"109":10,"112":160,"115":1,"116":5,"119":3,"120":1,"121":8,"131":5,"135":2,"137":1,"147":1}}],["118",{"2":{"147":1}}],["1183f4f0",{"2":{"12":1}}],["1177053994467887",{"2":{"112":3}}],["111",{"2":{"111":1}}],["11+1",{"2":{"12":1}}],["11+0",{"2":{"12":1}}],["116",{"2":{"12":1}}],["11",{"2":{"3":3,"5":1,"11":1,"12":44,"15":1,"18":1,"19":1,"21":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"109":2,"118":1}}],["v~=1β+12",{"2":{"136":1}}],["v~",{"2":{"136":1}}],["v=",{"2":{"135":1,"136":1}}],["v−u0δt=−",{"2":{"135":1}}],["vrank>=1",{"2":{"95":2}}],["v¯θ",{"2":{"86":1}}],["v¯",{"2":{"83":2}}],["v¯≈u¯",{"2":{"83":1}}],["vti",{"2":{"44":1}}],["vtkbase",{"2":{"12":1}}],["vtk",{"2":{"8":2,"19":2,"20":2,"21":3,"22":2,"23":2,"24":3,"25":2,"26":2,"27":3,"34":2,"36":2,"43":2,"44":3,"45":4,"46":2,"47":2,"48":3,"49":2,"50":2,"51":3,"52":2,"53":2,"54":3,"55":2,"56":2,"57":3,"60":2,"61":2,"64":2,"65":2,"66":2,"67":2,"68":3,"74":2,"76":2,"131":5}}],["val",{"2":{"133":2}}],["valid",{"2":{"119":1}}],["valued",{"2":{"94":1}}],["value",{"2":{"43":1,"95":2,"115":1,"120":1,"123":1,"124":2,"131":1,"133":1,"135":1}}],["values",{"2":{"43":1,"95":1,"124":1,"136":2}}],["vary",{"2":{"121":1}}],["varies",{"2":{"124":1}}],["variant",{"2":{"92":2,"122":1}}],["variants",{"2":{"87":1}}],["various",{"2":{"89":1}}],["var",{"2":{"58":8,"84":1,"86":5,"95":1,"109":1,"111":7,"113":1,"131":3}}],["vanishing",{"2":{"43":1}}],["v",{"2":{"20":1,"55":10,"57":10,"85":5,"87":1,"109":4,"135":3,"136":1}}],["vi",{"2":{"137":1}}],["vi=u0+δt∑j=1iaijkjlpi=wm1ci∑j=1iaijkj+wym",{"2":{"137":1}}],["via",{"2":{"37":1,"97":1}}],["viscosity",{"2":{"52":1,"90":4,"97":2,"100":1,"105":1,"109":3}}],["viscous",{"2":{"28":1,"32":1,"147":2}}],["visualization",{"2":{"44":1,"147":1}}],["visualize",{"2":{"17":1,"20":1,"23":1,"26":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1}}],["visible",{"2":{"28":1,"32":1,"97":1}}],["virtual",{"2":{"11":1}}],["v8",{"2":{"12":2}}],["v5",{"2":{"12":3}}],["v9",{"2":{"12":1}}],["v6",{"2":{"12":3}}],["v3",{"2":{"12":15,"87":2}}],["v7",{"2":{"12":2}}],["v2023",{"2":{"12":1}}],["v2021",{"2":{"12":1}}],["v2024",{"2":{"12":2}}],["v20",{"2":{"12":1}}],["v2",{"2":{"12":22,"87":3}}],["v4",{"2":{"12":5,"87":3}}],["v0−βv−1",{"2":{"136":1}}],["v0",{"2":{"12":166}}],["vol",{"2":{"147":1}}],["volumes",{"2":{"99":3,"116":2,"119":1}}],["volumeaverage",{"2":{"85":2}}],["volume",{"0":{"120":1},"2":{"8":1,"84":3,"85":2,"99":2,"100":1,"101":3,"109":3,"116":3,"119":9,"120":4,"122":1,"123":4,"128":1}}],["vortex",{"0":{"69":1,"71":1},"1":{"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"64":1,"69":2,"71":1,"147":2}}],["vorticity",{"0":{"107":1,"127":1},"2":{"8":1,"17":2,"18":1,"19":1,"21":1,"22":1,"23":2,"24":2,"25":1,"26":2,"27":2,"44":2,"45":1,"49":1,"50":2,"51":2,"52":1,"54":1,"55":1,"56":2,"57":2,"66":1,"67":2,"68":2,"107":3,"109":6,"127":3,"128":3,"131":1}}],["veldman",{"2":{"136":1,"147":2}}],["velocities",{"2":{"124":1,"137":2}}],["velocitynorm",{"2":{"17":1,"18":1,"23":1,"24":1,"26":1,"27":1,"44":1,"45":1,"49":1,"50":1,"51":2,"56":2,"57":2,"67":1,"68":1}}],["velocity",{"2":{"13":1,"17":1,"19":1,"22":2,"23":1,"25":2,"26":1,"28":1,"32":1,"43":2,"44":1,"46":1,"49":1,"50":1,"56":2,"60":1,"61":1,"64":1,"65":1,"67":1,"83":1,"84":1,"85":5,"87":1,"90":1,"92":1,"95":1,"99":1,"100":2,"103":2,"109":6,"111":6,"113":1,"115":9,"116":3,"118":1,"120":4,"123":3,"124":2,"126":2,"131":2,"133":1,"134":4,"135":6,"136":3,"137":2}}],["velocityfield",{"2":{"8":1,"15":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":2,"70":2,"73":1,"76":1,"118":2}}],["verstappen",{"2":{"136":1,"147":4}}],["versioninfo",{"2":{"11":1}}],["versions",{"0":{"10":1,"12":1},"1":{"11":1,"12":1},"2":{"12":2,"92":2,"96":1,"98":1}}],["version",{"0":{"11":1},"2":{"3":2,"11":2,"82":1,"95":3,"109":45,"111":6,"115":6,"134":2}}],["very",{"2":{"109":1,"124":1}}],["verify",{"2":{"97":1}}],["vertical",{"2":{"97":1}}],["vecrot2",{"2":{"87":1}}],["vec",{"2":{"60":1,"61":1,"64":1,"65":1}}],["vectorized",{"2":{"92":1}}],["vectors",{"2":{"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"99":1,"109":1,"121":1}}],["vector",{"2":{"14":1,"19":1,"22":1,"25":1,"43":2,"52":1,"55":1,"58":60,"66":1,"69":1,"87":9,"94":1,"95":1,"97":2,"98":1,"99":1,"102":1,"107":1,"108":1,"109":1,"112":2,"116":1,"118":1,"119":1,"127":1,"130":1,"131":1,"137":1}}],["vectorfield",{"2":{"8":2,"97":1,"98":1,"99":3,"118":1}}],["vs",{"0":{"7":1}}],["vscode",{"0":{"6":1},"2":{"6":1,"72":1}}],["v17",{"2":{"12":1}}],["v10",{"2":{"12":1}}],["v10164",{"2":{"12":1}}],["v18",{"2":{"12":1}}],["v11",{"2":{"12":1}}],["v1",{"2":{"3":1,"5":1,"12":162,"87":3}}],["lδp=β+12δtw",{"2":{"136":1}}],["lδp=wmv+ym",{"2":{"135":1}}],["lhs",{"2":{"135":1}}],["lu",{"2":{"135":1}}],["luxlib",{"2":{"12":1}}],["luxcore",{"2":{"12":1,"87":2}}],["lux",{"2":{"12":1}}],["l−1",{"2":{"124":1}}],["l=wmg=wmwu−1mtw",{"2":{"124":1}}],["l=3π2uavg2∫0∞e",{"2":{"109":1}}],["lt",{"2":{"119":1,"131":1}}],["lph=wm",{"2":{"124":1}}],["lp=wmf",{"2":{"111":1}}],["lpost",{"2":{"86":1}}],["lprior",{"2":{"86":2}}],["lb",{"2":{"55":1,"57":1}}],["l",{"2":{"55":5,"57":5,"109":2,"124":1,"147":1}}],["learned",{"2":{"147":1}}],["learning",{"2":{"147":2}}],["leg",{"0":{"136":1},"2":{"134":1,"136":1}}],["level",{"2":{"131":1}}],["levels",{"2":{"35":1,"36":1,"60":4,"61":4,"64":5,"65":4}}],["let",{"2":{"97":1,"119":1,"131":2}}],["les",{"2":{"83":1,"85":6,"86":3,"88":4,"90":1}}],["less",{"2":{"13":1,"19":1,"49":1,"66":1}}],["length",{"2":{"69":1,"70":1,"109":3}}],["left",{"2":{"19":1,"21":1,"22":2,"24":1,"25":2,"27":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"90":1,"116":1,"135":1}}],["lerc",{"2":{"12":1}}],["lzo",{"2":{"12":1}}],["llvmopenmp",{"2":{"12":1}}],["llvmextra",{"2":{"12":1}}],["llvm",{"2":{"11":1,"12":1}}],["lagrange",{"2":{"124":1}}],["lastdimcontract",{"2":{"109":1}}],["lapack",{"2":{"94":1}}],["laplace",{"2":{"60":1,"64":1,"111":1,"124":1}}],["laplacian",{"2":{"8":2,"99":2,"109":4}}],["largest",{"2":{"116":1}}],["large",{"0":{"90":1},"2":{"83":3,"90":4,"109":2,"112":2,"147":2}}],["larger",{"2":{"28":1,"32":1,"87":1,"122":1}}],["layers",{"2":{"84":2}}],["layer",{"0":{"66":1},"1":{"67":1,"68":1},"2":{"66":1,"87":5,"115":2}}],["layoutpointers",{"2":{"12":1}}],["label",{"2":{"55":4,"57":4,"58":4,"59":4,"69":2,"70":2}}],["language",{"2":{"91":1}}],["langle",{"2":{"55":1,"57":1}}],["landing",{"2":{"0":1}}],["later",{"2":{"43":1}}],["latexstrings",{"2":{"12":1,"55":1,"57":1}}],["lame",{"2":{"12":1}}],["lazyartifacts",{"2":{"12":1}}],["lazymodules",{"2":{"12":1}}],["lazilyinitializedfields",{"2":{"12":1}}],["lmwray3",{"2":{"8":1,"137":2}}],["li",{"2":{"147":1}}],["liiia3",{"2":{"137":1,"141":2}}],["liiia2",{"2":{"137":1,"141":2}}],["living",{"2":{"130":1}}],["live",{"2":{"4":1}}],["list",{"2":{"96":1,"147":1}}],["like",{"2":{"94":1,"131":1}}],["lifts",{"2":{"87":1}}],["lift",{"2":{"55":3,"57":3,"58":1,"59":1}}],["liddrivencavity3d",{"2":{"46":1,"48":1}}],["liddrivencavity2d",{"2":{"43":1,"45":1}}],["lid",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1},"2":{"43":1,"46":2}}],["library",{"2":{"91":1}}],["libraries",{"2":{"91":1}}],["libblastrampoline",{"2":{"12":1}}],["libssh2",{"2":{"12":1}}],["libsixel",{"2":{"12":1}}],["libdl",{"2":{"12":1}}],["libdecor",{"2":{"12":1}}],["libcurl",{"2":{"12":2}}],["libwebp",{"2":{"12":1}}],["libvorbis",{"2":{"12":1}}],["libpng",{"2":{"12":1}}],["libpthread",{"2":{"12":1}}],["libfdk",{"2":{"12":1}}],["libffi",{"2":{"12":1}}],["libass",{"2":{"12":1}}],["libaom",{"2":{"12":1}}],["libxkbfile",{"2":{"12":1}}],["libxcb",{"2":{"12":1}}],["libxcursor",{"2":{"12":1}}],["libxrender",{"2":{"12":1}}],["libxrandr",{"2":{"12":1}}],["libxinerama",{"2":{"12":1}}],["libxi",{"2":{"12":1}}],["libxfixes",{"2":{"12":1}}],["libxext",{"2":{"12":1}}],["libxdmcp",{"2":{"12":1}}],["libxau",{"2":{"12":1}}],["libx11",{"2":{"12":1}}],["libuuid",{"2":{"12":1}}],["libtiff",{"2":{"12":1}}],["libmount",{"2":{"12":1}}],["libiconv",{"2":{"12":1}}],["libgit2",{"2":{"12":2}}],["libgpg",{"2":{"12":1}}],["libglvnd",{"2":{"12":1}}],["libgcrypt",{"2":{"12":1}}],["lib",{"2":{"12":1,"83":1}}],["libllvm",{"2":{"11":1}}],["literate",{"2":{"12":1,"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"77":1}}],["lightxml",{"2":{"12":1}}],["linearly",{"2":{"98":1}}],["linear",{"2":{"89":1,"96":1,"97":1,"120":1,"135":1,"137":1}}],["linearalgebra",{"2":{"12":1,"69":1,"70":1}}],["linestyle",{"2":{"69":1,"70":1}}],["lines",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4,"55":3,"57":3,"58":4,"59":4,"69":1,"70":1}}],["linrange",{"2":{"15":2,"18":2,"19":3,"21":3,"22":1,"24":1,"25":3,"27":3,"29":1,"31":1,"46":1,"48":1,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"60":5,"61":5,"64":7,"65":7,"66":2,"68":2,"69":1,"70":1}}],["linux",{"2":{"11":2}}],["linking",{"2":{"5":1}}],["liability",{"2":{"9":1}}],["liable",{"2":{"9":1}}],["limits",{"2":{"116":1,"133":1}}],["limited",{"2":{"9":1}}],["limitation",{"2":{"9":1,"92":1,"94":1}}],["lims",{"2":{"8":1,"43":3,"45":3,"66":3,"68":3,"69":4,"70":4,"88":1,"133":3}}],["license",{"0":{"9":1},"2":{"9":2}}],["lobatto",{"2":{"142":1}}],["located",{"2":{"126":1}}],["local",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"5":1,"82":1,"90":2,"106":1,"126":1}}],["look",{"2":{"112":1}}],["loops",{"2":{"109":1}}],["loop",{"2":{"93":1}}],["low",{"2":{"91":1,"137":1,"138":2}}],["lower",{"2":{"58":1,"59":1,"133":1,"147":1}}],["longer",{"2":{"86":1}}],["loss",{"2":{"86":17}}],["logs",{"2":{"131":1}}],["logtol",{"2":{"131":1}}],["log10",{"2":{"55":2,"57":2,"69":2,"70":2}}],["logger",{"2":{"44":1}}],["logging",{"2":{"12":1,"43":1}}],["log",{"2":{"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":1,"60":2,"61":2,"62":1,"63":1,"64":2,"65":2,"66":1,"68":1,"74":1,"76":1}}],["logexpfunctions",{"2":{"12":1}}],["loading",{"2":{"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"112":1}}],["load",{"2":{"4":1}}],["aip",{"2":{"147":1}}],["aij",{"2":{"137":1}}],["aiming",{"2":{"124":1}}],["aα",{"2":{"119":2}}],["amp",{"0":{"145":1},"2":{"147":2}}],["amplitude",{"2":{"118":1}}],["amdgpu",{"2":{"89":1}}],["amd",{"2":{"11":1}}],["aware",{"2":{"117":1}}],["apis",{"2":{"112":1}}],["api",{"0":{"99":1,"113":1}}],["appears",{"2":{"124":1}}],["appending",{"2":{"97":1}}],["approximation",{"2":{"120":1,"134":1}}],["approximating",{"2":{"120":2}}],["approximated",{"2":{"120":2}}],["approximate",{"2":{"83":1,"133":1,"137":1}}],["approach",{"2":{"112":1,"147":1}}],["appropriate",{"2":{"111":1}}],["applied",{"2":{"147":1}}],["applies",{"2":{"99":1}}],["application",{"2":{"147":1}}],["applicable",{"2":{"91":1}}],["applying",{"2":{"43":1,"83":1,"98":1,"99":3,"124":1}}],["applypressure",{"2":{"8":1,"109":2}}],["applybodyforce",{"2":{"8":1,"109":2}}],["apply",{"2":{"8":3,"97":1,"98":2,"99":1,"115":12}}],["affecting",{"2":{"124":1}}],["affect",{"2":{"90":1}}],["after",{"2":{"43":2,"46":1,"130":1,"131":2,"135":1,"137":2}}],["agnostic",{"2":{"89":1,"109":1,"119":1}}],["agdestein",{"2":{"9":1,"83":1}}],["augmenter",{"2":{"87":1}}],["autodiff",{"2":{"94":1,"95":2}}],["auto",{"2":{"72":2}}],["autolimits",{"2":{"55":1,"57":1,"58":2,"59":2}}],["automa",{"2":{"12":1}}],["automatically",{"2":{"85":1,"89":1,"94":1}}],["automatic",{"0":{"92":1,"94":1},"1":{"93":1,"95":1},"2":{"5":1}}],["authors",{"2":{"9":1}}],["avx2",{"2":{"95":6}}],["averaging",{"2":{"83":1,"120":1}}],["averagetemp",{"2":{"58":5,"59":2}}],["average",{"2":{"55":1,"58":3,"59":1,"85":2,"109":1,"120":2}}],["avg",{"2":{"58":3,"59":2,"109":1}}],["avoid",{"2":{"43":2,"119":1,"135":1}}],["available",{"2":{"12":1,"77":1,"85":2,"89":1,"112":1,"131":3}}],["axislegend",{"2":{"55":1,"57":1,"58":2,"59":2,"69":1,"70":1}}],["axis",{"2":{"39":3,"42":3,"49":1,"51":1,"55":2,"57":2,"58":2,"59":2,"69":1,"70":1,"131":1}}],["axisarrays",{"2":{"12":1}}],["axisalgorithms",{"2":{"12":1}}],["ax",{"2":{"29":3,"31":3,"33":4,"36":4,"55":10,"57":10,"58":10,"59":10,"69":4,"70":4,"93":3,"95":3,"97":3,"98":2,"112":3}}],["a63ad114",{"2":{"12":1}}],["aac",{"2":{"12":1}}],["aacddb02",{"2":{"12":1}}],["a51aa0fd",{"2":{"12":1}}],["a3789734",{"2":{"12":1}}],["a3f928ae",{"2":{"12":1}}],["a33af91c",{"2":{"12":1}}],["a759f4b9",{"2":{"12":1}}],["aed1982a",{"2":{"12":1}}],["aedffcd0",{"2":{"12":1}}],["ae029012",{"2":{"12":1}}],["aea7be01",{"2":{"12":1}}],["a98d9a8b",{"2":{"12":1}}],["a9b6321e",{"2":{"12":1}}],["a09fc81d",{"2":{"12":1}}],["a2964d1f",{"2":{"12":1}}],["a2af1166",{"2":{"12":1}}],["a2bd30eb",{"2":{"12":1}}],["a2cac450",{"2":{"12":1}}],["a4e569a6",{"2":{"12":1}}],["a4ae2306",{"2":{"12":1}}],["a4df4552",{"2":{"12":1}}],["a4c015fc",{"2":{"12":1}}],["academy",{"2":{"147":1}}],["accelerated",{"2":{"147":1}}],["access",{"2":{"96":1}}],["accessors",{"2":{"12":1}}],["accumulating",{"2":{"135":1}}],["accuracy",{"2":{"135":1,"137":3,"147":1}}],["accurate",{"0":{"122":1},"2":{"122":3,"123":1,"134":1,"135":2,"136":1}}],["accounted",{"2":{"98":1}}],["account",{"2":{"86":1}}],["actually",{"2":{"134":1}}],["actual",{"2":{"99":1}}],["actuator3d",{"2":{"19":1,"21":1}}],["actuator",{"0":{"13":1,"19":1,"49":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"15":1,"17":1,"19":1,"49":1}}],["acting",{"2":{"97":1}}],["action",{"2":{"9":1}}],["activations",{"2":{"87":2}}],["activates",{"2":{"6":1}}],["activate",{"2":{"6":1}}],["active",{"2":{"6":1}}],["ab",{"2":{"135":1}}],["ability",{"2":{"94":1}}],["abstol",{"2":{"111":1,"112":1,"134":1,"137":1}}],["abstractrungekuttamethod",{"2":{"137":5}}],["abstract",{"2":{"134":1,"137":1}}],["abstractodemethod",{"2":{"134":2,"135":1,"136":1,"137":1}}],["abstractarray",{"2":{"133":1}}],["abstractbc",{"2":{"115":6}}],["abstractluxlayer",{"2":{"87":2}}],["abstractfilter",{"2":{"85":4}}],["abstractffts",{"2":{"12":1}}],["abstracttrees",{"2":{"12":1}}],["absence",{"2":{"103":1}}],["abs2",{"2":{"69":2,"70":2,"93":2}}],["abs",{"2":{"15":2,"18":2,"19":1,"21":1,"49":2,"51":2,"55":4,"57":4,"97":1,"98":2}}],["above",{"2":{"9":1,"82":1,"97":1,"116":1,"119":1,"122":1,"131":1}}],["about",{"0":{"8":1},"2":{"90":1}}],["arxiv",{"2":{"147":6}}],["arbitrary",{"2":{"101":1}}],["art",{"2":{"94":1}}],["artifacts",{"2":{"12":1}}],["architectures",{"0":{"87":1},"2":{"87":1}}],["arrays",{"2":{"43":1,"88":2,"116":1,"137":1}}],["array",{"2":{"15":1,"58":2,"59":2,"60":1,"61":1,"64":1,"65":1,"89":1,"92":1,"94":1,"95":2,"97":1,"112":1,"113":1,"130":1}}],["arrayinterface",{"2":{"12":1}}],["arguments",{"2":{"94":2,"109":1,"113":2,"131":2}}],["argtools",{"2":{"12":1}}],["argcheck",{"2":{"12":1}}],["arising",{"2":{"9":1}}],["are",{"2":{"4":1,"5":2,"8":1,"12":1,"43":5,"72":1,"77":1,"83":4,"85":1,"87":4,"89":2,"90":1,"91":1,"95":1,"96":1,"97":3,"100":1,"102":1,"103":1,"106":1,"109":4,"111":2,"112":1,"115":2,"118":1,"119":7,"120":4,"121":1,"122":1,"124":2,"126":1,"130":1,"131":8,"135":1,"137":2}}],["aspect",{"2":{"147":1}}],["assuming",{"2":{"135":1}}],["assumption",{"2":{"120":1}}],["assume",{"2":{"100":1}}],["assumed",{"2":{"83":1}}],["assignment",{"2":{"117":1}}],["assembling",{"2":{"109":1,"124":1}}],["assemble",{"2":{"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"97":1}}],["assert",{"2":{"95":1,"98":1}}],["associated",{"2":{"9":1}}],["as",{"2":{"9":1,"13":1,"19":1,"22":1,"25":1,"40":1,"43":5,"49":1,"52":1,"55":1,"86":1,"89":1,"90":2,"92":1,"96":1,"97":1,"98":1,"100":1,"101":1,"107":1,"109":5,"110":2,"111":1,"112":1,"116":1,"118":1,"119":2,"120":1,"123":2,"124":2,"127":2,"131":3,"132":1,"134":1,"135":1,"136":1,"137":4}}],["adjoint",{"2":{"94":1,"95":1}}],["ad",{"2":{"91":2,"92":1,"94":2}}],["ade2ca70",{"2":{"12":1}}],["adams",{"0":{"135":1},"2":{"134":1,"135":3}}],["adamsbashforthcranknicolsonmethod",{"2":{"8":1,"135":2}}],["adafc99b",{"2":{"12":1}}],["adapted",{"2":{"83":1,"134":1}}],["adaptive",{"2":{"43":1,"130":1}}],["adaptivepredicates",{"2":{"12":1}}],["adapt",{"2":{"12":1,"130":2}}],["adtypes",{"2":{"12":1}}],["added",{"2":{"134":1}}],["adding",{"2":{"98":1,"132":1}}],["addition",{"2":{"44":1,"134":1}}],["additional",{"2":{"1":1,"131":2,"135":1,"137":1}}],["add",{"2":{"3":1,"4":2,"5":1,"7":1,"43":1,"66":1,"72":1,"90":1,"109":7,"134":2,"135":1,"136":1,"137":2}}],["a",{"0":{"80":1},"2":{"7":4,"9":2,"13":4,"14":1,"15":4,"17":1,"19":9,"22":7,"25":7,"28":1,"29":1,"32":1,"37":1,"38":1,"39":3,"40":1,"42":1,"43":16,"46":6,"49":8,"52":3,"55":6,"57":2,"58":10,"60":4,"66":3,"69":2,"70":2,"72":1,"77":1,"82":1,"83":5,"84":1,"86":13,"87":11,"88":1,"89":2,"90":3,"92":2,"93":2,"94":2,"95":2,"97":6,"98":2,"100":2,"101":1,"102":2,"103":2,"107":2,"108":2,"109":8,"111":2,"112":4,"113":4,"116":20,"117":4,"118":2,"119":10,"120":2,"122":2,"123":3,"124":4,"127":2,"130":2,"131":8,"132":3,"133":5,"134":5,"135":7,"136":2,"137":5,"147":12}}],["analysis",{"2":{"112":2,"147":1}}],["analytical",{"2":{"69":3,"70":1}}],["another",{"2":{"102":1}}],["anim",{"2":{"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1}}],["animation",{"2":{"131":1}}],["animations",{"2":{"12":1}}],["animate",{"2":{"131":1}}],["animator",{"2":{"8":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"131":1}}],["ansicoloredprinters",{"2":{"12":1}}],["any",{"2":{"9":3,"44":1,"58":2,"84":2,"85":2,"87":4,"95":2,"99":3,"109":52,"111":2,"115":7,"116":6,"118":8,"130":2,"131":3,"133":12}}],["an",{"2":{"5":2,"6":1,"9":1,"13":1,"14":1,"19":2,"22":2,"25":2,"43":4,"49":1,"52":1,"55":1,"66":1,"69":1,"90":1,"98":1,"100":1,"101":1,"110":1,"111":1,"112":1,"115":1,"116":1,"120":1,"124":3,"130":1,"131":1,"134":3,"135":2,"137":1}}],["and",{"0":{"98":1},"2":{"4":3,"5":2,"6":1,"7":2,"9":6,"12":1,"18":1,"19":1,"21":1,"22":3,"24":1,"25":3,"27":1,"28":1,"29":1,"31":1,"32":1,"36":1,"38":1,"42":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":2,"57":1,"58":3,"59":1,"60":1,"61":1,"63":1,"65":1,"66":1,"68":1,"70":1,"76":1,"77":1,"82":2,"83":4,"84":1,"85":1,"86":6,"87":5,"89":3,"90":2,"91":1,"92":3,"93":2,"94":4,"95":1,"97":4,"98":1,"99":1,"100":5,"101":1,"102":2,"106":2,"109":15,"110":1,"111":1,"112":8,"113":3,"115":1,"117":2,"119":6,"120":9,"121":2,"123":4,"127":1,"128":1,"130":2,"131":4,"132":2,"133":2,"134":4,"135":6,"136":5,"137":4,"140":2,"142":1,"143":1,"147":16}}],["alieva",{"2":{"147":1}}],["aliastables",{"2":{"12":1}}],["algebraically",{"2":{"142":1}}],["algebraic",{"2":{"134":2}}],["algorithms",{"2":{"99":1}}],["alpha",{"2":{"131":1}}],["al",{"2":{"116":1}}],["alternatively",{"2":{"112":1}}],["also",{"2":{"43":3,"85":1,"86":1,"87":1,"89":1,"90":1,"95":2,"99":1,"109":1,"112":1,"115":1,"116":2,"119":1,"124":1,"131":1,"134":2}}],["allocating",{"2":{"92":2,"94":1,"134":2}}],["allows",{"2":{"3":1,"43":2,"69":1,"94":1,"109":1}}],["all",{"2":{"9":1,"82":1,"89":1,"90":1,"96":1,"109":3,"110":1,"112":2,"115":1,"116":2,"119":1,"120":1,"123":2,"134":1,"137":1}}],["already",{"2":{"4":1}}],["atomic",{"2":{"90":1}}],["atomix",{"2":{"12":1}}],["at",{"2":{"1":1,"4":1,"13":1,"19":1,"22":2,"25":2,"43":2,"46":2,"49":1,"69":1,"70":1,"77":1,"86":2,"92":1,"111":1,"115":4,"118":2,"120":3,"124":1,"126":1,"128":2,"131":7,"134":1,"135":3,"136":2,"137":4,"147":1}}],["pdf",{"2":{"147":1}}],["pdmats",{"2":{"12":1}}],["pérez",{"2":{"147":1}}],["ps",{"2":{"137":1}}],["psolve",{"2":{"95":1,"111":6}}],["psolver",{"2":{"8":5,"33":3,"34":1,"36":4,"52":4,"53":1,"54":5,"60":4,"61":4,"64":5,"65":5,"69":5,"70":5,"73":3,"74":1,"76":4,"86":3,"88":3,"89":2,"93":3,"95":4,"110":2,"111":12,"112":4,"113":3,"118":2,"130":1,"131":2,"134":1}}],["p=2p0−p−1+43δp",{"2":{"136":1}}],["p=p0+δp",{"2":{"135":1}}],["p−1",{"2":{"136":1}}],["p0−βp−1",{"2":{"136":1}}],["p0",{"2":{"136":1}}],["pvd",{"2":{"131":1}}],["phys",{"2":{"147":1}}],["physics",{"2":{"147":8}}],["physical",{"2":{"116":1,"147":1}}],["phenomena",{"2":{"147":1}}],["ph=l−1wm",{"2":{"124":1}}],["ph",{"2":{"124":1}}],["python",{"2":{"121":1}}],["pi",{"2":{"120":1,"137":1}}],["pixman",{"2":{"12":1}}],["peak",{"2":{"118":1}}],["perfectly",{"2":{"137":1}}],["performs",{"2":{"137":1}}],["performance",{"2":{"94":1,"112":1}}],["perform",{"2":{"94":1,"109":1,"124":1,"134":2,"135":1,"137":2}}],["performed",{"2":{"43":1}}],["percentage",{"2":{"131":1}}],["pervasive",{"2":{"112":1}}],["per",{"2":{"100":1}}],["periodic",{"2":{"25":1,"37":1,"97":2,"98":1,"102":1,"111":1,"115":4}}],["periodicbc",{"2":{"8":1,"25":2,"27":2,"46":2,"48":2,"55":2,"57":2,"60":4,"61":4,"95":4,"97":4,"99":1,"115":2}}],["permit",{"2":{"9":1}}],["permission",{"2":{"9":2}}],["persons",{"2":{"9":1}}],["person",{"2":{"9":1}}],["p4",{"2":{"87":1}}],["png",{"2":{"69":1,"70":1}}],["pngfiles",{"2":{"12":1}}],["p₀",{"2":{"22":1,"24":1,"25":1,"27":1,"56":1,"57":1}}],["p7zip",{"2":{"12":1}}],["pcre2",{"2":{"12":1}}],["ptrarrays",{"2":{"12":1}}],["place",{"2":{"85":2,"94":1,"95":2,"109":24,"111":3,"112":2,"113":1,"115":3,"134":2}}],["plates",{"2":{"58":1}}],["plate",{"2":{"58":3,"59":2,"60":1}}],["platform",{"2":{"11":1}}],["plan",{"2":{"95":1}}],["planejets2d",{"2":{"55":1,"57":1}}],["plane",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"55":1}}],["planarmixing2d",{"2":{"52":1,"54":1}}],["planar",{"0":{"52":1},"1":{"53":1,"54":1},"2":{"52":1}}],["plain",{"2":{"43":1}}],["plotted",{"2":{"131":2}}],["plotter",{"2":{"131":1}}],["plotting",{"2":{"14":3,"19":3,"22":3,"25":3,"29":1,"38":1,"43":4,"52":3,"55":3,"66":3,"131":1,"133":1}}],["plots",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"86":1,"131":1}}],["plotutils",{"2":{"12":1}}],["plotgrid",{"2":{"8":1,"15":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":1,"63":1,"66":1,"68":1,"133":2}}],["plot",{"0":{"40":1},"2":{"8":2,"17":3,"19":5,"20":1,"21":5,"22":5,"23":3,"24":5,"25":5,"26":3,"27":5,"29":4,"30":1,"31":4,"34":5,"35":1,"36":5,"41":5,"42":4,"43":5,"44":3,"45":5,"46":5,"48":5,"49":5,"50":3,"51":5,"52":5,"54":5,"55":7,"56":4,"57":6,"58":4,"59":4,"64":2,"66":5,"67":3,"68":5,"69":1,"74":5,"76":5,"86":2,"131":15,"133":1}}],["pope",{"2":{"147":1}}],["positive",{"2":{"124":1,"135":1}}],["positions",{"2":{"120":4}}],["position",{"2":{"55":1,"57":1,"120":2}}],["possible",{"2":{"112":2,"124":1}}],["posterior",{"2":{"86":1}}],["posteriori",{"2":{"86":4}}],["post",{"0":{"17":1,"20":1,"23":1,"26":1,"30":1,"35":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"75":1},"2":{"86":8,"109":1}}],["points",{"2":{"87":2,"109":5,"116":6,"131":2}}],["point2f",{"2":{"49":5,"51":5,"58":4,"59":4}}],["point",{"0":{"110":1},"2":{"19":1,"22":1,"25":1,"43":3,"46":1,"49":1,"55":1,"58":1,"66":1,"71":1,"101":1,"110":1,"116":1,"120":2,"126":2,"128":2}}],["poisson",{"0":{"124":1},"2":{"8":1,"99":1,"103":1,"111":10,"112":1,"124":3,"128":2,"134":1,"136":1}}],["polygonops",{"2":{"12":1}}],["polyesterweave",{"2":{"12":1}}],["polyester",{"2":{"12":1}}],["portions",{"2":{"9":1}}],["put",{"2":{"85":1}}],["push",{"2":{"58":2,"59":2}}],["purpose",{"2":{"9":1}}],["publish",{"2":{"9":1}}],["pullback",{"2":{"95":1}}],["pullbacks",{"2":{"94":1}}],["pull",{"2":{"1":1}}],["p",{"2":{"6":1,"8":4,"20":1,"22":1,"24":1,"25":1,"27":1,"50":1,"53":1,"55":3,"56":2,"57":4,"88":1,"99":2,"100":1,"102":1,"109":19,"111":2,"112":3,"115":8,"120":1,"131":1,"134":1,"135":2,"136":1,"137":3,"147":4}}],["prandtl",{"2":{"117":1,"132":1}}],["price",{"2":{"138":1}}],["principle",{"2":{"112":1}}],["println",{"2":{"131":3}}],["printed",{"2":{"86":1}}],["printf",{"2":{"12":1}}],["prior",{"2":{"86":12}}],["priori",{"2":{"86":3,"88":1}}],["pr",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["predicted",{"2":{"135":1}}],["predict",{"2":{"90":2}}],["predicts",{"2":{"87":3}}],["predictor",{"2":{"86":1}}],["prediction",{"2":{"86":1,"135":1}}],["previously",{"2":{"109":1}}],["previous",{"2":{"86":1,"134":1,"135":3,"136":1}}],["preserving",{"2":{"136":1,"147":1}}],["preservation",{"2":{"134":1}}],["preserved",{"2":{"137":1}}],["preserve",{"2":{"124":1}}],["preserves",{"2":{"120":1}}],["present",{"2":{"124":1}}],["presented",{"2":{"52":1,"55":1}}],["prescribed",{"2":{"115":2,"124":1}}],["pressuregradient",{"2":{"8":2,"97":3,"99":1,"109":2}}],["pressure",{"0":{"103":1,"111":1,"124":1},"2":{"8":1,"17":2,"18":1,"23":2,"24":1,"26":2,"27":1,"44":2,"45":1,"49":1,"50":2,"51":2,"56":2,"57":1,"64":1,"65":1,"67":2,"68":1,"99":3,"100":2,"103":5,"109":13,"110":1,"111":9,"112":1,"113":3,"115":7,"116":4,"120":3,"123":5,"124":9,"126":1,"131":3,"134":3,"135":6,"136":3,"137":3,"143":2}}],["pressurebc",{"2":{"8":1,"15":6,"18":3,"19":5,"21":5,"22":1,"24":1,"25":1,"27":1,"49":3,"51":3,"52":3,"54":3,"55":2,"57":2,"98":2,"115":2}}],["press",{"2":{"6":1,"147":1}}],["preferred",{"2":{"43":2,"110":1,"131":1}}],["preferences",{"2":{"12":1}}],["preconditioner",{"2":{"111":1}}],["precomputed",{"2":{"109":1}}],["precompute",{"2":{"96":1,"135":1}}],["precompiletools",{"2":{"12":1}}],["precisions",{"2":{"43":1,"110":2}}],["precision",{"0":{"110":1},"2":{"43":7,"49":1,"58":1,"60":1,"62":1,"64":1,"71":1,"110":9}}],["prettyprint",{"2":{"12":1}}],["preallocationtools",{"2":{"12":1}}],["proceedings",{"2":{"147":1}}],["process",{"0":{"17":1,"20":1,"23":1,"26":1,"30":1,"35":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"75":1},"2":{"131":2}}],["processors",{"0":{"131":1},"2":{"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":2,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"88":1,"130":3,"131":1}}],["processor",{"2":{"8":1,"11":1,"49":1,"51":1,"130":2,"131":8}}],["producing",{"2":{"97":1}}],["product",{"2":{"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"119":1}}],["programming",{"2":{"91":1}}],["progressmeter",{"2":{"12":1}}],["propagate",{"2":{"91":1}}],["proposed",{"2":{"109":1,"116":1,"119":1,"130":1}}],["propose",{"2":{"1":1}}],["provides",{"2":{"84":1,"134":1}}],["provide",{"2":{"43":2,"87":1,"94":1,"96":1}}],["provided",{"2":{"9":1,"43":1}}],["problems",{"2":{"109":1}}],["problem",{"0":{"16":1,"33":1,"34":1,"41":1,"74":1,"114":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"19":1,"22":2,"25":2,"29":1,"43":1,"46":2,"49":1,"52":1,"55":1,"66":1,"90":2,"112":2,"117":1,"130":1}}],["profile",{"2":{"13":1,"19":1,"49":1,"116":1}}],["protocols",{"2":{"12":1}}],["projecting",{"2":{"137":1}}],["projection",{"2":{"124":2,"137":1}}],["projector",{"2":{"124":1}}],["projected",{"2":{"112":1}}],["projects",{"2":{"7":1,"87":1}}],["project=lib",{"2":{"5":2}}],["project",{"2":{"5":2,"7":1,"8":1,"111":4}}],["pair",{"2":{"138":1}}],["pairs",{"2":{"58":6,"88":1,"111":1}}],["paper",{"2":{"109":1}}],["pattern",{"2":{"97":1}}],["path",{"2":{"5":2,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"131":1}}],["past",{"2":{"124":1}}],["pasteable",{"0":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1},"2":{"77":1}}],["passed",{"2":{"87":1,"89":1,"94":1,"95":2,"111":1,"130":1,"131":6}}],["passes",{"2":{"22":1,"25":1}}],["pass",{"2":{"43":1,"92":1}}],["pango",{"2":{"12":1}}],["partitioning",{"2":{"119":1}}],["particularly",{"2":{"44":1}}],["particular",{"2":{"9":1,"112":1}}],["part",{"2":{"95":1,"102":2}}],["parallel",{"2":{"112":1,"115":2}}],["params",{"2":{"95":3,"113":3}}],["parameter",{"2":{"105":1,"135":1}}],["parameterized",{"2":{"83":1,"117":1,"132":1}}],["parameters",{"2":{"12":1,"84":1,"86":6,"87":3,"95":1,"113":1,"135":1}}],["paraview",{"2":{"44":1,"131":2}}],["parabolic",{"2":{"22":1,"25":1}}],["parsers",{"2":{"12":1}}],["pack",{"2":{"95":1}}],["packing",{"2":{"12":1}}],["package",{"0":{"7":1,"10":1,"12":1},"1":{"11":1,"12":1},"2":{"5":1,"7":1,"12":1,"38":1,"82":1}}],["packagespec",{"2":{"5":1}}],["packages",{"0":{"14":1,"29":1,"38":1},"2":{"5":2,"12":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["padding",{"2":{"99":2}}],["paddedviews",{"2":{"12":1}}],["pad",{"2":{"8":2,"99":4}}],["page",{"2":{"0":1,"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["pkgversion",{"2":{"12":1}}],["pkgmode",{"2":{"12":1}}],["pkg",{"2":{"4":2,"5":5,"12":4,"82":1}}],["embedded",{"2":{"147":1}}],["empty",{"2":{"98":1,"118":2}}],["euler",{"2":{"138":1,"139":1,"141":1}}],["e^",{"2":{"131":1}}],["edge",{"2":{"119":1}}],["eddy",{"0":{"90":1},"2":{"83":1,"90":2,"109":1,"118":1,"147":2}}],["eddies",{"2":{"28":1,"32":1,"90":2}}],["eαβ",{"2":{"119":2}}],["eα=",{"2":{"119":1}}],["et",{"2":{"116":1}}],["etc",{"2":{"5":1,"97":1}}],["eigenvalue",{"2":{"109":2,"124":1}}],["eig2field",{"2":{"8":1,"60":4,"61":4,"64":3,"65":3,"109":2}}],["ecosystem",{"2":{"91":1,"92":1}}],["ec84b674",{"2":{"12":1}}],["estimate",{"2":{"90":1}}],["espec",{"2":{"29":1,"30":1,"31":2,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"74":1,"75":1,"76":2}}],["err",{"2":{"86":1}}],["error",{"2":{"12":1,"69":3,"70":2,"83":1,"86":9,"87":3,"143":1}}],["errors",{"2":{"1":1,"86":1,"90":1,"135":1,"137":1}}],["evolves",{"2":{"103":1}}],["evolution",{"2":{"90":1,"100":1}}],["evaluation",{"2":{"86":1}}],["evaluated",{"2":{"120":1}}],["evaluate",{"2":{"86":1}}],["even",{"2":{"89":1,"137":1}}],["eventually",{"2":{"28":1,"32":1}}],["event",{"2":{"9":1}}],["every",{"2":{"43":1,"93":1,"130":2,"131":8,"135":1}}],["elsewhere",{"2":{"109":1}}],["else",{"2":{"73":1,"76":1,"115":1}}],["elseif",{"2":{"73":1,"76":1}}],["elements",{"2":{"109":1}}],["element",{"2":{"69":1,"101":1,"112":2,"116":1}}],["e−2t",{"2":{"69":2}}],["e₁",{"2":{"55":3,"57":3}}],["e₀",{"2":{"55":2,"57":2}}],["equals",{"2":{"142":1}}],["equal",{"2":{"107":1}}],["equality",{"2":{"98":1}}],["equation",{"0":{"80":1,"103":1,"124":1,"132":1},"2":{"8":1,"58":3,"59":1,"60":3,"61":1,"62":2,"63":1,"64":3,"65":1,"83":1,"86":1,"99":1,"100":1,"103":2,"109":4,"111":3,"112":2,"117":4,"120":2,"122":2,"123":1,"124":3,"128":2,"132":9,"134":4,"136":1}}],["equations",{"0":{"100":1,"120":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"83":2,"90":1,"95":1,"100":1,"101":1,"103":1,"105":1,"109":3,"112":5,"113":3,"119":1,"120":2,"122":1,"123":2,"124":5,"134":1,"147":3}}],["equivalent",{"2":{"119":1}}],["equivariant",{"2":{"87":2}}],["equivariance",{"2":{"86":1}}],["equilibrium",{"2":{"43":1,"46":1}}],["ehist",{"2":{"29":1,"30":1,"31":2,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"51":1,"74":1,"75":1,"76":2}}],["e66e0078",{"2":{"12":1}}],["easy",{"2":{"86":2,"92":1}}],["each",{"2":{"77":1,"86":2,"87":2,"115":2,"119":1,"120":1,"122":1,"134":2,"137":4}}],["ea8e919c",{"2":{"12":1}}],["ea2f1a96",{"2":{"12":1}}],["earcut",{"2":{"12":1}}],["efficient",{"2":{"91":1,"94":2,"109":1,"110":1,"124":1}}],["effect",{"2":{"86":1}}],["efe28fd5",{"2":{"12":1}}],["efcefdf7",{"2":{"12":1}}],["efce3f68",{"2":{"12":1}}],["efcf1570",{"2":{"12":1}}],["e7412a2a",{"2":{"12":1}}],["e9f186c6",{"2":{"12":1}}],["e94cdb99",{"2":{"12":1}}],["e9467ef8",{"2":{"12":1}}],["eps",{"2":{"60":1,"61":1,"64":1,"65":1}}],["epollshim",{"2":{"12":1}}],["epyc",{"2":{"11":1}}],["e88e6eb3",{"2":{"12":1}}],["e37daf67",{"2":{"12":1}}],["e33a78d0",{"2":{"12":1}}],["e3aaa7dc",{"2":{"12":1}}],["e30172f5",{"2":{"12":1}}],["ee1fde0b",{"2":{"12":1}}],["eebad327",{"2":{"12":1}}],["ee78f7c6",{"2":{"12":1}}],["e1d29d7a",{"2":{"12":1}}],["e2ba6199",{"2":{"12":1}}],["e2d170a0",{"2":{"12":1}}],["except",{"2":{"123":1}}],["exceed",{"2":{"94":1}}],["excluding",{"2":{"109":2}}],["exclamation",{"2":{"92":1}}],["extracted",{"2":{"83":1}}],["extrema",{"2":{"69":1,"70":1}}],["extensions",{"2":{"131":1}}],["extension",{"2":{"22":1,"25":1,"97":1}}],["extended",{"2":{"119":1,"137":1}}],["extend",{"2":{"15":1,"19":1,"22":1,"25":1,"49":1,"52":1}}],["extents",{"2":{"12":1}}],["exactly",{"2":{"90":1,"115":1,"124":1}}],["exact",{"2":{"86":2,"134":2,"137":1}}],["exactpredicates",{"2":{"12":1}}],["examples`",{"2":{"12":1}}],["examples",{"0":{"77":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"11":1,"12":2,"58":1,"62":1,"69":1,"77":1}}],["example",{"0":{"93":1,"95":1,"97":1},"2":{"5":2,"13":1,"14":1,"18":1,"19":2,"21":1,"22":2,"24":1,"25":2,"27":1,"28":1,"31":1,"32":1,"36":1,"42":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":2,"54":1,"55":2,"57":1,"59":1,"61":1,"63":1,"65":1,"66":2,"68":1,"69":1,"70":1,"71":1,"76":1,"77":2,"82":1,"90":1,"95":1,"96":1,"97":1,"109":1,"112":1,"124":3,"131":1}}],["expensive",{"2":{"109":1}}],["experimental",{"2":{"83":1}}],["explicitrungekuttamethod",{"2":{"134":1,"137":2,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["explicit",{"0":{"138":1,"140":1},"2":{"112":1,"134":2,"135":2,"136":1,"137":2,"147":1}}],["explicitly",{"2":{"43":1,"112":1,"124":1}}],["exploit",{"2":{"86":1}}],["exp",{"2":{"69":1,"70":1}}],["expat",{"2":{"12":1}}],["expronicon",{"2":{"12":1}}],["exprtools",{"2":{"12":1}}],["express",{"2":{"9":1}}],["export",{"2":{"20":2,"23":2,"26":2,"30":1,"44":2,"47":2,"50":2,"53":2,"56":2,"67":2}}],["exported",{"2":{"8":1}}],["exports",{"2":{"8":1,"137":1}}],["engineering",{"2":{"147":1}}],["england",{"2":{"147":1}}],["ensured",{"2":{"137":1}}],["ensures",{"2":{"134":1}}],["enable",{"2":{"132":1}}],["enforcing",{"2":{"124":1}}],["enforces",{"2":{"111":1}}],["enforced",{"2":{"43":1,"133":1,"135":1}}],["entire",{"2":{"115":1}}],["entries",{"2":{"97":4}}],["enumerate",{"2":{"69":1,"70":1}}],["enumx",{"2":{"12":1}}],["end",{"2":{"49":5,"51":5,"55":6,"57":6,"58":10,"59":10,"69":2,"70":2,"73":1,"76":1,"93":2,"115":1,"130":1,"131":2,"134":1}}],["enzymecore",{"2":{"12":1}}],["enzyme",{"0":{"94":1},"1":{"95":1},"2":{"12":2,"91":1,"94":6,"95":5}}],["energy",{"0":{"93":1,"106":1,"126":1},"2":{"8":5,"19":2,"21":2,"22":2,"24":2,"25":2,"27":2,"28":1,"29":2,"30":2,"31":2,"32":1,"34":2,"35":2,"36":2,"37":1,"41":4,"42":2,"43":2,"45":2,"46":2,"47":1,"48":2,"49":2,"51":2,"52":2,"54":2,"55":5,"57":5,"66":2,"68":2,"74":2,"75":2,"76":2,"90":2,"93":4,"106":1,"109":9,"118":1,"120":1,"126":1,"131":7,"133":2,"147":2}}],["env",{"2":{"6":1}}],["environments",{"0":{"5":1},"1":{"6":1,"7":1},"2":{"5":1}}],["environment",{"0":{"7":1},"2":{"4":1,"5":3,"6":5,"82":1}}],["encounters",{"2":{"13":1,"19":1,"49":1}}],["encounter",{"2":{"1":1}}],["e",{"2":{"3":1,"4":1,"5":2,"66":2,"68":2,"69":5,"70":5,"87":1,"89":1,"92":2,"99":2,"116":1,"121":1,"147":3}}],["iiia",{"2":{"142":1}}],["ij",{"2":{"137":1}}],["i−|ωi3|32+d|ωi|∑α=1d",{"2":{"122":1}}],["i−hβ",{"2":{"120":2}}],["i−gl−1wm",{"2":{"112":1,"124":2}}],["i+fourth",{"2":{"122":1}}],["i+fα",{"2":{"120":1,"122":1}}],["i+hβ",{"2":{"120":2}}],["i+ν∑β=1d",{"2":{"120":1,"122":1}}],["illustrated",{"2":{"119":1}}],["i∈i+∑α=1dhα",{"2":{"119":1}}],["i∈i+hα",{"2":{"119":1,"120":2}}],["i∈i",{"2":{"119":1,"120":3}}],["i∈",{"2":{"119":1}}],["iα",{"2":{"119":1}}],["identification",{"2":{"147":1}}],["identical",{"2":{"122":1}}],["id",{"2":{"119":1}}],["i1",{"2":{"119":1}}],["i=3",{"2":{"143":3}}],["i=1",{"2":{"137":1}}],["i=φi+3hα−φi−3hαδiα−1α+δiαα+δiα+1α",{"2":{"122":1}}],["i=φi+hα−φi−hα|δiαα|",{"2":{"119":1}}],["i=∏α=1d",{"2":{"119":1}}],["i=",{"2":{"119":1}}],["i=0and",{"2":{"122":1}}],["i=0",{"2":{"116":1,"120":1}}],["icfunc",{"2":{"88":1}}],["icefire",{"2":{"58":2,"59":1}}],["io",{"2":{"88":2,"109":1}}],["iocapture",{"2":{"12":1}}],["i",{"2":{"69":2,"70":2,"109":13,"115":2,"116":1,"119":5,"120":3,"121":1,"131":1,"133":2,"137":1}}],["ix",{"2":{"58":4,"59":4}}],["ip",{"2":{"55":1,"57":1,"58":8,"59":2,"60":1,"61":1,"64":1,"65":1,"69":4,"70":4,"95":1,"97":1,"98":1,"115":1,"116":1}}],["iu",{"2":{"55":2,"57":2,"58":6,"93":3,"95":1,"97":1,"98":1,"115":1,"116":1}}],["irrationalconstants",{"2":{"12":1}}],["irtools",{"2":{"12":1}}],["imex",{"2":{"135":1}}],["im",{"2":{"95":1}}],["important",{"2":{"87":1}}],["improve",{"2":{"86":1}}],["implicitness",{"2":{"135":1}}],["implicitrungekuttamethod",{"2":{"134":1,"137":2,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["implicit",{"0":{"139":1},"2":{"112":1,"134":2,"135":1,"137":2,"139":1,"141":1}}],["implied",{"2":{"9":1}}],["implemented",{"2":{"96":1,"97":1}}],["implementations",{"2":{"112":1}}],["implementation",{"2":{"94":1,"119":1}}],["implement",{"2":{"85":1,"94":1}}],["imath",{"2":{"12":1}}],["image",{"2":{"69":1,"131":1}}],["imagemetadata",{"2":{"12":1}}],["imageio",{"2":{"12":1}}],["imagecore",{"2":{"12":1}}],["imagebase",{"2":{"12":1}}],["imageaxes",{"2":{"12":1}}],["isnormal",{"2":{"115":3}}],["isright",{"2":{"115":4}}],["isprojecting",{"2":{"87":2}}],["ispath",{"2":{"69":1,"70":1}}],["islifting",{"2":{"87":2}}],["isa",{"2":{"58":2,"59":2}}],["isotropic",{"0":{"28":1,"32":1},"1":{"29":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":1},"2":{"28":1,"32":1,"147":1}}],["isoband",{"2":{"12":2}}],["issps3",{"2":{"137":1,"139":2}}],["isspm2",{"2":{"137":1,"139":2}}],["issteadybodyforce",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"58":6,"95":1,"97":1,"98":1,"117":1}}],["issues",{"2":{"1":1}}],["is",{"2":{"4":2,"5":2,"7":1,"9":4,"13":1,"14":1,"15":1,"18":1,"19":3,"21":1,"22":3,"24":1,"25":3,"27":1,"28":1,"31":1,"32":1,"36":1,"37":3,"40":2,"42":1,"43":11,"44":1,"45":1,"46":2,"48":1,"49":2,"51":1,"52":2,"54":1,"55":3,"57":1,"59":1,"61":1,"63":1,"65":1,"66":2,"68":1,"70":1,"72":1,"76":1,"77":2,"83":3,"86":7,"87":1,"89":2,"90":6,"91":4,"92":2,"93":2,"94":3,"95":2,"97":3,"98":2,"100":7,"101":2,"102":2,"103":1,"105":2,"107":4,"108":2,"109":7,"110":1,"112":4,"113":1,"115":9,"116":1,"117":1,"119":10,"120":7,"122":4,"123":7,"124":7,"126":1,"127":3,"128":1,"130":6,"131":30,"132":2,"133":3,"134":6,"135":10,"136":5,"137":7,"141":1}}],["itself",{"2":{"99":1,"122":1}}],["its",{"2":{"94":3,"95":1,"122":1,"135":1}}],["iterative",{"2":{"110":1,"111":2}}],["iterativesolvers",{"2":{"12":1,"111":1}}],["iterations",{"2":{"86":2,"137":1}}],["iteration",{"2":{"43":1,"130":1,"131":1,"137":2}}],["iteratorinterfaceextensions",{"2":{"12":1}}],["itertools",{"2":{"12":1}}],["it",{"2":{"4":4,"7":1,"40":1,"69":1,"84":1,"86":2,"87":3,"91":2,"92":1,"93":1,"99":1,"105":1,"107":2,"108":2,"109":2,"112":3,"115":1,"119":1,"124":4,"127":1,"130":2,"134":1}}],["ifelse",{"2":{"12":1}}],["if",{"2":{"1":1,"4":1,"7":1,"43":2,"44":1,"72":1,"73":1,"76":1,"86":2,"87":2,"89":3,"90":2,"91":1,"103":1,"109":1,"115":2,"116":1,"119":1,"124":3,"130":3,"131":4,"133":1,"134":3,"137":3}}],["inertial",{"2":{"131":1}}],["inner",{"2":{"99":2,"115":1,"120":1}}],["init",{"2":{"87":1}}],["initiated",{"2":{"37":1}}],["initialized",{"2":{"131":2}}],["initializers",{"0":{"118":1}}],["initialize",{"2":{"58":4,"130":1,"131":8}}],["initially",{"2":{"22":1,"25":1,"43":1,"46":1}}],["initial",{"2":{"15":1,"19":1,"22":1,"25":1,"28":1,"32":1,"43":1,"46":1,"49":1,"52":1,"55":1,"56":1,"58":1,"60":1,"62":1,"64":1,"66":1,"73":1,"87":3,"93":2,"118":1,"134":1,"137":1}}],["initialvalues",{"2":{"12":1}}],["inds",{"2":{"133":1}}],["indexed",{"2":{"119":1}}],["index",{"2":{"109":2,"116":3,"119":2,"121":4}}],["independently",{"2":{"87":1}}],["indices",{"2":{"58":1,"59":1,"109":5,"115":1,"119":1}}],["indirectarrays",{"2":{"12":1}}],["input",{"2":{"87":4,"95":1,"98":1,"110":1,"137":1}}],["inputs",{"2":{"83":1,"99":1}}],["inverting",{"2":{"135":1}}],["inverse",{"2":{"105":1}}],["inversefunctions",{"2":{"12":1}}],["invariants",{"2":{"109":1}}],["involving",{"2":{"86":1}}],["involve",{"2":{"86":1}}],["inline",{"2":{"77":1}}],["inlet",{"2":{"13":1,"19":1,"49":1}}],["introduces",{"2":{"137":1}}],["int",{"2":{"109":1}}],["into",{"2":{"82":1,"86":1,"87":3,"133":1,"134":1,"137":1}}],["int64",{"2":{"58":56,"86":1,"95":5,"97":4,"99":4,"131":1}}],["integer",{"2":{"130":1}}],["integrated",{"2":{"134":1}}],["integration",{"2":{"134":1}}],["integrating",{"2":{"128":1}}],["integrals",{"2":{"120":2,"128":1}}],["integral",{"0":{"101":1},"2":{"101":2,"109":1,"120":2}}],["intelopenmp",{"2":{"12":1}}],["interpreted",{"2":{"119":1}}],["interpolation",{"2":{"112":2,"116":1,"120":1}}],["interpolations",{"2":{"12":1}}],["interpolated",{"2":{"109":1}}],["interpolate",{"2":{"8":2,"84":2,"109":10,"126":1}}],["interest",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1}}],["intermediate",{"2":{"92":1,"137":1}}],["interfaces",{"2":{"89":1}}],["intervals",{"2":{"134":1}}],["intervalsets",{"2":{"12":1}}],["interval",{"2":{"134":1}}],["intervalarithmetic",{"2":{"12":1}}],["interactiveutils",{"2":{"11":2,"12":1}}],["interactively",{"2":{"5":1}}],["interactive",{"2":{"4":1,"11":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"86":1,"131":1}}],["injected",{"2":{"37":1}}],["instead",{"2":{"119":2,"124":2,"137":1}}],["instability",{"0":{"62":1,"64":1},"1":{"63":1,"65":1}}],["instabilities",{"2":{"58":1}}],["instantiate",{"2":{"5":2,"117":1}}],["instantiated",{"2":{"5":1}}],["install",{"2":{"3":1,"82":2,"89":1,"112":1}}],["inspecting",{"2":{"44":1}}],["inside",{"2":{"15":2,"18":2,"19":2,"21":2,"95":1}}],["influence",{"2":{"135":1}}],["inflow",{"2":{"15":5,"18":3,"19":1,"22":4,"25":4,"49":1,"52":1,"98":1,"124":3}}],["inflate",{"2":{"12":1}}],["info",{"2":{"11":2,"12":1,"16":10,"29":8,"58":2,"62":10,"69":1,"70":1}}],["information",{"2":{"0":1,"112":1,"131":1}}],["increment",{"2":{"134":1,"137":1}}],["incremented",{"2":{"121":1}}],["includes",{"2":{"134":1}}],["include",{"2":{"109":1,"112":1}}],["included",{"2":{"9":1,"97":1}}],["including",{"2":{"9":2,"43":1,"116":2,"123":1}}],["incompressible",{"0":{"100":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"100":1,"105":1,"147":5}}],["incompressiblenavierstokesmakieext",{"2":{"58":3}}],["incompressiblenavierstokes",{"0":{"8":1,"112":1},"1":{"113":1},"2":{"4":1,"5":3,"8":3,"9":1,"12":3,"14":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":2,"31":1,"32":1,"36":1,"38":2,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":15,"59":1,"60":2,"61":2,"62":3,"63":1,"64":2,"65":2,"66":1,"68":1,"69":3,"70":1,"71":1,"76":1,"82":3,"83":4,"84":1,"89":1,"91":1,"93":1,"94":1,"95":2,"96":1,"97":2,"98":1,"99":10,"109":54,"110":1,"111":18,"112":2,"113":3,"115":18,"116":6,"117":2,"118":5,"130":3,"131":16,"132":2,"133":7,"134":9,"135":2,"136":2,"137":9,"138":37,"139":16,"140":9,"141":33,"142":12,"143":30,"144":9,"145":12}}],["in",{"0":{"62":1,"64":1,"112":1},"1":{"63":1,"65":1,"113":1},"2":{"0":2,"4":1,"5":3,"6":2,"7":1,"9":6,"13":2,"19":2,"22":1,"25":1,"28":2,"32":2,"37":1,"43":3,"44":2,"46":1,"49":4,"51":2,"52":1,"55":3,"58":1,"60":1,"66":1,"69":3,"70":1,"71":1,"72":3,"77":1,"84":1,"85":2,"87":2,"90":1,"91":1,"92":3,"93":1,"94":5,"95":5,"96":1,"97":1,"101":1,"103":2,"107":2,"108":2,"109":35,"111":4,"112":4,"113":2,"115":3,"116":8,"117":2,"118":1,"119":6,"120":13,"121":2,"122":1,"123":1,"124":2,"127":1,"128":1,"130":1,"131":9,"132":2,"133":1,"134":7,"135":2,"147":2}}],["gq+yg",{"2":{"136":1}}],["gδp+yg",{"2":{"135":1}}],["g=wu−1mtw",{"2":{"123":1}}],["gp0+yg",{"2":{"135":2}}],["gp+yg",{"2":{"134":1}}],["gph+yg",{"2":{"123":2}}],["gpus",{"2":{"43":1,"89":1,"110":1}}],["gpu",{"0":{"89":1},"2":{"43":2,"89":2,"109":1,"110":1}}],["gpucompiler",{"2":{"12":1}}],["gpuarrayscore",{"2":{"12":1}}],["gpuarrays",{"2":{"12":1}}],["gt",{"2":{"115":2,"134":1}}],["ghost",{"2":{"99":1,"116":2}}],["garbage",{"2":{"94":1}}],["gallery",{"0":{"77":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"77":1,"82":1}}],["goes",{"2":{"130":1}}],["governing",{"2":{"105":1}}],["governed",{"2":{"83":1}}],["go",{"2":{"99":1}}],["good",{"2":{"92":1}}],["gdir",{"2":{"58":8,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":2,"132":2}}],["gif",{"2":{"131":1}}],["giflib",{"2":{"12":1}}],["give",{"2":{"90":1,"98":1,"131":1}}],["gives",{"2":{"83":1,"97":1,"116":1,"120":1}}],["given",{"2":{"69":1,"83":1,"86":1,"90":2,"107":2,"109":4,"113":1,"115":1,"122":1,"130":1,"134":1,"135":2,"136":3,"137":1}}],["git",{"2":{"12":2}}],["github",{"2":{"0":1,"1":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"83":2,"109":1,"112":1}}],["gl3",{"2":{"137":1,"141":2}}],["gl2",{"2":{"137":1,"141":2}}],["gl1",{"2":{"137":1,"141":2}}],["glib",{"2":{"12":1}}],["glmakie",{"2":{"12":1,"14":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"31":1,"36":1,"42":1,"43":1,"45":1,"48":1,"51":1,"52":1,"54":1,"55":1,"57":1,"59":5,"61":1,"63":1,"65":1,"66":1,"68":1,"70":1,"76":1,"86":1,"131":2}}],["glfw",{"2":{"12":2}}],["global",{"2":{"4":1,"66":1,"90":1}}],["gcnn",{"2":{"87":1}}],["gc",{"2":{"11":1}}],["gnu",{"2":{"11":1}}],["gebhart",{"2":{"117":1,"132":1}}],["ge",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["generator",{"2":{"133":1}}],["generation",{"0":{"88":1}}],["generates",{"2":{"110":1}}],["generate",{"2":{"58":1,"60":1}}],["generated",{"2":{"11":1,"12":1,"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"58":1,"59":1,"61":1,"62":1,"63":1,"65":1,"68":1,"69":1,"70":1,"76":1,"77":1}}],["generic",{"2":{"15":1,"58":2,"69":1,"95":1}}],["geometrybasics",{"2":{"12":1}}],["geointerface",{"2":{"12":1}}],["geoformattypes",{"2":{"12":1}}],["getval",{"2":{"133":1}}],["gets",{"2":{"131":1}}],["getting",{"0":{"82":1}}],["gettext",{"2":{"12":1}}],["getoffset",{"2":{"8":1,"133":1}}],["get",{"2":{"0":1,"8":2,"82":1,"98":1,"99":1,"109":3,"111":1,"115":1,"116":1,"130":4,"133":8,"134":2,"137":1}}],["green",{"0":{"69":1,"71":1},"1":{"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"69":2,"71":1}}],["groupconv2d",{"2":{"87":2}}],["group",{"2":{"28":1,"32":1,"87":3,"135":1}}],["grisu",{"2":{"12":1}}],["gridlayoutbase",{"2":{"12":1}}],["grid",{"0":{"116":1},"2":{"8":3,"15":1,"19":1,"22":3,"24":1,"25":1,"39":1,"43":3,"45":2,"46":4,"48":2,"49":1,"52":1,"55":2,"57":1,"58":11,"59":4,"60":3,"61":3,"62":3,"63":2,"64":1,"65":1,"66":1,"69":1,"70":1,"85":2,"87":1,"90":8,"93":1,"95":1,"97":1,"98":1,"113":1,"116":18,"119":1,"122":1,"126":1,"133":1,"147":1}}],["gradients",{"2":{"91":1,"111":2}}],["gradient",{"0":{"93":1,"95":1},"2":{"58":2,"59":1,"93":2,"95":2,"99":1,"109":6,"123":3,"124":1}}],["graphite2",{"2":{"12":1}}],["graphics",{"2":{"12":1,"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["granted",{"2":{"9":1}}],["gravity",{"2":{"8":1,"109":4,"117":1,"132":2}}],["g",{"2":{"3":1,"83":1,"86":2,"87":3,"89":1,"92":2,"93":3,"99":2,"109":2,"121":1}}],["brenner",{"2":{"147":1}}],["break",{"2":{"110":1}}],["brasey",{"2":{"140":2}}],["bα",{"2":{"119":2}}],["b−a",{"2":{"116":3}}],["blog",{"2":{"109":1}}],["blas",{"2":{"92":1,"94":1}}],["blade",{"2":{"13":2,"19":2,"49":2}}],["bénard",{"0":{"58":1,"60":1},"1":{"59":1,"61":1}}],["b",{"2":{"55":3,"57":2,"69":2,"70":2,"97":2,"98":2,"109":8,"111":2,"116":10,"134":1,"137":3,"147":9}}],["bool",{"2":{"58":17,"111":2,"131":5}}],["both",{"2":{"58":1,"115":1}}],["bottom",{"2":{"22":1,"25":2,"27":1,"43":1,"45":1,"46":1,"48":1,"58":1,"77":1}}],["boundaries",{"2":{"25":1,"116":1,"119":1}}],["boundary",{"0":{"79":1,"98":1,"102":1,"115":1,"121":1},"2":{"15":3,"18":2,"19":2,"21":2,"22":3,"24":2,"25":3,"27":2,"43":3,"44":1,"45":2,"46":3,"48":2,"49":2,"51":2,"52":3,"54":2,"55":2,"57":2,"58":15,"59":2,"60":2,"61":2,"62":2,"63":2,"64":2,"65":2,"95":1,"97":2,"98":6,"99":7,"101":1,"102":3,"103":1,"113":1,"115":29,"116":2,"117":3,"118":2,"119":1,"123":5,"124":3,"132":2,"134":1,"147":1}}],["boxplotter",{"2":{"49":1,"51":1}}],["boxes",{"2":{"49":3,"50":3,"51":6}}],["box",{"2":{"17":4,"18":4,"37":1,"43":2,"46":1,"49":3,"51":3,"58":1,"60":1,"95":1,"116":1}}],["bodyforce",{"2":{"15":3,"18":2,"19":2,"21":2,"39":1,"40":1,"42":2,"49":7,"51":7,"58":6,"95":1,"97":1,"98":1,"117":1}}],["body",{"0":{"40":1},"2":{"13":1,"15":1,"19":2,"39":1,"49":2,"100":2,"109":2,"135":1}}],["b77e0a4c",{"2":{"12":1}}],["b27032c2",{"2":{"12":1}}],["b22a6f82",{"2":{"12":1}}],["b2108857",{"2":{"12":1}}],["bzip2",{"2":{"12":1}}],["bd369af6",{"2":{"12":1}}],["b3c3ace0",{"2":{"12":1}}],["b38be410",{"2":{"12":1}}],["b1df2697",{"2":{"12":1}}],["b14d175d",{"2":{"12":1}}],["bbf590c4",{"2":{"12":1}}],["bbf7d656",{"2":{"12":1}}],["bb33d45b",{"2":{"12":1}}],["b964fa9f",{"2":{"12":1}}],["b9860ae5",{"2":{"12":1}}],["b835a17e",{"2":{"12":1}}],["b53b4c65",{"2":{"12":1}}],["b5f81e59",{"2":{"12":1}}],["b552c78f",{"2":{"12":1}}],["b0b7db55",{"2":{"12":1}}],["bias",{"2":{"87":2}}],["bittwiddlingconveniencefunctions",{"2":{"12":1}}],["bibliography",{"0":{"147":1},"2":{"12":1}}],["bibparser",{"2":{"12":1}}],["bibinternal",{"2":{"12":1}}],["bibtex",{"2":{"0":1}}],["bashforth",{"0":{"135":1},"2":{"134":1,"135":3}}],["basis",{"2":{"109":2}}],["based",{"2":{"133":1,"142":1}}],["baseline",{"2":{"90":2}}],["baselet",{"2":{"12":1}}],["base",{"2":{"58":6,"95":1,"111":1}}],["base64",{"2":{"12":1}}],["batch",{"2":{"86":2}}],["batchsize",{"2":{"86":2}}],["back",{"2":{"91":1,"99":1,"130":1,"132":1}}],["backwardfacingstep3d",{"2":{"25":1,"27":1}}],["backwardfacingstep2d",{"2":{"22":1,"24":1}}],["backward",{"0":{"22":1,"25":1},"1":{"23":1,"24":1,"26":1,"27":1},"2":{"92":1,"139":1}}],["backend",{"0":{"72":1},"2":{"14":1,"19":4,"21":3,"22":4,"24":3,"25":4,"27":3,"29":1,"33":2,"36":3,"43":4,"45":3,"46":3,"48":3,"49":3,"51":3,"52":1,"55":5,"57":4,"58":8,"59":3,"60":2,"61":3,"62":1,"63":2,"64":2,"65":3,"66":4,"68":3,"69":2,"70":2,"72":1,"73":1,"76":3,"88":1,"89":3,"92":1,"95":1,"97":1,"98":1,"109":1,"116":1,"117":3}}],["bac558e1",{"2":{"12":1}}],["bangbang",{"2":{"12":1}}],["bar",{"2":{"6":1}}],["bc367c6b",{"2":{"12":1}}],["bc",{"2":{"8":6,"19":1,"97":2,"98":4,"99":3,"111":1,"115":16}}],["be11",{"2":{"137":1,"139":1}}],["beta",{"0":{"136":1},"2":{"134":1}}],["between",{"2":{"43":1,"86":1,"109":2,"116":1,"131":1}}],["before",{"2":{"121":1,"126":1,"131":1,"135":1,"137":1}}],["beneficial",{"2":{"117":1}}],["benjamin",{"2":{"9":1,"137":1}}],["beginning",{"2":{"115":1}}],["being",{"2":{"109":1}}],["beck",{"2":{"147":1}}],["become",{"2":{"97":1,"123":1,"124":1}}],["becomes",{"2":{"85":1,"103":1,"123":1}}],["because",{"2":{"92":1}}],["been",{"2":{"89":3,"123":1}}],["below",{"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"96":1,"119":1,"130":1}}],["bea87d4a",{"2":{"12":1}}],["be",{"2":{"5":4,"6":1,"7":1,"9":2,"12":1,"43":3,"44":1,"46":1,"77":1,"83":1,"84":1,"87":1,"89":2,"90":5,"92":1,"94":2,"95":3,"96":1,"98":2,"99":1,"100":1,"108":2,"109":3,"110":1,"111":1,"112":1,"113":1,"115":2,"117":1,"119":3,"122":1,"124":4,"131":3,"132":1,"134":3,"135":2,"137":2}}],["business",{"2":{"147":1}}],["buf",{"2":{"130":1}}],["built",{"2":{"43":1,"109":1}}],["building",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1}}],["build",{"2":{"5":1,"11":1,"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"62":1,"66":1,"69":1,"137":2}}],["butcher",{"2":{"137":2}}],["but",{"2":{"5":1,"9":1,"12":1,"14":1,"19":1,"22":2,"25":2,"28":1,"32":1,"43":3,"52":1,"55":1,"66":1,"86":1,"122":1,"134":1,"143":1}}],["button",{"2":{"0":1,"6":1}}],["by",{"2":{"3":1,"5":1,"6":1,"7":1,"8":1,"12":1,"19":1,"22":1,"25":1,"43":5,"52":1,"55":1,"66":1,"69":1,"72":1,"83":2,"86":1,"87":1,"89":1,"95":2,"97":1,"98":2,"101":1,"106":1,"107":2,"108":2,"109":5,"112":1,"115":1,"116":1,"117":1,"118":1,"119":2,"120":3,"122":2,"123":1,"124":1,"126":1,"131":3,"132":1,"134":1,"135":3,"136":4,"137":4}}],["o",{"2":{"147":1}}],["oliva",{"2":{"147":1}}],["o=ωi",{"2":{"120":2}}],["o⊂ω",{"2":{"101":1}}],["own",{"2":{"97":1,"120":1}}],["odeproblem",{"2":{"112":2}}],["odesolution",{"2":{"112":1}}],["odes",{"2":{"112":1}}],["ode",{"2":{"86":2,"134":4}}],["our",{"2":{"44":1,"69":1,"119":1}}],["outer",{"2":{"120":1,"137":1}}],["outside",{"2":{"115":1,"120":1}}],["outlet",{"2":{"115":1}}],["outdir",{"2":{"20":1,"21":2,"22":1,"23":1,"24":3,"25":1,"26":1,"27":3,"34":1,"36":1,"43":1,"44":2,"45":3,"46":1,"47":1,"48":3,"50":1,"51":2,"52":1,"53":1,"54":3,"55":1,"56":1,"57":3,"59":1,"60":1,"61":2,"63":1,"64":1,"65":2,"66":1,"67":1,"68":3,"69":3,"70":4,"74":1,"76":1}}],["outdated",{"2":{"12":1}}],["output",{"0":{"125":1},"1":{"126":1,"127":1},"2":{"18":1,"19":2,"21":2,"22":2,"24":2,"25":2,"27":2,"31":1,"36":1,"42":1,"43":1,"45":2,"46":1,"48":2,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"58":3,"59":2,"60":2,"61":2,"62":3,"63":2,"64":2,"65":2,"66":2,"68":2,"69":3,"70":2,"76":1,"87":1,"94":1,"95":3,"131":1}}],["outputs",{"2":{"16":1,"18":1,"19":1,"21":2,"22":1,"24":1,"25":1,"27":1,"29":1,"31":3,"34":1,"35":2,"36":4,"41":1,"42":4,"43":2,"44":8,"45":8,"46":1,"48":2,"49":1,"51":1,"52":1,"54":2,"55":1,"57":2,"58":1,"59":3,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":2,"69":1,"70":1,"74":1,"76":3,"77":1,"93":1,"130":3}}],["out",{"2":{"9":1,"49":3,"51":3,"82":1,"85":1,"95":1,"112":1,"134":1}}],["over",{"2":{"15":1,"19":1,"49":1,"85":2,"91":1,"112":1,"128":1}}],["ogg",{"2":{"12":1}}],["opposite",{"2":{"115":1}}],["opt",{"2":{"86":4}}],["optimal",{"2":{"138":2,"139":2}}],["optimized",{"2":{"94":1}}],["optimiser",{"2":{"86":2}}],["optimisers",{"2":{"12":1}}],["options",{"2":{"111":1,"112":1,"117":1}}],["optional",{"2":{"43":1,"137":1}}],["option",{"2":{"43":1}}],["operation",{"2":{"93":1}}],["operations",{"2":{"93":1,"109":1}}],["operating",{"2":{"87":1}}],["operator",{"2":{"87":1,"99":1,"109":1,"119":2,"120":1,"123":4,"124":3}}],["operators",{"0":{"109":1},"2":{"19":1,"22":1,"25":1,"43":2,"46":1,"49":1,"52":1,"55":1,"66":1,"89":2,"92":2,"96":2,"97":4,"109":2,"123":2}}],["opened",{"2":{"44":1}}],["openexr",{"2":{"12":2}}],["openlibm",{"2":{"12":1}}],["openblas",{"2":{"12":1}}],["openspecfun",{"2":{"12":1}}],["openssl",{"2":{"12":1}}],["open",{"2":{"1":1,"6":1,"82":1}}],["opus",{"2":{"12":1}}],["os",{"2":{"11":1}}],["object",{"2":{"95":1}}],["objectfile",{"2":{"12":1}}],["obtain",{"2":{"134":1,"135":1}}],["obtained",{"2":{"43":1,"46":1,"86":1,"95":1,"112":1,"120":1,"122":1,"136":1}}],["obtaining",{"2":{"9":1,"112":1}}],["observable",{"2":{"58":6,"59":6,"130":1,"131":3}}],["observables",{"2":{"12":1}}],["observe",{"2":{"58":1,"59":1,"131":2}}],["observer",{"2":{"58":2}}],["observespectrum",{"2":{"8":1,"131":2}}],["observefield",{"2":{"8":1,"131":1}}],["other",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1},"2":{"7":1,"9":2,"89":1,"90":1,"137":1}}],["otherwise",{"2":{"6":1,"9":1,"87":1,"109":1,"115":1,"116":1,"119":1}}],["orlandi",{"2":{"147":1}}],["original",{"2":{"55":1,"137":1}}],["order",{"0":{"122":1},"2":{"43":1,"55":1,"66":1,"95":1,"111":1,"112":1,"122":5,"123":1,"134":1,"135":5,"136":1,"137":3,"138":2,"139":3,"140":1,"143":4,"147":2}}],["orderedcollections",{"2":{"12":1}}],["ordinarydiffeqtsit5",{"2":{"12":1,"112":3}}],["ordinarydiffeqcore",{"2":{"12":1}}],["orcjit",{"2":{"11":1}}],["organization",{"2":{"112":1}}],["org",{"2":{"11":1,"147":1}}],["or",{"2":{"1":2,"5":1,"6":1,"7":1,"9":9,"20":1,"23":1,"26":1,"30":1,"43":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"72":1,"82":1,"86":1,"87":1,"94":2,"97":1,"98":1,"102":1,"109":1,"110":2,"115":1,"119":3,"137":1}}],["once",{"2":{"137":1}}],["onto",{"2":{"111":2,"124":1}}],["only",{"2":{"89":1,"90":1,"94":1,"97":1,"98":1,"99":2,"103":2,"105":1,"110":2,"123":1,"124":3,"137":1}}],["oneapi",{"2":{"89":1}}],["onetbb",{"2":{"12":1}}],["onelegmethod",{"2":{"8":1,"136":2}}],["one",{"0":{"136":1},"2":{"6":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"49":2,"51":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"94":1,"95":1,"102":1,"112":1,"115":2,"119":1,"120":1,"121":1,"124":1,"131":1,"134":3,"136":1,"137":4}}],["on",{"2":{"0":2,"5":2,"6":1,"7":1,"11":1,"13":1,"14":1,"19":2,"22":2,"25":2,"43":5,"49":1,"52":1,"55":2,"57":1,"58":5,"59":3,"66":1,"72":1,"83":1,"86":1,"87":1,"89":1,"90":4,"94":1,"97":3,"98":2,"99":1,"102":4,"109":2,"112":2,"115":3,"120":1,"122":1,"126":1,"130":1,"131":3,"133":1,"135":2,"147":1}}],["offenhäuser",{"2":{"147":1}}],["offstep",{"2":{"136":1}}],["offset",{"2":{"109":3,"115":2,"133":1}}],["offsetarrays",{"2":{"12":1}}],["off",{"2":{"87":2}}],["official",{"2":{"11":1}}],["of",{"0":{"93":1,"95":1,"104":1,"120":1,"145":1},"1":{"105":1,"106":1,"107":1,"108":1},"2":{"0":1,"6":1,"9":8,"15":1,"18":1,"19":1,"21":1,"22":2,"24":1,"25":2,"27":1,"31":1,"36":1,"42":1,"43":3,"45":1,"46":2,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"59":1,"61":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"76":1,"77":2,"83":1,"85":1,"86":2,"87":4,"90":4,"92":3,"93":3,"94":3,"95":10,"96":2,"97":3,"98":1,"99":2,"100":4,"101":1,"102":3,"103":2,"105":1,"107":1,"109":10,"111":1,"112":6,"113":3,"115":8,"116":17,"117":1,"118":1,"119":7,"120":2,"123":2,"124":11,"130":1,"131":7,"132":1,"133":3,"134":6,"135":4,"136":1,"137":8,"139":2,"147":22}}],["t−1",{"2":{"135":2}}],["t−1=t0−δt",{"2":{"135":1,"136":1}}],["t−δt",{"2":{"124":1}}],["tn=t",{"2":{"134":1}}],["tn+1",{"2":{"134":1}}],["tn",{"2":{"134":4,"137":1}}],["t=t0+δt",{"2":{"135":1,"137":1}}],["t=2",{"2":{"131":2}}],["t=0",{"2":{"131":1}}],["t=$",{"2":{"131":1}}],["ts=t",{"2":{"137":1}}],["tspan",{"2":{"112":2}}],["tsit5",{"2":{"112":2}}],["tsim",{"2":{"88":1}}],["t0−δt",{"2":{"135":1}}],["t0=0",{"2":{"134":1}}],["t0",{"2":{"109":1,"135":12,"136":1,"137":5}}],["tv",{"2":{"99":8}}],["t3fv",{"2":{"95":1}}],["tburn",{"2":{"88":1}}],["ty0",{"2":{"58":2,"59":2}}],["ty",{"2":{"58":6,"59":6}}],["typically",{"2":{"115":1,"119":1}}],["typing",{"2":{"6":1}}],["types",{"2":{"43":1,"89":1,"131":2}}],["type",{"2":{"19":1,"22":1,"25":1,"43":2,"46":1,"55":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"82":2,"85":1,"110":1,"115":2,"117":3,"132":3,"134":2,"137":3}}],["typeof",{"2":{"15":1,"22":1,"24":1,"58":3,"69":1,"70":1}}],["typos",{"2":{"1":1}}],["twice",{"2":{"43":1}}],["two",{"2":{"15":1,"22":1,"43":2,"49":1,"52":1,"55":1,"62":1,"64":1,"66":1,"91":1,"92":1,"97":2,"120":1,"147":2}}],["turnover",{"2":{"109":1}}],["turbulent",{"2":{"28":1,"32":1,"90":1,"136":1,"147":4}}],["turbulence",{"0":{"28":1,"32":1},"1":{"29":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":1},"2":{"28":1,"32":1,"55":1,"147":5}}],["turbine",{"2":{"13":1,"19":1,"49":1}}],["tuple",{"2":{"44":1,"58":104,"86":2,"87":5,"95":2,"98":1,"109":3,"111":1,"116":3,"117":2,"130":1,"131":2,"132":1,"133":4}}],["tutorial",{"0":{"43":1},"1":{"44":1,"45":1}}],["tlims",{"2":{"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":7,"70":7,"74":1,"76":1,"130":1}}],["t",{"2":{"15":3,"16":10,"18":3,"19":14,"21":15,"22":9,"24":10,"25":11,"27":12,"29":8,"33":4,"34":2,"36":6,"39":1,"42":1,"43":12,"45":10,"46":14,"48":15,"49":23,"51":24,"52":2,"54":2,"55":51,"56":2,"57":54,"58":26,"59":25,"60":26,"61":27,"62":22,"63":13,"64":21,"65":22,"66":13,"68":14,"69":6,"70":4,"72":1,"73":3,"74":3,"76":7,"87":2,"89":1,"93":1,"95":2,"100":1,"109":4,"111":3,"112":6,"113":3,"115":8,"118":5,"120":2,"124":1,"130":5,"131":2,"134":7,"135":9,"136":5,"137":10}}],["treatment",{"2":{"147":1}}],["treated",{"2":{"87":1}}],["trias",{"2":{"116":1,"147":2}}],["trivial",{"2":{"66":1}}],["triplotbase",{"2":{"12":1}}],["try",{"2":{"58":1}}],["trajectory",{"2":{"86":1}}],["trajectories",{"2":{"86":1}}],["trainepoch",{"2":{"86":1}}],["trained",{"2":{"83":1,"86":1}}],["trainstate",{"2":{"86":2}}],["train",{"2":{"86":1}}],["training",{"0":{"86":1},"2":{"88":1,"147":1}}],["track",{"2":{"58":2}}],["translation",{"2":{"102":1}}],["translations",{"2":{"87":1}}],["transpose",{"2":{"99":1}}],["transfer",{"2":{"90":2}}],["transforms",{"2":{"87":1,"89":1}}],["transducers",{"2":{"12":1}}],["transcodingstreams",{"2":{"12":1}}],["truncation",{"2":{"143":1}}],["truncatedstacktraces",{"2":{"12":1}}],["true",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"58":12,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"86":1,"109":2}}],["ti",{"2":{"137":5}}],["ti−1",{"2":{"137":2}}],["ti=t0+δti",{"2":{"137":1}}],["title",{"2":{"55":2,"57":2,"58":2,"59":2,"69":1,"70":1}}],["tiffimages",{"2":{"12":1}}],["times",{"2":{"87":1,"116":2,"119":1,"122":2}}],["timestepping",{"2":{"131":1}}],["timestep",{"2":{"8":1,"93":1,"130":2,"134":4}}],["time",{"0":{"134":1},"1":{"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"14":1,"19":2,"22":2,"25":2,"43":5,"44":1,"46":1,"52":1,"55":2,"60":1,"61":1,"64":1,"65":1,"66":1,"69":1,"70":1,"93":1,"100":1,"103":2,"109":1,"111":1,"112":1,"113":1,"118":2,"120":1,"124":2,"130":4,"131":24,"134":14,"135":9,"136":3,"137":8,"147":1}}],["timeroutputs",{"2":{"12":1}}],["timelogger",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"131":1}}],["taking",{"2":{"103":1}}],["takes",{"2":{"99":1,"112":1}}],["take",{"2":{"86":1}}],["taylorgreenvortex2d",{"2":{"69":2,"70":1}}],["taylor",{"0":{"62":1,"64":1,"69":1,"71":1},"1":{"63":1,"65":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"69":2,"71":1,"109":2}}],["tar",{"2":{"12":1}}],["tableau",{"2":{"137":1}}],["tables",{"2":{"12":1}}],["tabletraits",{"2":{"12":1}}],["tanh",{"2":{"8":1,"52":2,"54":2,"55":14,"57":14,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"66":4,"68":4,"116":2}}],["tentative",{"2":{"135":2,"136":1,"137":1}}],["tensors",{"2":{"109":2}}],["tensor",{"2":{"109":6}}],["tensorcore",{"2":{"12":1}}],["tensorbasis",{"2":{"8":1,"109":2}}],["terms",{"2":{"109":1,"119":1,"130":1,"135":3}}],["term",{"2":{"109":12,"120":3,"123":2,"124":2,"132":1,"134":2}}],["tested",{"2":{"89":2}}],["test",{"2":{"12":1,"55":1,"69":1}}],["testitems",{"2":{"12":1}}],["tempfunc",{"2":{"118":2}}],["tempstart",{"2":{"58":2,"59":2,"60":3,"61":3,"62":2,"63":2,"64":3,"65":3,"130":1}}],["temperatures",{"2":{"62":1,"64":1}}],["temperaturefield",{"2":{"8":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"118":2}}],["temperature",{"0":{"80":1,"132":1},"2":{"8":1,"58":15,"59":6,"60":8,"61":8,"62":4,"63":5,"64":9,"65":8,"95":1,"97":1,"98":1,"99":1,"109":4,"115":2,"117":4,"118":1,"132":9}}],["temp",{"2":{"8":3,"58":7,"59":7,"60":1,"61":1,"64":1,"65":1,"93":1,"99":2,"109":10,"111":2,"115":6,"130":2,"134":2}}],["thuerey",{"2":{"147":1}}],["thus",{"2":{"93":1,"97":1,"120":1,"121":1,"124":1,"137":1}}],["though",{"2":{"137":1}}],["those",{"2":{"12":2,"115":2}}],["th",{"2":{"119":1}}],["than",{"2":{"72":1,"87":1,"112":1}}],["that",{"2":{"5":2,"55":1,"82":1,"83":1,"84":1,"86":1,"90":1,"91":1,"93":1,"94":3,"95":3,"97":1,"98":2,"99":1,"100":1,"103":1,"107":1,"108":2,"109":1,"112":2,"113":2,"116":3,"120":3,"124":1,"130":2,"131":3,"133":1,"134":3,"135":2,"136":1,"137":3}}],["through",{"0":{"91":1},"1":{"92":1,"93":1,"94":1,"95":1},"2":{"86":1,"91":1,"127":1,"132":1}}],["three",{"2":{"19":1,"25":1,"46":1,"87":1,"117":1,"122":2,"132":1,"147":1}}],["thread",{"2":{"117":1}}],["threaded",{"2":{"117":1}}],["threadingutilities",{"2":{"12":1}}],["threads",{"2":{"11":1,"72":1,"89":1}}],["thrust",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1}}],["third",{"2":{"143":1}}],["thickness",{"2":{"15":1,"18":1,"19":1,"21":1}}],["things",{"2":{"94":1}}],["thin",{"2":{"13":1,"15":1,"49":2}}],["this",{"2":{"0":1,"3":1,"5":3,"6":1,"9":2,"13":1,"14":1,"18":2,"19":2,"21":2,"22":2,"24":2,"25":2,"27":2,"28":1,"31":2,"32":1,"36":2,"42":2,"43":3,"44":1,"45":2,"46":1,"48":2,"49":1,"51":2,"52":1,"54":2,"55":1,"57":2,"59":2,"60":1,"61":2,"63":2,"64":1,"65":2,"66":1,"68":2,"69":1,"70":2,"71":1,"72":1,"76":2,"89":2,"90":3,"92":2,"94":1,"95":3,"98":1,"99":3,"103":2,"109":2,"111":2,"112":2,"117":1,"119":1,"120":1,"124":2,"131":2,"133":1,"134":4,"135":3,"137":2,"141":1,"142":1}}],["them",{"2":{"130":1}}],["themselves",{"2":{"90":1}}],["these",{"2":{"83":1,"90":3,"109":1,"120":1}}],["their",{"2":{"43":1,"83":1,"97":1,"120":3,"123":1,"136":1}}],["they",{"2":{"5":1,"89":2,"90":1,"131":1,"134":1}}],["then",{"2":{"4":1,"6":1,"7":1,"43":1,"85":1,"87":1,"89":1,"95":2,"115":3,"116":1,"124":1,"131":1,"135":2,"136":1,"137":1}}],["therefore",{"2":{"96":1,"126":1}}],["there",{"2":{"4":1,"5":1,"90":1,"103":1,"111":1}}],["the",{"0":{"91":1,"95":1,"120":1},"1":{"92":1,"93":1,"94":1,"95":1},"2":{"0":6,"1":1,"3":2,"4":3,"5":8,"6":5,"7":1,"8":2,"9":14,"11":2,"12":2,"13":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":8,"23":1,"24":1,"25":6,"26":1,"27":1,"28":3,"30":1,"31":1,"32":3,"36":1,"37":3,"38":1,"40":1,"42":1,"43":21,"44":5,"45":1,"46":6,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":2,"70":1,"71":1,"72":1,"76":1,"77":4,"82":2,"83":8,"84":1,"85":4,"86":20,"87":14,"89":4,"90":25,"91":6,"92":7,"93":5,"94":8,"95":23,"96":2,"97":15,"98":8,"99":6,"100":9,"101":4,"102":4,"103":9,"105":5,"106":1,"107":4,"108":2,"109":28,"110":2,"111":10,"112":19,"113":15,"115":21,"116":12,"117":5,"118":2,"119":13,"120":35,"121":5,"122":7,"123":24,"124":30,"126":7,"127":3,"128":11,"130":10,"131":50,"132":8,"133":1,"134":26,"135":25,"136":8,"137":21,"143":4,"147":6}}],["toolkit",{"2":{"147":1}}],["toolchains",{"2":{"112":1}}],["tools",{"2":{"84":1,"94":1,"112":2}}],["too",{"2":{"90":2}}],["top",{"2":{"22":2,"25":3,"27":1,"43":1,"45":1,"46":2,"48":1,"58":1,"115":1}}],["tort",{"2":{"9":1}}],["total",{"2":{"8":1,"106":1,"109":2}}],["toml`",{"2":{"12":1}}],["toml",{"2":{"5":2,"7":1,"12":1}}],["to",{"2":{"0":2,"1":2,"4":3,"5":8,"9":8,"12":1,"17":1,"20":1,"23":1,"26":1,"28":3,"32":3,"43":4,"44":1,"47":1,"50":1,"53":1,"55":1,"56":1,"58":2,"66":2,"67":1,"69":1,"72":1,"82":3,"83":1,"84":2,"86":8,"87":3,"89":4,"90":9,"92":3,"93":3,"94":6,"95":8,"96":2,"97":2,"98":3,"99":6,"101":1,"103":2,"107":1,"109":17,"110":3,"111":1,"112":10,"113":3,"115":3,"116":7,"117":1,"119":3,"123":4,"124":6,"126":1,"130":3,"131":16,"132":3,"133":1,"134":10,"135":5,"137":4,"147":2}}],["fg",{"2":{"109":1}}],["fd",{"2":{"100":1}}],["fdea26ae",{"2":{"12":1}}],["f=",{"2":{"100":1}}],["fno",{"2":{"87":3}}],["flu",{"2":{"147":2}}],["fluid",{"2":{"90":1,"147":6}}],["fluids",{"2":{"62":1,"64":1,"147":3}}],["flattened",{"2":{"97":1}}],["flows",{"0":{"78":1,"79":1},"2":{"147":3}}],["flow",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"37":1,"55":1,"57":1,"90":3,"105":1,"134":1,"136":1,"147":4}}],["floats",{"2":{"110":1}}],["float16",{"2":{"43":2,"45":1,"110":1}}],["float32",{"2":{"25":1,"27":1,"33":1,"36":1,"43":2,"45":1,"58":171,"59":1,"60":1,"61":1,"110":1}}],["floating",{"0":{"110":1},"2":{"19":1,"22":1,"25":1,"43":3,"46":1,"49":1,"55":1,"58":1,"66":1,"71":1,"110":1}}],["float64",{"2":{"15":1,"19":1,"21":1,"22":1,"24":1,"43":2,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"62":2,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"71":1,"76":1,"95":4,"97":4,"98":3,"110":2,"112":2,"138":18,"139":8,"140":6,"141":22,"142":8,"143":20,"144":6,"145":8}}],["floopsbase",{"2":{"12":1}}],["floops",{"2":{"12":1}}],["f",{"2":{"37":1,"49":2,"51":2,"83":1,"86":5,"87":1,"88":1,"94":2,"95":3,"109":11,"111":5,"112":4,"120":1,"123":1,"124":3,"135":2,"147":5}}],["f489334b",{"2":{"12":1}}],["f43a241f",{"2":{"12":1}}],["f27f6e37",{"2":{"12":1}}],["f638f0a6",{"2":{"12":1}}],["f6369f11",{"2":{"12":1}}],["f8c6e375",{"2":{"12":1}}],["f50d1b31",{"2":{"12":1}}],["f5851436",{"2":{"12":1}}],["f517fe37",{"2":{"12":1}}],["f57f5aa1",{"2":{"12":1}}],["f09324ee",{"2":{"12":1}}],["f7f18e0c",{"2":{"12":1}}],["f70d9fcc",{"2":{"12":1}}],["fully",{"2":{"90":1,"94":1}}],["full",{"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"96":1,"137":2}}],["future",{"2":{"12":1,"134":1}}],["functions",{"2":{"43":1,"87":1,"94":2,"100":1,"133":1}}],["function",{"0":{"108":1,"128":1},"2":{"15":1,"43":1,"49":1,"51":1,"57":1,"58":4,"59":2,"69":2,"70":1,"86":3,"89":1,"93":2,"94":4,"95":4,"97":1,"108":2,"111":1,"113":2,"118":2,"128":3,"130":1,"131":4,"134":1}}],["functionwrapperswrappers",{"2":{"12":1}}],["functionwrappers",{"2":{"12":1}}],["functors",{"2":{"12":1}}],["furnished",{"2":{"9":1}}],["families",{"2":{"137":1}}],["far",{"2":{"131":1}}],["factor",{"2":{"116":1}}],["factorization",{"2":{"135":1}}],["factorizations",{"2":{"96":1,"110":1}}],["factorize",{"2":{"60":1,"64":1}}],["faceaverage",{"2":{"85":2}}],["faces",{"2":{"84":1,"119":1}}],["face",{"2":{"83":1,"85":1,"116":1,"119":1,"120":3}}],["facing",{"0":{"22":1,"25":1},"1":{"23":1,"24":1,"26":1,"27":1}}],["false",{"2":{"22":1,"24":1,"29":2,"31":2,"41":2,"42":2,"52":1,"54":1,"58":11,"62":1,"69":1,"70":1,"74":1,"76":1,"95":3,"97":3,"98":2,"117":1}}],["fa267f1f",{"2":{"12":1}}],["faster",{"2":{"112":1}}],["fast",{"2":{"89":1,"92":1}}],["fastpower",{"2":{"12":1}}],["fastclosures",{"2":{"12":1}}],["fastbroadcast",{"2":{"12":1}}],["fa961155",{"2":{"12":1}}],["fft",{"2":{"55":2,"57":2}}],["fftw",{"2":{"12":2,"55":1,"57":1,"95":2}}],["ffd25f8a",{"2":{"12":1}}],["ffmpeg",{"2":{"12":1}}],["ffbed154",{"2":{"12":1}}],["f1",{"2":{"100":1}}],["f1d291b0",{"2":{"12":1}}],["f1662d9f",{"2":{"12":1}}],["f151be2c",{"2":{"12":1}}],["f1be7e48",{"2":{"12":1}}],["fb6a15b2",{"2":{"12":1}}],["first",{"2":{"109":2,"116":1,"135":3,"137":1}}],["finite",{"0":{"120":1},"2":{"116":1,"119":1,"120":1,"128":1}}],["fine",{"2":{"85":2}}],["finally",{"2":{"95":1,"136":1,"137":1}}],["finalize",{"2":{"58":4,"131":7}}],["final",{"2":{"56":1,"69":1,"70":1,"93":4,"131":3,"137":1}}],["findmin",{"2":{"55":2,"57":2}}],["find",{"2":{"55":2,"57":2,"112":1}}],["finds",{"2":{"22":1,"25":1}}],["figfile",{"2":{"86":1}}],["fig",{"2":{"17":3,"18":6,"50":3,"51":6,"55":4,"57":4,"58":6,"59":6,"69":3,"70":4}}],["figure",{"2":{"15":1,"18":1,"22":1,"24":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"62":1,"63":1,"69":2,"70":1,"131":2}}],["fixedpointnumbers",{"2":{"12":1}}],["fill",{"2":{"87":1}}],["fillarrays",{"2":{"12":1}}],["filtersaver",{"2":{"88":1}}],["filters",{"0":{"85":1},"2":{"83":1,"85":2,"88":2}}],["filter",{"2":{"83":1,"85":1}}],["filtered",{"2":{"83":1,"86":1,"88":2}}],["filenames",{"2":{"88":2}}],["filename",{"2":{"19":1,"20":1,"21":2,"22":1,"23":1,"24":2,"25":1,"26":1,"27":2,"34":1,"36":1,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"66":1,"67":1,"68":2,"74":1,"76":1,"131":2}}],["filewatching",{"2":{"12":1}}],["filepathsbase",{"2":{"12":1}}],["filepaths",{"2":{"12":1}}],["fileio",{"2":{"12":1}}],["files",{"2":{"5":2,"9":1}}],["file",{"2":{"0":1,"4":2,"6":1,"44":1,"131":3}}],["fitness",{"2":{"9":1}}],["fields",{"2":{"20":1,"23":1,"26":1,"30":1,"44":2,"47":1,"50":1,"53":1,"56":1,"67":1,"85":3,"87":4,"92":1,"97":3,"99":3,"109":2,"115":5,"116":3,"117":1,"120":1,"131":1,"134":1,"135":1,"136":1,"137":5}}],["fieldsaver",{"2":{"8":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"131":1}}],["fieldnames",{"2":{"60":2,"61":2,"64":1,"65":1,"131":2}}],["fieldname",{"2":{"17":3,"18":3,"23":3,"24":3,"26":3,"27":3,"44":3,"45":3,"49":2,"50":3,"51":5,"56":4,"57":4,"58":4,"59":1,"60":4,"61":4,"62":1,"63":1,"64":5,"65":5,"67":3,"68":3,"131":2}}],["field",{"0":{"118":1},"2":{"8":1,"19":1,"20":1,"21":1,"22":1,"24":1,"25":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"35":1,"36":1,"37":1,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":2,"61":2,"64":2,"65":2,"66":1,"68":1,"85":5,"87":3,"90":2,"93":1,"95":2,"97":2,"98":1,"99":3,"100":1,"103":1,"107":2,"108":2,"109":16,"111":5,"112":1,"113":1,"117":1,"118":8,"119":1,"123":1,"124":3,"127":1,"130":1,"131":3,"132":1,"133":2,"134":3,"135":2,"136":2,"137":2}}],["fieldplot",{"2":{"8":1,"17":3,"18":3,"19":1,"21":1,"22":1,"24":4,"25":1,"27":4,"31":1,"34":1,"35":1,"36":2,"43":1,"45":4,"46":1,"48":1,"49":1,"50":3,"51":4,"52":1,"54":1,"55":1,"57":5,"58":2,"60":1,"61":1,"64":1,"65":2,"66":1,"68":4,"74":1,"76":1,"131":1}}],["freund",{"2":{"147":1}}],["freeness",{"2":{"111":1,"124":2,"137":1}}],["freedom",{"2":{"99":2,"120":1}}],["freetype2",{"2":{"12":1}}],["freetypeabstraction",{"2":{"12":1}}],["freetype",{"2":{"12":1}}],["free",{"2":{"1":1,"9":1,"96":1,"100":1,"102":1,"103":1,"111":2,"112":1,"118":1,"120":1,"124":1,"134":2,"135":2,"136":1,"137":1,"147":1}}],["front",{"2":{"19":2,"21":2,"22":1,"24":1,"25":1,"27":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1}}],["from",{"2":{"5":2,"6":1,"8":1,"9":1,"12":1,"44":2,"83":1,"84":2,"85":1,"86":1,"90":4,"95":1,"109":6,"111":5,"112":2,"116":5,"118":1,"130":1,"131":2,"133":1,"134":2,"135":1}}],["fribidi",{"2":{"12":1}}],["footprint",{"2":{"116":2}}],["fourierlayer",{"2":{"87":2}}],["fourier",{"2":{"87":2,"89":1}}],["fourth",{"0":{"122":1},"2":{"43":1,"122":2,"123":1,"143":1,"147":1}}],["found",{"2":{"77":1,"108":2}}],["fontconfig",{"2":{"12":1}}],["follows",{"2":{"132":1,"136":1,"137":1}}],["following",{"2":{"8":1,"9":1,"11":1,"12":1,"43":1,"85":1,"90":1,"98":1,"102":1,"109":1,"112":1,"116":1,"120":1,"131":2,"134":1,"136":1,"137":1}}],["folder",{"2":{"4":1,"77":1}}],["forward",{"2":{"138":1}}],["forwarddiff",{"2":{"12":1}}],["fortran",{"2":{"121":1}}],["formed",{"2":{"134":1}}],["formulation",{"2":{"55":1,"112":2,"124":1}}],["form",{"0":{"101":1},"2":{"28":1,"32":1,"43":1,"101":2,"123":1,"134":1}}],["format",{"2":{"0":1,"12":1}}],["forces",{"2":{"49":3,"51":3,"123":1}}],["force",{"0":{"40":1},"2":{"13":1,"15":1,"19":2,"37":1,"39":1,"40":1,"49":2,"84":1,"95":1,"100":2,"109":2,"135":1}}],["for",{"2":{"0":1,"3":1,"4":1,"5":2,"8":1,"9":2,"14":2,"18":1,"19":2,"21":1,"22":2,"24":1,"25":2,"27":1,"31":1,"36":1,"42":1,"43":7,"44":3,"45":1,"46":1,"48":1,"49":2,"51":3,"52":2,"54":1,"55":2,"57":1,"58":1,"59":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":1,"69":4,"70":3,"76":1,"82":1,"83":2,"86":5,"88":1,"89":1,"90":1,"92":3,"93":1,"94":1,"95":1,"96":1,"97":5,"98":1,"99":8,"102":2,"103":1,"109":9,"110":3,"111":4,"112":3,"113":1,"115":3,"116":2,"117":2,"119":2,"120":5,"121":1,"122":2,"123":3,"124":4,"128":1,"130":1,"131":4,"132":1,"133":1,"134":7,"135":7,"136":2,"137":5,"143":5,"147":6}}],["fe11",{"2":{"137":1,"138":2}}],["feature",{"2":{"90":1}}],["features",{"2":{"1":1,"28":1,"32":1,"83":1,"90":3,"112":1}}],["feel",{"2":{"1":1}}],["rssps3",{"2":{"137":1,"138":2}}],["rssps2",{"2":{"137":1,"138":2}}],["riia3",{"2":{"137":1,"141":2}}],["riia2",{"2":{"137":1,"141":2}}],["riia1",{"2":{"137":1,"141":2}}],["ria3",{"2":{"137":1,"141":2}}],["ria2",{"2":{"137":1,"141":2}}],["ria1",{"2":{"137":1,"141":1}}],["rights",{"2":{"9":1}}],["right",{"0":{"95":1},"2":{"0":1,"8":2,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"90":1,"95":9,"109":2,"111":1,"112":3,"113":10,"115":1,"135":1}}],["rule",{"2":{"120":2,"128":1}}],["runner",{"2":{"58":1,"62":1,"69":1}}],["running",{"2":{"3":1,"43":1,"72":2}}],["runge",{"0":{"137":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"43":1,"134":3,"137":4,"147":2}}],["runtimegeneratedfunctions",{"2":{"12":1}}],["run",{"2":{"5":2,"6":1}}],["r2cfii",{"2":{"95":1}}],["r2cf",{"2":{"95":1}}],["r2hc01",{"2":{"95":1}}],["r2hc",{"2":{"95":1}}],["rdft2",{"2":{"95":7}}],["rfftwplan",{"2":{"95":1}}],["rng",{"2":{"84":1,"87":3,"88":1,"118":1}}],["r",{"2":{"73":4,"76":4,"87":4,"134":2,"137":4,"147":5}}],["rt3d",{"2":{"64":1,"65":1}}],["rtp",{"2":{"16":1,"18":1,"19":1,"20":1,"21":2,"22":1,"24":1,"25":1,"27":1,"29":1,"31":1,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"58":2,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":2,"74":1,"76":1}}],["rb3d",{"2":{"60":2,"61":2}}],["rk4",{"2":{"143":3}}],["rk44c23",{"2":{"137":1,"143":1}}],["rk44c2",{"2":{"137":1,"143":1}}],["rk44",{"2":{"137":1,"143":1}}],["rk44p2",{"2":{"16":1,"18":1,"19":1,"21":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"93":1,"137":1,"143":1}}],["rk3",{"2":{"138":1,"143":2}}],["rk33p2",{"2":{"137":1,"143":1}}],["rk33c2",{"2":{"60":1,"61":1,"137":1,"143":1}}],["rk56",{"2":{"137":1,"138":2}}],["rk",{"2":{"134":1,"137":3}}],["rkmethods",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"93":1,"137":1,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["rounded",{"2":{"130":1}}],["roundingemulator",{"2":{"12":1}}],["row",{"2":{"121":1}}],["rotate",{"2":{"87":4}}],["rotation",{"2":{"87":4}}],["rotations",{"2":{"87":1}}],["rot2stag",{"2":{"87":1}}],["rot2",{"2":{"87":3}}],["root",{"2":{"0":1,"5":1}}],["rmath",{"2":{"12":2}}],["ratio",{"2":{"147":1}}],["rational",{"2":{"138":2}}],["ratios",{"2":{"12":1}}],["rate",{"2":{"109":3}}],["radii",{"2":{"87":2}}],["raw",{"2":{"77":1}}],["ra",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["rayleightaylor3d",{"2":{"64":1,"65":1}}],["rayleightaylor2d",{"2":{"62":2,"63":1}}],["rayleighbenard3d",{"2":{"60":1,"61":1}}],["rayleighbenard2d",{"2":{"58":2,"59":1}}],["rayleigh",{"0":{"58":1,"60":1,"62":1,"64":1},"1":{"59":1,"61":1,"63":1,"65":1},"2":{"117":1,"132":1}}],["rank>=2",{"2":{"95":1}}],["rangle",{"2":{"55":1,"57":1}}],["range",{"2":{"33":1,"36":1,"39":1,"42":1,"73":1,"76":1,"93":1,"95":1,"97":1,"112":1,"116":2,"133":1}}],["rangearrays",{"2":{"12":1}}],["rand",{"2":{"55":1,"57":1}}],["randn",{"2":{"22":1,"24":1,"97":1,"98":1}}],["randomly",{"2":{"28":1,"32":1}}],["random",{"2":{"8":1,"12":1,"29":1,"31":1,"33":1,"36":1,"39":1,"42":1,"49":1,"51":1,"55":1,"86":1,"93":1,"95":1,"97":1,"98":1,"112":1,"118":3,"133":1}}],["reinforcement",{"2":{"147":1}}],["reused",{"2":{"135":1}}],["reu2",{"2":{"69":1}}],["remmerswaal",{"2":{"147":1}}],["remaining",{"2":{"120":1}}],["remember",{"2":{"95":1}}],["reλ=λuavg3ν",{"2":{"109":1}}],["reλ",{"2":{"109":1}}],["re=1ν",{"2":{"105":1}}],["refers",{"2":{"123":1}}],["references",{"0":{"146":1}}],["reference",{"2":{"113":1,"123":1}}],["refvalue",{"2":{"95":1}}],["ref",{"2":{"95":3,"112":1,"113":3}}],["refining",{"2":{"90":1}}],["refined",{"2":{"90":1}}],["refinement",{"2":{"43":1}}],["refine",{"2":{"22":1,"46":1}}],["reverse",{"2":{"91":1,"95":1}}],["revise",{"0":{"4":1},"2":{"4":3,"5":1}}],["retcode",{"2":{"112":1}}],["rethis",{"2":{"69":1}}],["returning",{"2":{"131":1,"137":1}}],["return",{"2":{"86":3,"87":3,"116":3,"130":1,"137":1}}],["returns",{"2":{"44":1,"94":2,"109":1,"113":2,"116":1}}],["returned",{"2":{"43":1}}],["resembling",{"2":{"120":1}}],["resolved",{"2":{"90":3}}],["resolve",{"2":{"90":1}}],["resolution",{"2":{"90":1}}],["resolutions",{"2":{"69":1}}],["respected",{"2":{"134":1}}],["respect",{"2":{"87":1,"93":2,"95":1}}],["respective",{"2":{"43":1}}],["resulting",{"2":{"111":1,"116":1,"122":1,"131":1,"135":1}}],["result",{"2":{"85":1,"94":1,"109":7,"113":1,"123":1}}],["results",{"2":{"43":2,"44":1,"46":1,"58":1,"62":1,"97":1,"98":1,"120":2,"131":1}}],["reshape",{"2":{"55":1,"57":1,"97":1,"98":1}}],["rest",{"2":{"43":1,"46":1}}],["restricts",{"2":{"94":1}}],["restricted",{"2":{"12":1,"99":1}}],["restriction",{"2":{"9":1}}],["reason",{"2":{"92":1}}],["reach",{"2":{"43":1,"46":1}}],["rear",{"2":{"19":2,"21":2,"22":1,"24":1,"25":1,"27":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"115":1}}],["really",{"2":{"43":1}}],["real",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":2,"66":1,"95":1,"130":1,"131":1}}],["realdot",{"2":{"12":1}}],["realtimeplotter",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"29":3,"31":3,"34":3,"36":3,"41":3,"42":3,"43":3,"45":3,"46":3,"48":3,"49":3,"51":3,"52":1,"54":1,"55":1,"57":1,"58":3,"59":3,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":3,"76":3,"131":1}}],["reynolds",{"0":{"105":1},"2":{"19":1,"22":1,"25":1,"43":1,"46":1,"55":1,"66":1,"105":1,"109":1}}],["rededuce",{"2":{"124":1}}],["redundant",{"2":{"116":1}}],["red",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4}}],["re",{"2":{"15":1,"18":1,"19":1,"21":2,"22":1,"24":2,"25":1,"27":2,"29":1,"31":1,"33":1,"36":1,"39":1,"42":1,"43":1,"45":2,"46":1,"48":2,"49":1,"51":1,"52":1,"54":2,"55":2,"57":3,"58":7,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":2,"69":6,"70":7,"73":1,"76":1,"88":1,"93":1,"95":2,"97":2,"98":1,"109":1,"112":1,"117":1}}],["registryinstances",{"2":{"12":1}}],["reexport",{"2":{"12":1}}],["rectangular",{"2":{"100":1,"119":1}}],["rectangle",{"2":{"13":1,"15":1,"49":2}}],["reconstruct",{"2":{"85":5}}],["recommended",{"2":{"4":1}}],["recursivearraytools",{"2":{"12":1}}],["recipesbase",{"2":{"12":1}}],["reltol",{"2":{"111":1,"112":1,"134":1,"137":1}}],["relied",{"2":{"109":1}}],["relerr",{"2":{"86":8}}],["release",{"2":{"11":1}}],["relative",{"2":{"69":1,"70":1,"86":2}}],["relocatablefolders",{"2":{"12":1}}],["reloaded",{"2":{"4":1}}],["repeating",{"2":{"119":1}}],["representation",{"0":{"123":1}}],["represent",{"2":{"98":1,"116":1}}],["replace",{"2":{"137":1}}],["replacement",{"2":{"137":1}}],["replacing",{"2":{"83":1,"120":1,"128":1}}],["repl",{"2":{"5":1,"12":1,"82":1}}],["repository",{"2":{"0":2,"1":1,"5":2}}],["requiring",{"2":{"120":1}}],["require",{"2":{"83":1,"94":1,"99":1,"124":1,"133":1,"135":1,"136":1}}],["requires",{"2":{"12":1,"19":1,"82":1,"95":1,"117":1,"132":1}}],["required",{"2":{"5":1,"83":1,"95":1,"120":3,"133":1}}],["request",{"2":{"1":1}}],["cbm",{"2":{"144":2}}],["c2=c3",{"2":{"143":1}}],["cn22",{"2":{"137":1,"143":1}}],["cn",{"2":{"135":1}}],["cnn",{"2":{"87":5}}],["ct",{"2":{"95":3}}],["ctrl",{"2":{"6":1}}],["ci=∑j=1iaij",{"2":{"137":1}}],["cin",{"2":{"87":3}}],["cite",{"2":{"0":1}}],["citation",{"2":{"0":3}}],["citing",{"0":{"0":1}}],["c=f",{"2":{"83":1}}],["cd",{"2":{"83":1}}],["cx",{"2":{"19":1,"21":2}}],["cz",{"2":{"19":2,"21":2}}],["cycle",{"2":{"121":1}}],["cyclically",{"2":{"87":1}}],["cy",{"2":{"19":2,"21":2}}],["cylinder",{"2":{"19":2}}],["cu",{"2":{"110":1}}],["cusparse",{"2":{"109":1}}],["cut",{"2":{"87":2}}],["cudss",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"89":2}}],["cudabackend",{"2":{"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"33":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"72":1,"76":1,"89":1}}],["cuda",{"2":{"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"33":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"72":1,"76":1,"89":5,"109":1,"110":1}}],["currently",{"2":{"91":2,"115":1,"134":1}}],["current",{"2":{"6":2,"49":1,"51":1,"86":1,"113":2,"124":1,"136":1}}],["cₜ",{"2":{"15":1,"19":5,"21":4,"49":1}}],["c5f90fcd",{"2":{"12":1}}],["c5fb5394",{"2":{"12":1}}],["cc61e674",{"2":{"12":1}}],["cc61a311",{"2":{"12":1}}],["c7cfdc94",{"2":{"12":1}}],["c7aee132",{"2":{"12":1}}],["c1c5ebd0",{"2":{"12":1}}],["c1ae055f",{"2":{"12":1}}],["crank",{"0":{"135":1},"2":{"134":1,"135":3,"143":1}}],["crc32c",{"2":{"12":1}}],["crlibm",{"2":{"12":1}}],["created",{"2":{"28":1,"32":1,"43":1}}],["creates",{"2":{"14":1,"19":1,"22":1,"25":1,"43":1,"52":1,"55":1,"66":1,"113":1}}],["create",{"2":{"4":1,"8":2,"17":1,"43":1,"49":5,"51":6,"84":2,"86":18,"87":3,"88":5,"90":1,"93":1,"95":1,"98":1,"99":3,"109":1,"111":2,"112":1,"113":2,"116":4,"117":2,"118":5,"131":5,"132":1,"134":2}}],["cells",{"2":{"122":1}}],["cell",{"2":{"58":1,"60":1}}],["certain",{"2":{"43":1,"46":1,"133":1,"137":1}}],["central",{"2":{"128":1}}],["centers",{"2":{"84":2,"109":1,"116":1,"119":1}}],["center",{"2":{"15":1,"18":1,"19":1,"21":1,"119":2}}],["cenum",{"2":{"12":1}}],["ce78b400",{"2":{"12":1}}],["c0aeaf25",{"2":{"12":1}}],["c8ffd9c3",{"2":{"12":1}}],["c84ed2f1",{"2":{"12":1}}],["c8e1da08",{"2":{"12":1}}],["c817782e",{"2":{"12":1}}],["cfl",{"2":{"130":5}}],["cf7118a7",{"2":{"12":1}}],["cf35fbd7",{"2":{"12":1}}],["cff",{"2":{"0":1}}],["c3611d14",{"2":{"12":1}}],["c",{"2":{"9":1,"15":4,"18":4,"49":3,"51":3,"55":3,"57":2,"83":1,"86":1,"87":2,"88":1,"109":4,"111":2,"121":1,"123":1,"134":1,"137":3,"142":1,"143":3,"147":1}}],["classical",{"0":{"141":1},"2":{"143":1}}],["claim",{"2":{"9":1}}],["clockwise",{"2":{"87":1}}],["clone",{"2":{"83":1}}],["cloning",{"2":{"83":1}}],["closeall",{"2":{"59":1,"131":1}}],["closeopenintervals",{"2":{"12":1}}],["closure",{"0":{"81":1,"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"8":1,"58":6,"83":3,"84":6,"86":2,"87":9,"90":1,"95":1,"97":1,"98":1,"109":4,"117":1}}],["cl",{"2":{"55":1,"57":1}}],["clicking",{"2":{"6":1}}],["click",{"2":{"0":1}}],["cg",{"2":{"8":2,"110":1,"111":5}}],["coherent",{"2":{"112":1}}],["coordinate",{"2":{"100":1}}],["coordinates",{"2":{"43":1,"116":3,"119":2}}],["coverage",{"2":{"91":1}}],["corners",{"2":{"119":1,"128":1}}],["corresponding",{"2":{"135":1,"137":1}}],["corresponds",{"2":{"109":1,"116":1}}],["correction",{"2":{"136":1}}],["correct",{"2":{"94":1}}],["correctly",{"2":{"90":1}}],["cores",{"2":{"11":1}}],["core",{"2":{"11":1,"95":1,"147":1}}],["coupled",{"2":{"132":1}}],["could",{"2":{"89":1}}],["counterparts",{"2":{"123":1}}],["counter",{"2":{"87":1}}],["cout",{"2":{"87":3}}],["coarser",{"2":{"122":1}}],["coarse",{"2":{"85":2,"122":1}}],["column",{"2":{"121":1}}],["collocate",{"2":{"84":1}}],["collections",{"2":{"112":1}}],["collection",{"2":{"94":1,"112":2,"131":1,"134":1}}],["collect",{"2":{"69":1,"70":1}}],["cold",{"2":{"58":1,"60":1}}],["colormap",{"2":{"58":4,"59":1}}],["colorrange",{"2":{"58":4,"59":1}}],["color",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4}}],["colors",{"2":{"12":1}}],["colorschemes",{"2":{"12":1}}],["colorvectorspace",{"2":{"12":1}}],["colortypes",{"2":{"12":1}}],["colorbrewer",{"2":{"12":1}}],["costs",{"2":{"147":1}}],["cost",{"2":{"92":1}}],["costly",{"2":{"90":1,"124":1}}],["cospi",{"2":{"73":2,"76":2}}],["cos⁡",{"2":{"69":1}}],["cos",{"2":{"19":1,"21":1,"52":1,"54":1,"69":2,"70":2}}],["cosine",{"2":{"8":1,"22":1,"24":1,"43":2,"45":2,"46":2,"48":2,"116":3}}],["code",{"0":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"91":1},"1":{"92":1,"93":1,"94":1,"95":1},"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"43":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"77":1,"91":1,"92":2,"94":2,"109":1,"110":2,"116":1,"117":1,"134":1}}],["codeczlib",{"2":{"12":1}}],["coefficients",{"2":{"135":1,"137":1}}],["coefficient",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1,"137":1}}],["combining",{"2":{"122":1}}],["come",{"2":{"92":1}}],["comes",{"2":{"92":1}}],["com",{"2":{"83":1}}],["complex",{"2":{"95":1}}],["complexf64",{"2":{"95":2}}],["comp",{"2":{"85":2}}],["compression",{"2":{"85":2,"88":1}}],["compared",{"2":{"116":1}}],["compare",{"2":{"69":1,"70":1,"95":1}}],["compatible",{"2":{"89":1,"92":1,"109":1,"111":1,"147":1}}],["compatibility",{"2":{"12":1}}],["compat",{"2":{"12":1}}],["comput",{"2":{"147":1}}],["computational",{"2":{"86":1,"147":4}}],["computations",{"2":{"43":2}}],["computers",{"2":{"147":1}}],["computes",{"2":{"113":3}}],["compute",{"2":{"69":4,"70":2,"90":1,"95":1,"109":37,"111":2,"133":1,"135":2}}],["computed",{"2":{"20":1,"23":1,"26":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"90":1,"113":1,"124":1,"135":1,"136":1,"137":1}}],["computing",{"2":{"44":1,"69":1,"70":1,"90":1,"135":1,"136":1}}],["compilersupportlibraries",{"2":{"12":1}}],["composed",{"2":{"93":1}}],["compositionsbase",{"2":{"12":1}}],["components",{"2":{"83":1,"84":1,"109":2,"115":3,"120":1,"126":1}}],["component",{"2":{"43":1,"107":1,"120":2,"121":1,"131":1}}],["componentarrays",{"2":{"12":1}}],["commute",{"2":{"83":1}}],["commutator",{"2":{"83":1,"86":1,"87":3}}],["commented",{"2":{"77":1,"82":1}}],["comments",{"2":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["common",{"2":{"119":1}}],["commonworldinvalidations",{"2":{"12":1}}],["commonsubexpressions",{"2":{"12":1}}],["commonsolve",{"2":{"12":1}}],["commit",{"2":{"11":1}}],["copies",{"2":{"9":2}}],["copy",{"0":{"18":1,"21":1,"24":1,"27":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1},"2":{"9":2,"58":1,"59":1,"77":1}}],["copyright",{"2":{"9":3}}],["condition",{"2":{"115":2,"143":2}}],["conditionsboundary",{"2":{"116":1}}],["conditions",{"0":{"79":1,"98":1,"102":1,"115":1,"121":1},"2":{"9":1,"15":4,"18":2,"19":4,"21":2,"22":4,"24":2,"25":4,"27":2,"43":4,"44":1,"45":2,"46":4,"48":2,"49":4,"51":2,"52":4,"54":2,"55":3,"57":2,"58":16,"59":2,"60":3,"61":2,"62":3,"63":2,"64":3,"65":2,"66":1,"73":1,"93":2,"95":1,"97":2,"98":6,"99":5,"102":1,"103":1,"113":1,"115":15,"116":2,"117":3,"118":3,"123":1,"124":3,"132":2,"134":2,"137":1}}],["conjugate",{"2":{"111":2}}],["concatenation",{"2":{"97":3}}],["concretefilter",{"2":{"85":3}}],["concretestructs",{"2":{"12":1}}],["conv",{"2":{"87":2}}],["convolutional",{"2":{"87":3}}],["convention",{"2":{"121":3,"137":1}}],["convective",{"2":{"109":3,"120":2,"135":1}}],["convectiondiffusion",{"2":{"109":1}}],["convection",{"0":{"58":1,"60":1},"1":{"59":1,"61":1},"2":{"8":2,"58":1,"60":1,"109":6,"120":1,"123":1,"130":1,"135":1,"147":2}}],["conversions",{"2":{"110":1}}],["converted",{"2":{"110":1}}],["converts",{"2":{"97":1,"110":1}}],["convergence",{"0":{"69":1},"1":{"70":1},"2":{"69":7,"70":3,"86":2,"135":1}}],["consistency",{"2":{"147":1}}],["consistent",{"2":{"147":1}}],["considered",{"2":{"28":1,"32":1}}],["consider",{"2":{"22":1,"25":1,"28":1,"32":1,"43":1,"46":1,"69":1,"71":1,"72":1,"90":1,"97":1,"98":1,"110":1,"119":1,"134":1,"137":1}}],["consequently",{"2":{"93":1}}],["conserves",{"2":{"134":1}}],["conserved",{"2":{"120":1}}],["conservation",{"2":{"66":1,"100":2}}],["conserving",{"2":{"8":1,"147":1}}],["const",{"2":{"95":2}}],["constant",{"2":{"90":1,"99":1,"103":2,"109":2,"115":1,"120":1,"124":2,"133":1,"135":2,"136":1}}],["constraint",{"2":{"100":1,"120":2,"124":1,"134":1}}],["constraints",{"2":{"12":1}}],["constructionbase",{"2":{"12":1}}],["connection",{"2":{"9":1}}],["continuous",{"2":{"119":1,"120":1,"123":1,"124":2,"134":1}}],["contained",{"2":{"133":1}}],["contain",{"2":{"115":1}}],["containing",{"2":{"98":1,"113":2,"116":1,"123":2,"135":1}}],["contains",{"2":{"5":1,"44":1,"112":1,"123":2,"130":1}}],["contourf",{"2":{"131":1}}],["contour",{"2":{"12":1,"131":3,"133":1}}],["contextvariablesx",{"2":{"12":1}}],["contrast",{"2":{"135":1}}],["contracted",{"2":{"109":1}}],["contract",{"2":{"9":1}}],["control",{"2":{"101":2,"120":2,"122":1}}],["contributions",{"2":{"123":2}}],["contribution",{"2":{"90":1,"123":2}}],["contributing",{"0":{"1":1}}],["contributors",{"2":{"9":1}}],["configured",{"2":{"132":1}}],["config",{"2":{"4":1,"12":1}}],["cpuid",{"2":{"12":1}}],["cpusummary",{"2":{"12":1}}],["cpu",{"2":{"8":1,"11":1,"19":1,"21":1,"22":1,"24":1,"25":1,"27":1,"33":1,"36":1,"43":3,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":8,"59":1,"60":1,"61":1,"62":2,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"72":2,"76":1,"95":1,"97":1,"98":1,"117":4}}],["cmd",{"2":{"6":1}}],["cambridge",{"2":{"147":2}}],["carrica",{"2":{"147":1}}],["cartesianindices",{"2":{"58":18,"95":5,"97":3,"98":3,"115":1,"133":1}}],["cartesian",{"2":{"15":1,"19":1,"22":1,"25":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"109":7,"116":3,"119":4,"133":1}}],["cache",{"2":{"130":1,"134":4}}],["causes",{"2":{"110":1}}],["calculation",{"2":{"147":1}}],["calculated",{"2":{"137":1}}],["calibrated",{"2":{"90":1}}],["calling",{"2":{"109":1}}],["call",{"2":{"95":1}}],["calls",{"2":{"94":1}}],["callbackstate",{"2":{"86":5}}],["callback",{"2":{"86":5}}],["called",{"2":{"43":1,"95":1,"109":1,"116":1,"130":1,"131":2}}],["capt",{"2":{"90":1}}],["cavity",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1},"2":{"147":1}}],["ca575930",{"2":{"12":1}}],["cae243ae",{"2":{"12":1}}],["cairomakie",{"2":{"12":1,"14":2,"19":2,"22":2,"25":2,"29":1,"32":1,"38":1,"43":2,"46":1,"49":1,"52":2,"55":2,"58":1,"60":1,"62":1,"64":1,"66":2,"69":2,"71":1,"131":1}}],["cairo",{"2":{"12":2}}],["canonical",{"2":{"120":3}}],["can",{"2":{"5":1,"6":1,"7":1,"43":3,"77":1,"83":1,"84":1,"90":3,"91":1,"94":1,"95":2,"96":1,"97":1,"98":2,"99":1,"100":1,"108":2,"112":3,"117":1,"119":2,"122":1,"123":1,"124":2,"131":2,"132":1,"135":4,"137":1}}],["cases",{"2":{"28":1,"32":1,"55":1}}],["case",{"0":{"13":1,"19":1,"49":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"5":1,"43":1,"46":1,"83":1,"95":1,"131":1}}],["chen",{"2":{"147":1}}],["chebyshev",{"0":{"142":1},"2":{"142":2}}],["checks",{"2":{"134":1}}],["check",{"2":{"64":1,"82":1}}],["chdirk3",{"2":{"137":1,"142":1}}],["chcons3",{"2":{"137":1,"142":2}}],["chc5",{"2":{"137":1,"142":2}}],["chc3",{"2":{"137":1,"142":1}}],["cholesky",{"2":{"135":1}}],["chosen",{"2":{"130":1,"137":1}}],["choice",{"2":{"92":1}}],["choose",{"2":{"6":1,"43":2}}],["choosing",{"2":{"3":1,"64":1,"120":1}}],["chain",{"2":{"86":1}}],["chainrulescore",{"2":{"12":1}}],["chainrules",{"2":{"12":1}}],["channels",{"2":{"87":2,"109":1}}],["channel",{"2":{"22":1,"25":1,"87":1}}],["change",{"2":{"6":1,"134":1}}],["changes",{"2":{"4":1,"103":1,"135":1}}],["charge",{"2":{"9":1}}]],"serializationVersion":2}';export{e as default};
diff --git a/previews/PR126/assets/chunks/@localSearchIndexroot.BPOex-3s.js b/previews/PR126/assets/chunks/@localSearchIndexroot.BPOex-3s.js
deleted file mode 100644
index 2afa1ec7..00000000
--- a/previews/PR126/assets/chunks/@localSearchIndexroot.BPOex-3s.js
+++ /dev/null
@@ -1 +0,0 @@
-const e='{"documentCount":148,"nextId":148,"documentIds":{"0":"/IncompressibleNavierStokes.jl/previews/PR126/about/citing#citing","1":"/IncompressibleNavierStokes.jl/previews/PR126/about/contributing#contributing","2":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Local-development","3":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Use-Juliaup","4":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#revise","5":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#environments","6":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#vscode","7":"/IncompressibleNavierStokes.jl/previews/PR126/about/development#Environment-vs-package","8":"/IncompressibleNavierStokes.jl/previews/PR126/about/#About-IncompressibleNavierStokes.jl","9":"/IncompressibleNavierStokes.jl/previews/PR126/about/license#license","10":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Package-versions","11":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Julia-version","12":"/IncompressibleNavierStokes.jl/previews/PR126/about/versions#Package-versions-2","13":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Unsteady-actuator-case-2D","14":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#packages","15":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#setup","16":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Solve-unsteady-problem","17":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#post-process","18":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator2D#Copy-pasteable-code","19":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#Unsteady-actuator-case-3D","20":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#post-process","21":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Actuator3D#Copy-pasteable-code","22":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#Decaying-Homogeneous-Isotropic-Turbulence-2D","23":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#packages","24":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#post-process","25":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence2D#Copy-pasteable-code","26":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#Backward-Facing-Step-2D","27":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#post-process","28":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep2D#Copy-pasteable-code","29":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#Backward-Facing-Step-3D","30":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#post-process","31":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/BackwardFacingStep3D#Copy-pasteable-code","32":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Decaying-Homogeneous-Isotropic-Turbulence-3D","33":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Problem-setup","34":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Solve-problem","35":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#post-process","36":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/DecayingTurbulence3D#Copy-pasteable-code","37":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Kolmogorov-flow-(2D)","38":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#packages","39":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#setup","40":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Plot-body-force","41":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Solve-unsteady-problem","42":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/Kolmogorov2D#Copy-pasteable-code","43":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#Tutorial:-Lid-Driven-Cavity-2D","44":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#post-process","45":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity2D#Copy-pasteable-code","46":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#Lid-Driven-Cavity-3D","47":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#post-process","48":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/LidDrivenCavity3D#Copy-pasteable-code","49":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#Unsteady-actuator-case-2D","50":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#post-process","51":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/MultiActuator#Copy-pasteable-code","52":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#Planar-mixing-2D","53":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#post-process","54":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlanarMixing2D#Copy-pasteable-code","55":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#Plane-jets-2D","56":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#post-process","57":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/PlaneJets2D#Copy-pasteable-code","58":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard3D#Rayleigh-Bénard-convection-(3D)","59":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard3D#Copy-pasteable-code","60":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard2D#Rayleigh-Bénard-convection-(2D)","61":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighBenard2D#Copy-pasteable-code","62":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor2D#Rayleigh-Taylor-instability-in-2D","63":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor2D#Copy-pasteable-code","64":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor3D#Rayleigh-Taylor-instability-in-2D","65":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/RayleighTaylor3D#Copy-pasteable-code","66":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#Shear-layer-2D","67":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#post-process","68":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/ShearLayer2D#Copy-pasteable-code","69":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex2D#Convergence-study:-Taylor-Green-vortex-(2D)","70":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex2D#Copy-pasteable-code","71":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Taylor-Green-vortex-3D","72":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#backend","73":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#setup","74":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Solve-unsteady-problem","75":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#post-process","76":"/IncompressibleNavierStokes.jl/previews/PR126/examples/generated/TaylorGreenVortex3D#Copy-pasteable-code","77":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Examples-gallery","78":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Simple-flows","79":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Flows-with-mixed-boundary-conditions","80":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#With-a-temperature-equation","81":"/IncompressibleNavierStokes.jl/previews/PR126/examples/#Neural-network-closure-models","82":"/IncompressibleNavierStokes.jl/previews/PR126/getting_started#Getting-Started","83":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Neural-closure-models","84":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#NeuralClosure-module","85":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#filters","86":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#training","87":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Neural-architectures","88":"/IncompressibleNavierStokes.jl/previews/PR126/manual/closure#Data-generation","89":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Differentiating-through-the-code","90":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Automatic-differentiation-with-Zygote","91":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Example:-Gradient-of-kinetic-energy","92":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Automatic-differentiation-with-Enzyme","93":"/IncompressibleNavierStokes.jl/previews/PR126/manual/differentiability#Example:-Gradient-of-the-right-hand-side","94":"/IncompressibleNavierStokes.jl/previews/PR126/manual/gpu#GPU-Support","95":"/IncompressibleNavierStokes.jl/previews/PR126/manual/les#Large-eddy-simulation","96":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#Sparse-matrices","97":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#example","98":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#Boundary-conditions-and-matrices","99":"/IncompressibleNavierStokes.jl/previews/PR126/manual/matrices#api","100":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Incompressible-Navier-Stokes-equations","101":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Integral-form","102":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Boundary-conditions","103":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Pressure-equation","104":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Other-quantities-of-interest","105":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Reynolds-number","106":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Kinetic-energy","107":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#vorticity","108":"/IncompressibleNavierStokes.jl/previews/PR126/manual/ns#Stream-function","109":"/IncompressibleNavierStokes.jl/previews/PR126/manual/precision#Floating-point-precision","110":"/IncompressibleNavierStokes.jl/previews/PR126/manual/operators#operators","111":"/IncompressibleNavierStokes.jl/previews/PR126/manual/pressure#Pressure-solvers","112":"/IncompressibleNavierStokes.jl/previews/PR126/manual/sciml#Using-IncompressibleNavierStokes-in-SciML","113":"/IncompressibleNavierStokes.jl/previews/PR126/manual/sciml#api","114":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Problem-setup","115":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Boundary-conditions","116":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#grid","117":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#setup","118":"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#Field-initializers","119":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#solvers","120":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#Solvers-2","121":"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#processors","122":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Spatial-discretization","123":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Finite-volume-discretization-of-the-Navier-Stokes-equations","124":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Boundary-conditions","125":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Fourth-order-accurate-discretization","126":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Matrix-representation","127":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Discrete-pressure-Poisson-equation","128":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Discrete-output-quantities","129":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Kinetic-energy","130":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#vorticity","131":"/IncompressibleNavierStokes.jl/previews/PR126/manual/spatial#Stream-function","132":"/IncompressibleNavierStokes.jl/previews/PR126/manual/temperature#Temperature-equation","133":"/IncompressibleNavierStokes.jl/previews/PR126/manual/utils#utils","134":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Time-discretization","135":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Adams-Bashforth-Crank-Nicolson-method","136":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#One-leg-beta-method","137":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Runge-Kutta-methods","138":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Explicit-Methods","139":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Implicit-Methods","140":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Half-explicit-methods","141":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Classical-Methods","142":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Chebyshev-methods","143":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Miscellaneous-Methods","144":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#DSRK-Methods","145":"/IncompressibleNavierStokes.jl/previews/PR126/manual/time#Non-SSP-Methods-of-Wong-and-Spiteri","146":"/IncompressibleNavierStokes.jl/previews/PR126/references#references","147":"/IncompressibleNavierStokes.jl/previews/PR126/references#bibliography"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,28],"1":[1,1,22],"2":[2,1,1],"3":[2,2,21],"4":[1,2,45],"5":[1,2,85],"6":[1,3,46],"7":[3,3,31],"8":[3,1,112],"9":[1,1,126],"10":[2,1,1],"11":[2,2,63],"12":[2,2,934],"13":[4,1,29],"14":[1,4,37],"15":[1,4,95],"16":[3,4,50],"17":[2,4,39],"18":[3,4,109],"19":[4,1,211],"20":[2,4,27],"21":[3,4,129],"22":[5,1,43],"23":[1,5,76],"24":[2,5,20],"25":[3,5,62],"26":[4,1,199],"27":[2,4,31],"28":[3,4,126],"29":[4,1,192],"30":[2,4,28],"31":[3,4,120],"32":[5,1,47],"33":[2,5,29],"34":[2,5,41],"35":[2,5,19],"36":[3,5,82],"37":[4,1,29],"38":[1,4,14],"39":[1,4,42],"40":[3,4,16],"41":[3,4,35],"42":[3,4,78],"43":[5,1,295],"44":[2,5,74],"45":[3,5,106],"46":[4,1,161],"47":[2,4,25],"48":[3,4,108],"49":[4,1,199],"50":[2,4,39],"51":[3,4,153],"52":[3,1,176],"53":[2,3,26],"54":[3,3,122],"55":[3,1,259],"56":[2,3,39],"57":[3,3,194],"58":[5,1,150],"59":[3,5,134],"60":[5,1,464],"61":[3,5,166],"62":[5,1,138],"63":[3,5,101],"64":[5,1,150],"65":[3,5,127],"66":[3,1,165],"67":[2,3,30],"68":[3,3,105],"69":[7,1,192],"70":[3,7,137],"71":[4,1,20],"72":[1,4,40],"73":[1,4,42],"74":[3,4,47],"75":[2,4,7],"76":[3,4,100],"77":[2,1,38],"78":[2,2,1],"79":[5,2,1],"80":[4,2,1],"81":[4,2,1],"82":[2,1,41],"83":[3,1,106],"84":[2,3,53],"85":[1,3,61],"86":[1,3,169],"87":[2,3,184],"88":[2,3,48],"89":[4,1,47],"90":[4,4,73],"91":[5,8,84],"92":[4,4,101],"93":[7,8,335],"94":[2,1,92],"95":[3,1,120],"96":[2,1,37],"97":[1,2,268],"98":[4,2,169],"99":[1,2,102],"100":[4,1,69],"101":[2,4,46],"102":[2,4,44],"103":[2,4,53],"104":[4,4,1],"105":[2,8,19],"106":[2,8,14],"107":[1,8,28],"108":[2,8,26],"109":[3,1,70],"110":[1,1,338],"111":[2,1,123],"112":[4,1,504],"113":[1,4,62],"114":[2,1,1],"115":[2,2,139],"116":[1,2,177],"117":[1,2,85],"118":[2,2,59],"119":[1,1,1],"120":[1,1,110],"121":[1,1,275],"122":[2,1,165],"123":[8,2,158],"124":[2,2,46],"125":[4,2,70],"126":[2,2,99],"127":[4,2,148],"128":[3,2,1],"129":[2,5,32],"130":[1,5,29],"131":[2,2,47],"132":[2,1,74],"133":[1,1,93],"134":[2,1,215],"135":[5,2,194],"136":[4,2,105],"137":[3,2,289],"138":[2,5,51],"139":[2,5,34],"140":[3,5,23],"141":[2,5,36],"142":[2,5,34],"143":[2,5,58],"144":[2,5,21],"145":[9,5,18],"146":[1,1,1],"147":[1,1,264]},"averageFieldLength":[2.662162162162162,2.945945945945946,98.25675675675676],"storedFields":{"0":{"title":"Citing","titles":[]},"1":{"title":"Contributing","titles":[]},"2":{"title":"Local development","titles":[]},"3":{"title":"Use Juliaup","titles":["Local development"]},"4":{"title":"Revise","titles":["Local development"]},"5":{"title":"Environments","titles":["Local development"]},"6":{"title":"VSCode","titles":["Local development","Environments"]},"7":{"title":"Environment vs package","titles":["Local development","Environments"]},"8":{"title":"About IncompressibleNavierStokes.jl","titles":[]},"9":{"title":"License","titles":[]},"10":{"title":"Package versions","titles":[]},"11":{"title":"Julia version","titles":["Package versions"]},"12":{"title":"Package versions","titles":["Package versions"]},"13":{"title":"Unsteady actuator case - 2D","titles":[]},"14":{"title":"Packages","titles":["Unsteady actuator case - 2D"]},"15":{"title":"Setup","titles":["Unsteady actuator case - 2D"]},"16":{"title":"Solve unsteady problem","titles":["Unsteady actuator case - 2D"]},"17":{"title":"Post-process","titles":["Unsteady actuator case - 2D"]},"18":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 2D"]},"19":{"title":"Unsteady actuator case - 3D","titles":[]},"20":{"title":"Post-process","titles":["Unsteady actuator case - 3D"]},"21":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 3D"]},"22":{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","titles":[]},"23":{"title":"Packages","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"24":{"title":"Post-process","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"25":{"title":"Copy-pasteable code","titles":["Decaying Homogeneous Isotropic Turbulence - 2D"]},"26":{"title":"Backward Facing Step - 2D","titles":[]},"27":{"title":"Post-process","titles":["Backward Facing Step - 2D"]},"28":{"title":"Copy-pasteable code","titles":["Backward Facing Step - 2D"]},"29":{"title":"Backward Facing Step - 3D","titles":[]},"30":{"title":"Post-process","titles":["Backward Facing Step - 3D"]},"31":{"title":"Copy-pasteable code","titles":["Backward Facing Step - 3D"]},"32":{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","titles":[]},"33":{"title":"Problem setup","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"34":{"title":"Solve problem","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"35":{"title":"Post-process","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"36":{"title":"Copy-pasteable code","titles":["Decaying Homogeneous Isotropic Turbulence - 3D"]},"37":{"title":"Kolmogorov flow (2D)","titles":[]},"38":{"title":"Packages","titles":["Kolmogorov flow (2D)"]},"39":{"title":"Setup","titles":["Kolmogorov flow (2D)"]},"40":{"title":"Plot body force","titles":["Kolmogorov flow (2D)"]},"41":{"title":"Solve unsteady problem","titles":["Kolmogorov flow (2D)"]},"42":{"title":"Copy-pasteable code","titles":["Kolmogorov flow (2D)"]},"43":{"title":"Tutorial: Lid-Driven Cavity - 2D","titles":[]},"44":{"title":"Post-process","titles":["Tutorial: Lid-Driven Cavity - 2D"]},"45":{"title":"Copy-pasteable code","titles":["Tutorial: Lid-Driven Cavity - 2D"]},"46":{"title":"Lid-Driven Cavity - 3D","titles":[]},"47":{"title":"Post-process","titles":["Lid-Driven Cavity - 3D"]},"48":{"title":"Copy-pasteable code","titles":["Lid-Driven Cavity - 3D"]},"49":{"title":"Unsteady actuator case - 2D","titles":[]},"50":{"title":"Post-process","titles":["Unsteady actuator case - 2D"]},"51":{"title":"Copy-pasteable code","titles":["Unsteady actuator case - 2D"]},"52":{"title":"Planar mixing - 2D","titles":[]},"53":{"title":"Post-process","titles":["Planar mixing - 2D"]},"54":{"title":"Copy-pasteable code","titles":["Planar mixing - 2D"]},"55":{"title":"Plane jets - 2D","titles":[]},"56":{"title":"Post-process","titles":["Plane jets - 2D"]},"57":{"title":"Copy-pasteable code","titles":["Plane jets - 2D"]},"58":{"title":"Rayleigh-Bénard convection (3D)","titles":[]},"59":{"title":"Copy-pasteable code","titles":["Rayleigh-Bénard convection (3D)"]},"60":{"title":"Rayleigh-Bénard convection (2D)","titles":[]},"61":{"title":"Copy-pasteable code","titles":["Rayleigh-Bénard convection (2D)"]},"62":{"title":"Rayleigh-Taylor instability in 2D","titles":[]},"63":{"title":"Copy-pasteable code","titles":["Rayleigh-Taylor instability in 2D"]},"64":{"title":"Rayleigh-Taylor instability in 2D","titles":[]},"65":{"title":"Copy-pasteable code","titles":["Rayleigh-Taylor instability in 2D"]},"66":{"title":"Shear layer - 2D","titles":[]},"67":{"title":"Post-process","titles":["Shear layer - 2D"]},"68":{"title":"Copy-pasteable code","titles":["Shear layer - 2D"]},"69":{"title":"Convergence study: Taylor-Green vortex (2D)","titles":[]},"70":{"title":"Copy-pasteable code","titles":["Convergence study: Taylor-Green vortex (2D)"]},"71":{"title":"Taylor-Green vortex - 3D","titles":[]},"72":{"title":"Backend","titles":["Taylor-Green vortex - 3D"]},"73":{"title":"Setup","titles":["Taylor-Green vortex - 3D"]},"74":{"title":"Solve unsteady problem","titles":["Taylor-Green vortex - 3D"]},"75":{"title":"Post-process","titles":["Taylor-Green vortex - 3D"]},"76":{"title":"Copy-pasteable code","titles":["Taylor-Green vortex - 3D"]},"77":{"title":"Examples gallery","titles":[]},"78":{"title":"Simple flows","titles":["Examples gallery"]},"79":{"title":"Flows with mixed boundary conditions","titles":["Examples gallery"]},"80":{"title":"With a temperature equation","titles":["Examples gallery"]},"81":{"title":"Neural network closure models","titles":["Examples gallery"]},"82":{"title":"Getting Started","titles":[]},"83":{"title":"Neural closure models","titles":[]},"84":{"title":"NeuralClosure module","titles":["Neural closure models"]},"85":{"title":"Filters","titles":["Neural closure models"]},"86":{"title":"Training","titles":["Neural closure models"]},"87":{"title":"Neural architectures","titles":["Neural closure models"]},"88":{"title":"Data generation","titles":["Neural closure models"]},"89":{"title":"Differentiating through the code","titles":[]},"90":{"title":"Automatic differentiation with Zygote","titles":["Differentiating through the code"]},"91":{"title":"Example: Gradient of kinetic energy","titles":["Differentiating through the code","Automatic differentiation with Zygote"]},"92":{"title":"Automatic differentiation with Enzyme","titles":["Differentiating through the code"]},"93":{"title":"Example: Gradient of the right-hand side","titles":["Differentiating through the code","Automatic differentiation with Enzyme"]},"94":{"title":"GPU Support","titles":[]},"95":{"title":"Large eddy simulation","titles":[]},"96":{"title":"Sparse matrices","titles":[]},"97":{"title":"Example","titles":["Sparse matrices"]},"98":{"title":"Boundary conditions and matrices","titles":["Sparse matrices"]},"99":{"title":"API","titles":["Sparse matrices"]},"100":{"title":"Incompressible Navier-Stokes equations","titles":[]},"101":{"title":"Integral form","titles":["Incompressible Navier-Stokes equations"]},"102":{"title":"Boundary conditions","titles":["Incompressible Navier-Stokes equations"]},"103":{"title":"Pressure equation","titles":["Incompressible Navier-Stokes equations"]},"104":{"title":"Other quantities of interest","titles":["Incompressible Navier-Stokes equations"]},"105":{"title":"Reynolds number","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"106":{"title":"Kinetic energy","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"107":{"title":"Vorticity","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"108":{"title":"Stream function","titles":["Incompressible Navier-Stokes equations","Other quantities of interest"]},"109":{"title":"Floating point precision","titles":[]},"110":{"title":"Operators","titles":[]},"111":{"title":"Pressure solvers","titles":[]},"112":{"title":"Using IncompressibleNavierStokes in SciML","titles":[]},"113":{"title":"API","titles":["Using IncompressibleNavierStokes in SciML"]},"114":{"title":"Problem setup","titles":[]},"115":{"title":"Boundary conditions","titles":["Problem setup"]},"116":{"title":"Grid","titles":["Problem setup"]},"117":{"title":"Setup","titles":["Problem setup"]},"118":{"title":"Field initializers","titles":["Problem setup"]},"119":{"title":"Solvers","titles":[]},"120":{"title":"Solvers","titles":["Solvers"]},"121":{"title":"Processors","titles":["Solvers"]},"122":{"title":"Spatial discretization","titles":[]},"123":{"title":"Finite volume discretization of the Navier-Stokes equations","titles":["Spatial discretization"]},"124":{"title":"Boundary conditions","titles":["Spatial discretization"]},"125":{"title":"Fourth order accurate discretization","titles":["Spatial discretization"]},"126":{"title":"Matrix representation","titles":["Spatial discretization"]},"127":{"title":"Discrete pressure Poisson equation","titles":["Spatial discretization"]},"128":{"title":"Discrete output quantities","titles":["Spatial discretization"]},"129":{"title":"Kinetic energy","titles":["Spatial discretization","Discrete output quantities"]},"130":{"title":"Vorticity","titles":["Spatial discretization","Discrete output quantities"]},"131":{"title":"Stream function","titles":["Spatial discretization"]},"132":{"title":"Temperature equation","titles":[]},"133":{"title":"Utils","titles":[]},"134":{"title":"Time discretization","titles":[]},"135":{"title":"Adams-Bashforth Crank-Nicolson method","titles":["Time discretization"]},"136":{"title":"One-leg beta method","titles":["Time discretization"]},"137":{"title":"Runge-Kutta methods","titles":["Time discretization"]},"138":{"title":"Explicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"139":{"title":"Implicit Methods","titles":["Time discretization","Runge-Kutta methods"]},"140":{"title":"Half explicit methods","titles":["Time discretization","Runge-Kutta methods"]},"141":{"title":"Classical Methods","titles":["Time discretization","Runge-Kutta methods"]},"142":{"title":"Chebyshev methods","titles":["Time discretization","Runge-Kutta methods"]},"143":{"title":"Miscellaneous Methods","titles":["Time discretization","Runge-Kutta methods"]},"144":{"title":"DSRK Methods","titles":["Time discretization","Runge-Kutta methods"]},"145":{"title":""Non-SSP" Methods of Wong & Spiteri","titles":["Time discretization","Runge-Kutta methods"]},"146":{"title":"References","titles":[]},"147":{"title":"Bibliography","titles":[]}},"dirtCount":0,"index":[["μ±nσ",{"2":{"133":1}}],["∑α=1d",{"2":{"123":1,"125":1}}],["∫γiudγ≈|γi|ui",{"2":{"123":1}}],["∈nd",{"2":{"122":1}}],["∏",{"2":{"122":1}}],["κ+1|e^",{"2":{"121":1}}],["κ",{"2":{"121":1,"133":2}}],["κ∈n",{"2":{"121":1}}],["β−12",{"2":{"136":1}}],["β=12",{"2":{"136":1}}],["β=1d",{"2":{"122":1}}],["β",{"2":{"115":2,"116":6,"123":1,"136":2}}],["β∂uα∂xβ∂uβ∂xα",{"2":{"110":1}}],["η=",{"2":{"110":1}}],["η",{"2":{"110":1}}],["ϕ",{"2":{"110":2}}],["τ=luavg",{"2":{"110":1}}],["τ",{"2":{"102":1,"110":1}}],["∇2ψ=∇×ω",{"2":{"108":1}}],["∇2ψ=−ω",{"2":{"108":1}}],["∇⋅",{"2":{"103":1}}],["∇⋅u=0",{"2":{"100":1}}],["∇u⋅n=0",{"2":{"102":1}}],["⋅ndγ+1|o|∫ofdω",{"2":{"101":1}}],["ν3ϵ",{"2":{"110":1}}],["ν",{"2":{"100":1}}],["∂∂xα",{"2":{"122":1}}],["∂o",{"2":{"101":1}}],["∂u∂t+∇⋅",{"2":{"100":1}}],["∂y",{"2":{"97":1}}],["∂x",{"2":{"97":1}}],["∂",{"2":{"97":2}}],["⎢⠈⠻⢷⢗⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⣦⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠁⠱⢅⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⢤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠈⠻⣿⣿⢦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠈⠛⣟⣽⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠈⠓⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠓⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠙⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢽⣦⡀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣗⣄⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣵⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⡀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠻⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⢑⢔⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⢤⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⢑⢆⢀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⢵⢷⣦⡀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠕⢅⠄⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠳⣿⣿⣦⡀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣟⣽⣤⡀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⢟⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣤⣤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠓⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠛⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⢽⢦⡀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⢦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣕⣄⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠳⣄⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠀⠓⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎢⠀⠈⠹⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠻⣷⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎥",{"2":{"97":1}}],["⎡⣄⣤⣠⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⢄⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠻⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⢤⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎡⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣦⡂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠑⠀⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠋⠛⠙⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠑⠙⎦",{"2":{"97":1}}],["⎣⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠙⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠃⠑⠀⎦",{"2":{"97":1}}],["ψi+h1+3h2−ψi+h1+h2xi1+3",{"2":{"131":1}}],["ψi+3",{"2":{"131":1}}],["ψ",{"2":{"87":1,"108":1}}],["σ=",{"2":{"102":1}}],["σ⋅n=0",{"2":{"102":1}}],["σ",{"2":{"87":2,"110":4}}],["λ=",{"2":{"110":1}}],["λ",{"2":{"86":2,"110":2}}],["≈c",{"2":{"83":1}}],["θ=12",{"2":{"135":1}}],["θ∈",{"2":{"135":1}}],["θ",{"2":{"83":2,"86":12,"87":9,"110":5,"120":1,"134":2,"135":3}}],["−δt",{"2":{"136":1}}],["−12",{"2":{"135":1}}],["−∫ωi+h1+h2ωdω=∫ωi+h1+h2∇2ψdω=∫γi+e1+h21∂ψ∂x1dγ−∫γi+h21∂ψ∂x1dγ+∫γi+h1+e22∂ψ∂x2dγ−∫γi+h12∂ψ∂x2dγ",{"2":{"131":1}}],["−ym",{"2":{"127":1,"137":2}}],["−yg",{"2":{"112":1,"127":3,"135":2,"137":1}}],["−",{"2":{"123":1,"125":1,"126":1,"134":1,"135":2,"137":1}}],["−∂u2∂x3+∂u3∂x2−∂u3∂x1+∂u1∂x3−∂u1∂x2+∂u2∂x1",{"2":{"107":1}}],["−∑α=1d∂fα∂xα",{"2":{"103":1}}],["−∑α=1d∂2∂xα∂xαp=∑α=1d∑β=1d∂2∂xα∂xβ",{"2":{"103":1}}],["−∇⋅fin",{"2":{"103":1}}],["−∇2p=∇⋅",{"2":{"103":1}}],["−pi+2νs",{"2":{"102":1}}],["−uut−pi+ν∇u",{"2":{"101":1}}],["−c∥2",{"2":{"86":1}}],["−gl−1wdymdt",{"2":{"127":1}}],["−gl−1wdymdt=f",{"2":{"112":1}}],["−gq¯",{"2":{"83":1}}],["−gp",{"2":{"83":1}}],["−f",{"2":{"83":1}}],["φi",{"2":{"122":1}}],["φ=",{"2":{"122":1}}],["φ",{"2":{"83":2}}],["γiα",{"2":{"123":1}}],["γiα=ωi−hα∩ωi+hα=∏β≠αδiββ",{"2":{"122":1}}],["γ+τ⊂∂ω",{"2":{"102":1}}],["γ⊂∂ω",{"2":{"102":1}}],["γ",{"2":{"60":7,"102":3,"116":1}}],["α0",{"2":{"135":1}}],["α0c",{"2":{"135":2}}],["α₂",{"2":{"135":2}}],["α₁",{"2":{"135":2}}],["α−1",{"2":{"130":1,"135":1}}],["α−=mod3",{"2":{"130":1}}],["α+1",{"2":{"130":1}}],["α+=mod3",{"2":{"130":1}}],["α=β",{"2":{"122":1}}],["α∈",{"2":{"122":1}}],["α",{"2":{"69":1,"70":1,"110":4,"115":1,"116":22,"118":2,"122":1,"123":3,"124":1,"126":1}}],["α4",{"2":{"60":7}}],["α3",{"2":{"60":7}}],["α2",{"2":{"60":7}}],["α1",{"2":{"58":1,"59":1,"60":8,"61":1,"62":1,"63":1,"64":1,"65":1}}],["|γi+h1+h21|",{"2":{"131":1}}],["|ωi|",{"2":{"126":1}}],["|ωi|=|γiα||δiαα|",{"2":{"123":1}}],["|ωi+δ",{"2":{"126":1}}],["|dk",{"2":{"121":1}}],["|o|",{"2":{"101":1}}],["|>",{"2":{"60":3,"61":3}}],["||",{"2":{"60":2,"61":2,"69":1,"70":1}}],["$filename",{"2":{"121":1}}],["$dir",{"2":{"121":1}}],["$s",{"2":{"121":1}}],["$t",{"2":{"121":1}}],["$n",{"2":{"58":1,"59":1,"69":1,"70":1,"121":1}}],["$y₁",{"2":{"55":1,"57":1}}],["$y₀",{"2":{"55":1,"57":1}}],["$outdir",{"2":{"19":2,"21":2,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":2,"51":2,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1}}],["^",{"2":{"55":4,"57":4}}],["^2",{"2":{"19":4,"21":4,"52":1,"54":1}}],["÷",{"2":{"55":1,"57":1}}],["ϵ=2ν",{"2":{"110":1}}],["ϵ",{"2":{"52":2,"54":2,"110":3}}],["≥",{"2":{"26":1,"28":1,"29":1,"31":1,"87":1}}],["πin",{"2":{"116":1}}],["πky",{"2":{"37":1}}],["π",{"2":{"19":5,"21":5,"58":1,"59":1,"66":5,"68":5}}],["⋱",{"2":{"15":2,"93":2}}],["⋮",{"2":{"15":6,"93":8,"112":2}}],[">",{"2":{"15":1,"18":1,"19":2,"21":2,"26":1,"28":1,"29":1,"31":1,"39":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":3,"51":3,"52":1,"54":1,"55":3,"57":3,"58":2,"59":2,"60":4,"61":4,"62":3,"63":3,"64":3,"65":3,"66":1,"68":1,"69":5,"70":5,"84":3,"85":2,"86":4,"87":3,"88":1,"99":7,"110":51,"111":7,"113":1,"115":7,"116":6,"118":8,"120":2,"121":3,"133":7,"134":1,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["≤",{"2":{"15":2,"18":2,"19":2,"21":2,"49":2,"51":2,"66":2,"68":2}}],["δp",{"2":{"135":1,"136":1}}],["δβuα",{"2":{"123":2}}],["δβδβuα",{"2":{"123":2,"125":1}}],["δβ",{"2":{"123":1,"125":1}}],["δα3φ",{"2":{"125":1}}],["δα3uα",{"2":{"125":1}}],["δαp",{"2":{"123":1,"125":1}}],["δαuα",{"2":{"123":1,"125":1}}],["δαφ",{"2":{"122":1}}],["δα",{"2":{"122":1}}],["δiα=",{"2":{"122":1}}],["δy2",{"2":{"60":2,"61":2}}],["δy1",{"2":{"60":2,"61":2}}],["δu",{"2":{"52":1,"54":2,"60":9,"61":3,"93":1,"97":1,"98":1,"116":1}}],["δti",{"2":{"137":1}}],["δtinui=vi−δtigpi",{"2":{"137":1}}],["δtin=wmvi+ym",{"2":{"137":1}}],["δti=w",{"2":{"137":1}}],["δti=ciδt",{"2":{"137":1}}],["δts=δt",{"2":{"137":1}}],["δt−wm",{"2":{"135":1}}],["δtr+1",{"2":{"137":1}}],["δtr",{"2":{"134":1,"137":1}}],["δtn=tn+1−tn",{"2":{"134":1}}],["δt",{"2":{"16":1,"18":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":3,"70":3,"74":1,"76":1,"86":1,"88":1,"91":2,"120":8,"127":2,"134":2,"135":2,"136":1,"137":2}}],["δ",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"60":12,"61":6,"93":1,"97":1,"98":1,"110":1,"116":1}}],["x2",{"2":{"124":1}}],["x26",{"2":{"15":2,"18":2,"19":2,"21":2,"26":2,"28":2,"29":2,"31":2,"49":4,"51":4}}],["x265",{"2":{"12":1}}],["x264",{"2":{"12":1}}],["x0α",{"2":{"122":1}}],["xnαα",{"2":{"122":1}}],["xn−1",{"2":{"116":1}}],["xn=a+",{"2":{"116":1}}],["xn=a+∑i=1nsi−1h",{"2":{"116":1}}],["xn=b",{"2":{"116":1}}],["x∈rn+1",{"2":{"116":1}}],["x∈γ",{"2":{"102":1}}],["xi+hα",{"2":{"123":1}}],["xi+12α",{"2":{"122":1}}],["xiα=12",{"2":{"122":1}}],["xi−12α+xi+12α",{"2":{"122":1}}],["xi−12α",{"2":{"122":1}}],["xi=a+12",{"2":{"116":1}}],["xi±hβ",{"2":{"116":1}}],["xi",{"2":{"116":1,"123":2,"125":1}}],["x3",{"2":{"107":1,"124":1}}],["x3c",{"2":{"85":2,"87":2,"110":1,"115":4,"117":1,"120":1,"121":2,"133":2,"135":1,"136":1,"137":4}}],["x+τ",{"2":{"102":2}}],["xd",{"2":{"100":1}}],["x1",{"2":{"100":1,"124":1}}],["x10",{"2":{"93":2}}],["x100",{"2":{"93":1}}],["x=",{"2":{"100":1}}],["x51",{"2":{"93":1}}],["xticks",{"2":{"69":1,"70":1}}],["xtrans",{"2":{"12":1}}],["xu",{"2":{"60":6,"93":1,"97":1,"98":1,"116":1}}],["xlims",{"2":{"60":6,"93":1,"97":1,"98":1,"116":1}}],["xlabel",{"2":{"55":2,"57":2,"60":2,"61":2,"69":1,"70":1}}],["xscale",{"2":{"55":1,"57":1,"69":1,"70":1}}],["xslt",{"2":{"12":1}}],["xp",{"2":{"55":6,"57":6,"60":8,"61":2,"93":1,"97":1,"98":1,"116":1}}],["xc",{"2":{"15":1,"17":5,"18":7,"49":11,"51":11}}],["x",{"2":{"15":10,"18":10,"19":14,"21":15,"23":1,"25":1,"26":11,"28":12,"29":10,"31":11,"33":1,"36":1,"37":1,"39":2,"42":2,"43":7,"45":7,"46":6,"48":7,"49":16,"51":16,"52":8,"54":8,"55":9,"57":9,"58":11,"59":11,"60":13,"61":7,"62":8,"63":8,"64":6,"65":6,"66":5,"68":5,"69":13,"70":9,"73":3,"76":3,"86":2,"91":1,"93":2,"97":2,"98":2,"102":2,"112":1,"115":2,"116":3,"117":1,"118":1,"121":1,"133":7,"147":2}}],["xkbcommon",{"2":{"12":1}}],["xkbcomp",{"2":{"12":1}}],["xkeyboard",{"2":{"12":1}}],["xorg",{"2":{"12":16}}],["xz",{"2":{"12":1}}],["xml2",{"2":{"12":1}}],["x86",{"2":{"11":1}}],["zennaro",{"2":{"144":1}}],["zeros",{"2":{"69":1,"70":1,"110":1}}],["zero",{"2":{"19":3,"21":3,"26":2,"28":2,"29":2,"31":2,"43":2,"45":1,"46":1,"48":1,"49":3,"51":3,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"73":1,"76":1,"93":2,"98":2,"99":1,"111":1,"115":4,"121":1,"126":1,"127":3,"134":1}}],["zpull",{"2":{"93":2}}],["z",{"2":{"19":8,"21":8,"29":5,"31":5,"43":1,"46":3,"48":3,"58":2,"59":2,"64":3,"65":3,"73":1,"76":1,"121":1,"133":1}}],["zlib",{"2":{"12":1}}],["zstd",{"2":{"12":1}}],["zygoterules",{"2":{"12":1}}],["zygote",{"0":{"90":1},"1":{"91":1},"2":{"12":1,"89":1,"90":2,"91":2,"93":3}}],["znver3",{"2":{"11":1}}],["yet",{"2":{"135":1}}],["yg",{"2":{"126":1,"135":1}}],["yd",{"2":{"126":1,"135":1}}],["yields",{"2":{"103":1,"127":1,"131":2}}],["ym",{"2":{"98":3,"126":1,"127":1,"137":1}}],["yu",{"2":{"98":2}}],["yy",{"2":{"60":3,"61":3}}],["ylims",{"2":{"55":1,"57":1}}],["ylabel",{"2":{"55":2,"57":2,"60":2,"61":2}}],["yscale",{"2":{"55":1,"57":1,"69":1,"70":1}}],["y₁",{"2":{"55":1,"57":1}}],["y₀",{"2":{"55":1,"57":1}}],["yc",{"2":{"15":2,"17":5,"18":7,"49":11,"51":11}}],["y",{"2":{"15":7,"18":7,"19":8,"21":8,"26":7,"28":7,"29":7,"31":7,"37":1,"39":2,"42":2,"43":3,"45":3,"46":3,"48":3,"49":8,"51":8,"52":7,"54":7,"55":41,"57":41,"58":3,"59":3,"60":4,"61":4,"62":3,"63":3,"64":3,"65":3,"66":10,"68":10,"69":7,"70":3,"73":1,"76":1,"86":2,"133":2}}],["yaml",{"2":{"12":1}}],["your",{"2":{"4":1,"82":1,"90":1}}],["you",{"2":{"1":1,"6":1,"72":1,"89":1,"90":1,"112":1,"120":1,"132":1}}],["``x",{"2":{"116":1}}],["`status",{"2":{"12":1}}],["`",{"2":{"12":4,"116":1}}],["`~",{"2":{"12":1}}],["878241166841342",{"2":{"112":3}}],["877596861611518",{"2":{"112":3}}],["8745491457220105",{"2":{"112":3}}],["871926544771357",{"2":{"112":3}}],["8725732991803752",{"2":{"112":3}}],["872c559c",{"2":{"12":1}}],["875",{"2":{"97":4,"98":4}}],["859552971776503",{"2":{"93":1}}],["856f044c",{"2":{"12":1}}],["856f2bd8",{"2":{"12":1}}],["809654104932039",{"2":{"93":1}}],["80",{"2":{"64":1,"65":1}}],["88\\titertime",{"2":{"62":1}}],["88015f11",{"2":{"12":1}}],["8984930998969533",{"2":{"112":1}}],["89\\titertime",{"2":{"62":1}}],["89763e89",{"2":{"12":1}}],["8\\titertime",{"2":{"23":1}}],["8\\tδt",{"2":{"16":2,"62":1}}],["8e850ede",{"2":{"12":1}}],["8e850b90",{"2":{"12":1}}],["8389443123237112",{"2":{"112":3}}],["83775a58",{"2":{"12":1}}],["83423d85",{"2":{"12":1}}],["8dfed614",{"2":{"12":1}}],["8d63f2c5",{"2":{"12":1}}],["8f399da3",{"2":{"12":1}}],["8fc22ac5",{"2":{"12":1}}],["8ba89e20",{"2":{"12":1}}],["8bf52ea8",{"2":{"12":1}}],["8bb1440f",{"2":{"12":1}}],["8+2",{"2":{"12":1}}],["842170943040401e",{"2":{"98":1}}],["84375",{"2":{"97":4,"98":4}}],["84\\titertime",{"2":{"62":2}}],["84",{"2":{"12":1}}],["869807557370203",{"2":{"112":3}}],["868268679688738",{"2":{"112":3}}],["867381645601023",{"2":{"112":3}}],["867210580036855",{"2":{"112":3}}],["86780939456026",{"2":{"112":3}}],["8635507784356191",{"2":{"112":3}}],["860ef19b",{"2":{"12":1}}],["864edb3b",{"2":{"12":1}}],["8125",{"2":{"97":4,"98":4}}],["8162dcfd",{"2":{"12":1}}],["8197267c",{"2":{"12":1}}],["8cdb02fc",{"2":{"12":1}}],["82",{"2":{"12":1}}],["8290d209",{"2":{"12":1}}],["82ae8749",{"2":{"12":1}}],["82251201",{"2":{"12":1}}],["82899510",{"2":{"12":1}}],["82e4d734",{"2":{"12":1}}],["8",{"2":{"12":18,"16":1,"39":1,"42":1,"64":1,"65":1,"66":1,"68":1,"69":2,"70":1,"110":1,"112":2,"121":1,"132":1,"147":1}}],["⌃",{"2":{"12":4}}],["9118748988126503",{"2":{"112":1}}],["915",{"2":{"93":4}}],["91d4177d",{"2":{"12":1}}],["9\\tδt",{"2":{"62":1}}],["9380605402073995",{"2":{"112":3}}],["9336578801571804",{"2":{"112":3}}],["933f0",{"2":{"60":3}}],["9393543206945666",{"2":{"112":1}}],["9375",{"2":{"97":4,"98":4}}],["9371663222572626",{"2":{"93":1}}],["935",{"2":{"93":4}}],["935fb764",{"2":{"12":1}}],["93",{"2":{"93":4}}],["9525588810990575",{"2":{"112":3}}],["951965779045637",{"2":{"112":3}}],["9534433190187698",{"2":{"112":1}}],["955",{"2":{"93":4}}],["955742",{"2":{"60":6}}],["95",{"2":{"93":4}}],["959353",{"2":{"60":6}}],["9587832",{"2":{"60":6}}],["975",{"2":{"93":4}}],["975736",{"2":{"60":6}}],["97",{"2":{"93":4}}],["9793203",{"2":{"60":6}}],["974473",{"2":{"60":6}}],["9783547",{"2":{"60":6}}],["9730158",{"2":{"60":6}}],["97029555",{"2":{"60":6}}],["9769204",{"2":{"60":6}}],["9720256",{"2":{"60":6}}],["9718e550",{"2":{"12":1}}],["9600730631740435",{"2":{"112":3}}],["96875",{"2":{"97":4,"98":4}}],["965",{"2":{"93":4}}],["96",{"2":{"93":4}}],["9695302",{"2":{"60":6}}],["9645745014573777",{"2":{"93":1}}],["9644907",{"2":{"60":6}}],["96464634",{"2":{"60":6}}],["9677595077716898",{"2":{"112":1}}],["96747094",{"2":{"60":6}}],["9670348",{"2":{"60":6}}],["96171474",{"2":{"60":6}}],["9619466",{"2":{"60":6}}],["9e88b42a",{"2":{"12":1}}],["9fa8497b",{"2":{"12":1}}],["9822997420095799",{"2":{"112":1}}],["984229402628956",{"2":{"93":1}}],["9840734",{"2":{"60":6}}],["9851283805313755",{"2":{"112":3}}],["985",{"2":{"93":4}}],["98",{"2":{"93":4}}],["9887339",{"2":{"60":6}}],["98843646",{"2":{"60":6}}],["9834931",{"2":{"60":6}}],["9860128",{"2":{"60":6}}],["9864266",{"2":{"60":6}}],["9809733",{"2":{"60":6}}],["9817202",{"2":{"60":6}}],["981d1d27",{"2":{"12":1}}],["98b081ad",{"2":{"12":1}}],["904031237572206",{"2":{"112":3}}],["90625",{"2":{"97":4,"98":4}}],["9021130325903073",{"2":{"93":1}}],["90",{"2":{"87":1}}],["901732\\tδt",{"2":{"23":1}}],["90137ffa",{"2":{"12":1}}],["905a6f67",{"2":{"12":1}}],["90014a1f",{"2":{"12":1}}],["9970628244296934",{"2":{"112":1}}],["9977826",{"2":{"60":6}}],["9977603",{"2":{"60":6}}],["996053456856544",{"2":{"93":1}}],["9933032",{"2":{"60":6}}],["99319035",{"2":{"60":6}}],["9908601",{"2":{"60":6}}],["995",{"2":{"93":4}}],["9955206",{"2":{"60":6}}],["9955652",{"2":{"60":6}}],["995b91a9",{"2":{"12":1}}],["9910412",{"2":{"60":6}}],["99",{"2":{"58":1,"59":1,"60":3,"93":4}}],["992d4aef",{"2":{"12":1}}],["949178459716383",{"2":{"112":3}}],["946806979844537",{"2":{"112":3}}],["944913967346289",{"2":{"112":3}}],["944b1d66",{"2":{"12":1}}],["943558268755094",{"2":{"112":3}}],["943197746830108",{"2":{"112":3}}],["942792582381415",{"2":{"112":3}}],["942661142693805",{"2":{"112":3}}],["9473396554765e",{"2":{"93":1}}],["94738084741634e",{"2":{"93":1}}],["9473808474195e",{"2":{"93":3}}],["9473808472946e",{"2":{"93":1}}],["94738084734203e",{"2":{"93":1}}],["94738084786455e",{"2":{"93":3}}],["9473808475373e",{"2":{"93":1}}],["9472543692157e",{"2":{"93":1}}],["94",{"2":{"93":4,"147":1}}],["945",{"2":{"17":3,"93":4}}],["94ce4f54",{"2":{"12":1}}],["94e857df",{"2":{"12":1}}],["9c8b4983",{"2":{"12":1}}],["9254968389682297",{"2":{"112":1}}],["925",{"2":{"93":4}}],["92",{"2":{"93":4}}],["92933f4c",{"2":{"12":1}}],["929cbde3",{"2":{"12":1}}],["92d709cd",{"2":{"12":1}}],["927a84f5",{"2":{"12":1}}],["9b13fd28",{"2":{"12":1}}],["9a3f8284",{"2":{"12":1}}],["9a68df92",{"2":{"12":1}}],["9aa1b823",{"2":{"12":1}}],["9a962f9c",{"2":{"12":1}}],["9",{"2":{"12":14,"16":1,"29":1,"31":1,"82":1,"110":2,"121":1}}],["⌅",{"2":{"12":14}}],["3rd",{"2":{"137":1,"138":1}}],["3393682527712583",{"2":{"112":3}}],["33bec58e",{"2":{"12":1}}],["3\\tδt",{"2":{"62":1}}],["3\\titertime",{"2":{"23":1}}],["3π",{"2":{"52":1,"54":1,"66":2,"68":2}}],["32988571087525",{"2":{"112":4}}],["324×648",{"2":{"97":1}}],["324",{"2":{"93":3}}],["323",{"2":{"93":5}}],["32\\titertime",{"2":{"62":1}}],["32",{"2":{"43":1,"45":1,"52":2,"54":2,"69":1,"70":1,"73":1,"76":1,"135":1,"147":1}}],["3d",{"0":{"19":1,"29":1,"32":1,"46":1,"58":1,"71":1},"1":{"20":1,"21":1,"30":1,"31":1,"33":1,"34":1,"35":1,"36":1,"47":1,"48":1,"59":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"19":1,"29":1,"43":1,"44":1,"46":1,"55":1,"72":1,"107":2,"108":1,"110":1,"116":1,"121":3,"122":1,"124":1,"130":1}}],["3da002f7",{"2":{"12":1}}],["3063",{"2":{"147":1}}],["3041",{"2":{"147":1}}],["30267536983452664",{"2":{"112":1}}],["309023603907686",{"2":{"112":3}}],["309",{"2":{"93":3}}],["301",{"2":{"26":1,"28":1}}],["300",{"2":{"15":1,"16":1,"17":3,"18":5,"49":2,"50":3,"51":5,"60":1,"62":1,"63":1,"121":1}}],["30392449",{"2":{"12":1}}],["3f19e933",{"2":{"12":1}}],["3fa0cd96",{"2":{"12":1}}],["3739981547416027",{"2":{"112":3}}],["375",{"2":{"97":4,"98":4}}],["3752",{"2":{"60":3}}],["37e2e46d",{"2":{"12":1}}],["3783bdb8",{"2":{"12":1}}],["3+4",{"2":{"12":1}}],["3+0",{"2":{"12":4}}],["3+1",{"2":{"12":2}}],["3a884ed6",{"2":{"12":1}}],["3b182d85",{"2":{"12":1}}],["3bb67fe8",{"2":{"12":1}}],["3bd65402",{"2":{"12":1}}],["368",{"2":{"147":1}}],["3683366507304067",{"2":{"112":3}}],["36258175247807684",{"2":{"112":3}}],["36c8627f",{"2":{"12":1}}],["36",{"2":{"12":1}}],["3cdcf5f2",{"2":{"12":1}}],["343",{"2":{"113":1,"147":1}}],["34375",{"2":{"97":4,"98":4}}],["34814473328245776",{"2":{"112":3}}],["34427101031988805",{"2":{"112":3}}],["34474720155412086",{"2":{"112":4}}],["3424451007836423",{"2":{"112":3}}],["34228152248255667",{"2":{"112":3}}],["34188065544854157",{"2":{"112":3}}],["349375\\tδt",{"2":{"23":1}}],["34+0",{"2":{"12":1}}],["34",{"2":{"12":1}}],["34004b35",{"2":{"12":1}}],["34da2185",{"2":{"12":1}}],["38877926401317714",{"2":{"112":3}}],["38860275562819596",{"2":{"112":3}}],["3843075577328367",{"2":{"112":3}}],["3819660112501049",{"2":{"93":1}}],["38a345b3",{"2":{"12":1}}],["38",{"2":{"12":1}}],["38540f10",{"2":{"12":1}}],["3125",{"2":{"97":4,"98":4}}],["3113441489959696",{"2":{"93":1}}],["3113441489959698",{"2":{"93":2}}],["311",{"2":{"93":3}}],["310im",{"2":{"93":14}}],["310",{"2":{"93":11}}],["315",{"2":{"93":1}}],["316",{"2":{"93":1}}],["3161d3a3",{"2":{"12":1}}],["31",{"2":{"12":3,"19":1,"21":1}}],["318dbb63",{"2":{"12":1}}],["31c24e10",{"2":{"12":1}}],["3539882338969757",{"2":{"112":3}}],["3514934686109557",{"2":{"112":1}}],["351286920025e",{"2":{"93":1}}],["3564156774579681",{"2":{"112":4}}],["35661453",{"2":{"12":1}}],["350",{"2":{"60":2,"61":1}}],["3587e190",{"2":{"12":1}}],["35d6a980",{"2":{"12":1}}],["35492f91",{"2":{"12":1}}],["3",{"2":{"12":63,"15":1,"16":1,"19":1,"21":1,"26":1,"28":1,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"52":1,"55":4,"57":4,"58":2,"59":2,"62":1,"63":1,"64":1,"65":1,"74":1,"76":1,"87":1,"93":10,"97":1,"100":1,"110":1,"112":1,"116":3,"121":2,"124":2,"137":1,"139":2,"142":1}}],["391620717845853",{"2":{"112":3}}],["39899399061633306",{"2":{"112":3}}],["3955a311",{"2":{"12":1}}],["39de3d68",{"2":{"12":1}}],["39",{"2":{"12":2,"43":1,"92":2,"97":1,"137":1,"138":1,"144":3}}],["742755945895593",{"2":{"112":3}}],["7450953976257477",{"2":{"112":3}}],["7469106126508502",{"2":{"112":3}}],["748153123634293",{"2":{"112":3}}],["748175\\tδt",{"2":{"23":1}}],["7487841124129428",{"2":{"112":3}}],["75",{"2":{"97":4,"98":4}}],["752613360087727",{"2":{"93":1}}],["75\\titertime",{"2":{"62":1}}],["76",{"2":{"93":1}}],["76f85450",{"2":{"12":1}}],["7\\tδt",{"2":{"62":1}}],["7\\titertime",{"2":{"23":1}}],["718560585210772",{"2":{"112":3}}],["71875",{"2":{"97":4,"98":4}}],["716916280449167",{"2":{"112":3}}],["716365792589818",{"2":{"112":3}}],["7158292479648685",{"2":{"112":3}}],["715349687682886",{"2":{"112":3}}],["715518625925486",{"2":{"112":3}}],["717907919358522",{"2":{"112":3}}],["71",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["71a1bf82",{"2":{"12":1}}],["7b1f6079",{"2":{"12":1}}],["7+2",{"2":{"12":1}}],["7+0",{"2":{"12":1}}],["7add5ba3",{"2":{"12":1}}],["7a1cc6ca",{"2":{"12":1}}],["7cc45869",{"2":{"12":1}}],["700de1a5",{"2":{"12":1}}],["7034ab61",{"2":{"12":1}}],["78125",{"2":{"97":4,"98":4}}],["781469643852857e",{"2":{"93":1}}],["781d530d",{"2":{"12":1}}],["788239291745271e",{"2":{"93":1}}],["78\\titertime",{"2":{"62":2}}],["78b55507",{"2":{"12":1}}],["7869d1d1",{"2":{"12":1}}],["7324466138864494",{"2":{"112":3}}],["733181704205474",{"2":{"112":3}}],["7367353970175616",{"2":{"112":3}}],["7399486131942257",{"2":{"112":3}}],["7396157784188764",{"2":{"112":3}}],["73",{"2":{"12":1}}],["731e570b",{"2":{"12":1}}],["731186ca",{"2":{"12":1}}],["73760f76",{"2":{"12":1}}],["7e76a0d4",{"2":{"12":1}}],["7e49a35a",{"2":{"12":1}}],["7e8f7934",{"2":{"12":1}}],["7902139129867269",{"2":{"112":3}}],["79098fc4",{"2":{"12":1}}],["79e6a3ab",{"2":{"12":1}}],["7746bdde",{"2":{"12":1}}],["7792a7ef",{"2":{"12":1}}],["77ba4419",{"2":{"12":1}}],["77dc65aa",{"2":{"12":1}}],["7763",{"2":{"11":1}}],["7d188eb4",{"2":{"12":1}}],["7da242da",{"2":{"12":1}}],["7d9f7c33",{"2":{"12":1}}],["721181922711051",{"2":{"112":3}}],["720705249283326",{"2":{"112":3}}],["7289528594833986",{"2":{"112":3}}],["7269a6da",{"2":{"12":1}}],["72",{"2":{"12":1}}],["7",{"2":{"12":19,"16":1,"26":1,"28":1,"29":1,"31":1,"49":1,"51":1,"60":18,"69":2,"110":1,"112":27}}],["5742163600010184",{"2":{"112":1}}],["57950836847274",{"2":{"112":1}}],["5708280441413918",{"2":{"112":3}}],["5785967602636484",{"2":{"112":3}}],["5789e2e9",{"2":{"12":1}}],["5810578454401288",{"2":{"112":3}}],["5816373449202014",{"2":{"112":3}}],["5843144049204488",{"2":{"112":3}}],["5847511350956696",{"2":{"112":3}}],["5882286005654174",{"2":{"112":3}}],["588327603138371",{"2":{"112":1}}],["5894024122775645",{"2":{"112":3}}],["5896185921818861",{"2":{"112":3}}],["5836664262450098",{"2":{"112":1}}],["586",{"2":{"147":1}}],["5865234384949342",{"2":{"112":3}}],["5862214072663858",{"2":{"112":1}}],["5869175083011309",{"2":{"112":3}}],["5876158502792285",{"2":{"112":3}}],["5879577687647815",{"2":{"112":1}}],["5872394002098646",{"2":{"112":4}}],["5νϵ",{"2":{"110":1}}],["5262751744748195",{"2":{"112":3}}],["52",{"2":{"86":1}}],["52e1d378",{"2":{"12":1}}],["5\\tδt",{"2":{"62":1}}],["5\\titertime",{"2":{"23":1}}],["5591546395991858",{"2":{"112":1}}],["559328eb",{"2":{"12":1}}],["5549806081559608",{"2":{"112":3}}],["558999023490557",{"2":{"112":3}}],["55",{"2":{"86":1,"147":1}}],["5570665390686788e",{"2":{"69":1}}],["55\\titertime",{"2":{"60":1}}],["5154881691893956",{"2":{"112":3}}],["51",{"2":{"26":1,"28":1,"86":1}}],["510215fc",{"2":{"12":1}}],["5n",{"2":{"15":1,"18":1,"49":1,"51":1,"55":1,"57":1}}],["5917236853921971",{"2":{"112":3}}],["5924486575208425",{"2":{"112":3}}],["5958811815730007",{"2":{"112":3}}],["598855892317473",{"2":{"112":3}}],["5985326754929186",{"2":{"112":3}}],["5900274372629859",{"2":{"112":3}}],["5900975469606192",{"2":{"112":3}}],["59375",{"2":{"97":4,"98":4}}],["59",{"2":{"12":1}}],["59f7168a",{"2":{"12":1}}],["5673604992364663",{"2":{"112":1}}],["5625",{"2":{"97":4,"98":4}}],["56ddb016",{"2":{"12":1}}],["56f22d72",{"2":{"12":1}}],["5494279100647357",{"2":{"112":1}}],["5445301181443962",{"2":{"112":3}}],["5429297006640443",{"2":{"112":3}}],["547473508864641e",{"2":{"97":1}}],["54",{"2":{"12":1,"86":1}}],["5432bcbf",{"2":{"12":1}}],["5+0",{"2":{"12":2}}],["5+1",{"2":{"12":1}}],["5018789444457645",{"2":{"112":1}}],["501517456149803",{"2":{"112":1}}],["5048708458871851",{"2":{"112":3}}],["504894",{"2":{"60":3}}],["5048909",{"2":{"60":3}}],["50485975",{"2":{"60":3}}],["5048374",{"2":{"60":3}}],["50483155",{"2":{"60":3}}],["5048262",{"2":{"60":3}}],["5048146",{"2":{"60":3}}],["5048628",{"2":{"60":3}}],["5049766",{"2":{"60":3}}],["50497997",{"2":{"60":3}}],["5049239",{"2":{"60":3}}],["5049157",{"2":{"60":3}}],["5049094",{"2":{"60":3}}],["50493026",{"2":{"60":3}}],["50495696",{"2":{"60":6}}],["50990593",{"2":{"60":3}}],["5099108",{"2":{"60":3}}],["50982356",{"2":{"60":3}}],["50981885",{"2":{"60":3}}],["50971836",{"2":{"60":3}}],["5097228",{"2":{"60":3}}],["50961626",{"2":{"60":3}}],["50962067",{"2":{"60":3}}],["5095119",{"2":{"60":3}}],["50951755",{"2":{"60":3}}],["5094113",{"2":{"60":3}}],["5094086",{"2":{"60":3}}],["5092935",{"2":{"60":3}}],["50929356",{"2":{"60":3}}],["5091811",{"2":{"60":3}}],["509176",{"2":{"60":3}}],["5000000000000001",{"2":{"93":2}}],["5000000000000002",{"2":{"93":2}}],["5000000000000003",{"2":{"93":6}}],["5000000000000056",{"2":{"93":4}}],["500",{"2":{"26":1,"28":1,"52":1,"54":1,"91":1,"93":2,"112":1}}],["50",{"2":{"12":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"60":2,"61":1,"62":2,"63":2}}],["5c2747f8",{"2":{"12":1}}],["5c1252a2",{"2":{"12":1}}],["5303307599819173",{"2":{"112":4}}],["53125",{"2":{"97":4,"98":4}}],["53",{"2":{"86":2}}],["53d494c1",{"2":{"12":1}}],["53ae85a6",{"2":{"12":1}}],["53c48c17",{"2":{"12":1}}],["5ae413db",{"2":{"12":1}}],["5ae59095",{"2":{"12":1}}],["5ab0869b",{"2":{"12":1}}],["5e",{"2":{"62":1,"63":1,"93":2}}],["5eaf0fd0",{"2":{"12":1}}],["5e318141",{"2":{"12":1}}],["5e9a32e7af2",{"2":{"11":1}}],["5",{"2":{"12":34,"16":1,"17":5,"18":1,"26":2,"28":2,"29":2,"31":2,"35":1,"36":1,"39":1,"42":1,"46":1,"48":1,"55":21,"57":21,"58":4,"59":4,"60":228,"62":2,"63":2,"64":3,"65":3,"69":1,"93":129,"97":140,"98":132,"110":2,"112":54,"121":1,"140":1}}],["63",{"2":{"147":1}}],["6359866935141251",{"2":{"112":3}}],["63c18a36",{"2":{"12":1}}],["6593050784076984",{"2":{"112":3}}],["65625",{"2":{"97":4,"98":4}}],["65257c39",{"2":{"12":1}}],["6\\titertime",{"2":{"23":1}}],["6\\tδt",{"2":{"16":3,"62":1}}],["6013085665698479",{"2":{"112":3}}],["6031812862420463",{"2":{"112":3}}],["6044249222451645",{"2":{"112":3}}],["6048854718137157",{"2":{"112":3}}],["6050014144769785",{"2":{"112":3}}],["6058662108882434e",{"2":{"69":1}}],["605ecd9f",{"2":{"12":1}}],["60",{"2":{"58":1,"59":1}}],["608872\\tδt",{"2":{"23":1}}],["600",{"2":{"15":1,"16":1,"17":3,"18":5,"26":2,"27":3,"28":5,"49":2,"50":3,"51":5,"52":2,"54":2,"60":2,"61":1,"62":2,"63":2,"64":2,"65":2}}],["6+0",{"2":{"12":2}}],["6+1",{"2":{"12":3}}],["6e34b625",{"2":{"12":1}}],["6c6a2e73",{"2":{"12":1}}],["67",{"2":{"12":1}}],["67c07d97",{"2":{"12":1}}],["69",{"2":{"147":1}}],["69024149",{"2":{"12":1}}],["699a6c99",{"2":{"12":1}}],["69de0a69",{"2":{"12":1}}],["692b3bcd",{"2":{"12":1}}],["6fe1bfb0",{"2":{"12":1}}],["6862777065879397",{"2":{"112":3}}],["6875",{"2":{"97":4,"98":4}}],["68865585100403",{"2":{"93":1}}],["682c06a0",{"2":{"12":1}}],["68eda718",{"2":{"12":1}}],["6173973185403617",{"2":{"112":3}}],["619435700313733",{"2":{"55":1,"57":1}}],["615f187c",{"2":{"12":1}}],["61eb1bfa",{"2":{"12":1}}],["66fc600b",{"2":{"12":1}}],["663a7486",{"2":{"12":1}}],["66dad0bd",{"2":{"12":1}}],["6b7a57c9",{"2":{"12":1}}],["6add18c4",{"2":{"12":1}}],["625",{"2":{"97":4,"98":4}}],["62fd8b95",{"2":{"12":1}}],["62783981",{"2":{"12":1}}],["621f4979",{"2":{"12":1}}],["6",{"2":{"11":1,"12":24,"15":2,"18":2,"19":5,"21":5,"49":3,"51":3,"55":1,"57":1,"69":3,"93":13,"110":2,"112":27,"121":3}}],["6470887764045219",{"2":{"112":3}}],["647866c9",{"2":{"12":1}}],["648",{"2":{"97":1}}],["648×648",{"2":{"97":2}}],["648×324",{"2":{"97":1}}],["6462fe0b",{"2":{"12":1}}],["64499a7a",{"2":{"12":1}}],["64",{"2":{"11":3,"52":1,"54":1,"55":1,"57":1,"60":3,"69":1,"70":1,"93":1,"97":1,"98":1}}],["×",{"2":{"11":1}}],["48138807330255545",{"2":{"112":3}}],["4883158148529916",{"2":{"112":1}}],["4830825537815986",{"2":{"112":1}}],["48062228",{"2":{"12":1}}],["4th",{"2":{"112":1,"139":1,"140":1}}],["499910676274747",{"2":{"112":1}}],["49999999999999445",{"2":{"93":4}}],["49999999999999967",{"2":{"93":6}}],["4999999999999999",{"2":{"93":2}}],["4999999999999998",{"2":{"93":2}}],["497096545742828",{"2":{"112":1}}],["4933079794955013",{"2":{"112":1}}],["4982591359356883",{"2":{"112":3}}],["49521717",{"2":{"60":3}}],["49520862",{"2":{"60":3}}],["4950906",{"2":{"60":3}}],["49506977",{"2":{"60":3}}],["49502006",{"2":{"60":3}}],["49502343",{"2":{"60":3}}],["49504304",{"2":{"60":6}}],["49507612",{"2":{"60":3}}],["4950843",{"2":{"60":3}}],["4951854",{"2":{"60":3}}],["49516848",{"2":{"60":3}}],["4951626",{"2":{"60":3}}],["4951372",{"2":{"60":3}}],["49510905",{"2":{"60":3}}],["49510598",{"2":{"60":3}}],["49514025",{"2":{"60":3}}],["4951738",{"2":{"60":3}}],["49094325",{"2":{"60":3}}],["49093604",{"2":{"60":3}}],["49082395",{"2":{"60":3}}],["49081892",{"2":{"60":3}}],["49070647",{"2":{"60":3}}],["4907065",{"2":{"60":3}}],["49059144",{"2":{"60":3}}],["49058872",{"2":{"60":3}}],["49048245",{"2":{"60":3}}],["4904881",{"2":{"60":3}}],["49037933",{"2":{"60":3}}],["49038374",{"2":{"60":3}}],["49027717",{"2":{"60":3}}],["49028164",{"2":{"60":3}}],["49018115",{"2":{"60":3}}],["49017644",{"2":{"60":3}}],["49008918",{"2":{"60":3}}],["49009407",{"2":{"60":3}}],["4n",{"2":{"52":1,"54":1,"55":1,"57":1}}],["4π",{"2":{"52":1,"54":1}}],["4\\titertime",{"2":{"23":2}}],["4\\tδt",{"2":{"16":2,"62":1}}],["4105277740400618",{"2":{"112":1}}],["41592062803461616",{"2":{"112":3}}],["41677387871106",{"2":{"112":3}}],["417292500615618e",{"2":{"69":1}}],["41",{"2":{"19":2,"21":2}}],["411431e0",{"2":{"12":1}}],["45314271789175e",{"2":{"93":2}}],["4536629a",{"2":{"12":1}}],["459933104524e",{"2":{"93":1}}],["45993310422047e",{"2":{"93":1}}],["4582588614111747",{"2":{"112":4}}],["458c3c95",{"2":{"12":1}}],["45858cf5",{"2":{"12":1}}],["44984225330664884",{"2":{"112":3}}],["44793764689863946",{"2":{"112":1}}],["44cfe95a",{"2":{"12":1}}],["44+0",{"2":{"12":1}}],["4af54fe1",{"2":{"12":1}}],["4f6342f7",{"2":{"12":1}}],["4fba245c",{"2":{"12":1}}],["4310738946896817",{"2":{"112":3}}],["4375",{"2":{"97":4,"98":4}}],["43",{"2":{"12":1}}],["43287f4e",{"2":{"12":1}}],["40625",{"2":{"97":4,"98":4}}],["400",{"2":{"62":1,"63":1,"64":3,"65":3}}],["4004b06d",{"2":{"12":1}}],["40",{"2":{"12":2,"15":1,"18":1,"64":1,"65":1,"86":1}}],["4b2f31a3",{"2":{"12":1}}],["4b34888f",{"2":{"12":1}}],["4+4",{"2":{"12":1}}],["4+1",{"2":{"12":2}}],["4+0",{"2":{"12":4}}],["4e3",{"2":{"23":1,"25":1,"33":1,"36":1}}],["4ec0a83e",{"2":{"12":1}}],["4e9b3aee",{"2":{"12":1}}],["4e289a0a",{"2":{"12":1}}],["4c63d2b9",{"2":{"12":1}}],["46022008886919996",{"2":{"112":3}}],["4607b0f0",{"2":{"12":1}}],["46875",{"2":{"97":4,"98":4}}],["467",{"2":{"55":1,"57":1}}],["46d2c3a1",{"2":{"12":1}}],["46192b85",{"2":{"12":1}}],["4251380669009577",{"2":{"112":3}}],["4259811738527e",{"2":{"93":1}}],["425981173916e",{"2":{"93":2}}],["4242656052086717",{"2":{"69":1}}],["42",{"2":{"12":1}}],["42+0",{"2":{"12":1}}],["42fd0dbc",{"2":{"12":1}}],["42e2da0e",{"2":{"12":1}}],["429591f6",{"2":{"12":1}}],["4799487091064865",{"2":{"112":3}}],["4758327495143713",{"2":{"112":1}}],["4707449035500546",{"2":{"112":1}}],["476222801294416e",{"2":{"93":1}}],["476132\\tδt",{"2":{"23":1}}],["47",{"2":{"12":1}}],["4710194d",{"2":{"12":1}}],["47edcb42",{"2":{"12":1}}],["4",{"2":{"11":2,"12":52,"16":1,"49":2,"51":2,"55":5,"57":4,"60":2,"69":2,"70":1,"93":5,"94":1,"97":1,"110":1,"120":1,"121":2,"133":1,"147":1}}],["0im",{"2":{"93":2}}],["08782510495186124",{"2":{"112":1}}],["08053363877178918",{"2":{"112":1}}],["0866824407621585",{"2":{"112":3}}],["086352372e",{"2":{"93":1}}],["08499999999999999",{"2":{"93":4}}],["08",{"2":{"93":4}}],["082ubar",{"2":{"52":1,"54":1}}],["082447d4",{"2":{"12":1}}],["07937258002515016",{"2":{"112":1}}],["074915689630976",{"2":{"112":3}}],["07500000000000001",{"2":{"93":4}}],["075b6546",{"2":{"12":1}}],["07",{"2":{"93":4,"110":1}}],["04093867588285244",{"2":{"112":1}}],["04064697",{"2":{"60":6}}],["0486025202291174",{"2":{"112":1}}],["0426552525097845",{"2":{"112":1}}],["043503508107856",{"2":{"112":3}}],["043835392813216995",{"2":{"112":1}}],["043240547",{"2":{"60":3}}],["0497976350046425",{"2":{"112":1}}],["044266014850046",{"2":{"112":3}}],["044257984",{"2":{"60":6}}],["0445219330008433",{"2":{"112":4}}],["045",{"2":{"93":4}}],["04",{"2":{"93":4}}],["047299176",{"2":{"60":3}}],["04121679",{"2":{"60":6}}],["041",{"2":{"16":1}}],["0397870793822195",{"2":{"112":3}}],["0395614281872345",{"2":{"112":1}}],["036378952815045",{"2":{"112":3}}],["030804299340781",{"2":{"112":3}}],["030469775",{"2":{"60":6}}],["034657669392390775",{"2":{"112":1}}],["033358035379117",{"2":{"112":3}}],["033288015121601",{"2":{"112":1}}],["033835bb",{"2":{"12":1}}],["03783033925544225",{"2":{"112":1}}],["037963099708429",{"2":{"112":3}}],["03125",{"2":{"97":14,"98":8}}],["03",{"2":{"93":4}}],["0354254985426227",{"2":{"93":1}}],["035425498542622634",{"2":{"93":2}}],["035",{"2":{"93":4}}],["03550929",{"2":{"60":6}}],["03535363",{"2":{"60":6}}],["03828521",{"2":{"60":6}}],["038053393",{"2":{"60":6}}],["03252904",{"2":{"60":6}}],["032965183",{"2":{"60":6}}],["0f0",{"2":{"60":30}}],["0f8b85d8",{"2":{"12":1}}],["0071390751083091316",{"2":{"112":1}}],["0036937756597660177",{"2":{"112":1}}],["003946543143456883",{"2":{"93":1}}],["003946543143456876",{"2":{"93":2}}],["003967967340085e",{"2":{"69":1}}],["0033",{"2":{"62":2}}],["0032",{"2":{"62":7}}],["005955362736923781",{"2":{"112":1}}],["005972743",{"2":{"60":3}}],["005972773",{"2":{"60":3}}],["005",{"2":{"93":8}}],["005\\tumax",{"2":{"62":10}}],["0053389072",{"2":{"60":3}}],["0053388774",{"2":{"60":3}}],["0057561994",{"2":{"60":3}}],["0057561696",{"2":{"60":3}}],["0055448413",{"2":{"60":6}}],["005138397",{"2":{"60":3}}],["0051383823",{"2":{"60":3}}],["005137682",{"2":{"60":6}}],["005187154",{"2":{"60":6}}],["0052372813",{"2":{"60":3}}],["0052372515",{"2":{"60":6}}],["0054404736",{"2":{"60":3}}],["0054405034",{"2":{"60":3}}],["005649209",{"2":{"60":3}}],["005649179",{"2":{"60":3}}],["00586313",{"2":{"60":3}}],["00586316",{"2":{"60":3}}],["005052930950454",{"2":{"112":3}}],["0050000000000000044",{"2":{"93":6}}],["0050395727",{"2":{"60":3}}],["005039513",{"2":{"60":9}}],["00508821",{"2":{"60":6}}],["004943371",{"2":{"60":3}}],["0049433857",{"2":{"60":3}}],["004942775",{"2":{"60":3}}],["004942745",{"2":{"60":3}}],["004990816",{"2":{"60":6}}],["0045699477",{"2":{"60":3}}],["0045699626",{"2":{"60":3}}],["004569292",{"2":{"60":6}}],["0045239925",{"2":{"60":6}}],["004847288",{"2":{"60":6}}],["0048472583",{"2":{"60":6}}],["0048947334",{"2":{"60":3}}],["004894674",{"2":{"60":3}}],["004660487",{"2":{"60":6}}],["004660547",{"2":{"60":6}}],["0046145916",{"2":{"60":6}}],["004744359932985878",{"2":{"112":1}}],["0047538877",{"2":{"60":3}}],["0047539026",{"2":{"60":3}}],["004753113",{"2":{"60":3}}],["0047531724",{"2":{"60":3}}],["0047063828",{"2":{"60":3}}],["004706502",{"2":{"60":3}}],["004799843",{"2":{"60":6}}],["0044794083",{"2":{"60":6}}],["0044793785",{"2":{"60":12}}],["004434824",{"2":{"60":3}}],["0044347644",{"2":{"60":9}}],["0061945915",{"2":{"60":3}}],["006082356",{"2":{"60":3}}],["006082386",{"2":{"60":3}}],["0066967607",{"2":{"60":6}}],["006809652",{"2":{"60":6}}],["009645156117581473",{"2":{"112":1}}],["009999999999999981",{"2":{"93":2}}],["009999999999999995",{"2":{"93":8}}],["009999999999999998",{"2":{"93":4}}],["009999999999999898",{"2":{"93":6}}],["009139925",{"2":{"60":6}}],["0095",{"2":{"16":1}}],["0024515906294917565",{"2":{"112":1}}],["0022397041",{"2":{"60":3}}],["0022396892",{"2":{"60":9}}],["002217412",{"2":{"60":3}}],["0022173822",{"2":{"60":9}}],["002",{"2":{"26":1,"28":1}}],["00000000000003",{"2":{"98":1}}],["0001007226650833037",{"2":{"69":1}}],["0001\\tδt",{"2":{"60":1}}],["000378932838635171",{"2":{"69":1}}],["0003752933f0",{"2":{"60":4}}],["0004\\tδt",{"2":{"60":1}}],["00026645826f0",{"2":{"60":8}}],["000",{"2":{"26":2,"28":2,"43":1,"45":1,"46":1,"48":1,"55":1,"57":1}}],["0016775779886938518",{"2":{"112":1}}],["001",{"2":{"55":1,"57":1}}],["0015\\tumax",{"2":{"23":2}}],["0014\\tumax",{"2":{"23":2}}],["0013\\tumax",{"2":{"23":2}}],["0012\\tumax",{"2":{"23":1}}],["008386636861924696",{"2":{"112":1}}],["008958757",{"2":{"60":6}}],["0089",{"2":{"16":2}}],["0088",{"2":{"16":2}}],["0087",{"2":{"16":3}}],["054493427553239",{"2":{"112":1}}],["05774146260707564",{"2":{"112":1}}],["057102516014986",{"2":{"112":1}}],["0575009086990472",{"2":{"112":1}}],["0532385940120887",{"2":{"112":1}}],["059383423679714",{"2":{"112":4}}],["0558026885624203",{"2":{"112":1}}],["0556684473065676",{"2":{"112":1}}],["055",{"2":{"17":2,"93":4}}],["05\\tumax",{"2":{"16":10}}],["05",{"2":{"16":1,"18":1,"19":1,"21":1,"66":1,"68":1,"93":4,"110":1}}],["05823500",{"2":{"12":1}}],["05181044",{"2":{"12":1}}],["0dad84c5",{"2":{"12":1}}],["0d7ed370",{"2":{"12":1}}],["0ac62f75",{"2":{"12":1}}],["0a4f8689",{"2":{"12":1}}],["0c0b7dd1",{"2":{"12":1}}],["0c68f7d7",{"2":{"12":1}}],["0+2",{"2":{"12":1}}],["0+4",{"2":{"12":1}}],["0+1",{"2":{"12":7}}],["0+0",{"2":{"12":20}}],["06998",{"2":{"147":2}}],["06988",{"2":{"147":1}}],["069b7b12",{"2":{"12":1}}],["060933169437688",{"2":{"112":1}}],["0643939821950585",{"2":{"112":1}}],["0646385389800517",{"2":{"112":1}}],["0625",{"2":{"97":80,"98":66}}],["06283367774273789",{"2":{"93":1}}],["06283367774273778",{"2":{"93":2}}],["065879364931202",{"2":{"112":1}}],["065761529283348",{"2":{"112":1}}],["065",{"2":{"93":4}}],["0656b61e",{"2":{"12":1}}],["06",{"2":{"93":4}}],["0936892619948675",{"2":{"112":3}}],["09375",{"2":{"97":4,"98":4}}],["0942604659118893",{"2":{"112":3}}],["096943457889973",{"2":{"112":3}}],["099236269320718",{"2":{"112":3}}],["099dac27",{"2":{"12":1}}],["09150946309929023",{"2":{"112":1}}],["09788696740969302",{"2":{"93":1}}],["09788696740969285",{"2":{"93":2}}],["09",{"2":{"93":2}}],["09ab397b",{"2":{"12":1}}],["0bca4576",{"2":{"12":1}}],["0e",{"2":{"93":6}}],["0e3",{"2":{"69":1,"70":1}}],["0e77f7df",{"2":{"12":1}}],["0e44f5e4",{"2":{"12":1}}],["0",{"2":{"11":2,"12":120,"15":887,"16":24,"17":5,"18":18,"19":13,"21":13,"23":29,"25":8,"26":6,"28":6,"29":8,"31":8,"33":1,"34":1,"35":1,"36":3,"37":2,"39":5,"41":3,"42":8,"43":3,"45":3,"46":7,"48":7,"49":7,"51":7,"52":23,"54":23,"55":43,"56":1,"57":44,"58":11,"59":11,"60":1160,"61":9,"62":34,"63":5,"64":9,"65":9,"66":4,"68":4,"69":10,"70":7,"73":1,"74":2,"76":3,"91":5,"93":1594,"97":368,"98":739,"110":3,"112":304,"121":11,"122":1,"134":2,"135":1,"137":1}}],["028796544094941",{"2":{"112":3}}],["0285213189520688",{"2":{"112":1}}],["021549979114891",{"2":{"112":1}}],["021645322",{"2":{"60":6}}],["02373392763959295",{"2":{"112":1}}],["023079693",{"2":{"60":6}}],["0267128790424955",{"2":{"112":3}}],["026206225445256",{"2":{"112":3}}],["0269842",{"2":{"60":6}}],["02534836643157e",{"2":{"93":1}}],["02534836643315e",{"2":{"93":2}}],["0253483662276e",{"2":{"93":3}}],["025",{"2":{"93":4}}],["02552703",{"2":{"60":6}}],["020679772",{"2":{"60":6}}],["029704452",{"2":{"60":6}}],["024263948",{"2":{"60":6}}],["027409795615081",{"2":{"112":3}}],["027974367",{"2":{"60":6}}],["027",{"2":{"23":1}}],["02c8fc9c",{"2":{"12":1}}],["02",{"2":{"11":1,"93":4}}],["0195833757760737",{"2":{"112":3}}],["019026697",{"2":{"60":6}}],["01729418575514602",{"2":{"112":1}}],["010821008352053463",{"2":{"112":1}}],["010936958169616918",{"2":{"112":1}}],["010000000000000005",{"2":{"93":2}}],["010000000000000002",{"2":{"93":12}}],["010000000000000009",{"2":{"93":42}}],["01855798000167e",{"2":{"93":1}}],["01855797969653e",{"2":{"93":1}}],["01827985",{"2":{"60":6}}],["012",{"2":{"60":1}}],["012ubar",{"2":{"52":1,"54":1}}],["014",{"2":{"60":1}}],["01\\tumax",{"2":{"60":2}}],["011",{"2":{"62":1}}],["011266053",{"2":{"60":6}}],["011563554",{"2":{"60":6}}],["013987184",{"2":{"60":6}}],["0135733485",{"2":{"60":6}}],["013be700",{"2":{"12":1}}],["015770597371044366",{"2":{"93":1}}],["01577059737104434",{"2":{"93":2}}],["01563057410408e",{"2":{"69":1}}],["0159266",{"2":{"60":6}}],["015",{"2":{"23":5,"93":4}}],["01650694",{"2":{"60":6}}],["016",{"2":{"23":1}}],["01",{"2":{"11":1,"29":1,"31":1,"58":1,"59":1,"66":1,"68":1,"69":1,"70":1,"91":1,"93":12}}],["2βu0−",{"2":{"136":1}}],["2|",{"2":{"126":1}}],["2−12",{"2":{"122":1}}],["233",{"2":{"147":1}}],["231",{"2":{"147":1}}],["2307",{"2":{"147":1}}],["23273741070513682",{"2":{"112":1}}],["2390293609716085",{"2":{"112":3}}],["2381bf8a",{"2":{"12":1}}],["2uavg",{"2":{"110":1}}],["2ν",{"2":{"110":1}}],["2=∫ωkdω",{"2":{"106":1}}],["2z",{"2":{"73":2,"76":2}}],["2x",{"2":{"73":2,"76":2}}],["2t",{"2":{"69":1,"70":1}}],["2π",{"2":{"66":1,"68":1,"69":1,"70":1}}],["2\\titertime",{"2":{"62":1}}],["2\\tδt",{"2":{"16":2,"62":1}}],["2y",{"2":{"52":1,"54":1,"73":2,"76":2}}],["2nd",{"2":{"138":1}}],["2n",{"2":{"15":1,"18":1,"49":1,"51":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["2d",{"0":{"13":1,"22":1,"26":1,"37":1,"43":1,"49":1,"52":1,"55":1,"60":1,"62":1,"64":1,"66":1,"69":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"23":1,"24":1,"25":1,"27":1,"28":1,"38":1,"39":1,"40":1,"41":1,"42":1,"44":1,"45":1,"50":1,"51":1,"53":1,"54":1,"56":1,"57":1,"61":1,"63":1,"65":1,"67":1,"68":1,"70":1},"2":{"15":1,"26":1,"49":1,"52":1,"55":1,"66":1,"69":2,"72":1,"107":2,"108":1,"116":1,"121":2,"122":1,"130":1,"131":1}}],["293",{"2":{"147":1}}],["29",{"2":{"147":1}}],["292",{"2":{"93":1}}],["298",{"2":{"60":1,"121":1}}],["29816b5a",{"2":{"12":1}}],["296",{"2":{"60":4,"121":2}}],["295",{"2":{"60":4,"121":2}}],["2913bbd2",{"2":{"12":1}}],["2f01184e",{"2":{"12":1}}],["2+",{"2":{"110":1}}],["2+4",{"2":{"12":1}}],["2+0",{"2":{"12":10}}],["2+1",{"2":{"12":5}}],["2e3",{"2":{"39":1,"42":1}}],["2e76f6c2",{"2":{"12":1}}],["2e619515",{"2":{"12":1}}],["2efcf032",{"2":{"12":1}}],["2478305189843362",{"2":{"112":1}}],["24738663991227255",{"2":{"93":1}}],["24738663991227286",{"2":{"93":2}}],["24894307730776155",{"2":{"112":1}}],["2420089432080796",{"2":{"112":1}}],["24\\titertime",{"2":{"60":1}}],["24y",{"2":{"26":1,"28":1,"29":1,"31":1}}],["24",{"2":{"12":1,"16":1,"18":1}}],["244e2a9f",{"2":{"12":1}}],["26",{"2":{"12":2}}],["285",{"2":{"147":1}}],["28243935383757307",{"2":{"112":1}}],["28125",{"2":{"97":4,"98":4}}],["28d57a85",{"2":{"12":1}}],["28",{"2":{"12":2}}],["2803e5a7",{"2":{"12":1}}],["2a0f44e3",{"2":{"12":1}}],["2a0fbf3d",{"2":{"12":1}}],["2ab3a3ac",{"2":{"12":1}}],["2202",{"2":{"147":1}}],["220446049250313e",{"2":{"98":6}}],["22−xi2−1",{"2":{"131":1}}],["22−xi1+1",{"2":{"131":1}}],["22−ψi+h1+h2−ψi+h1−h2xi2+1",{"2":{"131":1}}],["22576607086796496",{"2":{"112":1}}],["22285826e",{"2":{"93":1}}],["221125\\tδt",{"2":{"23":1}}],["22cec73e",{"2":{"12":1}}],["22",{"2":{"12":2,"52":1,"54":1,"131":1,"143":2}}],["2189",{"2":{"147":1}}],["2182",{"2":{"147":1}}],["21875",{"2":{"97":4,"98":4}}],["21−xi1−1",{"2":{"131":1}}],["21−xi1+1",{"2":{"131":1}}],["21−ψi+h1+h2−ψi−h1+h2xi1+1",{"2":{"131":1}}],["21133330910518938",{"2":{"112":1}}],["212",{"2":{"112":2}}],["21216c6a",{"2":{"12":1}}],["21",{"2":{"12":7,"55":1,"57":1,"131":1}}],["2b5f629d",{"2":{"12":1}}],["2750805605945816",{"2":{"112":3}}],["27+1",{"2":{"12":1}}],["2702e6a9",{"2":{"12":1}}],["276daf66",{"2":{"12":1}}],["2792f1a3",{"2":{"12":1}}],["27",{"2":{"12":2}}],["27a7e980",{"2":{"12":1}}],["257",{"2":{"147":1}}],["259",{"2":{"147":1}}],["25340888817604323",{"2":{"112":1}}],["250",{"2":{"52":2,"54":2}}],["2560",{"2":{"97":1}}],["256",{"2":{"23":1,"25":1,"39":1,"42":1,"52":2,"54":2,"55":1,"57":1,"69":1,"70":1}}],["2569d6c7",{"2":{"12":1}}],["25",{"2":{"12":3,"29":2,"31":2,"46":2,"48":2,"97":4,"98":4}}],["2013",{"2":{"147":1}}],["2014",{"2":{"147":1}}],["2012",{"2":{"147":2}}],["20124022712840817",{"2":{"112":1}}],["2017",{"2":{"147":1}}],["2019",{"2":{"147":1}}],["201",{"2":{"60":6}}],["2003",{"2":{"147":1}}],["2003859162688768",{"2":{"112":3}}],["2007",{"2":{"147":1}}],["2000",{"2":{"66":1,"68":1,"147":2}}],["200",{"2":{"60":9,"62":1,"63":1}}],["20f20a25",{"2":{"12":1}}],["20",{"2":{"11":1,"12":4,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":2,"48":2,"49":1,"51":1,"52":1,"54":1,"58":3,"59":3,"60":7,"61":4,"62":1,"63":1,"64":2,"65":2,"66":1,"68":1,"74":1,"76":1,"93":3}}],["2022",{"2":{"147":2}}],["2023",{"2":{"110":1,"147":1}}],["20230411+1",{"2":{"12":1}}],["202",{"2":{"60":3}}],["202×83×2",{"2":{"15":1}}],["2027ae74",{"2":{"12":1}}],["2024",{"2":{"11":1}}],["2021",{"2":{"9":1,"147":2}}],["2",{"2":{"11":1,"12":63,"15":8,"16":1,"17":12,"18":17,"19":10,"21":10,"22":1,"23":6,"26":1,"28":1,"29":1,"31":1,"32":1,"34":1,"36":1,"37":1,"39":1,"41":1,"42":2,"46":3,"48":3,"49":17,"51":17,"52":2,"54":2,"55":26,"57":26,"58":7,"59":7,"60":71,"61":13,"62":2,"63":2,"64":2,"65":2,"66":4,"68":4,"69":9,"70":8,"73":3,"76":3,"87":1,"91":5,"93":24,"97":8,"98":14,"100":1,"110":4,"112":89,"121":3,"122":3,"123":1,"124":2,"135":1,"139":1,"143":3}}],["kurz",{"2":{"147":1}}],["kutta",{"0":{"137":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"43":1,"134":4,"137":4,"147":2}}],["koren",{"2":{"147":2}}],["kochkov",{"2":{"147":1}}],["kolmolgorov",{"2":{"110":1}}],["kolmogorov",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"37":1}}],["know",{"2":{"137":1}}],["known",{"2":{"95":2,"127":1}}],["kronecker",{"2":{"122":1}}],["kp",{"2":{"118":2}}],["ki=f",{"2":{"137":1}}],["ki=14∑α",{"2":{"110":1}}],["ki=18∑α",{"2":{"110":1}}],["kinematic",{"2":{"100":1}}],["kinetic",{"0":{"91":1,"106":1,"129":1},"2":{"8":2,"106":1,"110":7,"129":1}}],["kind",{"2":{"9":1}}],["kdk",{"2":{"110":1}}],["k=12∥u∥l2",{"2":{"106":1}}],["k=12∥u∥22=12∑α=1duαuα",{"2":{"129":1}}],["k=12∥u∥22",{"2":{"106":1}}],["kmax",{"2":{"87":4}}],["kwargs",{"2":{"87":2,"88":1,"94":1,"110":4,"111":2,"115":6,"121":7,"132":2,"133":1,"134":1,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["k^",{"2":{"55":2,"57":2}}],["ksub",{"2":{"55":5,"57":5}}],["k",{"2":{"37":1,"55":9,"57":9,"110":2,"121":1,"122":2,"124":1,"133":2}}],["ketcheson",{"2":{"137":1}}],["ke",{"2":{"110":1}}],["keyword",{"2":{"110":1,"117":1,"121":2,"132":2}}],["kernel",{"2":{"97":3,"98":6,"110":1}}],["kernels",{"2":{"96":1,"97":1,"110":1}}],["kerneldensity",{"2":{"12":1}}],["kernelabstractions",{"2":{"12":1,"94":1,"110":1,"117":2}}],["keep",{"2":{"5":1}}],["ωα=−δα−uα++δα+uα−",{"2":{"130":1}}],["ω3",{"2":{"130":1}}],["ω2",{"2":{"130":1}}],["ω1",{"2":{"130":1}}],["ωi+hα3",{"2":{"125":1}}],["ωi3=⋃α=1dωi−eα∪ωi∪ωi+eα",{"2":{"125":1}}],["ωi",{"2":{"123":1}}],["ωi=∏α=1dδiαα",{"2":{"122":1}}],["ωp",{"2":{"110":1}}],["ω⊂rd",{"2":{"100":1}}],["ω=−δ2u1+δ1u2",{"2":{"130":1}}],["ω=−∂u1∂x2+∂u2∂x1",{"2":{"107":1}}],["ω=⋃i∈iωi",{"2":{"122":1}}],["ω=∏α=1d",{"2":{"122":1}}],["ω=∇×u",{"2":{"107":1}}],["ω=",{"2":{"37":1,"107":1}}],["ω",{"2":{"8":1,"52":2,"54":2,"100":1,"106":1,"110":7,"122":1}}],["q=",{"2":{"136":1}}],["q=−12∑α",{"2":{"110":1}}],["q",{"2":{"110":3,"147":1}}],["quadrature",{"2":{"123":2,"131":1,"142":1}}],["quadgk",{"2":{"12":1}}],["quantity",{"2":{"123":2}}],["quantities",{"0":{"104":1,"128":1},"1":{"105":1,"106":1,"107":1,"108":1,"129":1,"130":1},"2":{"44":1,"116":1}}],["quality",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1}}],["quot",{"0":{"145":2},"2":{"0":2,"5":2,"9":4,"43":2,"72":4,"115":2,"121":10,"136":2}}],["qoi",{"2":{"12":1}}],["qfield",{"2":{"8":1,"110":2}}],["u−1+δtf",{"2":{"136":1}}],["u−1",{"2":{"135":2,"136":1}}],["u−1=u",{"2":{"135":1}}],["uα",{"2":{"123":1}}],["uαuβ",{"2":{"103":1,"123":2,"125":1}}],["ufunc",{"2":{"118":3}}],["u0−",{"2":{"135":1}}],["u0=u",{"2":{"134":1,"135":1,"137":2}}],["u0",{"2":{"112":4,"135":2,"136":1,"137":1}}],["uh=",{"2":{"124":1}}],["uh",{"2":{"112":2,"126":2,"127":3}}],["ui+2hβα",{"2":{"123":1}}],["ui+hαα",{"2":{"110":1}}],["ui+hαα+ui−hαα",{"2":{"110":1}}],["ui−1",{"2":{"137":1}}],["ui−2hβα",{"2":{"123":1}}],["ui−hαα",{"2":{"110":1}}],["uiα",{"2":{"123":2}}],["uijk",{"2":{"122":1}}],["uij",{"2":{"122":1}}],["ui",{"2":{"122":1,"137":2}}],["uiui",{"2":{"110":1}}],["uavg=",{"2":{"110":1}}],["uavg",{"2":{"110":1}}],["ubc",{"2":{"102":1}}],["ubar",{"2":{"52":1,"54":1}}],["ud",{"2":{"100":1,"115":1}}],["u=v~−δtβ+12gδp",{"2":{"136":1}}],["u=v−δt",{"2":{"135":1}}],["u=∇×ψ",{"2":{"108":1}}],["u=ubc",{"2":{"102":1}}],["u=",{"2":{"100":1}}],["uut",{"2":{"100":1,"103":1}}],["uuids",{"2":{"12":1}}],["uuid",{"2":{"7":1}}],["uzero",{"2":{"98":1}}],["uy",{"2":{"87":2}}],["ux",{"2":{"87":2}}],["u4",{"2":{"87":1}}],["u3",{"2":{"87":2}}],["u2=−∂ψ∂x1",{"2":{"108":1}}],["u2",{"2":{"87":3}}],["u¯",{"2":{"83":3,"86":2,"88":1}}],["u¯=φu",{"2":{"83":1}}],["utilities",{"2":{"133":1}}],["utils",{"0":{"133":1}}],["ut",{"2":{"69":3,"70":3}}],["utc",{"2":{"11":1}}],["uref",{"2":{"69":4,"70":4}}],["uris",{"2":{"12":1}}],["u1=∂ψ∂x2",{"2":{"108":1}}],["u1",{"2":{"66":3,"68":3,"69":1,"87":3,"100":1,"115":1}}],["up",{"2":{"82":1,"103":1,"110":1,"115":1,"121":2,"127":1,"137":1}}],["upper",{"2":{"60":1,"61":1,"133":1}}],["updated",{"2":{"86":3,"121":1}}],["update",{"2":{"60":1,"61":1,"86":2,"121":4}}],["upgrading",{"2":{"12":1}}],["upgradable",{"2":{"12":1}}],["umean",{"2":{"55":2,"57":2}}],["u₀",{"2":{"26":1,"28":1,"29":1,"31":1,"56":1,"57":1}}],["un=u",{"2":{"134":1,"137":1}}],["un",{"2":{"134":1}}],["un≈u",{"2":{"134":1}}],["unless",{"2":{"127":1}}],["unknowns",{"2":{"123":1}}],["unknown",{"2":{"123":1,"127":2}}],["unnecessary",{"2":{"109":1}}],["underlying",{"2":{"96":1}}],["understand",{"2":{"90":1}}],["unresolved",{"2":{"95":2}}],["unsafeatomics",{"2":{"12":1}}],["unsteady",{"0":{"13":1,"16":1,"19":1,"41":1,"49":1,"74":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"8":1,"13":1,"16":1,"18":1,"19":4,"21":1,"23":2,"25":1,"26":2,"28":1,"29":2,"31":1,"34":1,"36":1,"41":1,"42":1,"43":2,"45":1,"46":2,"48":1,"49":3,"51":1,"52":2,"54":1,"55":2,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":1,"69":1,"70":1,"74":1,"76":1,"120":3,"121":1,"127":2,"134":1}}],["university",{"2":{"147":1}}],["unified",{"2":{"112":1}}],["uniformly",{"2":{"87":1}}],["uniform",{"2":{"13":1,"19":1,"39":1,"49":1,"116":1}}],["uniqueness",{"2":{"127":1}}],["unique",{"2":{"103":1}}],["union",{"2":{"60":4,"87":1,"111":2,"134":1,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["units",{"2":{"126":1}}],["unit",{"2":{"100":1,"110":3,"122":1}}],["unitrange",{"2":{"60":18,"93":2}}],["unitful",{"2":{"12":1}}],["unicode",{"2":{"12":1}}],["unicodefun",{"2":{"12":1}}],["unpack",{"2":{"12":1}}],["u",{"2":{"8":3,"19":1,"21":1,"26":3,"28":4,"29":3,"31":4,"43":1,"45":2,"46":2,"48":3,"50":1,"52":3,"53":1,"54":3,"55":28,"56":2,"57":30,"58":2,"59":2,"64":2,"65":2,"66":1,"69":2,"70":2,"73":1,"76":2,"83":2,"84":2,"85":5,"86":2,"87":7,"91":9,"93":7,"97":8,"98":7,"99":3,"102":1,"110":39,"111":5,"112":6,"113":3,"115":13,"116":3,"118":2,"120":5,"122":3,"124":3,"134":5,"135":3,"137":2}}],["us=u",{"2":{"137":1}}],["usually",{"2":{"89":1,"112":1,"115":1}}],["us",{"2":{"69":1,"137":1}}],["ustart",{"2":{"16":1,"18":2,"19":1,"21":2,"23":2,"25":2,"26":1,"28":2,"29":1,"31":2,"33":1,"34":1,"36":2,"39":1,"41":1,"42":2,"43":1,"45":2,"46":1,"48":2,"49":1,"51":2,"52":1,"54":2,"55":1,"57":2,"58":2,"59":3,"60":1,"61":2,"62":1,"63":2,"64":2,"65":3,"66":2,"68":2,"69":2,"70":2,"73":1,"74":1,"76":2,"120":1}}],["using",{"0":{"112":1},"1":{"113":1},"2":{"3":1,"4":2,"5":2,"14":1,"18":2,"19":2,"21":3,"23":1,"25":2,"26":2,"28":3,"29":2,"31":3,"32":1,"33":1,"36":3,"38":1,"42":2,"43":4,"45":3,"46":2,"48":3,"49":3,"51":4,"52":1,"54":2,"55":4,"57":5,"58":2,"59":3,"60":2,"61":3,"62":2,"63":3,"64":2,"65":3,"66":2,"68":3,"69":2,"70":3,"71":1,"72":2,"76":3,"86":3,"91":1,"93":1,"94":2,"109":2,"110":2,"111":1,"112":2,"116":1,"120":2,"121":1,"123":3,"127":2,"135":1,"137":1}}],["user",{"2":{"92":1,"109":1}}],["used",{"2":{"43":2,"44":1,"84":1,"89":1,"94":1,"95":2,"98":1,"101":1,"112":1,"113":1,"116":1,"121":1,"122":1}}],["uses",{"2":{"43":1,"86":1,"117":1,"135":1,"137":1}}],["useful",{"2":{"14":1,"19":1,"26":1,"29":1,"43":2,"44":1,"52":1,"55":1,"66":1,"96":1,"99":1,"116":1}}],["use",{"0":{"3":1},"2":{"4":1,"9":2,"12":1,"87":2,"90":2,"92":1,"94":2,"97":1,"109":1,"110":1,"112":4,"121":1,"122":2,"124":1,"126":1}}],["h",{"2":{"147":2}}],["h1+h2−ψi+h1+h2xi1+3",{"2":{"131":1}}],["hα=eα",{"2":{"122":1}}],["h=",{"2":{"116":1}}],["hussain",{"2":{"110":1,"147":1}}],["html",{"2":{"110":1}}],["https",{"2":{"11":1,"83":1,"110":1,"147":1}}],["hc2cfdftv",{"2":{"93":2}}],["hc2c",{"2":{"93":2}}],["hygiene",{"2":{"43":1}}],["hypergeometricfunctions",{"2":{"12":1}}],["hoyer",{"2":{"147":1}}],["home",{"2":{"60":1,"62":1,"69":1}}],["homogeneous",{"0":{"22":1,"32":1},"1":{"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1},"2":{"22":1,"32":1,"147":1}}],["hot",{"2":{"58":1,"60":1}}],["horizontal",{"2":{"46":1,"97":1}}],["host",{"2":{"43":1,"120":1}}],["however",{"2":{"86":1,"89":1,"90":1,"92":1,"96":1,"127":1,"129":1,"134":1,"135":1}}],["how",{"2":{"43":2,"110":1,"112":2,"121":1,"123":2}}],["holders",{"2":{"9":1}}],["hist",{"2":{"58":1,"59":1,"64":1,"65":1}}],["history",{"2":{"8":1,"19":1,"21":1,"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"35":1,"36":1,"41":2,"42":1,"43":1,"45":1,"46":1,"47":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":1,"61":1,"66":1,"68":1,"74":1,"75":1,"76":1,"121":2}}],["hide",{"2":{"19":3,"26":3,"29":2,"33":1,"34":1,"39":1,"41":1,"43":4,"46":2,"49":2,"52":3,"55":2,"58":1,"64":2,"66":3,"73":2,"74":1}}],["highest",{"2":{"112":1}}],["highly",{"2":{"92":1}}],["high",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"147":1}}],["hwloc",{"2":{"12":2}}],["heun",{"2":{"143":1}}],["heun33",{"2":{"137":1,"143":2}}],["hem5",{"2":{"137":1,"140":1}}],["hem3bs",{"2":{"137":1,"140":2}}],["hem3",{"2":{"137":1,"140":1}}],["heated",{"2":{"147":1}}],["heatmap",{"2":{"42":1,"121":1}}],["heavier",{"2":{"72":1}}],["header",{"2":{"7":1}}],["here",{"2":{"26":1,"43":1,"46":1,"77":1,"83":1,"112":2,"135":1,"136":1}}],["hereby",{"2":{"9":1}}],["hairer",{"2":{"140":2}}],["harlow",{"2":{"122":1,"147":1}}],["hardware",{"2":{"58":1,"60":1,"62":1,"64":1}}],["harfbuzz",{"2":{"12":1}}],["hat",{"2":{"55":1,"57":1}}],["half",{"0":{"140":1},"2":{"26":1,"29":1,"43":1,"109":3}}],["have",{"2":{"12":1,"93":1,"94":1,"101":1,"120":1,"121":1,"126":2,"127":1}}],["handle",{"2":{"92":1}}],["hand",{"0":{"93":1},"2":{"8":2,"93":9,"95":1,"110":2,"111":1,"112":3,"113":11,"135":2}}],["has",{"2":{"7":1,"69":1,"86":1,"87":1,"89":1,"91":1,"93":1,"94":3,"112":1,"115":2,"135":1}}],["+θyd",{"2":{"135":1}}],["+θf",{"2":{"135":2}}],["+θ",{"2":{"135":1}}],["+α−1c",{"2":{"135":2}}],["+o",{"2":{"134":1,"137":2}}],["+|γi+h1+h22|",{"2":{"131":1}}],["+l−1wdymdt",{"2":{"127":1}}],["+wdymdt",{"2":{"127":1}}],["+fh−",{"2":{"126":1}}],["+ν",{"2":{"126":1}}],["+m",{"2":{"83":1}}],["+c−gp¯",{"2":{"83":1}}],["+1",{"2":{"55":2,"57":2}}],["+=",{"2":{"49":1,"51":1}}],["+",{"2":{"6":2,"15":3,"17":5,"18":8,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"33":1,"36":1,"39":1,"42":1,"49":8,"51":8,"52":2,"54":2,"55":18,"57":18,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":4,"65":4,"66":3,"68":3,"69":1,"70":1,"73":1,"76":1,"91":1,"93":17,"98":1,"116":3,"121":1,"135":4}}],["=|ωi+h1+h2|ωi+h1+h2",{"2":{"131":1}}],["=f",{"2":{"126":1}}],["=∫κ≤∥k∥2",{"2":{"121":1}}],["=p",{"2":{"102":1}}],["=u",{"2":{"102":1}}],["=−∇p+ν∇2u+f",{"2":{"100":1}}],["=−sin⁡",{"2":{"69":1}}],["=∥v¯θ−u¯∥2",{"2":{"86":1}}],["=∥m",{"2":{"86":1}}],["=+cos⁡",{"2":{"69":1}}],["=>",{"2":{"60":4}}],["==",{"2":{"15":2,"18":2,"19":4,"21":4,"26":1,"28":1,"29":1,"31":1,"39":1,"42":1,"49":3,"51":3,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"73":2,"76":2,"93":1}}],["=",{"2":{"5":1,"12":1,"15":19,"16":50,"17":13,"18":40,"19":37,"20":1,"21":38,"23":49,"25":21,"26":35,"27":7,"28":42,"29":31,"30":4,"31":35,"33":10,"34":21,"35":1,"36":32,"37":1,"39":9,"41":16,"42":25,"43":38,"44":4,"45":41,"46":34,"47":1,"48":35,"49":59,"50":13,"51":72,"52":40,"53":1,"54":41,"55":80,"56":8,"57":88,"58":48,"59":48,"60":189,"61":74,"62":71,"63":31,"64":49,"65":49,"66":34,"67":4,"68":38,"69":35,"70":35,"71":1,"72":2,"73":8,"74":23,"76":34,"87":1,"91":17,"93":39,"94":2,"97":32,"98":33,"110":5,"112":17,"115":2,"116":2,"120":1,"121":6,"132":2,"134":2,"135":2}}],["n∈",{"2":{"137":1}}],["nicholson",{"2":{"143":1}}],["nicolson",{"0":{"135":1},"2":{"134":1,"135":3}}],["niter",{"2":{"86":3}}],["n−1",{"2":{"134":1}}],["nα−1",{"2":{"122":1}}],["nα−12",{"2":{"122":1}}],["n1",{"2":{"122":1}}],["n1fv",{"2":{"93":3}}],["n=",{"2":{"122":1}}],["n=0",{"2":{"116":2,"134":1}}],["nd",{"2":{"122":1}}],["ndrange",{"2":{"111":2}}],["ndns",{"2":{"88":1}}],["nles",{"2":{"88":1}}],["nlist",{"2":{"69":8,"70":8}}],["nx",{"2":{"87":3}}],["nssp53",{"2":{"137":1,"145":2}}],["nssp33",{"2":{"137":1,"145":2}}],["nssp32",{"2":{"137":1,"145":2}}],["nssp21",{"2":{"137":1,"145":2}}],["nsee",{"2":{"116":1}}],["nsample",{"2":{"87":3}}],["nstep",{"2":{"86":1,"91":2}}],["nsubstep",{"2":{"86":2}}],["ntrajectory",{"2":{"86":1}}],["ntuple",{"2":{"60":2,"69":1,"70":1,"120":1}}],["n^",{"2":{"69":2,"70":2}}],["npoint",{"2":{"121":1,"133":2}}],["np",{"2":{"60":6,"93":1,"97":1,"98":1,"116":1}}],["n₁",{"2":{"55":3,"57":3}}],["n₀",{"2":{"55":3,"57":3}}],["n",{"2":{"18":1,"23":1,"25":2,"33":2,"36":2,"39":1,"42":2,"43":2,"45":3,"51":1,"52":4,"54":5,"55":3,"57":4,"58":2,"59":3,"60":7,"61":2,"62":1,"63":2,"64":2,"65":3,"66":2,"68":3,"69":5,"70":5,"73":1,"76":2,"87":2,"93":1,"97":1,"98":1,"101":1,"115":1,"116":16,"120":4,"121":2,"133":3,"134":3,"137":2,"147":1}}],["nu3",{"2":{"124":3}}],["nunroll",{"2":{"86":1}}],["numa",{"2":{"117":1}}],["numthreads",{"2":{"72":1}}],["numerical",{"2":{"69":1,"70":1,"95":1,"147":5}}],["number",{"0":{"105":1},"2":{"19":1,"26":1,"29":1,"43":2,"46":1,"55":1,"60":1,"61":1,"66":1,"87":3,"105":1,"110":1,"115":2,"116":3,"117":3,"120":2,"122":1,"132":3,"133":1,"137":1}}],["numbers",{"2":{"8":1,"60":3,"61":1,"110":3,"117":1,"132":1}}],["nu2",{"2":{"60":5,"61":5}}],["nu1",{"2":{"60":4,"61":4}}],["nusseltplot",{"2":{"60":5,"61":2}}],["nusselt",{"2":{"60":7,"61":4}}],["nu",{"2":{"55":3,"57":3,"60":12,"61":6,"93":1,"97":1,"98":1,"116":1}}],["nupdate",{"2":{"16":2,"18":2,"19":5,"21":5,"23":4,"25":4,"26":5,"28":5,"29":5,"31":5,"34":6,"36":6,"41":4,"42":4,"43":8,"45":7,"46":7,"48":7,"49":7,"51":7,"52":5,"54":5,"55":5,"57":5,"58":3,"59":3,"60":4,"61":4,"62":2,"63":2,"64":3,"65":3,"66":5,"68":5,"74":6,"76":6,"86":1,"88":1,"121":7}}],["nghttp2",{"2":{"12":1}}],["nnlib",{"2":{"12":1}}],["normalization",{"2":{"126":1}}],["normalize",{"2":{"15":1,"18":1,"86":1}}],["normal",{"2":{"101":1,"115":3}}],["nop",{"2":{"93":1}}],["noiselevel",{"2":{"86":1}}],["noise",{"2":{"55":1}}],["now",{"2":{"43":1,"91":1,"93":1,"123":1,"137":1}}],["nonuniform",{"2":{"116":3,"133":1}}],["nonempty",{"2":{"86":1}}],["nondim",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["non",{"0":{"145":1},"2":{"43":1,"90":3,"91":1,"92":1,"93":2,"95":1,"98":1,"99":1,"115":2,"117":2,"126":1,"127":1,"132":2,"134":3}}],["noninfringement",{"2":{"9":1}}],["nodejs",{"2":{"12":1}}],["no",{"2":{"9":1,"95":1,"103":1,"111":1,"115":1,"137":2}}],["notation",{"2":{"103":1,"122":3,"126":1}}],["noting",{"2":{"130":1}}],["notify",{"2":{"60":1,"61":1}}],["notice",{"2":{"9":2,"93":1}}],["note",{"2":{"43":3,"44":1,"55":1,"82":1,"91":1,"97":1,"103":1,"107":1,"110":1,"115":1,"116":2,"120":1,"122":1,"123":2,"135":1,"137":2,"142":1}}],["nothing",{"2":{"19":3,"26":4,"28":1,"29":3,"31":1,"33":1,"34":1,"39":1,"41":1,"43":4,"44":1,"46":2,"49":2,"52":3,"55":2,"58":1,"60":60,"64":2,"66":3,"73":2,"74":1,"87":1,"91":1,"92":1,"93":8,"97":3,"98":7,"110":2,"112":1,"113":1,"115":1,"120":1,"121":2,"134":2}}],["not",{"2":{"4":1,"5":1,"9":1,"14":1,"19":1,"26":1,"29":1,"43":2,"52":1,"55":1,"66":1,"86":3,"92":1,"93":1,"94":2,"95":1,"97":1,"99":2,"116":1,"124":1,"127":1,"129":1,"134":2,"142":1,"143":1}}],["natural",{"2":{"147":2}}],["national",{"2":{"147":1}}],["nanmath",{"2":{"12":1}}],["navier",{"0":{"100":1,"123":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"93":1,"100":1,"101":1,"105":1,"112":2,"113":3,"134":1,"147":3}}],["names",{"2":{"120":1}}],["namedtuple",{"2":{"60":15,"88":1,"110":1,"111":1,"120":1,"121":3,"133":2}}],["named",{"2":{"44":1,"86":2,"97":1,"116":1,"117":2,"120":1,"132":1}}],["nameresolution",{"2":{"12":1}}],["name",{"2":{"7":1,"43":1,"46":1,"97":1}}],["next",{"2":{"127":1,"135":1}}],["never",{"2":{"120":1}}],["negligible",{"2":{"116":1}}],["neumann",{"2":{"98":1,"102":1,"115":1}}],["neural",{"0":{"81":1,"83":1,"87":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"83":1,"84":2,"87":4,"147":1}}],["neuralclosure`",{"2":{"12":1}}],["neuralclosure",{"0":{"84":1},"2":{"5":3,"12":1,"83":2,"84":9,"85":7,"86":16,"87":9,"88":3}}],["near",{"2":{"26":1,"43":1,"46":1}}],["newton",{"2":{"134":1,"137":3}}],["new",{"2":{"12":1,"26":1,"29":1,"86":2,"87":1,"95":1,"133":1}}],["networks",{"2":{"87":1}}],["network",{"0":{"81":1},"2":{"87":1,"147":1}}],["networkoptions",{"2":{"12":1}}],["netpbm",{"2":{"12":1}}],["needs",{"2":{"5":1}}],["need",{"2":{"5":1,"23":1,"38":1,"90":1,"95":1,"98":1,"132":1}}],["needed",{"2":{"5":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1}}],["dyn",{"2":{"147":2}}],["dynamics",{"2":{"147":1}}],["dymdt≈",{"2":{"127":1}}],["dymdt",{"2":{"127":1,"134":1,"137":2}}],["dsso2",{"2":{"137":1,"144":1}}],["dsrkso2",{"2":{"144":1}}],["dsrk",{"0":{"144":1}}],["dsrk3",{"2":{"137":1,"144":2}}],["dsrk2",{"2":{"137":1,"144":2}}],["dv+yd",{"2":{"135":1}}],["dv¯dt=f",{"2":{"83":1}}],["drawbacks",{"2":{"112":1}}],["driven",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1}}],["d=2|∇p|∇2p",{"2":{"110":1}}],["dγ",{"2":{"101":1}}],["d∈",{"2":{"97":1,"100":1}}],["d+1",{"2":{"97":1}}],["du0+yd",{"2":{"135":1}}],["duh+yd",{"2":{"126":1}}],["duhdt=−c",{"2":{"126":1}}],["duhdt=",{"2":{"112":1,"127":1}}],["du",{"2":{"93":4,"112":4}}],["dual",{"2":{"93":1}}],["dudt",{"2":{"93":5,"113":4}}],["dudt=f",{"2":{"83":1,"112":1,"134":1}}],["duplicated",{"2":{"92":1,"93":3}}],["du¯dt=f",{"2":{"83":1}}],["due",{"2":{"22":1,"32":1,"137":1}}],["dns",{"2":{"83":2,"85":6,"86":2,"88":4,"95":1}}],["dtdy",{"2":{"60":4,"61":4}}],["d",{"2":{"15":3,"17":5,"18":8,"19":3,"21":3,"49":10,"51":10,"55":3,"57":2,"66":4,"68":5,"69":3,"70":3,"87":1,"88":1,"97":6,"110":8,"115":2,"116":3,"122":3,"123":1,"126":1,"135":1,"147":2}}],["d6f4376e",{"2":{"12":1}}],["dftw",{"2":{"93":1}}],["dft",{"2":{"93":5}}],["dfaa095f",{"2":{"12":1}}],["dfield",{"2":{"8":1,"110":2}}],["d091e8ba",{"2":{"12":1}}],["d0879d2d",{"2":{"12":1}}],["d4300ac3",{"2":{"12":1}}],["d49dbf32",{"2":{"12":1}}],["ddtuiα=−∑β=1d",{"2":{"123":1,"125":1}}],["ddt1|o|∫oudω=1|o|∫∂o",{"2":{"101":1}}],["ddudt",{"2":{"93":1}}],["dd4b983a",{"2":{"12":1}}],["ddb6d928",{"2":{"12":1}}],["d7e528f0",{"2":{"12":1}}],["d7ba0133",{"2":{"12":1}}],["dbodyforce",{"2":{"117":1}}],["dbus",{"2":{"12":1}}],["dbb5928d",{"2":{"12":1}}],["dc90abb0",{"2":{"12":1}}],["dce04be8",{"2":{"12":1}}],["d236fae5",{"2":{"12":1}}],["d25df0c9",{"2":{"12":1}}],["d96e819e",{"2":{"12":1}}],["d9f16b24",{"2":{"12":1}}],["d8fb68d0",{"2":{"12":1}}],["d8793406",{"2":{"12":1}}],["d8e11817",{"2":{"12":1}}],["d1454406",{"2":{"12":1}}],["d125e4d3",{"2":{"12":1}}],["d1acc4aa",{"2":{"12":1}}],["david",{"2":{"137":1}}],["dash",{"2":{"69":1,"70":1}}],["dates",{"2":{"12":1}}],["dataloader",{"2":{"86":11}}],["data",{"0":{"88":1},"2":{"69":1,"70":1,"83":1,"86":4,"88":5,"121":1}}],["datavalueinterfaces",{"2":{"12":1}}],["datastructures",{"2":{"12":1}}],["dataapi",{"2":{"12":1}}],["dad2f222",{"2":{"12":1}}],["daee34ce",{"2":{"12":1}}],["damages",{"2":{"9":1}}],["d38c429a",{"2":{"12":1}}],["d360d2e6",{"2":{"12":1}}],["doi",{"2":{"147":1}}],["doing",{"2":{"137":1}}],["dormand",{"2":{"138":1}}],["dopri6",{"2":{"137":1,"138":1}}],["doproject",{"2":{"69":1,"70":1,"118":1}}],["dots",{"2":{"116":1}}],["dof",{"2":{"115":2}}],["dofs",{"2":{"115":1,"116":4}}],["downside",{"2":{"92":1}}],["downloads",{"2":{"12":1}}],["dodissipation",{"2":{"58":1,"59":1,"60":8,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["done",{"2":{"98":1}}],["don",{"2":{"43":1}}],["double",{"2":{"43":2,"109":2}}],["does",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"86":3,"99":1}}],["domain",{"2":{"13":1,"19":1,"43":1,"49":1,"100":2,"115":1,"116":1,"122":2,"134":1}}],["do",{"2":{"9":1,"43":1,"49":2,"51":2,"55":3,"57":3,"60":2,"61":2,"92":1,"121":1}}],["docopy",{"2":{"120":1}}],["docolorbar",{"2":{"26":1,"28":1,"52":1,"54":1}}],["documentervitepress",{"2":{"12":1}}],["documentercitations",{"2":{"12":1}}],["documenter",{"2":{"12":1}}],["documentation",{"2":{"5":1,"9":1,"112":1}}],["docstringextensions",{"2":{"12":1}}],["docs",{"2":{"5":1,"12":1,"60":1,"62":1,"69":1}}],["døving",{"2":{"9":1}}],["diagonally",{"2":{"139":1}}],["diagonal",{"2":{"126":2}}],["diag",{"2":{"111":1}}],["diameter",{"2":{"15":1,"18":1,"19":1,"21":1}}],["dit",{"2":{"93":3}}],["divide",{"2":{"134":1}}],["divided",{"2":{"43":1,"101":1,"126":1,"137":1}}],["dividing",{"2":{"123":1}}],["divoftensor",{"2":{"110":1}}],["div",{"2":{"98":7,"110":1}}],["divergence",{"2":{"8":2,"90":2,"97":3,"98":4,"99":2,"100":1,"103":2,"110":5,"111":3,"118":1,"123":1,"126":2,"127":4,"134":2,"135":2,"136":1,"137":2}}],["digits",{"2":{"43":1}}],["dimensionless",{"2":{"117":1,"132":1}}],["dimensions",{"2":{"110":1,"122":1}}],["dimension",{"2":{"60":12,"87":8,"93":2,"97":3,"98":2,"100":1,"110":3,"115":1,"116":4,"122":2,"125":1}}],["dimensionalization",{"2":{"117":1,"132":1}}],["dimensional",{"2":{"43":1,"110":1,"116":1,"147":2}}],["dims",{"2":{"55":1,"57":1,"60":1,"61":1}}],["dim",{"2":{"15":6,"18":6,"19":7,"21":7,"26":4,"28":4,"29":4,"31":4,"39":2,"42":2,"43":2,"45":1,"46":1,"48":1,"49":8,"51":8,"52":4,"54":4,"55":2,"57":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":2,"69":6,"70":6,"73":3,"76":3,"117":1,"132":1}}],["diff",{"2":{"110":1}}],["diffusive",{"2":{"110":3,"123":1}}],["diffusion",{"2":{"8":3,"97":6,"99":2,"110":8,"120":1,"126":2,"135":2}}],["differences",{"2":{"131":1}}],["difference",{"2":{"123":1,"135":1}}],["differentiability",{"2":{"112":1}}],["differentiable",{"2":{"89":1,"90":4,"91":2,"110":21,"111":3,"115":3,"147":1}}],["differentiation",{"0":{"90":1,"92":1},"1":{"91":1,"93":1}}],["differentiating",{"0":{"89":1},"1":{"90":1,"91":1,"92":1,"93":1},"2":{"93":1}}],["differentiated",{"2":{"134":1}}],["differentiate",{"2":{"86":1,"91":1,"93":2}}],["differentially",{"2":{"147":1}}],["differentialequations",{"2":{"112":1,"134":1}}],["differential",{"2":{"43":1,"112":1,"134":1}}],["different",{"2":{"43":5,"62":1,"64":1,"69":1,"98":1,"109":2,"129":1}}],["diffeqbase",{"2":{"12":1}}],["diffrules",{"2":{"12":1}}],["diffresults",{"2":{"12":1}}],["discussed",{"2":{"112":1}}],["discretize",{"2":{"134":1}}],["discretized",{"2":{"87":1,"134":2}}],["discretizing",{"2":{"127":1}}],["discretization",{"0":{"122":1,"123":1,"125":1,"134":1},"1":{"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"101":1,"122":2,"125":4,"136":1,"137":1,"147":2}}],["discretizations",{"2":{"83":1,"126":1,"147":1}}],["discretely",{"2":{"127":1}}],["discrete",{"0":{"127":1,"128":1},"1":{"129":1,"130":1},"2":{"83":1,"85":1,"110":1,"111":1,"112":1,"122":2,"123":4,"126":3,"127":8,"131":1,"134":3,"137":1}}],["diss",{"2":{"110":2}}],["dissipation",{"2":{"8":2,"22":1,"32":1,"110":9,"147":1}}],["distance",{"2":{"43":1,"116":1}}],["distribution",{"2":{"64":1}}],["distributions",{"2":{"12":1}}],["distributed",{"2":{"12":1,"15":1,"19":1,"49":1}}],["distribute",{"2":{"9":1}}],["display",{"2":{"121":3}}],["displayupdates",{"2":{"86":2,"121":1}}],["displayref",{"2":{"86":1}}],["displayed",{"2":{"77":1,"121":2}}],["displayfig",{"2":{"23":2,"25":2,"41":2,"42":2,"74":1,"76":1,"86":1,"121":1}}],["dispatchdoctor",{"2":{"12":1}}],["disk",{"2":{"15":3,"18":3,"19":3,"21":3,"49":4,"51":4}}],["dirk",{"2":{"139":2,"142":1}}],["dirichlet",{"2":{"43":1,"98":1,"102":1,"115":1,"127":2,"134":1}}],["dirichletbc",{"2":{"8":1,"15":2,"18":1,"19":1,"21":1,"26":3,"28":3,"29":3,"31":3,"43":4,"45":4,"46":4,"48":4,"49":1,"51":1,"52":1,"54":1,"58":6,"59":6,"60":44,"61":6,"62":4,"63":4,"64":6,"65":6,"98":6,"99":1,"115":2}}],["dir",{"2":{"19":2,"21":2,"26":2,"28":2,"29":2,"31":2,"34":1,"36":1,"43":2,"45":2,"46":2,"48":2,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"58":2,"59":2,"60":1,"61":1,"62":1,"63":1,"64":2,"65":2,"66":2,"68":2,"69":1,"70":1,"74":1,"76":1,"121":1}}],["directly",{"2":{"112":1,"127":1,"134":1}}],["direction",{"2":{"110":1,"116":6,"117":1,"132":1}}],["directbuf",{"2":{"93":1}}],["directory",{"2":{"19":1,"26":1,"29":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"69":1}}],["direct",{"2":{"8":1,"52":1,"54":1,"58":1,"59":1,"64":1,"65":1,"93":7,"94":2,"95":1,"109":1,"111":3,"147":2}}],["deep",{"2":{"147":1}}],["details",{"2":{"136":1}}],["determined",{"2":{"121":1,"127":1}}],["determines",{"2":{"43":1}}],["detectable",{"2":{"5":1}}],["detected",{"2":{"4":1}}],["derived",{"2":{"125":2}}],["derive",{"2":{"123":1}}],["derivation",{"2":{"112":1}}],["derivative",{"2":{"93":1,"123":2}}],["derivatives",{"2":{"19":1,"103":1,"123":1,"131":1}}],["denoted",{"2":{"122":1}}],["denotes",{"2":{"116":1}}],["describe",{"2":{"100":1}}],["desired",{"2":{"94":1,"109":1}}],["degrees",{"2":{"87":1,"99":2,"123":1}}],["decomposition",{"2":{"111":1,"135":1}}],["decollocate",{"2":{"84":1}}],["decaying",{"0":{"22":1,"32":1},"1":{"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1},"2":{"22":1,"32":1,"147":1}}],["deac9b47",{"2":{"12":1}}],["dealings",{"2":{"9":1}}],["deal",{"2":{"9":1}}],["de0858da",{"2":{"12":1}}],["delimitedfiles",{"2":{"12":1}}],["delaunaytriangulation",{"2":{"12":1}}],["definite",{"2":{"135":1}}],["definition",{"2":{"134":2}}],["definitions",{"2":{"122":1}}],["defined",{"2":{"92":1,"106":1,"107":1,"112":1,"121":1,"123":1,"129":1,"130":1,"131":1,"134":1,"135":1}}],["define",{"2":{"39":1,"60":2,"93":1,"122":1,"123":1,"130":1,"134":1}}],["definesingletons",{"2":{"12":1}}],["defaults",{"2":{"117":1}}],["default",{"2":{"3":1,"8":1,"11":1,"33":1,"36":1,"43":2,"89":1,"90":1,"91":1,"93":1,"111":2,"112":1,"121":3}}],["deviation",{"2":{"133":1}}],["device",{"2":{"43":2,"86":4,"120":1}}],["dev",{"2":{"7":1}}],["deved",{"2":{"5":1}}],["develop",{"2":{"5":1,"101":1}}],["developed",{"2":{"5":1}}],["development",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"4":1,"112":1}}],["dedicated",{"2":{"5":1}}],["depending",{"2":{"95":1,"99":1}}],["depend",{"2":{"60":1,"98":1}}],["dependent",{"2":{"147":1}}],["dependencies",{"2":{"5":1,"82":1}}],["depended",{"2":{"7":1}}],["depends",{"2":{"5":1}}],["mte22",{"2":{"137":1,"143":1}}],["mvi+ym",{"2":{"137":1}}],["mv~+ym",{"2":{"136":1}}],["mv¯=0",{"2":{"83":1}}],["m",{"2":{"83":3,"84":1,"98":2,"110":2,"126":1,"127":1,"135":1,"136":1,"147":5}}],["mp4",{"2":{"58":1,"59":1,"64":1,"65":1,"121":1}}],["mu0+ym",{"2":{"137":1}}],["mu+ym=0",{"2":{"134":1}}],["muh+ym=0",{"2":{"126":1}}],["mutation",{"2":{"90":1,"92":1}}],["mutating",{"2":{"90":2,"91":1,"92":2,"93":4,"134":2}}],["must",{"2":{"87":1,"90":1,"92":1,"95":1,"115":2,"127":1}}],["mu¯=0",{"2":{"83":1}}],["mu=0",{"2":{"83":1}}],["much",{"2":{"43":1}}],["multiplier",{"2":{"127":1}}],["multiple",{"2":{"5":1,"72":1,"94":1,"110":1,"111":1,"121":1}}],["multi",{"2":{"117":1}}],["multithreaded",{"2":{"94":1}}],["multiactuator",{"2":{"49":1,"51":1}}],["muladdmacro",{"2":{"12":1}}],["mkpath",{"2":{"69":1,"70":1}}],["mkv",{"2":{"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["mkl",{"2":{"12":1}}],["m`",{"2":{"12":1}}],["mbedtls",{"2":{"12":1}}],["mmap",{"2":{"12":1}}],["miscellaneous",{"0":{"143":1}}],["missings",{"2":{"12":1}}],["midpoint",{"2":{"143":1}}],["mid22",{"2":{"137":1,"143":1}}],["mid",{"2":{"123":2,"131":1}}],["minimal",{"2":{"143":1}}],["minimize",{"2":{"86":2}}],["minimizing",{"2":{"86":2}}],["min",{"2":{"120":2}}],["minus",{"2":{"43":1}}],["mixed",{"0":{"79":1}}],["mixing",{"0":{"52":1},"1":{"53":1,"54":1},"2":{"43":1,"52":1,"62":1,"64":1,"109":1}}],["microcollections",{"2":{"12":1}}],["mit",{"2":{"9":1}}],["media",{"2":{"147":1}}],["mechanics",{"2":{"147":1}}],["mech",{"2":{"147":1}}],["mesh",{"2":{"116":1,"147":1}}],["meshio",{"2":{"12":1}}],["metal",{"2":{"94":1}}],["methods",{"0":{"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"134":2,"135":2,"137":2,"147":4}}],["method",{"0":{"135":1,"136":1},"2":{"15":1,"16":1,"18":1,"19":1,"21":1,"43":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":2,"69":1,"85":2,"86":3,"88":1,"91":3,"93":1,"120":2,"134":14,"135":2,"136":2,"137":6,"143":2}}],["meet",{"2":{"92":1}}],["meaning",{"2":{"92":1}}],["means",{"2":{"89":1,"123":1}}],["mean",{"2":{"55":1,"57":1,"86":1,"133":1}}],["meanplot",{"2":{"55":2,"57":2}}],["memory",{"2":{"43":1,"90":1,"110":1,"116":2,"137":1}}],["merchantability",{"2":{"9":1}}],["merge",{"2":{"9":1}}],["mlutils",{"2":{"12":1}}],["mlstyle",{"2":{"12":1}}],["mldatadevices",{"2":{"12":1}}],["momemtum",{"2":{"103":1}}],["momentum",{"2":{"8":1,"66":1,"100":1,"110":4,"112":1,"123":2,"125":1,"126":2,"127":3,"132":1}}],["more",{"2":{"102":1,"112":2}}],["motions",{"2":{"95":2}}],["most",{"2":{"89":2,"90":1,"92":1}}],["mosaicviews",{"2":{"12":1}}],["move",{"2":{"120":1}}],["moved",{"2":{"86":1}}],["movement",{"2":{"46":1}}],["moving",{"2":{"43":2,"46":1}}],["mozillacacerts",{"2":{"12":1}}],["modeling",{"2":{"112":1,"147":1}}],["modelling",{"2":{"84":1,"147":1}}],["models",{"0":{"81":1,"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"95":4,"147":2}}],["model",{"2":{"52":1,"60":6,"83":3,"84":2,"86":4,"87":3,"93":1,"95":1,"97":1,"98":1,"110":2,"117":1}}],["modeled",{"2":{"13":1,"19":1,"49":1}}],["moderate",{"2":{"43":1}}],["moderngl",{"2":{"12":1}}],["mode",{"2":{"12":1,"82":1,"89":1}}],["modify",{"2":{"9":1}}],["modulename",{"2":{"7":1}}],["module",{"0":{"84":1},"2":{"7":1,"84":1}}],["modules",{"2":{"4":1}}],["macart",{"2":{"147":1}}],["machine",{"2":{"147":1}}],["macrotools",{"2":{"12":1}}],["masks",{"2":{"133":1}}],["mass",{"2":{"100":1,"123":1,"125":1,"126":2,"134":5}}],["margin",{"2":{"133":1}}],["marks",{"2":{"90":1}}],["marked",{"2":{"12":1}}],["markdown",{"2":{"12":1}}],["markdownast",{"2":{"12":1}}],["major",{"2":{"124":2}}],["made",{"2":{"94":1,"123":1,"135":1}}],["maxiter",{"2":{"111":1,"134":1,"137":1}}],["maximum",{"2":{"97":1,"98":1,"120":1}}],["max",{"2":{"58":1,"59":1,"60":1,"61":1,"64":1,"65":1,"116":1}}],["maps",{"2":{"122":1}}],["map",{"2":{"49":1,"51":1}}],["mappedarrays",{"2":{"12":1}}],["main",{"2":{"15":2,"60":4,"69":1}}],["make",{"2":{"66":1,"90":1,"91":1,"93":2,"94":1}}],["makes",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"111":1}}],["makiecore",{"2":{"12":1}}],["makie",{"2":{"12":1,"14":1,"19":1,"23":1,"26":1,"29":1,"38":1,"43":1,"52":1,"55":1,"66":1,"121":1}}],["may",{"2":{"12":1,"20":1,"24":1,"27":1,"30":1,"44":2,"47":1,"50":1,"53":1,"56":1,"67":1,"95":2,"109":1,"120":1,"134":2,"137":1}}],["many",{"2":{"90":1,"112":1}}],["manyforce",{"2":{"49":2,"51":2}}],["manualmemory",{"2":{"12":1}}],["manifest",{"2":{"12":2}}],["manager",{"2":{"3":1}}],["mathematics",{"2":{"147":1}}],["mathtexengine",{"2":{"12":1}}],["matlab",{"2":{"121":1,"124":1,"137":1}}],["matrices",{"0":{"96":1,"98":1},"1":{"97":1,"98":1,"99":1},"2":{"94":1,"96":1,"97":5,"98":1,"110":1}}],["matrix",{"0":{"126":1},"2":{"8":1,"58":1,"64":1,"93":2,"96":3,"97":5,"98":5,"99":13,"109":1,"111":3,"126":4,"127":2,"135":3,"137":1}}],["mat",{"2":{"8":10,"97":12,"98":2,"99":19}}],["~",{"2":{"4":1}}],["smith",{"2":{"147":1}}],["smatrixes",{"2":{"110":1}}],["smagtensor",{"2":{"110":1}}],["smagorinsky",{"2":{"8":1,"110":5}}],["smallest",{"2":{"95":2}}],["small",{"2":{"43":1}}],["s^2",{"2":{"138":1}}],["sdirk34",{"2":{"137":1,"139":1}}],["ssp43",{"2":{"137":1,"138":2}}],["ssp42",{"2":{"137":1,"138":2}}],["ssp33",{"2":{"137":1,"138":2}}],["ssp22",{"2":{"137":1,"138":2}}],["ssp104",{"2":{"137":1,"138":2}}],["ssp",{"0":{"145":1},"2":{"137":1,"138":2,"139":3}}],["skew",{"2":{"123":1}}],["skip",{"2":{"112":1,"121":1}}],["snapshotsaver",{"2":{"121":3}}],["sleeping",{"2":{"121":1}}],["sleeptime",{"2":{"121":2}}],["slept",{"2":{"121":1}}],["slopeoffset",{"2":{"121":1}}],["slope",{"2":{"121":2}}],["sloperange",{"2":{"121":1}}],["slower",{"2":{"93":1}}],["slow",{"2":{"90":1}}],["slip",{"2":{"111":1,"115":1}}],["s2+r2",{"2":{"110":2}}],["s",{"2":{"92":2,"97":1,"110":1,"116":4,"121":6,"137":4,"138":4,"139":2,"144":3,"147":2}}],["squares",{"2":{"129":1}}],["squared",{"2":{"86":1,"110":1}}],["sqrt",{"2":{"55":1,"57":1,"69":2,"70":2}}],["suitable",{"2":{"135":1}}],["suitesparse",{"2":{"12":2}}],["success",{"2":{"112":1}}],["such",{"2":{"43":1,"94":1,"98":1,"103":1,"108":2,"109":2,"116":1,"120":1,"123":1,"134":1,"137":1}}],["surface",{"2":{"101":1,"147":1}}],["sure",{"2":{"94":1}}],["sufficient",{"2":{"95":1}}],["supporting",{"2":{"94":1}}],["supports",{"2":{"94":1,"132":1}}],["support",{"0":{"94":1},"2":{"109":1}}],["supported",{"2":{"89":1,"92":1}}],["summing",{"2":{"129":1}}],["summand",{"2":{"121":7}}],["sum",{"2":{"52":1,"54":1,"55":1,"57":1,"60":6,"61":6,"69":2,"70":2,"91":2,"110":1,"111":1,"121":4}}],["subgrid",{"2":{"147":1}}],["substep",{"2":{"137":1}}],["substantial",{"2":{"9":1}}],["subtract",{"2":{"110":2}}],["subtypes",{"2":{"85":1}}],["sub",{"2":{"95":4,"134":2,"137":2,"147":1}}],["subject",{"2":{"9":1,"134":1}}],["sublicense",{"2":{"9":1}}],["she",{"2":{"126":1}}],["shearlayer2d",{"2":{"66":1,"68":1}}],["shear",{"0":{"66":1},"1":{"67":1,"68":1},"2":{"66":1}}],["shgit",{"2":{"83":1}}],["should",{"2":{"43":3,"46":2,"60":1,"85":1,"109":1,"110":3,"111":1,"115":1,"121":1}}],["short",{"2":{"19":2}}],["showmax",{"2":{"121":1}}],["showdt",{"2":{"121":1}}],["showt",{"2":{"121":1}}],["showiter",{"2":{"121":1}}],["showspeed",{"2":{"121":1}}],["shows",{"2":{"112":1}}],["show",{"2":{"91":1,"121":1}}],["showoff",{"2":{"12":1}}],["showcases",{"2":{"12":1}}],["shaped",{"2":{"97":1}}],["shadd",{"2":{"82":1}}],["shaderabstractions",{"2":{"12":1}}],["sharedarrays",{"2":{"12":1}}],["sha",{"2":{"12":1}}],["shall",{"2":{"9":2}}],["shifted",{"2":{"125":1}}],["shift",{"2":{"6":1}}],["satisfying",{"2":{"143":5}}],["satisfied",{"2":{"142":1}}],["say",{"2":{"134":1}}],["san",{"2":{"121":1,"147":1}}],["sanderse",{"2":{"9":1,"137":3,"147":4}}],["samples",{"2":{"86":1,"87":1}}],["same",{"2":{"43":1,"46":1,"87":1,"91":1,"97":1,"110":1,"111":1,"115":1,"120":1,"122":1,"126":2,"129":1,"135":1,"137":1}}],["saving",{"2":{"43":2,"46":1,"60":1,"62":1}}],["saved",{"2":{"121":2}}],["savefreq",{"2":{"88":1}}],["save",{"2":{"8":1,"21":1,"28":1,"31":1,"45":1,"48":1,"51":1,"54":1,"57":1,"68":1,"69":1,"70":1,"88":1,"121":2}}],["systems",{"2":{"112":1}}],["system",{"2":{"111":1,"134":2,"137":1}}],["syver",{"2":{"9":1}}],["symmetric",{"2":{"115":1,"127":1}}],["symmetricbc",{"2":{"8":1,"58":2,"59":2,"60":16,"61":2,"62":4,"63":4,"64":6,"65":6,"115":2}}],["symmetry",{"2":{"86":5,"110":2,"123":1,"136":1,"147":1}}],["symbol",{"2":{"60":12,"111":1,"122":1}}],["symbolicindexinginterface",{"2":{"12":1}}],["symbols",{"2":{"8":1}}],["scitation",{"2":{"147":1}}],["science",{"2":{"147":1}}],["sciences",{"2":{"147":1}}],["sciml",{"0":{"112":1},"1":{"113":1},"2":{"112":4}}],["scimlstructures",{"2":{"12":1}}],["scimloperators",{"2":{"12":1}}],["scimlbase",{"2":{"12":1,"112":2}}],["schemes",{"2":{"139":2}}],["scheme",{"2":{"122":1,"134":1,"137":1}}],["scatterlines",{"2":{"69":1,"70":1}}],["scatter",{"2":{"55":2,"57":2}}],["scaling",{"2":{"118":1}}],["scalar",{"2":{"92":1,"97":2,"99":2,"103":1,"107":1,"108":1,"110":6,"118":1,"121":1,"122":2,"130":1,"137":1}}],["scalarfield",{"2":{"8":2,"99":3,"118":1}}],["scales",{"2":{"95":2}}],["scaled",{"2":{"43":1}}],["scalewithvolume",{"2":{"8":1,"110":2}}],["scale",{"2":{"8":1,"83":2,"95":1,"110":9,"147":2}}],["screen",{"2":{"61":6,"69":1,"121":2}}],["scratch",{"2":{"12":1}}],["scripts",{"2":{"6":1,"77":1}}],["silvis",{"2":{"147":1}}],["sirignano",{"2":{"147":1}}],["sijsij",{"2":{"110":2}}],["singly",{"2":{"139":1}}],["single",{"2":{"43":4,"109":5}}],["since",{"2":{"40":1,"93":1,"122":1,"123":1,"127":1,"135":1}}],["sin⁡",{"2":{"37":1,"69":1}}],["sin",{"2":{"19":3,"21":3,"52":1,"54":1,"58":1,"59":1,"66":1,"68":1,"69":2,"70":2}}],["sinpi",{"2":{"15":2,"18":2,"39":1,"42":1,"49":2,"51":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":2,"65":2,"73":4,"76":4}}],["sixel",{"2":{"12":1}}],["signeddistancefields",{"2":{"12":1}}],["simplicity",{"2":{"123":1}}],["simply",{"2":{"99":1,"137":1}}],["simple",{"0":{"78":1},"2":{"97":1,"147":1}}],["simpleunpack",{"2":{"12":1}}],["simpletraits",{"2":{"12":1}}],["simulation",{"0":{"95":1},"2":{"83":1,"91":1,"95":2,"113":1,"134":1,"147":2}}],["simulations",{"2":{"5":1,"44":1,"77":1,"82":1,"147":2}}],["similarly",{"2":{"123":1}}],["similar",{"2":{"22":1,"32":1,"93":1,"97":1,"99":1,"110":1,"112":2}}],["simdtypes",{"2":{"12":1}}],["simd",{"2":{"12":1}}],["sizes",{"2":{"87":1,"101":1,"110":2,"126":3}}],["size",{"2":{"11":1,"15":1,"16":1,"17":3,"18":5,"26":2,"27":3,"28":5,"43":1,"49":2,"50":3,"51":5,"52":2,"54":2,"60":4,"61":1,"62":2,"63":2,"64":2,"65":2,"83":1,"87":2,"91":3,"97":1,"98":1,"99":1,"101":1,"116":3,"123":1}}],["sides",{"2":{"115":1}}],["side",{"0":{"93":1},"2":{"8":2,"29":1,"93":9,"110":2,"111":1,"112":3,"113":11,"115":2,"135":2}}],["stuff",{"2":{"133":2}}],["study",{"0":{"69":1},"1":{"70":1}}],["stubs",{"2":{"12":1}}],["stimulate",{"2":{"55":1}}],["storage",{"2":{"124":1,"138":2}}],["storing",{"2":{"110":1}}],["store",{"2":{"93":2,"113":1}}],["stores",{"2":{"92":1,"121":1}}],["stored",{"2":{"40":1,"90":1,"93":1,"97":4,"110":1,"113":1,"117":2,"121":1,"132":1}}],["stokes",{"0":{"100":1,"123":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"93":1,"100":1,"101":1,"105":1,"112":2,"113":3,"134":1,"147":3}}],["steady",{"2":{"26":4,"28":1,"29":4,"31":1,"39":1,"40":1,"43":3,"46":3}}],["stepping",{"2":{"91":1,"121":2,"135":2}}],["steppers",{"2":{"134":2}}],["stepper",{"2":{"8":1,"91":5,"120":2,"121":1,"134":6}}],["steps",{"2":{"43":1,"121":4,"135":1,"137":2}}],["step",{"0":{"26":1,"29":1},"1":{"27":1,"28":1,"30":1,"31":1},"2":{"26":1,"29":1,"43":2,"120":4,"121":5,"134":5,"135":3,"136":1,"137":6}}],["styledstrings",{"2":{"12":1}}],["stretch",{"2":{"116":1}}],["stretched",{"2":{"8":1,"116":4}}],["streamfunction",{"2":{"121":1}}],["stream",{"0":{"108":1,"131":1},"2":{"108":2,"131":3}}],["streamwise",{"2":{"55":3,"57":2}}],["stress",{"2":{"102":1,"110":2}}],["stresses",{"2":{"95":5}}],["structures",{"2":{"64":1}}],["structtypes",{"2":{"12":1}}],["structio",{"2":{"12":1}}],["structarrays",{"2":{"12":1}}],["stripped",{"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["stringencodings",{"2":{"12":1}}],["stridearrayscore",{"2":{"12":1}}],["strain",{"2":{"8":1,"110":6}}],["stable",{"2":{"142":1}}],["stablerngs",{"2":{"12":1}}],["stage",{"2":{"138":2,"139":1,"140":1}}],["stages",{"2":{"137":1}}],["staggered",{"2":{"87":1,"122":1,"129":1,"147":1}}],["staples",{"2":{"121":1,"147":1}}],["stays",{"2":{"103":1,"134":1}}],["stamp",{"2":{"44":1}}],["standard",{"2":{"43":1,"133":1}}],["state",{"2":{"17":3,"18":4,"20":1,"21":1,"24":1,"25":2,"26":3,"27":4,"28":6,"29":3,"30":4,"31":6,"35":1,"36":2,"42":1,"43":4,"44":4,"45":5,"46":3,"47":1,"48":1,"49":1,"50":4,"51":6,"53":1,"54":2,"55":4,"56":4,"57":9,"58":2,"59":3,"60":10,"61":11,"63":1,"64":3,"65":4,"67":4,"68":5,"76":1,"86":3,"87":4,"92":1,"120":4,"121":13}}],["statsfuns",{"2":{"12":1}}],["statsbase",{"2":{"12":1}}],["statsapi",{"2":{"12":1}}],["statistics",{"2":{"12":1}}],["static=false",{"2":{"117":1}}],["staticarrayscore",{"2":{"12":1}}],["staticarrays",{"2":{"12":1}}],["staticarrayinterface",{"2":{"12":1}}],["static",{"2":{"12":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"117":3}}],["status",{"2":{"6":1,"12":2}}],["stackviews",{"2":{"12":1}}],["started",{"0":{"82":1},"2":{"94":1}}],["starting",{"2":{"72":1,"101":1,"134":1,"135":1,"137":1}}],["start",{"2":{"6":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"62":1,"64":1,"66":1,"94":1,"120":1,"121":1,"136":1}}],["startup",{"2":{"4":2,"135":1,"136":1}}],["soria",{"2":{"147":1}}],["sortingalgorithms",{"2":{"12":1}}],["sometimes",{"2":{"96":1}}],["some",{"2":{"87":1,"96":1,"97":1,"102":1,"127":1,"134":1,"136":1}}],["sol",{"2":{"112":2}}],["solving",{"2":{"43":1,"46":1,"86":2,"108":2,"111":1,"112":2,"127":1,"135":1,"136":1}}],["solved",{"2":{"95":1,"121":1,"137":1}}],["solver",{"2":{"69":1,"84":1,"94":2,"109":1,"111":5,"112":1,"113":3,"122":1,"135":1}}],["solvers",{"0":{"111":1,"119":1,"120":1},"1":{"120":1,"121":1},"2":{"8":1,"109":1,"112":6,"147":1}}],["solve",{"0":{"16":1,"34":1,"41":1,"74":1},"2":{"8":1,"16":1,"18":1,"19":2,"21":1,"23":2,"25":1,"26":4,"28":2,"29":4,"31":2,"34":1,"36":1,"41":1,"42":1,"43":2,"45":1,"46":2,"48":1,"49":2,"51":1,"52":2,"54":1,"55":2,"57":1,"58":2,"59":1,"60":2,"61":1,"62":2,"63":1,"64":2,"65":1,"66":2,"68":1,"69":1,"70":1,"74":1,"76":1,"111":2,"112":5,"120":2,"121":1,"134":2,"135":2,"136":1,"137":2}}],["solution",{"2":{"19":1,"20":1,"21":2,"26":1,"27":1,"28":2,"29":1,"30":1,"31":2,"34":2,"36":2,"43":3,"44":2,"45":3,"46":3,"47":1,"48":3,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"66":1,"67":1,"68":2,"69":6,"70":4,"74":2,"76":2,"86":2,"98":1,"121":6}}],["sockets",{"2":{"12":1}}],["so",{"2":{"9":1,"84":1}}],["software",{"2":{"9":9}}],["source",{"2":{"8":1,"9":1,"77":1,"84":5,"85":5,"86":11,"87":9,"88":3,"99":10,"110":52,"111":11,"113":2,"115":14,"116":6,"117":3,"118":5,"120":3,"121":13,"132":1,"133":7,"134":6,"135":1,"136":1,"137":5,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["sources",{"2":{"5":1}}],["src",{"2":{"7":1}}],["segarra",{"2":{"147":1}}],["separate",{"2":{"117":1,"121":1,"132":1}}],["separately",{"2":{"98":1}}],["sensitivity",{"2":{"112":2}}],["section",{"2":{"134":1}}],["sections",{"2":{"5":1}}],["second",{"2":{"110":2,"125":2,"126":1,"135":2,"136":1,"143":2}}],["seaborn",{"2":{"60":2,"61":1}}],["serialization",{"2":{"12":1}}],["setting",{"2":{"116":1,"127":1}}],["settings",{"2":{"72":1}}],["set",{"2":{"86":1,"93":1,"103":1,"121":1,"127":1,"132":1,"137":1}}],["setfield",{"2":{"12":1}}],["setup",{"0":{"15":1,"33":1,"39":1,"73":1,"114":1,"117":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"8":1,"15":3,"16":2,"17":3,"18":8,"19":8,"20":1,"21":9,"23":8,"24":1,"25":8,"26":9,"27":4,"28":13,"29":9,"30":4,"31":13,"33":4,"34":6,"35":1,"36":11,"39":3,"40":1,"41":4,"42":8,"43":11,"44":4,"45":14,"46":10,"47":1,"48":11,"49":10,"50":4,"51":14,"52":9,"53":1,"54":10,"55":12,"56":5,"57":17,"58":12,"59":11,"60":13,"61":12,"62":7,"63":6,"64":13,"65":12,"66":8,"67":4,"68":12,"69":7,"70":7,"73":4,"74":6,"76":10,"84":1,"85":6,"86":4,"87":3,"88":1,"91":6,"93":6,"94":3,"97":12,"98":9,"99":7,"110":49,"111":11,"112":6,"113":6,"115":6,"117":3,"118":8,"120":2,"121":7,"132":3,"133":2,"134":2}}],["sell",{"2":{"9":1}}],["selected",{"2":{"6":1,"77":1}}],["seen",{"2":{"127":1}}],["seems",{"2":{"121":1}}],["seeds",{"2":{"133":1}}],["seed",{"2":{"93":1,"133":2}}],["see",{"2":{"0":1,"12":1,"85":1,"87":1,"96":1,"99":1,"110":2,"116":1,"121":2,"134":2,"136":1,"137":2}}],["springer",{"2":{"147":1}}],["spiteri",{"0":{"145":1}}],["span",{"2":{"112":1}}],["space",{"2":{"111":2,"116":1,"127":1,"137":1}}],["spacing",{"2":{"95":1,"116":1}}],["sparsity",{"2":{"97":1}}],["sparsematrixcsc",{"2":{"97":4,"99":4}}],["sparsearrays",{"2":{"12":1,"97":4,"99":4,"109":1}}],["sparseinversesubset",{"2":{"12":1}}],["sparse",{"0":{"96":1},"1":{"97":1,"98":1,"99":1},"2":{"5":1,"94":1,"96":1,"109":1,"110":1}}],["spatially",{"2":{"134":1}}],["spatial",{"0":{"122":1},"1":{"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1},"2":{"83":1,"87":3,"95":2,"100":2,"101":1,"122":1,"123":1,"131":1}}],["speed",{"2":{"43":1}}],["specialized",{"2":{"94":1,"112":1}}],["specialfunctions",{"2":{"12":1}}],["specifies",{"2":{"117":2,"132":2}}],["specified",{"2":{"43":1,"110":1,"118":1}}],["specification",{"2":{"95":1}}],["specific",{"2":{"22":1,"32":1}}],["specifying",{"2":{"5":1}}],["spectral",{"2":{"8":1,"69":1,"70":1,"73":1,"76":1,"111":3,"133":1}}],["spectrum",{"2":{"8":1,"19":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"31":1,"32":1,"34":1,"35":1,"36":1,"41":2,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":5,"57":4,"66":1,"68":1,"74":1,"75":1,"76":1,"121":4,"133":4}}],["split",{"2":{"133":1}}],["splittablesbase",{"2":{"12":1}}],["splitseed",{"2":{"8":1,"133":1}}],["w",{"2":{"126":1,"147":2}}],["wu",{"2":{"126":1}}],["wray",{"2":{"137":1,"138":1}}],["wray3",{"2":{"137":1,"138":1}}],["wrapper",{"2":{"92":1}}],["wrapped",{"2":{"92":1}}],["wrappedclosure",{"2":{"84":1}}],["wrap",{"2":{"84":1,"92":1}}],["writing",{"2":{"110":1}}],["written",{"2":{"100":1}}],["writes",{"2":{"121":1}}],["write",{"2":{"110":1,"112":1,"122":1,"126":1,"127":1}}],["writevtk",{"2":{"12":1}}],["writer",{"2":{"8":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"121":2}}],["wong",{"0":{"145":1}}],["would",{"2":{"127":2}}],["woodburymatrices",{"2":{"12":1}}],["worrying",{"2":{"95":1}}],["works",{"2":{"109":1}}],["workgroupsize",{"2":{"60":6,"93":1,"97":1,"98":1,"111":2,"117":1}}],["work",{"2":{"12":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"60":1,"62":1,"66":1,"69":1,"92":1,"97":2}}],["word",{"2":{"11":1}}],["well",{"2":{"137":1}}],["welch",{"2":{"122":1,"147":1}}],["webm",{"2":{"121":1}}],["webp",{"2":{"12":1}}],["weights",{"2":{"116":1,"123":1}}],["weight",{"2":{"87":1}}],["weightinitializers",{"2":{"12":1}}],["we",{"2":{"17":1,"19":1,"20":1,"22":1,"23":1,"24":1,"26":3,"27":1,"29":2,"30":1,"32":1,"38":1,"43":10,"44":1,"46":2,"47":1,"50":1,"52":1,"53":1,"55":1,"56":1,"66":2,"67":1,"69":1,"71":1,"83":1,"86":1,"87":1,"92":1,"93":8,"95":1,"96":1,"97":1,"98":2,"100":1,"101":1,"103":1,"112":1,"122":5,"123":3,"124":1,"126":2,"127":2,"129":1,"130":1,"134":6,"135":6,"136":2,"137":5}}],["were",{"2":{"11":1,"12":1}}],["wang",{"2":{"147":1}}],["want",{"2":{"1":1,"95":1}}],["waterlily",{"2":{"110":2}}],["way",{"2":{"92":1,"127":1}}],["wayland",{"2":{"12":2}}],["wavenumber",{"2":{"37":1,"87":2,"118":1,"121":1}}],["was",{"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["walls",{"2":{"26":2,"29":1,"43":1,"46":1}}],["wall",{"2":{"13":1,"19":1,"49":1}}],["warranties",{"2":{"9":1}}],["warranty",{"2":{"9":1}}],["whole",{"2":{"124":1}}],["whom",{"2":{"9":1}}],["while",{"2":{"97":2,"103":1,"110":1,"112":1,"117":1,"125":1,"132":1,"136":1}}],["which",{"2":{"82":1,"83":1,"85":1,"89":1,"92":1,"93":1,"100":1,"112":1,"121":1,"122":1,"123":3,"127":1,"132":1,"134":1,"135":1}}],["why",{"2":{"12":1}}],["when",{"2":{"14":1,"19":1,"26":1,"29":1,"43":4,"46":1,"52":1,"55":1,"66":1,"95":1,"109":1,"115":1,"116":1,"121":1}}],["whether",{"2":{"9":1,"134":2}}],["where",{"2":{"5":1,"37":2,"55":2,"57":2,"83":1,"86":2,"87":3,"99":4,"100":1,"101":1,"102":2,"110":2,"111":1,"112":1,"115":3,"120":1,"121":1,"122":4,"123":1,"125":1,"126":2,"127":1,"132":1,"135":1,"137":2}}],["widths",{"2":{"116":1}}],["widely",{"2":{"89":1}}],["windows",{"2":{"121":1}}],["window",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"86":1}}],["wind",{"2":{"13":1,"19":1,"49":1}}],["will",{"2":{"6":1,"58":1,"64":1,"82":1,"92":2,"94":1,"124":1,"126":1,"127":3,"129":1,"134":2,"137":1}}],["without",{"2":{"9":3,"90":1,"95":2,"97":1,"112":1,"127":3}}],["with",{"0":{"79":1,"80":1,"90":1,"92":1},"1":{"91":1,"93":1},"2":{"4":2,"5":4,"7":2,"9":1,"11":1,"12":4,"15":1,"22":1,"26":2,"29":2,"32":1,"39":1,"43":2,"46":1,"60":2,"62":1,"64":1,"69":2,"70":1,"72":1,"77":1,"83":2,"86":2,"87":1,"90":2,"91":2,"92":3,"93":3,"94":3,"97":5,"99":3,"101":1,"110":6,"111":2,"115":1,"116":3,"118":2,"120":3,"121":1,"123":6,"125":2,"127":2,"131":3,"134":3,"137":4,"147":3}}],["journal",{"2":{"147":5}}],["joinpath",{"2":{"19":1,"20":1,"21":2,"26":1,"27":1,"28":2,"29":1,"30":1,"31":2,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"58":2,"59":2,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":2,"69":2,"70":2}}],["jacobian",{"2":{"137":3}}],["j",{"2":{"122":3,"124":1,"147":9}}],["jeong",{"2":{"110":1,"147":1}}],["jets",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"55":1}}],["jul",{"2":{"147":1}}],["julialiiia3",{"2":{"141":1}}],["julialiiia2",{"2":{"141":1}}],["julialastdimcontract",{"2":{"110":1}}],["julialaplacian",{"2":{"99":1,"110":2}}],["julialang",{"2":{"11":1}}],["juliaheun33",{"2":{"143":1}}],["juliahem5",{"2":{"140":1}}],["juliahem3bs",{"2":{"140":1}}],["juliahem3",{"2":{"140":1}}],["juliaheatmap",{"2":{"40":1}}],["juliaissps3",{"2":{"139":1}}],["juliaisspm2",{"2":{"139":1}}],["juliainterpolate",{"2":{"110":4}}],["juliainflow",{"2":{"15":1}}],["juliawray3",{"2":{"138":1}}],["juliawrappedclosure",{"2":{"84":1}}],["julia>",{"2":{"116":1}}],["juliajulia>",{"2":{"116":1}}],["juliaode",{"2":{"134":1}}],["juliaobservespectrum",{"2":{"121":1}}],["juliaobservefield",{"2":{"121":1}}],["juliaoffset",{"2":{"115":2}}],["juliaoutputs",{"2":{"20":1,"24":2,"35":1,"41":3,"47":1,"53":1,"56":1,"60":2,"67":1,"75":2}}],["juliaoutdir",{"2":{"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"69":1}}],["juliamte22",{"2":{"143":1}}],["juliamid22",{"2":{"143":1}}],["juliamax",{"2":{"116":1}}],["juliamaximum",{"2":{"98":1}}],["juliamomentum",{"2":{"110":2}}],["juliakinetic",{"2":{"110":2}}],["juliagl3",{"2":{"141":1}}],["juliagl2",{"2":{"141":1}}],["juliagl1",{"2":{"141":1}}],["juliagrid",{"2":{"116":1}}],["juliagravity",{"2":{"110":2}}],["juliagetval",{"2":{"133":1}}],["juliagetoffset",{"2":{"133":1}}],["juliaget",{"2":{"110":1,"120":2,"133":2}}],["juliagcnn",{"2":{"87":1}}],["juliaeig2field",{"2":{"110":2}}],["juliaenzyme",{"2":{"93":1}}],["juliaavg",{"2":{"110":1}}],["juliaapply",{"2":{"115":6}}],["juliaapplypressure",{"2":{"110":2}}],["juliaapplybodyforce",{"2":{"110":2}}],["juliaabstract",{"2":{"85":1,"115":1,"134":1,"137":1}}],["juliaqfield",{"2":{"110":2}}],["juliaplotgrid",{"2":{"133":1}}],["juliapsolver",{"2":{"111":4}}],["juliapoisson",{"2":{"111":2}}],["juliapad",{"2":{"99":2}}],["juliaparams",{"2":{"93":1}}],["juliaprocessor",{"2":{"121":1}}],["juliaprocessors",{"2":{"43":1,"60":1}}],["juliaproject",{"2":{"111":2}}],["juliapressure",{"2":{"111":2}}],["juliapressuregradient",{"2":{"97":1,"99":1,"110":2}}],["juliavtk",{"2":{"121":1}}],["juliavelocityfield",{"2":{"118":1}}],["juliavectorfield",{"2":{"118":1}}],["juliavecrot2",{"2":{"87":1}}],["juliavorticity",{"2":{"110":2}}],["juliavolume",{"2":{"99":1}}],["juliavariables",{"2":{"12":1}}],["juliark44p2",{"2":{"143":1}}],["juliark44c23",{"2":{"143":1}}],["juliark44c2",{"2":{"143":1}}],["juliark44",{"2":{"143":1}}],["juliark33p2",{"2":{"143":1}}],["juliark33c2",{"2":{"143":1}}],["juliark56",{"2":{"138":1}}],["juliariia3",{"2":{"141":1}}],["juliariia2",{"2":{"141":1}}],["juliariia1",{"2":{"141":1}}],["juliaria3",{"2":{"141":1}}],["juliaria2",{"2":{"141":1}}],["juliaria1",{"2":{"141":1}}],["juliaright",{"2":{"113":1}}],["juliarssps3",{"2":{"138":1}}],["juliarssps2",{"2":{"138":1}}],["juliarunge",{"2":{"134":1}}],["juliarandom",{"2":{"118":1}}],["juliarot2stag",{"2":{"87":1}}],["juliarot2",{"2":{"87":2}}],["juliareconstruct",{"2":{"85":2}}],["juliare",{"2":{"19":1,"26":1,"29":1,"43":1,"46":1,"52":1,"55":1,"66":1,"69":1}}],["juliadsrk3",{"2":{"144":1}}],["juliadsrk2",{"2":{"144":1}}],["juliadsso2",{"2":{"144":1}}],["juliadopri6",{"2":{"138":1}}],["juliadefault",{"2":{"111":1}}],["juliadecollocate",{"2":{"84":1}}],["juliadfield",{"2":{"110":2}}],["juliadivoftensor",{"2":{"110":1}}],["juliadivergence",{"2":{"97":1,"99":1,"110":2}}],["juliadissipation",{"2":{"110":4}}],["juliadiffusion",{"2":{"97":1,"99":1,"110":2}}],["juliaddudt",{"2":{"93":1}}],["juliad",{"2":{"66":1}}],["juliafe11",{"2":{"138":1}}],["juliaf",{"2":{"93":1,"112":1}}],["juliafno",{"2":{"87":1}}],["juliafunction",{"2":{"55":1,"60":2,"121":1}}],["juliafiltersaver",{"2":{"88":1}}],["juliafieldsaver",{"2":{"121":1}}],["juliafield",{"2":{"64":1}}],["juliafieldplot",{"2":{"24":1,"27":3,"30":3,"44":3,"56":4,"64":1,"67":3}}],["juliafig",{"2":{"17":3,"50":3,"69":1}}],["juliaδu",{"2":{"52":1}}],["juliacn22",{"2":{"143":1}}],["juliacnn",{"2":{"87":1}}],["juliachc5",{"2":{"142":1}}],["juliachc3",{"2":{"142":1}}],["juliachcons3",{"2":{"142":1}}],["juliachdirk3",{"2":{"142":1}}],["juliacosine",{"2":{"116":1}}],["juliaconvectiondiffusion",{"2":{"110":1}}],["juliaconvection",{"2":{"110":4}}],["juliacollocate",{"2":{"84":1}}],["juliacreate",{"2":{"49":1,"84":1,"86":9,"88":2,"113":1,"134":1}}],["juliacx",{"2":{"19":1}}],["juliax",{"2":{"19":1,"26":1,"29":1,"46":1}}],["juliaxc",{"2":{"15":1}}],["juliabe11",{"2":{"139":1}}],["juliabc",{"2":{"97":1}}],["juliaboundary",{"2":{"19":1,"49":1,"115":1}}],["juliabox",{"2":{"17":1}}],["juliabackend",{"2":{"19":1,"26":1,"29":1,"33":1,"43":1,"46":1,"49":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"72":1}}],["juliatimestep",{"2":{"134":2}}],["juliatimelogger",{"2":{"121":1}}],["juliatanh",{"2":{"116":1}}],["juliatensorbasis",{"2":{"110":2}}],["juliatemperaturefield",{"2":{"118":1}}],["juliatemperature",{"2":{"58":1,"60":1,"62":1,"64":1,"117":1,"132":1}}],["juliatotal",{"2":{"110":1}}],["juliatrainepoch",{"2":{"86":1}}],["juliatrain",{"2":{"86":1}}],["juliatlims",{"2":{"43":1}}],["juliat",{"2":{"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"71":1}}],["juliasdirk34",{"2":{"139":1}}],["juliassp104",{"2":{"138":1}}],["juliassp43",{"2":{"138":1}}],["juliassp42",{"2":{"138":1}}],["juliassp33",{"2":{"138":1}}],["juliassp22",{"2":{"138":1}}],["juliasplitseed",{"2":{"133":1}}],["juliaspectral",{"2":{"133":1}}],["juliasnapshotsaver",{"2":{"121":1}}],["juliasolve",{"2":{"120":1}}],["juliasolution",{"2":{"69":1}}],["juliascalarfield",{"2":{"118":1}}],["juliascalewithvolume",{"2":{"110":2}}],["juliasmagtensor",{"2":{"110":1}}],["juliasmagorinsky",{"2":{"110":1}}],["juliastretched",{"2":{"116":1}}],["juliastruct",{"2":{"85":2,"87":2,"110":1,"115":4,"116":1,"117":1,"135":1,"136":1,"137":3}}],["juliastate",{"2":{"16":1,"23":1,"26":1,"29":1,"34":1,"41":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"74":1}}],["juliasave",{"2":{"20":1,"27":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"69":1,"121":1}}],["juliasetup",{"2":{"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"60":1,"66":1,"98":1,"117":1,"132":1}}],["julianssp53",{"2":{"145":1}}],["julianssp33",{"2":{"145":1}}],["julianssp32",{"2":{"145":1}}],["julianssp21",{"2":{"145":1}}],["julian",{"2":{"15":1,"23":1,"39":1,"43":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1,"66":1,"73":1}}],["juliaunit",{"2":{"110":1}}],["juliauzero",{"2":{"98":1}}],["juliau",{"2":{"26":1,"29":1,"43":1,"46":1,"55":1,"73":1}}],["juliaustart",{"2":{"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"58":1,"60":1,"62":1,"64":1}}],["juliausing",{"2":{"11":1,"12":1,"14":1,"18":1,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"32":1,"36":1,"38":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"71":1,"76":1,"91":1,"93":1,"94":1,"97":2,"98":1,"112":1}}],["juliaup",{"0":{"3":1},"2":{"3":3}}],["julia",{"0":{"11":1},"2":{"3":2,"4":2,"5":3,"6":3,"11":2,"19":1,"26":1,"29":1,"35":2,"43":1,"44":1,"46":1,"55":1,"58":1,"64":1,"69":1,"72":3,"77":1,"82":2,"89":2,"90":1,"94":2,"122":1,"124":1}}],["judiciously",{"2":{"43":1,"125":1,"137":1}}],["just",{"2":{"23":1,"38":1,"40":1,"115":1}}],["jpegturbo",{"2":{"12":2}}],["jsonschema",{"2":{"12":1}}],["json3",{"2":{"12":1}}],["json",{"2":{"12":1}}],["jls",{"2":{"109":2}}],["jll",{"2":{"12":96}}],["jllwrappers",{"2":{"12":1}}],["jld2",{"2":{"12":1}}],["jl",{"0":{"8":1},"2":{"4":2,"7":1,"12":2,"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"60":2,"61":1,"62":2,"63":1,"65":1,"68":1,"69":2,"70":1,"76":1,"77":1,"83":1,"89":2,"90":1,"92":1,"94":6,"110":2,"111":1,"112":1,"132":1,"134":1}}],["1δti−θd",{"2":{"135":2}}],["1δti−",{"2":{"135":1}}],["1−θ",{"2":{"135":5}}],["1−sn1−sn",{"2":{"116":1}}],["1−s1−sn",{"2":{"116":1}}],["1−cos⁡",{"2":{"116":1}}],["1|o|∫∂ou⋅ndγ=0",{"2":{"101":1}}],["1\\tδt",{"2":{"62":1}}],["1\\titertime",{"2":{"16":10,"62":1}}],["1e3",{"2":{"73":1,"76":1,"97":1}}],["1e6",{"2":{"62":1,"63":1,"64":1,"65":1}}],["1e7",{"2":{"55":1,"57":1,"58":1,"59":1,"60":1,"61":1}}],["1e",{"2":{"39":1,"41":1,"42":2,"43":1,"45":1,"46":1,"48":1,"58":1,"59":1,"60":1,"61":1,"64":1,"65":1,"74":1,"76":1,"112":2,"133":1}}],["1e83bf80",{"2":{"12":1}}],["1a1011a3",{"2":{"12":1}}],["1a297f60",{"2":{"12":1}}],["1+β",{"2":{"136":2}}],["1+2",{"2":{"12":1}}],["1+1",{"2":{"12":2}}],["1+0",{"2":{"12":6}}],["1d",{"2":{"116":1}}],["1d63c593",{"2":{"12":1}}],["1d5cc7b8",{"2":{"12":1}}],["1d0040c9",{"2":{"12":1}}],["1cfade01",{"2":{"12":1}}],["1c621080",{"2":{"12":1}}],["1fd47b50",{"2":{"12":1}}],["1fa38f19",{"2":{"12":1}}],["143",{"2":{"147":1}}],["14343522277923373",{"2":{"112":1}}],["14162539765649912",{"2":{"112":1}}],["14125514734050593",{"2":{"112":1}}],["14257484181118496",{"2":{"112":1}}],["14249693421680834",{"2":{"112":1}}],["1428955588958576",{"2":{"112":1}}],["1472",{"2":{"147":1}}],["14712492153548007",{"2":{"112":1}}],["14717056425114167",{"2":{"112":1}}],["14704223379031514",{"2":{"112":1}}],["14947336059990066",{"2":{"112":1}}],["1498402974886133",{"2":{"112":1}}],["14407842680583244",{"2":{"112":1}}],["14420257362155195",{"2":{"112":1}}],["14414083305738165",{"2":{"112":1}}],["14664447091012814",{"2":{"112":1}}],["1485366310428622",{"2":{"112":1}}],["14044702822349744",{"2":{"93":1}}],["1404470282234972",{"2":{"93":2}}],["14a3606d",{"2":{"12":1}}],["14d82f49",{"2":{"12":1}}],["14+1",{"2":{"12":1}}],["14+0",{"2":{"12":1}}],["14",{"2":{"12":4,"93":1,"98":1,"123":1,"125":1,"136":1}}],["188",{"2":{"110":1}}],["18×18",{"2":{"98":1}}],["187",{"2":{"147":1}}],["1875",{"2":{"97":4,"98":4}}],["187b0558",{"2":{"12":1}}],["18a262bb",{"2":{"12":1}}],["189a3867",{"2":{"12":1}}],["18",{"2":{"12":3,"97":2,"98":2,"137":1}}],["1965",{"2":{"147":1}}],["19619839721969912",{"2":{"112":1}}],["1910",{"2":{"147":2}}],["1914dd2f",{"2":{"12":1}}],["195453394721505",{"2":{"112":3}}],["19583831365463097",{"2":{"112":1}}],["19034589506796068",{"2":{"93":1}}],["19034589506796099",{"2":{"93":2}}],["1920929f",{"2":{"60":18}}],["1997",{"2":{"147":1}}],["1995",{"2":{"147":1}}],["199",{"2":{"60":3}}],["1986cc42",{"2":{"12":1}}],["198e06fe",{"2":{"12":1}}],["19eb6ba3",{"2":{"12":1}}],["19",{"2":{"12":2}}],["1063",{"2":{"147":1}}],["10874v1",{"2":{"147":1}}],["1082639a",{"2":{"12":1}}],["1033964431830405",{"2":{"112":3}}],["103787615228544",{"2":{"112":3}}],["1036591177156305",{"2":{"112":3}}],["10389764719909182",{"2":{"112":1}}],["1048628282971928",{"2":{"112":3}}],["105",{"2":{"111":1,"147":1}}],["109",{"2":{"111":1}}],["10\\tδt",{"2":{"62":1}}],["1010980291583543",{"2":{"112":3}}],["101319014302577",{"2":{"112":1}}],["101",{"2":{"60":6,"91":1,"93":9,"111":2,"112":1}}],["1026182098459665",{"2":{"112":3}}],["1024938421686965",{"2":{"112":3}}],["1024",{"2":{"97":2}}],["102×102×2",{"2":{"93":1}}],["102",{"2":{"60":3,"91":2,"93":2}}],["10^4",{"2":{"55":1,"57":1}}],["10^",{"2":{"55":1,"57":1}}],["10726628202190677",{"2":{"112":1}}],["107178\\tδt",{"2":{"23":1}}],["10745b16",{"2":{"12":1}}],["100×100",{"2":{"93":1}}],["1000",{"2":{"29":1,"31":1,"43":1,"45":1,"49":1,"51":1,"55":1,"57":1,"60":2,"61":1,"97":1,"98":1}}],["100",{"2":{"12":1,"15":1,"18":1,"19":1,"21":1,"23":1,"25":1,"29":1,"31":1,"41":2,"42":2,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":2,"54":2,"55":1,"57":1,"58":2,"59":2,"60":11,"61":2,"66":1,"68":1,"74":1,"76":1,"91":1,"93":6,"147":1}}],["10+4",{"2":{"12":1}}],["10+1",{"2":{"12":1}}],["10+0",{"2":{"12":1}}],["10f19ff3",{"2":{"12":1}}],["10",{"2":{"12":15,"15":1,"16":1,"18":1,"19":2,"21":2,"23":3,"25":3,"26":3,"28":3,"29":3,"31":3,"34":5,"36":5,"41":2,"42":2,"43":4,"45":4,"46":3,"48":3,"49":3,"51":3,"52":2,"54":2,"55":5,"57":5,"58":4,"59":4,"60":4,"62":1,"63":1,"64":4,"65":4,"66":2,"68":2,"74":3,"76":3,"93":7,"98":2,"116":1,"147":1}}],["15550653671354817",{"2":{"112":1}}],["15530711497910096",{"2":{"112":1}}],["15566413044616673",{"2":{"112":1}}],["1551333805764159",{"2":{"112":1}}],["15676215114228556",{"2":{"112":1}}],["15627288942074785",{"2":{"112":1}}],["15625",{"2":{"97":4,"98":4}}],["15823848575517419",{"2":{"112":1}}],["15830772883283686",{"2":{"112":1}}],["15478229879117186",{"2":{"112":1}}],["15470156992990525",{"2":{"112":1}}],["15489847988467512",{"2":{"112":1}}],["15442234356989648",{"2":{"112":1}}],["15490284078797595",{"2":{"112":1}}],["1511869228624846",{"2":{"112":1}}],["15140235565122434",{"2":{"112":1}}],["15132900103549865",{"2":{"112":1}}],["15761387899624388",{"2":{"112":1}}],["1537941605127281",{"2":{"112":1}}],["15348060101411037",{"2":{"112":1}}],["15353358777170695",{"2":{"112":1}}],["15399665041844993",{"2":{"112":1}}],["15317663182585173",{"2":{"112":1}}],["15312228527657937",{"2":{"112":1}}],["159",{"2":{"147":1}}],["15987551123188729",{"2":{"112":1}}],["159f3aea",{"2":{"12":1}}],["1525727845682203",{"2":{"112":1}}],["15240233330966635",{"2":{"112":1}}],["15268278547971995",{"2":{"112":1}}],["1520ce14",{"2":{"12":1}}],["1505",{"2":{"147":1}}],["15052392859078634",{"2":{"112":1}}],["1505645261347854",{"2":{"112":1}}],["150",{"2":{"26":2,"27":3,"28":5}}],["15+1",{"2":{"12":1}}],["15",{"2":{"12":6,"66":1,"68":1,"98":1,"121":1,"125":1}}],["13640463537769287",{"2":{"112":1}}],["1371288733000369",{"2":{"112":1}}],["13744136679333582",{"2":{"112":1}}],["13785000188772933",{"2":{"112":1}}],["131",{"2":{"147":1}}],["1317769112643323",{"2":{"112":3}}],["1317d2d5",{"2":{"12":1}}],["13165995622661",{"2":{"112":3}}],["13576237682522638",{"2":{"112":1}}],["13533e5b",{"2":{"12":1}}],["13+1",{"2":{"12":1}}],["13",{"2":{"12":9,"97":1,"122":1}}],["13f3f980",{"2":{"12":1}}],["13072b0f",{"2":{"12":1}}],["1761178",{"2":{"147":1}}],["1702923518797587",{"2":{"112":1}}],["1702736286334392",{"2":{"112":1}}],["17001336497945702",{"2":{"112":1}}],["17237448288502757",{"2":{"112":1}}],["172013485024793e",{"2":{"93":1}}],["1749933043938824",{"2":{"112":1}}],["171d559e",{"2":{"12":1}}],["17",{"2":{"12":10,"29":1,"31":1,"97":7,"98":5,"137":1}}],["1661704881941689",{"2":{"112":1}}],["16666333597637634",{"2":{"112":1}}],["16637975997295137",{"2":{"112":1}}],["16740741888827054",{"2":{"112":1}}],["1674702015560798",{"2":{"112":1}}],["1658978521484009",{"2":{"112":1}}],["16592357051038312",{"2":{"112":1}}],["16563634636437952",{"2":{"112":1}}],["16524854794342847",{"2":{"112":1}}],["16528144072912018",{"2":{"112":1}}],["16525369762875974",{"2":{"112":1}}],["1657913435934261",{"2":{"112":1}}],["16144707846505515",{"2":{"112":1}}],["16864416365228513",{"2":{"112":1}}],["16865471950754676",{"2":{"112":1}}],["16849931844999072",{"2":{"112":1}}],["168+0",{"2":{"12":1}}],["16246408176264088",{"2":{"112":1}}],["16229980382267836",{"2":{"112":1}}],["16279095516406053",{"2":{"112":1}}],["16369222397237182",{"2":{"112":1}}],["163ba53b",{"2":{"12":1}}],["1699656370380011",{"2":{"112":1}}],["16013033730522802",{"2":{"112":1}}],["16087478543160325",{"2":{"112":1}}],["160",{"2":{"12":1,"98":9}}],["16",{"2":{"11":1,"12":4,"55":1,"57":1,"69":1,"70":1,"97":6,"98":12,"136":1}}],["127",{"2":{"147":1}}],["1270edf5",{"2":{"12":1}}],["1225488522672933",{"2":{"112":3}}],["125",{"2":{"97":4,"98":4}}],["124",{"2":{"93":1,"111":2}}],["1289256658165314",{"2":{"112":3}}],["1285084136651826",{"2":{"112":3}}],["128",{"2":{"33":1,"36":1,"55":1,"57":1,"66":1,"68":1,"69":1,"70":1,"93":3}}],["128add7d",{"2":{"12":1}}],["129",{"2":{"29":1,"31":1}}],["12\\tδt",{"2":{"16":1}}],["12",{"2":{"11":1,"12":12,"16":1,"18":1,"49":1,"51":1,"60":3,"121":1,"122":1}}],["1",{"2":{"3":2,"11":3,"12":122,"15":274,"16":2,"17":3,"18":5,"19":6,"21":6,"22":1,"23":3,"25":3,"26":3,"28":3,"29":2,"31":2,"32":1,"33":2,"36":2,"37":1,"39":3,"40":1,"42":4,"43":5,"45":3,"46":5,"48":5,"49":11,"51":11,"52":7,"54":7,"55":49,"57":49,"58":12,"59":12,"60":218,"61":26,"62":8,"63":7,"64":13,"65":13,"66":6,"68":5,"69":10,"70":7,"73":3,"74":2,"76":5,"82":1,"84":1,"87":1,"91":4,"93":52,"97":23,"98":26,"103":1,"110":10,"112":137,"115":1,"116":5,"121":5,"122":3,"123":1,"124":8,"135":2,"137":1,"147":1}}],["118",{"2":{"147":1}}],["1183f4f0",{"2":{"12":1}}],["111",{"2":{"111":1}}],["11+1",{"2":{"12":1}}],["11+0",{"2":{"12":2}}],["1133081687983375",{"2":{"112":3}}],["113",{"2":{"12":1}}],["11",{"2":{"3":3,"5":1,"11":1,"12":43,"15":1,"16":1,"18":1,"19":1,"21":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"110":2,"118":1}}],["v~=1β+12",{"2":{"136":1}}],["v~",{"2":{"136":1}}],["v=",{"2":{"135":1,"136":1}}],["v−u0δt=−",{"2":{"135":1}}],["vrank>=1",{"2":{"93":2}}],["v¯θ",{"2":{"86":1}}],["v¯",{"2":{"83":2}}],["v¯≈u¯",{"2":{"83":1}}],["vti",{"2":{"44":1}}],["vtkbase",{"2":{"12":1}}],["vtk",{"2":{"8":2,"19":2,"20":2,"21":3,"26":2,"27":2,"28":3,"29":2,"30":2,"31":3,"34":2,"36":2,"43":2,"44":3,"45":4,"46":2,"47":2,"48":3,"49":2,"50":2,"51":3,"52":2,"53":2,"54":3,"55":2,"56":2,"57":3,"58":2,"59":2,"64":2,"65":2,"66":2,"67":2,"68":3,"74":2,"76":2,"121":5}}],["val",{"2":{"133":2}}],["valid",{"2":{"122":1}}],["valued",{"2":{"92":1}}],["value",{"2":{"43":1,"93":2,"115":1,"121":1,"123":1,"126":1,"127":2,"133":1,"135":1}}],["values",{"2":{"43":1,"93":1,"127":1,"136":2}}],["vary",{"2":{"124":1}}],["varies",{"2":{"127":1}}],["various",{"2":{"94":1}}],["variant",{"2":{"90":2,"125":1}}],["variants",{"2":{"87":1}}],["var",{"2":{"60":8,"84":1,"86":5,"93":1,"110":1,"111":7,"113":1,"121":3}}],["vanishing",{"2":{"43":1}}],["v",{"2":{"20":1,"55":10,"57":10,"85":5,"87":1,"110":4,"135":3,"136":1}}],["vi",{"2":{"137":1}}],["vi=u0+δt∑j=1iaijkjlpi=wm1ci∑j=1iaijkj+wym",{"2":{"137":1}}],["via",{"2":{"37":1,"97":1}}],["viscosity",{"2":{"52":1,"95":4,"97":2,"100":1,"105":1,"110":3}}],["viscous",{"2":{"22":1,"32":1,"147":2}}],["visualization",{"2":{"44":1,"147":1}}],["visualize",{"2":{"17":1,"20":1,"24":1,"27":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1}}],["visible",{"2":{"22":1,"32":1,"97":1}}],["virtual",{"2":{"11":1}}],["v8",{"2":{"12":2}}],["v5",{"2":{"12":4}}],["v9",{"2":{"12":1}}],["v6",{"2":{"12":2}}],["v3",{"2":{"12":15,"87":2}}],["v7",{"2":{"12":2}}],["v2023",{"2":{"12":1}}],["v2021",{"2":{"12":1}}],["v2024",{"2":{"12":2}}],["v20",{"2":{"12":1}}],["v2",{"2":{"12":22,"87":3}}],["v4",{"2":{"12":5,"87":3}}],["v0−βv−1",{"2":{"136":1}}],["v0",{"2":{"12":165}}],["vol",{"2":{"147":1}}],["volumes",{"2":{"99":3,"116":2,"122":1}}],["volumeaverage",{"2":{"85":2}}],["volume",{"0":{"123":1},"2":{"8":1,"84":3,"85":2,"99":2,"100":1,"101":3,"110":3,"116":3,"122":9,"123":4,"125":1,"126":4,"131":1}}],["vortex",{"0":{"69":1,"71":1},"1":{"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"64":1,"69":2,"71":1,"147":2}}],["vorticity",{"0":{"107":1,"130":1},"2":{"8":1,"17":2,"18":1,"19":1,"21":1,"26":1,"27":2,"28":2,"29":1,"30":2,"31":2,"44":2,"45":1,"49":1,"50":2,"51":2,"52":1,"54":1,"55":1,"56":2,"57":2,"66":1,"67":2,"68":2,"107":3,"110":6,"121":1,"130":3,"131":3}}],["veldman",{"2":{"136":1,"147":2}}],["velocities",{"2":{"127":1,"137":2}}],["velocitynorm",{"2":{"17":1,"18":1,"27":1,"28":1,"30":1,"31":1,"44":1,"45":1,"49":1,"50":1,"51":2,"56":2,"57":2,"67":1,"68":1}}],["velocity",{"2":{"13":1,"17":1,"19":1,"22":1,"26":2,"27":1,"29":2,"30":1,"32":1,"43":2,"44":1,"46":1,"49":1,"50":1,"56":2,"58":1,"59":1,"64":1,"65":1,"67":1,"83":1,"84":1,"85":5,"87":1,"90":1,"93":1,"95":1,"99":1,"100":2,"103":2,"110":6,"111":6,"113":1,"115":9,"116":3,"118":1,"121":2,"123":4,"126":3,"127":2,"129":2,"133":1,"134":4,"135":6,"136":3,"137":2}}],["velocityfield",{"2":{"8":1,"15":1,"18":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":2,"70":2,"73":1,"76":1,"118":2}}],["verstappen",{"2":{"136":1,"147":4}}],["versioninfo",{"2":{"11":1}}],["versions",{"0":{"10":1,"12":1},"1":{"11":1,"12":1},"2":{"12":2,"90":2,"96":1,"98":1}}],["version",{"0":{"11":1},"2":{"3":2,"11":2,"82":1,"93":3,"110":45,"111":6,"115":6,"134":2}}],["very",{"2":{"110":1,"127":1}}],["verify",{"2":{"97":1}}],["vertical",{"2":{"97":1}}],["vecrot2",{"2":{"87":1}}],["vec",{"2":{"58":1,"59":1,"64":1,"65":1}}],["vectorized",{"2":{"90":1}}],["vectors",{"2":{"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"99":1,"110":1,"124":1}}],["vector",{"2":{"14":1,"19":1,"26":1,"29":1,"43":2,"52":1,"55":1,"60":60,"66":1,"69":1,"87":9,"92":1,"93":1,"97":2,"98":1,"99":1,"102":1,"107":1,"108":1,"110":1,"112":2,"116":1,"118":1,"120":1,"121":1,"122":1,"130":1,"137":1}}],["vectorfield",{"2":{"8":2,"97":1,"98":1,"99":3,"118":1}}],["vs",{"0":{"7":1}}],["vscode",{"0":{"6":1},"2":{"6":1,"72":1}}],["v17",{"2":{"12":1}}],["v18",{"2":{"12":1}}],["v10164",{"2":{"12":1}}],["v10",{"2":{"12":2}}],["v1",{"2":{"3":1,"5":1,"12":161,"87":3}}],["lδp=β+12δtw",{"2":{"136":1}}],["lδp=wmv+ym",{"2":{"135":1}}],["lhs",{"2":{"135":1}}],["lu",{"2":{"135":1}}],["luxlib",{"2":{"12":1}}],["luxcore",{"2":{"12":1,"87":2}}],["lux",{"2":{"12":1}}],["l−1",{"2":{"127":1}}],["l=wmg=wmwu−1mtw",{"2":{"127":1}}],["l=3π2uavg2∫0∞e",{"2":{"110":1}}],["lt",{"2":{"121":1,"122":1}}],["lph=wm",{"2":{"127":1}}],["lp=wmf",{"2":{"111":1}}],["lpost",{"2":{"86":1}}],["lprior",{"2":{"86":2}}],["lb",{"2":{"55":1,"57":1}}],["l",{"2":{"55":5,"57":5,"110":2,"127":1,"147":1}}],["learned",{"2":{"147":1}}],["learning",{"2":{"147":2}}],["leg",{"0":{"136":1},"2":{"134":1,"136":1}}],["level",{"2":{"121":1}}],["levels",{"2":{"35":1,"36":1,"58":4,"59":4,"64":5,"65":4}}],["let",{"2":{"97":1,"121":2,"122":1}}],["les",{"2":{"83":1,"85":6,"86":3,"88":4,"95":1}}],["less",{"2":{"13":1,"19":1,"49":1,"66":1}}],["length",{"2":{"69":1,"70":1,"110":3}}],["left",{"2":{"19":1,"21":1,"26":2,"28":1,"29":2,"31":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"95":1,"116":1,"135":1}}],["lerc",{"2":{"12":1}}],["lzo",{"2":{"12":1}}],["llvmopenmp",{"2":{"12":1}}],["llvmextra",{"2":{"12":1}}],["llvm",{"2":{"11":1,"12":1}}],["lagrange",{"2":{"127":1}}],["lastdimcontract",{"2":{"110":1}}],["lapack",{"2":{"92":1}}],["laplace",{"2":{"58":1,"64":1,"111":1,"127":1}}],["laplacian",{"2":{"8":2,"99":2,"110":4}}],["largest",{"2":{"116":1}}],["large",{"0":{"95":1},"2":{"83":3,"95":4,"110":2,"112":2,"147":2}}],["larger",{"2":{"22":1,"32":1,"87":1,"125":1}}],["layers",{"2":{"84":2}}],["layer",{"0":{"66":1},"1":{"67":1,"68":1},"2":{"66":1,"87":5,"115":2}}],["layoutpointers",{"2":{"12":1}}],["label",{"2":{"55":4,"57":4,"60":4,"61":4,"69":2,"70":2}}],["language",{"2":{"89":1}}],["langle",{"2":{"55":1,"57":1}}],["landing",{"2":{"0":1}}],["later",{"2":{"43":1}}],["latexstrings",{"2":{"12":1,"55":1,"57":1}}],["lame",{"2":{"12":1}}],["lazyartifacts",{"2":{"12":1}}],["lazymodules",{"2":{"12":1}}],["lazilyinitializedfields",{"2":{"12":1}}],["lmwray3",{"2":{"8":1,"137":2}}],["li",{"2":{"147":1}}],["liiia3",{"2":{"137":1,"141":2}}],["liiia2",{"2":{"137":1,"141":2}}],["living",{"2":{"120":1}}],["live",{"2":{"4":1}}],["list",{"2":{"96":1,"147":1}}],["like",{"2":{"92":1,"121":1}}],["lifts",{"2":{"87":1}}],["lift",{"2":{"55":3,"57":3,"60":1,"61":1}}],["liddrivencavity3d",{"2":{"46":1,"48":1}}],["liddrivencavity2d",{"2":{"43":1,"45":1}}],["lid",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1},"2":{"43":1,"46":2}}],["library",{"2":{"89":1}}],["libraries",{"2":{"89":1}}],["libblastrampoline",{"2":{"12":1}}],["libssh2",{"2":{"12":1}}],["libsixel",{"2":{"12":1}}],["libdl",{"2":{"12":1}}],["libdecor",{"2":{"12":1}}],["libcurl",{"2":{"12":2}}],["libwebp",{"2":{"12":1}}],["libvorbis",{"2":{"12":1}}],["libpng",{"2":{"12":1}}],["libpthread",{"2":{"12":1}}],["libfdk",{"2":{"12":1}}],["libffi",{"2":{"12":1}}],["libass",{"2":{"12":1}}],["libaom",{"2":{"12":1}}],["libxkbfile",{"2":{"12":1}}],["libxcb",{"2":{"12":1}}],["libxcursor",{"2":{"12":1}}],["libxrender",{"2":{"12":1}}],["libxrandr",{"2":{"12":1}}],["libxinerama",{"2":{"12":1}}],["libxi",{"2":{"12":1}}],["libxfixes",{"2":{"12":1}}],["libxext",{"2":{"12":1}}],["libxdmcp",{"2":{"12":1}}],["libxau",{"2":{"12":1}}],["libx11",{"2":{"12":1}}],["libuuid",{"2":{"12":1}}],["libtiff",{"2":{"12":1}}],["libmount",{"2":{"12":1}}],["libiconv",{"2":{"12":1}}],["libgit2",{"2":{"12":2}}],["libgpg",{"2":{"12":1}}],["libglvnd",{"2":{"12":1}}],["libgcrypt",{"2":{"12":1}}],["lib",{"2":{"12":1,"83":1}}],["libllvm",{"2":{"11":1}}],["literate",{"2":{"12":1,"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"77":1}}],["lightxml",{"2":{"12":1}}],["linearly",{"2":{"98":1}}],["linear",{"2":{"94":1,"96":1,"97":1,"123":1,"135":1,"137":1}}],["linearalgebra",{"2":{"12":1,"69":1,"70":1}}],["linestyle",{"2":{"69":1,"70":1}}],["lines",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4,"55":3,"57":3,"60":4,"61":4,"69":1,"70":1}}],["linrange",{"2":{"15":2,"18":2,"19":3,"21":3,"23":1,"25":1,"26":1,"28":1,"29":3,"31":3,"46":1,"48":1,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"58":5,"59":5,"64":7,"65":7,"66":2,"68":2,"69":1,"70":1}}],["linux",{"2":{"11":2}}],["linking",{"2":{"5":1}}],["liability",{"2":{"9":1}}],["liable",{"2":{"9":1}}],["limits",{"2":{"116":1,"133":1}}],["limited",{"2":{"9":1}}],["limitation",{"2":{"9":1,"90":1,"92":1}}],["lims",{"2":{"8":1,"43":3,"45":3,"66":3,"68":3,"69":4,"70":4,"88":1,"133":3}}],["license",{"0":{"9":1},"2":{"9":2}}],["lobatto",{"2":{"142":1}}],["located",{"2":{"129":1}}],["local",{"0":{"2":1},"1":{"3":1,"4":1,"5":1,"6":1,"7":1},"2":{"5":1,"82":1,"95":2,"106":1,"129":1}}],["look",{"2":{"112":1}}],["loops",{"2":{"110":1}}],["loop",{"2":{"91":1}}],["low",{"2":{"89":1,"137":1,"138":2}}],["lower",{"2":{"60":1,"61":1,"133":1,"147":1}}],["longer",{"2":{"86":1}}],["loss",{"2":{"86":17}}],["logs",{"2":{"121":1}}],["logtol",{"2":{"121":1}}],["log10",{"2":{"55":2,"57":2,"69":2,"70":2}}],["logger",{"2":{"44":1}}],["logging",{"2":{"12":1,"43":1}}],["log",{"2":{"16":1,"18":1,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"60":2,"61":1,"62":1,"63":1,"64":2,"65":2,"66":1,"68":1,"74":1,"76":1}}],["logexpfunctions",{"2":{"12":1}}],["loading",{"2":{"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"112":1}}],["load",{"2":{"4":1}}],["aip",{"2":{"147":1}}],["aij",{"2":{"137":1}}],["aiming",{"2":{"127":1}}],["aα",{"2":{"122":2}}],["amp",{"0":{"145":1},"2":{"147":2}}],["amplitude",{"2":{"118":1}}],["amdgpu",{"2":{"94":1}}],["amd",{"2":{"11":1}}],["aware",{"2":{"117":1}}],["apis",{"2":{"112":1}}],["api",{"0":{"99":1,"113":1}}],["appears",{"2":{"127":1}}],["appending",{"2":{"97":1}}],["approximation",{"2":{"123":1,"134":1}}],["approximating",{"2":{"123":2}}],["approximated",{"2":{"123":2}}],["approximate",{"2":{"83":1,"133":1,"137":1}}],["approach",{"2":{"112":1,"147":1}}],["appropriate",{"2":{"111":1}}],["applied",{"2":{"147":1}}],["applies",{"2":{"99":1}}],["application",{"2":{"147":1}}],["applicable",{"2":{"89":1}}],["applying",{"2":{"43":1,"83":1,"98":1,"99":3,"127":1}}],["applypressure",{"2":{"8":1,"110":2}}],["applybodyforce",{"2":{"8":1,"110":2}}],["apply",{"2":{"8":3,"97":1,"98":2,"99":1,"115":12}}],["affecting",{"2":{"127":1}}],["affect",{"2":{"95":1}}],["after",{"2":{"43":2,"46":1,"120":1,"121":2,"135":1,"137":2}}],["agnostic",{"2":{"94":1,"110":1,"122":1}}],["agdestein",{"2":{"9":1,"83":1}}],["augmenter",{"2":{"87":1}}],["autodiff",{"2":{"92":1,"93":2}}],["auto",{"2":{"72":2}}],["autolimits",{"2":{"55":1,"57":1,"60":2,"61":2}}],["automa",{"2":{"12":1}}],["automatically",{"2":{"85":1,"92":1,"94":1}}],["automatic",{"0":{"90":1,"92":1},"1":{"91":1,"93":1},"2":{"5":1}}],["authors",{"2":{"9":1}}],["avx2",{"2":{"93":6}}],["averaging",{"2":{"83":1,"123":1}}],["averagetemp",{"2":{"60":5,"61":2}}],["average",{"2":{"55":1,"60":3,"61":1,"85":2,"110":1,"123":2}}],["avg",{"2":{"60":3,"61":2,"110":1}}],["avoid",{"2":{"43":2,"122":1,"135":1}}],["available",{"2":{"12":1,"77":1,"85":2,"94":1,"112":1,"121":3}}],["axislegend",{"2":{"55":1,"57":1,"60":2,"61":2,"69":1,"70":1}}],["axis",{"2":{"39":3,"42":3,"49":1,"51":1,"55":2,"57":2,"60":2,"61":2,"69":1,"70":1,"121":1}}],["axisarrays",{"2":{"12":1}}],["axisalgorithms",{"2":{"12":1}}],["ax",{"2":{"23":3,"25":3,"33":4,"36":4,"55":10,"57":10,"60":10,"61":10,"69":4,"70":4,"91":3,"93":3,"97":3,"98":2,"112":3}}],["a63ad114",{"2":{"12":1}}],["aac",{"2":{"12":1}}],["aacddb02",{"2":{"12":1}}],["a51aa0fd",{"2":{"12":1}}],["a3789734",{"2":{"12":1}}],["a3f928ae",{"2":{"12":1}}],["a33af91c",{"2":{"12":1}}],["a759f4b9",{"2":{"12":1}}],["aed1982a",{"2":{"12":1}}],["aedffcd0",{"2":{"12":1}}],["ae029012",{"2":{"12":1}}],["aea7be01",{"2":{"12":1}}],["a98d9a8b",{"2":{"12":1}}],["a9b6321e",{"2":{"12":1}}],["a09fc81d",{"2":{"12":1}}],["a2964d1f",{"2":{"12":1}}],["a2af1166",{"2":{"12":1}}],["a2bd30eb",{"2":{"12":1}}],["a2cac450",{"2":{"12":1}}],["a4e569a6",{"2":{"12":1}}],["a4ae2306",{"2":{"12":1}}],["a4df4552",{"2":{"12":1}}],["a4c015fc",{"2":{"12":1}}],["academy",{"2":{"147":1}}],["accelerated",{"2":{"147":1}}],["access",{"2":{"96":1}}],["accessors",{"2":{"12":1}}],["accumulating",{"2":{"135":1}}],["accuracy",{"2":{"135":1,"137":3,"147":1}}],["accurate",{"0":{"125":1},"2":{"125":3,"126":1,"134":1,"135":2,"136":1}}],["accounted",{"2":{"98":1}}],["account",{"2":{"86":1}}],["actually",{"2":{"134":1}}],["actual",{"2":{"99":1}}],["actuator3d",{"2":{"19":1,"21":1}}],["actuator",{"0":{"13":1,"19":1,"49":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"15":1,"17":1,"19":1,"49":1}}],["acting",{"2":{"97":1}}],["action",{"2":{"9":1}}],["activations",{"2":{"87":2}}],["activates",{"2":{"6":1}}],["activate",{"2":{"6":1}}],["active",{"2":{"6":1}}],["ab",{"2":{"135":1}}],["ability",{"2":{"92":1}}],["abstol",{"2":{"111":1,"112":1,"134":1,"137":1}}],["abstractrungekuttamethod",{"2":{"137":5}}],["abstract",{"2":{"134":1,"137":1}}],["abstractodemethod",{"2":{"134":2,"135":1,"136":1,"137":1}}],["abstractarray",{"2":{"133":1}}],["abstractbc",{"2":{"115":6}}],["abstractluxlayer",{"2":{"87":2}}],["abstractfilter",{"2":{"85":4}}],["abstractffts",{"2":{"12":1}}],["abstracttrees",{"2":{"12":1}}],["absence",{"2":{"103":1}}],["abs2",{"2":{"69":2,"70":2,"91":2}}],["abs",{"2":{"15":2,"18":2,"19":1,"21":1,"49":2,"51":2,"55":4,"57":4,"97":1,"98":2}}],["above",{"2":{"9":1,"82":1,"97":1,"116":1,"121":1,"122":1,"125":1}}],["about",{"0":{"8":1},"2":{"95":1}}],["arxiv",{"2":{"147":6}}],["arbitrary",{"2":{"101":1}}],["art",{"2":{"92":1}}],["artifacts",{"2":{"12":1}}],["architectures",{"0":{"87":1},"2":{"87":1}}],["arrays",{"2":{"43":1,"88":2,"116":1,"137":1}}],["array",{"2":{"15":1,"58":1,"59":1,"60":2,"61":2,"64":1,"65":1,"90":1,"92":1,"93":2,"94":1,"97":1,"112":1,"113":1,"120":1}}],["arrayinterface",{"2":{"12":1}}],["arguments",{"2":{"92":2,"110":1,"113":2,"121":2}}],["argtools",{"2":{"12":1}}],["argcheck",{"2":{"12":1}}],["arising",{"2":{"9":1}}],["are",{"2":{"4":1,"5":2,"8":1,"12":1,"43":5,"72":1,"77":1,"83":4,"85":1,"87":4,"89":1,"93":1,"94":2,"95":1,"96":1,"97":3,"100":1,"102":1,"103":1,"106":1,"110":4,"111":2,"112":1,"115":2,"118":1,"120":1,"121":8,"122":7,"123":4,"124":1,"125":1,"127":2,"129":1,"135":1,"137":2}}],["aspect",{"2":{"147":1}}],["assuming",{"2":{"135":1}}],["assumption",{"2":{"123":1}}],["assume",{"2":{"100":1}}],["assumed",{"2":{"83":1}}],["assignment",{"2":{"117":1}}],["assembling",{"2":{"110":1,"127":1}}],["assemble",{"2":{"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"97":1}}],["assert",{"2":{"93":1,"98":1}}],["associated",{"2":{"9":1}}],["as",{"2":{"9":1,"13":1,"19":1,"26":1,"29":1,"40":1,"43":5,"49":1,"52":1,"55":1,"86":1,"90":1,"94":1,"95":2,"96":1,"97":1,"98":1,"100":1,"101":1,"107":1,"109":2,"110":5,"111":1,"112":1,"116":1,"118":1,"121":3,"122":2,"123":1,"126":2,"127":2,"130":2,"132":1,"134":1,"135":1,"136":1,"137":4}}],["adjoint",{"2":{"92":1,"93":1}}],["ad",{"2":{"89":2,"90":1,"92":2}}],["ade2ca70",{"2":{"12":1}}],["adams",{"0":{"135":1},"2":{"134":1,"135":3}}],["adamsbashforthcranknicolsonmethod",{"2":{"8":1,"135":2}}],["adafc99b",{"2":{"12":1}}],["adapted",{"2":{"83":1,"134":1}}],["adaptive",{"2":{"43":1,"120":1}}],["adaptivepredicates",{"2":{"12":1}}],["adapt",{"2":{"12":1,"120":2}}],["adtypes",{"2":{"12":1}}],["added",{"2":{"134":1}}],["adding",{"2":{"98":1,"132":1}}],["addition",{"2":{"44":1,"134":1}}],["additional",{"2":{"1":1,"121":2,"135":1,"137":1}}],["add",{"2":{"3":1,"4":2,"5":1,"7":1,"43":1,"66":1,"72":1,"95":1,"110":7,"134":2,"135":1,"136":1,"137":2}}],["a",{"0":{"80":1},"2":{"7":4,"9":2,"13":4,"14":1,"15":4,"17":1,"19":9,"22":1,"23":1,"26":7,"29":7,"32":1,"37":1,"38":1,"39":3,"40":1,"42":1,"43":16,"46":6,"49":8,"52":3,"55":6,"57":2,"58":4,"60":10,"66":3,"69":2,"70":2,"72":1,"77":1,"82":1,"83":5,"84":1,"86":13,"87":11,"88":1,"90":2,"91":2,"92":2,"93":2,"94":2,"95":3,"97":6,"98":2,"100":2,"101":1,"102":2,"103":2,"107":2,"108":2,"110":8,"111":2,"112":4,"113":4,"116":20,"117":4,"118":2,"120":2,"121":8,"122":10,"123":2,"125":2,"126":3,"127":4,"130":2,"132":3,"133":5,"134":5,"135":7,"136":2,"137":5,"147":12}}],["analysis",{"2":{"112":2,"147":1}}],["analytical",{"2":{"69":3,"70":1}}],["another",{"2":{"102":1}}],["anim",{"2":{"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1}}],["animation",{"2":{"121":1}}],["animations",{"2":{"12":1}}],["animate",{"2":{"121":1}}],["animator",{"2":{"8":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["ansicoloredprinters",{"2":{"12":1}}],["any",{"2":{"9":3,"44":1,"60":2,"84":2,"85":2,"87":4,"93":2,"99":3,"110":56,"111":2,"115":7,"116":6,"118":8,"120":2,"121":3,"133":12}}],["an",{"2":{"5":2,"6":1,"9":1,"13":1,"14":1,"19":2,"26":2,"29":2,"43":4,"49":1,"52":1,"55":1,"66":1,"69":1,"95":1,"98":1,"100":1,"101":1,"109":1,"111":1,"112":1,"115":1,"116":1,"120":1,"121":1,"123":1,"127":3,"134":3,"135":2,"137":1}}],["and",{"0":{"98":1},"2":{"4":3,"5":2,"6":1,"7":2,"9":6,"12":1,"18":1,"19":1,"21":1,"22":1,"23":1,"25":1,"26":3,"28":1,"29":3,"31":1,"32":1,"36":1,"38":1,"42":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":2,"57":1,"58":1,"59":1,"60":3,"61":1,"63":1,"65":1,"66":1,"68":1,"70":1,"76":1,"77":1,"82":2,"83":4,"84":1,"85":1,"86":6,"87":5,"89":1,"90":3,"91":2,"92":4,"93":1,"94":3,"95":2,"97":4,"98":1,"99":1,"100":5,"101":1,"102":2,"106":2,"109":1,"110":15,"111":1,"112":8,"113":3,"115":1,"117":2,"120":2,"121":4,"122":6,"123":9,"124":2,"126":4,"130":1,"131":1,"132":2,"133":2,"134":4,"135":6,"136":5,"137":4,"140":2,"142":1,"143":1,"147":16}}],["alieva",{"2":{"147":1}}],["aliastables",{"2":{"12":1}}],["algebraically",{"2":{"142":1}}],["algebraic",{"2":{"134":2}}],["algorithms",{"2":{"99":1}}],["alpha",{"2":{"121":1}}],["al",{"2":{"116":1}}],["alternatively",{"2":{"112":1}}],["also",{"2":{"43":3,"85":1,"86":1,"87":1,"93":2,"94":1,"95":1,"99":1,"110":1,"112":1,"115":1,"116":2,"121":1,"122":1,"127":1,"134":2}}],["allocating",{"2":{"90":2,"92":1,"134":2}}],["allows",{"2":{"3":1,"43":2,"69":1,"92":1,"110":1}}],["all",{"2":{"9":1,"82":1,"94":1,"95":1,"96":1,"109":1,"110":3,"112":2,"115":1,"116":2,"122":1,"123":1,"126":2,"134":1,"137":1}}],["already",{"2":{"4":1}}],["atomic",{"2":{"95":1}}],["atomix",{"2":{"12":1}}],["at",{"2":{"1":1,"4":1,"13":1,"19":1,"26":2,"29":2,"43":2,"46":2,"49":1,"69":1,"70":1,"77":1,"86":2,"90":1,"111":1,"115":4,"118":2,"121":7,"123":3,"127":1,"129":1,"131":2,"134":1,"135":3,"136":2,"137":4,"147":1}}],["pdf",{"2":{"147":1}}],["pdmats",{"2":{"12":1}}],["pérez",{"2":{"147":1}}],["ps",{"2":{"137":1}}],["psolve",{"2":{"93":1,"111":6}}],["psolver",{"2":{"8":5,"33":3,"34":1,"36":4,"52":4,"53":1,"54":5,"58":4,"59":4,"64":5,"65":5,"69":5,"70":5,"73":3,"74":1,"76":4,"86":3,"88":3,"91":3,"93":4,"94":2,"109":2,"111":12,"112":4,"113":3,"118":2,"120":1,"121":2,"134":1}}],["p=2p0−p−1+43δp",{"2":{"136":1}}],["p=p0+δp",{"2":{"135":1}}],["p−1",{"2":{"136":1}}],["p0−βp−1",{"2":{"136":1}}],["p0",{"2":{"136":1}}],["phys",{"2":{"147":1}}],["physics",{"2":{"147":8}}],["physical",{"2":{"116":1,"147":1}}],["phenomena",{"2":{"147":1}}],["ph=l−1wm",{"2":{"127":1}}],["ph",{"2":{"127":1}}],["python",{"2":{"124":1}}],["pi",{"2":{"123":1,"137":1}}],["pixman",{"2":{"12":1}}],["pvd",{"2":{"121":1}}],["peak",{"2":{"118":1}}],["perfectly",{"2":{"137":1}}],["performs",{"2":{"137":1}}],["performance",{"2":{"92":1,"112":1}}],["perform",{"2":{"92":1,"110":1,"127":1,"134":2,"135":1,"137":2}}],["performed",{"2":{"43":1}}],["percentage",{"2":{"121":1}}],["pervasive",{"2":{"112":1}}],["per",{"2":{"100":1}}],["periodic",{"2":{"29":1,"37":1,"97":2,"98":1,"102":1,"111":1,"115":4}}],["periodicbc",{"2":{"8":1,"29":2,"31":2,"46":2,"48":2,"55":2,"57":2,"58":4,"59":4,"93":4,"97":4,"99":1,"115":2}}],["permit",{"2":{"9":1}}],["permission",{"2":{"9":2}}],["persons",{"2":{"9":1}}],["person",{"2":{"9":1}}],["p4",{"2":{"87":1}}],["png",{"2":{"69":1,"70":1}}],["pngfiles",{"2":{"12":1}}],["p₀",{"2":{"26":1,"28":1,"29":1,"31":1,"56":1,"57":1}}],["p7zip",{"2":{"12":1}}],["pcre2",{"2":{"12":1}}],["ptrarrays",{"2":{"12":1}}],["place",{"2":{"85":2,"92":1,"93":2,"110":24,"111":3,"112":2,"113":1,"115":3,"134":2}}],["plates",{"2":{"60":1}}],["plate",{"2":{"58":1,"60":3,"61":2}}],["platform",{"2":{"11":1}}],["plan",{"2":{"93":1}}],["planejets2d",{"2":{"55":1,"57":1}}],["plane",{"0":{"55":1},"1":{"56":1,"57":1},"2":{"55":1}}],["planarmixing2d",{"2":{"52":1,"54":1}}],["planar",{"0":{"52":1},"1":{"53":1,"54":1},"2":{"52":1}}],["plain",{"2":{"43":1}}],["plotted",{"2":{"121":2}}],["plotter",{"2":{"121":1}}],["plotting",{"2":{"14":3,"19":3,"23":1,"26":3,"29":3,"38":1,"43":4,"52":3,"55":3,"66":3,"121":1,"133":1}}],["plots",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"86":1,"121":1}}],["plotutils",{"2":{"12":1}}],["plotgrid",{"2":{"8":1,"15":1,"18":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"60":1,"61":1,"62":1,"63":1,"66":1,"68":1,"133":2}}],["plot",{"0":{"40":1},"2":{"8":2,"17":3,"19":5,"20":1,"21":5,"23":4,"24":1,"25":4,"26":5,"27":3,"28":5,"29":5,"30":3,"31":5,"34":5,"35":1,"36":5,"41":5,"42":4,"43":5,"44":3,"45":5,"46":5,"48":5,"49":5,"50":3,"51":5,"52":5,"54":5,"55":7,"56":4,"57":6,"60":4,"61":4,"64":2,"66":5,"67":3,"68":5,"69":1,"74":5,"76":5,"86":2,"121":15,"133":1}}],["pope",{"2":{"147":1}}],["positive",{"2":{"127":1,"135":1}}],["positions",{"2":{"123":4}}],["position",{"2":{"55":1,"57":1,"123":2}}],["possible",{"2":{"112":2,"127":1}}],["posterior",{"2":{"86":1}}],["posteriori",{"2":{"86":4}}],["post",{"0":{"17":1,"20":1,"24":1,"27":1,"30":1,"35":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"75":1},"2":{"86":8,"110":1}}],["points",{"2":{"87":2,"110":5,"116":6,"121":2}}],["point2f",{"2":{"49":5,"51":5,"60":4,"61":4}}],["point",{"0":{"109":1},"2":{"19":1,"26":1,"29":1,"43":3,"46":1,"49":1,"55":1,"60":1,"66":1,"71":1,"101":1,"109":1,"116":1,"123":2,"129":2,"131":2}}],["poisson",{"0":{"127":1},"2":{"8":1,"99":1,"103":1,"111":10,"112":1,"127":3,"131":2,"134":1,"136":1}}],["polygonops",{"2":{"12":1}}],["polyesterweave",{"2":{"12":1}}],["polyester",{"2":{"12":1}}],["portions",{"2":{"9":1}}],["put",{"2":{"85":1}}],["push",{"2":{"60":2,"61":2}}],["purpose",{"2":{"9":1}}],["publish",{"2":{"9":1}}],["pullback",{"2":{"93":1}}],["pullbacks",{"2":{"92":1}}],["pull",{"2":{"1":1}}],["p",{"2":{"6":1,"8":4,"20":1,"26":1,"28":1,"29":1,"31":1,"50":1,"53":1,"55":3,"56":2,"57":4,"88":1,"99":2,"100":1,"102":1,"110":19,"111":2,"112":3,"115":8,"121":1,"123":1,"134":1,"135":2,"136":1,"137":3,"147":4}}],["prandtl",{"2":{"117":1,"132":1}}],["price",{"2":{"138":1}}],["principle",{"2":{"112":1}}],["println",{"2":{"121":3}}],["printed",{"2":{"86":1}}],["printf",{"2":{"12":1}}],["prior",{"2":{"86":12}}],["priori",{"2":{"86":3,"88":1}}],["pr",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["predicted",{"2":{"135":1}}],["predict",{"2":{"95":2}}],["predicts",{"2":{"87":3}}],["predictor",{"2":{"86":1}}],["prediction",{"2":{"86":1,"135":1}}],["previously",{"2":{"110":1}}],["previous",{"2":{"86":1,"134":1,"135":3,"136":1}}],["preserving",{"2":{"136":1,"147":1}}],["preservation",{"2":{"134":1}}],["preserved",{"2":{"137":1}}],["preserve",{"2":{"127":1}}],["preserves",{"2":{"123":1}}],["present",{"2":{"127":1}}],["presented",{"2":{"52":1,"55":1}}],["prescribed",{"2":{"115":2,"127":1}}],["pressuregradient",{"2":{"8":2,"97":3,"99":1,"110":2}}],["pressure",{"0":{"103":1,"111":1,"127":1},"2":{"8":1,"17":2,"18":1,"27":2,"28":1,"30":2,"31":1,"44":2,"45":1,"49":1,"50":2,"51":2,"56":2,"57":1,"64":1,"65":1,"67":2,"68":1,"99":3,"100":2,"103":5,"109":1,"110":13,"111":9,"112":1,"113":3,"115":7,"116":4,"121":3,"123":3,"126":5,"127":9,"129":1,"134":3,"135":6,"136":3,"137":3,"143":2}}],["pressurebc",{"2":{"8":1,"15":6,"18":3,"19":5,"21":5,"26":1,"28":1,"29":1,"31":1,"49":3,"51":3,"52":3,"54":3,"55":2,"57":2,"98":2,"115":2}}],["press",{"2":{"6":1,"147":1}}],["preferred",{"2":{"43":2,"109":1,"121":1}}],["preferences",{"2":{"12":1}}],["preconditioner",{"2":{"111":1}}],["precomputed",{"2":{"110":1}}],["precompute",{"2":{"96":1,"135":1}}],["precompiletools",{"2":{"12":1}}],["precisions",{"2":{"43":1,"109":2}}],["precision",{"0":{"109":1},"2":{"43":7,"49":1,"58":1,"60":1,"62":1,"64":1,"71":1,"109":9}}],["prettyprint",{"2":{"12":1}}],["preallocationtools",{"2":{"12":1}}],["proceedings",{"2":{"147":1}}],["process",{"0":{"17":1,"20":1,"24":1,"27":1,"30":1,"35":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"75":1},"2":{"121":2}}],["processors",{"0":{"121":1},"2":{"16":1,"18":1,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":2,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":2,"61":2,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"88":1,"120":3,"121":1}}],["processor",{"2":{"8":1,"11":1,"49":1,"51":1,"120":2,"121":8}}],["producing",{"2":{"97":1}}],["product",{"2":{"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"122":1}}],["programming",{"2":{"89":1}}],["progressmeter",{"2":{"12":1}}],["propagate",{"2":{"89":1}}],["proposed",{"2":{"110":1,"116":1,"120":1,"122":1}}],["propose",{"2":{"1":1}}],["provides",{"2":{"84":1,"134":1}}],["provide",{"2":{"43":2,"87":1,"92":1,"96":1}}],["provided",{"2":{"9":1,"43":1}}],["problems",{"2":{"110":1}}],["problem",{"0":{"16":1,"33":1,"34":1,"41":1,"74":1,"114":1},"1":{"115":1,"116":1,"117":1,"118":1},"2":{"19":1,"23":1,"26":2,"29":2,"43":1,"46":2,"49":1,"52":1,"55":1,"66":1,"95":2,"112":2,"117":1,"120":1}}],["profile",{"2":{"13":1,"19":1,"49":1,"116":1}}],["protocols",{"2":{"12":1}}],["projecting",{"2":{"137":1}}],["projection",{"2":{"127":2,"137":1}}],["projector",{"2":{"127":1}}],["projected",{"2":{"112":1}}],["projects",{"2":{"7":1,"87":1}}],["project=lib",{"2":{"5":2}}],["project",{"2":{"5":2,"7":1,"8":1,"111":4}}],["pair",{"2":{"138":1}}],["pairs",{"2":{"60":6,"88":1,"111":1}}],["paper",{"2":{"110":1}}],["pattern",{"2":{"97":1}}],["path",{"2":{"5":2,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["past",{"2":{"127":1}}],["pasteable",{"0":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1},"2":{"77":1}}],["passed",{"2":{"87":1,"92":1,"93":2,"94":1,"111":1,"120":1,"121":6}}],["passes",{"2":{"26":1,"29":1}}],["pass",{"2":{"43":1,"90":1}}],["pango",{"2":{"12":1}}],["partitioning",{"2":{"122":1}}],["particularly",{"2":{"44":1}}],["particular",{"2":{"9":1,"112":1}}],["part",{"2":{"93":1,"102":2}}],["parallel",{"2":{"112":1,"115":2}}],["params",{"2":{"93":3,"113":3}}],["parameter",{"2":{"105":1,"135":1}}],["parameterized",{"2":{"83":1,"117":1,"132":1}}],["parameters",{"2":{"12":1,"84":1,"86":6,"87":3,"93":1,"113":1,"135":1}}],["paraview",{"2":{"44":1,"121":2}}],["parabolic",{"2":{"26":1,"29":1}}],["parsers",{"2":{"12":1}}],["pack",{"2":{"93":1}}],["packing",{"2":{"12":1}}],["package",{"0":{"7":1,"10":1,"12":1},"1":{"11":1,"12":1},"2":{"5":1,"7":1,"12":1,"38":1,"82":1}}],["packagespec",{"2":{"5":1}}],["packages",{"0":{"14":1,"23":1,"38":1},"2":{"5":2,"12":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1}}],["padding",{"2":{"99":2}}],["paddedviews",{"2":{"12":1}}],["pad",{"2":{"8":2,"99":4}}],["page",{"2":{"0":1,"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["pkgversion",{"2":{"12":1}}],["pkgmode",{"2":{"12":1}}],["pkg",{"2":{"4":2,"5":5,"12":4,"82":1}}],["embedded",{"2":{"147":1}}],["empty",{"2":{"98":1,"118":2}}],["euler",{"2":{"138":1,"139":1,"141":1}}],["edge",{"2":{"122":1}}],["eddy",{"0":{"95":1},"2":{"83":1,"95":2,"110":1,"118":1,"147":2}}],["eddies",{"2":{"22":1,"32":1,"95":2}}],["eαβ",{"2":{"122":2}}],["eα=",{"2":{"122":1}}],["e^",{"2":{"121":1}}],["et",{"2":{"116":1}}],["etc",{"2":{"5":1,"97":1}}],["eigenvalue",{"2":{"110":2,"127":1}}],["eig2field",{"2":{"8":1,"58":4,"59":4,"64":3,"65":3,"110":2}}],["estimate",{"2":{"95":1}}],["espec",{"2":{"23":1,"24":1,"25":2,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"74":1,"75":1,"76":2}}],["ecosystem",{"2":{"89":1,"90":1}}],["ec84b674",{"2":{"12":1}}],["err",{"2":{"86":1}}],["error",{"2":{"12":1,"69":3,"70":2,"83":1,"86":9,"87":3,"143":1}}],["errors",{"2":{"1":1,"86":1,"95":1,"135":1,"137":1}}],["evolves",{"2":{"103":1}}],["evolution",{"2":{"95":1,"100":1}}],["evaluation",{"2":{"86":1}}],["evaluated",{"2":{"123":1}}],["evaluate",{"2":{"86":1}}],["even",{"2":{"94":1,"137":1}}],["eventually",{"2":{"22":1,"32":1}}],["event",{"2":{"9":1}}],["every",{"2":{"43":1,"91":1,"120":2,"121":8,"135":1}}],["elsewhere",{"2":{"110":1}}],["else",{"2":{"73":1,"76":1,"115":1}}],["elseif",{"2":{"73":1,"76":1}}],["elements",{"2":{"110":1}}],["element",{"2":{"69":1,"101":1,"112":2,"116":1}}],["e−2t",{"2":{"69":2}}],["e₁",{"2":{"55":3,"57":3}}],["e₀",{"2":{"55":2,"57":2}}],["equals",{"2":{"142":1}}],["equal",{"2":{"107":1}}],["equality",{"2":{"98":1}}],["equation",{"0":{"80":1,"103":1,"127":1,"132":1},"2":{"8":1,"58":3,"59":1,"60":3,"61":1,"62":2,"63":1,"64":3,"65":1,"83":1,"86":1,"99":1,"100":1,"103":2,"110":4,"111":3,"112":2,"117":4,"123":2,"125":2,"126":1,"127":3,"131":2,"132":9,"134":4,"136":1}}],["equations",{"0":{"100":1,"123":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"83":2,"93":1,"95":1,"100":1,"101":1,"103":1,"105":1,"110":3,"112":5,"113":3,"122":1,"123":2,"125":1,"126":2,"127":5,"134":1,"147":3}}],["equivalent",{"2":{"122":1}}],["equivariant",{"2":{"87":2}}],["equivariance",{"2":{"86":1}}],["equilibrium",{"2":{"43":1,"46":1}}],["ehist",{"2":{"23":1,"24":1,"25":2,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"51":1,"74":1,"75":1,"76":2}}],["e66e0078",{"2":{"12":1}}],["easy",{"2":{"86":2,"90":1}}],["each",{"2":{"77":1,"86":2,"87":2,"115":2,"122":1,"123":1,"125":1,"134":2,"137":4}}],["ea8e919c",{"2":{"12":1}}],["ea2f1a96",{"2":{"12":1}}],["earcut",{"2":{"12":1}}],["efficient",{"2":{"89":1,"92":2,"109":1,"110":1,"127":1}}],["effect",{"2":{"86":1}}],["efe28fd5",{"2":{"12":1}}],["efcefdf7",{"2":{"12":1}}],["efce3f68",{"2":{"12":1}}],["efcf1570",{"2":{"12":1}}],["e7412a2a",{"2":{"12":1}}],["e9f186c6",{"2":{"12":1}}],["e94cdb99",{"2":{"12":1}}],["e9467ef8",{"2":{"12":1}}],["eps",{"2":{"58":1,"59":1,"64":1,"65":1}}],["epollshim",{"2":{"12":1}}],["epyc",{"2":{"11":1}}],["e88e6eb3",{"2":{"12":1}}],["e37daf67",{"2":{"12":1}}],["e33a78d0",{"2":{"12":1}}],["e3aaa7dc",{"2":{"12":1}}],["e30172f5",{"2":{"12":1}}],["ee1fde0b",{"2":{"12":1}}],["eebad327",{"2":{"12":1}}],["ee78f7c6",{"2":{"12":1}}],["e1d29d7a",{"2":{"12":1}}],["e2ba6199",{"2":{"12":1}}],["e2d170a0",{"2":{"12":1}}],["except",{"2":{"126":1}}],["exceed",{"2":{"92":1}}],["excluding",{"2":{"110":2}}],["exclamation",{"2":{"90":1}}],["extracted",{"2":{"83":1}}],["extrema",{"2":{"69":1,"70":1}}],["extensions",{"2":{"121":1}}],["extension",{"2":{"26":1,"29":1,"97":1}}],["extended",{"2":{"122":1,"137":1}}],["extend",{"2":{"15":1,"19":1,"26":1,"29":1,"49":1,"52":1}}],["extents",{"2":{"12":1}}],["exactly",{"2":{"95":1,"115":1,"127":1}}],["exact",{"2":{"86":2,"134":2,"137":1}}],["exactpredicates",{"2":{"12":1}}],["examples`",{"2":{"12":1}}],["examples",{"0":{"77":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"11":1,"12":2,"60":1,"62":1,"69":1,"77":1}}],["example",{"0":{"91":1,"93":1,"97":1},"2":{"5":2,"13":1,"14":1,"18":1,"19":2,"21":1,"22":1,"25":1,"26":2,"28":1,"29":2,"31":1,"32":1,"36":1,"42":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":2,"54":1,"55":2,"57":1,"59":1,"61":1,"63":1,"65":1,"66":2,"68":1,"69":1,"70":1,"71":1,"76":1,"77":2,"82":1,"93":1,"95":1,"96":1,"97":1,"110":1,"112":1,"121":1,"127":3}}],["expensive",{"2":{"110":1}}],["experimental",{"2":{"83":1}}],["explicitrungekuttamethod",{"2":{"134":1,"137":2,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["explicit",{"0":{"138":1,"140":1},"2":{"112":1,"134":2,"135":2,"136":1,"137":2,"147":1}}],["explicitly",{"2":{"43":1,"112":1,"127":1}}],["exploit",{"2":{"86":1}}],["exp",{"2":{"69":1,"70":1}}],["expat",{"2":{"12":1}}],["expronicon",{"2":{"12":1}}],["exprtools",{"2":{"12":1}}],["express",{"2":{"9":1}}],["export",{"2":{"20":2,"24":1,"27":2,"30":2,"44":2,"47":2,"50":2,"53":2,"56":2,"67":2}}],["exported",{"2":{"8":1}}],["exports",{"2":{"8":1,"137":1}}],["engineering",{"2":{"147":1}}],["england",{"2":{"147":1}}],["ensured",{"2":{"137":1}}],["ensures",{"2":{"134":1}}],["enable",{"2":{"132":1}}],["enforcing",{"2":{"127":1}}],["enforces",{"2":{"111":1}}],["enforced",{"2":{"43":1,"133":1,"135":1}}],["entire",{"2":{"115":1}}],["entries",{"2":{"97":4}}],["enumerate",{"2":{"69":1,"70":1}}],["enumx",{"2":{"12":1}}],["end",{"2":{"49":5,"51":5,"55":6,"57":6,"60":10,"61":10,"69":2,"70":2,"73":1,"76":1,"91":2,"115":1,"120":1,"121":2,"134":1}}],["enzymecore",{"2":{"12":1}}],["enzyme",{"0":{"92":1},"1":{"93":1},"2":{"12":2,"89":1,"92":6,"93":5}}],["energy",{"0":{"91":1,"106":1,"129":1},"2":{"8":5,"19":2,"21":2,"22":1,"23":2,"24":2,"25":2,"26":2,"28":2,"29":2,"31":2,"32":1,"34":2,"35":2,"36":2,"37":1,"41":4,"42":2,"43":2,"45":2,"46":2,"47":1,"48":2,"49":2,"51":2,"52":2,"54":2,"55":5,"57":5,"66":2,"68":2,"74":2,"75":2,"76":2,"91":4,"95":2,"106":1,"110":9,"118":1,"121":7,"123":1,"129":1,"133":2,"147":2}}],["env",{"2":{"6":1}}],["environments",{"0":{"5":1},"1":{"6":1,"7":1},"2":{"5":1}}],["environment",{"0":{"7":1},"2":{"4":1,"5":3,"6":5,"82":1}}],["encounters",{"2":{"13":1,"19":1,"49":1}}],["encounter",{"2":{"1":1}}],["e",{"2":{"3":1,"4":1,"5":2,"66":2,"68":2,"69":5,"70":5,"87":1,"90":2,"94":1,"99":2,"116":1,"124":1,"147":3}}],["iiia",{"2":{"142":1}}],["ij",{"2":{"137":1}}],["i−|ωi3|32+d|ωi|∑α=1d",{"2":{"125":1}}],["i−hβ",{"2":{"123":2}}],["i−gl−1wm",{"2":{"112":1,"127":2}}],["i+fourth",{"2":{"125":1}}],["i+fα",{"2":{"123":1,"125":1}}],["i+hβ",{"2":{"123":2}}],["i+ν∑β=1d",{"2":{"123":1,"125":1}}],["illustrated",{"2":{"122":1}}],["i∈i+∑α=1dhα",{"2":{"122":1}}],["i∈i+hα",{"2":{"122":1,"123":2}}],["i∈i",{"2":{"122":1,"123":3}}],["i∈",{"2":{"122":1}}],["iα",{"2":{"122":1}}],["identification",{"2":{"147":1}}],["identical",{"2":{"125":1}}],["id",{"2":{"122":1}}],["i1",{"2":{"122":1}}],["i=3",{"2":{"143":3}}],["i=1",{"2":{"137":1}}],["i=φi+3hα−φi−3hαδiα−1α+δiαα+δiα+1α",{"2":{"125":1}}],["i=φi+hα−φi−hα|δiαα|",{"2":{"122":1}}],["i=∏α=1d",{"2":{"122":1}}],["i=",{"2":{"122":1}}],["i=0and",{"2":{"125":1}}],["i=0",{"2":{"116":1,"123":1}}],["icfunc",{"2":{"88":1}}],["icefire",{"2":{"60":2,"61":1}}],["io",{"2":{"88":2,"110":1}}],["iocapture",{"2":{"12":1}}],["i",{"2":{"69":2,"70":2,"110":13,"115":2,"116":1,"121":1,"122":5,"123":3,"124":1,"133":2,"137":1}}],["ix",{"2":{"60":4,"61":4}}],["ip",{"2":{"55":1,"57":1,"58":1,"59":1,"60":8,"61":2,"64":1,"65":1,"69":4,"70":4,"93":1,"97":1,"98":1,"115":1,"116":1}}],["iu",{"2":{"55":2,"57":2,"60":6,"91":3,"93":1,"97":1,"98":1,"115":1,"116":1}}],["irrationalconstants",{"2":{"12":1}}],["irtools",{"2":{"12":1}}],["imex",{"2":{"135":1}}],["important",{"2":{"87":1}}],["improve",{"2":{"86":1}}],["implicitness",{"2":{"135":1}}],["implicitrungekuttamethod",{"2":{"134":1,"137":2,"138":13,"139":6,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["implicit",{"0":{"139":1},"2":{"112":1,"134":2,"135":1,"137":2,"139":1,"141":1}}],["implied",{"2":{"9":1}}],["implemented",{"2":{"96":1,"97":1}}],["implementations",{"2":{"112":1}}],["implementation",{"2":{"92":1,"122":1}}],["implement",{"2":{"85":1,"92":1}}],["imath",{"2":{"12":1}}],["image",{"2":{"69":1,"121":1}}],["imagemetadata",{"2":{"12":1}}],["imageio",{"2":{"12":1}}],["imagecore",{"2":{"12":1}}],["imagebase",{"2":{"12":1}}],["imageaxes",{"2":{"12":1}}],["isnormal",{"2":{"115":3}}],["isright",{"2":{"115":4}}],["isprojecting",{"2":{"87":2}}],["ispath",{"2":{"69":1,"70":1}}],["islifting",{"2":{"87":2}}],["isa",{"2":{"60":2,"61":2}}],["isotropic",{"0":{"22":1,"32":1},"1":{"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1},"2":{"22":1,"32":1,"147":1}}],["isoband",{"2":{"12":2}}],["issps3",{"2":{"137":1,"139":2}}],["isspm2",{"2":{"137":1,"139":2}}],["issteadybodyforce",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"60":6,"93":1,"97":1,"98":1,"117":1}}],["issues",{"2":{"1":1}}],["is",{"2":{"4":2,"5":2,"7":1,"9":4,"13":1,"14":1,"15":1,"18":1,"19":3,"21":1,"22":1,"25":1,"26":3,"28":1,"29":3,"31":1,"32":1,"36":1,"37":3,"40":2,"42":1,"43":11,"44":1,"45":1,"46":2,"48":1,"49":2,"51":1,"52":2,"54":1,"55":3,"57":1,"59":1,"61":1,"63":1,"65":1,"66":2,"68":1,"70":1,"72":1,"76":1,"77":2,"83":3,"86":7,"87":1,"89":4,"90":2,"91":2,"92":3,"93":2,"94":2,"95":6,"97":3,"98":2,"100":7,"101":2,"102":2,"103":1,"105":2,"107":4,"108":2,"109":1,"110":7,"112":4,"113":1,"115":9,"116":1,"117":1,"120":6,"121":30,"122":10,"123":7,"125":4,"126":7,"127":7,"129":1,"130":3,"131":1,"132":2,"133":3,"134":6,"135":10,"136":5,"137":7,"141":1}}],["itself",{"2":{"99":1,"125":1}}],["its",{"2":{"92":3,"93":1,"125":1,"135":1}}],["iterative",{"2":{"109":1,"111":2}}],["iterativesolvers",{"2":{"12":1,"111":1}}],["iterations",{"2":{"86":2,"137":1}}],["iteration",{"2":{"43":1,"120":1,"121":1,"137":2}}],["iteratorinterfaceextensions",{"2":{"12":1}}],["itertools",{"2":{"12":1}}],["it",{"2":{"4":4,"7":1,"40":1,"69":1,"84":1,"86":2,"87":3,"89":2,"90":1,"91":1,"99":1,"105":1,"107":2,"108":2,"110":2,"112":3,"115":1,"120":2,"122":1,"127":4,"130":1,"134":1}}],["ifelse",{"2":{"12":1}}],["if",{"2":{"1":1,"4":1,"7":1,"43":2,"44":1,"72":1,"73":1,"76":1,"86":2,"87":2,"89":1,"94":3,"95":2,"103":1,"110":1,"115":2,"116":1,"120":3,"121":4,"122":1,"127":3,"133":1,"134":3,"137":3}}],["inertial",{"2":{"121":1}}],["inner",{"2":{"99":2,"115":1,"123":1}}],["init",{"2":{"87":1}}],["initiated",{"2":{"37":1}}],["initialized",{"2":{"121":2}}],["initializers",{"0":{"118":1}}],["initialize",{"2":{"60":4,"120":1,"121":8}}],["initially",{"2":{"26":1,"29":1,"43":1,"46":1}}],["initial",{"2":{"15":1,"19":1,"22":1,"26":1,"29":1,"32":1,"43":1,"46":1,"49":1,"52":1,"55":1,"56":1,"58":1,"60":1,"62":1,"64":1,"66":1,"73":1,"87":3,"91":2,"118":1,"134":1,"137":1}}],["initialvalues",{"2":{"12":1}}],["inds",{"2":{"133":1}}],["indexed",{"2":{"122":1}}],["index",{"2":{"110":2,"116":3,"122":2,"124":4}}],["independently",{"2":{"87":1}}],["indices",{"2":{"60":1,"61":1,"110":5,"115":1,"122":1}}],["indirectarrays",{"2":{"12":1}}],["input",{"2":{"87":4,"93":1,"98":1,"109":1,"137":1}}],["inputs",{"2":{"83":1,"99":1}}],["inverting",{"2":{"135":1}}],["inverse",{"2":{"105":1}}],["inversefunctions",{"2":{"12":1}}],["invariants",{"2":{"110":1}}],["involving",{"2":{"86":1}}],["involve",{"2":{"86":1}}],["inline",{"2":{"77":1}}],["inlet",{"2":{"13":1,"19":1,"49":1}}],["introduces",{"2":{"137":1}}],["into",{"2":{"82":1,"86":1,"87":3,"133":1,"134":1,"137":1}}],["int64",{"2":{"60":56,"86":1,"93":5,"97":4,"99":4,"121":1}}],["integrated",{"2":{"134":1}}],["integration",{"2":{"134":1}}],["integrating",{"2":{"131":1}}],["integrals",{"2":{"123":2,"131":1}}],["integral",{"0":{"101":1},"2":{"101":2,"110":1,"123":2}}],["integer",{"2":{"120":1}}],["intelopenmp",{"2":{"12":1}}],["interpreted",{"2":{"122":1}}],["interpolation",{"2":{"112":2,"116":1,"123":1}}],["interpolations",{"2":{"12":1}}],["interpolated",{"2":{"110":1}}],["interpolate",{"2":{"8":2,"84":2,"110":10,"129":1}}],["interest",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1}}],["interfaces",{"2":{"94":1}}],["intermediate",{"2":{"90":1,"137":1}}],["intervals",{"2":{"134":1}}],["intervalsets",{"2":{"12":1}}],["interval",{"2":{"134":1}}],["intervalarithmetic",{"2":{"12":1}}],["interactiveutils",{"2":{"11":2,"12":1}}],["interactively",{"2":{"5":1}}],["interactive",{"2":{"4":1,"11":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"86":1,"121":1}}],["injected",{"2":{"37":1}}],["instead",{"2":{"122":2,"127":2,"137":1}}],["instability",{"0":{"62":1,"64":1},"1":{"63":1,"65":1}}],["instabilities",{"2":{"60":1}}],["instantiate",{"2":{"5":2,"117":1}}],["instantiated",{"2":{"5":1}}],["install",{"2":{"3":1,"82":2,"94":1,"112":1}}],["inspecting",{"2":{"44":1}}],["inside",{"2":{"15":2,"18":2,"19":2,"21":2,"93":1}}],["influence",{"2":{"135":1}}],["inflow",{"2":{"15":5,"18":3,"19":1,"26":4,"29":4,"49":1,"52":1,"98":1,"127":3}}],["inflate",{"2":{"12":1}}],["info",{"2":{"11":2,"12":1,"16":10,"23":7,"60":2,"62":10,"69":1,"70":1}}],["information",{"2":{"0":1,"112":1,"121":1}}],["increment",{"2":{"134":1,"137":1}}],["incremented",{"2":{"124":1}}],["includes",{"2":{"134":1}}],["include",{"2":{"110":1,"112":1}}],["included",{"2":{"9":1,"97":1}}],["including",{"2":{"9":2,"43":1,"116":2,"126":1}}],["incompressible",{"0":{"100":1},"1":{"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1},"2":{"8":1,"100":1,"105":1,"147":5}}],["incompressiblenavierstokesmakieext",{"2":{"60":3}}],["incompressiblenavierstokes",{"0":{"8":1,"112":1},"1":{"113":1},"2":{"4":1,"5":3,"8":3,"9":1,"12":3,"14":1,"18":1,"19":1,"21":1,"23":2,"25":1,"26":1,"28":1,"29":1,"31":1,"32":1,"36":1,"38":2,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"60":15,"61":1,"62":3,"63":1,"64":2,"65":2,"66":1,"68":1,"69":3,"70":1,"71":1,"76":1,"82":3,"83":4,"84":1,"89":1,"91":1,"92":1,"93":2,"94":1,"96":1,"97":2,"98":1,"99":10,"109":1,"110":54,"111":18,"112":2,"113":3,"115":18,"116":6,"117":2,"118":5,"120":3,"121":16,"132":2,"133":7,"134":9,"135":2,"136":2,"137":9,"138":37,"139":16,"140":9,"141":33,"142":12,"143":30,"144":9,"145":12}}],["in",{"0":{"62":1,"64":1,"112":1},"1":{"63":1,"65":1,"113":1},"2":{"0":2,"4":1,"5":3,"6":2,"7":1,"9":6,"13":2,"19":2,"22":2,"26":1,"29":1,"32":2,"37":1,"43":3,"44":2,"46":1,"49":4,"51":2,"52":1,"55":3,"58":1,"60":1,"66":1,"69":3,"70":1,"71":1,"72":3,"77":1,"84":1,"85":2,"87":2,"89":1,"90":3,"91":1,"92":5,"93":5,"95":1,"96":1,"97":1,"101":1,"103":2,"107":2,"108":2,"110":35,"111":4,"112":4,"113":2,"115":3,"116":8,"117":2,"118":1,"120":1,"121":9,"122":6,"123":13,"124":2,"125":1,"126":1,"127":2,"130":1,"131":1,"132":2,"133":1,"134":7,"135":2,"147":2}}],["gq+yg",{"2":{"136":1}}],["gδp+yg",{"2":{"135":1}}],["g=wu−1mtw",{"2":{"126":1}}],["gp0+yg",{"2":{"135":2}}],["gp+yg",{"2":{"134":1}}],["gph+yg",{"2":{"126":2}}],["gpus",{"2":{"43":1,"94":1,"109":1}}],["gpu",{"0":{"94":1},"2":{"43":2,"94":2,"109":1,"110":1}}],["gpucompiler",{"2":{"12":1}}],["gpuarrayscore",{"2":{"12":1}}],["gpuarrays",{"2":{"12":1}}],["gt",{"2":{"115":2,"134":1}}],["ghost",{"2":{"99":1,"116":2}}],["garbage",{"2":{"92":1}}],["gallery",{"0":{"77":1},"1":{"78":1,"79":1,"80":1,"81":1},"2":{"77":1,"82":1}}],["goes",{"2":{"120":1}}],["governing",{"2":{"105":1}}],["governed",{"2":{"83":1}}],["go",{"2":{"99":1}}],["good",{"2":{"90":1}}],["gdir",{"2":{"58":1,"59":1,"60":8,"61":1,"62":1,"63":1,"64":1,"65":1,"117":2,"132":2}}],["gif",{"2":{"121":1}}],["giflib",{"2":{"12":1}}],["give",{"2":{"95":1,"98":1,"121":1}}],["gives",{"2":{"83":1,"97":1,"116":1,"123":1}}],["given",{"2":{"69":1,"83":1,"86":1,"95":2,"107":2,"110":4,"113":1,"115":1,"120":1,"125":1,"134":1,"135":2,"136":3,"137":1}}],["git",{"2":{"12":2}}],["github",{"2":{"0":1,"1":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"83":2,"110":1,"112":1}}],["gl3",{"2":{"137":1,"141":2}}],["gl2",{"2":{"137":1,"141":2}}],["gl1",{"2":{"137":1,"141":2}}],["glib",{"2":{"12":1}}],["glmakie",{"2":{"12":1,"14":1,"18":1,"19":1,"21":1,"25":1,"26":1,"28":1,"29":1,"31":1,"36":1,"42":1,"43":1,"45":1,"48":1,"51":1,"52":1,"54":1,"55":1,"57":1,"59":1,"61":5,"63":1,"65":1,"66":1,"68":1,"70":1,"76":1,"86":1,"121":2}}],["glfw",{"2":{"12":2}}],["global",{"2":{"4":1,"66":1,"95":1}}],["gcnn",{"2":{"87":1}}],["gc",{"2":{"11":1}}],["gnu",{"2":{"11":1}}],["gebhart",{"2":{"117":1,"132":1}}],["ge",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["generator",{"2":{"133":1}}],["generation",{"0":{"88":1}}],["generates",{"2":{"109":1}}],["generate",{"2":{"58":1,"60":1}}],["generated",{"2":{"11":1,"12":1,"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"65":1,"68":1,"69":1,"70":1,"76":1,"77":1}}],["generic",{"2":{"15":1,"60":2,"69":1,"93":1}}],["geometrybasics",{"2":{"12":1}}],["geointerface",{"2":{"12":1}}],["geoformattypes",{"2":{"12":1}}],["getval",{"2":{"133":1}}],["gets",{"2":{"121":1}}],["getting",{"0":{"82":1}}],["gettext",{"2":{"12":1}}],["getoffset",{"2":{"8":1,"133":1}}],["get",{"2":{"0":1,"8":2,"82":1,"98":1,"99":1,"110":3,"111":1,"115":1,"116":1,"120":4,"133":8,"134":2,"137":1}}],["green",{"0":{"69":1,"71":1},"1":{"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"69":2,"71":1}}],["groupconv2d",{"2":{"87":2}}],["group",{"2":{"22":1,"32":1,"87":3,"135":1}}],["grisu",{"2":{"12":1}}],["gridlayoutbase",{"2":{"12":1}}],["grid",{"0":{"116":1},"2":{"8":3,"15":1,"19":1,"26":3,"28":1,"29":1,"39":1,"43":3,"45":2,"46":4,"48":2,"49":1,"52":1,"55":2,"57":1,"58":3,"59":3,"60":11,"61":4,"62":3,"63":2,"64":1,"65":1,"66":1,"69":1,"70":1,"85":2,"87":1,"91":1,"93":1,"95":8,"97":1,"98":1,"113":1,"116":18,"122":1,"125":1,"129":1,"133":1,"147":1}}],["gradients",{"2":{"89":1,"111":2}}],["gradient",{"0":{"91":1,"93":1},"2":{"60":2,"61":1,"91":2,"93":2,"99":1,"110":6,"126":3,"127":1}}],["graphite2",{"2":{"12":1}}],["graphics",{"2":{"12":1,"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1}}],["granted",{"2":{"9":1}}],["gravity",{"2":{"8":1,"110":4,"117":1,"132":2}}],["g",{"2":{"3":1,"83":1,"86":2,"87":3,"90":2,"91":3,"94":1,"99":2,"110":2,"124":1}}],["brenner",{"2":{"147":1}}],["break",{"2":{"109":1}}],["brasey",{"2":{"140":2}}],["bα",{"2":{"122":2}}],["b−a",{"2":{"116":3}}],["blog",{"2":{"110":1}}],["blas",{"2":{"90":1,"92":1}}],["blade",{"2":{"13":2,"19":2,"49":2}}],["bénard",{"0":{"58":1,"60":1},"1":{"59":1,"61":1}}],["b",{"2":{"55":3,"57":2,"69":2,"70":2,"97":2,"98":2,"110":8,"111":2,"116":10,"134":1,"137":3,"147":9}}],["bool",{"2":{"60":17,"111":2,"121":5}}],["both",{"2":{"60":1,"115":1}}],["bottom",{"2":{"26":1,"29":2,"31":1,"43":1,"45":1,"46":1,"48":1,"60":1,"77":1}}],["boundaries",{"2":{"29":1,"116":1,"122":1}}],["boundary",{"0":{"79":1,"98":1,"102":1,"115":1,"124":1},"2":{"15":3,"18":2,"19":2,"21":2,"26":3,"28":2,"29":3,"31":2,"43":3,"44":1,"45":2,"46":3,"48":2,"49":2,"51":2,"52":3,"54":2,"55":2,"57":2,"58":2,"59":2,"60":15,"61":2,"62":2,"63":2,"64":2,"65":2,"93":1,"97":2,"98":6,"99":7,"101":1,"102":3,"103":1,"113":1,"115":29,"116":2,"117":3,"118":2,"122":1,"126":5,"127":3,"132":2,"134":1,"147":1}}],["boxplotter",{"2":{"49":1,"51":1}}],["boxes",{"2":{"49":3,"50":3,"51":6}}],["box",{"2":{"17":4,"18":4,"37":1,"43":2,"46":1,"49":3,"51":3,"58":1,"60":1,"93":1,"116":1}}],["bodyforce",{"2":{"15":3,"18":2,"19":2,"21":2,"39":1,"40":1,"42":2,"49":7,"51":7,"60":6,"93":1,"97":1,"98":1,"117":1}}],["body",{"0":{"40":1},"2":{"13":1,"15":1,"19":2,"39":1,"49":2,"100":2,"110":2,"135":1}}],["b77e0a4c",{"2":{"12":1}}],["b27032c2",{"2":{"12":1}}],["b22a6f82",{"2":{"12":1}}],["b2108857",{"2":{"12":1}}],["bzip2",{"2":{"12":1}}],["bd369af6",{"2":{"12":1}}],["b3c3ace0",{"2":{"12":1}}],["b38be410",{"2":{"12":1}}],["b1df2697",{"2":{"12":1}}],["b14d175d",{"2":{"12":1}}],["bbf590c4",{"2":{"12":1}}],["bbf7d656",{"2":{"12":1}}],["bb33d45b",{"2":{"12":1}}],["b964fa9f",{"2":{"12":1}}],["b9860ae5",{"2":{"12":1}}],["b835a17e",{"2":{"12":1}}],["b53b4c65",{"2":{"12":1}}],["b5f81e59",{"2":{"12":1}}],["b552c78f",{"2":{"12":1}}],["b0b7db55",{"2":{"12":1}}],["bias",{"2":{"87":2}}],["bittwiddlingconveniencefunctions",{"2":{"12":1}}],["bibliography",{"0":{"147":1},"2":{"12":1}}],["bibparser",{"2":{"12":1}}],["bibinternal",{"2":{"12":1}}],["bibtex",{"2":{"0":1}}],["bashforth",{"0":{"135":1},"2":{"134":1,"135":3}}],["basis",{"2":{"110":2}}],["based",{"2":{"133":1,"142":1}}],["baseline",{"2":{"95":2}}],["baselet",{"2":{"12":1}}],["base",{"2":{"60":6,"93":1,"111":1}}],["base64",{"2":{"12":1}}],["batch",{"2":{"86":2}}],["batchsize",{"2":{"86":2}}],["back",{"2":{"89":1,"99":1,"120":1,"132":1}}],["backwardfacingstep3d",{"2":{"29":1,"31":1}}],["backwardfacingstep2d",{"2":{"26":1,"28":1}}],["backward",{"0":{"26":1,"29":1},"1":{"27":1,"28":1,"30":1,"31":1},"2":{"90":1,"139":1}}],["backend",{"0":{"72":1},"2":{"14":1,"19":4,"21":3,"23":1,"26":4,"28":3,"29":4,"31":3,"33":2,"36":3,"43":4,"45":3,"46":3,"48":3,"49":3,"51":3,"52":1,"55":5,"57":4,"58":2,"59":3,"60":8,"61":3,"62":1,"63":2,"64":2,"65":3,"66":4,"68":3,"69":2,"70":2,"72":1,"73":1,"76":3,"88":1,"90":1,"93":1,"94":3,"97":1,"98":1,"110":1,"116":1,"117":3}}],["bac558e1",{"2":{"12":1}}],["bangbang",{"2":{"12":1}}],["bar",{"2":{"6":1}}],["bc367c6b",{"2":{"12":1}}],["bc",{"2":{"8":6,"19":1,"97":2,"98":4,"99":3,"111":1,"115":16}}],["be11",{"2":{"137":1,"139":1}}],["beta",{"0":{"136":1},"2":{"134":1}}],["between",{"2":{"43":1,"86":1,"110":2,"116":1,"121":1}}],["before",{"2":{"121":1,"124":1,"129":1,"135":1,"137":1}}],["beneficial",{"2":{"117":1}}],["benjamin",{"2":{"9":1,"137":1}}],["beginning",{"2":{"115":1}}],["being",{"2":{"110":1}}],["been",{"2":{"94":3,"126":1}}],["beck",{"2":{"147":1}}],["become",{"2":{"97":1,"126":1,"127":1}}],["becomes",{"2":{"85":1,"103":1,"126":1}}],["because",{"2":{"90":1}}],["below",{"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"96":1,"120":1,"122":1}}],["bea87d4a",{"2":{"12":1}}],["be",{"2":{"5":4,"6":1,"7":1,"9":2,"12":1,"43":3,"44":1,"46":1,"77":1,"83":1,"84":1,"87":1,"90":1,"92":2,"93":3,"94":2,"95":5,"96":1,"98":2,"99":1,"100":1,"108":2,"109":1,"110":3,"111":1,"112":1,"113":1,"115":2,"117":1,"121":3,"122":3,"125":1,"127":4,"132":1,"134":3,"135":2,"137":2}}],["business",{"2":{"147":1}}],["buf",{"2":{"120":1}}],["built",{"2":{"43":1,"110":1}}],["building",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1}}],["build",{"2":{"5":1,"11":1,"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"60":1,"62":1,"66":1,"69":1,"137":2}}],["butcher",{"2":{"137":2}}],["but",{"2":{"5":1,"9":1,"12":1,"14":1,"19":1,"22":1,"26":2,"29":2,"32":1,"43":3,"52":1,"55":1,"66":1,"86":1,"125":1,"134":1,"143":1}}],["button",{"2":{"0":1,"6":1}}],["by",{"2":{"3":1,"5":1,"6":1,"7":1,"8":1,"12":1,"19":1,"26":1,"29":1,"43":5,"52":1,"55":1,"66":1,"69":1,"72":1,"83":2,"86":1,"87":1,"93":2,"94":1,"97":1,"98":2,"101":1,"106":1,"107":2,"108":2,"110":5,"112":1,"115":1,"116":1,"117":1,"118":1,"121":3,"122":2,"123":3,"125":2,"126":1,"127":1,"129":1,"132":1,"134":1,"135":3,"136":4,"137":4}}],["o",{"2":{"147":1}}],["oliva",{"2":{"147":1}}],["o=ωi",{"2":{"123":2}}],["o⊂ω",{"2":{"101":1}}],["own",{"2":{"97":1,"123":1}}],["odeproblem",{"2":{"112":2}}],["odesolution",{"2":{"112":1}}],["odes",{"2":{"112":1}}],["ode",{"2":{"86":2,"134":4}}],["our",{"2":{"44":1,"69":1,"122":1}}],["outer",{"2":{"123":1,"137":1}}],["outside",{"2":{"115":1,"123":1}}],["outlet",{"2":{"115":1}}],["outdir",{"2":{"20":1,"21":2,"26":1,"27":1,"28":3,"29":1,"30":1,"31":3,"34":1,"36":1,"43":1,"44":2,"45":3,"46":1,"47":1,"48":3,"50":1,"51":2,"52":1,"53":1,"54":3,"55":1,"56":1,"57":3,"58":1,"59":2,"61":1,"63":1,"64":1,"65":2,"66":1,"67":1,"68":3,"69":3,"70":4,"74":1,"76":1}}],["outdated",{"2":{"12":1}}],["output",{"0":{"128":1},"1":{"129":1,"130":1},"2":{"18":1,"19":2,"21":2,"25":1,"26":2,"28":2,"29":2,"31":2,"36":1,"42":1,"43":1,"45":2,"46":1,"48":2,"49":2,"51":2,"52":2,"54":2,"55":2,"57":2,"58":2,"59":2,"60":3,"61":2,"62":3,"63":2,"64":2,"65":2,"66":2,"68":2,"69":3,"70":2,"76":1,"87":1,"92":1,"93":3,"121":1}}],["outputs",{"2":{"16":1,"18":1,"19":1,"21":2,"23":1,"25":3,"26":1,"28":1,"29":1,"31":1,"34":1,"35":2,"36":4,"41":1,"42":4,"43":2,"44":8,"45":8,"46":1,"48":2,"49":1,"51":1,"52":1,"54":2,"55":1,"57":2,"58":1,"59":1,"60":1,"61":3,"62":1,"63":1,"64":1,"65":1,"66":1,"68":2,"69":1,"70":1,"74":1,"76":3,"77":1,"91":1,"120":3}}],["out",{"2":{"9":1,"49":3,"51":3,"82":1,"85":1,"93":1,"112":1,"134":1}}],["over",{"2":{"15":1,"19":1,"49":1,"85":2,"89":1,"112":1,"131":1}}],["ogg",{"2":{"12":1}}],["opposite",{"2":{"115":1}}],["opt",{"2":{"86":4}}],["optimal",{"2":{"138":2,"139":2}}],["optimized",{"2":{"92":1}}],["optimiser",{"2":{"86":2}}],["optimisers",{"2":{"12":1}}],["options",{"2":{"111":1,"112":1,"117":1}}],["optional",{"2":{"43":1,"137":1}}],["option",{"2":{"43":1}}],["operation",{"2":{"91":1}}],["operations",{"2":{"91":1,"110":1}}],["operating",{"2":{"87":1}}],["operator",{"2":{"87":1,"99":1,"110":1,"122":2,"123":1,"126":4,"127":3}}],["operators",{"0":{"110":1},"2":{"19":1,"26":1,"29":1,"43":2,"46":1,"49":1,"52":1,"55":1,"66":1,"90":2,"94":2,"96":2,"97":4,"110":2,"126":2}}],["opened",{"2":{"44":1}}],["openexr",{"2":{"12":2}}],["openlibm",{"2":{"12":1}}],["openblas",{"2":{"12":1}}],["openspecfun",{"2":{"12":1}}],["openssl",{"2":{"12":1}}],["open",{"2":{"1":1,"6":1,"82":1}}],["opus",{"2":{"12":1}}],["os",{"2":{"11":1}}],["object",{"2":{"93":1}}],["objectfile",{"2":{"12":1}}],["obtain",{"2":{"134":1,"135":1}}],["obtained",{"2":{"43":1,"46":1,"86":1,"93":1,"112":1,"123":1,"125":1,"136":1}}],["obtaining",{"2":{"9":1,"112":1}}],["observable",{"2":{"60":6,"61":6,"120":1,"121":3}}],["observables",{"2":{"12":1}}],["observe",{"2":{"60":1,"61":1,"121":2}}],["observer",{"2":{"60":2}}],["observespectrum",{"2":{"8":1,"121":2}}],["observefield",{"2":{"8":1,"121":1}}],["other",{"0":{"104":1},"1":{"105":1,"106":1,"107":1,"108":1},"2":{"7":1,"9":2,"94":1,"95":1,"137":1}}],["otherwise",{"2":{"6":1,"9":1,"87":1,"110":1,"115":1,"116":1,"122":1}}],["orlandi",{"2":{"147":1}}],["original",{"2":{"55":1,"137":1}}],["order",{"0":{"125":1},"2":{"43":1,"55":1,"66":1,"93":1,"111":1,"112":1,"125":5,"126":1,"134":1,"135":5,"136":1,"137":3,"138":2,"139":3,"140":1,"143":4,"147":2}}],["orderedcollections",{"2":{"12":1}}],["ordinarydiffeqtsit5",{"2":{"12":1,"112":3}}],["ordinarydiffeqcore",{"2":{"12":1}}],["orcjit",{"2":{"11":1}}],["organization",{"2":{"112":1}}],["org",{"2":{"11":1,"147":1}}],["or",{"2":{"1":2,"5":1,"6":1,"7":1,"9":9,"20":1,"24":1,"27":1,"30":1,"43":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"72":1,"82":1,"86":1,"87":1,"92":2,"97":1,"98":1,"102":1,"109":2,"110":1,"115":1,"122":3,"137":1}}],["once",{"2":{"137":1}}],["onto",{"2":{"111":2,"127":1}}],["only",{"2":{"92":1,"94":1,"95":1,"97":1,"98":1,"99":2,"103":2,"105":1,"109":2,"126":1,"127":3,"137":1}}],["oneapi",{"2":{"94":1}}],["onetbb",{"2":{"12":1}}],["onelegmethod",{"2":{"8":1,"136":2}}],["one",{"0":{"136":1},"2":{"6":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"49":2,"51":2,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"92":1,"93":1,"102":1,"112":1,"115":2,"121":1,"122":1,"123":1,"124":1,"127":1,"134":3,"136":1,"137":4}}],["on",{"2":{"0":2,"5":2,"6":1,"7":1,"11":1,"13":1,"14":1,"19":2,"26":2,"29":2,"43":5,"49":1,"52":1,"55":2,"57":1,"60":5,"61":3,"66":1,"72":1,"83":1,"86":1,"87":1,"92":1,"94":1,"95":4,"97":3,"98":2,"99":1,"102":4,"110":2,"112":2,"115":3,"120":1,"121":3,"123":1,"125":1,"129":1,"133":1,"135":2,"147":1}}],["offenhäuser",{"2":{"147":1}}],["offstep",{"2":{"136":1}}],["offset",{"2":{"110":3,"115":2,"133":1}}],["offsetarrays",{"2":{"12":1}}],["off",{"2":{"87":2}}],["official",{"2":{"11":1}}],["of",{"0":{"91":1,"93":1,"104":1,"123":1,"145":1},"1":{"105":1,"106":1,"107":1,"108":1},"2":{"0":1,"6":1,"9":8,"15":1,"18":1,"19":1,"21":1,"25":1,"26":2,"28":1,"29":2,"31":1,"36":1,"42":1,"43":3,"45":1,"46":2,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"59":1,"61":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"76":1,"77":2,"83":1,"85":1,"86":2,"87":4,"90":3,"91":3,"92":3,"93":10,"95":4,"96":2,"97":3,"98":1,"99":2,"100":4,"101":1,"102":3,"103":2,"105":1,"107":1,"110":10,"111":1,"112":6,"113":3,"115":8,"116":17,"117":1,"118":1,"120":1,"121":7,"122":7,"123":2,"126":2,"127":11,"132":1,"133":3,"134":6,"135":4,"136":1,"137":8,"139":2,"147":22}}],["t−1",{"2":{"135":2}}],["t−1=t0−δt",{"2":{"135":1,"136":1}}],["t−δt",{"2":{"127":1}}],["tn=t",{"2":{"134":1}}],["tn+1",{"2":{"134":1}}],["tn",{"2":{"134":4,"137":1}}],["t=t0+δt",{"2":{"135":1,"137":1}}],["t=2",{"2":{"121":2}}],["t=0",{"2":{"121":1}}],["t=$",{"2":{"121":1}}],["ts=t",{"2":{"137":1}}],["tspan",{"2":{"112":2}}],["tsit5",{"2":{"112":2}}],["tsim",{"2":{"88":1}}],["t0−δt",{"2":{"135":1}}],["t0=0",{"2":{"134":1}}],["t0",{"2":{"110":1,"135":12,"136":1,"137":5}}],["tv",{"2":{"99":8}}],["t3fv",{"2":{"93":1}}],["tburn",{"2":{"88":1}}],["ty0",{"2":{"60":2,"61":2}}],["ty",{"2":{"60":6,"61":6}}],["typically",{"2":{"115":1,"122":1}}],["typing",{"2":{"6":1}}],["types",{"2":{"43":1,"94":1,"121":2}}],["type",{"2":{"19":1,"26":1,"29":1,"43":2,"46":1,"55":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"82":2,"85":1,"109":1,"115":2,"117":3,"132":3,"134":2,"137":3}}],["typeof",{"2":{"15":1,"26":1,"28":1,"60":3,"69":1,"70":1}}],["typos",{"2":{"1":1}}],["twice",{"2":{"43":1}}],["two",{"2":{"15":1,"26":1,"43":2,"49":1,"52":1,"55":1,"62":1,"64":1,"66":1,"89":1,"90":1,"97":2,"123":1,"147":2}}],["turnover",{"2":{"110":1}}],["turbulent",{"2":{"22":1,"32":1,"95":1,"136":1,"147":4}}],["turbulence",{"0":{"22":1,"32":1},"1":{"23":1,"24":1,"25":1,"33":1,"34":1,"35":1,"36":1},"2":{"22":1,"32":1,"55":1,"147":5}}],["turbine",{"2":{"13":1,"19":1,"49":1}}],["tuple",{"2":{"44":1,"60":104,"86":2,"87":5,"93":2,"98":1,"110":4,"111":1,"116":3,"117":2,"120":1,"121":2,"132":1,"133":4}}],["tutorial",{"0":{"43":1},"1":{"44":1,"45":1}}],["tlims",{"2":{"16":1,"18":1,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":7,"70":7,"74":1,"76":1,"120":1}}],["t",{"2":{"15":3,"16":10,"18":3,"19":14,"21":15,"23":7,"26":9,"28":10,"29":11,"31":12,"33":4,"34":2,"36":6,"39":1,"42":1,"43":12,"45":10,"46":14,"48":15,"49":23,"51":24,"52":2,"54":2,"55":51,"56":2,"57":54,"58":26,"59":27,"60":26,"61":25,"62":22,"63":13,"64":21,"65":22,"66":13,"68":14,"69":6,"70":4,"72":1,"73":3,"74":3,"76":7,"87":2,"91":1,"93":2,"94":1,"100":1,"110":4,"111":3,"112":6,"113":3,"115":8,"118":5,"120":5,"121":2,"123":2,"127":1,"134":7,"135":9,"136":5,"137":10}}],["treatment",{"2":{"147":1}}],["treated",{"2":{"87":1}}],["trias",{"2":{"116":1,"147":2}}],["trivial",{"2":{"66":1}}],["triplotbase",{"2":{"12":1}}],["try",{"2":{"60":1}}],["trajectory",{"2":{"86":1}}],["trajectories",{"2":{"86":1}}],["trainepoch",{"2":{"86":1}}],["trained",{"2":{"83":1,"86":1}}],["trainstate",{"2":{"86":2}}],["train",{"2":{"86":1}}],["training",{"0":{"86":1},"2":{"88":1,"147":1}}],["track",{"2":{"60":2}}],["translation",{"2":{"102":1}}],["translations",{"2":{"87":1}}],["transpose",{"2":{"99":1}}],["transfer",{"2":{"95":2}}],["transforms",{"2":{"87":1,"94":1}}],["transducers",{"2":{"12":1}}],["transcodingstreams",{"2":{"12":1}}],["truncation",{"2":{"143":1}}],["truncatedstacktraces",{"2":{"12":1}}],["true",{"2":{"15":1,"18":1,"39":1,"42":1,"49":1,"51":1,"58":1,"59":1,"60":12,"61":1,"62":1,"63":1,"64":1,"65":1,"86":1,"110":2}}],["ti",{"2":{"137":5}}],["ti−1",{"2":{"137":2}}],["ti=t0+δti",{"2":{"137":1}}],["title",{"2":{"55":2,"57":2,"60":2,"61":2,"69":1,"70":1}}],["tiffimages",{"2":{"12":1}}],["times",{"2":{"87":1,"116":2,"122":1,"125":2}}],["timestepping",{"2":{"121":1}}],["timestep",{"2":{"8":1,"91":1,"120":2,"134":4}}],["time",{"0":{"134":1},"1":{"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"14":1,"19":2,"26":2,"29":2,"43":5,"44":1,"46":1,"52":1,"55":2,"58":1,"59":1,"64":1,"65":1,"66":1,"69":1,"70":1,"91":1,"100":1,"103":2,"110":1,"111":1,"112":1,"113":1,"118":2,"120":4,"121":24,"123":1,"127":2,"134":14,"135":9,"136":3,"137":8,"147":1}}],["timeroutputs",{"2":{"12":1}}],["timelogger",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"36":1,"41":1,"42":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":1,"76":1,"121":1}}],["taking",{"2":{"103":1}}],["takes",{"2":{"99":1,"112":1}}],["take",{"2":{"86":1}}],["taylorgreenvortex2d",{"2":{"69":2,"70":1}}],["taylor",{"0":{"62":1,"64":1,"69":1,"71":1},"1":{"63":1,"65":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1},"2":{"69":2,"71":1,"110":2}}],["tar",{"2":{"12":1}}],["tableau",{"2":{"137":1}}],["tables",{"2":{"12":1}}],["tabletraits",{"2":{"12":1}}],["tanh",{"2":{"8":1,"52":2,"54":2,"55":14,"57":14,"58":2,"59":2,"60":2,"61":2,"62":2,"63":2,"66":4,"68":4,"116":2}}],["tentative",{"2":{"135":2,"136":1,"137":1}}],["tensors",{"2":{"110":2}}],["tensor",{"2":{"110":6}}],["tensorcore",{"2":{"12":1}}],["tensorbasis",{"2":{"8":1,"110":2}}],["terms",{"2":{"110":1,"120":1,"122":1,"135":3}}],["term",{"2":{"110":12,"123":3,"126":2,"127":2,"132":1,"134":2}}],["tested",{"2":{"94":2}}],["test",{"2":{"12":1,"55":1,"69":1}}],["testitems",{"2":{"12":1}}],["tempfunc",{"2":{"118":2}}],["tempstart",{"2":{"58":3,"59":3,"60":2,"61":2,"62":2,"63":2,"64":3,"65":3,"120":1}}],["temperatures",{"2":{"62":1,"64":1}}],["temperaturefield",{"2":{"8":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"118":2}}],["temperature",{"0":{"80":1,"132":1},"2":{"8":1,"58":8,"59":8,"60":15,"61":6,"62":4,"63":5,"64":9,"65":8,"93":1,"97":1,"98":1,"99":1,"110":4,"115":2,"117":4,"118":1,"132":9}}],["temp",{"2":{"8":3,"58":1,"59":1,"60":7,"61":7,"64":1,"65":1,"91":1,"99":2,"110":10,"111":2,"115":6,"120":2,"134":2}}],["thuerey",{"2":{"147":1}}],["thus",{"2":{"91":1,"97":1,"123":1,"124":1,"127":1,"137":1}}],["though",{"2":{"137":1}}],["those",{"2":{"12":2,"115":2}}],["th",{"2":{"122":1}}],["than",{"2":{"72":1,"87":1,"112":1}}],["that",{"2":{"5":2,"55":1,"82":1,"83":1,"84":1,"86":1,"89":1,"91":1,"92":3,"93":3,"95":1,"97":1,"98":2,"99":1,"100":1,"103":1,"107":1,"108":2,"110":1,"112":2,"113":2,"116":3,"120":2,"121":3,"123":3,"127":1,"133":1,"134":3,"135":2,"136":1,"137":3}}],["through",{"0":{"89":1},"1":{"90":1,"91":1,"92":1,"93":1},"2":{"86":1,"89":1,"130":1,"132":1}}],["three",{"2":{"19":1,"29":1,"46":1,"87":1,"117":1,"125":2,"132":1,"147":1}}],["thread",{"2":{"117":1}}],["threaded",{"2":{"117":1}}],["threadingutilities",{"2":{"12":1}}],["threads",{"2":{"11":1,"72":1,"94":1}}],["thrust",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1}}],["third",{"2":{"143":1}}],["thickness",{"2":{"15":1,"18":1,"19":1,"21":1}}],["things",{"2":{"92":1}}],["thin",{"2":{"13":1,"15":1,"49":2}}],["this",{"2":{"0":1,"3":1,"5":3,"6":1,"9":2,"13":1,"14":1,"18":2,"19":2,"21":2,"22":1,"25":2,"26":2,"28":2,"29":2,"31":2,"32":1,"36":2,"42":2,"43":3,"44":1,"45":2,"46":1,"48":2,"49":1,"51":2,"52":1,"54":2,"55":1,"57":2,"58":1,"59":2,"61":2,"63":2,"64":1,"65":2,"66":1,"68":2,"69":1,"70":2,"71":1,"72":1,"76":2,"90":2,"92":1,"93":3,"94":2,"95":3,"98":1,"99":3,"103":2,"110":2,"111":2,"112":2,"117":1,"121":2,"122":1,"123":1,"127":2,"133":1,"134":4,"135":3,"137":2,"141":1,"142":1}}],["them",{"2":{"120":1}}],["themselves",{"2":{"95":1}}],["these",{"2":{"83":1,"95":3,"110":1,"123":1}}],["their",{"2":{"43":1,"83":1,"97":1,"123":3,"126":1,"136":1}}],["they",{"2":{"5":1,"94":2,"95":1,"121":1,"134":1}}],["then",{"2":{"4":1,"6":1,"7":1,"43":1,"85":1,"87":1,"93":2,"94":1,"115":3,"116":1,"121":1,"127":1,"135":2,"136":1,"137":1}}],["therefore",{"2":{"96":1,"129":1}}],["there",{"2":{"4":1,"5":1,"95":1,"103":1,"111":1}}],["the",{"0":{"89":1,"93":1,"123":1},"1":{"90":1,"91":1,"92":1,"93":1},"2":{"0":6,"1":1,"3":2,"4":3,"5":8,"6":5,"7":1,"8":2,"9":14,"11":2,"12":2,"13":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":3,"24":1,"25":1,"26":8,"27":1,"28":1,"29":6,"30":1,"31":1,"32":3,"36":1,"37":3,"38":1,"40":1,"42":1,"43":21,"44":5,"45":1,"46":6,"47":1,"48":1,"49":1,"50":1,"51":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"63":1,"64":1,"65":1,"67":1,"68":1,"69":2,"70":1,"71":1,"72":1,"76":1,"77":4,"82":2,"83":8,"84":1,"85":4,"86":20,"87":14,"89":6,"90":7,"91":5,"92":8,"93":23,"94":4,"95":25,"96":2,"97":15,"98":8,"99":6,"100":9,"101":4,"102":4,"103":9,"105":5,"106":1,"107":4,"108":2,"109":2,"110":28,"111":10,"112":19,"113":15,"115":21,"116":12,"117":5,"118":2,"120":10,"121":50,"122":13,"123":35,"124":5,"125":7,"126":24,"127":30,"129":7,"130":3,"131":11,"132":8,"133":1,"134":26,"135":25,"136":8,"137":21,"143":4,"147":6}}],["toolkit",{"2":{"147":1}}],["toolchains",{"2":{"112":1}}],["tools",{"2":{"84":1,"92":1,"112":2}}],["too",{"2":{"95":2}}],["top",{"2":{"26":2,"29":3,"31":1,"43":1,"45":1,"46":2,"48":1,"60":1,"115":1}}],["tort",{"2":{"9":1}}],["total",{"2":{"8":1,"106":1,"110":2}}],["toml`",{"2":{"12":1}}],["toml",{"2":{"5":2,"7":1,"12":1}}],["to",{"2":{"0":2,"1":2,"4":3,"5":8,"9":8,"12":1,"17":1,"20":1,"22":3,"27":1,"30":1,"32":3,"43":4,"44":1,"47":1,"50":1,"53":1,"55":1,"56":1,"60":2,"66":2,"67":1,"69":1,"72":1,"82":3,"83":1,"84":2,"86":8,"87":3,"90":3,"91":3,"92":6,"93":8,"94":4,"95":9,"96":2,"97":2,"98":3,"99":6,"101":1,"103":2,"107":1,"109":3,"110":17,"111":1,"112":10,"113":3,"115":3,"116":7,"117":1,"120":3,"121":16,"122":3,"126":4,"127":6,"129":1,"132":3,"133":1,"134":10,"135":5,"137":4,"147":2}}],["fg",{"2":{"110":1}}],["fd",{"2":{"100":1}}],["fdea26ae",{"2":{"12":1}}],["f=",{"2":{"100":1}}],["fno",{"2":{"87":3}}],["flu",{"2":{"147":2}}],["fluid",{"2":{"95":1,"147":6}}],["fluids",{"2":{"62":1,"64":1,"147":3}}],["flattened",{"2":{"97":1}}],["flows",{"0":{"78":1,"79":1},"2":{"147":3}}],["flow",{"0":{"37":1},"1":{"38":1,"39":1,"40":1,"41":1,"42":1},"2":{"37":1,"55":1,"57":1,"95":3,"105":1,"134":1,"136":1,"147":4}}],["floats",{"2":{"109":1}}],["float16",{"2":{"43":2,"45":1,"109":1}}],["float32",{"2":{"29":1,"31":1,"33":1,"36":1,"43":2,"45":1,"58":1,"59":1,"60":171,"61":1,"109":1}}],["floating",{"0":{"109":1},"2":{"19":1,"26":1,"29":1,"43":3,"46":1,"49":1,"55":1,"60":1,"66":1,"71":1,"109":1}}],["float64",{"2":{"15":1,"19":1,"21":1,"26":1,"28":1,"43":2,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"60":1,"62":2,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"71":1,"76":1,"93":4,"97":4,"98":3,"109":2,"112":2,"138":18,"139":8,"140":6,"141":22,"142":8,"143":20,"144":6,"145":8}}],["floopsbase",{"2":{"12":1}}],["floops",{"2":{"12":1}}],["f",{"2":{"37":1,"49":2,"51":2,"83":1,"86":5,"87":1,"88":1,"92":2,"93":3,"110":11,"111":5,"112":4,"123":1,"126":1,"127":3,"135":2,"147":5}}],["f489334b",{"2":{"12":1}}],["f43a241f",{"2":{"12":1}}],["f27f6e37",{"2":{"12":1}}],["f638f0a6",{"2":{"12":1}}],["f6369f11",{"2":{"12":1}}],["f8c6e375",{"2":{"12":1}}],["f50d1b31",{"2":{"12":1}}],["f5851436",{"2":{"12":1}}],["f517fe37",{"2":{"12":1}}],["f57f5aa1",{"2":{"12":1}}],["f09324ee",{"2":{"12":1}}],["f7f18e0c",{"2":{"12":1}}],["f70d9fcc",{"2":{"12":1}}],["fully",{"2":{"92":1,"95":1}}],["full",{"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"96":1,"137":2}}],["future",{"2":{"12":1,"134":1}}],["functions",{"2":{"43":1,"87":1,"92":2,"100":1,"133":1}}],["function",{"0":{"108":1,"131":1},"2":{"15":1,"43":1,"49":1,"51":1,"57":1,"60":4,"61":2,"69":2,"70":1,"86":3,"91":2,"92":4,"93":4,"94":1,"97":1,"108":2,"111":1,"113":2,"118":2,"120":1,"121":4,"131":3,"134":1}}],["functionwrapperswrappers",{"2":{"12":1}}],["functionwrappers",{"2":{"12":1}}],["functors",{"2":{"12":1}}],["furnished",{"2":{"9":1}}],["families",{"2":{"137":1}}],["far",{"2":{"121":1}}],["factor",{"2":{"116":1}}],["factorization",{"2":{"135":1}}],["factorizations",{"2":{"96":1,"109":1}}],["factorize",{"2":{"58":1,"64":1}}],["faceaverage",{"2":{"85":2}}],["faces",{"2":{"84":1,"122":1}}],["face",{"2":{"83":1,"85":1,"116":1,"122":1,"123":3}}],["facing",{"0":{"26":1,"29":1},"1":{"27":1,"28":1,"30":1,"31":1}}],["false",{"2":{"23":2,"25":2,"26":1,"28":1,"41":2,"42":2,"52":1,"54":1,"60":11,"62":1,"69":1,"70":1,"74":1,"76":1,"93":3,"97":3,"98":2,"117":1}}],["fa267f1f",{"2":{"12":1}}],["faster",{"2":{"112":1}}],["fast",{"2":{"90":1,"94":1}}],["fastpower",{"2":{"12":1}}],["fastclosures",{"2":{"12":1}}],["fastbroadcast",{"2":{"12":1}}],["fa961155",{"2":{"12":1}}],["fft",{"2":{"55":2,"57":2}}],["fftw",{"2":{"12":2,"55":1,"57":1,"93":2}}],["ffd25f8a",{"2":{"12":1}}],["ffmpeg",{"2":{"12":1}}],["ffbed154",{"2":{"12":1}}],["f1",{"2":{"100":1}}],["f1d291b0",{"2":{"12":1}}],["f1662d9f",{"2":{"12":1}}],["f151be2c",{"2":{"12":1}}],["f1be7e48",{"2":{"12":1}}],["fb6a15b2",{"2":{"12":1}}],["first",{"2":{"110":2,"116":1,"135":3,"137":1}}],["finite",{"0":{"123":1},"2":{"116":1,"122":1,"123":1,"131":1}}],["fine",{"2":{"85":2}}],["finally",{"2":{"93":1,"136":1,"137":1}}],["finalize",{"2":{"60":4,"121":7}}],["final",{"2":{"56":1,"69":1,"70":1,"91":4,"121":3,"137":1}}],["findmin",{"2":{"55":2,"57":2}}],["find",{"2":{"55":2,"57":2,"112":1}}],["finds",{"2":{"26":1,"29":1}}],["figfile",{"2":{"86":1}}],["fig",{"2":{"17":3,"18":6,"50":3,"51":6,"55":4,"57":4,"60":6,"61":6,"69":3,"70":4}}],["figure",{"2":{"15":1,"18":1,"26":1,"28":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"60":2,"61":2,"62":1,"63":1,"69":2,"70":1,"121":2}}],["fixedpointnumbers",{"2":{"12":1}}],["fill",{"2":{"87":1}}],["fillarrays",{"2":{"12":1}}],["filtersaver",{"2":{"88":1}}],["filters",{"0":{"85":1},"2":{"83":1,"85":2,"88":2}}],["filter",{"2":{"83":1,"85":1}}],["filtered",{"2":{"83":1,"86":1,"88":2}}],["filenames",{"2":{"88":2}}],["filename",{"2":{"19":1,"20":1,"21":2,"26":1,"27":1,"28":2,"29":1,"30":1,"31":2,"34":1,"36":1,"43":1,"44":1,"45":2,"46":1,"47":1,"48":2,"49":1,"50":1,"51":2,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"66":1,"67":1,"68":2,"74":1,"76":1,"121":2}}],["filewatching",{"2":{"12":1}}],["filepathsbase",{"2":{"12":1}}],["filepaths",{"2":{"12":1}}],["fileio",{"2":{"12":1}}],["files",{"2":{"5":2,"9":1}}],["file",{"2":{"0":1,"4":2,"6":1,"44":1,"121":3}}],["fitness",{"2":{"9":1}}],["fields",{"2":{"20":1,"24":1,"27":1,"30":1,"44":2,"47":1,"50":1,"53":1,"56":1,"67":1,"85":3,"87":4,"90":1,"97":3,"99":3,"110":2,"115":5,"116":3,"117":1,"121":1,"123":1,"134":1,"135":1,"136":1,"137":5}}],["fieldsaver",{"2":{"8":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"66":1,"68":1,"121":1}}],["fieldnames",{"2":{"58":2,"59":2,"64":1,"65":1,"121":2}}],["fieldname",{"2":{"17":3,"18":3,"27":3,"28":3,"30":3,"31":3,"44":3,"45":3,"49":2,"50":3,"51":5,"56":4,"57":4,"58":4,"59":4,"60":4,"61":1,"62":1,"63":1,"64":5,"65":5,"67":3,"68":3,"121":2}}],["field",{"0":{"118":1},"2":{"8":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"28":1,"29":1,"31":1,"32":1,"33":1,"35":1,"36":1,"37":1,"39":2,"40":1,"41":1,"42":1,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":2,"59":2,"64":2,"65":2,"66":1,"68":1,"85":5,"87":3,"91":1,"93":2,"95":2,"97":2,"98":1,"99":3,"100":1,"103":1,"107":2,"108":2,"110":16,"111":5,"112":1,"113":1,"117":1,"118":8,"120":1,"121":3,"122":1,"126":1,"127":3,"130":1,"132":1,"133":2,"134":3,"135":2,"136":2,"137":2}}],["fieldplot",{"2":{"8":1,"17":3,"18":3,"19":1,"21":1,"25":1,"26":1,"28":4,"29":1,"31":4,"34":1,"35":1,"36":2,"43":1,"45":4,"46":1,"48":1,"49":1,"50":3,"51":4,"52":1,"54":1,"55":1,"57":5,"58":1,"59":1,"60":2,"64":1,"65":2,"66":1,"68":4,"74":1,"76":1,"121":1}}],["freund",{"2":{"147":1}}],["freeness",{"2":{"111":1,"127":2,"137":1}}],["freedom",{"2":{"99":2,"123":1}}],["freetype2",{"2":{"12":1}}],["freetypeabstraction",{"2":{"12":1}}],["freetype",{"2":{"12":1}}],["free",{"2":{"1":1,"9":1,"96":1,"100":1,"102":1,"103":1,"111":2,"112":1,"118":1,"123":1,"127":1,"134":2,"135":2,"136":1,"137":1,"147":1}}],["front",{"2":{"19":2,"21":2,"26":1,"28":1,"29":1,"31":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1}}],["from",{"2":{"5":2,"6":1,"8":1,"9":1,"12":1,"44":2,"83":1,"84":2,"85":1,"86":1,"93":1,"95":4,"110":6,"111":5,"112":2,"116":5,"118":1,"120":1,"121":2,"133":1,"134":2,"135":1}}],["fribidi",{"2":{"12":1}}],["footprint",{"2":{"116":2}}],["fourierlayer",{"2":{"87":2}}],["fourier",{"2":{"87":2,"94":1}}],["fourth",{"0":{"125":1},"2":{"43":1,"125":2,"126":1,"143":1,"147":1}}],["found",{"2":{"77":1,"108":2}}],["fontconfig",{"2":{"12":1}}],["follows",{"2":{"132":1,"136":1,"137":1}}],["following",{"2":{"8":1,"9":1,"11":1,"12":1,"43":1,"85":1,"95":1,"98":1,"102":1,"110":1,"112":1,"116":1,"121":2,"123":1,"134":1,"136":1,"137":1}}],["folder",{"2":{"4":1,"77":1}}],["forward",{"2":{"138":1}}],["forwarddiff",{"2":{"12":1}}],["fortran",{"2":{"124":1}}],["formed",{"2":{"134":1}}],["formulation",{"2":{"55":1,"112":2,"127":1}}],["form",{"0":{"101":1},"2":{"22":1,"32":1,"43":1,"101":2,"126":1,"134":1}}],["format",{"2":{"0":1,"12":1}}],["forces",{"2":{"49":3,"51":3,"126":1}}],["force",{"0":{"40":1},"2":{"13":1,"15":1,"19":2,"37":1,"39":1,"40":1,"49":2,"84":1,"93":1,"100":2,"110":2,"135":1}}],["for",{"2":{"0":1,"3":1,"4":1,"5":2,"8":1,"9":2,"14":2,"18":1,"19":2,"21":1,"25":1,"26":2,"28":1,"29":2,"31":1,"36":1,"42":1,"43":7,"44":3,"45":1,"46":1,"48":1,"49":2,"51":3,"52":2,"54":1,"55":2,"57":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":2,"68":1,"69":4,"70":3,"76":1,"82":1,"83":2,"86":5,"88":1,"90":3,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":5,"98":1,"99":8,"102":2,"103":1,"109":3,"110":9,"111":4,"112":3,"113":1,"115":3,"116":2,"117":2,"120":1,"121":4,"122":2,"123":5,"124":1,"125":2,"126":3,"127":4,"131":1,"132":1,"133":1,"134":7,"135":7,"136":2,"137":5,"143":5,"147":6}}],["fe11",{"2":{"137":1,"138":2}}],["feature",{"2":{"95":1}}],["features",{"2":{"1":1,"22":1,"32":1,"83":1,"95":3,"112":1}}],["feel",{"2":{"1":1}}],["rssps3",{"2":{"137":1,"138":2}}],["rssps2",{"2":{"137":1,"138":2}}],["riia3",{"2":{"137":1,"141":2}}],["riia2",{"2":{"137":1,"141":2}}],["riia1",{"2":{"137":1,"141":2}}],["ria3",{"2":{"137":1,"141":2}}],["ria2",{"2":{"137":1,"141":2}}],["ria1",{"2":{"137":1,"141":1}}],["rights",{"2":{"9":1}}],["right",{"0":{"93":1},"2":{"0":1,"8":2,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"43":2,"45":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"93":9,"95":1,"110":2,"111":1,"112":3,"113":10,"115":1,"135":1}}],["rule",{"2":{"123":2,"131":1}}],["runner",{"2":{"60":1,"62":1,"69":1}}],["running",{"2":{"3":1,"43":1,"72":2}}],["runge",{"0":{"137":1},"1":{"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1},"2":{"43":1,"134":3,"137":4,"147":2}}],["runtimegeneratedfunctions",{"2":{"12":1}}],["run",{"2":{"5":2,"6":1}}],["r2cfii",{"2":{"93":1}}],["r2cf",{"2":{"93":1}}],["r2hc01",{"2":{"93":1}}],["r2hc",{"2":{"93":1}}],["rdft2",{"2":{"93":7}}],["rfftwplan",{"2":{"93":1}}],["rng",{"2":{"84":1,"87":3,"88":1,"118":1}}],["r",{"2":{"73":4,"76":4,"87":4,"134":2,"137":4,"147":5}}],["rt3d",{"2":{"64":1,"65":1}}],["rtp",{"2":{"16":1,"18":1,"19":1,"20":1,"21":2,"23":1,"25":1,"26":1,"28":1,"29":1,"31":1,"34":1,"35":1,"36":2,"41":2,"42":2,"43":1,"44":1,"45":2,"46":1,"48":1,"49":1,"51":1,"52":1,"53":1,"54":2,"55":1,"56":1,"57":2,"58":1,"59":1,"60":2,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":2,"74":1,"76":1}}],["rb3d",{"2":{"58":2,"59":2}}],["rk4",{"2":{"143":3}}],["rk44c23",{"2":{"137":1,"143":1}}],["rk44c2",{"2":{"137":1,"143":1}}],["rk44",{"2":{"137":1,"143":1}}],["rk44p2",{"2":{"16":1,"18":1,"19":1,"21":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"91":1,"137":1,"143":1}}],["rk3",{"2":{"138":1,"143":2}}],["rk33p2",{"2":{"137":1,"143":1}}],["rk33c2",{"2":{"58":1,"59":1,"137":1,"143":1}}],["rk56",{"2":{"137":1,"138":2}}],["rk",{"2":{"134":1,"137":3}}],["rkmethods",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"49":1,"51":1,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"91":1,"137":1,"138":11,"139":4,"140":3,"141":11,"142":4,"143":10,"144":3,"145":4}}],["row",{"2":{"124":1}}],["rounded",{"2":{"120":1}}],["roundingemulator",{"2":{"12":1}}],["rotate",{"2":{"87":4}}],["rotation",{"2":{"87":4}}],["rotations",{"2":{"87":1}}],["rot2stag",{"2":{"87":1}}],["rot2",{"2":{"87":3}}],["root",{"2":{"0":1,"5":1}}],["rmath",{"2":{"12":2}}],["ratio",{"2":{"147":1}}],["rational",{"2":{"138":2}}],["ratios",{"2":{"12":1}}],["rate",{"2":{"110":3}}],["radii",{"2":{"87":2}}],["raw",{"2":{"77":1}}],["ra",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"117":1,"132":1}}],["rayleightaylor3d",{"2":{"64":1,"65":1}}],["rayleightaylor2d",{"2":{"62":2,"63":1}}],["rayleighbenard2d",{"2":{"60":2,"61":1}}],["rayleighbenard3d",{"2":{"58":1,"59":1}}],["rayleigh",{"0":{"58":1,"60":1,"62":1,"64":1},"1":{"59":1,"61":1,"63":1,"65":1},"2":{"117":1,"132":1}}],["rank>=2",{"2":{"93":1}}],["rangle",{"2":{"55":1,"57":1}}],["range",{"2":{"33":1,"36":1,"39":1,"42":1,"73":1,"76":1,"91":1,"93":1,"97":1,"112":1,"116":2,"133":1}}],["rangearrays",{"2":{"12":1}}],["rand",{"2":{"55":1,"57":1}}],["randn",{"2":{"26":1,"28":1,"97":1,"98":1}}],["randomly",{"2":{"22":1,"32":1}}],["random",{"2":{"8":1,"12":1,"23":1,"25":1,"33":1,"36":1,"39":1,"42":1,"49":1,"51":1,"55":1,"86":1,"91":1,"93":1,"97":1,"98":1,"112":1,"118":3,"133":1}}],["reinforcement",{"2":{"147":1}}],["reused",{"2":{"135":1}}],["reu2",{"2":{"69":1}}],["remmerswaal",{"2":{"147":1}}],["remaining",{"2":{"123":1}}],["remember",{"2":{"93":1}}],["reλ=λuavg3ν",{"2":{"110":1}}],["reλ",{"2":{"110":1}}],["re=1ν",{"2":{"105":1}}],["refers",{"2":{"126":1}}],["references",{"0":{"146":1}}],["reference",{"2":{"113":1,"126":1}}],["refining",{"2":{"95":1}}],["refined",{"2":{"95":1}}],["refinement",{"2":{"43":1}}],["refine",{"2":{"26":1,"46":1}}],["refvalue",{"2":{"93":1}}],["ref",{"2":{"93":3,"112":1,"113":3}}],["reverse",{"2":{"89":1,"93":1}}],["revise",{"0":{"4":1},"2":{"4":3,"5":1}}],["retcode",{"2":{"112":1}}],["rethis",{"2":{"69":1}}],["returning",{"2":{"121":1,"137":1}}],["return",{"2":{"86":3,"87":3,"116":3,"120":1,"137":1}}],["returns",{"2":{"44":1,"92":2,"110":1,"113":2,"116":1}}],["returned",{"2":{"43":1}}],["resembling",{"2":{"123":1}}],["resolved",{"2":{"95":3}}],["resolve",{"2":{"95":1}}],["resolution",{"2":{"95":1}}],["resolutions",{"2":{"69":1}}],["respected",{"2":{"134":1}}],["respect",{"2":{"87":1,"91":2,"93":1}}],["respective",{"2":{"43":1}}],["resulting",{"2":{"111":1,"116":1,"121":1,"125":1,"135":1}}],["result",{"2":{"85":1,"92":1,"110":7,"113":1,"126":1}}],["results",{"2":{"43":2,"44":1,"46":1,"60":1,"62":1,"97":1,"98":1,"121":1,"123":2}}],["reshape",{"2":{"55":1,"57":1,"97":1,"98":1}}],["rest",{"2":{"43":1,"46":1}}],["restricts",{"2":{"92":1}}],["restricted",{"2":{"12":1,"99":1}}],["restriction",{"2":{"9":1}}],["reason",{"2":{"90":1}}],["reach",{"2":{"43":1,"46":1}}],["rear",{"2":{"19":2,"21":2,"26":1,"28":1,"29":1,"31":1,"46":1,"48":1,"49":1,"51":1,"52":1,"54":1,"115":1}}],["really",{"2":{"43":1}}],["real",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":2,"66":1,"93":1,"120":1,"121":1}}],["realdot",{"2":{"12":1}}],["realtimeplotter",{"2":{"8":1,"16":1,"18":1,"19":1,"21":1,"23":3,"25":3,"26":1,"28":1,"29":1,"31":1,"34":3,"36":3,"41":3,"42":3,"43":3,"45":3,"46":3,"48":3,"49":3,"51":3,"52":1,"54":1,"55":1,"57":1,"58":1,"59":1,"60":3,"61":3,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"74":3,"76":3,"121":1}}],["reynolds",{"0":{"105":1},"2":{"19":1,"26":1,"29":1,"43":1,"46":1,"55":1,"66":1,"105":1,"110":1}}],["rededuce",{"2":{"127":1}}],["redundant",{"2":{"116":1}}],["red",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4}}],["re",{"2":{"15":1,"18":1,"19":1,"21":2,"23":1,"25":1,"26":1,"28":2,"29":1,"31":2,"33":1,"36":1,"39":1,"42":1,"43":1,"45":2,"46":1,"48":2,"49":1,"51":1,"52":1,"54":2,"55":2,"57":3,"58":1,"59":1,"60":7,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":2,"69":6,"70":7,"73":1,"76":1,"88":1,"91":1,"93":2,"97":2,"98":1,"112":1,"117":1}}],["registryinstances",{"2":{"12":1}}],["reexport",{"2":{"12":1}}],["rectangular",{"2":{"100":1,"122":1}}],["rectangle",{"2":{"13":1,"15":1,"49":2}}],["reconstruct",{"2":{"85":5}}],["recommended",{"2":{"4":1}}],["recursivearraytools",{"2":{"12":1}}],["recipesbase",{"2":{"12":1}}],["reltol",{"2":{"111":1,"112":1,"134":1,"137":1}}],["relied",{"2":{"110":1}}],["relerr",{"2":{"86":8}}],["release",{"2":{"11":1}}],["relative",{"2":{"69":1,"70":1,"86":2}}],["relocatablefolders",{"2":{"12":1}}],["reloaded",{"2":{"4":1}}],["repeating",{"2":{"122":1}}],["representation",{"0":{"126":1}}],["represent",{"2":{"98":1,"116":1}}],["replace",{"2":{"137":1}}],["replacement",{"2":{"137":1}}],["replacing",{"2":{"83":1,"123":1,"131":1}}],["repl",{"2":{"5":1,"12":1,"82":1}}],["repository",{"2":{"0":2,"1":1,"5":2}}],["requiring",{"2":{"123":1}}],["require",{"2":{"83":1,"92":1,"99":1,"127":1,"133":1,"135":1,"136":1}}],["requires",{"2":{"12":1,"19":1,"82":1,"93":1,"117":1,"132":1}}],["required",{"2":{"5":1,"83":1,"93":1,"123":3,"133":1}}],["request",{"2":{"1":1}}],["cbm",{"2":{"144":2}}],["c2=c3",{"2":{"143":1}}],["cn22",{"2":{"137":1,"143":1}}],["cn",{"2":{"135":1}}],["cnn",{"2":{"87":5}}],["ct",{"2":{"93":3}}],["ctrl",{"2":{"6":1}}],["ci=∑j=1iaij",{"2":{"137":1}}],["cin",{"2":{"87":3}}],["cite",{"2":{"0":1}}],["citation",{"2":{"0":3}}],["citing",{"0":{"0":1}}],["c=f",{"2":{"83":1}}],["cd",{"2":{"83":1}}],["cx",{"2":{"19":1,"21":2}}],["cz",{"2":{"19":2,"21":2}}],["cycle",{"2":{"124":1}}],["cyclically",{"2":{"87":1}}],["cy",{"2":{"19":2,"21":2}}],["cylinder",{"2":{"19":2}}],["cusparse",{"2":{"110":1}}],["cu",{"2":{"109":1}}],["cut",{"2":{"87":2}}],["cudss",{"2":{"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"94":2}}],["cudabackend",{"2":{"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"33":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"72":1,"76":1,"94":1}}],["cuda",{"2":{"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"33":1,"36":1,"43":1,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"72":1,"76":1,"94":5,"109":1,"110":1}}],["currently",{"2":{"89":2,"115":1,"134":1}}],["current",{"2":{"6":2,"49":1,"51":1,"86":1,"113":2,"127":1,"136":1}}],["cₜ",{"2":{"15":1,"19":5,"21":4,"49":1}}],["c5f90fcd",{"2":{"12":1}}],["c5fb5394",{"2":{"12":1}}],["cc61e674",{"2":{"12":1}}],["cc61a311",{"2":{"12":1}}],["c7cfdc94",{"2":{"12":1}}],["c7aee132",{"2":{"12":1}}],["c1c5ebd0",{"2":{"12":1}}],["c1ae055f",{"2":{"12":1}}],["crank",{"0":{"135":1},"2":{"134":1,"135":3,"143":1}}],["crc32c",{"2":{"12":1}}],["crlibm",{"2":{"12":1}}],["created",{"2":{"22":1,"32":1,"43":1}}],["creates",{"2":{"14":1,"19":1,"26":1,"29":1,"43":1,"52":1,"55":1,"66":1,"113":1}}],["create",{"2":{"4":1,"8":2,"17":1,"43":1,"49":5,"51":6,"84":2,"86":18,"87":3,"88":5,"91":1,"93":1,"95":1,"98":1,"99":3,"110":1,"111":2,"112":1,"113":2,"116":4,"117":2,"118":5,"121":5,"132":1,"134":2}}],["cells",{"2":{"125":1}}],["cell",{"2":{"58":1,"60":1}}],["certain",{"2":{"43":1,"46":1,"133":1,"137":1}}],["central",{"2":{"131":1}}],["centers",{"2":{"84":2,"110":1,"116":1,"122":1}}],["center",{"2":{"15":1,"18":1,"19":1,"21":1,"122":2}}],["cenum",{"2":{"12":1}}],["ce78b400",{"2":{"12":1}}],["c0aeaf25",{"2":{"12":1}}],["c8ffd9c3",{"2":{"12":1}}],["c84ed2f1",{"2":{"12":1}}],["c8e1da08",{"2":{"12":1}}],["c817782e",{"2":{"12":1}}],["cfl",{"2":{"120":5}}],["cf7118a7",{"2":{"12":1}}],["cf35fbd7",{"2":{"12":1}}],["cff",{"2":{"0":1}}],["c3611d14",{"2":{"12":1}}],["c",{"2":{"9":1,"15":4,"18":4,"49":3,"51":3,"55":3,"57":2,"83":1,"86":1,"87":2,"88":1,"110":4,"111":2,"124":1,"126":1,"134":1,"137":3,"142":1,"143":3,"147":1}}],["classical",{"0":{"141":1},"2":{"143":1}}],["claim",{"2":{"9":1}}],["clockwise",{"2":{"87":1}}],["clone",{"2":{"83":1}}],["cloning",{"2":{"83":1}}],["closeall",{"2":{"61":1,"121":1}}],["closeopenintervals",{"2":{"12":1}}],["closure",{"0":{"81":1,"83":1},"1":{"84":1,"85":1,"86":1,"87":1,"88":1},"2":{"8":1,"60":6,"83":3,"84":6,"86":2,"87":9,"93":1,"95":1,"97":1,"98":1,"110":4,"117":1}}],["cl",{"2":{"55":1,"57":1}}],["clicking",{"2":{"6":1}}],["click",{"2":{"0":1}}],["cg",{"2":{"8":2,"109":1,"111":5}}],["coherent",{"2":{"112":1}}],["coordinate",{"2":{"100":1}}],["coordinates",{"2":{"43":1,"116":3,"122":2}}],["corners",{"2":{"122":1,"131":1}}],["corresponding",{"2":{"135":1,"137":1}}],["corresponds",{"2":{"110":1,"116":1}}],["correction",{"2":{"136":1}}],["correctly",{"2":{"95":1}}],["correct",{"2":{"92":1}}],["cores",{"2":{"11":1}}],["core",{"2":{"11":1,"93":1,"147":1}}],["coverage",{"2":{"89":1}}],["coupled",{"2":{"132":1}}],["could",{"2":{"94":1}}],["counterparts",{"2":{"126":1}}],["counter",{"2":{"87":1}}],["cout",{"2":{"87":3}}],["coarser",{"2":{"125":1}}],["coarse",{"2":{"85":2,"125":1}}],["column",{"2":{"124":1}}],["collocate",{"2":{"84":1}}],["collections",{"2":{"112":1}}],["collection",{"2":{"92":1,"112":2,"121":1,"134":1}}],["collect",{"2":{"69":1,"70":1}}],["cold",{"2":{"58":1,"60":1}}],["colormap",{"2":{"60":4,"61":1}}],["colorrange",{"2":{"60":4,"61":1}}],["color",{"2":{"17":3,"18":3,"49":1,"50":3,"51":4}}],["colors",{"2":{"12":1}}],["colorschemes",{"2":{"12":1}}],["colorvectorspace",{"2":{"12":1}}],["colortypes",{"2":{"12":1}}],["colorbrewer",{"2":{"12":1}}],["costs",{"2":{"147":1}}],["costly",{"2":{"95":1,"127":1}}],["cost",{"2":{"90":1}}],["cospi",{"2":{"73":2,"76":2}}],["cos⁡",{"2":{"69":1}}],["cos",{"2":{"19":1,"21":1,"52":1,"54":1,"69":2,"70":2}}],["cosine",{"2":{"8":1,"26":1,"28":1,"43":2,"45":2,"46":2,"48":2,"116":3}}],["code",{"0":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"89":1},"1":{"90":1,"91":1,"92":1,"93":1},"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"43":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1,"77":1,"89":1,"90":2,"92":2,"109":2,"110":1,"116":1,"117":1,"134":1}}],["codeczlib",{"2":{"12":1}}],["coefficients",{"2":{"135":1,"137":1}}],["coefficient",{"2":{"15":2,"18":1,"19":2,"21":1,"49":1,"137":1}}],["combining",{"2":{"125":1}}],["come",{"2":{"90":1}}],["comes",{"2":{"90":1}}],["com",{"2":{"83":1}}],["complex",{"2":{"93":1}}],["complexf64",{"2":{"93":2}}],["comp",{"2":{"85":2}}],["compression",{"2":{"85":2,"88":1}}],["compared",{"2":{"116":1}}],["compare",{"2":{"69":1,"70":1,"93":1}}],["compatible",{"2":{"90":1,"94":1,"110":1,"111":1,"147":1}}],["compatibility",{"2":{"12":1}}],["compat",{"2":{"12":1}}],["comput",{"2":{"147":1}}],["computational",{"2":{"86":1,"147":4}}],["computations",{"2":{"43":2}}],["computers",{"2":{"147":1}}],["computes",{"2":{"113":3}}],["compute",{"2":{"69":4,"70":2,"93":1,"95":1,"110":37,"111":2,"133":1,"135":2}}],["computed",{"2":{"20":1,"24":1,"27":1,"30":1,"44":1,"47":1,"50":1,"53":1,"56":1,"67":1,"95":1,"113":1,"127":1,"135":1,"136":1,"137":1}}],["computing",{"2":{"44":1,"69":1,"70":1,"95":1,"135":1,"136":1}}],["compilersupportlibraries",{"2":{"12":1}}],["composed",{"2":{"91":1}}],["compositionsbase",{"2":{"12":1}}],["components",{"2":{"83":1,"84":1,"110":2,"115":3,"123":1,"129":1}}],["component",{"2":{"43":1,"107":1,"121":1,"123":2,"124":1}}],["componentarrays",{"2":{"12":1}}],["commute",{"2":{"83":1}}],["commutator",{"2":{"83":1,"86":1,"87":3}}],["commented",{"2":{"77":1,"82":1}}],["comments",{"2":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1}}],["common",{"2":{"122":1}}],["commonworldinvalidations",{"2":{"12":1}}],["commonsubexpressions",{"2":{"12":1}}],["commonsolve",{"2":{"12":1}}],["commit",{"2":{"11":1}}],["copies",{"2":{"9":2}}],["copy",{"0":{"18":1,"21":1,"25":1,"28":1,"31":1,"36":1,"42":1,"45":1,"48":1,"51":1,"54":1,"57":1,"59":1,"61":1,"63":1,"65":1,"68":1,"70":1,"76":1},"2":{"9":2,"60":1,"61":1,"77":1}}],["copyright",{"2":{"9":3}}],["condition",{"2":{"115":2,"143":2}}],["conditionsboundary",{"2":{"116":1}}],["conditions",{"0":{"79":1,"98":1,"102":1,"115":1,"124":1},"2":{"9":1,"15":4,"18":2,"19":4,"21":2,"26":4,"28":2,"29":4,"31":2,"43":4,"44":1,"45":2,"46":4,"48":2,"49":4,"51":2,"52":4,"54":2,"55":3,"57":2,"58":3,"59":2,"60":16,"61":2,"62":3,"63":2,"64":3,"65":2,"66":1,"73":1,"91":2,"93":1,"97":2,"98":6,"99":5,"102":1,"103":1,"113":1,"115":15,"116":2,"117":3,"118":3,"126":1,"127":3,"132":2,"134":2,"137":1}}],["conjugate",{"2":{"111":2}}],["concatenation",{"2":{"97":3}}],["concretefilter",{"2":{"85":3}}],["concretestructs",{"2":{"12":1}}],["conv",{"2":{"87":2}}],["convolutional",{"2":{"87":3}}],["convention",{"2":{"124":3,"137":1}}],["convective",{"2":{"110":3,"123":2,"135":1}}],["convectiondiffusion",{"2":{"110":1}}],["convection",{"0":{"58":1,"60":1},"1":{"59":1,"61":1},"2":{"8":2,"58":1,"60":1,"110":6,"120":1,"123":1,"126":1,"135":1,"147":2}}],["conversions",{"2":{"109":1}}],["converted",{"2":{"109":1}}],["converts",{"2":{"97":1,"109":1}}],["convergence",{"0":{"69":1},"1":{"70":1},"2":{"69":7,"70":3,"86":2,"135":1}}],["consistency",{"2":{"147":1}}],["consistent",{"2":{"147":1}}],["considered",{"2":{"22":1,"32":1}}],["consider",{"2":{"22":1,"26":1,"29":1,"32":1,"43":1,"46":1,"69":1,"71":1,"72":1,"95":1,"97":1,"98":1,"109":1,"122":1,"134":1,"137":1}}],["constant",{"2":{"95":1,"99":1,"103":2,"110":2,"115":1,"123":1,"127":2,"133":1,"135":2,"136":1}}],["const",{"2":{"93":2}}],["constraint",{"2":{"100":1,"123":2,"127":1,"134":1}}],["constraints",{"2":{"12":1}}],["constructionbase",{"2":{"12":1}}],["consequently",{"2":{"91":1}}],["conserves",{"2":{"134":1}}],["conserved",{"2":{"123":1}}],["conservation",{"2":{"66":1,"100":2}}],["conserving",{"2":{"8":1,"147":1}}],["connection",{"2":{"9":1}}],["continuous",{"2":{"122":1,"123":1,"126":1,"127":2,"134":1}}],["contained",{"2":{"133":1}}],["contain",{"2":{"115":1}}],["containing",{"2":{"98":1,"113":2,"116":1,"126":2,"135":1}}],["contains",{"2":{"5":1,"44":1,"112":1,"120":1,"126":2}}],["contourf",{"2":{"121":1}}],["contour",{"2":{"12":1,"121":3,"133":1}}],["contextvariablesx",{"2":{"12":1}}],["contrast",{"2":{"135":1}}],["contracted",{"2":{"110":1}}],["contract",{"2":{"9":1}}],["control",{"2":{"101":2,"123":2,"125":1}}],["contributions",{"2":{"126":2}}],["contribution",{"2":{"95":1,"126":2}}],["contributing",{"0":{"1":1}}],["contributors",{"2":{"9":1}}],["configured",{"2":{"132":1}}],["config",{"2":{"4":1,"12":1}}],["cpuid",{"2":{"12":1}}],["cpusummary",{"2":{"12":1}}],["cpu",{"2":{"8":1,"11":1,"19":1,"21":1,"26":1,"28":1,"29":1,"31":1,"33":1,"36":1,"43":3,"45":1,"46":1,"48":1,"49":1,"51":1,"55":1,"57":1,"58":1,"59":1,"60":8,"61":1,"62":2,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"70":1,"72":2,"76":1,"93":1,"97":1,"98":1,"117":4}}],["cmd",{"2":{"6":1}}],["cambridge",{"2":{"147":2}}],["carrica",{"2":{"147":1}}],["cartesianindices",{"2":{"60":18,"93":5,"97":3,"98":3,"115":1,"133":1}}],["cartesian",{"2":{"15":1,"19":1,"26":1,"29":1,"43":1,"46":1,"49":1,"52":1,"55":1,"66":1,"110":7,"116":3,"122":4,"133":1}}],["cache",{"2":{"120":1,"134":4}}],["causes",{"2":{"109":1}}],["calculation",{"2":{"147":1}}],["calculated",{"2":{"137":1}}],["calibrated",{"2":{"95":1}}],["calling",{"2":{"110":1}}],["call",{"2":{"93":1}}],["calls",{"2":{"92":1}}],["callbackstate",{"2":{"86":5}}],["callback",{"2":{"86":5}}],["called",{"2":{"43":1,"93":1,"110":1,"116":1,"120":1,"121":2}}],["capt",{"2":{"95":1}}],["cavity",{"0":{"43":1,"46":1},"1":{"44":1,"45":1,"47":1,"48":1},"2":{"147":1}}],["ca575930",{"2":{"12":1}}],["cae243ae",{"2":{"12":1}}],["cairomakie",{"2":{"12":1,"14":2,"19":2,"23":1,"26":2,"29":2,"32":1,"38":1,"43":2,"46":1,"49":1,"52":2,"55":2,"58":1,"60":1,"62":1,"64":1,"66":2,"69":2,"71":1,"121":1}}],["cairo",{"2":{"12":2}}],["canonical",{"2":{"123":3}}],["can",{"2":{"5":1,"6":1,"7":1,"43":3,"77":1,"83":1,"84":1,"89":1,"92":1,"93":2,"95":3,"96":1,"97":1,"98":2,"99":1,"100":1,"108":2,"112":3,"117":1,"121":2,"122":2,"125":1,"126":1,"127":2,"132":1,"135":4,"137":1}}],["cases",{"2":{"22":1,"32":1,"55":1}}],["case",{"0":{"13":1,"19":1,"49":1},"1":{"14":1,"15":1,"16":1,"17":1,"18":1,"20":1,"21":1,"50":1,"51":1},"2":{"5":1,"43":1,"46":1,"83":1,"93":1,"121":1}}],["chen",{"2":{"147":1}}],["chebyshev",{"0":{"142":1},"2":{"142":2}}],["checks",{"2":{"134":1}}],["check",{"2":{"64":1,"82":1}}],["chdirk3",{"2":{"137":1,"142":1}}],["chcons3",{"2":{"137":1,"142":2}}],["chc5",{"2":{"137":1,"142":2}}],["chc3",{"2":{"137":1,"142":1}}],["cholesky",{"2":{"135":1}}],["chosen",{"2":{"120":1,"137":1}}],["choice",{"2":{"90":1}}],["choose",{"2":{"6":1,"43":2}}],["choosing",{"2":{"3":1,"64":1,"123":1}}],["chain",{"2":{"86":1}}],["chainrulescore",{"2":{"12":1}}],["chainrules",{"2":{"12":1}}],["channels",{"2":{"87":2,"110":1}}],["channel",{"2":{"26":1,"29":1,"87":1}}],["change",{"2":{"6":1,"134":1}}],["changes",{"2":{"4":1,"103":1,"135":1}}],["charge",{"2":{"9":1}}]],"serializationVersion":2}';export{e as default};
diff --git a/previews/PR126/assets/chunks/VPLocalSearchBox.B5QLRvr-.js b/previews/PR126/assets/chunks/VPLocalSearchBox.B5QLRvr-.js
deleted file mode 100644
index db7abc15..00000000
--- a/previews/PR126/assets/chunks/VPLocalSearchBox.B5QLRvr-.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var Ft=Object.defineProperty;var Ot=(a,e,t)=>e in a?Ft(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ot(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as me,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as st,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as he,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as Ut,k as L,at as qt,au as Gt,av as Ht,c as Z,n as nt,e as Se,C as it,F as rt,a as fe,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as es,_ as ts}from"./framework.BSoZtefh.js";import{u as ss,c as ns}from"./theme.CgVVWsvL.js";const is={root:()=>Ct(()=>import("./@localSearchIndexroot.BPOex-3s.js"),[])};/*!
-* tabbable 6.2.0
-* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
-*/var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=mt.join(","),gt=typeof Element>"u",ae=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Fe=!gt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Oe=function a(e,t){var s;t===void 0&&(t=!0);var n=e==null||(s=e.getAttribute)===null||s===void 0?void 0:s.call(e,"inert"),r=n===""||n==="true",i=r||t&&e&&a(e.parentNode);return i},rs=function(e){var t,s=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return s===""||s==="true"},bt=function(e,t,s){if(Oe(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&n.unshift(e),n=n.filter(s),n},yt=function a(e,t,s){for(var n=[],r=Array.from(e);r.length;){var i=r.shift();if(!Oe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,s);s.flatten?n.push.apply(n,c):n.push({scopeParent:i,candidates:c})}else{var h=ae.call(i,Ne);h&&s.filter(i)&&(t||!e.includes(i))&&n.push(i);var m=i.shadowRoot||typeof s.getShadowRoot=="function"&&s.getShadowRoot(i),f=!Oe(m,!1)&&(!s.shadowRootFilter||s.shadowRootFilter(i));if(m&&f){var b=a(m===!0?i.children:m.children,!0,s);s.flatten?n.push.apply(n,b):n.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return n},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||rs(e))&&!wt(e)?0:e.tabIndex},as=function(e,t){var s=re(e);return s<0&&t&&!wt(e)?0:s},os=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},ls=function(e){return xt(e)&&e.type==="hidden"},cs=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(s){return s.tagName==="SUMMARY"});return t},us=function(e,t){for(var s=0;ssummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!s||s==="full"||s==="legacy-full"){if(typeof n=="function"){for(var o=e;e;){var l=e.parentElement,c=Fe(e);if(l&&!l.shadowRoot&&n(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(ps(e))return!e.getClientRects().length;if(s!=="legacy-full")return!0}else if(s==="non-zero-area")return ot(e);return!1},ms=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var s=0;s=0)},bs=function a(e){var t=[],s=[];return e.forEach(function(n,r){var i=!!n.scopeParent,o=i?n.scopeParent:n,l=as(o,i),c=i?a(n.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):s.push({documentOrder:r,tabIndex:l,item:n,isScope:i,content:c})}),s.sort(os).reduce(function(n,r){return r.isScope?n.push.apply(n,r.content):n.push(r.content),n},[]).concat(t)},ys=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:gs}):s=bt(e,t.includeContainer,Be.bind(null,t)),bs(s)},ws=function(e,t){t=t||{};var s;return t.getShadowRoot?s=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):s=bt(e,t.includeContainer,Ce.bind(null,t)),s},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},xs=mt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,xs)===!1?!1:Ce(t,e)};/*!
-* focus-trap 7.6.2
-* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
-*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,s=Array(e);t0){var s=e[e.length-1];s!==t&&s.pause()}var n=e.indexOf(t);n===-1||e.splice(n,1),e.push(t)},deactivateTrap:function(e,t){var s=e.indexOf(t);s!==-1&&e.splice(s,1),e.length>0&&e[e.length-1].unpause()}},Os=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Cs=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ge=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},Rs=function(e){return ge(e)&&!e.shiftKey},As=function(e){return ge(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},ve=function(e){for(var t=arguments.length,s=new Array(t>1?t-1:0),n=1;n1&&arguments[1]!==void 0?arguments[1]:{},g=d.hasFallback,T=g===void 0?!1:g,k=d.params,O=k===void 0?[]:k,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,Is(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=s.querySelector(S)}catch(v){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(v.message,'"'))}if(!C&&!T)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},m=function(){var u=h("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(s.activeElement)>=0)u=s.activeElement;else{var d=i.tabbableGroups[0],g=d&&d.firstTabbableNode;u=g||h("fallbackFocus")}else u===null&&(u=h("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},f=function(){if(i.containerGroups=i.containers.map(function(u){var d=ys(u,r.tabbableOptions),g=ws(u,r.tabbableOptions),T=d.length>0?d[0]:void 0,k=d.length>0?d[d.length-1]:void 0,O=g.find(function(v){return oe(v)}),S=g.slice().reverse().find(function(v){return oe(v)}),C=!!d.find(function(v){return re(v)>0});return{container:u,tabbableNodes:d,focusableNodes:g,posTabIndexesFound:C,firstTabbableNode:T,lastTabbableNode:k,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?E?g.slice(g.indexOf(p)+1).find(function(z){return oe(z)}):g.slice(0,g.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(E?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!h("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(m());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Os(u)&&u.select()}},x=function(u){var d=h("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,g=u.event,T=u.isBackward,k=T===void 0?!1:T;d=d||Ee(g),f();var O=null;if(i.tabbableGroups.length>0){var S=c(d,g),C=S>=0?i.containerGroups[S]:void 0;if(S<0)k?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(k){var v=i.tabbableGroups.findIndex(function(j){var I=j.firstTabbableNode;return d===I});if(v<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(v=S),v>=0){var p=v===0?i.tabbableGroups.length-1:v-1,E=i.tabbableGroups[p];O=re(d)>=0?E.lastTabbableNode:E.lastDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var I=j.lastTabbableNode;return d===I});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ge(g)||(O=C.nextTabbableNode(d))}}else O=h("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(ve(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}ve(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),g=c(d,u)>=0;if(g||d instanceof Document)g&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var T,k=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(v){return v===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(T=S[C-1],k=!1))}}else i.containerGroups.some(function(v){return v.tabbableNodes.some(function(p){return re(p)>0})})||(k=!1);else k=!1;k&&(T=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(T||i.mostRecentlyFocusedNode||m())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var g=w({event:u,isBackward:d});g&&(ge(u)&&u.preventDefault(),y(g))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Cs(u)&&ve(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||ve(r.clickOutsideDeactivates,u)||ve(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(n,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(m())}):y(m()),s.addEventListener("focusin",A,!0),s.addEventListener("mousedown",R,{capture:!0,passive:!1}),s.addEventListener("touchstart",R,{capture:!0,passive:!1}),s.addEventListener("click",V,{capture:!0,passive:!1}),s.addEventListener("keydown",Q,{capture:!0,passive:!1}),s.addEventListener("keydown",W),o},be=function(){if(i.active)return s.removeEventListener("focusin",A,!0),s.removeEventListener("mousedown",R,!0),s.removeEventListener("touchstart",R,!0),s.removeEventListener("click",V,!0),s.removeEventListener("keydown",Q,!0),s.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(g){var T=Array.from(g.removedNodes);return T.some(function(k){return k===i.mostRecentlyFocusedNode})});d&&y(m())},U=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,q=function(){U&&(U.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){U.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),g=l(u,"onPostActivate"),T=l(u,"checkCanFocusTrap");T||f(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=s.activeElement,d==null||d();var k=function(){T&&f(),$(),q(),g==null||g()};return T?(T(i.containers.concat()).then(k,k),this):(k(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,q(),ut.deactivateTrap(n,o);var g=l(d,"onDeactivate"),T=l(d,"onPostDeactivate"),k=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");g==null||g();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),T==null||T()})};return O&&k?(k(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){if(i.paused||!i.active)return this;var d=l(u,"onPause"),g=l(u,"onPostPause");return i.paused=!0,d==null||d(),be(),q(),g==null||g(),this},unpause:function(u){if(!i.paused||!i.active)return this;var d=l(u,"onUnpause"),g=l(u,"onPostUnpause");return i.paused=!1,d==null||d(),f(),$(),q(),g==null||g(),this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(g){return typeof g=="string"?s.querySelector(g):g}),i.active&&f(),q(),this}},o.updateContainerElements(e),o};function Ds(a,e={}){let t;const{immediate:s,...n}=e,r=ie(!1),i=ie(!1),o=f=>t&&t.activate(f),l=f=>t&&t.deactivate(f),c=()=>{t&&(t.pause(),i.value=!0)},h=()=>{t&&(t.unpause(),i.value=!1)},m=me(()=>{const f=tt(a);return(Array.isArray(f)?f:[f]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(m,f=>{f.length&&(t=Ls(f,{...n,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),s&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:h}}class ce{constructor(e,t=!0,s=[],n=5e3){this.ctx=e,this.iframes=t,this.exclude=s,this.iframesTimeout=n}static matches(e,t){const s=typeof t=="string"?[t]:t,n=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(n){let r=!1;return s.every(i=>n.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(s=>{const n=t.filter(r=>r.contains(s)).length>0;t.indexOf(s)===-1&&!n&&t.push(s)}),t}getIframeContents(e,t,s=()=>{}){let n;try{const r=e.contentWindow;if(n=r.document,!r||!n)throw new Error("iframe inaccessible")}catch{s()}n&&t(n)}isIframeBlank(e){const t="about:blank",s=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&s!==t&&s}observeIframeLoad(e,t,s){let n=!1,r=null;const i=()=>{if(!n){n=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,s))}catch{s()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,s){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,s):this.getIframeContents(e,t,s):this.observeIframeLoad(e,t,s)}catch{s()}}waitForIframes(e,t){let s=0;this.forEachIframe(e,()=>!0,n=>{s++,this.waitForIframes(n.querySelector("html"),()=>{--s||t()})},n=>{n||t()})}forEachIframe(e,t,s,n=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&n(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,h=>{t(c)&&(o++,s(h)),l()},l)})}createIterator(e,t,s){return document.createNodeIterator(e,t,s,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,s){const n=e.compareDocumentPosition(s),r=Node.DOCUMENT_POSITION_PRECEDING;if(n&r)if(t!==null){const i=t.compareDocumentPosition(s),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let s;return t===null?s=e.nextNode():s=e.nextNode()&&e.nextNode(),{prevNode:t,node:s}}checkIframeFilter(e,t,s,n){let r=!1,i=!1;return n.forEach((o,l)=>{o.val===s&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,s)?(r===!1&&!i?n.push({val:s,handled:!0}):r!==!1&&!i&&(n[r].handled=!0),!0):(r===!1&&n.push({val:s,handled:!1}),!1)}handleOpenIframes(e,t,s,n){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,s,n)})})}iterateThroughNodes(e,t,s,n,r){const i=this.createIterator(t,e,n);let o=[],l=[],c,h,m=()=>({prevNode:h,node:c}=this.getIteratorNode(i),c);for(;m();)this.iframes&&this.forEachIframe(t,f=>this.checkIframeFilter(c,h,f,o),f=>{this.createInstanceOnIframe(f).forEachNode(e,b=>l.push(b),n)}),l.push(c);l.forEach(f=>{s(f)}),this.iframes&&this.handleOpenIframes(o,e,s,n),r()}forEachNode(e,t,s,n=()=>{}){const r=this.getContexts();let i=r.length;i||n(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,s,()=>{--i<=0&&n()})};this.iframes?this.waitForIframes(o,l):l()})}}let zs=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const s=this.opt.log;this.opt.debug&&typeof s=="object"&&typeof s[t]=="function"&&s[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,s=this.opt.caseSensitive?"":"i",n=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${s}`),n+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+n))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,s,n)=>{let r=n.charAt(s+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const s=this.opt.ignorePunctuation;return Array.isArray(s)&&s.length&&t.push(this.escapeStr(s.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",s=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let n=[];return e.split("").forEach(r=>{s.every(i=>{if(i.indexOf(r)!==-1){if(n.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),n.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let s=this.opt.accuracy,n=typeof s=="string"?s:s.value,r=typeof s=="string"?[]:s.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),n){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(s=>{this.opt.separateWordSearch?s.split(" ").forEach(n=>{n.trim()&&t.indexOf(n)===-1&&t.push(n)}):s.trim()&&t.indexOf(s)===-1&&t.push(s)}),{keywords:t.sort((s,n)=>n.length-s.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let s=0;return e.sort((n,r)=>n.start-r.start).forEach(n=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(n,s);o&&(n.start=r,n.length=i-r,t.push(n),s=i)}),t}callNoMatchOnInvalidRanges(e,t){let s,n,r=!1;return e&&typeof e.start<"u"?(s=parseInt(e.start,10),n=s+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&n-t>0&&n-s>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:s,end:n,valid:r}}checkWhitespaceRanges(e,t,s){let n,r=!0,i=s.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,n=l+parseInt(e.length,10),n>i&&(n=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||n-l<0||l>i||n>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):s.substring(l,n).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:n,valid:r}}getTextNodes(e){let t="",s=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,n=>{s.push({start:t.length,end:(t+=n.textContent).length,node:n})},n=>this.matchesExclude(n.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:s})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,s){const n=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(s-t);let o=document.createElement(n);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,s,n,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!n(i.node))return!1;const c=t-i.start,h=(s>i.end?i.end:s)-i.start,m=e.value.substr(0,i.start),f=e.value.substr(h+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,h),e.value=m+f,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=h),e.nodes[y].end-=h)}),s-=h,r(i.node.previousSibling,i.start),s>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,s,n,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!s(c[i],l))continue;let h=c.index;if(i!==0)for(let m=1;m{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let m=1;ms(l[i],m),(m,f)=>{e.lastIndex=f,n(m)})}r()})}wrapRangeFromIndex(e,t,s,n){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:h,valid:m}=this.checkWhitespaceRanges(o,i,r.value);m&&this.wrapRangeInMappedTextNode(r,c,h,f=>t(f,o,r.value.substring(c,h),l),f=>{s(f,o)})}),n()})}unwrapMatches(e){const t=e.parentNode;let s=document.createDocumentFragment();for(;e.firstChild;)s.appendChild(e.removeChild(e.firstChild));t.replaceChild(s,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let s=0,n="wrapMatches";const r=i=>{s++,this.opt.each(i)};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),this[n](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,s),r,()=>{s===0&&this.opt.noMatch(e),this.opt.done(s)})}mark(e,t){this.opt=t;let s=0,n="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let h=new RegExp(this.createRegExp(c),`gm${o}`),m=0;this.log(`Searching with expression "${h}"`),this[n](h,1,(f,b)=>this.opt.filter(b,c,s,m),f=>{m++,s++,this.opt.each(f)},()=>{m===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(s):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(n="wrapMatchesAcrossElements"),i===0?this.opt.done(s):l(r[0])}markRanges(e,t){this.opt=t;let s=0,n=this.checkRanges(e);n&&n.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(n)),this.wrapRangeFromIndex(n,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{s++,this.opt.each(r,i)},()=>{this.opt.done(s)})):this.opt.done(s)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,s=>{this.unwrapMatches(s)},s=>{const n=ce.matches(s,t),r=this.matchesExclude(s);return!n||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function Ps(a){const e=new zs(a);return this.mark=(t,s)=>(e.mark(t,s),this),this.markRegExp=(t,s)=>(e.markRegExp(t,s),this),this.markRanges=(t,s)=>(e.markRanges(t,s),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,s){function n(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(h){try{c(s.next(h))}catch(m){i(m)}}function l(h){try{c(s.throw(h))}catch(m){i(m)}}function c(h){h.done?r(h.value):n(h.value).then(o,l)}c((s=s.apply(a,[])).next())})}const js="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const s=e._tree,n=Array.from(s.keys());this.set=e,this._type=t,this._path=n.length>0?[{node:s,keys:n}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const s=e.get(le(t));return this._path.push({node:s,keys:Array.from(s.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],Vs=(a,e,t)=>{const s=new Map;if(e===void 0)return s;const n=e.length+1,r=n+t,i=new Uint8Array(r*n).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const h=n[l-1];h<=t&&s.set(o,[a.get(c),h])}else{let h=r;for(let m=0;mt)continue e}Et(a.get(c),e,t,s,n,h,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,s]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[n,r]=qe(s);for(const i of n.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),n.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,$s(this._tree,e)}entries(){return new De(this,js)}forEach(e){for(const[t,s]of this)e(t,s,this)}fuzzyGet(e,t){return Vs(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);return s.set(D,t(s.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const s=ze(this._tree,e);let n=s.get(D);return n===void 0&&s.set(D,n=t()),n}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[s,n]of e)t.set(s,n);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const s of a.keys())if(s!==D&&e.startsWith(s))return t.push([a,s]),Re(a.get(s),e.slice(s.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let s=0;a&&s{const[t,s]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(s);else if(t.size===1){const[n,r]=t.entries().next().value;It(s,n,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=qe(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[s,n]=e.entries().next().value;s!==D&&It(a.slice(0,-1),s,n)}},It=(a,e,t)=>{if(a.length===0)return;const[s,n]=qe(a);s.set(n+e,t),s.delete(n)},qe=a=>a[a.length-1],Ge="or",kt="and",Bs="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ht),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},qs),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=Ue,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:s,processTerm:n,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const h=t(e,c);if(h==null)continue;const m=s(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.addFieldLength(l,f,this._documentCount-1,b);for(const y of m){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(f,l,w);else x&&this.addTerm(f,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:s=10}=t,n={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,h)=>(o.push(c),(h+1)%s===0?{chunk:[],promise:l.then(()=>new Promise(m=>setTimeout(m,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),n);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:s,extractField:n,fields:r,idField:i}=this._options,o=n(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const h=n(e,c);if(h==null)continue;const m=t(h.toString(),c),f=this._fieldIds[c],b=new Set(m).size;this.removeFieldLength(l,f,this._documentCount,b);for(const y of m){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(f,l,w);else x&&this.removeTerm(f,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((s,n)=>{this.removeFieldLength(t,n,this._documentCount,s)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:s,batchWait:n}=this._options.autoVacuum;this.conditionalVacuum({batchSize:s,batchWait:n},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const s of e)this.discard(s)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:s}=this._options,n=s(e,t);this.discard(n),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const s=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=Ue,this.performVacuuming(e,s)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const s=this._dirtCount;if(this.vacuumConditionsMet(t)){const n=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,h]of l)for(const[m]of h)this._documentIds.has(m)||(h.size<=1?l.delete(c):h.delete(m));this._index.get(o).size===0&&this._index.delete(o),i%n===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=s}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:s}=e;return t=t||Ve.minDirtCount,s=s||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=s}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:s}=this._options,n=Object.assign(Object.assign({},s),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:h}]of r){const m=c.length||1,f={id:this._documentIds.get(o),score:l*m,terms:Object.keys(h),queryTerms:c,match:h};Object.assign(f,this._storedFields.get(o)),(n.filter==null||n.filter(f))&&i.push(f)}return e===ue.wildcard&&n.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const s=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=s.get(o);l!=null?(l.score+=r,l.count+=1):s.set(o,{score:r,terms:i,count:1})}const n=[];for(const[r,{score:i,terms:o,count:l}]of s)n.push({suggestion:r,terms:o,score:i/l});return n.sort(pt),n}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(n),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,h]of l._documentIds)l._idToShortId.set(h,c);for(const[c,h]of s){const m=new Map;for(const f of Object.keys(h)){let b=h[f];o===1&&(b=b.ds),m.set(parseInt(f,10),Te(b))}l._index.set(c,m)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:s,documentIds:n,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(n),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[h,m]of l._documentIds)l._idToShortId.set(m,h);let c=0;for(const[h,m]of s){const f=new Map;for(const b of Object.keys(m)){let y=m[b];o===1&&(y=y.ds),f.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(h,f)}return l})}static instantiateMiniSearch(e,t){const{documentCount:s,nextId:n,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=s,c._nextId=n,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const f=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,f));return this.combineResults(b,f.combineWith)}const{tokenize:s,processTerm:n,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:s,processTerm:n},r),t),{tokenize:o,processTerm:l}=i,m=o(e).flatMap(f=>l(f)).filter(f=>!!f).map(Us(i)).map(f=>this.executeQuerySpec(f,i));return this.combineResults(m,i.combineWith)}executeQuerySpec(e,t){const s=Object.assign(Object.assign({},this._options.searchOptions),t),n=(s.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(s.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=s,{fuzzy:c,prefix:h}=Object.assign(Object.assign({},ht.weights),i),m=this._index.get(e.term),f=this.termResults(e.term,e.term,1,e.termBoost,m,n,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=h*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,n,r,l,f)}return f}executeWildcardQuery(e){const t=new Map,s=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[n,r]of this._documentIds){const i=s.boostDocument?s.boostDocument(r,"",this._storedFields.get(n)):1;t.set(n,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const s=t.toLowerCase(),n=Ws[s];if(!n)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(n)||new Map}toJSON(){const e=[];for(const[t,s]of this._index){const n={};for(const[r,i]of s)n[r]=Object.fromEntries(i);e.push([t,n])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,s,n,r,i,o,l,c=new Map){if(r==null)return c;for(const h of Object.keys(i)){const m=i[h],f=this._fieldIds[h],b=r.get(f);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[f];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(f,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[f],Q=Js(A,y,this._documentCount,J,x,l),W=s*n*m*R*Q,V=c.get(w);if(V){V.score+=W,Gs(V.terms,e);const $=Pe(V.match,t);$?$.push(h):V.match[t]=[h]}else c.set(w,{score:W,terms:[e],match:{[t]:[h]}})}}return c}addTerm(e,t,s){const n=this._index.fetch(s,vt);let r=n.get(e);if(r==null)r=new Map,r.set(t,1),n.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,s){if(!this._index.has(s)){this.warnDocumentChanged(t,e,s);return}const n=this._index.fetch(s,vt),r=n.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,s):r.get(t)<=1?r.size<=1?n.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(s).size===0&&this._index.delete(s)}warnDocumentChanged(e,t,s){for(const n of Object.keys(this._fieldIds))if(this._fieldIds[n]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${s}" was not present in field "${n}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Ws={[Ge]:(a,e)=>{for(const t of e.keys()){const s=a.get(t);if(s==null)a.set(t,e.get(t));else{const{score:n,terms:r,match:i}=e.get(t);s.score=s.score+n,s.match=Object.assign(s.match,i),ft(s.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const s of e.keys()){const n=a.get(s);if(n==null)continue;const{score:r,terms:i,match:o}=e.get(s);ft(n.terms,i),t.set(s,{score:n.score+r,terms:n.terms,match:Object.assign(n.match,o)})}return t},[Bs]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Ks={k:1.2,b:.7,d:.5},Js=(a,e,t,s,n,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*s/n)))},Us=a=>(e,t,s)=>{const n=typeof a.fuzzy=="function"?a.fuzzy(e,t,s):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,s):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,s):1;return{term:e,fuzzy:n,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Hs),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ht={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Ks},qs={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},Ue={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),Ue),Gs=(a,e)=>{a.includes(e)||a.push(e)},ft=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,vt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const s of Object.keys(a))e.set(parseInt(s,10),a[s]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Hs=/[\n\r\p{Z}\p{P}]+/u;class Qs{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Ys=["aria-owns"],Zs={class:"shell"},Xs=["title"],en={class:"search-actions before"},tn=["title"],sn=["aria-activedescendant","aria-controls","placeholder"],nn={class:"search-actions"},rn=["title"],an=["disabled","title"],on=["id","role","aria-labelledby"],ln=["id","aria-selected"],cn=["href","aria-label","onMouseenter","onFocusin","data-index"],un={class:"titles"},dn=["innerHTML"],hn={class:"title main"},fn=["innerHTML"],pn={key:0,class:"excerpt-wrapper"},vn={key:0,class:"excerpt",inert:""},mn=["innerHTML"],gn={key:0,class:"no-results"},bn={class:"search-keyboard-shortcuts"},yn=["aria-label"],wn=["aria-label"],xn=["aria-label"],_n=["aria-label"],Sn=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,s=xe(),n=xe(),r=xe(is),i=ss(),{activate:o}=Ds(s,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,h=st(async()=>{var v,p,E,F,z,P,j,I,K;return at(ue.loadJSON((E=await((p=(v=r.value)[l.value])==null?void 0:p.call(v)))==null?void 0:E.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(I=c.value.search.options)==null?void 0:I.miniSearch)==null?void 0:K.options)}))}),f=me(()=>{var v,p;return((v=c.value.search)==null?void 0:v.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=me(()=>{var v,p,E;return((v=c.value.search)==null?void 0:v.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((E=c.value.search.options)==null?void 0:E.detailedView)===!1)}),x=me(()=>{var p,E,F,z,P,j,I;const v=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(E=v==null?void 0:v.locales)==null?void 0:E[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((I=(j=v==null?void 0:v.translations)==null?void 0:j.button)==null?void 0:I.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(f,()=>{R.value=!1});const A=st(async()=>{if(n.value)return at(new Ps(n.value))},null),J=new Qs(16);jt(()=>[h.value,f.value,b.value],async([v,p,E],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==v&&J.clear();let P=!1;if(z(()=>{P=!0}),!v)return;w.value=v.search(p).slice(0,16),R.value=!0;const j=E?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const se=B.slice(0,B.indexOf("#"));let Y=J.get(se);if(Y)continue;Y=new Map,J.set(se,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const ne=Yt(G);ne.config.warnHandler=()=>{},ne.provide(Zt,i),Object.defineProperties(ne.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");ne.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),ne.unmount()}if(P)return}const I=new Set;if(w.value=w.value.map(B=>{const[te,se]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(se))??"";for(const ne in B.match)I.add(ne);return{...B,text:G}}),await he(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var se;(se=A.value)==null||se.markRegExp(k(I),{done:B})}})});const K=((ee=s.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=n.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(v){const p=Xt(v.slice(0,v.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${v}`);return{id:v,mod:await import(p)}}catch(E){return console.error(E),{id:v,mod:{}}}}const W=ie(),V=me(()=>{var v;return((v=f.value)==null?void 0:v.length)<=0});function $(v=!0){var p,E;(p=W.value)==null||p.focus(),v&&((E=W.value)==null||E.select())}Me(()=>{$()});function be(v){v.pointerType==="mouse"&&$()}const M=ie(-1),U=ie(!0);$e(w,v=>{M.value=v.length?0:-1,q()});function q(){he(()=>{const v=document.querySelector(".result.selected");v==null||v.scrollIntoView({block:"nearest"})})}_e("ArrowUp",v=>{v.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),U.value=!0,q()}),_e("ArrowDown",v=>{v.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),U.value=!0,q()});const N=Vt();_e("Enter",v=>{if(v.isComposing||v.target instanceof HTMLButtonElement&&v.target.type!=="submit")return;const p=w.value[M.value];if(v.target instanceof HTMLInputElement&&!p){v.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=ns({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",v=>{v.preventDefault(),t("close")});const g=Bt(Wt?document.body:null);Me(()=>{he(()=>{g.value=!0,he().then(()=>o())})}),Kt(()=>{g.value=!1});function T(){f.value="",he().then(()=>$(!1))}function k(v){return new RegExp([...v].sort((p,E)=>E.length-p.length).map(p=>`(${es(p)})`).join("|"),"gi")}function O(v){var F;if(!U.value)return;const p=(F=v.target)==null?void 0:F.closest(".result"),E=Number.parseInt(p==null?void 0:p.dataset.index);E>=0&&E!==M.value&&(M.value=E),U.value=!1}return(v,p)=>{var E,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:s,role:"button","aria-owns":(E=w.value)!=null&&E.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=I=>v.$emit("close"))}),_("div",Zs,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=I=>be(I)),onSubmit:p[5]||(p[5]=Ut(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,Xs),_("div",en,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=I=>v.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,tn)]),qt(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=I=>Ht(f)?f.value=I:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,sn),[[Gt,L(f)]]),_("div",nn,[y.value?Se("",!0):(H(),Z("button",{key:0,class:nt(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=I=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rn)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:T},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,an)])],32),_("ul",{ref_key:"resultsEl",ref:n,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(I,K)=>(H(),Z("li",{key:I.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:I.id,class:nt(["result",{selected:M.value===K}]),"aria-label":[...I.titles,I.title].join(" > "),onMouseenter:ee=>!U.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>v.$emit("close")),"data-index":K},[_("div",null,[_("div",un,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(I.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,dn),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",hn,[_("span",{class:"text",innerHTML:I.title},null,8,fn)])]),L(b)?(H(),Z("div",pn,[I.text?(H(),Z("div",vn,[_("div",{class:"vp-doc",innerHTML:I.text},null,8,mn)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cn)],8,ln))),128)),L(f)&&!w.value.length&&R.value?(H(),Z("li",gn,[fe(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(f)),1),p[15]||(p[15]=fe('" '))])):Se("",!0)],40,on),_("div",bn,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,yn),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,wn),fe(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xn),fe(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_n),fe(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Ys)])}}}),Fn=ts(Sn,[["__scopeId","data-v-42e65fb9"]]);export{Fn as default};
diff --git a/previews/PR126/assets/chunks/VPLocalSearchBox.BFjx05Wg.js b/previews/PR126/assets/chunks/VPLocalSearchBox.BFjx05Wg.js
new file mode 100644
index 00000000..90523fba
--- /dev/null
+++ b/previews/PR126/assets/chunks/VPLocalSearchBox.BFjx05Wg.js
@@ -0,0 +1,8 @@
+var Ot=Object.defineProperty;var Ft=(a,e,t)=>e in a?Ot(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var Ae=(a,e,t)=>Ft(a,typeof e!="symbol"?e+"":e,t);import{V as Ct,p as ie,h as ge,aj as tt,ak as Rt,al as At,q as $e,am as Mt,d as Lt,D as xe,an as nt,ao as Dt,ap as zt,s as Pt,aq as jt,v as Me,P as fe,O as _e,ar as Vt,as as $t,W as Bt,R as Wt,$ as Kt,o as H,b as Jt,j as _,a0 as qt,k as L,at as Ut,au as Gt,av as Ht,c as Z,n as st,e as Se,C as it,F as rt,a as he,t as pe,aw as Qt,ax as at,ay as Yt,a9 as Zt,af as Xt,az as en,_ as tn}from"./framework.CojPSOJE.js";import{u as nn,c as sn}from"./theme.Cq6vZMMO.js";const rn={root:()=>Ct(()=>import("./@localSearchIndexroot.BCSyAezw.js"),[])};/*!
+* tabbable 6.2.0
+* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
+*/var gt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=gt.join(","),vt=typeof Element>"u",ae=vt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Oe=!vt&&Element.prototype.getRootNode?function(a){var e;return a==null||(e=a.getRootNode)===null||e===void 0?void 0:e.call(a)}:function(a){return a==null?void 0:a.ownerDocument},Fe=function a(e,t){var n;t===void 0&&(t=!0);var s=e==null||(n=e.getAttribute)===null||n===void 0?void 0:n.call(e,"inert"),r=s===""||s==="true",i=r||t&&e&&a(e.parentNode);return i},an=function(e){var t,n=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return n===""||n==="true"},bt=function(e,t,n){if(Fe(e))return[];var s=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ae.call(e,Ne)&&s.unshift(e),s=s.filter(n),s},yt=function a(e,t,n){for(var s=[],r=Array.from(e);r.length;){var i=r.shift();if(!Fe(i,!1))if(i.tagName==="SLOT"){var o=i.assignedElements(),l=o.length?o:i.children,c=a(l,!0,n);n.flatten?s.push.apply(s,c):s.push({scopeParent:i,candidates:c})}else{var f=ae.call(i,Ne);f&&n.filter(i)&&(t||!e.includes(i))&&s.push(i);var g=i.shadowRoot||typeof n.getShadowRoot=="function"&&n.getShadowRoot(i),h=!Fe(g,!1)&&(!n.shadowRootFilter||n.shadowRootFilter(i));if(g&&h){var b=a(g===!0?i.children:g.children,!0,n);n.flatten?s.push.apply(s,b):s.push({scopeParent:i,candidates:b})}else r.unshift.apply(r,i.children)}}return s},wt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},re=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||an(e))&&!wt(e)?0:e.tabIndex},on=function(e,t){var n=re(e);return n<0&&t&&!wt(e)?0:n},ln=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},xt=function(e){return e.tagName==="INPUT"},cn=function(e){return xt(e)&&e.type==="hidden"},un=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(n){return n.tagName==="SUMMARY"});return t},dn=function(e,t){for(var n=0;nsummary:first-of-type"),i=r?e.parentElement:e;if(ae.call(i,"details:not([open]) *"))return!0;if(!n||n==="full"||n==="legacy-full"){if(typeof s=="function"){for(var o=e;e;){var l=e.parentElement,c=Oe(e);if(l&&!l.shadowRoot&&s(l)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!l&&c!==e.ownerDocument?e=c.host:e=l}e=o}if(mn(e))return!e.getClientRects().length;if(n!=="legacy-full")return!0}else if(n==="non-zero-area")return ot(e);return!1},vn=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var n=0;n=0)},yn=function a(e){var t=[],n=[];return e.forEach(function(s,r){var i=!!s.scopeParent,o=i?s.scopeParent:s,l=on(o,i),c=i?a(s.candidates):o;l===0?i?t.push.apply(t,c):t.push(o):n.push({documentOrder:r,tabIndex:l,item:s,isScope:i,content:c})}),n.sort(ln).reduce(function(s,r){return r.isScope?s.push.apply(s,r.content):s.push(r.content),s},[]).concat(t)},wn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Be.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:bn}):n=bt(e,t.includeContainer,Be.bind(null,t)),yn(n)},xn=function(e,t){t=t||{};var n;return t.getShadowRoot?n=yt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):n=bt(e,t.includeContainer,Ce.bind(null,t)),n},oe=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,Ne)===!1?!1:Be(t,e)},_n=gt.concat("iframe").join(","),Le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ae.call(e,_n)===!1?!1:Ce(t,e)};/*!
+* focus-trap 7.6.4
+* @license MIT, https://github.com/focus-trap/focus-trap/blob/master/LICENSE
+*/function We(a,e){(e==null||e>a.length)&&(e=a.length);for(var t=0,n=Array(e);t0){var n=e[e.length-1];n!==t&&n._setPausedState(!0)}var s=e.indexOf(t);s===-1||e.splice(s,1),e.push(t)},deactivateTrap:function(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.length>0&&!e[e.length-1]._isManuallyPaused()&&e[e.length-1]._setPausedState(!1)}},Cn=function(e){return e.tagName&&e.tagName.toLowerCase()==="input"&&typeof e.select=="function"},Rn=function(e){return(e==null?void 0:e.key)==="Escape"||(e==null?void 0:e.key)==="Esc"||(e==null?void 0:e.keyCode)===27},ve=function(e){return(e==null?void 0:e.key)==="Tab"||(e==null?void 0:e.keyCode)===9},An=function(e){return ve(e)&&!e.shiftKey},Mn=function(e){return ve(e)&&e.shiftKey},dt=function(e){return setTimeout(e,0)},me=function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),s=1;s1&&arguments[1]!==void 0?arguments[1]:{},v=d.hasFallback,E=v===void 0?!1:v,T=d.params,O=T===void 0?[]:T,S=r[u];if(typeof S=="function"&&(S=S.apply(void 0,kn(O))),S===!0&&(S=void 0),!S){if(S===void 0||S===!1)return S;throw new Error("`".concat(u,"` was specified but was not a node, or did not return a node"))}var C=S;if(typeof S=="string"){try{C=n.querySelector(S)}catch(m){throw new Error("`".concat(u,'` appears to be an invalid selector; error="').concat(m.message,'"'))}if(!C&&!E)throw new Error("`".concat(u,"` as selector refers to no known node"))}return C},g=function(){var u=f("initialFocus",{hasFallback:!0});if(u===!1)return!1;if(u===void 0||u&&!Le(u,r.tabbableOptions))if(c(n.activeElement)>=0)u=n.activeElement;else{var d=i.tabbableGroups[0],v=d&&d.firstTabbableNode;u=v||f("fallbackFocus")}else u===null&&(u=f("fallbackFocus"));if(!u)throw new Error("Your focus-trap needs to have at least one focusable element");return u},h=function(){if(i.containerGroups=i.containers.map(function(u){var d=wn(u,r.tabbableOptions),v=xn(u,r.tabbableOptions),E=d.length>0?d[0]:void 0,T=d.length>0?d[d.length-1]:void 0,O=v.find(function(m){return oe(m)}),S=v.slice().reverse().find(function(m){return oe(m)}),C=!!d.find(function(m){return re(m)>0});return{container:u,tabbableNodes:d,focusableNodes:v,posTabIndexesFound:C,firstTabbableNode:E,lastTabbableNode:T,firstDomTabbableNode:O,lastDomTabbableNode:S,nextTabbableNode:function(p){var I=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,F=d.indexOf(p);return F<0?I?v.slice(v.indexOf(p)+1).find(function(z){return oe(z)}):v.slice(0,v.indexOf(p)).reverse().find(function(z){return oe(z)}):d[F+(I?1:-1)]}}}),i.tabbableGroups=i.containerGroups.filter(function(u){return u.tabbableNodes.length>0}),i.tabbableGroups.length<=0&&!f("fallbackFocus"))throw new Error("Your focus-trap must have at least one container with at least one tabbable node in it at all times");if(i.containerGroups.find(function(u){return u.posTabIndexesFound})&&i.containerGroups.length>1)throw new Error("At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.")},b=function(u){var d=u.activeElement;if(d)return d.shadowRoot&&d.shadowRoot.activeElement!==null?b(d.shadowRoot):d},y=function(u){if(u!==!1&&u!==b(document)){if(!u||!u.focus){y(g());return}u.focus({preventScroll:!!r.preventScroll}),i.mostRecentlyFocusedNode=u,Cn(u)&&u.select()}},x=function(u){var d=f("setReturnFocus",{params:[u]});return d||(d===!1?!1:u)},w=function(u){var d=u.target,v=u.event,E=u.isBackward,T=E===void 0?!1:E;d=d||Ee(v),h();var O=null;if(i.tabbableGroups.length>0){var S=c(d,v),C=S>=0?i.containerGroups[S]:void 0;if(S<0)T?O=i.tabbableGroups[i.tabbableGroups.length-1].lastTabbableNode:O=i.tabbableGroups[0].firstTabbableNode;else if(T){var m=i.tabbableGroups.findIndex(function(j){var k=j.firstTabbableNode;return d===k});if(m<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d,!1))&&(m=S),m>=0){var p=m===0?i.tabbableGroups.length-1:m-1,I=i.tabbableGroups[p];O=re(d)>=0?I.lastTabbableNode:I.lastDomTabbableNode}else ve(v)||(O=C.nextTabbableNode(d,!1))}else{var F=i.tabbableGroups.findIndex(function(j){var k=j.lastTabbableNode;return d===k});if(F<0&&(C.container===d||Le(d,r.tabbableOptions)&&!oe(d,r.tabbableOptions)&&!C.nextTabbableNode(d))&&(F=S),F>=0){var z=F===i.tabbableGroups.length-1?0:F+1,P=i.tabbableGroups[z];O=re(d)>=0?P.firstTabbableNode:P.firstDomTabbableNode}else ve(v)||(O=C.nextTabbableNode(d))}}else O=f("fallbackFocus");return O},R=function(u){var d=Ee(u);if(!(c(d,u)>=0)){if(me(r.clickOutsideDeactivates,u)){o.deactivate({returnFocus:r.returnFocusOnDeactivate});return}me(r.allowOutsideClick,u)||u.preventDefault()}},A=function(u){var d=Ee(u),v=c(d,u)>=0;if(v||d instanceof Document)v&&(i.mostRecentlyFocusedNode=d);else{u.stopImmediatePropagation();var E,T=!0;if(i.mostRecentlyFocusedNode)if(re(i.mostRecentlyFocusedNode)>0){var O=c(i.mostRecentlyFocusedNode),S=i.containerGroups[O].tabbableNodes;if(S.length>0){var C=S.findIndex(function(m){return m===i.mostRecentlyFocusedNode});C>=0&&(r.isKeyForward(i.recentNavEvent)?C+1=0&&(E=S[C-1],T=!1))}}else i.containerGroups.some(function(m){return m.tabbableNodes.some(function(p){return re(p)>0})})||(T=!1);else T=!1;T&&(E=w({target:i.mostRecentlyFocusedNode,isBackward:r.isKeyBackward(i.recentNavEvent)})),y(E||i.mostRecentlyFocusedNode||g())}i.recentNavEvent=void 0},J=function(u){var d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;i.recentNavEvent=u;var v=w({event:u,isBackward:d});v&&(ve(u)&&u.preventDefault(),y(v))},Q=function(u){(r.isKeyForward(u)||r.isKeyBackward(u))&&J(u,r.isKeyBackward(u))},W=function(u){Rn(u)&&me(r.escapeDeactivates,u)!==!1&&(u.preventDefault(),o.deactivate())},V=function(u){var d=Ee(u);c(d,u)>=0||me(r.clickOutsideDeactivates,u)||me(r.allowOutsideClick,u)||(u.preventDefault(),u.stopImmediatePropagation())},$=function(){if(i.active)return ut.activateTrap(s,o),i.delayInitialFocusTimer=r.delayInitialFocus?dt(function(){y(g())}):y(g()),n.addEventListener("focusin",A,!0),n.addEventListener("mousedown",R,{capture:!0,passive:!1}),n.addEventListener("touchstart",R,{capture:!0,passive:!1}),n.addEventListener("click",V,{capture:!0,passive:!1}),n.addEventListener("keydown",Q,{capture:!0,passive:!1}),n.addEventListener("keydown",W),o},be=function(){if(i.active)return n.removeEventListener("focusin",A,!0),n.removeEventListener("mousedown",R,!0),n.removeEventListener("touchstart",R,!0),n.removeEventListener("click",V,!0),n.removeEventListener("keydown",Q,!0),n.removeEventListener("keydown",W),o},M=function(u){var d=u.some(function(v){var E=Array.from(v.removedNodes);return E.some(function(T){return T===i.mostRecentlyFocusedNode})});d&&y(g())},q=typeof window<"u"&&"MutationObserver"in window?new MutationObserver(M):void 0,U=function(){q&&(q.disconnect(),i.active&&!i.paused&&i.containers.map(function(u){q.observe(u,{subtree:!0,childList:!0})}))};return o={get active(){return i.active},get paused(){return i.paused},activate:function(u){if(i.active)return this;var d=l(u,"onActivate"),v=l(u,"onPostActivate"),E=l(u,"checkCanFocusTrap");E||h(),i.active=!0,i.paused=!1,i.nodeFocusedBeforeActivation=n.activeElement,d==null||d();var T=function(){E&&h(),$(),U(),v==null||v()};return E?(E(i.containers.concat()).then(T,T),this):(T(),this)},deactivate:function(u){if(!i.active)return this;var d=ct({onDeactivate:r.onDeactivate,onPostDeactivate:r.onPostDeactivate,checkCanReturnFocus:r.checkCanReturnFocus},u);clearTimeout(i.delayInitialFocusTimer),i.delayInitialFocusTimer=void 0,be(),i.active=!1,i.paused=!1,U(),ut.deactivateTrap(s,o);var v=l(d,"onDeactivate"),E=l(d,"onPostDeactivate"),T=l(d,"checkCanReturnFocus"),O=l(d,"returnFocus","returnFocusOnDeactivate");v==null||v();var S=function(){dt(function(){O&&y(x(i.nodeFocusedBeforeActivation)),E==null||E()})};return O&&T?(T(x(i.nodeFocusedBeforeActivation)).then(S,S),this):(S(),this)},pause:function(u){return i.active?(i.manuallyPaused=!0,this._setPausedState(!0,u)):this},unpause:function(u){return i.active?(i.manuallyPaused=!1,s[s.length-1]!==this?this:this._setPausedState(!1,u)):this},updateContainerElements:function(u){var d=[].concat(u).filter(Boolean);return i.containers=d.map(function(v){return typeof v=="string"?n.querySelector(v):v}),i.active&&h(),U(),this}},Object.defineProperties(o,{_isManuallyPaused:{value:function(){return i.manuallyPaused}},_setPausedState:{value:function(u,d){if(i.paused===u)return this;if(i.paused=u,u){var v=l(d,"onPause"),E=l(d,"onPostPause");v==null||v(),be(),U(),E==null||E()}else{var T=l(d,"onUnpause"),O=l(d,"onPostUnpause");T==null||T(),h(),$(),U(),O==null||O()}return this}}}),o.updateContainerElements(e),o};function zn(a,e={}){let t;const{immediate:n,...s}=e,r=ie(!1),i=ie(!1),o=h=>t&&t.activate(h),l=h=>t&&t.deactivate(h),c=()=>{t&&(t.pause(),i.value=!0)},f=()=>{t&&(t.unpause(),i.value=!1)},g=ge(()=>{const h=tt(a);return(Array.isArray(h)?h:[h]).map(b=>{const y=tt(b);return typeof y=="string"?y:Rt(y)}).filter(At)});return $e(g,h=>{h.length&&(t=Dn(h,{...s,onActivate(){r.value=!0,e.onActivate&&e.onActivate()},onDeactivate(){r.value=!1,e.onDeactivate&&e.onDeactivate()}}),n&&o())},{flush:"post"}),Mt(()=>l()),{hasFocus:r,isPaused:i,activate:o,deactivate:l,pause:c,unpause:f}}class ce{constructor(e,t=!0,n=[],s=5e3){this.ctx=e,this.iframes=t,this.exclude=n,this.iframesTimeout=s}static matches(e,t){const n=typeof t=="string"?[t]:t,s=e.matches||e.matchesSelector||e.msMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.webkitMatchesSelector;if(s){let r=!1;return n.every(i=>s.call(e,i)?(r=!0,!1):!0),r}else return!1}getContexts(){let e,t=[];return typeof this.ctx>"u"||!this.ctx?e=[]:NodeList.prototype.isPrototypeOf(this.ctx)?e=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?e=this.ctx:typeof this.ctx=="string"?e=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):e=[this.ctx],e.forEach(n=>{const s=t.filter(r=>r.contains(n)).length>0;t.indexOf(n)===-1&&!s&&t.push(n)}),t}getIframeContents(e,t,n=()=>{}){let s;try{const r=e.contentWindow;if(s=r.document,!r||!s)throw new Error("iframe inaccessible")}catch{n()}s&&t(s)}isIframeBlank(e){const t="about:blank",n=e.getAttribute("src").trim();return e.contentWindow.location.href===t&&n!==t&&n}observeIframeLoad(e,t,n){let s=!1,r=null;const i=()=>{if(!s){s=!0,clearTimeout(r);try{this.isIframeBlank(e)||(e.removeEventListener("load",i),this.getIframeContents(e,t,n))}catch{n()}}};e.addEventListener("load",i),r=setTimeout(i,this.iframesTimeout)}onIframeReady(e,t,n){try{e.contentWindow.document.readyState==="complete"?this.isIframeBlank(e)?this.observeIframeLoad(e,t,n):this.getIframeContents(e,t,n):this.observeIframeLoad(e,t,n)}catch{n()}}waitForIframes(e,t){let n=0;this.forEachIframe(e,()=>!0,s=>{n++,this.waitForIframes(s.querySelector("html"),()=>{--n||t()})},s=>{s||t()})}forEachIframe(e,t,n,s=()=>{}){let r=e.querySelectorAll("iframe"),i=r.length,o=0;r=Array.prototype.slice.call(r);const l=()=>{--i<=0&&s(o)};i||l(),r.forEach(c=>{ce.matches(c,this.exclude)?l():this.onIframeReady(c,f=>{t(c)&&(o++,n(f)),l()},l)})}createIterator(e,t,n){return document.createNodeIterator(e,t,n,!1)}createInstanceOnIframe(e){return new ce(e.querySelector("html"),this.iframes)}compareNodeIframe(e,t,n){const s=e.compareDocumentPosition(n),r=Node.DOCUMENT_POSITION_PRECEDING;if(s&r)if(t!==null){const i=t.compareDocumentPosition(n),o=Node.DOCUMENT_POSITION_FOLLOWING;if(i&o)return!0}else return!0;return!1}getIteratorNode(e){const t=e.previousNode();let n;return t===null?n=e.nextNode():n=e.nextNode()&&e.nextNode(),{prevNode:t,node:n}}checkIframeFilter(e,t,n,s){let r=!1,i=!1;return s.forEach((o,l)=>{o.val===n&&(r=l,i=o.handled)}),this.compareNodeIframe(e,t,n)?(r===!1&&!i?s.push({val:n,handled:!0}):r!==!1&&!i&&(s[r].handled=!0),!0):(r===!1&&s.push({val:n,handled:!1}),!1)}handleOpenIframes(e,t,n,s){e.forEach(r=>{r.handled||this.getIframeContents(r.val,i=>{this.createInstanceOnIframe(i).forEachNode(t,n,s)})})}iterateThroughNodes(e,t,n,s,r){const i=this.createIterator(t,e,s);let o=[],l=[],c,f,g=()=>({prevNode:f,node:c}=this.getIteratorNode(i),c);for(;g();)this.iframes&&this.forEachIframe(t,h=>this.checkIframeFilter(c,f,h,o),h=>{this.createInstanceOnIframe(h).forEachNode(e,b=>l.push(b),s)}),l.push(c);l.forEach(h=>{n(h)}),this.iframes&&this.handleOpenIframes(o,e,n,s),r()}forEachNode(e,t,n,s=()=>{}){const r=this.getContexts();let i=r.length;i||s(),r.forEach(o=>{const l=()=>{this.iterateThroughNodes(e,o,t,n,()=>{--i<=0&&s()})};this.iframes?this.waitForIframes(o,l):l()})}}let Pn=class{constructor(e){this.ctx=e,this.ie=!1;const t=window.navigator.userAgent;(t.indexOf("MSIE")>-1||t.indexOf("Trident")>-1)&&(this.ie=!0)}set opt(e){this._opt=Object.assign({},{element:"",className:"",exclude:[],iframes:!1,iframesTimeout:5e3,separateWordSearch:!0,diacritics:!0,synonyms:{},accuracy:"partially",acrossElements:!1,caseSensitive:!1,ignoreJoiners:!1,ignoreGroups:0,ignorePunctuation:[],wildcards:"disabled",each:()=>{},noMatch:()=>{},filter:()=>!0,done:()=>{},debug:!1,log:window.console},e)}get opt(){return this._opt}get iterator(){return new ce(this.ctx,this.opt.iframes,this.opt.exclude,this.opt.iframesTimeout)}log(e,t="debug"){const n=this.opt.log;this.opt.debug&&typeof n=="object"&&typeof n[t]=="function"&&n[t](`mark.js: ${e}`)}escapeStr(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}createRegExp(e){return this.opt.wildcards!=="disabled"&&(e=this.setupWildcardsRegExp(e)),e=this.escapeStr(e),Object.keys(this.opt.synonyms).length&&(e=this.createSynonymsRegExp(e)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),this.opt.diacritics&&(e=this.createDiacriticsRegExp(e)),e=this.createMergedBlanksRegExp(e),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.createJoinersRegExp(e)),this.opt.wildcards!=="disabled"&&(e=this.createWildcardsRegExp(e)),e=this.createAccuracyRegExp(e),e}createSynonymsRegExp(e){const t=this.opt.synonyms,n=this.opt.caseSensitive?"":"i",s=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(let r in t)if(t.hasOwnProperty(r)){const i=t[r],o=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(r):this.escapeStr(r),l=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(i):this.escapeStr(i);o!==""&&l!==""&&(e=e.replace(new RegExp(`(${this.escapeStr(o)}|${this.escapeStr(l)})`,`gm${n}`),s+`(${this.processSynomyms(o)}|${this.processSynomyms(l)})`+s))}return e}processSynomyms(e){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(e=this.setupIgnoreJoinersRegExp(e)),e}setupWildcardsRegExp(e){return e=e.replace(/(?:\\)*\?/g,t=>t.charAt(0)==="\\"?"?":""),e.replace(/(?:\\)*\*/g,t=>t.charAt(0)==="\\"?"*":"")}createWildcardsRegExp(e){let t=this.opt.wildcards==="withSpaces";return e.replace(/\u0001/g,t?"[\\S\\s]?":"\\S?").replace(/\u0002/g,t?"[\\S\\s]*?":"\\S*")}setupIgnoreJoinersRegExp(e){return e.replace(/[^(|)\\]/g,(t,n,s)=>{let r=s.charAt(n+1);return/[(|)\\]/.test(r)||r===""?t:t+"\0"})}createJoinersRegExp(e){let t=[];const n=this.opt.ignorePunctuation;return Array.isArray(n)&&n.length&&t.push(this.escapeStr(n.join(""))),this.opt.ignoreJoiners&&t.push("\\u00ad\\u200b\\u200c\\u200d"),t.length?e.split(/\u0000+/).join(`[${t.join("")}]*`):e}createDiacriticsRegExp(e){const t=this.opt.caseSensitive?"":"i",n=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"];let s=[];return e.split("").forEach(r=>{n.every(i=>{if(i.indexOf(r)!==-1){if(s.indexOf(i)>-1)return!1;e=e.replace(new RegExp(`[${i}]`,`gm${t}`),`[${i}]`),s.push(i)}return!0})}),e}createMergedBlanksRegExp(e){return e.replace(/[\s]+/gmi,"[\\s]+")}createAccuracyRegExp(e){const t="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿";let n=this.opt.accuracy,s=typeof n=="string"?n:n.value,r=typeof n=="string"?[]:n.limiters,i="";switch(r.forEach(o=>{i+=`|${this.escapeStr(o)}`}),s){case"partially":default:return`()(${e})`;case"complementary":return i="\\s"+(i||this.escapeStr(t)),`()([^${i}]*${e}[^${i}]*)`;case"exactly":return`(^|\\s${i})(${e})(?=$|\\s${i})`}}getSeparatedKeywords(e){let t=[];return e.forEach(n=>{this.opt.separateWordSearch?n.split(" ").forEach(s=>{s.trim()&&t.indexOf(s)===-1&&t.push(s)}):n.trim()&&t.indexOf(n)===-1&&t.push(n)}),{keywords:t.sort((n,s)=>s.length-n.length),length:t.length}}isNumeric(e){return Number(parseFloat(e))==e}checkRanges(e){if(!Array.isArray(e)||Object.prototype.toString.call(e[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(e),[];const t=[];let n=0;return e.sort((s,r)=>s.start-r.start).forEach(s=>{let{start:r,end:i,valid:o}=this.callNoMatchOnInvalidRanges(s,n);o&&(s.start=r,s.length=i-r,t.push(s),n=i)}),t}callNoMatchOnInvalidRanges(e,t){let n,s,r=!1;return e&&typeof e.start<"u"?(n=parseInt(e.start,10),s=n+parseInt(e.length,10),this.isNumeric(e.start)&&this.isNumeric(e.length)&&s-t>0&&s-n>0?r=!0:(this.log(`Ignoring invalid or overlapping range: ${JSON.stringify(e)}`),this.opt.noMatch(e))):(this.log(`Ignoring invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)),{start:n,end:s,valid:r}}checkWhitespaceRanges(e,t,n){let s,r=!0,i=n.length,o=t-i,l=parseInt(e.start,10)-o;return l=l>i?i:l,s=l+parseInt(e.length,10),s>i&&(s=i,this.log(`End range automatically set to the max value of ${i}`)),l<0||s-l<0||l>i||s>i?(r=!1,this.log(`Invalid range: ${JSON.stringify(e)}`),this.opt.noMatch(e)):n.substring(l,s).replace(/\s+/g,"")===""&&(r=!1,this.log("Skipping whitespace only range: "+JSON.stringify(e)),this.opt.noMatch(e)),{start:l,end:s,valid:r}}getTextNodes(e){let t="",n=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,s=>{n.push({start:t.length,end:(t+=s.textContent).length,node:s})},s=>this.matchesExclude(s.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT,()=>{e({value:t,nodes:n})})}matchesExclude(e){return ce.matches(e,this.opt.exclude.concat(["script","style","title","head","html"]))}wrapRangeInTextNode(e,t,n){const s=this.opt.element?this.opt.element:"mark",r=e.splitText(t),i=r.splitText(n-t);let o=document.createElement(s);return o.setAttribute("data-markjs","true"),this.opt.className&&o.setAttribute("class",this.opt.className),o.textContent=r.textContent,r.parentNode.replaceChild(o,r),i}wrapRangeInMappedTextNode(e,t,n,s,r){e.nodes.every((i,o)=>{const l=e.nodes[o+1];if(typeof l>"u"||l.start>t){if(!s(i.node))return!1;const c=t-i.start,f=(n>i.end?i.end:n)-i.start,g=e.value.substr(0,i.start),h=e.value.substr(f+i.start);if(i.node=this.wrapRangeInTextNode(i.node,c,f),e.value=g+h,e.nodes.forEach((b,y)=>{y>=o&&(e.nodes[y].start>0&&y!==o&&(e.nodes[y].start-=f),e.nodes[y].end-=f)}),n-=f,r(i.node.previousSibling,i.start),n>i.end)t=i.end;else return!1}return!0})}wrapMatches(e,t,n,s,r){const i=t===0?0:t+1;this.getTextNodes(o=>{o.nodes.forEach(l=>{l=l.node;let c;for(;(c=e.exec(l.textContent))!==null&&c[i]!=="";){if(!n(c[i],l))continue;let f=c.index;if(i!==0)for(let g=1;g{let l;for(;(l=e.exec(o.value))!==null&&l[i]!=="";){let c=l.index;if(i!==0)for(let g=1;gn(l[i],g),(g,h)=>{e.lastIndex=h,s(g)})}r()})}wrapRangeFromIndex(e,t,n,s){this.getTextNodes(r=>{const i=r.value.length;e.forEach((o,l)=>{let{start:c,end:f,valid:g}=this.checkWhitespaceRanges(o,i,r.value);g&&this.wrapRangeInMappedTextNode(r,c,f,h=>t(h,o,r.value.substring(c,f),l),h=>{n(h,o)})}),s()})}unwrapMatches(e){const t=e.parentNode;let n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.removeChild(e.firstChild));t.replaceChild(n,e),this.ie?this.normalizeTextNode(t):t.normalize()}normalizeTextNode(e){if(e){if(e.nodeType===3)for(;e.nextSibling&&e.nextSibling.nodeType===3;)e.nodeValue+=e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);else this.normalizeTextNode(e.firstChild);this.normalizeTextNode(e.nextSibling)}}markRegExp(e,t){this.opt=t,this.log(`Searching with expression "${e}"`);let n=0,s="wrapMatches";const r=i=>{n++,this.opt.each(i)};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),this[s](e,this.opt.ignoreGroups,(i,o)=>this.opt.filter(o,i,n),r,()=>{n===0&&this.opt.noMatch(e),this.opt.done(n)})}mark(e,t){this.opt=t;let n=0,s="wrapMatches";const{keywords:r,length:i}=this.getSeparatedKeywords(typeof e=="string"?[e]:e),o=this.opt.caseSensitive?"":"i",l=c=>{let f=new RegExp(this.createRegExp(c),`gm${o}`),g=0;this.log(`Searching with expression "${f}"`),this[s](f,1,(h,b)=>this.opt.filter(b,c,n,g),h=>{g++,n++,this.opt.each(h)},()=>{g===0&&this.opt.noMatch(c),r[i-1]===c?this.opt.done(n):l(r[r.indexOf(c)+1])})};this.opt.acrossElements&&(s="wrapMatchesAcrossElements"),i===0?this.opt.done(n):l(r[0])}markRanges(e,t){this.opt=t;let n=0,s=this.checkRanges(e);s&&s.length?(this.log("Starting to mark with the following ranges: "+JSON.stringify(s)),this.wrapRangeFromIndex(s,(r,i,o,l)=>this.opt.filter(r,i,o,l),(r,i)=>{n++,this.opt.each(r,i)},()=>{this.opt.done(n)})):this.opt.done(n)}unmark(e){this.opt=e;let t=this.opt.element?this.opt.element:"*";t+="[data-markjs]",this.opt.className&&(t+=`.${this.opt.className}`),this.log(`Removal selector "${t}"`),this.iterator.forEachNode(NodeFilter.SHOW_ELEMENT,n=>{this.unwrapMatches(n)},n=>{const s=ce.matches(n,t),r=this.matchesExclude(n);return!s||r?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},this.opt.done)}};function jn(a){const e=new Pn(a);return this.mark=(t,n)=>(e.mark(t,n),this),this.markRegExp=(t,n)=>(e.markRegExp(t,n),this),this.markRanges=(t,n)=>(e.markRanges(t,n),this),this.unmark=t=>(e.unmark(t),this),this}function ke(a,e,t,n){function s(r){return r instanceof t?r:new t(function(i){i(r)})}return new(t||(t=Promise))(function(r,i){function o(f){try{c(n.next(f))}catch(g){i(g)}}function l(f){try{c(n.throw(f))}catch(g){i(g)}}function c(f){f.done?r(f.value):s(f.value).then(o,l)}c((n=n.apply(a,[])).next())})}const Vn="ENTRIES",_t="KEYS",St="VALUES",D="";class De{constructor(e,t){const n=e._tree,s=Array.from(n.keys());this.set=e,this._type=t,this._path=s.length>0?[{node:n,keys:s}]:[]}next(){const e=this.dive();return this.backtrack(),e}dive(){if(this._path.length===0)return{done:!0,value:void 0};const{node:e,keys:t}=le(this._path);if(le(t)===D)return{done:!1,value:this.result()};const n=e.get(le(t));return this._path.push({node:n,keys:Array.from(n.keys())}),this.dive()}backtrack(){if(this._path.length===0)return;const e=le(this._path).keys;e.pop(),!(e.length>0)&&(this._path.pop(),this.backtrack())}key(){return this.set._prefix+this._path.map(({keys:e})=>le(e)).filter(e=>e!==D).join("")}value(){return le(this._path).node.get(D)}result(){switch(this._type){case St:return this.value();case _t:return this.key();default:return[this.key(),this.value()]}}[Symbol.iterator](){return this}}const le=a=>a[a.length-1],$n=(a,e,t)=>{const n=new Map;if(e===void 0)return n;const s=e.length+1,r=s+t,i=new Uint8Array(r*s).fill(t+1);for(let o=0;o{const l=r*i;e:for(const c of a.keys())if(c===D){const f=s[l-1];f<=t&&n.set(o,[a.get(c),f])}else{let f=r;for(let g=0;gt)continue e}Et(a.get(c),e,t,n,s,f,i,o+c)}};class X{constructor(e=new Map,t=""){this._size=void 0,this._tree=e,this._prefix=t}atPrefix(e){if(!e.startsWith(this._prefix))throw new Error("Mismatched prefix");const[t,n]=Re(this._tree,e.slice(this._prefix.length));if(t===void 0){const[s,r]=Ue(n);for(const i of s.keys())if(i!==D&&i.startsWith(r)){const o=new Map;return o.set(i.slice(r.length),s.get(i)),new X(o,e)}}return new X(t,e)}clear(){this._size=void 0,this._tree.clear()}delete(e){return this._size=void 0,Bn(this._tree,e)}entries(){return new De(this,Vn)}forEach(e){for(const[t,n]of this)e(t,n,this)}fuzzyGet(e,t){return $n(this._tree,e,t)}get(e){const t=Ke(this._tree,e);return t!==void 0?t.get(D):void 0}has(e){const t=Ke(this._tree,e);return t!==void 0&&t.has(D)}keys(){return new De(this,_t)}set(e,t){if(typeof e!="string")throw new Error("key must be a string");return this._size=void 0,ze(this._tree,e).set(D,t),this}get size(){if(this._size)return this._size;this._size=0;const e=this.entries();for(;!e.next().done;)this._size+=1;return this._size}update(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);return n.set(D,t(n.get(D))),this}fetch(e,t){if(typeof e!="string")throw new Error("key must be a string");this._size=void 0;const n=ze(this._tree,e);let s=n.get(D);return s===void 0&&n.set(D,s=t()),s}values(){return new De(this,St)}[Symbol.iterator](){return this.entries()}static from(e){const t=new X;for(const[n,s]of e)t.set(n,s);return t}static fromObject(e){return X.from(Object.entries(e))}}const Re=(a,e,t=[])=>{if(e.length===0||a==null)return[a,t];for(const n of a.keys())if(n!==D&&e.startsWith(n))return t.push([a,n]),Re(a.get(n),e.slice(n.length),t);return t.push([a,e]),Re(void 0,"",t)},Ke=(a,e)=>{if(e.length===0||a==null)return a;for(const t of a.keys())if(t!==D&&e.startsWith(t))return Ke(a.get(t),e.slice(t.length))},ze=(a,e)=>{const t=e.length;e:for(let n=0;a&&n{const[t,n]=Re(a,e);if(t!==void 0){if(t.delete(D),t.size===0)Tt(n);else if(t.size===1){const[s,r]=t.entries().next().value;It(n,s,r)}}},Tt=a=>{if(a.length===0)return;const[e,t]=Ue(a);if(e.delete(t),e.size===0)Tt(a.slice(0,-1));else if(e.size===1){const[n,s]=e.entries().next().value;n!==D&&It(a.slice(0,-1),n,s)}},It=(a,e,t)=>{if(a.length===0)return;const[n,s]=Ue(a);n.set(s+e,t),n.delete(s)},Ue=a=>a[a.length-1],Ge="or",kt="and",Wn="and_not";class ue{constructor(e){if((e==null?void 0:e.fields)==null)throw new Error('MiniSearch: option "fields" must be provided');const t=e.autoVacuum==null||e.autoVacuum===!0?Ve:e.autoVacuum;this._options=Object.assign(Object.assign(Object.assign({},je),e),{autoVacuum:t,searchOptions:Object.assign(Object.assign({},ft),e.searchOptions||{}),autoSuggestOptions:Object.assign(Object.assign({},Gn),e.autoSuggestOptions||{})}),this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldIds={},this._fieldLength=new Map,this._avgFieldLength=[],this._nextId=0,this._storedFields=new Map,this._dirtCount=0,this._currentVacuum=null,this._enqueuedVacuum=null,this._enqueuedVacuumConditions=qe,this.addFields(this._options.fields)}add(e){const{extractField:t,tokenize:n,processTerm:s,fields:r,idField:i}=this._options,o=t(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);if(this._idToShortId.has(o))throw new Error(`MiniSearch: duplicate ID ${o}`);const l=this.addDocumentId(o);this.saveStoredFields(l,e);for(const c of r){const f=t(e,c);if(f==null)continue;const g=n(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.addFieldLength(l,h,this._documentCount-1,b);for(const y of g){const x=s(y,c);if(Array.isArray(x))for(const w of x)this.addTerm(h,l,w);else x&&this.addTerm(h,l,x)}}}addAll(e){for(const t of e)this.add(t)}addAllAsync(e,t={}){const{chunkSize:n=10}=t,s={chunk:[],promise:Promise.resolve()},{chunk:r,promise:i}=e.reduce(({chunk:o,promise:l},c,f)=>(o.push(c),(f+1)%n===0?{chunk:[],promise:l.then(()=>new Promise(g=>setTimeout(g,0))).then(()=>this.addAll(o))}:{chunk:o,promise:l}),s);return i.then(()=>this.addAll(r))}remove(e){const{tokenize:t,processTerm:n,extractField:s,fields:r,idField:i}=this._options,o=s(e,i);if(o==null)throw new Error(`MiniSearch: document does not have ID field "${i}"`);const l=this._idToShortId.get(o);if(l==null)throw new Error(`MiniSearch: cannot remove document with ID ${o}: it is not in the index`);for(const c of r){const f=s(e,c);if(f==null)continue;const g=t(f.toString(),c),h=this._fieldIds[c],b=new Set(g).size;this.removeFieldLength(l,h,this._documentCount,b);for(const y of g){const x=n(y,c);if(Array.isArray(x))for(const w of x)this.removeTerm(h,l,w);else x&&this.removeTerm(h,l,x)}}this._storedFields.delete(l),this._documentIds.delete(l),this._idToShortId.delete(o),this._fieldLength.delete(l),this._documentCount-=1}removeAll(e){if(e)for(const t of e)this.remove(t);else{if(arguments.length>0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new X,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}}discard(e){const t=this._idToShortId.get(e);if(t==null)throw new Error(`MiniSearch: cannot discard document with ID ${e}: it is not in the index`);this._idToShortId.delete(e),this._documentIds.delete(t),this._storedFields.delete(t),(this._fieldLength.get(t)||[]).forEach((n,s)=>{this.removeFieldLength(t,s,this._documentCount,n)}),this._fieldLength.delete(t),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()}maybeAutoVacuum(){if(this._options.autoVacuum===!1)return;const{minDirtFactor:e,minDirtCount:t,batchSize:n,batchWait:s}=this._options.autoVacuum;this.conditionalVacuum({batchSize:n,batchWait:s},{minDirtCount:t,minDirtFactor:e})}discardAll(e){const t=this._options.autoVacuum;try{this._options.autoVacuum=!1;for(const n of e)this.discard(n)}finally{this._options.autoVacuum=t}this.maybeAutoVacuum()}replace(e){const{idField:t,extractField:n}=this._options,s=n(e,t);this.discard(s),this.add(e)}vacuum(e={}){return this.conditionalVacuum(e)}conditionalVacuum(e,t){return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&t,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(()=>{const n=this._enqueuedVacuumConditions;return this._enqueuedVacuumConditions=qe,this.performVacuuming(e,n)}),this._enqueuedVacuum)):this.vacuumConditionsMet(t)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(e),this._currentVacuum)}performVacuuming(e,t){return ke(this,void 0,void 0,function*(){const n=this._dirtCount;if(this.vacuumConditionsMet(t)){const s=e.batchSize||Je.batchSize,r=e.batchWait||Je.batchWait;let i=1;for(const[o,l]of this._index){for(const[c,f]of l)for(const[g]of f)this._documentIds.has(g)||(f.size<=1?l.delete(c):f.delete(g));this._index.get(o).size===0&&this._index.delete(o),i%s===0&&(yield new Promise(c=>setTimeout(c,r))),i+=1}this._dirtCount-=n}yield null,this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null})}vacuumConditionsMet(e){if(e==null)return!0;let{minDirtCount:t,minDirtFactor:n}=e;return t=t||Ve.minDirtCount,n=n||Ve.minDirtFactor,this.dirtCount>=t&&this.dirtFactor>=n}get isVacuuming(){return this._currentVacuum!=null}get dirtCount(){return this._dirtCount}get dirtFactor(){return this._dirtCount/(1+this._documentCount+this._dirtCount)}has(e){return this._idToShortId.has(e)}getStoredFields(e){const t=this._idToShortId.get(e);if(t!=null)return this._storedFields.get(t)}search(e,t={}){const{searchOptions:n}=this._options,s=Object.assign(Object.assign({},n),t),r=this.executeQuery(e,t),i=[];for(const[o,{score:l,terms:c,match:f}]of r){const g=c.length||1,h={id:this._documentIds.get(o),score:l*g,terms:Object.keys(f),queryTerms:c,match:f};Object.assign(h,this._storedFields.get(o)),(s.filter==null||s.filter(h))&&i.push(h)}return e===ue.wildcard&&s.boostDocument==null||i.sort(pt),i}autoSuggest(e,t={}){t=Object.assign(Object.assign({},this._options.autoSuggestOptions),t);const n=new Map;for(const{score:r,terms:i}of this.search(e,t)){const o=i.join(" "),l=n.get(o);l!=null?(l.score+=r,l.count+=1):n.set(o,{score:r,terms:i,count:1})}const s=[];for(const[r,{score:i,terms:o,count:l}]of n)s.push({suggestion:r,terms:o,score:i/l});return s.sort(pt),s}get documentCount(){return this._documentCount}get termCount(){return this._index.size}static loadJSON(e,t){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(e),t)}static loadJSONAsync(e,t){return ke(this,void 0,void 0,function*(){if(t==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJSAsync(JSON.parse(e),t)})}static getDefault(e){if(je.hasOwnProperty(e))return Pe(je,e);throw new Error(`MiniSearch: unknown option "${e}"`)}static loadJS(e,t){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=Te(s),l._fieldLength=Te(r),l._storedFields=Te(i);for(const[c,f]of l._documentIds)l._idToShortId.set(f,c);for(const[c,f]of n){const g=new Map;for(const h of Object.keys(f)){let b=f[h];o===1&&(b=b.ds),g.set(parseInt(h,10),Te(b))}l._index.set(c,g)}return l}static loadJSAsync(e,t){return ke(this,void 0,void 0,function*(){const{index:n,documentIds:s,fieldLength:r,storedFields:i,serializationVersion:o}=e,l=this.instantiateMiniSearch(e,t);l._documentIds=yield Ie(s),l._fieldLength=yield Ie(r),l._storedFields=yield Ie(i);for(const[f,g]of l._documentIds)l._idToShortId.set(g,f);let c=0;for(const[f,g]of n){const h=new Map;for(const b of Object.keys(g)){let y=g[b];o===1&&(y=y.ds),h.set(parseInt(b,10),yield Ie(y))}++c%1e3===0&&(yield Nt(0)),l._index.set(f,h)}return l})}static instantiateMiniSearch(e,t){const{documentCount:n,nextId:s,fieldIds:r,averageFieldLength:i,dirtCount:o,serializationVersion:l}=e;if(l!==1&&l!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");const c=new ue(t);return c._documentCount=n,c._nextId=s,c._idToShortId=new Map,c._fieldIds=r,c._avgFieldLength=i,c._dirtCount=o||0,c._index=new X,c}executeQuery(e,t={}){if(e===ue.wildcard)return this.executeWildcardQuery(t);if(typeof e!="string"){const h=Object.assign(Object.assign(Object.assign({},t),e),{queries:void 0}),b=e.queries.map(y=>this.executeQuery(y,h));return this.combineResults(b,h.combineWith)}const{tokenize:n,processTerm:s,searchOptions:r}=this._options,i=Object.assign(Object.assign({tokenize:n,processTerm:s},r),t),{tokenize:o,processTerm:l}=i,g=o(e).flatMap(h=>l(h)).filter(h=>!!h).map(Un(i)).map(h=>this.executeQuerySpec(h,i));return this.combineResults(g,i.combineWith)}executeQuerySpec(e,t){const n=Object.assign(Object.assign({},this._options.searchOptions),t),s=(n.fields||this._options.fields).reduce((x,w)=>Object.assign(Object.assign({},x),{[w]:Pe(n.boost,w)||1}),{}),{boostDocument:r,weights:i,maxFuzzy:o,bm25:l}=n,{fuzzy:c,prefix:f}=Object.assign(Object.assign({},ft.weights),i),g=this._index.get(e.term),h=this.termResults(e.term,e.term,1,e.termBoost,g,s,r,l);let b,y;if(e.prefix&&(b=this._index.atPrefix(e.term)),e.fuzzy){const x=e.fuzzy===!0?.2:e.fuzzy,w=x<1?Math.min(o,Math.round(e.term.length*x)):x;w&&(y=this._index.fuzzyGet(e.term,w))}if(b)for(const[x,w]of b){const R=x.length-e.term.length;if(!R)continue;y==null||y.delete(x);const A=f*x.length/(x.length+.3*R);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}if(y)for(const x of y.keys()){const[w,R]=y.get(x);if(!R)continue;const A=c*x.length/(x.length+R);this.termResults(e.term,x,A,e.termBoost,w,s,r,l,h)}return h}executeWildcardQuery(e){const t=new Map,n=Object.assign(Object.assign({},this._options.searchOptions),e);for(const[s,r]of this._documentIds){const i=n.boostDocument?n.boostDocument(r,"",this._storedFields.get(s)):1;t.set(s,{score:i,terms:[],match:{}})}return t}combineResults(e,t=Ge){if(e.length===0)return new Map;const n=t.toLowerCase(),s=Kn[n];if(!s)throw new Error(`Invalid combination operator: ${t}`);return e.reduce(s)||new Map}toJSON(){const e=[];for(const[t,n]of this._index){const s={};for(const[r,i]of n)s[r]=Object.fromEntries(i);e.push([t,s])}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:e,serializationVersion:2}}termResults(e,t,n,s,r,i,o,l,c=new Map){if(r==null)return c;for(const f of Object.keys(i)){const g=i[f],h=this._fieldIds[f],b=r.get(h);if(b==null)continue;let y=b.size;const x=this._avgFieldLength[h];for(const w of b.keys()){if(!this._documentIds.has(w)){this.removeTerm(h,w,t),y-=1;continue}const R=o?o(this._documentIds.get(w),t,this._storedFields.get(w)):1;if(!R)continue;const A=b.get(w),J=this._fieldLength.get(w)[h],Q=qn(A,y,this._documentCount,J,x,l),W=n*s*g*R*Q,V=c.get(w);if(V){V.score+=W,Hn(V.terms,e);const $=Pe(V.match,t);$?$.push(f):V.match[t]=[f]}else c.set(w,{score:W,terms:[e],match:{[t]:[f]}})}}return c}addTerm(e,t,n){const s=this._index.fetch(n,mt);let r=s.get(e);if(r==null)r=new Map,r.set(t,1),s.set(e,r);else{const i=r.get(t);r.set(t,(i||0)+1)}}removeTerm(e,t,n){if(!this._index.has(n)){this.warnDocumentChanged(t,e,n);return}const s=this._index.fetch(n,mt),r=s.get(e);r==null||r.get(t)==null?this.warnDocumentChanged(t,e,n):r.get(t)<=1?r.size<=1?s.delete(e):r.delete(t):r.set(t,r.get(t)-1),this._index.get(n).size===0&&this._index.delete(n)}warnDocumentChanged(e,t,n){for(const s of Object.keys(this._fieldIds))if(this._fieldIds[s]===t){this._options.logger("warn",`MiniSearch: document with ID ${this._documentIds.get(e)} has changed before removal: term "${n}" was not present in field "${s}". Removing a document after it has changed can corrupt the index!`,"version_conflict");return}}addDocumentId(e){const t=this._nextId;return this._idToShortId.set(e,t),this._documentIds.set(t,e),this._documentCount+=1,this._nextId+=1,t}addFields(e){for(let t=0;tObject.prototype.hasOwnProperty.call(a,e)?a[e]:void 0,Kn={[Ge]:(a,e)=>{for(const t of e.keys()){const n=a.get(t);if(n==null)a.set(t,e.get(t));else{const{score:s,terms:r,match:i}=e.get(t);n.score=n.score+s,n.match=Object.assign(n.match,i),ht(n.terms,r)}}return a},[kt]:(a,e)=>{const t=new Map;for(const n of e.keys()){const s=a.get(n);if(s==null)continue;const{score:r,terms:i,match:o}=e.get(n);ht(s.terms,i),t.set(n,{score:s.score+r,terms:s.terms,match:Object.assign(s.match,o)})}return t},[Wn]:(a,e)=>{for(const t of e.keys())a.delete(t);return a}},Jn={k:1.2,b:.7,d:.5},qn=(a,e,t,n,s,r)=>{const{k:i,b:o,d:l}=r;return Math.log(1+(t-e+.5)/(e+.5))*(l+a*(i+1)/(a+i*(1-o+o*n/s)))},Un=a=>(e,t,n)=>{const s=typeof a.fuzzy=="function"?a.fuzzy(e,t,n):a.fuzzy||!1,r=typeof a.prefix=="function"?a.prefix(e,t,n):a.prefix===!0,i=typeof a.boostTerm=="function"?a.boostTerm(e,t,n):1;return{term:e,fuzzy:s,prefix:r,termBoost:i}},je={idField:"id",extractField:(a,e)=>a[e],tokenize:a=>a.split(Qn),processTerm:a=>a.toLowerCase(),fields:void 0,searchOptions:void 0,storeFields:[],logger:(a,e)=>{typeof(console==null?void 0:console[a])=="function"&&console[a](e)},autoVacuum:!0},ft={combineWith:Ge,prefix:!1,fuzzy:!1,maxFuzzy:6,boost:{},weights:{fuzzy:.45,prefix:.375},bm25:Jn},Gn={combineWith:kt,prefix:(a,e,t)=>e===t.length-1},Je={batchSize:1e3,batchWait:10},qe={minDirtFactor:.1,minDirtCount:20},Ve=Object.assign(Object.assign({},Je),qe),Hn=(a,e)=>{a.includes(e)||a.push(e)},ht=(a,e)=>{for(const t of e)a.includes(t)||a.push(t)},pt=({score:a},{score:e})=>e-a,mt=()=>new Map,Te=a=>{const e=new Map;for(const t of Object.keys(a))e.set(parseInt(t,10),a[t]);return e},Ie=a=>ke(void 0,void 0,void 0,function*(){const e=new Map;let t=0;for(const n of Object.keys(a))e.set(parseInt(n,10),a[n]),++t%1e3===0&&(yield Nt(0));return e}),Nt=a=>new Promise(e=>setTimeout(e,a)),Qn=/[\n\r\p{Z}\p{P}]+/u;class Yn{constructor(e=10){Ae(this,"max");Ae(this,"cache");this.max=e,this.cache=new Map}get(e){let t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size===this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}first(){return this.cache.keys().next().value}clear(){this.cache.clear()}}const Zn=["aria-owns"],Xn={class:"shell"},es=["title"],ts={class:"search-actions before"},ns=["title"],ss=["aria-activedescendant","aria-controls","placeholder"],is={class:"search-actions"},rs=["title"],as=["disabled","title"],os=["id","role","aria-labelledby"],ls=["id","aria-selected"],cs=["href","aria-label","onMouseenter","onFocusin","data-index"],us={class:"titles"},ds=["innerHTML"],fs={class:"title main"},hs=["innerHTML"],ps={key:0,class:"excerpt-wrapper"},ms={key:0,class:"excerpt",inert:""},gs=["innerHTML"],vs={key:0,class:"no-results"},bs={class:"search-keyboard-shortcuts"},ys=["aria-label"],ws=["aria-label"],xs=["aria-label"],_s=["aria-label"],Ss=Lt({__name:"VPLocalSearchBox",emits:["close"],setup(a,{emit:e}){var S,C;const t=e,n=xe(),s=xe(),r=xe(rn),i=nn(),{activate:o}=zn(n,{immediate:!0,allowOutsideClick:!0,clickOutsideDeactivates:!0,escapeDeactivates:!0}),{localeIndex:l,theme:c}=i,f=nt(async()=>{var m,p,I,F,z,P,j,k,K;return at(ue.loadJSON((I=await((p=(m=r.value)[l.value])==null?void 0:p.call(m)))==null?void 0:I.default,{fields:["title","titles","text"],storeFields:["title","titles"],searchOptions:{fuzzy:.2,prefix:!0,boost:{title:4,text:2,titles:1},...((F=c.value.search)==null?void 0:F.provider)==="local"&&((P=(z=c.value.search.options)==null?void 0:z.miniSearch)==null?void 0:P.searchOptions)},...((j=c.value.search)==null?void 0:j.provider)==="local"&&((K=(k=c.value.search.options)==null?void 0:k.miniSearch)==null?void 0:K.options)}))}),h=ge(()=>{var m,p;return((m=c.value.search)==null?void 0:m.provider)==="local"&&((p=c.value.search.options)==null?void 0:p.disableQueryPersistence)===!0}).value?ie(""):Dt("vitepress:local-search-filter",""),b=zt("vitepress:local-search-detailed-list",((S=c.value.search)==null?void 0:S.provider)==="local"&&((C=c.value.search.options)==null?void 0:C.detailedView)===!0),y=ge(()=>{var m,p,I;return((m=c.value.search)==null?void 0:m.provider)==="local"&&(((p=c.value.search.options)==null?void 0:p.disableDetailedView)===!0||((I=c.value.search.options)==null?void 0:I.detailedView)===!1)}),x=ge(()=>{var p,I,F,z,P,j,k;const m=((p=c.value.search)==null?void 0:p.options)??c.value.algolia;return((P=(z=(F=(I=m==null?void 0:m.locales)==null?void 0:I[l.value])==null?void 0:F.translations)==null?void 0:z.button)==null?void 0:P.buttonText)||((k=(j=m==null?void 0:m.translations)==null?void 0:j.button)==null?void 0:k.buttonText)||"Search"});Pt(()=>{y.value&&(b.value=!1)});const w=xe([]),R=ie(!1);$e(h,()=>{R.value=!1});const A=nt(async()=>{if(s.value)return at(new jn(s.value))},null),J=new Yn(16);jt(()=>[f.value,h.value,b.value],async([m,p,I],F,z)=>{var ee,ye,He,Qe;(F==null?void 0:F[0])!==m&&J.clear();let P=!1;if(z(()=>{P=!0}),!m)return;w.value=m.search(p).slice(0,16),R.value=!0;const j=I?await Promise.all(w.value.map(B=>Q(B.id))):[];if(P)return;for(const{id:B,mod:te}of j){const ne=B.slice(0,B.indexOf("#"));let Y=J.get(ne);if(Y)continue;Y=new Map,J.set(ne,Y);const G=te.default??te;if(G!=null&&G.render||G!=null&&G.setup){const se=Yt(G);se.config.warnHandler=()=>{},se.provide(Zt,i),Object.defineProperties(se.config.globalProperties,{$frontmatter:{get(){return i.frontmatter.value}},$params:{get(){return i.page.value.params}}});const Ye=document.createElement("div");se.mount(Ye),Ye.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(de=>{var et;const we=(et=de.querySelector("a"))==null?void 0:et.getAttribute("href"),Ze=(we==null?void 0:we.startsWith("#"))&&we.slice(1);if(!Ze)return;let Xe="";for(;(de=de.nextElementSibling)&&!/^h[1-6]$/i.test(de.tagName);)Xe+=de.outerHTML;Y.set(Ze,Xe)}),se.unmount()}if(P)return}const k=new Set;if(w.value=w.value.map(B=>{const[te,ne]=B.id.split("#"),Y=J.get(te),G=(Y==null?void 0:Y.get(ne))??"";for(const se in B.match)k.add(se);return{...B,text:G}}),await fe(),P)return;await new Promise(B=>{var te;(te=A.value)==null||te.unmark({done:()=>{var ne;(ne=A.value)==null||ne.markRegExp(T(k),{done:B})}})});const K=((ee=n.value)==null?void 0:ee.querySelectorAll(".result .excerpt"))??[];for(const B of K)(ye=B.querySelector('mark[data-markjs="true"]'))==null||ye.scrollIntoView({block:"center"});(Qe=(He=s.value)==null?void 0:He.firstElementChild)==null||Qe.scrollIntoView({block:"start"})},{debounce:200,immediate:!0});async function Q(m){const p=Xt(m.slice(0,m.indexOf("#")));try{if(!p)throw new Error(`Cannot find file for id: ${m}`);return{id:m,mod:await import(p)}}catch(I){return console.error(I),{id:m,mod:{}}}}const W=ie(),V=ge(()=>{var m;return((m=h.value)==null?void 0:m.length)<=0});function $(m=!0){var p,I;(p=W.value)==null||p.focus(),m&&((I=W.value)==null||I.select())}Me(()=>{$()});function be(m){m.pointerType==="mouse"&&$()}const M=ie(-1),q=ie(!0);$e(w,m=>{M.value=m.length?0:-1,U()});function U(){fe(()=>{const m=document.querySelector(".result.selected");m==null||m.scrollIntoView({block:"nearest"})})}_e("ArrowUp",m=>{m.preventDefault(),M.value--,M.value<0&&(M.value=w.value.length-1),q.value=!0,U()}),_e("ArrowDown",m=>{m.preventDefault(),M.value++,M.value>=w.value.length&&(M.value=0),q.value=!0,U()});const N=Vt();_e("Enter",m=>{if(m.isComposing||m.target instanceof HTMLButtonElement&&m.target.type!=="submit")return;const p=w.value[M.value];if(m.target instanceof HTMLInputElement&&!p){m.preventDefault();return}p&&(N.go(p.id),t("close"))}),_e("Escape",()=>{t("close")});const d=sn({modal:{displayDetails:"Display detailed list",resetButtonTitle:"Reset search",backButtonTitle:"Close search",noResultsText:"No results for",footer:{selectText:"to select",selectKeyAriaLabel:"enter",navigateText:"to navigate",navigateUpKeyAriaLabel:"up arrow",navigateDownKeyAriaLabel:"down arrow",closeText:"to close",closeKeyAriaLabel:"escape"}}});Me(()=>{window.history.pushState(null,"",null)}),$t("popstate",m=>{m.preventDefault(),t("close")});const v=Bt(Wt?document.body:null);Me(()=>{fe(()=>{v.value=!0,fe().then(()=>o())})}),Kt(()=>{v.value=!1});function E(){h.value="",fe().then(()=>$(!1))}function T(m){return new RegExp([...m].sort((p,I)=>I.length-p.length).map(p=>`(${en(p)})`).join("|"),"gi")}function O(m){var F;if(!q.value)return;const p=(F=m.target)==null?void 0:F.closest(".result"),I=Number.parseInt(p==null?void 0:p.dataset.index);I>=0&&I!==M.value&&(M.value=I),q.value=!1}return(m,p)=>{var I,F,z,P,j;return H(),Jt(Qt,{to:"body"},[_("div",{ref_key:"el",ref:n,role:"button","aria-owns":(I=w.value)!=null&&I.length?"localsearch-list":void 0,"aria-expanded":"true","aria-haspopup":"listbox","aria-labelledby":"localsearch-label",class:"VPLocalSearchBox"},[_("div",{class:"backdrop",onClick:p[0]||(p[0]=k=>m.$emit("close"))}),_("div",Xn,[_("form",{class:"search-bar",onPointerup:p[4]||(p[4]=k=>be(k)),onSubmit:p[5]||(p[5]=qt(()=>{},["prevent"]))},[_("label",{title:x.value,id:"localsearch-label",for:"localsearch-input"},p[7]||(p[7]=[_("span",{"aria-hidden":"true",class:"vpi-search search-icon local-search-icon"},null,-1)]),8,es),_("div",ts,[_("button",{class:"back-button",title:L(d)("modal.backButtonTitle"),onClick:p[1]||(p[1]=k=>m.$emit("close"))},p[8]||(p[8]=[_("span",{class:"vpi-arrow-left local-search-icon"},null,-1)]),8,ns)]),Ut(_("input",{ref_key:"searchInput",ref:W,"onUpdate:modelValue":p[2]||(p[2]=k=>Ht(h)?h.value=k:null),"aria-activedescendant":M.value>-1?"localsearch-item-"+M.value:void 0,"aria-autocomplete":"both","aria-controls":(F=w.value)!=null&&F.length?"localsearch-list":void 0,"aria-labelledby":"localsearch-label",autocapitalize:"off",autocomplete:"off",autocorrect:"off",class:"search-input",id:"localsearch-input",enterkeyhint:"go",maxlength:"64",placeholder:x.value,spellcheck:"false",type:"search"},null,8,ss),[[Gt,L(h)]]),_("div",is,[y.value?Se("",!0):(H(),Z("button",{key:0,class:st(["toggle-layout-button",{"detailed-list":L(b)}]),type:"button",title:L(d)("modal.displayDetails"),onClick:p[3]||(p[3]=k=>M.value>-1&&(b.value=!L(b)))},p[9]||(p[9]=[_("span",{class:"vpi-layout-list local-search-icon"},null,-1)]),10,rs)),_("button",{class:"clear-button",type:"reset",disabled:V.value,title:L(d)("modal.resetButtonTitle"),onClick:E},p[10]||(p[10]=[_("span",{class:"vpi-delete local-search-icon"},null,-1)]),8,as)])],32),_("ul",{ref_key:"resultsEl",ref:s,id:(z=w.value)!=null&&z.length?"localsearch-list":void 0,role:(P=w.value)!=null&&P.length?"listbox":void 0,"aria-labelledby":(j=w.value)!=null&&j.length?"localsearch-label":void 0,class:"results",onMousemove:O},[(H(!0),Z(rt,null,it(w.value,(k,K)=>(H(),Z("li",{key:k.id,id:"localsearch-item-"+K,"aria-selected":M.value===K?"true":"false",role:"option"},[_("a",{href:k.id,class:st(["result",{selected:M.value===K}]),"aria-label":[...k.titles,k.title].join(" > "),onMouseenter:ee=>!q.value&&(M.value=K),onFocusin:ee=>M.value=K,onClick:p[6]||(p[6]=ee=>m.$emit("close")),"data-index":K},[_("div",null,[_("div",us,[p[12]||(p[12]=_("span",{class:"title-icon"},"#",-1)),(H(!0),Z(rt,null,it(k.titles,(ee,ye)=>(H(),Z("span",{key:ye,class:"title"},[_("span",{class:"text",innerHTML:ee},null,8,ds),p[11]||(p[11]=_("span",{class:"vpi-chevron-right local-search-icon"},null,-1))]))),128)),_("span",fs,[_("span",{class:"text",innerHTML:k.title},null,8,hs)])]),L(b)?(H(),Z("div",ps,[k.text?(H(),Z("div",ms,[_("div",{class:"vp-doc",innerHTML:k.text},null,8,gs)])):Se("",!0),p[13]||(p[13]=_("div",{class:"excerpt-gradient-bottom"},null,-1)),p[14]||(p[14]=_("div",{class:"excerpt-gradient-top"},null,-1))])):Se("",!0)])],42,cs)],8,ls))),128)),L(h)&&!w.value.length&&R.value?(H(),Z("li",vs,[he(pe(L(d)("modal.noResultsText"))+' "',1),_("strong",null,pe(L(h)),1),p[15]||(p[15]=he('" '))])):Se("",!0)],40,os),_("div",bs,[_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.navigateUpKeyAriaLabel")},p[16]||(p[16]=[_("span",{class:"vpi-arrow-up navigate-icon"},null,-1)]),8,ys),_("kbd",{"aria-label":L(d)("modal.footer.navigateDownKeyAriaLabel")},p[17]||(p[17]=[_("span",{class:"vpi-arrow-down navigate-icon"},null,-1)]),8,ws),he(" "+pe(L(d)("modal.footer.navigateText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.selectKeyAriaLabel")},p[18]||(p[18]=[_("span",{class:"vpi-corner-down-left navigate-icon"},null,-1)]),8,xs),he(" "+pe(L(d)("modal.footer.selectText")),1)]),_("span",null,[_("kbd",{"aria-label":L(d)("modal.footer.closeKeyAriaLabel")},"esc",8,_s),he(" "+pe(L(d)("modal.footer.closeText")),1)])])])],8,Zn)])}}}),Os=tn(Ss,[["__scopeId","data-v-42e65fb9"]]);export{Os as default};
diff --git a/previews/PR126/assets/chunks/framework.BSoZtefh.js b/previews/PR126/assets/chunks/framework.BSoZtefh.js
deleted file mode 100644
index f8f63841..00000000
--- a/previews/PR126/assets/chunks/framework.BSoZtefh.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
-* @vue/shared v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},Ko=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),ae=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},qo=Object.prototype.hasOwnProperty,z=(e,t)=>qo.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",ii=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",oi=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),li=Object.prototype.toString,In=e=>li.call(e),Go=e=>In(e).slice(8,-1),ci=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Yo=/-(\w)/g,Le=Nn(e=>e.replace(Yo,(t,n)=>n?n.toUpperCase():"")),Xo=/\B([A-Z])/g,st=Nn(e=>e.replace(Xo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),_n=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),bn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},vs=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Jo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ar;const Hn=()=>ar||(ar=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(Qo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),sl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===li||!q(e.toString))?ui(e)?sl(e.value):JSON.stringify(e,di,2):String(e),di=(e,t)=>ui(t)?di(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:ii(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!ci(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
-* @vue/reactivity v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let we;class rl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=we,!t&&we&&(this.index=(we.scopes||(we.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function yi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function vi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),ol(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function _s(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(_i(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function _i(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!_s(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{yi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,vi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function ol(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const bi=[];function rt(){bi.push(Ne),Ne=!1}function it(){const e=bi.pop();Ne=e===void 0?!0:e}function fr(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ll{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ll(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,wi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function wi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)wi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),bs=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(bs)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function cl(e,t){const n=Cn.get(e);return n&&n.get(t)}function _t(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const al={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return _t(this).concat(...e.map(t=>W(t)?_t(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return _t(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return ur(this,"reduce",e,t)},reduceRight(e,...t){return ur(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return _t(this).toReversed()},toSorted(e){return _t(this).toSorted(e)},toSpliced(...e){return _t(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const fl=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==fl[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function ur(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const ul=Ns("__proto__,__v_isRef,__isVue"),Si=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function dl(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class xi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Sl:Ai:i?Ci:Ti).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=al[n]))return c;if(n==="hasOwnProperty")return dl}const l=Reflect.get(t,n,fe(t)?t:s);return(Xe(n)?Si.has(n):ul(n))||(r||me(t,"get",n),i)?l:fe(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Ei extends xi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&fe(i)&&!fe(s))return c?!1:(i.value=s,!0)}const o=W(t)&&$s(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function yl(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?ws:t?Ss:ye;return!t&&me(i,"iterate",c?bs:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function vl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?ws:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?ws:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return ae(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=yl(r,e,t)}),n}function Bs(e,t){const n=vl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const Ti=new WeakMap,Ci=new WeakMap,Ai=new WeakMap,Sl=new WeakMap;function xl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function El(e){return e.__v_skip||!Object.isExtensible(e)?0:xl(Go(e))}function jn(e){return yt(e)?e:Ws(e,!1,pl,_l,Ti)}function Tl(e){return Ws(e,!1,ml,bl,Ci)}function Vn(e){return Ws(e,!0,gl,wl,Ai)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=El(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&ai(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function fe(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ri(e,!1)}function qs(e){return Ri(e,!0)}function Ri(e,t){return fe(e)?e:new Cl(e,t)}class Cl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Oi(e){return fe(e)?e.value:e}const Al={get:(e,t,n)=>t==="__v_raw"?e:Oi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return fe(r)&&!fe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Mi(e){return ht(e)?e:new Proxy(e,Al)}class Rl{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Ol(e){return new Rl(e)}class Ml{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return cl(J(this._object),this._key)}}class Pl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Ll(e,t,n){return fe(e)?e:q(e)?new Pl(e):ne(e)&&arguments.length>1?Il(e,t,n):oe(e)}function Il(e,t,n){const s=e[t];return fe(s)?s:new Ml(e,t,n)}class Nl{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return mi(this,!0),!0}get value(){const t=this.dep.track();return _i(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Fl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Nl(s,r,n)}const fn={},An=new WeakMap;let ft;function Hl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function $l(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,v,S=!1,_=!1;if(fe(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(_=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(fe(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[v]):e(v)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=hi(),N=()=>{a.stop(),K&&K.active&&Hs(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=_?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(_?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:_&&j[0]===fn?[]:j,v];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new pi(h),a.scheduler=o?()=>o(p,!1):p,v=g=>Hl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,fe(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(ci(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/**
-* @vue/runtime-core v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&oi(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(jl(t),0,e),e.flags|=1,Li()}}function Li(){Rn||(Rn=Pi.then(Ii))}function Vl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(wt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Li()}function dr(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,wt=0;wte.id==null?e.flags&2?-1:1/0:e.id;function Ii(e){try{for(Ve=0;Ve{s._d&&Ar(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(de===null)return e;const n=Gn(de),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),hr=e=>e&&(e.defer||e.defer===""),pr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,gr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},$i={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:v,querySelector:S,createText:_,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=_(""),F=t.anchor=_("");v(O,n,s),v(F,n,s);const $=(R,b)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,b,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),b=Di(R,t,_,v);R&&(o!=="svg"&&pr(R)?o="svg":o!=="mathml"&&gr(R)&&(o="mathml"),N||($(R,b),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),hr(t.props)?be(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(hr(t.props)&&!e.el.__isMounted){be(()=>{$i.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,b=V?O:$;if(o==="svg"||pr(F)?o="svg":(o==="mathml"||gr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),Qs(e,t,!0)):c||h(e,t,R,b,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const v=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Ki(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],ji={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Vi=e=>{const t=e.subTree;return t.component?Vi(t.component):t},Wl={name:"BaseTransition",props:ji,setup(e,{slots:t}){const n=qn(),s=Bl();return()=>{const r=t.default&&Bi(t.default(),!0);if(!r||!r.length)return;const i=Ui(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=mr(i);if(!c)return ts(i);let f=Es(c,o,s,n,h=>f=h);c.type!==ve&&Yt(c,f);let a=n.subTree&&mr(n.subTree);if(a&&a.type!==ve&&!ut(c,a)&&Vi(n).type!==ve){let h=Es(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==ve)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==ve?h.delayLeave=(y,v,S)=>{const _=ki(s,a);_[String(a.key)]=a,y[Ze]=()=>{v(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function Ui(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==ve){t=n;break}}return t}const Kl=Wl;function ki(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:v,onAfterLeave:S,onLeaveCancelled:_,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=ki(n,e),F=(R,b)=>{R&&He(R,s,9,b)},$=(R,b)=>{const I=b[1];F(R,b),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let b=c;if(!n.isMounted)if(i)b=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(b,[R])},enter(R){let b=f,I=a,x=h;if(!n.isMounted)if(i)b=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};b?$(b,[R,se]):se()},leave(R,b){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return b();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,b(),se?F(_,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,v?$(v,[R,B]):B()},clone(R){const b=Es(R,t,n,s,r);return r&&r(b),b}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function mr(e){if(!sn(e))return Hi(e.type)&&e.children?Ui(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Bi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[_]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),v=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,v(f)&&(h[f]=null)):fe(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),_=fe(c);if(S||_){const K=()=>{if(e.f){const N=S?v(c)?h[c]:a[c]:c.value;r?W(N)&&Hs(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],v(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,v(c)&&(h[c]=o)):_&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,be(K,n)):K()}}}let yr=!1;const bt=()=>{yr||(console.error("Hydration completed but contains mismatches."),yr=!0)},ql=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",Gl=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(ql(e))return"svg";if(Gl(e))return"mathml"}},xt=e=>e.nodeType===8;function Yl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",b=()=>_(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=b():(p.data!==g.children&&(bt(),p.data=g.children),U=i(p));break;case ve:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=b():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:b,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=co(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(b&&(b.innerHTML||b.textContent))){let D=v(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||bt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===`
-`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||bt(),p.textContent=g.children)}if(b){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in b)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,b[he],void 0,O)}else if(b.onClick)s(p,"onClick",null,b.onClick,void 0,O);else if(I&4&&ht(b.style))for(const D in b.style)b.style[D]}let Y;(Y=b&&b.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=b&&b.onVnodeMounted)||B||U)&&go(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},v=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const b=g.children,I=b.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const b=o(p),I=v(i(p),g,b,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(bt(),c(g.anchor=f("]"),b,I),I)},_=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||bt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),b=o(p);return l(p),n(null,g,b,R,O,F,hn(b),$),O&&(O.vnode.el=g.el,ho(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const vr="data-allow-mismatch",Xl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(vr);)e=e.parentElement;const n=e&&e.getAttribute(vr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Xl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Jl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,v()),v=()=>{let S;return f||(S=f=t().catch(_=>{if(_=_ instanceof Error?_:new Error(String(_)),c)return new Promise((K,N)=>{c(_,()=>K(y()),()=>N(_),h+1)});throw _}).then(_=>S!==f&&f?f:(_&&(_.__esModule||_[Symbol.toStringTag]==="Module")&&(_=_.default),a=_,_)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:v,__asyncHydrate(S,_,K){const N=i?()=>{const j=i(K,p=>Jl(S,p));j&&(_.bum||(_.bum=[])).push(j)}:K;a?N():v().then(()=>!_.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=ue;if(Xs(S),a)return()=>ns(a,S);const _=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return v().then(p=>()=>ns(p,S)).catch(p=>(_(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);_(p),N.value=p}},o),v().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{_(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function zl(e,t){Wi(e,"a",t)}function Ql(e,t){Wi(e,"da",t)}function Wi(e,t,n=ue){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Zl(s,t,n,r),r=r.parent}}function Zl(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Hs(s[t],r)},n)}function kn(e,t,n=ue,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=ue)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},ec=Je("bm"),Lt=Je("m"),tc=Je("bu"),nc=Je("u"),Ki=Je("bum"),Bn=Je("um"),sc=Je("sp"),rc=Je("rtg"),ic=Je("rtc");function oc(e,t=ue){kn("ec",e,t)}const qi="components";function Sf(e,t){return Yi(qi,e,!0,t)||e}const Gi=Symbol.for("v-ndc");function xf(e){return re(e)?Yi(qi,e,!1)||e:e||Gi}function Yi(e,t,n=!0,s=!1){const r=de||ue;if(r){const i=r.type;{const l=Wc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function Ef(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===ve||t.type===xe&&!Xi(t.children)):!0)?e:null}function Cf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:_n(s)]=e[s];return n}const Ts=e=>e?bo(e)?Gn(e):Ts(e.parent):null,Ut=ae(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Js(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Rc.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),lc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const v=o[t];if(v!==void 0)switch(v){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Af(){return cc().slots}function cc(){const e=qn();return e.setupContext||(e.setupContext=So(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function ac(e){const t=Js(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:v,updated:S,activated:_,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:b,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&fc(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Ji(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{mc(D,Y[D])})}a&&wr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(ec,h),U(Lt,y),U(tc,v),U(nc,S),U(zl,_),U(Ql,K),U(oc,V),U(ic,F),U(rc,$),U(Ki,j),U(Bn,g),U(sc,R),W(b))if(b.length){const Y=e.exposed||(e.exposed={});b.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function fc(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),fe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ji(e,t,n,s){let r=s.includes(".")?fo(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Ji(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Js(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=uc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const uc={data:Sr,props:xr,emits:xr,methods:$t,computed:$t,beforeCreate:_e,created:_e,beforeMount:_e,mounted:_e,beforeUpdate:_e,updated:_e,beforeDestroy:_e,beforeUnmount:_e,destroyed:_e,unmounted:_e,activated:_e,deactivated:_e,errorCaptured:_e,serverPrefetch:_e,components:$t,directives:$t,watch:hc,provide:Sr,inject:dc};function Sr(e,t){return t?e?function(){return ae(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function dc(e,t){return $t(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const Qi={},Zi=()=>Object.create(Qi),eo=e=>Object.getPrototypeOf(e)===Qi;function yc(e,t,n,s=!1){const r={},i=Zi();e.propsDefaults=Object.create(null),to(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:Tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function vc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,v]=no(h,t,!0);ae(o,y),v&&l.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",zs=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Ul((...r)=>zs(t(...r)),n);return s._c=!1,s},ro=(e,t,n)=>{const s=e._ctx;for(const r in e){if(so(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=zs(i);t[r]=()=>o}}},io=(e,t)=>{const n=zs(t);e.slots.default=()=>n},oo=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Zi();if(e.vnode.shapeFlag&32){const r=t._;r?(oo(s,t,n),n&&ai(s,"_",r,!0)):ro(t,s)}else t&&io(e,t)},Sc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:oo(r,t,n):(i=!t.$stable,ro(t,r)),o=t}else t&&(io(e,t),o={default:1});if(i)for(const l in r)!so(l)&&o[l]==null&&delete r[l]},be=go;function xc(e){return lo(e)}function Ec(e){return lo(e,Yl)}function lo(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:v=ke,insertStaticContent:S}=e,_=(u,d,m,T=null,w=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),De(u,w,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case ve:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,w,E,P,M,A);break;default:L&1?O(u,d,m,T,w,E,P,M,A):L&6?B(u,d,m,T,w,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,w,E,P,M,A,vt)}k!=null&&w&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const w=d.el=u.el;d.children!==u.children&&f(w,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let w;for(;u&&u!==d;)w=y(u),s(u,m,T),u=w;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,w,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,w,E,P,M,A):R(u,d,w,E,P,M,A)},F=(u,d,m,T,w,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,w,rs(u,E),P,M),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=co(w,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&be(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},w)},$=(u,d,m,T,w)=>{if(m&&v(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?b(u.dynamicChildren,C,M,m,T,rs(d,w),E):P||D(u,d,M,null,m,T,rs(d,w),E,!1),A>0){if(A&16)I(M,L,H,m,w);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,w),A&4&&i(M,"style",L.style,H.style,w),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},b=(u,d,m,T,w,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,w,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,w,T)}"value"in m&&i(u,"value",d.value,m.value,w)}},x=(u,d,m,T,w,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,w,E,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(b(u.dynamicChildren,H,m,w,E,P,M),(d.key!=null||w&&d===w.subTree)&&Qs(u,d,!0)):D(u,d,m,k,w,E,P,M,A)},B=(u,d,m,T,w,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?w.ctx.activate(d,m,T,P,A):se(d,m,T,w,E,P,A):le(u,d,A)},se=(u,d,m,T,w,E,P)=>{const M=u.component=Vc(u,T,w);if(sn(u)&&(M.ctx.renderer=vt),Uc(M,!1,P),M.asyncDep){if(w&&w.registerDep(M,U,P),!u.el){const A=M.subTree=ce(ve);N(null,A,d,m)}}else U(M,u,d,m,w,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Ic(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,w,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=ao(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&bn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,_(Ie,pe,h(Ie.el),ln(Ie),u,w,E),L.el=pe.el,Q===null&&ho(u,pe.el),G&&be(G,w),(Ee=L.props&&L.props.onVnodeUpdated)&&be(()=>Oe(Ee,X,L,ee),w)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&bn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Jn){const Te=()=>{u.subTree=is(u),Jn(H,u.subTree,u,w,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);_(null,Te,m,T,u,w,E),d.el=Te.el}if(ee&&be(ee,w),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;be(()=>Oe(L,Q,Te),w)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&be(u.a,w),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new pi(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,vc(u,d.props,T,m),Sc(u,d.children,m),rt(),dr(u),it()},D=(u,d,m,T,w,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,T,w,E,P,M,A);return}else if(H&256){he(C,L,m,T,w,E,P,M,A);return}}G&8?(k&16&&It(C,w,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,w,E,P,M,A):It(C,w,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,w,E,P,M,A))},he=(u,d,m,T,w,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,w,E,!0,!1,L):V(d,m,T,w,E,P,M,A,L)},on=(u,d,m,T,w,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))_(G,X,m,null,w,E,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],w,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,w,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,w,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,_(Ce,d[je],m,null,w,E,P,M,A),Ee++)}const lr=Ie?Tc(Nt):Et;for(Q=lr.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],cr=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,vt);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),w);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,m)},De=(u,d,m,T=!1,w=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(w=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Wo(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,vt,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!w&&k&16)&&It(A,d,m),T&&ir(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&be(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},ir=u=>{const{type:d,el:m,anchor:T,transition:w}=u;if(d===xe){Bo(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),w&&!w.persisted&&w.afterLeave&&w.afterLeave()};if(u.shapeFlag&1&&w&&!w.persisted){const{leave:P,delayLeave:M}=w,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},Bo=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Wo=(u,d,m)=>{const{bum:T,scope:w,job:E,subTree:P,um:M,m:A,a:C}=u;Tr(A),Tr(C),T&&bn(T),w.stop(),E&&(E.flags|=8,De(P,u,d,m)),M&&be(M,d),be(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,w=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Fi];return m?y(m):d};let Yn=!1;const or=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):_(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,dr(),On(),Yn=!1)},vt={p:_,um:De,m:ot,r:ir,mt:se,mc:V,pc:D,pbc:b,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(vt)),{render:or,hydrate:Xn,createApp:gc(or,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function co(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Qs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ao(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ao(t)}function Tr(e){if(e)for(let t=0;tOt(Cc);function Zs(e,t){return Wn(e,null,t)}function Rf(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=ae({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const v=Ac();f=v.__watcherHandles||(v.__watcherHandles=[])}else if(!c){const v=()=>{};return v.stop=ke,v.resume=ke,v.pause=ke,v}}const a=ue;l.call=(v,S,_)=>He(v,a,S,_);let h=!1;i==="post"?l.scheduler=v=>{be(v,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(v,S)=>{S?v():Gs(v)}),l.augmentJob=v=>{t&&(v.flags|=4),h&&(v.flags|=2,a&&(v.id=a.uid,v.i=a))};const y=$l(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Rc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?fo(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function fo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Mc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Oc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(vs)));let l,c=s[l=_n(t)]||s[l=_n(Le(t))];!c&&i&&(c=s[l=_n(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function uo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=uo(f,t,!0);a&&(l=!0,ae(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):ae(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:v,ctx:S,inheritAttrs:_}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,v,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Pc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(ve)}let p=N;if(j&&_!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Lc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Pc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Lc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Ic(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Cr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function go(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):Vl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),ve=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Nc(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Ar(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function mo(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Nc(),Jt>0&&Ae&&Ae.push(e),e}function Of(e,t,n,s,r,i){return mo(vo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return mo(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const yo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||fe(e)||q(e)?{i:de,r:e,k:t,f:!!n}:e:null);function vo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&yo(t),ref:t&&xn(t),scopeId:Ni,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:de};return l?(er(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Fc;function Fc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Gi)&&(e=ve),zt(e)){const l=nt(e,t,!0);return n&&er(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Kc(e)&&(e=e.__vccOpts),t){t=Hc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=ae({},c)),t.style=Ds(c))}const o=re(e)?1:po(e)?128:Hi(e)?64:ne(e)?4:q(e)?2:0;return vo(e,t,n,s,r,o,i,!0)}function Hc(e){return e?Ks(e)||eo(e)?ae({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?$c(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&yo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Mf(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Pf(e="",t=!1){return t?(Os(),Ms(ve,null,e)):ce(ve,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(ve):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function er(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),er(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!eo(t)?t._ctx=de:r===3&&de&&(de.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:de},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function $c(...e){const t={};for(let n=0;nue||de;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=ue;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Rr=()=>{ue&&ue.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Uc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);yc(e,s,i,t),wc(e,r,n);const o=i?kc(e,t):void 0;return t&&Ps(!1),o}function kc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,lc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?So(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=oi(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Rr,Rr),t)return o.then(c=>{Or(e,c,t)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Or(e,o,t)}else wo(e,t)}function Or(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Mi(t)),wo(e,n)}let Mr;function wo(e,t,n){const s=e.type;if(!e.render){if(!t&&Mr&&!s.render){const r=s.template||Js(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=ae(ae({isCustomElement:i,delimiters:l},o),c);s.render=Mr(r,f)}}e.render=s.render||ke}{const r=rn(e);rt();try{ac(e)}finally{it(),r()}}}const Bc={get(e,t){return me(e,"get",""),e[t]}};function So(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Bc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Mi(wn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Wc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Kc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Fl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const qc="3.5.13";/**
-* @vue/runtime-dom v3.5.13
-* (c) 2018-present Yuxi (Evan) You and Vue contributors
-* @license MIT
-**/let Is;const Pr=typeof window<"u"&&window.trustedTypes;if(Pr)try{Is=Pr.createPolicy("vue",{createHTML:e=>e})}catch{}const xo=Is?e=>Is.createHTML(e):e=>e,Gc="http://www.w3.org/2000/svg",Yc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Lr=qe&&qe.createElement("template"),Xc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(Gc,e):t==="mathml"?qe.createElementNS(Yc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Lr.innerHTML=xo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Lr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),Eo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Jc=ae({},ji,Eo),zc=e=>(e.displayName="Transition",e.props=Jc,e),Lf=zc((e,{slots:t})=>Ls(Kl,Qc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Ir=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function Qc(e){const t={};for(const x in e)x in Eo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,S=Zc(r),_=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},b=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,v),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Nr(()=>{at(B,x?c:i),Ke(B,x?a:l),Ir(le)||Fr(B,s,_,U)})};return ae(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>b(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),Dr()):(Dr(),Ke(x,y)),Nr(()=>{x._isLeaving&&(at(x,h),Ke(x,v),Ir(g)||Fr(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){b(x),ct(O,[x])}})}function Zc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Jo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Nr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let ea=0;function Fr(e,t,n,s){const r=e._endId=++ea,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ta(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=v=>{v.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Hr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Hr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const v=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:v}}function Hr(e,t){for(;e.length$r(n)+$r(e[s])))}function $r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Dr(){return document.body.offsetHeight}function na(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const jr=Symbol("_vod"),sa=Symbol("_vsh"),ra=Symbol(""),ia=/(^|;)\s*display\s*:/;function oa(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[ra];o&&(n+=";"+o),s.cssText=n,i=ia.test(n)}}else t&&e.removeAttribute("style");jr in e&&(e[jr]=i?s.display:"",e[sa]&&(s.display="none"))}const Vr=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=la(e,t);Vr.test(n)?e.setProperty(st(s),n.replace(Vr,""),"important"):e[s]=n}}const Ur=["Webkit","Moz","ms"],ls={};function la(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(ua.then(()=>cs=0),cs=Date.now());function ha(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(pa(s,n.value),t,5,[s])};return n.value=e,n.attached=da(),n}function pa(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ga=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?na(e,s,o):t==="style"?oa(e,n,s):en(t)?Fs(t)||aa(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ma(e,t,s,o))?(Wr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Br(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?Wr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Br(e,t,s,o))};function ma(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gr(t)&&re(n)?!1:t in e}const Yr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>bn(t,n):t};function ya(e){e.target.composing=!0}function Xr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),If={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=Yr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=vs(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ya),St(e,"compositionend",Xr),St(e,"change",Xr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=Yr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?vs(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},va=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>va.some(n=>e[`${n}Key`]&&!t.includes(n))},Nf=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},To=ae({patchProp:ga},Xc);let Wt,Jr=!1;function wa(){return Wt||(Wt=xc(To))}function Sa(){return Wt=Jr?Wt:Ec(To),Jr=!0,Wt}const Hf=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,Co(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},$f=(...e)=>{const t=Sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Ao(s);if(r)return n(r,!0,Co(r))},t};function Co(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Ao(e){return re(e)?document.querySelector(e):e}const Df=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},xa=window.__VP_SITE_DATA__;function tr(e){return hi()?(il(e),!0):!1}function Be(e){return typeof e=="function"?e():Oi(e)}const Ro=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const jf=e=>e!=null,Ea=Object.prototype.toString,Ta=e=>Ea.call(e)==="[object Object]",Zt=()=>{},zr=Ca();function Ca(){var e,t;return Ro&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Aa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Oo=e=>e();function Ra(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Oa(e=Oo){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Ma(e){return qn()}function Mo(...e){if(e.length!==1)return Ll(...e);const t=e[0];return typeof t=="function"?Vn(Ol(()=>({get:t,set:Zt}))):oe(t)}function Po(e,t,n={}){const{eventFilter:s=Oo,...r}=n;return Fe(e,Aa(s,t),r)}function Pa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Oa(s);return{stop:Po(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function nr(e,t=!0,n){Ma()?Lt(e,n):t?e():Un(e)}function Vf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Po(e,t,{...i,eventFilter:Ra(s,{maxWait:r})})}function Uf(e,t,n){let s;fe(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Zs(async h=>{if(!c.value)return;a++;const y=a;let v=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(_=>{h(()=>{i&&(i.value=!1),v||_()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),v=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Ro?window:void 0;function Lo(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,v)=>(a.addEventListener(h,y,v),()=>a.removeEventListener(h,y,v)),c=Fe(()=>[Lo(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ta(h)?{...h}:h;i.push(...n.flatMap(v=>s.map(S=>l(a,v,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return tr(f),f}function La(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function kf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=La(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function Ia(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Na(e){const t=Ia();return ie(()=>(t.value,!!e()))}function Io(e,t={}){const{window:n=$e}=t,s=Na(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Zs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return tr(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Fa=Ha();function Ha(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function No(e,t){return Fa[e]||t}function sr(e){return Io("(prefers-color-scheme: dark)",e)}function $a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Da={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Qr="vueuse-storage";function rr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:v=b=>{console.error(b)},initOnMounted:S}=s,_=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=No("getDefaultStorage",()=>{var b;return(b=$e)==null?void 0:b.localStorage})()}catch(b){v(b)}if(!n)return _;const K=Be(t),N=$a(K),j=(r=s.serializer)!=null?r:Da[N],{pause:p,resume:g}=Pa(_,()=>F(_.value),{flush:i,deep:o,eventFilter:y});h&&l&&nr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Qr,R),S&&V()}),S||V();function O(b,I){if(h){const x={key:e,oldValue:b,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Qr,{detail:x}))}}function F(b){try{const I=n.getItem(e);if(b==null)O(I,null),n.removeItem(e);else{const x=j.write(b);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){v(I)}}function $(b){const I=b?b.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!b&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(b){if(!(b&&b.storageArea!==n)){if(b&&b.key==null){_.value=K;return}if(!(b&&b.key!==e)){p();try{(b==null?void 0:b.newValue)!==j.write(_.value)&&(_.value=$(b))}catch(I){v(I)}finally{b?Un(g):g()}}}}function R(b){V(b.detail)}return _}const ja="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Va(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=sr({window:r}),v=ie(()=>y.value?"dark":"light"),S=c||(o==null?Mo(s):rr(o,s,i,{window:r,listenToStorageChanges:l})),_=ie(()=>S.value==="auto"?v.value:S.value),K=No("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Lo(g);if(!$)return;const V=new Set,R=new Set;let b=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else b={key:O,value:F};if(V.size===0&&R.size===0&&b===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(ja)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);b&&$.setAttribute(b.key,b.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(_,j,{flush:"post",immediate:!0}),nr(()=>j(_.value));const p=ie({get(){return f?S.value:_.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:v,state:_})}catch{return p}}function Ua(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=Va({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:sr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Bf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.localStorage,n)}function Fo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Wf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Mo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(zr&&(s=Pt(l,"touchmove",c=>{ka(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(zr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return tr(o),ie({get(){return n.value},set(l){l?i():o()}})}function Kf(e,t,n={}){const{window:s=$e}=n;return rr(e,t,s==null?void 0:s.sessionStorage,n)}function qf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function Gf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),nr(f),Pt("resize",f,{passive:!0}),r){const a=Io("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/IncompressibleNavierStokes.jl/previews/PR126/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Ho=/^(?:[a-z]+:|\/\/)/i,Ba="vitepress-theme-appearance",Wa=/#.*$/,Ka=/[?#].*$/,qa=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",$o={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ga(e,t,n=!1){if(t===void 0)return!1;if(e=Zr(`/${e}`),n)return new RegExp(t).test(e);if(Zr(t)!==e)return!1;const s=t.match(Wa);return s?(ge?location.hash:"")===s[0]:!0}function Zr(e){return decodeURI(e).replace(Ka,"").replace(qa,"$1")}function Ya(e){return Ho.test(e)}function Xa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ya(n)&&Ga(t,`/${n}/`,!0))||"root"}function Ja(e,t){var s,r,i,o,l,c,f;const n=Xa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:jo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function Do(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=za(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function za(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Qa(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function jo(e,t){return[...e.filter(n=>!Qa(t,n)),...t]}const Za=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,ef=/^[a-z]:/i;function ei(e){const t=ef.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Za,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function tf(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Yf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const nf=Symbol(),mt=qs(xa);function Xf(e){const t=ie(()=>Ja(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?sr():n?Ua({storageKey:Ba,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>Do(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function sf(){const e=Ot(nf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function rf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function ti(e){return Ho.test(e)||!e.startsWith("/")?e:rf(mt.value.base,e)}function of(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/IncompressibleNavierStokes.jl/previews/PR126/";t=ei(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${ei(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function Jf(e){Tn.push(e),Bn(()=>{Tn=Tn.filter(t=>t!==e)})}function lf(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ni(e,n);else if(Array.isArray(e))for(const s of e){const r=ni(s,n);if(r){t=r;break}}return t}function ni(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const cf=Symbol(),Vo="http://a.com",af=()=>({path:"/",component:null,data:$o});function zf(e,t){const n=jn(af()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,v;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,Vo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:_,__pageData:K}=S;if(!_)throw new Error(`Invalid route component: ${_}`);await((v=s.onAfterPageLoad)==null?void 0:v.call(s,l)),n.path=ge?h:ti(h),n.component=wn(_),n.data=wn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){si(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const _=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await _.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:ti(h),n.component=t?wn(t):null;const _=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...$o,relativePath:_}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:v,search:S}=new URL(f,c.baseURI),_=new URL(location.href);h===_.origin&&tf(y)&&(l.preventDefault(),y===_.pathname&&S===_.search?(v!==_.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:_.href,newURL:a}))),v?si(c,v,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function ff(){const e=Ot(cf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Uo(){return ff().route}function si(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-lf()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,Vo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),Qf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Uo(),{frontmatter:n,site:s}=sf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),uf="modulepreload",df=function(e){return"/IncompressibleNavierStokes.jl/previews/PR126/"+e},ri={},Zf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=df(c),c in ri)return;ri[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":uf,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,v)=>{h.addEventListener("load",y),h.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},eu=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function tu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function nu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),hf(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function hf(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function su(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Zs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=Do(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(jo(o.head,gf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function pf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function gf(e){return e.filter(t=>!pf(t))}const ys=new Set,ko=()=>document.createElement("link"),mf=e=>{const t=ko();t.rel="prefetch",t.href=e,document.head.appendChild(t)},yf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let vn;const vf=ge&&(vn=ko())&&vn.relList&&vn.relList.supports&&vn.relList.supports("prefetch")?mf:yf;function ru(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=of(c);f&&vf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Uo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Ki as $,lf as A,Sf as B,Ef as C,qs as D,Jf as E,xe as F,ce as G,xf as H,Ho as I,Uo as J,$c as K,Ot as L,Gf as M,Ds as N,kf as O,Un as P,qf as Q,ge as R,Vn as S,Lf as T,wf as U,Zf as V,Wf as W,mc as X,Ff as Y,Cf as Z,Df as _,_o as a,Nf as a0,Af as a1,jn as a2,Ll as a3,Ls as a4,Mf as a5,su as a6,cf as a7,Xf as a8,nf as a9,Qf as aa,eu as ab,mt as ac,$f as ad,zf as ae,of as af,ru as ag,nu as ah,tu as ai,Be as aj,Lo as ak,jf as al,tr as am,Uf as an,Kf as ao,Bf as ap,Vf as aq,ff as ar,Pt as as,_f as at,If as au,fe as av,bf as aw,wn as ax,Hf as ay,Yf as az,Ms as b,Of as c,Ys as d,Pf as e,tf as f,ti as g,ie as h,Ya as i,vo as j,Oi as k,Ga as l,Io as m,js as n,Os as o,oe as p,Fe as q,Tf as r,Zs as s,sl as t,sf as u,Lt as v,Ul as w,Bn as x,Rf as y,nc as z};
diff --git a/previews/PR126/assets/chunks/framework.CojPSOJE.js b/previews/PR126/assets/chunks/framework.CojPSOJE.js
new file mode 100644
index 00000000..792a727e
--- /dev/null
+++ b/previews/PR126/assets/chunks/framework.CojPSOJE.js
@@ -0,0 +1,18 @@
+/**
+* @vue/shared v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**//*! #__NO_SIDE_EFFECTS__ */function Ns(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const Z={},Et=[],ke=()=>{},Wo=()=>!1,en=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Fs=e=>e.startsWith("onUpdate:"),de=Object.assign,Hs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ko=Object.prototype.hasOwnProperty,z=(e,t)=>Ko.call(e,t),W=Array.isArray,Tt=e=>In(e)==="[object Map]",si=e=>In(e)==="[object Set]",q=e=>typeof e=="function",re=e=>typeof e=="string",Xe=e=>typeof e=="symbol",ne=e=>e!==null&&typeof e=="object",ri=e=>(ne(e)||q(e))&&q(e.then)&&q(e.catch),ii=Object.prototype.toString,In=e=>ii.call(e),qo=e=>In(e).slice(8,-1),oi=e=>In(e)==="[object Object]",$s=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Ns(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Nn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Go=/-(\w)/g,Le=Nn(e=>e.replace(Go,(t,n)=>n?n.toUpperCase():"")),Yo=/\B([A-Z])/g,st=Nn(e=>e.replace(Yo,"-$1").toLowerCase()),Fn=Nn(e=>e.charAt(0).toUpperCase()+e.slice(1)),bn=Nn(e=>e?`on${Fn(e)}`:""),tt=(e,t)=>!Object.is(e,t),wn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},_s=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Xo=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let cr;const Hn=()=>cr||(cr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Ds(e){if(W(e)){const t={};for(let n=0;n{if(n){const s=n.split(zo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function js(e){let t="";if(re(e))t=e;else if(W(e))for(let n=0;n!!(e&&e.__v_isRef===!0),nl=e=>re(e)?e:e==null?"":W(e)||ne(e)&&(e.toString===ii||!q(e.toString))?ai(e)?nl(e.value):JSON.stringify(e,fi,2):String(e),fi=(e,t)=>ai(t)?fi(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[zn(s,i)+" =>"]=r,n),{})}:si(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>zn(n))}:Xe(t)?zn(t):ne(t)&&!W(t)&&!oi(t)?String(t):t,zn=(e,t="")=>{var n;return Xe(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**
+* @vue/reactivity v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let ve;class sl{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ve,!t&&ve&&(this.index=(ve.scopes||(ve.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0)return;if(jt){let t=jt;for(jt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Dt;){let t=Dt;for(Dt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function gi(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function mi(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),ks(s),il(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function bs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(yi(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function yi(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===Kt))return;e.globalVersion=Kt;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!bs(e)){e.flags&=-3;return}const n=te,s=Ne;te=e,Ne=!0;try{gi(e);const r=e.fn(e._value);(t.version===0||tt(r,e._value))&&(e._value=r,t.version++)}catch(r){throw t.version++,r}finally{te=n,Ne=s,mi(e),e.flags&=-3}}function ks(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)ks(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function il(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ne=!0;const _i=[];function rt(){_i.push(Ne),Ne=!1}function it(){const e=_i.pop();Ne=e===void 0?!0:e}function ar(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=te;te=void 0;try{t()}finally{te=n}}}let Kt=0;class ol{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $n{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!te||!Ne||te===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==te)n=this.activeLink=new ol(te,this),te.deps?(n.prevDep=te.depsTail,te.depsTail.nextDep=n,te.depsTail=n):te.deps=te.depsTail=n,bi(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=te.depsTail,n.nextDep=void 0,te.depsTail.nextDep=n,te.depsTail=n,te.deps===n&&(te.deps=s)}return n}trigger(t){this.version++,Kt++,this.notify(t)}notify(t){Vs();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Us()}}}function bi(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)bi(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Cn=new WeakMap,dt=Symbol(""),ws=Symbol(""),qt=Symbol("");function me(e,t,n){if(Ne&&te){let s=Cn.get(e);s||Cn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new $n),r.map=s,r.key=n),r.track()}}function Ge(e,t,n,s,r,i){const o=Cn.get(e);if(!o){Kt++;return}const l=c=>{c&&c.trigger()};if(Vs(),t==="clear")o.forEach(l);else{const c=W(e),f=c&&$s(n);if(c&&n==="length"){const a=Number(s);o.forEach((h,y)=>{(y==="length"||y===qt||!Xe(y)&&y>=a)&&l(h)})}else switch((n!==void 0||o.has(void 0))&&l(o.get(n)),f&&l(o.get(qt)),t){case"add":c?f&&l(o.get("length")):(l(o.get(dt)),Tt(e)&&l(o.get(ws)));break;case"delete":c||(l(o.get(dt)),Tt(e)&&l(o.get(ws)));break;case"set":Tt(e)&&l(o.get(dt));break}}Us()}function ll(e,t){const n=Cn.get(e);return n&&n.get(t)}function bt(e){const t=J(e);return t===e?t:(me(t,"iterate",qt),Pe(e)?t:t.map(ye))}function Dn(e){return me(e=J(e),"iterate",qt),e}const cl={__proto__:null,[Symbol.iterator](){return Zn(this,Symbol.iterator,ye)},concat(...e){return bt(this).concat(...e.map(t=>W(t)?bt(t):t))},entries(){return Zn(this,"entries",e=>(e[1]=ye(e[1]),e))},every(e,t){return We(this,"every",e,t,void 0,arguments)},filter(e,t){return We(this,"filter",e,t,n=>n.map(ye),arguments)},find(e,t){return We(this,"find",e,t,ye,arguments)},findIndex(e,t){return We(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return We(this,"findLast",e,t,ye,arguments)},findLastIndex(e,t){return We(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return We(this,"forEach",e,t,void 0,arguments)},includes(...e){return es(this,"includes",e)},indexOf(...e){return es(this,"indexOf",e)},join(e){return bt(this).join(e)},lastIndexOf(...e){return es(this,"lastIndexOf",e)},map(e,t){return We(this,"map",e,t,void 0,arguments)},pop(){return Ft(this,"pop")},push(...e){return Ft(this,"push",e)},reduce(e,...t){return fr(this,"reduce",e,t)},reduceRight(e,...t){return fr(this,"reduceRight",e,t)},shift(){return Ft(this,"shift")},some(e,t){return We(this,"some",e,t,void 0,arguments)},splice(...e){return Ft(this,"splice",e)},toReversed(){return bt(this).toReversed()},toSorted(e){return bt(this).toSorted(e)},toSpliced(...e){return bt(this).toSpliced(...e)},unshift(...e){return Ft(this,"unshift",e)},values(){return Zn(this,"values",ye)}};function Zn(e,t,n){const s=Dn(e),r=s[t]();return s!==e&&!Pe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.value&&(i.value=n(i.value)),i}),r}const al=Array.prototype;function We(e,t,n,s,r,i){const o=Dn(e),l=o!==e&&!Pe(e),c=o[t];if(c!==al[t]){const h=c.apply(e,i);return l?ye(h):h}let f=n;o!==e&&(l?f=function(h,y){return n.call(this,ye(h),y,e)}:n.length>2&&(f=function(h,y){return n.call(this,h,y,e)}));const a=c.call(o,f,s);return l&&r?r(a):a}function fr(e,t,n,s){const r=Dn(e);let i=n;return r!==e&&(Pe(e)?n.length>3&&(i=function(o,l,c){return n.call(this,o,l,c,e)}):i=function(o,l,c){return n.call(this,o,ye(l),c,e)}),r[t](i,...s)}function es(e,t,n){const s=J(e);me(s,"iterate",qt);const r=s[t](...n);return(r===-1||r===!1)&&Ks(n[0])?(n[0]=J(n[0]),s[t](...n)):r}function Ft(e,t,n=[]){rt(),Vs();const s=J(e)[t].apply(e,n);return Us(),it(),s}const fl=Ns("__proto__,__v_isRef,__isVue"),wi=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Xe));function ul(e){Xe(e)||(e=String(e));const t=J(this);return me(t,"has",e),t.hasOwnProperty(e)}class vi{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?vl:Ti:i?Ei:xi).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=W(t);if(!r){let c;if(o&&(c=cl[n]))return c;if(n==="hasOwnProperty")return ul}const l=Reflect.get(t,n,ae(t)?t:s);return(Xe(n)?wi.has(n):fl(n))||(r||me(t,"get",n),i)?l:ae(l)?o&&$s(n)?l:l.value:ne(l)?r?Vn(l):jn(l):l}}class Si extends vi{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=yt(i);if(!Pe(s)&&!yt(s)&&(i=J(i),s=J(s)),!W(t)&&ae(i)&&!ae(s))return c?!1:(i.value=s,!0)}const o=W(t)&&$s(n)?Number(n)e,cn=e=>Reflect.getPrototypeOf(e);function ml(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=Tt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),a=n?vs:t?Ss:ye;return!t&&me(i,"iterate",c?ws:dt),{next(){const{value:h,done:y}=f.next();return y?{value:h,done:y}:{value:l?[a(h[0]),a(h[1])]:a(h),done:y}},[Symbol.iterator](){return this}}}}function an(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function yl(e,t){const n={get(r){const i=this.__v_raw,o=J(i),l=J(r);e||(tt(r,l)&&me(o,"get",r),me(o,"get",l));const{has:c}=cn(o),f=t?vs:e?Ss:ye;if(c.call(o,r))return f(i.get(r));if(c.call(o,l))return f(i.get(l));i!==o&&i.get(r)},get size(){const r=this.__v_raw;return!e&&me(J(r),"iterate",dt),Reflect.get(r,"size",r)},has(r){const i=this.__v_raw,o=J(i),l=J(r);return e||(tt(r,l)&&me(o,"has",r),me(o,"has",l)),r===l?i.has(r):i.has(r)||i.has(l)},forEach(r,i){const o=this,l=o.__v_raw,c=J(l),f=t?vs:e?Ss:ye;return!e&&me(c,"iterate",dt),l.forEach((a,h)=>r.call(i,f(a),f(h),o))}};return de(n,e?{add:an("add"),set:an("set"),delete:an("delete"),clear:an("clear")}:{add(r){!t&&!Pe(r)&&!yt(r)&&(r=J(r));const i=J(this);return cn(i).has.call(i,r)||(i.add(r),Ge(i,"add",r,r)),this},set(r,i){!t&&!Pe(i)&&!yt(i)&&(i=J(i));const o=J(this),{has:l,get:c}=cn(o);let f=l.call(o,r);f||(r=J(r),f=l.call(o,r));const a=c.call(o,r);return o.set(r,i),f?tt(i,a)&&Ge(o,"set",r,i):Ge(o,"add",r,i),this},delete(r){const i=J(this),{has:o,get:l}=cn(i);let c=o.call(i,r);c||(r=J(r),c=o.call(i,r)),l&&l.call(i,r);const f=i.delete(r);return c&&Ge(i,"delete",r,void 0),f},clear(){const r=J(this),i=r.size!==0,o=r.clear();return i&&Ge(r,"clear",void 0,void 0),o}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=ml(r,e,t)}),n}function Bs(e,t){const n=yl(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const _l={get:Bs(!1,!1)},bl={get:Bs(!1,!0)},wl={get:Bs(!0,!1)};const xi=new WeakMap,Ei=new WeakMap,Ti=new WeakMap,vl=new WeakMap;function Sl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function xl(e){return e.__v_skip||!Object.isExtensible(e)?0:Sl(qo(e))}function jn(e){return yt(e)?e:Ws(e,!1,hl,_l,xi)}function El(e){return Ws(e,!1,gl,bl,Ei)}function Vn(e){return Ws(e,!0,pl,wl,Ti)}function Ws(e,t,n,s,r){if(!ne(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=xl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function ht(e){return yt(e)?ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function Pe(e){return!!(e&&e.__v_isShallow)}function Ks(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function vn(e){return!z(e,"__v_skip")&&Object.isExtensible(e)&&li(e,"__v_skip",!0),e}const ye=e=>ne(e)?jn(e):e,Ss=e=>ne(e)?Vn(e):e;function ae(e){return e?e.__v_isRef===!0:!1}function oe(e){return Ci(e,!1)}function qs(e){return Ci(e,!0)}function Ci(e,t){return ae(e)?e:new Tl(e,t)}class Tl{constructor(t,n){this.dep=new $n,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:ye(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Pe(t)||yt(t);t=s?t:J(t),tt(t,n)&&(this._rawValue=t,this._value=s?t:ye(t),this.dep.trigger())}}function Ai(e){return ae(e)?e.value:e}const Cl={get:(e,t,n)=>t==="__v_raw"?e:Ai(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ae(r)&&!ae(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Ri(e){return ht(e)?e:new Proxy(e,Cl)}class Al{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new $n,{get:s,set:r}=t(n.track.bind(n),n.trigger.bind(n));this._get=s,this._set=r}get value(){return this._value=this._get()}set value(t){this._set(t)}}function Rl(e){return new Al(e)}class Ol{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ll(J(this._object),this._key)}}class Ml{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function Pl(e,t,n){return ae(e)?e:q(e)?new Ml(e):ne(e)&&arguments.length>1?Ll(e,t,n):oe(e)}function Ll(e,t,n){const s=e[t];return ae(s)?s:new Ol(e,t,n)}class Il{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new $n(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=Kt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&te!==this)return pi(this,!0),!0}get value(){const t=this.dep.track();return yi(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Nl(e,t,n=!1){let s,r;return q(e)?s=e:(s=e.get,r=e.set),new Il(s,r,n)}const fn={},An=new WeakMap;let ft;function Fl(e,t=!1,n=ft){if(n){let s=An.get(n);s||An.set(n,s=[]),s.push(e)}}function Hl(e,t,n=Z){const{immediate:s,deep:r,once:i,scheduler:o,augmentJob:l,call:c}=n,f=g=>r?g:Pe(g)||r===!1||r===0?Ye(g,1):Ye(g);let a,h,y,_,S=!1,b=!1;if(ae(e)?(h=()=>e.value,S=Pe(e)):ht(e)?(h=()=>f(e),S=!0):W(e)?(b=!0,S=e.some(g=>ht(g)||Pe(g)),h=()=>e.map(g=>{if(ae(g))return g.value;if(ht(g))return f(g);if(q(g))return c?c(g,2):g()})):q(e)?t?h=c?()=>c(e,2):e:h=()=>{if(y){rt();try{y()}finally{it()}}const g=ft;ft=a;try{return c?c(e,3,[_]):e(_)}finally{ft=g}}:h=ke,t&&r){const g=h,O=r===!0?1/0:r;h=()=>Ye(g(),O)}const K=ui(),N=()=>{a.stop(),K&&K.active&&Hs(K.effects,a)};if(i&&t){const g=t;t=(...O)=>{g(...O),N()}}let j=b?new Array(e.length).fill(fn):fn;const p=g=>{if(!(!(a.flags&1)||!a.dirty&&!g))if(t){const O=a.run();if(r||S||(b?O.some((F,$)=>tt(F,j[$])):tt(O,j))){y&&y();const F=ft;ft=a;try{const $=[O,j===fn?void 0:b&&j[0]===fn?[]:j,_];c?c(t,3,$):t(...$),j=O}finally{ft=F}}}else a.run()};return l&&l(p),a=new di(h),a.scheduler=o?()=>o(p,!1):p,_=g=>Fl(g,!1,a),y=a.onStop=()=>{const g=An.get(a);if(g){if(c)c(g,4);else for(const O of g)O();An.delete(a)}},t?s?p(!0):j=a.run():o?o(p.bind(null,!0),!0):a.run(),N.pause=a.pause.bind(a),N.resume=a.resume.bind(a),N.stop=N,N}function Ye(e,t=1/0,n){if(t<=0||!ne(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,ae(e))Ye(e.value,t,n);else if(W(e))for(let s=0;s{Ye(s,t,n)});else if(oi(e)){for(const s in e)Ye(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ye(e[s],t,n)}return e}/**
+* @vue/runtime-core v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/function tn(e,t,n,s){try{return s?e(...s):e()}catch(r){nn(r,t,n)}}function He(e,t,n,s){if(q(e)){const r=tn(e,t,n,s);return r&&ri(r)&&r.catch(i=>{nn(i,t,n)}),r}if(W(e)){const r=[];for(let i=0;i>>1,r=Se[s],i=Gt(r);i=Gt(n)?Se.push(e):Se.splice(Dl(t),0,e),e.flags|=1,Mi()}}function Mi(){Rn||(Rn=Oi.then(Pi))}function jl(e){W(e)?At.push(...e):Qe&&e.id===-1?Qe.splice(vt+1,0,e):e.flags&1||(At.push(e),e.flags|=1),Mi()}function ur(e,t,n=Ve+1){for(;nGt(n)-Gt(s));if(At.length=0,Qe){Qe.push(...t);return}for(Qe=t,vt=0;vte.id==null?e.flags&2?-1:1/0:e.id;function Pi(e){try{for(Ve=0;Ve{s._d&&Cr(-1);const i=Mn(t);let o;try{o=e(...r)}finally{Mn(i),s._d&&Cr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function _f(e,t){if(ue===null)return e;const n=Gn(ue),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,Vt=e=>e&&(e.disabled||e.disabled===""),dr=e=>e&&(e.defer||e.defer===""),hr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,pr=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,xs=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Fi={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:a,pc:h,pbc:y,o:{insert:_,querySelector:S,createText:b,createComment:K}}=f,N=Vt(t.props);let{shapeFlag:j,children:p,dynamicChildren:g}=t;if(e==null){const O=t.el=b(""),F=t.anchor=b("");_(O,n,s),_(F,n,s);const $=(R,w)=>{j&16&&(r&&r.isCE&&(r.ce._teleportTarget=R),a(p,R,w,r,i,o,l,c))},V=()=>{const R=t.target=xs(t.props,S),w=Hi(R,t,b,_);R&&(o!=="svg"&&hr(R)?o="svg":o!=="mathml"&&pr(R)&&(o="mathml"),N||($(R,w),Sn(t,!1)))};N&&($(n,F),Sn(t,!0)),dr(t.props)?we(()=>{V(),t.el.__isMounted=!0},i):V()}else{if(dr(t.props)&&!e.el.__isMounted){we(()=>{Fi.process(e,t,n,s,r,i,o,l,c,f),delete e.el.__isMounted},i);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,F=t.target=e.target,$=t.targetAnchor=e.targetAnchor,V=Vt(e.props),R=V?n:F,w=V?O:$;if(o==="svg"||hr(F)?o="svg":(o==="mathml"||pr(F))&&(o="mathml"),g?(y(e.dynamicChildren,g,R,r,i,o,l),zs(e,t,!0)):c||h(e,t,R,w,r,i,o,l,!1),N)V?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):un(t,n,O,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const I=t.target=xs(t.props,S);I&&un(t,I,null,f,0)}else V&&un(t,F,$,f,1);Sn(t,N)}},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:a,target:h,props:y}=e;if(h&&(r(f),r(a)),i&&r(c),o&16){const _=i||!Vt(y);for(let S=0;S{e.isMounted=!0}),Bi(()=>{e.isUnmounting=!0}),e}const Re=[Function,Array],$i={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Re,onEnter:Re,onAfterEnter:Re,onEnterCancelled:Re,onBeforeLeave:Re,onLeave:Re,onAfterLeave:Re,onLeaveCancelled:Re,onBeforeAppear:Re,onAppear:Re,onAfterAppear:Re,onAppearCancelled:Re},Di=e=>{const t=e.subTree;return t.component?Di(t.component):t},Bl={name:"BaseTransition",props:$i,setup(e,{slots:t}){const n=qn(),s=kl();return()=>{const r=t.default&&Ui(t.default(),!0);if(!r||!r.length)return;const i=ji(r),o=J(e),{mode:l}=o;if(s.isLeaving)return ts(i);const c=gr(i);if(!c)return ts(i);let f=Es(c,o,s,n,h=>f=h);c.type!==_e&&Yt(c,f);let a=n.subTree&&gr(n.subTree);if(a&&a.type!==_e&&!ut(c,a)&&Di(n).type!==_e){let h=Es(a,o,s,n);if(Yt(a,h),l==="out-in"&&c.type!==_e)return s.isLeaving=!0,h.afterLeave=()=>{s.isLeaving=!1,n.job.flags&8||n.update(),delete h.afterLeave,a=void 0},ts(i);l==="in-out"&&c.type!==_e?h.delayLeave=(y,_,S)=>{const b=Vi(s,a);b[String(a.key)]=a,y[Ze]=()=>{_(),y[Ze]=void 0,delete f.delayedLeave,a=void 0},f.delayedLeave=()=>{S(),delete f.delayedLeave,a=void 0}}:a=void 0}else a&&(a=void 0);return i}}};function ji(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==_e){t=n;break}}return t}const Wl=Bl;function Vi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function Es(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:a,onEnterCancelled:h,onBeforeLeave:y,onLeave:_,onAfterLeave:S,onLeaveCancelled:b,onBeforeAppear:K,onAppear:N,onAfterAppear:j,onAppearCancelled:p}=t,g=String(e.key),O=Vi(n,e),F=(R,w)=>{R&&He(R,s,9,w)},$=(R,w)=>{const I=w[1];F(R,w),W(R)?R.every(x=>x.length<=1)&&I():R.length<=1&&I()},V={mode:o,persisted:l,beforeEnter(R){let w=c;if(!n.isMounted)if(i)w=K||c;else return;R[Ze]&&R[Ze](!0);const I=O[g];I&&ut(e,I)&&I.el[Ze]&&I.el[Ze](),F(w,[R])},enter(R){let w=f,I=a,x=h;if(!n.isMounted)if(i)w=N||f,I=j||a,x=p||h;else return;let B=!1;const se=R[dn]=le=>{B||(B=!0,le?F(x,[R]):F(I,[R]),V.delayedLeave&&V.delayedLeave(),R[dn]=void 0)};w?$(w,[R,se]):se()},leave(R,w){const I=String(e.key);if(R[dn]&&R[dn](!0),n.isUnmounting)return w();F(y,[R]);let x=!1;const B=R[Ze]=se=>{x||(x=!0,w(),se?F(b,[R]):F(S,[R]),R[Ze]=void 0,O[I]===e&&delete O[I])};O[I]=e,_?$(_,[R,B]):B()},clone(R){const w=Es(R,t,n,s,r);return r&&r(w),w}};return V}function ts(e){if(sn(e))return e=nt(e),e.children=null,e}function gr(e){if(!sn(e))return Ni(e.type)&&e.children?ji(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&q(n.default))return n.default()}}function Yt(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Yt(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Ui(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;iXt(S,t&&(W(t)?t[b]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?Gn(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,a=l.refs===Z?l.refs={}:l.refs,h=l.setupState,y=J(h),_=h===Z?()=>!1:S=>z(y,S);if(f!=null&&f!==c&&(re(f)?(a[f]=null,_(f)&&(h[f]=null)):ae(f)&&(f.value=null)),q(c))tn(c,l,12,[o,a]);else{const S=re(c),b=ae(c);if(S||b){const K=()=>{if(e.f){const N=S?_(c)?h[c]:a[c]:c.value;r?W(N)&&Hs(N,i):W(N)?N.includes(i)||N.push(i):S?(a[c]=[i],_(c)&&(h[c]=a[c])):(c.value=[i],e.k&&(a[e.k]=c.value))}else S?(a[c]=o,_(c)&&(h[c]=o)):b&&(c.value=o,e.k&&(a[e.k]=o))};o?(K.id=-1,we(K,n)):K()}}}let mr=!1;const wt=()=>{mr||(console.error("Hydration completed but contains mismatches."),mr=!0)},Kl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",ql=e=>e.namespaceURI.includes("MathML"),hn=e=>{if(e.nodeType===1){if(Kl(e))return"svg";if(ql(e))return"mathml"}},xt=e=>e.nodeType===8;function Gl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,a=(p,g)=>{if(!g.hasChildNodes()){n(null,p,g),On(),g._vnode=p;return}h(g.firstChild,p,null,null,null),On(),g._vnode=p},h=(p,g,O,F,$,V=!1)=>{V=V||!!g.dynamicChildren;const R=xt(p)&&p.data==="[",w=()=>b(p,g,O,F,$,R),{type:I,ref:x,shapeFlag:B,patchFlag:se}=g;let le=p.nodeType;g.el=p,se===-2&&(V=!1,g.dynamicChildren=null);let U=null;switch(I){case gt:le!==3?g.children===""?(c(g.el=r(""),o(p),p),U=p):U=w():(p.data!==g.children&&(wt(),p.data=g.children),U=i(p));break;case _e:j(p)?(U=i(p),N(g.el=p.content.firstChild,p,O)):le!==8||R?U=w():U=i(p);break;case kt:if(R&&(p=i(p),le=p.nodeType),le===1||le===3){U=p;const Y=!g.children.length;for(let D=0;D{V=V||!!g.dynamicChildren;const{type:R,props:w,patchFlag:I,shapeFlag:x,dirs:B,transition:se}=g,le=R==="input"||R==="option";if(le||I!==-1){B&&Ue(g,null,O,"created");let U=!1;if(j(p)){U=lo(null,se)&&O&&O.vnode.props&&O.vnode.props.appear;const D=p.content.firstChild;U&&se.beforeEnter(D),N(D,p,O),g.el=p=D}if(x&16&&!(w&&(w.innerHTML||w.textContent))){let D=_(p.firstChild,g,p,O,F,$,V);for(;D;){pn(p,1)||wt();const he=D;D=D.nextSibling,l(he)}}else if(x&8){let D=g.children;D[0]===`
+`&&(p.tagName==="PRE"||p.tagName==="TEXTAREA")&&(D=D.slice(1)),p.textContent!==D&&(pn(p,0)||wt(),p.textContent=g.children)}if(w){if(le||!V||I&48){const D=p.tagName.includes("-");for(const he in w)(le&&(he.endsWith("value")||he==="indeterminate")||en(he)&&!Ct(he)||he[0]==="."||D)&&s(p,he,null,w[he],void 0,O)}else if(w.onClick)s(p,"onClick",null,w.onClick,void 0,O);else if(I&4&&ht(w.style))for(const D in w.style)w.style[D]}let Y;(Y=w&&w.onVnodeBeforeMount)&&Oe(Y,O,g),B&&Ue(g,null,O,"beforeMount"),((Y=w&&w.onVnodeMounted)||B||U)&&po(()=>{Y&&Oe(Y,O,g),U&&se.enter(p),B&&Ue(g,null,O,"mounted")},F)}return p.nextSibling},_=(p,g,O,F,$,V,R)=>{R=R||!!g.dynamicChildren;const w=g.children,I=w.length;for(let x=0;x{const{slotScopeIds:R}=g;R&&($=$?$.concat(R):R);const w=o(p),I=_(i(p),g,w,O,F,$,V);return I&&xt(I)&&I.data==="]"?i(g.anchor=I):(wt(),c(g.anchor=f("]"),w,I),I)},b=(p,g,O,F,$,V)=>{if(pn(p.parentElement,1)||wt(),g.el=null,V){const I=K(p);for(;;){const x=i(p);if(x&&x!==I)l(x);else break}}const R=i(p),w=o(p);return l(p),n(null,g,w,R,O,F,hn(w),$),O&&(O.vnode.el=g.el,uo(O,g.el)),R},K=(p,g="[",O="]")=>{let F=0;for(;p;)if(p=i(p),p&&xt(p)&&(p.data===g&&F++,p.data===O)){if(F===0)return i(p);F--}return p},N=(p,g,O)=>{const F=g.parentNode;F&&F.replaceChild(p,g);let $=O;for(;$;)$.vnode.el===g&&($.vnode.el=$.subTree.el=p),$=$.parent},j=p=>p.nodeType===1&&p.tagName==="TEMPLATE";return[a,h]}const yr="data-allow-mismatch",Yl={0:"text",1:"children",2:"class",3:"style",4:"attribute"};function pn(e,t){if(t===0||t===1)for(;e&&!e.hasAttribute(yr);)e=e.parentElement;const n=e&&e.getAttribute(yr);if(n==null)return!1;if(n==="")return!0;{const s=n.split(",");return t===0&&s.includes("children")?!0:n.split(",").includes(Yl[t])}}Hn().requestIdleCallback;Hn().cancelIdleCallback;function Xl(e,t){if(xt(e)&&e.data==="["){let n=1,s=e.nextSibling;for(;s;){if(s.nodeType===1){if(t(s)===!1)break}else if(xt(s))if(s.data==="]"){if(--n===0)break}else s.data==="["&&n++;s=s.nextSibling}}else t(e)}const pt=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function wf(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:s,delay:r=200,hydrate:i,timeout:o,suspensible:l=!0,onError:c}=e;let f=null,a,h=0;const y=()=>(h++,f=null,_()),_=()=>{let S;return f||(S=f=t().catch(b=>{if(b=b instanceof Error?b:new Error(String(b)),c)return new Promise((K,N)=>{c(b,()=>K(y()),()=>N(b),h+1)});throw b}).then(b=>S!==f&&f?f:(b&&(b.__esModule||b[Symbol.toStringTag]==="Module")&&(b=b.default),a=b,b)))};return Ys({name:"AsyncComponentWrapper",__asyncLoader:_,__asyncHydrate(S,b,K){const N=i?()=>{const j=i(K,p=>Xl(S,p));j&&(b.bum||(b.bum=[])).push(j)}:K;a?N():_().then(()=>!b.isUnmounted&&N())},get __asyncResolved(){return a},setup(){const S=fe;if(Xs(S),a)return()=>ns(a,S);const b=p=>{f=null,nn(p,S,13,!s)};if(l&&S.suspense||Mt)return _().then(p=>()=>ns(p,S)).catch(p=>(b(p),()=>s?ce(s,{error:p}):null));const K=oe(!1),N=oe(),j=oe(!!r);return r&&setTimeout(()=>{j.value=!1},r),o!=null&&setTimeout(()=>{if(!K.value&&!N.value){const p=new Error(`Async component timed out after ${o}ms.`);b(p),N.value=p}},o),_().then(()=>{K.value=!0,S.parent&&sn(S.parent.vnode)&&S.parent.update()}).catch(p=>{b(p),N.value=p}),()=>{if(K.value&&a)return ns(a,S);if(N.value&&s)return ce(s,{error:N.value});if(n&&!j.value)return ce(n)}}})}function ns(e,t){const{ref:n,props:s,children:r,ce:i}=t.vnode,o=ce(e,s,r);return o.ref=n,o.ce=i,delete t.vnode.ce,o}const sn=e=>e.type.__isKeepAlive;function Jl(e,t){ki(e,"a",t)}function zl(e,t){ki(e,"da",t)}function ki(e,t,n=fe){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(kn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)sn(r.parent.vnode)&&Ql(s,t,n,r),r=r.parent}}function Ql(e,t,n,s){const r=kn(t,e,s,!0);Bn(()=>{Hs(s[t],r)},n)}function kn(e,t,n=fe,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{rt();const l=rn(n),c=He(t,n,e,o);return l(),it(),c});return s?r.unshift(i):r.push(i),i}}const Je=e=>(t,n=fe)=>{(!Mt||e==="sp")&&kn(e,(...s)=>t(...s),n)},Zl=Je("bm"),Lt=Je("m"),ec=Je("bu"),tc=Je("u"),Bi=Je("bum"),Bn=Je("um"),nc=Je("sp"),sc=Je("rtg"),rc=Je("rtc");function ic(e,t=fe){kn("ec",e,t)}const Wi="components";function vf(e,t){return qi(Wi,e,!0,t)||e}const Ki=Symbol.for("v-ndc");function Sf(e){return re(e)?qi(Wi,e,!1)||e:e||Ki}function qi(e,t,n=!0,s=!1){const r=ue||fe;if(r){const i=r.type;{const l=Bc(i,!1);if(l&&(l===t||l===Le(t)||l===Fn(Le(t))))return i}const o=_r(r[e]||i[e],t)||_r(r.appContext[e],t);return!o&&s?i:o}}function _r(e,t){return e&&(e[t]||e[Le(t)]||e[Fn(Le(t))])}function xf(e,t,n,s){let r;const i=n,o=W(e);if(o||re(e)){const l=o&&ht(e);let c=!1;l&&(c=!Pe(e),e=Dn(e)),r=new Array(e.length);for(let f=0,a=e.length;ft(l,c,void 0,i));else{const l=Object.keys(e);r=new Array(l.length);for(let c=0,f=l.length;czt(t)?!(t.type===_e||t.type===xe&&!Gi(t.children)):!0)?e:null}function Tf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:bn(s)]=e[s];return n}const Ts=e=>e?bo(e)?Gn(e):Ts(e.parent):null,Ut=de(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Ts(e.parent),$root:e=>Ts(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Xi(e),$forceUpdate:e=>e.f||(e.f=()=>{Gs(e.update)}),$nextTick:e=>e.n||(e.n=Un.bind(e.proxy)),$watch:e=>Ac.bind(e)}),ss=(e,t)=>e!==Z&&!e.__isScriptSetup&&z(e,t),oc={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const _=o[t];if(_!==void 0)switch(_){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(ss(s,t))return o[t]=1,s[t];if(r!==Z&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==Z&&z(n,t))return o[t]=4,n[t];Cs&&(o[t]=0)}}const a=Ut[t];let h,y;if(a)return t==="$attrs"&&me(e.attrs,"get",""),a(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==Z&&z(n,t))return o[t]=4,n[t];if(y=c.config.globalProperties,z(y,t))return y[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return ss(r,t)?(r[t]=n,!0):s!==Z&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==Z&&z(e,o)||ss(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(Ut,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Cf(){return lc().slots}function lc(){const e=qn();return e.setupContext||(e.setupContext=vo(e))}function br(e){return W(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Cs=!0;function cc(e){const t=Xi(e),n=e.proxy,s=e.ctx;Cs=!1,t.beforeCreate&&wr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:a,beforeMount:h,mounted:y,beforeUpdate:_,updated:S,activated:b,deactivated:K,beforeDestroy:N,beforeUnmount:j,destroyed:p,unmounted:g,render:O,renderTracked:F,renderTriggered:$,errorCaptured:V,serverPrefetch:R,expose:w,inheritAttrs:I,components:x,directives:B,filters:se}=t;if(f&&ac(f,s,null),o)for(const Y in o){const D=o[Y];q(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);ne(Y)&&(e.data=jn(Y))}if(Cs=!0,i)for(const Y in i){const D=i[Y],he=q(D)?D.bind(n,n):q(D.get)?D.get.bind(n,n):ke,on=!q(D)&&q(D.set)?D.set.bind(n):ke,ot=ie({get:he,set:on});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>ot.value,set:De=>ot.value=De})}if(l)for(const Y in l)Yi(l[Y],s,n,Y);if(c){const Y=q(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{gc(D,Y[D])})}a&&wr(a,e,"c");function U(Y,D){W(D)?D.forEach(he=>Y(he.bind(n))):D&&Y(D.bind(n))}if(U(Zl,h),U(Lt,y),U(ec,_),U(tc,S),U(Jl,b),U(zl,K),U(ic,V),U(rc,F),U(sc,$),U(Bi,j),U(Bn,g),U(nc,R),W(w))if(w.length){const Y=e.exposed||(e.exposed={});w.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:he=>n[D]=he})})}else e.exposed||(e.exposed={});O&&e.render===ke&&(e.render=O),I!=null&&(e.inheritAttrs=I),x&&(e.components=x),B&&(e.directives=B),R&&Xs(e)}function ac(e,t,n=ke){W(e)&&(e=As(e));for(const s in e){const r=e[s];let i;ne(r)?"default"in r?i=Ot(r.from||s,r.default,!0):i=Ot(r.from||s):i=Ot(r),ae(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function wr(e,t,n){He(W(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Yi(e,t,n,s){let r=s.includes(".")?ao(n,s):()=>n[s];if(re(e)){const i=t[e];q(i)&&Fe(r,i)}else if(q(e))Fe(r,e.bind(n));else if(ne(e))if(W(e))e.forEach(i=>Yi(i,t,n,s));else{const i=q(e.handler)?e.handler.bind(n):t[e.handler];q(i)&&Fe(r,i,e)}}function Xi(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>Pn(c,f,o,!0)),Pn(c,t,o)),ne(t)&&i.set(t,c),c}function Pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&Pn(e,i,n,!0),r&&r.forEach(o=>Pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=fc[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const fc={data:vr,props:Sr,emits:Sr,methods:$t,computed:$t,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:$t,directives:$t,watch:dc,provide:vr,inject:uc};function vr(e,t){return t?e?function(){return de(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function uc(e,t){return $t(As(e),As(t))}function As(e){if(W(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(s&&s.proxy):t}}const zi={},Qi=()=>Object.create(zi),Zi=e=>Object.getPrototypeOf(e)===zi;function mc(e,t,n,s=!1){const r={},i=Qi();e.propsDefaults=Object.create(null),eo(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:El(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function yc(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const a=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[y,_]=to(h,t,!0);de(o,y),_&&l.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!c)return ne(e)&&s.set(e,Et),Et;if(W(i))for(let a=0;ae[0]==="_"||e==="$stable",Js=e=>W(e)?e.map(Me):[Me(e)],bc=(e,t,n)=>{if(t._n)return t;const s=Vl((...r)=>Js(t(...r)),n);return s._c=!1,s},so=(e,t,n)=>{const s=e._ctx;for(const r in e){if(no(r))continue;const i=e[r];if(q(i))t[r]=bc(r,i,s);else if(i!=null){const o=Js(i);t[r]=()=>o}}},ro=(e,t)=>{const n=Js(t);e.slots.default=()=>n},io=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},wc=(e,t,n)=>{const s=e.slots=Qi();if(e.vnode.shapeFlag&32){const r=t._;r?(io(s,t,n),n&&li(s,"_",r,!0)):so(t,s)}else t&&ro(e,t)},vc=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=Z;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:io(r,t,n):(i=!t.$stable,so(t,r)),o=t}else t&&(ro(e,t),o={default:1});if(i)for(const l in r)!no(l)&&o[l]==null&&delete r[l]},we=po;function Sc(e){return oo(e)}function xc(e){return oo(e,Gl)}function oo(e,t){const n=Hn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:a,parentNode:h,nextSibling:y,setScopeId:_=ke,insertStaticContent:S}=e,b=(u,d,m,T=null,v=null,E=null,P=void 0,M=null,A=!!d.dynamicChildren)=>{if(u===d)return;u&&!ut(u,d)&&(T=ln(u),De(u,v,E,!0),u=null),d.patchFlag===-2&&(A=!1,d.dynamicChildren=null);const{type:C,ref:k,shapeFlag:L}=d;switch(C){case gt:K(u,d,m,T);break;case _e:N(u,d,m,T);break;case kt:u==null&&j(d,m,T,P);break;case xe:x(u,d,m,T,v,E,P,M,A);break;default:L&1?O(u,d,m,T,v,E,P,M,A):L&6?B(u,d,m,T,v,E,P,M,A):(L&64||L&128)&&C.process(u,d,m,T,v,E,P,M,A,_t)}k!=null&&v&&Xt(k,u&&u.ref,E,d||u,!d)},K=(u,d,m,T)=>{if(u==null)s(d.el=l(d.children),m,T);else{const v=d.el=u.el;d.children!==u.children&&f(v,d.children)}},N=(u,d,m,T)=>{u==null?s(d.el=c(d.children||""),m,T):d.el=u.el},j=(u,d,m,T)=>{[u.el,u.anchor]=S(u.children,d,m,T,u.el,u.anchor)},p=({el:u,anchor:d},m,T)=>{let v;for(;u&&u!==d;)v=y(u),s(u,m,T),u=v;s(d,m,T)},g=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=y(u),r(u),u=m;r(d)},O=(u,d,m,T,v,E,P,M,A)=>{d.type==="svg"?P="svg":d.type==="math"&&(P="mathml"),u==null?F(d,m,T,v,E,P,M,A):R(u,d,v,E,P,M,A)},F=(u,d,m,T,v,E,P,M)=>{let A,C;const{props:k,shapeFlag:L,transition:H,dirs:G}=u;if(A=u.el=o(u.type,E,k&&k.is,k),L&8?a(A,u.children):L&16&&V(u.children,A,null,T,v,rs(u,E),P,M),G&&Ue(u,null,T,"created"),$(A,u,u.scopeId,P,T),k){for(const ee in k)ee!=="value"&&!Ct(ee)&&i(A,ee,null,k[ee],E,T);"value"in k&&i(A,"value",null,k.value,E),(C=k.onVnodeBeforeMount)&&Oe(C,T,u)}G&&Ue(u,null,T,"beforeMount");const X=lo(v,H);X&&H.beforeEnter(A),s(A,d,m),((C=k&&k.onVnodeMounted)||X||G)&&we(()=>{C&&Oe(C,T,u),X&&H.enter(A),G&&Ue(u,null,T,"mounted")},v)},$=(u,d,m,T,v)=>{if(m&&_(u,m),T)for(let E=0;E{for(let C=A;C{const M=d.el=u.el;let{patchFlag:A,dynamicChildren:C,dirs:k}=d;A|=u.patchFlag&16;const L=u.props||Z,H=d.props||Z;let G;if(m&<(m,!1),(G=H.onVnodeBeforeUpdate)&&Oe(G,m,d,u),k&&Ue(d,u,m,"beforeUpdate"),m&<(m,!0),(L.innerHTML&&H.innerHTML==null||L.textContent&&H.textContent==null)&&a(M,""),C?w(u.dynamicChildren,C,M,m,T,rs(d,v),E):P||D(u,d,M,null,m,T,rs(d,v),E,!1),A>0){if(A&16)I(M,L,H,m,v);else if(A&2&&L.class!==H.class&&i(M,"class",null,H.class,v),A&4&&i(M,"style",L.style,H.style,v),A&8){const X=d.dynamicProps;for(let ee=0;ee{G&&Oe(G,m,d,u),k&&Ue(d,u,m,"updated")},T)},w=(u,d,m,T,v,E,P)=>{for(let M=0;M{if(d!==m){if(d!==Z)for(const E in d)!Ct(E)&&!(E in m)&&i(u,E,d[E],null,v,T);for(const E in m){if(Ct(E))continue;const P=m[E],M=d[E];P!==M&&E!=="value"&&i(u,E,M,P,v,T)}"value"in m&&i(u,"value",d.value,m.value,v)}},x=(u,d,m,T,v,E,P,M,A)=>{const C=d.el=u?u.el:l(""),k=d.anchor=u?u.anchor:l("");let{patchFlag:L,dynamicChildren:H,slotScopeIds:G}=d;G&&(M=M?M.concat(G):G),u==null?(s(C,m,T),s(k,m,T),V(d.children||[],m,k,v,E,P,M,A)):L>0&&L&64&&H&&u.dynamicChildren?(w(u.dynamicChildren,H,m,v,E,P,M),(d.key!=null||v&&d===v.subTree)&&zs(u,d,!0)):D(u,d,m,k,v,E,P,M,A)},B=(u,d,m,T,v,E,P,M,A)=>{d.slotScopeIds=M,u==null?d.shapeFlag&512?v.ctx.activate(d,m,T,P,A):se(d,m,T,v,E,P,A):le(u,d,A)},se=(u,d,m,T,v,E,P)=>{const M=u.component=jc(u,T,v);if(sn(u)&&(M.ctx.renderer=_t),Vc(M,!1,P),M.asyncDep){if(v&&v.registerDep(M,U,P),!u.el){const A=M.subTree=ce(_e);N(null,A,d,m)}}else U(M,u,d,m,v,E,P)},le=(u,d,m)=>{const T=d.component=u.component;if(Lc(u,d,m))if(T.asyncDep&&!T.asyncResolved){Y(T,d,m);return}else T.next=d,T.update();else d.el=u.el,T.vnode=d},U=(u,d,m,T,v,E,P)=>{const M=()=>{if(u.isMounted){let{next:L,bu:H,u:G,parent:X,vnode:ee}=u;{const Te=co(u);if(Te){L&&(L.el=ee.el,Y(u,L,P)),Te.asyncDep.then(()=>{u.isUnmounted||M()});return}}let Q=L,Ee;lt(u,!1),L?(L.el=ee.el,Y(u,L,P)):L=ee,H&&wn(H),(Ee=L.props&&L.props.onVnodeBeforeUpdate)&&Oe(Ee,X,L,ee),lt(u,!0);const pe=is(u),Ie=u.subTree;u.subTree=pe,b(Ie,pe,h(Ie.el),ln(Ie),u,v,E),L.el=pe.el,Q===null&&uo(u,pe.el),G&&we(G,v),(Ee=L.props&&L.props.onVnodeUpdated)&&we(()=>Oe(Ee,X,L,ee),v)}else{let L;const{el:H,props:G}=d,{bm:X,m:ee,parent:Q,root:Ee,type:pe}=u,Ie=pt(d);if(lt(u,!1),X&&wn(X),!Ie&&(L=G&&G.onVnodeBeforeMount)&&Oe(L,Q,d),lt(u,!0),H&&Jn){const Te=()=>{u.subTree=is(u),Jn(H,u.subTree,u,v,null)};Ie&&pe.__asyncHydrate?pe.__asyncHydrate(H,u,Te):Te()}else{Ee.ce&&Ee.ce._injectChildStyle(pe);const Te=u.subTree=is(u);b(null,Te,m,T,u,v,E),d.el=Te.el}if(ee&&we(ee,v),!Ie&&(L=G&&G.onVnodeMounted)){const Te=d;we(()=>Oe(L,Q,Te),v)}(d.shapeFlag&256||Q&&pt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&we(u.a,v),u.isMounted=!0,d=m=T=null}};u.scope.on();const A=u.effect=new di(M);u.scope.off();const C=u.update=A.run.bind(A),k=u.job=A.runIfDirty.bind(A);k.i=u,k.id=u.uid,A.scheduler=()=>Gs(k),lt(u,!0),C()},Y=(u,d,m)=>{d.component=u;const T=u.vnode.props;u.vnode=d,u.next=null,yc(u,d.props,T,m),vc(u,d.children,m),rt(),ur(u),it()},D=(u,d,m,T,v,E,P,M,A=!1)=>{const C=u&&u.children,k=u?u.shapeFlag:0,L=d.children,{patchFlag:H,shapeFlag:G}=d;if(H>0){if(H&128){on(C,L,m,T,v,E,P,M,A);return}else if(H&256){he(C,L,m,T,v,E,P,M,A);return}}G&8?(k&16&&It(C,v,E),L!==C&&a(m,L)):k&16?G&16?on(C,L,m,T,v,E,P,M,A):It(C,v,E,!0):(k&8&&a(m,""),G&16&&V(L,m,T,v,E,P,M,A))},he=(u,d,m,T,v,E,P,M,A)=>{u=u||Et,d=d||Et;const C=u.length,k=d.length,L=Math.min(C,k);let H;for(H=0;Hk?It(u,v,E,!0,!1,L):V(d,m,T,v,E,P,M,A,L)},on=(u,d,m,T,v,E,P,M,A)=>{let C=0;const k=d.length;let L=u.length-1,H=k-1;for(;C<=L&&C<=H;){const G=u[C],X=d[C]=A?et(d[C]):Me(d[C]);if(ut(G,X))b(G,X,m,null,v,E,P,M,A);else break;C++}for(;C<=L&&C<=H;){const G=u[L],X=d[H]=A?et(d[H]):Me(d[H]);if(ut(G,X))b(G,X,m,null,v,E,P,M,A);else break;L--,H--}if(C>L){if(C<=H){const G=H+1,X=GH)for(;C<=L;)De(u[C],v,E,!0),C++;else{const G=C,X=C,ee=new Map;for(C=X;C<=H;C++){const Ce=d[C]=A?et(d[C]):Me(d[C]);Ce.key!=null&&ee.set(Ce.key,C)}let Q,Ee=0;const pe=H-X+1;let Ie=!1,Te=0;const Nt=new Array(pe);for(C=0;C=pe){De(Ce,v,E,!0);continue}let je;if(Ce.key!=null)je=ee.get(Ce.key);else for(Q=X;Q<=H;Q++)if(Nt[Q-X]===0&&ut(Ce,d[Q])){je=Q;break}je===void 0?De(Ce,v,E,!0):(Nt[je-X]=C+1,je>=Te?Te=je:Ie=!0,b(Ce,d[je],m,null,v,E,P,M,A),Ee++)}const or=Ie?Ec(Nt):Et;for(Q=or.length-1,C=pe-1;C>=0;C--){const Ce=X+C,je=d[Ce],lr=Ce+1{const{el:E,type:P,transition:M,children:A,shapeFlag:C}=u;if(C&6){ot(u.component.subTree,d,m,T);return}if(C&128){u.suspense.move(d,m,T);return}if(C&64){P.move(u,d,m,_t);return}if(P===xe){s(E,d,m);for(let L=0;LM.enter(E),v);else{const{leave:L,delayLeave:H,afterLeave:G}=M,X=()=>s(E,d,m),ee=()=>{L(E,()=>{X(),G&&G()})};H?H(E,X,ee):ee()}else s(E,d,m)},De=(u,d,m,T=!1,v=!1)=>{const{type:E,props:P,ref:M,children:A,dynamicChildren:C,shapeFlag:k,patchFlag:L,dirs:H,cacheIndex:G}=u;if(L===-2&&(v=!1),M!=null&&Xt(M,null,m,u,!0),G!=null&&(d.renderCache[G]=void 0),k&256){d.ctx.deactivate(u);return}const X=k&1&&H,ee=!pt(u);let Q;if(ee&&(Q=P&&P.onVnodeBeforeUnmount)&&Oe(Q,d,u),k&6)Bo(u.component,m,T);else{if(k&128){u.suspense.unmount(m,T);return}X&&Ue(u,null,d,"beforeUnmount"),k&64?u.type.remove(u,d,m,_t,T):C&&!C.hasOnce&&(E!==xe||L>0&&L&64)?It(C,d,m,!1,!0):(E===xe&&L&384||!v&&k&16)&&It(A,d,m),T&&rr(u)}(ee&&(Q=P&&P.onVnodeUnmounted)||X)&&we(()=>{Q&&Oe(Q,d,u),X&&Ue(u,null,d,"unmounted")},m)},rr=u=>{const{type:d,el:m,anchor:T,transition:v}=u;if(d===xe){ko(m,T);return}if(d===kt){g(u);return}const E=()=>{r(m),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(u.shapeFlag&1&&v&&!v.persisted){const{leave:P,delayLeave:M}=v,A=()=>P(m,E);M?M(u.el,E,A):A()}else E()},ko=(u,d)=>{let m;for(;u!==d;)m=y(u),r(u),u=m;r(d)},Bo=(u,d,m)=>{const{bum:T,scope:v,job:E,subTree:P,um:M,m:A,a:C}=u;Er(A),Er(C),T&&wn(T),v.stop(),E&&(E.flags|=8,De(P,u,d,m)),M&&we(M,d),we(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},It=(u,d,m,T=!1,v=!1,E=0)=>{for(let P=E;P{if(u.shapeFlag&6)return ln(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const d=y(u.anchor||u.el),m=d&&d[Ii];return m?y(m):d};let Yn=!1;const ir=(u,d,m)=>{u==null?d._vnode&&De(d._vnode,null,null,!0):b(d._vnode||null,u,d,null,null,null,m),d._vnode=u,Yn||(Yn=!0,ur(),On(),Yn=!1)},_t={p:b,um:De,m:ot,r:rr,mt:se,mc:V,pc:D,pbc:w,n:ln,o:e};let Xn,Jn;return t&&([Xn,Jn]=t(_t)),{render:ir,hydrate:Xn,createApp:pc(ir,Xn)}}function rs({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function lt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function lo(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function zs(e,t,n=!1){const s=e.children,r=t.children;if(W(s)&&W(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function co(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:co(t)}function Er(e){if(e)for(let t=0;tOt(Tc);function Qs(e,t){return Wn(e,null,t)}function Af(e,t){return Wn(e,null,{flush:"post"})}function Fe(e,t,n){return Wn(e,t,n)}function Wn(e,t,n=Z){const{immediate:s,deep:r,flush:i,once:o}=n,l=de({},n),c=t&&s||!t&&i!=="post";let f;if(Mt){if(i==="sync"){const _=Cc();f=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=ke,_.resume=ke,_.pause=ke,_}}const a=fe;l.call=(_,S,b)=>He(_,a,S,b);let h=!1;i==="post"?l.scheduler=_=>{we(_,a&&a.suspense)}:i!=="sync"&&(h=!0,l.scheduler=(_,S)=>{S?_():Gs(_)}),l.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,a&&(_.id=a.uid,_.i=a))};const y=Hl(e,t,l);return Mt&&(f?f.push(y):c&&y()),y}function Ac(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?ao(s,e):()=>s[e]:e.bind(s,s);let i;q(t)?i=t:(i=t.handler,n=t);const o=rn(this),l=Wn(r,i.bind(s),n);return o(),l}function ao(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${st(t)}Modifiers`];function Oc(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||Z;let r=n;const i=t.startsWith("update:"),o=i&&Rc(s,t.slice(7));o&&(o.trim&&(r=n.map(a=>re(a)?a.trim():a)),o.number&&(r=n.map(_s)));let l,c=s[l=bn(t)]||s[l=bn(Le(t))];!c&&i&&(c=s[l=bn(st(t))]),c&&He(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,He(f,e,6,r)}}function fo(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!q(e)){const c=f=>{const a=fo(f,t,!0);a&&(l=!0,de(o,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(ne(e)&&s.set(e,null),null):(W(i)?i.forEach(c=>o[c]=null):de(o,i),ne(e)&&s.set(e,o),o)}function Kn(e,t){return!e||!en(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,st(t))||z(e,t))}function is(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:a,props:h,data:y,setupState:_,ctx:S,inheritAttrs:b}=e,K=Mn(e);let N,j;try{if(n.shapeFlag&4){const g=r||s,O=g;N=Me(f.call(O,g,a,h,_,y,S)),j=l}else{const g=t;N=Me(g.length>1?g(h,{attrs:l,slots:o,emit:c}):g(h,null)),j=t.props?l:Mc(l)}}catch(g){Bt.length=0,nn(g,e,1),N=ce(_e)}let p=N;if(j&&b!==!1){const g=Object.keys(j),{shapeFlag:O}=p;g.length&&O&7&&(i&&g.some(Fs)&&(j=Pc(j,i)),p=nt(p,j,!1,!0))}return n.dirs&&(p=nt(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&Yt(p,n.transition),N=p,Mn(K),N}const Mc=e=>{let t;for(const n in e)(n==="class"||n==="style"||en(n))&&((t||(t={}))[n]=e[n]);return t},Pc=(e,t)=>{const n={};for(const s in e)(!Fs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Lc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?Tr(s,o,f):!!o;if(c&8){const a=t.dynamicProps;for(let h=0;he.__isSuspense;function po(e,t){t&&t.pendingBranch?W(e)?t.effects.push(...e):t.effects.push(e):jl(e)}const xe=Symbol.for("v-fgt"),gt=Symbol.for("v-txt"),_e=Symbol.for("v-cmt"),kt=Symbol.for("v-stc"),Bt=[];let Ae=null;function Os(e=!1){Bt.push(Ae=e?null:[])}function Ic(){Bt.pop(),Ae=Bt[Bt.length-1]||null}let Jt=1;function Cr(e,t=!1){Jt+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function go(e){return e.dynamicChildren=Jt>0?Ae||Et:null,Ic(),Jt>0&&Ae&&Ae.push(e),e}function Rf(e,t,n,s,r,i){return go(yo(e,t,n,s,r,i,!0))}function Ms(e,t,n,s,r){return go(ce(e,t,n,s,r,!0))}function zt(e){return e?e.__v_isVNode===!0:!1}function ut(e,t){return e.type===t.type&&e.key===t.key}const mo=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ae(e)||q(e)?{i:ue,r:e,k:t,f:!!n}:e:null);function yo(e,t=null,n=null,s=0,r=null,i=e===xe?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&mo(t),ref:t&&xn(t),scopeId:Li,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:ue};return l?(Zs(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Jt>0&&!o&&Ae&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ae.push(c),c}const ce=Nc;function Nc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===Ki)&&(e=_e),zt(e)){const l=nt(e,t,!0);return n&&Zs(l,n),Jt>0&&!i&&Ae&&(l.shapeFlag&6?Ae[Ae.indexOf(e)]=l:Ae.push(l)),l.patchFlag=-2,l}if(Wc(e)&&(e=e.__vccOpts),t){t=Fc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=js(l)),ne(c)&&(Ks(c)&&!W(c)&&(c=de({},c)),t.style=Ds(c))}const o=re(e)?1:ho(e)?128:Ni(e)?64:ne(e)?4:q(e)?2:0;return yo(e,t,n,s,r,o,i,!0)}function Fc(e){return e?Ks(e)||Zi(e)?de({},e):e:null}function nt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?Hc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&mo(f),ref:t&&t.ref?n&&i?W(i)?i.concat(xn(t)):[i,xn(t)]:xn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&nt(e.ssContent),ssFallback:e.ssFallback&&nt(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Yt(a,c.clone(a)),a}function _o(e=" ",t=0){return ce(gt,null,e,t)}function Of(e,t){const n=ce(kt,null,e);return n.staticCount=t,n}function Mf(e="",t=!1){return t?(Os(),Ms(_e,null,e)):ce(_e,null,e)}function Me(e){return e==null||typeof e=="boolean"?ce(_e):W(e)?ce(xe,null,e.slice()):zt(e)?et(e):ce(gt,null,String(e))}function et(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:nt(e)}function Zs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(W(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Zs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Zi(t)?t._ctx=ue:r===3&&ue&&(ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:ue},n=32):(t=String(t),s&64?(n=16,t=[_o(t)]):n=8);e.children=t,e.shapeFlag|=n}function Hc(...e){const t={};for(let n=0;nfe||ue;let Ln,Ps;{const e=Hn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};Ln=t("__VUE_INSTANCE_SETTERS__",n=>fe=n),Ps=t("__VUE_SSR_SETTERS__",n=>Mt=n)}const rn=e=>{const t=fe;return Ln(e),e.scope.on(),()=>{e.scope.off(),Ln(t)}},Ar=()=>{fe&&fe.scope.off(),Ln(null)};function bo(e){return e.vnode.shapeFlag&4}let Mt=!1;function Vc(e,t=!1,n=!1){t&&Ps(t);const{props:s,children:r}=e.vnode,i=bo(e);mc(e,s,i,t),wc(e,r,n);const o=i?Uc(e,t):void 0;return t&&Ps(!1),o}function Uc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,oc);const{setup:s}=n;if(s){rt();const r=e.setupContext=s.length>1?vo(e):null,i=rn(e),o=tn(s,e,0,[e.props,r]),l=ri(o);if(it(),i(),(l||e.sp)&&!pt(e)&&Xs(e),l){if(o.then(Ar,Ar),t)return o.then(c=>{Rr(e,c)}).catch(c=>{nn(c,e,0)});e.asyncDep=o}else Rr(e,o)}else wo(e)}function Rr(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ne(t)&&(e.setupState=Ri(t)),wo(e)}function wo(e,t,n){const s=e.type;e.render||(e.render=s.render||ke);{const r=rn(e);rt();try{cc(e)}finally{it(),r()}}}const kc={get(e,t){return me(e,"get",""),e[t]}};function vo(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,kc),slots:e.slots,emit:e.emit,expose:t}}function Gn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ri(vn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Ut)return Ut[n](e)},has(t,n){return n in t||n in Ut}})):e.proxy}function Bc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Wc(e){return q(e)&&"__vccOpts"in e}const ie=(e,t)=>Nl(e,t,Mt);function Ls(e,t,n){const s=arguments.length;return s===2?ne(t)&&!W(t)?zt(t)?ce(e,null,[t]):ce(e,t):ce(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&zt(n)&&(n=[n]),ce(e,t,n))}const Kc="3.5.13";/**
+* @vue/runtime-dom v3.5.13
+* (c) 2018-present Yuxi (Evan) You and Vue contributors
+* @license MIT
+**/let Is;const Or=typeof window<"u"&&window.trustedTypes;if(Or)try{Is=Or.createPolicy("vue",{createHTML:e=>e})}catch{}const So=Is?e=>Is.createHTML(e):e=>e,qc="http://www.w3.org/2000/svg",Gc="http://www.w3.org/1998/Math/MathML",qe=typeof document<"u"?document:null,Mr=qe&&qe.createElement("template"),Yc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?qe.createElementNS(qc,e):t==="mathml"?qe.createElementNS(Gc,e):n?qe.createElement(e,{is:n}):qe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>qe.createTextNode(e),createComment:e=>qe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>qe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{Mr.innerHTML=So(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const l=Mr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},ze="transition",Ht="animation",Qt=Symbol("_vtc"),xo={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Xc=de({},$i,xo),Jc=e=>(e.displayName="Transition",e.props=Xc,e),Pf=Jc((e,{slots:t})=>Ls(Wl,zc(e),t)),ct=(e,t=[])=>{W(e)?e.forEach(n=>n(...t)):e&&e(...t)},Pr=e=>e?W(e)?e.some(t=>t.length>1):e.length>1:!1;function zc(e){const t={};for(const x in e)x in xo||(t[x]=e[x]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:a=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:y=`${n}-leave-active`,leaveToClass:_=`${n}-leave-to`}=e,S=Qc(r),b=S&&S[0],K=S&&S[1],{onBeforeEnter:N,onEnter:j,onEnterCancelled:p,onLeave:g,onLeaveCancelled:O,onBeforeAppear:F=N,onAppear:$=j,onAppearCancelled:V=p}=t,R=(x,B,se,le)=>{x._enterCancelled=le,at(x,B?a:l),at(x,B?f:o),se&&se()},w=(x,B)=>{x._isLeaving=!1,at(x,h),at(x,_),at(x,y),B&&B()},I=x=>(B,se)=>{const le=x?$:j,U=()=>R(B,x,se);ct(le,[B,U]),Lr(()=>{at(B,x?c:i),Ke(B,x?a:l),Pr(le)||Ir(B,s,b,U)})};return de(t,{onBeforeEnter(x){ct(N,[x]),Ke(x,i),Ke(x,o)},onBeforeAppear(x){ct(F,[x]),Ke(x,c),Ke(x,f)},onEnter:I(!1),onAppear:I(!0),onLeave(x,B){x._isLeaving=!0;const se=()=>w(x,B);Ke(x,h),x._enterCancelled?(Ke(x,y),Hr()):(Hr(),Ke(x,y)),Lr(()=>{x._isLeaving&&(at(x,h),Ke(x,_),Pr(g)||Ir(x,s,K,se))}),ct(g,[x,se])},onEnterCancelled(x){R(x,!1,void 0,!0),ct(p,[x])},onAppearCancelled(x){R(x,!0,void 0,!0),ct(V,[x])},onLeaveCancelled(x){w(x),ct(O,[x])}})}function Qc(e){if(e==null)return null;if(ne(e))return[os(e.enter),os(e.leave)];{const t=os(e);return[t,t]}}function os(e){return Xo(e)}function Ke(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Qt]||(e[Qt]=new Set)).add(t)}function at(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Qt];n&&(n.delete(t),n.size||(e[Qt]=void 0))}function Lr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Zc=0;function Ir(e,t,n,s){const r=e._endId=++Zc,i=()=>{r===e._endId&&s()};if(n!=null)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=ea(e,t);if(!o)return s();const f=o+"end";let a=0;const h=()=>{e.removeEventListener(f,y),i()},y=_=>{_.target===e&&++a>=c&&h()};setTimeout(()=>{a(n[S]||"").split(", "),r=s(`${ze}Delay`),i=s(`${ze}Duration`),o=Nr(r,i),l=s(`${Ht}Delay`),c=s(`${Ht}Duration`),f=Nr(l,c);let a=null,h=0,y=0;t===ze?o>0&&(a=ze,h=o,y=i.length):t===Ht?f>0&&(a=Ht,h=f,y=c.length):(h=Math.max(o,f),a=h>0?o>f?ze:Ht:null,y=a?a===ze?i.length:c.length:0);const _=a===ze&&/\b(transform|all)(,|$)/.test(s(`${ze}Property`).toString());return{type:a,timeout:h,propCount:y,hasTransform:_}}function Nr(e,t){for(;e.lengthFr(n)+Fr(e[s])))}function Fr(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Hr(){return document.body.offsetHeight}function ta(e,t,n){const s=e[Qt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const $r=Symbol("_vod"),na=Symbol("_vsh"),sa=Symbol(""),ra=/(^|;)\s*display\s*:/;function ia(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&En(s,l,"")}else for(const o in t)n[o]==null&&En(s,o,"");for(const o in n)o==="display"&&(i=!0),En(s,o,n[o])}else if(r){if(t!==n){const o=s[sa];o&&(n+=";"+o),s.cssText=n,i=ra.test(n)}}else t&&e.removeAttribute("style");$r in e&&(e[$r]=i?s.display:"",e[na]&&(s.display="none"))}const Dr=/\s*!important$/;function En(e,t,n){if(W(n))n.forEach(s=>En(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=oa(e,t);Dr.test(n)?e.setProperty(st(s),n.replace(Dr,""),"important"):e[s]=n}}const jr=["Webkit","Moz","ms"],ls={};function oa(e,t){const n=ls[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return ls[t]=s;s=Fn(s);for(let r=0;rcs||(fa.then(()=>cs=0),cs=Date.now());function da(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;He(ha(s,n.value),t,5,[s])};return n.value=e,n.attached=ua(),n}function ha(e,t){if(W(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Kr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,pa=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?ta(e,s,o):t==="style"?ia(e,n,s):en(t)?Fs(t)||ca(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):ga(e,t,s,o))?(kr(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ur(e,t,s,o,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!re(s))?kr(e,Le(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ur(e,t,s,o))};function ga(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Kr(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Kr(t)&&re(n)?!1:t in e}const qr=e=>{const t=e.props["onUpdate:modelValue"]||!1;return W(t)?n=>wn(t,n):t};function ma(e){e.target.composing=!0}function Gr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const as=Symbol("_assign"),Lf={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[as]=qr(r);const i=s||r.props&&r.props.type==="number";St(e,t?"change":"input",o=>{if(o.target.composing)return;let l=e.value;n&&(l=l.trim()),i&&(l=_s(l)),e[as](l)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",ma),St(e,"compositionend",Gr),St(e,"change",Gr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:i}},o){if(e[as]=qr(o),e.composing)return;const l=(i||e.type==="number")&&!/^0\d/.test(e.value)?_s(e.value):e.value,c=t??"";l!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},ya=["ctrl","shift","alt","meta"],_a={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ya.some(n=>e[`${n}Key`]&&!t.includes(n))},If=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=st(r.key);if(t.some(o=>o===i||ba[o]===i))return e(r)})},Eo=de({patchProp:pa},Yc);let Wt,Yr=!1;function wa(){return Wt||(Wt=Sc(Eo))}function va(){return Wt=Yr?Wt:xc(Eo),Yr=!0,Wt}const Ff=(...e)=>{const t=wa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Co(s);if(!r)return;const i=t._component;!q(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const o=n(r,!1,To(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},Hf=(...e)=>{const t=va().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Co(s);if(r)return n(r,!0,To(r))},t};function To(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Co(e){return re(e)?document.querySelector(e):e}const $f=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Sa=window.__VP_SITE_DATA__;function er(e){return ui()?(rl(e),!0):!1}function Be(e){return typeof e=="function"?e():Ai(e)}const Ao=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Df=e=>e!=null,xa=Object.prototype.toString,Ea=e=>xa.call(e)==="[object Object]",Zt=()=>{},Xr=Ta();function Ta(){var e,t;return Ao&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function Ca(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const Ro=e=>e();function Aa(e,t={}){let n,s,r=Zt;const i=l=>{clearTimeout(l),r(),r=Zt};return l=>{const c=Be(e),f=Be(t.maxWait);return n&&i(n),c<=0||f!==void 0&&f<=0?(s&&(i(s),s=null),Promise.resolve(l())):new Promise((a,h)=>{r=t.rejectOnCancel?h:a,f&&!s&&(s=setTimeout(()=>{n&&i(n),s=null,a(l())},f)),n=setTimeout(()=>{s&&i(s),s=null,a(l())},c)})}}function Ra(e=Ro){const t=oe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Vn(t),pause:n,resume:s,eventFilter:r}}function Oa(e){return qn()}function Oo(...e){if(e.length!==1)return Pl(...e);const t=e[0];return typeof t=="function"?Vn(Rl(()=>({get:t,set:Zt}))):oe(t)}function Mo(e,t,n={}){const{eventFilter:s=Ro,...r}=n;return Fe(e,Ca(s,t),r)}function Ma(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=Ra(s);return{stop:Mo(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function tr(e,t=!0,n){Oa()?Lt(e,n):t?e():Un(e)}function jf(e,t,n={}){const{debounce:s=0,maxWait:r=void 0,...i}=n;return Mo(e,t,{...i,eventFilter:Aa(s,{maxWait:r})})}function Vf(e,t,n){let s;ae(n)?s={evaluating:n}:s={};const{lazy:r=!1,evaluating:i=void 0,shallow:o=!0,onError:l=Zt}=s,c=oe(!r),f=o?qs(t):oe(t);let a=0;return Qs(async h=>{if(!c.value)return;a++;const y=a;let _=!1;i&&Promise.resolve().then(()=>{i.value=!0});try{const S=await e(b=>{h(()=>{i&&(i.value=!1),_||b()})});y===a&&(f.value=S)}catch(S){l(S)}finally{i&&y===a&&(i.value=!1),_=!0}}),r?ie(()=>(c.value=!0,f.value)):f}const $e=Ao?window:void 0;function Po(e){var t;const n=Be(e);return(t=n==null?void 0:n.$el)!=null?t:n}function Pt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=$e):[t,n,s,r]=e,!t)return Zt;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(a=>a()),i.length=0},l=(a,h,y,_)=>(a.addEventListener(h,y,_),()=>a.removeEventListener(h,y,_)),c=Fe(()=>[Po(t),Be(r)],([a,h])=>{if(o(),!a)return;const y=Ea(h)?{...h}:h;i.push(...n.flatMap(_=>s.map(S=>l(a,_,S,y))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return er(f),f}function Pa(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Uf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=$e,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=Pa(t);return Pt(r,i,a=>{a.repeat&&Be(l)||c(a)&&n(a)},o)}function La(){const e=oe(!1),t=qn();return t&&Lt(()=>{e.value=!0},t),e}function Ia(e){const t=La();return ie(()=>(t.value,!!e()))}function Lo(e,t={}){const{window:n=$e}=t,s=Ia(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=oe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Qs(()=>{s.value&&(l(),r=n.matchMedia(Be(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return er(()=>{c(),l(),r=void 0}),i}const gn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},mn="__vueuse_ssr_handlers__",Na=Fa();function Fa(){return mn in gn||(gn[mn]=gn[mn]||{}),gn[mn]}function Io(e,t){return Na[e]||t}function nr(e){return Lo("(prefers-color-scheme: dark)",e)}function Ha(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const $a={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Jr="vueuse-storage";function sr(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:a,window:h=$e,eventFilter:y,onError:_=w=>{console.error(w)},initOnMounted:S}=s,b=(a?qs:oe)(typeof t=="function"?t():t);if(!n)try{n=Io("getDefaultStorage",()=>{var w;return(w=$e)==null?void 0:w.localStorage})()}catch(w){_(w)}if(!n)return b;const K=Be(t),N=Ha(K),j=(r=s.serializer)!=null?r:$a[N],{pause:p,resume:g}=Ma(b,()=>F(b.value),{flush:i,deep:o,eventFilter:y});h&&l&&tr(()=>{n instanceof Storage?Pt(h,"storage",V):Pt(h,Jr,R),S&&V()}),S||V();function O(w,I){if(h){const x={key:e,oldValue:w,newValue:I,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",x):new CustomEvent(Jr,{detail:x}))}}function F(w){try{const I=n.getItem(e);if(w==null)O(I,null),n.removeItem(e);else{const x=j.write(w);I!==x&&(n.setItem(e,x),O(I,x))}}catch(I){_(I)}}function $(w){const I=w?w.newValue:n.getItem(e);if(I==null)return c&&K!=null&&n.setItem(e,j.write(K)),K;if(!w&&f){const x=j.read(I);return typeof f=="function"?f(x,K):N==="object"&&!Array.isArray(x)?{...K,...x}:x}else return typeof I!="string"?I:j.read(I)}function V(w){if(!(w&&w.storageArea!==n)){if(w&&w.key==null){b.value=K;return}if(!(w&&w.key!==e)){p();try{(w==null?void 0:w.newValue)!==j.write(b.value)&&(b.value=$(w))}catch(I){_(I)}finally{w?Un(g):g()}}}}function R(w){V(w.detail)}return b}const Da="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function ja(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=$e,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:a=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},y=nr({window:r}),_=ie(()=>y.value?"dark":"light"),S=c||(o==null?Oo(s):sr(o,s,i,{window:r,listenToStorageChanges:l})),b=ie(()=>S.value==="auto"?_.value:S.value),K=Io("updateHTMLAttrs",(g,O,F)=>{const $=typeof g=="string"?r==null?void 0:r.document.querySelector(g):Po(g);if(!$)return;const V=new Set,R=new Set;let w=null;if(O==="class"){const x=F.split(/\s/g);Object.values(h).flatMap(B=>(B||"").split(/\s/g)).filter(Boolean).forEach(B=>{x.includes(B)?V.add(B):R.add(B)})}else w={key:O,value:F};if(V.size===0&&R.size===0&&w===null)return;let I;a&&(I=r.document.createElement("style"),I.appendChild(document.createTextNode(Da)),r.document.head.appendChild(I));for(const x of V)$.classList.add(x);for(const x of R)$.classList.remove(x);w&&$.setAttribute(w.key,w.value),a&&(r.getComputedStyle(I).opacity,document.head.removeChild(I))});function N(g){var O;K(t,n,(O=h[g])!=null?O:g)}function j(g){e.onChanged?e.onChanged(g,N):N(g)}Fe(b,j,{flush:"post",immediate:!0}),tr(()=>j(b.value));const p=ie({get(){return f?S.value:b.value},set(g){S.value=g}});try{return Object.assign(p,{store:S,system:_,state:b})}catch{return p}}function Va(e={}){const{valueDark:t="dark",valueLight:n="",window:s=$e}=e,r=ja({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:nr({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function fs(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function kf(e,t,n={}){const{window:s=$e}=n;return sr(e,t,s==null?void 0:s.localStorage,n)}function No(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const us=new WeakMap;function Bf(e,t=!1){const n=oe(t);let s=null,r="";Fe(Oo(e),l=>{const c=fs(Be(l));if(c){const f=c;if(us.get(f)||us.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=fs(Be(e));!l||n.value||(Xr&&(s=Pt(l,"touchmove",c=>{Ua(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=fs(Be(e));!l||!n.value||(Xr&&(s==null||s()),l.style.overflow=r,us.delete(l),n.value=!1)};return er(o),ie({get(){return n.value},set(l){l?i():o()}})}function Wf(e,t,n={}){const{window:s=$e}=n;return sr(e,t,s==null?void 0:s.sessionStorage,n)}function Kf(e={}){const{window:t=$e,behavior:n="auto"}=e;if(!t)return{x:oe(0),y:oe(0)};const s=oe(t.scrollX),r=oe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return Pt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function qf(e={}){const{window:t=$e,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=oe(n),c=oe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),tr(f),Pt("resize",f,{passive:!0}),r){const a=Lo("(orientation: portrait)");Fe(a,()=>f())}return{width:l,height:c}}const ds={BASE_URL:"/IncompressibleNavierStokes.jl/previews/PR126/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var hs={};const Fo=/^(?:[a-z]+:|\/\/)/i,ka="vitepress-theme-appearance",Ba=/#.*$/,Wa=/[?#].*$/,Ka=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",Ho={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function qa(e,t,n=!1){if(t===void 0)return!1;if(e=zr(`/${e}`),n)return new RegExp(t).test(e);if(zr(t)!==e)return!1;const s=t.match(Ba);return s?(ge?location.hash:"")===s[0]:!0}function zr(e){return decodeURI(e).replace(Wa,"").replace(Ka,"$1")}function Ga(e){return Fo.test(e)}function Ya(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Ga(n)&&qa(t,`/${n}/`,!0))||"root"}function Xa(e,t){var s,r,i,o,l,c,f;const n=Ya(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:Do(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function $o(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Ja(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Ja(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function za(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function Do(e,t){return[...e.filter(n=>!za(t,n)),...t]}const Qa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Za=/^[a-z]:/i;function Qr(e){const t=Za.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Qa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const ps=new Set;function ef(e){if(ps.size===0){const n=typeof process=="object"&&(hs==null?void 0:hs.VITE_EXTRA_EXTENSIONS)||(ds==null?void 0:ds.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>ps.add(s))}const t=e.split(".").pop();return t==null||!ps.has(t.toLowerCase())}function Gf(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const tf=Symbol(),mt=qs(Sa);function Yf(e){const t=ie(()=>Xa(mt.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?oe(!0):n==="force-auto"?nr():n?Va({storageKey:ka,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):oe(!1),r=oe(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=ge?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>$o(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function nf(){const e=Ot(tf);if(!e)throw new Error("vitepress data not properly injected in app");return e}function sf(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Zr(e){return Fo.test(e)||!e.startsWith("/")?e:sf(mt.value.base,e)}function rf(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/IncompressibleNavierStokes.jl/previews/PR126/";t=Qr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Qr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let Tn=[];function Xf(e){Tn.push(e),Bn(()=>{Tn=Tn.filter(t=>t!==e)})}function of(){let e=mt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=ei(e,n);else if(Array.isArray(e))for(const s of e){const r=ei(s,n);if(r){t=r;break}}return t}function ei(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const lf=Symbol(),jo="http://a.com",cf=()=>({path:"/",component:null,data:Ho});function Jf(e,t){const n=jn(cf()),s={route:n,go:r};async function r(l=ge?location.href:"/"){var c,f;l=gs(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(ge&&l!==gs(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var y,_;if(await((y=s.onBeforePageLoad)==null?void 0:y.call(s,l))===!1)return;const a=new URL(l,jo),h=i=a.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:b,__pageData:K}=S;if(!b)throw new Error(`Invalid route component: ${b}`);await((_=s.onAfterPageLoad)==null?void 0:_.call(s,l)),n.path=ge?h:Zr(h),n.component=vn(b),n.data=vn(K),ge&&Un(()=>{let N=mt.value.base+K.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!mt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==a.pathname&&(a.pathname=N,l=N+a.search+a.hash,history.replaceState({},"",l)),a.hash&&!c){let j=null;try{j=document.getElementById(decodeURIComponent(a.hash).slice(1))}catch(p){console.warn(p)}if(j){ti(j,a.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const b=await fetch(mt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await b.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=ge?h:Zr(h),n.component=t?vn(t):null;const b=ge?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...Ho,relativePath:b}}}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:a,origin:h,pathname:y,hash:_,search:S}=new URL(f,c.baseURI),b=new URL(location.href);h===b.origin&&ef(y)&&(l.preventDefault(),y===b.pathname&&S===b.search?(_!==b.hash&&(history.pushState({},"",a),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:b.href,newURL:a}))),_?ti(c,_,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(a))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(gs(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function af(){const e=Ot(lf);if(!e)throw new Error("useRouter() is called without provider.");return e}function Vo(){return af().route}function ti(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-of()+i;requestAnimationFrame(r)}}function gs(e){const t=new URL(e,jo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),mt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const yn=()=>Tn.forEach(e=>e()),zf=Ys({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Vo(),{frontmatter:n,site:s}=nf();return Fe(n,yn,{deep:!0,flush:"post"}),()=>Ls(e.as,s.value.contentProps??{style:{position:"relative"}},[t.component?Ls(t.component,{onVnodeMounted:yn,onVnodeUpdated:yn,onVnodeUnmounted:yn}):"404 Page Not Found"])}}),ff="modulepreload",uf=function(e){return"/IncompressibleNavierStokes.jl/previews/PR126/"+e},ni={},Qf=function(t,n,s){let r=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));r=Promise.allSettled(n.map(c=>{if(c=uf(c),c in ni)return;ni[c]=!0;const f=c.endsWith(".css"),a=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${a}`))return;const h=document.createElement("link");if(h.rel=f?"stylesheet":ff,f||(h.as="script"),h.crossOrigin="",h.href=c,l&&h.setAttribute("nonce",l),document.head.appendChild(h),f)return new Promise((y,_)=>{h.addEventListener("load",y),h.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return r.then(o=>{for(const l of o||[])l.status==="rejected"&&i(l.reason);return t().catch(i)})},Zf=Ys({setup(e,{slots:t}){const n=oe(!1);return Lt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function eu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function tu(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(a=>a.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),df(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const a=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,a)})}})}}async function df(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function nu(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=ms(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(ms);s.forEach((l,c)=>{const f=o.findIndex(a=>a==null?void 0:a.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Qs(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=$o(o,i);f!==document.title&&(document.title=f);const a=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==a&&h.setAttribute("content",a):ms(["meta",{name:"description",content:a}]),r(Do(o.head,pf(c)))})}function ms([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&t.async==null&&(s.async=!1),s}function hf(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function pf(e){return e.filter(t=>!hf(t))}const ys=new Set,Uo=()=>document.createElement("link"),gf=e=>{const t=Uo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},mf=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let _n;const yf=ge&&(_n=Uo())&&_n.relList&&_n.relList.supports&&_n.relList.supports("prefetch")?gf:mf;function su(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ys.has(c)){ys.add(c);const f=rf(c);f&&yf(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ys.add(l))})})};Lt(s);const r=Vo();Fe(()=>r.path,s),Bn(()=>{n&&n.disconnect()})}export{Bi as $,of as A,vf as B,xf as C,qs as D,Xf as E,xe as F,ce as G,Sf as H,Fo as I,Vo as J,Hc as K,Ot as L,qf as M,Ds as N,Uf as O,Un as P,Kf as Q,ge as R,Vn as S,Pf as T,wf as U,Qf as V,Bf as W,gc as X,Nf as Y,Tf as Z,$f as _,_o as a,If as a0,Cf as a1,jn as a2,Pl as a3,Ls as a4,Of as a5,nu as a6,lf as a7,Yf as a8,tf as a9,zf as aa,Zf as ab,mt as ac,Hf as ad,Jf as ae,rf as af,su as ag,tu as ah,eu as ai,Be as aj,Po as ak,Df as al,er as am,Vf as an,Wf as ao,kf as ap,jf as aq,af as ar,Pt as as,_f as at,Lf as au,ae as av,bf as aw,vn as ax,Ff as ay,Gf as az,Ms as b,Rf as c,Ys as d,Mf as e,ef as f,Zr as g,ie as h,Ga as i,yo as j,Ai as k,qa as l,Lo as m,js as n,Os as o,oe as p,Fe as q,Ef as r,Qs as s,nl as t,nf as u,Lt as v,Vl as w,Bn as x,Af as y,tc as z};
diff --git a/previews/PR126/assets/chunks/theme.CgVVWsvL.js b/previews/PR126/assets/chunks/theme.CgVVWsvL.js
deleted file mode 100644
index 3d59559b..00000000
--- a/previews/PR126/assets/chunks/theme.CgVVWsvL.js
+++ /dev/null
@@ -1,2 +0,0 @@
-const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.B5QLRvr-.js","assets/chunks/framework.BSoZtefh.js"])))=>i.map(i=>d[i]);
-import{d as m,o as a,c as u,r as c,n as I,a as z,t as w,b as g,w as f,e as h,T as de,_ as $,u as Ge,i as je,f as ze,g as pe,h as y,j as v,k as i,l as K,m as re,p as T,q as F,s as Z,v as O,x as ve,y as fe,z as Ke,A as Re,B as R,F as M,C as H,D as Ve,E as x,G as k,H as E,I as Te,J as ee,K as j,L as q,M as We,N as Ne,O as ie,P as he,Q as we,R as te,S as qe,U as Je,V as Ye,W as Ie,X as me,Y as Xe,Z as Qe,$ as Ze,a0 as xe,a1 as Me,a2 as et,a3 as tt,a4 as nt}from"./framework.BSoZtefh.js";const st=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),u("span",{class:I(["VPBadge",e.type])},[c(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),ot={key:0,class:"VPBackdrop"},at=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),g(de,{name:"fade"},{default:f(()=>[e.show?(a(),u("div",ot)):h("",!0)]),_:1}))}}),rt=$(at,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function it(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function _e(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(je(o)||o.startsWith("#")||!n.startsWith("http")||!ze(e))return o;const{site:r}=V(),l=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return pe(l)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=V(),l=y(()=>{var p,b;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,b])=>l.value.label===b.label?[]:{text:b.label,link:lt(b.link||(p==="root"?"/":`/${p}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function lt(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},pt={class:"quote"},vt={class:"action"},ft=["href","aria-label"],ht=m({__name:"NotFound",setup(o){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var r,l,d,p,b;return a(),u("div",ct,[v("p",ut,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),v("h1",dt,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=v("div",{class:"divider"},null,-1)),v("blockquote",pt,w(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",vt,[v("a",{class:"link",href:i(pe)(i(t).link),"aria-label":((p=i(e).notFound)==null?void 0:p.linkLabel)??"go to home"},w(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,ft)])])}}}),mt=$(ht,[["__scopeId","data-v-951cab6c"]]);function Ae(o,e){if(Array.isArray(o))return X(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):K(o,e.link)?!0:e.items?ce(o,e.items):!1}function X(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ae(C,N):[]}),l=T(r.value);F(r,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=r.value)});const d=y(()=>o.value.sidebar!==!1&&l.value.length>0&&o.value.layout!=="home"),p=y(()=>b?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),b=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?_t(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:p,isSidebarEnabled:L,open:P,close:S,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),ve(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>o.value.collapsed!=null),r=y(()=>!!o.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,o.value.link)};F([e,o,t],d),O(d);const p=y(()=>l.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),b=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),fe(()=>{(l.value||p.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:p,hasChildren:b,toggle:L}}function $t(){const{hasSidebar:o}=U(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function Ce(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function be(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,o)}function yt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Vt(o,s,n)}function St(o,e){const{isAsideEnabled:t}=$t(),s=it(r,100);let n=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Ke(()=>{l(location.hash)}),ve(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const d=window.scrollY,p=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+p-b)<1,_=ue.map(({element:S,link:A})=>({link:A,top:Lt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+Re()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}function Vt(o,e,t){ue.length=0;const s=[],n=[];return o.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return a(),u("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),u(M,null,H(t.headers,({children:r,link:l,title:d})=>(a(),u("li",null,[v("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Tt),r!=null&&r.length?(a(),g(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),He=$(Nt,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=m({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=V(),s=Ve([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return St(n,r),(l,d)=>(a(),u("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[v("div",wt,[v("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),v("div",It,w(i(Ce)(i(t))),1),k(He,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),At=$(Mt,[["__scopeId","data-v-b38bf2ff"]]),Ct={class:"VPDocAsideCarbonAds"},Ht=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),u("div",Ct,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Bt={class:"VPDocAside"},Et=m({__name:"VPDocAside",setup(o){const{theme:e}=V();return(t,s)=>(a(),u("div",Bt,[c(t.$slots,"aside-top",{},void 0,!0),c(t.$slots,"aside-outline-before",{},void 0,!0),k(At),c(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=v("div",{class:"spacer"},null,-1)),c(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(a(),g(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),c(t.$slots,"aside-ads-after",{},void 0,!0),c(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Et,[["__scopeId","data-v-6d7b3c46"]]);function Ft(){const{theme:o,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ae(e.value.sidebar,o.value.relativePath),n=bt(s),r=Ut(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>K(o.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[l+1])==null?void 0:A.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[l+1])==null?void 0:N.link)}}})}function Ut(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(a(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:f(()=>[c(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=m({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return O(()=>{Z(()=>{var d,p,b;l.value=new Intl.DateTimeFormat((p=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&p.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,p)=>{var b;return a(),u("p",Gt,[z(w(((b=i(e).lastUpdated)==null?void 0:b.text)||i(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:r.value},w(l.value),9,jt)])}}}),Kt=$(zt,[["__scopeId","data-v-475f71b8"]]),Rt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},qt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=m({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=V(),n=Ft(),r=Ot(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),p=y(()=>l.value||d.value||r.value.prev||r.value.next);return(b,L)=>{var _,P,S,A;return p.value?(a(),u("footer",Rt,[c(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(a(),u("div",Wt,[l.value?(a(),u("div",qt,[k(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:f(()=>[L[0]||(L[0]=v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(a(),u("div",Jt,[k(Kt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(a(),u("nav",Yt,[L[1]||(L[1]=v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),v("div",Xt,[(S=i(r).prev)!=null&&S.link?(a(),g(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Qt),v("span",{class:"title",innerHTML:i(r).prev.text},null,8,Zt)]}),_:1},8,["href"])):h("",!0)]),v("div",xt,[(A=i(r).next)!=null&&A.link?(a(),g(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:f(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,en),v("span",{class:"title",innerHTML:i(r).next.text},null,8,tn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),sn=$(nn,[["__scopeId","data-v-4f9813fa"]]),on={class:"container"},an={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},cn={class:"content-container"},un={class:"main"},dn=m({__name:"VPDoc",setup(o){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,p)=>{const b=R("Content");return a(),u("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[c(d.$slots,"doc-top",{},void 0,!0),v("div",on,[i(n)?(a(),u("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[p[0]||(p[0]=v("div",{class:"aside-curtain"},null,-1)),v("div",an,[v("div",rn,[k(Dt,null,{"aside-top":f(()=>[c(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),v("div",ln,[v("div",cn,[c(d.$slots,"doc-before",{},void 0,!0),v("main",un,[k(b,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(sn,null,{"doc-footer-before":f(()=>[c(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),c(d.$slots,"doc-after",{},void 0,!0)])])]),c(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),pn=$(dn,[["__scopeId","data-v-83890dd9"]]),vn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Te.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(a(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:f(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),fn=$(vn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=R("VPImage",!0);return e.image?(a(),u(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),u("img",j({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(a(),u(M,{key:1},[k(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,j({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Sn={key:0,class:"image"},Ln={class:"image-container"},Vn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=q("hero-image-slot-exists");return(t,s)=>(a(),u("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[v("div",_n,[v("div",bn,[c(t.$slots,"home-hero-info-before",{},void 0,!0),c(t.$slots,"home-hero-info",{},()=>[t.name?(a(),u("h1",kn,[v("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):h("",!0),t.text?(a(),u("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0),t.tagline?(a(),u("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),c(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),u("div",Pn,[(a(!0),u(M,null,H(t.actions,n=>(a(),u("div",{key:n.link,class:"action"},[k(fn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(a(),u("div",Sn,[v("div",Ln,[s[0]||(s[0]=v("div",{class:"image-bg"},null,-1)),c(t.$slots,"home-hero-image",{},()=>[t.image?(a(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(Vn,[["__scopeId","data-v-955009fc"]]),Nn=m({__name:"VPHomeHero",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).hero?(a(),g(Tn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before")]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info")]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after")]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),wn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],An=["innerHTML"],Cn=["innerHTML"],Hn={key:4,class:"link-text"},Bn={class:"link-text-value"},En=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),g(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:f(()=>[v("article",wn,[typeof e.icon=="object"&&e.icon.wrap?(a(),u("div",In,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),u("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):h("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(a(),u("p",{key:3,class:"details",innerHTML:e.details},null,8,Cn)):h("",!0),e.linkText?(a(),u("div",Hn,[v("p",Bn,[z(w(e.linkText)+" ",1),t[0]||(t[0]=v("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(En,[["__scopeId","data-v-f5e9645b"]]),Fn={key:0,class:"VPFeatures"},On={class:"container"},Un={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),u("div",Fn,[v("div",On,[v("div",Un,[(a(!0),u(M,null,H(s.features,r=>(a(),u("div",{key:r.title,class:I(["item",[t.value]])},[k(Dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),jn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),zn=m({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=V();return(t,s)=>i(e).features?(a(),g(jn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Kn=m({__name:"VPHomeContent",setup(o){const{width:e}=We({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),u("div",{class:"vp-doc container",style:Ne(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[c(t.$slots,"default",{},void 0,!0)],4))}}),Rn=$(Kn,[["__scopeId","data-v-7a48a447"]]),Wn={class:"VPHome"},qn=m({__name:"VPHome",setup(o){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return a(),u("div",Wn,[c(t.$slots,"home-hero-before",{},void 0,!0),k(Nn,null,{"home-hero-info-before":f(()=>[c(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),c(t.$slots,"home-hero-after",{},void 0,!0),c(t.$slots,"home-features-before",{},void 0,!0),k(zn),c(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(a(),g(Rn,{key:0},{default:f(()=>[k(n)]),_:1})):(a(),g(n,{key:1}))])}}}),Jn=$(qn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(o,e){const t=R("Content");return a(),u("div",Xn,[c(o.$slots,"page-top"),k(t),c(o.$slots,"page-bottom")])}const Zn=$(Yn,[["render",Qn]]),xn=m({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>(a(),u("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?c(n.$slots,"not-found",{key:0},()=>[k(mt)],!0):i(t).layout==="page"?(a(),g(Zn,{key:1},{"page-top":f(()=>[c(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(a(),g(Jn,{key:2},{"home-hero-before":f(()=>[c(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(a(),g(E(i(t).layout),{key:3})):(a(),g(pn,{key:4},{"doc-top":f(()=>[c(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":f(()=>[c(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":f(()=>[c(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":f(()=>[c(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":f(()=>[c(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=$(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],os=m({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>i(e).footer&&i(t).footer!==!1?(a(),u("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[v("div",ts,[i(e).footer.message?(a(),u("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ns)):h("",!0),i(e).footer.copyright?(a(),u("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ss)):h("",!0)])],2)):h("",!0)}}),as=$(os,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:o,frontmatter:e}=V(),t=Ve([]),s=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},cs={class:"outline"},us=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=V(),s=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(s.value=!1)}F(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function p(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(a(),u("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(a(),u("button",{key:0,onClick:p,class:I({open:s.value})},[v("span",is,w(i(Ce)(i(t))),1),P[0]||(P[0]=v("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(a(),u("button",{key:1,onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:f(()=>[s.value?(a(),u("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[v("div",ls,[v("a",{class:"top-link",href:"#",onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)]),v("div",cs,[k(He,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ds=$(us,[["__scopeId","data-v-bc9dc845"]]),ps={class:"container"},vs=["aria-expanded"],fs={class:"menu-text"},hs=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:n}=rs(),{y:r}=we(),l=T(0);O(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),p=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:p.value}));return(L,_)=>i(t).layout!=="home"&&(!p.value||i(r)>=l.value)?(a(),u("div",{key:0,class:I(b.value)},[v("div",ps,[i(s)?(a(),u("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=v("span",{class:"vpi-align-left menu-icon"},null,-1)),v("span",fs,w(i(e).sidebarMenuLabel||"Menu"),1)],8,vs)):h("",!0),k(ds,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ms=$(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const o=T(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return F(()=>r.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(o,e){return a(),u("button",ks,[v("span",gs,[o.$slots.default?(a(),u("span",$s,[c(o.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ps=$(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Ss=m({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=V(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return fe(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(a(),g(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:f(()=>l[0]||(l[0]=[v("span",{class:"vpi-sun sun"},null,-1),v("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Ss,[["__scopeId","data-v-e40a8bb6"]]),Ls={key:0,class:"VPNavBarAppearance"},Vs=m({__name:"VPNavBarAppearance",setup(o){const{site:e}=V();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Ls,[k(ke)])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,ae=0;function Ns(o){const e=T(!1);if(te){!Be&&ws(),ae++;const t=F(ge,s=>{var n,r,l;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(r=o.onFocus)==null||r.call(o)):(e.value=!1,(l=o.onBlur)==null||l.call(o))});ve(()=>{t(),ae--,ae||Is()})}return qe(e)}function ws(){document.addEventListener("focusin",Ee),Be=!0,ge.value=document.activeElement}function Is(){document.removeEventListener("focusin",Ee)}function Ee(){ge.value=document.activeElement}const Ms={class:"VPMenuLink"},As=["innerHTML"],Cs=m({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),u("div",Ms,[k(D,{class:I({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Cs,[["__scopeId","data-v-acbfed09"]]),Hs={class:"VPMenuGroup"},Bs={key:0,class:"title"},Es=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",Hs,[e.text?(a(),u("p",Bs,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),u(M,null,["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Es,[["__scopeId","data-v-48c802d0"]]),Fs={class:"VPMenu"},Os={key:0,class:"items"},Us=m({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),u("div",Fs,[e.items?(a(),u("div",Os,[(a(!0),u(M,null,H(e.items,s=>(a(),u(M,{key:JSON.stringify(s)},["link"in s?(a(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),g(E(s.component),j({key:1,ref_for:!0},s.props),null,16)):(a(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),c(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(Us,[["__scopeId","data-v-7dd3104a"]]),js=["aria-expanded","aria-label"],zs={key:0,class:"text"},Ks=["innerHTML"],Rs={key:1,class:"vpi-more-horizontal icon"},Ws={class:"menu"},qs=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=T(!1),t=T();Ns({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(a(),u("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(a(),u("span",zs,[n.icon?(a(),u("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(a(),u("span",{key:1,innerHTML:n.button},null,8,Ks)):h("",!0),r[3]||(r[3]=v("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(a(),u("span",Rs))],8,js),v("div",Ws,[k(Gs,{items:n.items},{default:f(()=>[c(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(qs,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=T();O(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(a(),u("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Js))}}),Xs=$(Ys,[["__scopeId","data-v-d26d30cb"]]),Qs={class:"VPSocialLinks"},Zs=m({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),u("div",Qs,[(a(!0),u(M,null,H(e.links,({link:s,icon:n,ariaLabel:r})=>(a(),g(Xs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},eo={class:"trans-title"},to={key:1,class:"group"},no={class:"item appearance"},so={class:"label"},oo={class:"appearance-action"},ao={key:2,class:"group"},ro={class:"item social-links"},io=m({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(a(),g($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:f(()=>[i(s).length&&i(n).label?(a(),u("div",xs,[v("p",eo,w(i(n).label),1),(a(!0),u(M,null,H(i(s),p=>(a(),g(ne,{key:p.link,item:p},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",to,[v("div",no,[v("p",so,w(i(t).darkModeSwitchLabel||"Appearance"),1),v("div",oo,[k(ke)])])])):h("",!0),i(t).socialLinks?(a(),u("div",ao,[v("div",ro,[k(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),lo=$(io,[["__scopeId","data-v-925effce"]]),co=["aria-expanded"],uo=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),u("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)]),10,co))}}),po=$(uo,[["__scopeId","data-v-5dea55bf"]]),vo=["innerHTML"],fo=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=V();return(t,s)=>(a(),g(D,{class:I({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,vo)]),_:1},8,["class","href","target","rel","no-icon"]))}}),ho=$(fo,[["__scopeId","data-v-956ec74c"]]),mo=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=V(),s=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=y(()=>s(e.item));return(r,l)=>(a(),g($e,{class:I({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),_o={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},bo=m({__name:"VPNavBarMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",_o,[s[0]||(s[0]=v("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(ho,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),j({key:1,ref_for:!0},n.props),null,16)):(a(),g(mo,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ko=$(bo,[["__scopeId","data-v-e6d46098"]]);function go(o){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const r=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",p=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=p,_=b,P=o;const S=r.pop();for(const B of r){let G=null;const W=P==null?void 0:P[B];W&&(G=P=W);const se=_==null?void 0:_[B];se&&(G=_=se);const oe=L==null?void 0:L[B];oe&&(G=L=oe),W||(P=G),se||(_=G),oe||(L=G)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const $o=["aria-label"],yo={class:"DocSearch-Button-Container"},Po={class:"DocSearch-Button-Placeholder"},Pe=m({__name:"VPNavBarSearchButton",setup(o){const t=go({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),u("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[v("span",yo,[n[0]||(n[0]=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),v("span",Po,w(i(t)("button.buttonText")),1)]),n[1]||(n[1]=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,$o))}}),So={class:"VPNavBarSearch"},Lo={id:"local-search"},Vo={key:1,id:"docsearch"},To=m({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.B5QLRvr-.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),r=T(!1);O(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function p(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{p(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return a(),u("div",So,[i(L)==="local"?(a(),u(M,{key:0},[b.value?(a(),g(i(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),v("div",Lo,[k(Pe,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):i(L)==="algolia"?(a(),u(M,{key:1},[n.value?(a(),g(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(a(),u("div",Vo,[k(Pe,{onClick:l})]))],64)):h("",!0)])}}}),No=m({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),wo=$(No,[["__scopeId","data-v-164c457f"]]),Io=["href","rel","target"],Mo=["innerHTML"],Ao={key:2},Co=m({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:n}=Y(),r=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),l=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),d=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,b)=>(a(),u("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[v("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[c(p.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(a(),g(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(a(),u("span",{key:1,innerHTML:i(t).siteTitle},null,8,Mo)):i(t).siteTitle===void 0?(a(),u("span",Ao,w(i(e).title),1)):h("",!0),c(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Io)],2))}}),Ho=$(Co,[["__scopeId","data-v-0f4f798b"]]),Bo={class:"items"},Eo={class:"title"},Do=m({__name:"VPNavBarTranslations",setup(o){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(a(),g($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:f(()=>[v("div",Bo,[v("p",Eo,w(i(s).label),1),(a(!0),u(M,null,H(i(t),l=>(a(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Fo=$(Do,[["__scopeId","data-v-c80d9ad0"]]),Oo={class:"wrapper"},Uo={class:"container"},Go={class:"title"},jo={class:"content"},zo={class:"content-body"},Ko=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=we(),{hasSidebar:s}=U(),{frontmatter:n}=V(),r=T({});return fe(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(a(),u("div",{class:I(["VPNavBar",r.value])},[v("div",Oo,[v("div",Uo,[v("div",Go,[k(Ho,null,{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",jo,[v("div",zo,[c(l.$slots,"nav-bar-content-before",{},void 0,!0),k(To,{class:"search"}),k(ko,{class:"menu"}),k(Fo,{class:"translations"}),k(Ts,{class:"appearance"}),k(wo,{class:"social-links"}),k(lo,{class:"extra"}),c(l.$slots,"nav-bar-content-after",{},void 0,!0),k(po,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1))],2))}}),Ro=$(Ko,[["__scopeId","data-v-822684d1"]]),Wo={key:0,class:"VPNavScreenAppearance"},qo={class:"text"},Jo=m({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=V();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(a(),u("div",Wo,[v("p",qo,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):h("",!0)}}),Yo=$(Jo,[["__scopeId","data-v-ffb44008"]]),Xo=["innerHTML"],Qo=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,Xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Zo=$(Qo,[["__scopeId","data-v-735512b8"]]),xo=["innerHTML"],ea=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=q("close-screen");return(t,s)=>(a(),g(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:f(()=>[v("span",{innerHTML:t.item.text},null,8,xo)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(ea,[["__scopeId","data-v-372ae7c0"]]),ta={class:"VPNavScreenMenuGroupSection"},na={key:0,class:"title"},sa=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),u("div",ta,[e.text?(a(),u("p",na,w(e.text),1)):h("",!0),(a(!0),u(M,null,H(e.items,s=>(a(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),oa=$(sa,[["__scopeId","data-v-4b8941ac"]]),aa=["aria-controls","aria-expanded"],ra=["innerHTML"],ia=["id"],la={key:0,class:"item"},ca={key:1,class:"item"},ua={key:2,class:"group"},da=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(a(),u("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[v("span",{class:"button-text",innerHTML:r.text},null,8,ra),l[0]||(l[0]=v("span",{class:"vpi-plus button-icon"},null,-1))],8,aa),v("div",{id:s.value,class:"items"},[(a(!0),u(M,null,H(r.items,d=>(a(),u(M,{key:JSON.stringify(d)},["link"in d?(a(),u("div",la,[k(De,{item:d},null,8,["item"])])):"component"in d?(a(),u("div",ca,[(a(),g(E(d.component),j({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(a(),u("div",ua,[k(oa,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,ia)],2))}}),pa=$(da,[["__scopeId","data-v-875057a5"]]),va={key:0,class:"VPNavScreenMenu"},fa=m({__name:"VPNavScreenMenu",setup(o){const{theme:e}=V();return(t,s)=>i(e).nav?(a(),u("nav",va,[(a(!0),u(M,null,H(i(e).nav,n=>(a(),u(M,{key:JSON.stringify(n)},["link"in n?(a(),g(Zo,{key:0,item:n},null,8,["item"])):"component"in n?(a(),g(E(n.component),j({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),g(pa,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ha=m({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(a(),g(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),ma={class:"list"},_a=m({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(a(),u("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[v("button",{class:"title",onClick:n},[l[0]||(l[0]=v("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(i(t).label)+" ",1),l[1]||(l[1]=v("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),v("ul",ma,[(a(!0),u(M,null,H(i(e),d=>(a(),u("li",{key:d.link,class:"item"},[k(D,{class:"link",href:d.link},{default:f(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-362991c2"]]),ka={class:"container"},ga=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(a(),g(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:f(()=>[s.open?(a(),u("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",ka,[c(s.$slots,"nav-screen-content-before",{},void 0,!0),k(fa,{class:"menu"}),k(ba,{class:"translations"}),k(Yo,{class:"appearance"}),k(ha,{class:"social-links"}),c(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$a=$(ga,[["__scopeId","data-v-833aabba"]]),ya={key:0,class:"VPNav"},Pa=m({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=V(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(a(),u("header",ya,[k(Ro,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":f(()=>[c(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k($a,{open:i(e)},{"nav-screen-content-before":f(()=>[c(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),Sa=$(Pa,[["__scopeId","data-v-f1e365da"]]),La=["role","tabindex"],Va={key:1,class:"items"},Ta=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:p}=gt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(N,B)=>{const G=R("VPSidebarItem",!0);return a(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:f(()=>[N.item.text?(a(),u("div",j({key:0,class:"item",role:P.value},Qe(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=v("div",{class:"indicator"},null,-1)),N.item.link?(a(),g(D,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:f(()=>[(a(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(a(),u("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[v("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,La)):h("",!0),N.item.items&&N.item.items.length?(a(),u("div",Va,[N.depth<5?(a(!0),u(M,{key:0},H(N.item.items,W=>(a(),g(G,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),Na=$(Ta,[["__scopeId","data-v-196b2e5f"]]),wa=m({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),u(M,null,H(s.items,r=>(a(),u("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[k(Na,{item:r,depth:0},null,8,["item"])],2))),128))}}),Ia=$(wa,[["__scopeId","data-v-9e426adc"]]),Ma={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Aa=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=T(null),r=Ie(te?document.body:null);F([s,n],()=>{var d;s.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return F(e,()=>{l.value+=1},{deep:!0}),(d,p)=>i(t)?(a(),u("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:p[0]||(p[0]=xe(()=>{},["stop"]))},[p[2]||(p[2]=v("div",{class:"curtain"},null,-1)),v("nav",Ma,[p[1]||(p[1]=v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),c(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(),g(Ia,{items:i(e),key:l.value},null,8,["items"])),c(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Ca=$(Aa,[["__scopeId","data-v-18756405"]]),Ha=m({__name:"VPSkipLink",setup(o){const e=ee(),t=T();F(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(a(),u(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Ba=$(Ha,[["__scopeId","data-v-c3508ec8"]]),Ea=m({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();F(()=>n.path,s),kt(e,s);const{frontmatter:r}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(p,b)=>{const L=R("Content");return i(r).layout!==!1?(a(),u("div",{key:0,class:I(["Layout",i(r).pageClass])},[c(p.$slots,"layout-top",{},void 0,!0),k(Ba),k(rt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),k(Sa,null,{"nav-bar-title-before":f(()=>[c(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":f(()=>[c(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":f(()=>[c(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":f(()=>[c(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":f(()=>[c(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":f(()=>[c(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(Ca,{open:i(e)},{"sidebar-nav-before":f(()=>[c(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":f(()=>[c(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(es,null,{"page-top":f(()=>[c(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":f(()=>[c(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":f(()=>[c(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":f(()=>[c(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":f(()=>[c(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":f(()=>[c(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":f(()=>[c(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":f(()=>[c(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":f(()=>[c(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":f(()=>[c(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":f(()=>[c(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":f(()=>[c(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":f(()=>[c(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":f(()=>[c(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":f(()=>[c(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":f(()=>[c(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":f(()=>[c(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":f(()=>[c(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":f(()=>[c(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":f(()=>[c(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":f(()=>[c(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":f(()=>[c(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":f(()=>[c(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(as),c(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),g(L,{key:1}))}}}),Da=$(Ea,[["__scopeId","data-v-a9a9e638"]]),Se={Layout:Da,enhanceApp:({app:o})=>{o.component("Badge",st)}},Fa=o=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=o.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Fe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oa=()=>{const o=J==null?void 0:J.getItem(Oe);if(o)try{return JSON.parse(o)}catch{}return{}},Ua=o=>{J&&J.setItem(Oe,JSON.stringify(o))},Ga=o=>{const e=et({});F(()=>e.content,(t,s)=>{t&&s&&Ua(t)},{deep:!0}),o.provide(Fe,e)},ja=(o,e)=>{const t=q(Fe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=Oa())});const s=T(),n=y({get(){var p;const l=e.value,d=o.value;if(l){const b=(p=t.content)==null?void 0:p[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Le=0;const za=()=>(Le++,""+Le);function Ka(){const o=Me();return y(()=>{var s;const t=(s=o.default)==null?void 0:s.call(o);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ue="vitepress:tabSingleState",Ra=o=>{me(Ue,o)},Wa=()=>{const o=q(Ue);if(!o)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return o},qa={class:"plugin-tabs"},Ja=["id","aria-selected","aria-controls","tabindex","onClick"],Ya=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(o){const e=o,t=Ka(),{selected:s,select:n}=ja(t,tt(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Fa(r),d=l(n),p=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(a(),u("div",qa,[v("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(a(!0),u(M,null,H(i(t),S=>(a(),u("button",{id:`tab-${S}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:p,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(L)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(d)(S)},w(S),9,Ja))),128))],544),c(_.$slots,"default")]))}}),Xa=["id","aria-labelledby"],Qa=m({__name:"PluginTabsTab",props:{label:{}},setup(o){const{uid:e,selected:t}=Wa();return(s,n)=>i(t)===s.label?(a(),u("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[c(s.$slots,"default",{},void 0,!0)],8,Xa)):h("",!0)}}),Za=$(Qa,[["__scopeId","data-v-9b0d03d2"]]),xa=o=>{Ga(o),o.component("PluginTabs",Ya),o.component("PluginTabsTab",Za)},tr={extends:Se,Layout(){return nt(Se.Layout,null,{})},enhanceApp({app:o,router:e,siteData:t}){xa(o)}};export{tr as R,go as c,V as u};
diff --git a/previews/PR126/assets/chunks/theme.Cq6vZMMO.js b/previews/PR126/assets/chunks/theme.Cq6vZMMO.js
new file mode 100644
index 00000000..eede4231
--- /dev/null
+++ b/previews/PR126/assets/chunks/theme.Cq6vZMMO.js
@@ -0,0 +1,2 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/chunks/VPLocalSearchBox.BFjx05Wg.js","assets/chunks/framework.CojPSOJE.js"])))=>i.map(i=>d[i]);
+import{d as m,o,c,r as u,n as I,a as z,t as w,b as g,w as v,e as h,T as de,_ as $,u as Ge,i as je,f as ze,g as fe,h as y,j as p,k as i,l as K,m as re,p as T,q as F,s as Z,v as O,x as pe,y as ve,z as Ke,A as Re,B as R,F as M,C as H,D as Ve,E as x,G as k,H as E,I as Te,J as ee,K as j,L as q,M as We,N as Ne,O as ie,P as he,Q as we,R as te,S as qe,U as Je,V as Ye,W as Ie,X as me,Y as Xe,Z as Qe,$ as Ze,a0 as xe,a1 as Me,a2 as et,a3 as tt,a4 as nt}from"./framework.CojPSOJE.js";const st=m({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(a){return(e,t)=>(o(),c("span",{class:I(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[z(w(e.text),1)])],2))}}),at={key:0,class:"VPBackdrop"},ot=m({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(a){return(e,t)=>(o(),g(de,{name:"fade"},{default:v(()=>[e.show?(o(),c("div",at)):h("",!0)]),_:1}))}}),rt=$(ot,[["__scopeId","data-v-b06cdb19"]]),V=Ge;function it(a,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(a,e):(a(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(a){return/^\//.test(a)?a:`/${a}`}function _e(a){const{pathname:e,search:t,hash:s,protocol:n}=new URL(a,"http://a.com");if(je(a)||a.startsWith("#")||!n.startsWith("http")||!ze(e))return a;const{site:r}=V(),l=e.endsWith("/")||e.endsWith(".html")?a:a.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,r.value.cleanUrls?"":".html")}${t}${s}`);return fe(l)}function Y({correspondingLink:a=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:r}=V(),l=y(()=>{var f,b;return{label:(f=e.value.locales[t.value])==null?void 0:f.label,link:((b=e.value.locales[t.value])==null?void 0:b.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([f,b])=>l.value.label===b.label?[]:{text:b.label,link:lt(b.link||(f==="root"?"/":`/${f}/`),n.value.i18nRouting!==!1&&a,s.value.relativePath.slice(l.value.link.length-1),!e.value.cleanUrls)+r.value})),currentLang:l}}function lt(a,e,t,s){return e?a.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):a}const ut={class:"NotFound"},ct={class:"code"},dt={class:"title"},ft={class:"quote"},pt={class:"action"},vt=["href","aria-label"],ht=m({__name:"NotFound",setup(a){const{theme:e}=V(),{currentLang:t}=Y();return(s,n)=>{var r,l,d,f,b;return o(),c("div",ut,[p("p",ct,w(((r=i(e).notFound)==null?void 0:r.code)??"404"),1),p("h1",dt,w(((l=i(e).notFound)==null?void 0:l.title)??"PAGE NOT FOUND"),1),n[0]||(n[0]=p("div",{class:"divider"},null,-1)),p("blockquote",ft,w(((d=i(e).notFound)==null?void 0:d.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",pt,[p("a",{class:"link",href:i(fe)(i(t).link),"aria-label":((f=i(e).notFound)==null?void 0:f.linkLabel)??"go to home"},w(((b=i(e).notFound)==null?void 0:b.linkText)??"Take me home"),9,vt)])])}}}),mt=$(ht,[["__scopeId","data-v-951cab6c"]]);function Ae(a,e){if(Array.isArray(a))return X(a);if(a==null)return[];e=le(e);const t=Object.keys(a).sort((n,r)=>r.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?a[t]:[];return Array.isArray(s)?X(s):X(s.items,s.base)}function _t(a){const e=[];let t=0;for(const s in a){const n=a[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function bt(a){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(a),e}function ue(a,e){return Array.isArray(e)?e.some(t=>ue(a,t)):K(a,e.link)?!0:e.items?ue(a,e.items):!1}function X(a,e){return[...a].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=X(s.items,n)),s})}function U(){const{frontmatter:a,page:e,theme:t}=V(),s=re("(min-width: 960px)"),n=T(!1),r=y(()=>{const C=t.value.sidebar,N=e.value.relativePath;return C?Ae(C,N):[]}),l=T(r.value);F(r,(C,N)=>{JSON.stringify(C)!==JSON.stringify(N)&&(l.value=r.value)});const d=y(()=>a.value.sidebar!==!1&&l.value.length>0&&a.value.layout!=="home"),f=y(()=>b?a.value.aside==null?t.value.aside==="left":a.value.aside==="left":!1),b=y(()=>a.value.layout==="home"?!1:a.value.aside!=null?!!a.value.aside:t.value.aside!==!1),L=y(()=>d.value&&s.value),_=y(()=>d.value?_t(l.value):[]);function P(){n.value=!0}function S(){n.value=!1}function A(){n.value?S():P()}return{isOpen:n,sidebar:l,sidebarGroups:_,hasSidebar:d,hasAside:b,leftAside:f,isSidebarEnabled:L,open:P,close:S,toggle:A}}function kt(a,e){let t;Z(()=>{t=a.value?document.activeElement:void 0}),O(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&a.value&&(e(),t==null||t.focus())}}function gt(a){const{page:e,hash:t}=V(),s=T(!1),n=y(()=>a.value.collapsed!=null),r=y(()=>!!a.value.link),l=T(!1),d=()=>{l.value=K(e.value.relativePath,a.value.link)};F([e,a,t],d),O(d);const f=y(()=>l.value?!0:a.value.items?ue(e.value.relativePath,a.value.items):!1),b=y(()=>!!(a.value.items&&a.value.items.length));Z(()=>{s.value=!!(n.value&&a.value.collapsed)}),ve(()=>{(l.value||f.value)&&(s.value=!1)});function L(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:r,isActiveLink:l,hasActiveLink:f,hasChildren:b,toggle:L}}function $t(){const{hasSidebar:a}=U(),e=re("(min-width: 960px)"),t=re("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:a.value?t.value:e.value)}}const ce=[];function Ce(a){return typeof a.outline=="object"&&!Array.isArray(a.outline)&&a.outline.label||a.outlineTitle||"On this page"}function be(a){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:yt(t),link:"#"+t.id,level:s}});return Pt(e,a)}function yt(a){let e="";for(const t of a.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Pt(a,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;return Vt(a,s,n)}function St(a,e){const{isAsideEnabled:t}=$t(),s=it(r,100);let n=null;O(()=>{requestAnimationFrame(r),window.addEventListener("scroll",s)}),Ke(()=>{l(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function r(){if(!t.value)return;const d=window.scrollY,f=window.innerHeight,b=document.body.offsetHeight,L=Math.abs(d+f-b)<1,_=ce.map(({element:S,link:A})=>({link:A,top:Lt(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,A)=>S.top-A.top);if(!_.length){l(null);return}if(d<1){l(null);return}if(L){l(_[_.length-1].link);return}let P=null;for(const{link:S,top:A}of _){if(A>d+Re()+4)break;P=S}l(P)}function l(d){n&&n.classList.remove("active"),d==null?n=null:n=a.value.querySelector(`a[href="${decodeURIComponent(d)}"]`);const f=n;f?(f.classList.add("active"),e.value.style.top=f.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(a){let e=0;for(;a!==document.body;){if(a===null)return NaN;e+=a.offsetTop,a=a.offsetParent}return e}function Vt(a,e,t){ce.length=0;const s=[],n=[];return a.forEach(r=>{const l={...r,children:[]};let d=n[n.length-1];for(;d&&d.level>=l.level;)n.pop(),d=n[n.length-1];if(l.element.classList.contains("ignore-header")||d&&"shouldIgnore"in d){n.push({level:l.level,shouldIgnore:!0});return}l.level>t||l.level{const n=R("VPDocOutlineItem",!0);return o(),c("ul",{class:I(["VPDocOutlineItem",t.root?"root":"nested"])},[(o(!0),c(M,null,H(t.headers,({children:r,link:l,title:d})=>(o(),c("li",null,[p("a",{class:"outline-link",href:l,onClick:e,title:d},w(d),9,Tt),r!=null&&r.length?(o(),g(n,{key:0,headers:r},null,8,["headers"])):h("",!0)]))),256))],2)}}}),He=$(Nt,[["__scopeId","data-v-3f927ebe"]]),wt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Mt=m({__name:"VPDocAsideOutline",setup(a){const{frontmatter:e,theme:t}=V(),s=Ve([]);x(()=>{s.value=be(e.value.outline??t.value.outline)});const n=T(),r=T();return St(n,r),(l,d)=>(o(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:I(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",wt,[p("div",{class:"outline-marker",ref_key:"marker",ref:r},null,512),p("div",It,w(i(Ce)(i(t))),1),k(He,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),At=$(Mt,[["__scopeId","data-v-b38bf2ff"]]),Ct={class:"VPDocAsideCarbonAds"},Ht=m({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(a){const e=()=>null;return(t,s)=>(o(),c("div",Ct,[k(i(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Bt={class:"VPDocAside"},Et=m({__name:"VPDocAside",setup(a){const{theme:e}=V();return(t,s)=>(o(),c("div",Bt,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),k(At),u(t.$slots,"aside-outline-after",{},void 0,!0),s[0]||(s[0]=p("div",{class:"spacer"},null,-1)),u(t.$slots,"aside-ads-before",{},void 0,!0),i(e).carbonAds?(o(),g(Ht,{key:0,"carbon-ads":i(e).carbonAds},null,8,["carbon-ads"])):h("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Dt=$(Et,[["__scopeId","data-v-6d7b3c46"]]);function Ft(){const{theme:a,page:e}=V();return y(()=>{const{text:t="Edit this page",pattern:s=""}=a.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Ot(){const{page:a,theme:e,frontmatter:t}=V();return y(()=>{var b,L,_,P,S,A,C,N;const s=Ae(e.value.sidebar,a.value.relativePath),n=bt(s),r=Ut(n,B=>B.link.replace(/[?#].*$/,"")),l=r.findIndex(B=>K(a.value.relativePath,B.link)),d=((b=e.value.docFooter)==null?void 0:b.prev)===!1&&!t.value.prev||t.value.prev===!1,f=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((_=r[l-1])==null?void 0:_.docFooterText)??((P=r[l-1])==null?void 0:P.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((S=r[l-1])==null?void 0:S.link)},next:f?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=r[l+1])==null?void 0:A.docFooterText)??((C=r[l+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=r[l+1])==null?void 0:N.link)}}})}function Ut(a,e){const t=new Set;return a.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=m({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Te.test(e.href)||e.target==="_blank");return(n,r)=>(o(),g(E(t.value),{class:I(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?i(_e)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[u(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=m({__name:"VPDocFooterLastUpdated",setup(a){const{theme:e,page:t,lang:s}=V(),n=y(()=>new Date(t.value.lastUpdated)),r=y(()=>n.value.toISOString()),l=T("");return O(()=>{Z(()=>{var d,f,b;l.value=new Intl.DateTimeFormat((f=(d=e.value.lastUpdated)==null?void 0:d.formatOptions)!=null&&f.forceLocale?s.value:void 0,((b=e.value.lastUpdated)==null?void 0:b.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(d,f)=>{var b;return o(),c("p",Gt,[z(w(((b=i(e).lastUpdated)==null?void 0:b.text)||i(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:r.value},w(l.value),9,jt)])}}}),Kt=$(zt,[["__scopeId","data-v-475f71b8"]]),Rt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},qt={key:0,class:"edit-link"},Jt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt={class:"pager"},Qt=["innerHTML"],Zt=["innerHTML"],xt={class:"pager"},en=["innerHTML"],tn=["innerHTML"],nn=m({__name:"VPDocFooter",setup(a){const{theme:e,page:t,frontmatter:s}=V(),n=Ft(),r=Ot(),l=y(()=>e.value.editLink&&s.value.editLink!==!1),d=y(()=>t.value.lastUpdated),f=y(()=>l.value||d.value||r.value.prev||r.value.next);return(b,L)=>{var _,P,S,A;return f.value?(o(),c("footer",Rt,[u(b.$slots,"doc-footer-before",{},void 0,!0),l.value||d.value?(o(),c("div",Wt,[l.value?(o(),c("div",qt,[k(D,{class:"edit-link-button",href:i(n).url,"no-icon":!0},{default:v(()=>[L[0]||(L[0]=p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),z(" "+w(i(n).text),1)]),_:1},8,["href"])])):h("",!0),d.value?(o(),c("div",Jt,[k(Kt)])):h("",!0)])):h("",!0),(_=i(r).prev)!=null&&_.link||(P=i(r).next)!=null&&P.link?(o(),c("nav",Yt,[L[1]||(L[1]=p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),p("div",Xt,[(S=i(r).prev)!=null&&S.link?(o(),g(D,{key:0,class:"pager-link prev",href:i(r).prev.link},{default:v(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,Qt),p("span",{class:"title",innerHTML:i(r).prev.text},null,8,Zt)]}),_:1},8,["href"])):h("",!0)]),p("div",xt,[(A=i(r).next)!=null&&A.link?(o(),g(D,{key:0,class:"pager-link next",href:i(r).next.link},{default:v(()=>{var C;return[p("span",{class:"desc",innerHTML:((C=i(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,en),p("span",{class:"title",innerHTML:i(r).next.text},null,8,tn)]}),_:1},8,["href"])):h("",!0)])])):h("",!0)])):h("",!0)}}}),sn=$(nn,[["__scopeId","data-v-4f9813fa"]]),an={class:"container"},on={class:"aside-container"},rn={class:"aside-content"},ln={class:"content"},un={class:"content-container"},cn={class:"main"},dn=m({__name:"VPDoc",setup(a){const{theme:e}=V(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:r}=U(),l=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(d,f)=>{const b=R("Content");return o(),c("div",{class:I(["VPDoc",{"has-sidebar":i(s),"has-aside":i(n)}])},[u(d.$slots,"doc-top",{},void 0,!0),p("div",an,[i(n)?(o(),c("div",{key:0,class:I(["aside",{"left-aside":i(r)}])},[f[0]||(f[0]=p("div",{class:"aside-curtain"},null,-1)),p("div",on,[p("div",rn,[k(Dt,null,{"aside-top":v(()=>[u(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):h("",!0),p("div",ln,[p("div",un,[u(d.$slots,"doc-before",{},void 0,!0),p("main",cn,[k(b,{class:I(["vp-doc",[l.value,i(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),k(sn,null,{"doc-footer-before":v(()=>[u(d.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(d.$slots,"doc-after",{},void 0,!0)])])]),u(d.$slots,"doc-bottom",{},void 0,!0)],2)}}}),fn=$(dn,[["__scopeId","data-v-83890dd9"]]),pn=m({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(a){const e=a,t=y(()=>e.href&&Te.test(e.href)),s=y(()=>e.tag||(e.href?"a":"button"));return(n,r)=>(o(),g(E(s.value),{class:I(["VPButton",[n.size,n.theme]]),href:n.href?i(_e)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[z(w(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),vn=$(pn,[["__scopeId","data-v-906d7fb4"]]),hn=["src","alt"],mn=m({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(a){return(e,t)=>{const s=R("VPImage",!0);return e.image?(o(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(o(),c("img",j({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:i(fe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,hn)):(o(),c(M,{key:1},[k(s,j({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),k(s,j({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):h("",!0)}}}),Q=$(mn,[["__scopeId","data-v-35a7d0b8"]]),_n={class:"container"},bn={class:"main"},kn={key:0,class:"name"},gn=["innerHTML"],$n=["innerHTML"],yn=["innerHTML"],Pn={key:0,class:"actions"},Sn={key:0,class:"image"},Ln={class:"image-container"},Vn=m({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(a){const e=q("hero-image-slot-exists");return(t,s)=>(o(),c("div",{class:I(["VPHero",{"has-image":t.image||i(e)}])},[p("div",_n,[p("div",bn,[u(t.$slots,"home-hero-info-before",{},void 0,!0),u(t.$slots,"home-hero-info",{},()=>[t.name?(o(),c("h1",kn,[p("span",{innerHTML:t.name,class:"clip"},null,8,gn)])):h("",!0),t.text?(o(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,$n)):h("",!0),t.tagline?(o(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,yn)):h("",!0)],!0),u(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(o(),c("div",Pn,[(o(!0),c(M,null,H(t.actions,n=>(o(),c("div",{key:n.link,class:"action"},[k(vn,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):h("",!0),u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||i(e)?(o(),c("div",Sn,[p("div",Ln,[s[0]||(s[0]=p("div",{class:"image-bg"},null,-1)),u(t.$slots,"home-hero-image",{},()=>[t.image?(o(),g(Q,{key:0,class:"image-src",image:t.image},null,8,["image"])):h("",!0)],!0)])])):h("",!0)])],2))}}),Tn=$(Vn,[["__scopeId","data-v-955009fc"]]),Nn=m({__name:"VPHomeHero",setup(a){const{frontmatter:e}=V();return(t,s)=>i(e).hero?(o(),g(Tn,{key:0,class:"VPHomeHero",name:i(e).hero.name,text:i(e).hero.text,tagline:i(e).hero.tagline,image:i(e).hero.image,actions:i(e).hero.actions},{"home-hero-info-before":v(()=>[u(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[u(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[u(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):h("",!0)}}),wn={class:"box"},In={key:0,class:"icon"},Mn=["innerHTML"],An=["innerHTML"],Cn=["innerHTML"],Hn={key:4,class:"link-text"},Bn={class:"link-text-value"},En=m({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(a){return(e,t)=>(o(),g(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",wn,[typeof e.icon=="object"&&e.icon.wrap?(o(),c("div",In,[k(Q,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(o(),g(Q,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(o(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Mn)):h("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,An),e.details?(o(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Cn)):h("",!0),e.linkText?(o(),c("div",Hn,[p("p",Bn,[z(w(e.linkText)+" ",1),t[0]||(t[0]=p("span",{class:"vpi-arrow-right link-text-icon"},null,-1))])])):h("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Dn=$(En,[["__scopeId","data-v-f5e9645b"]]),Fn={key:0,class:"VPFeatures"},On={class:"container"},Un={class:"items"},Gn=m({__name:"VPFeatures",props:{features:{}},setup(a){const e=a,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(o(),c("div",Fn,[p("div",On,[p("div",Un,[(o(!0),c(M,null,H(s.features,r=>(o(),c("div",{key:r.title,class:I(["item",[t.value]])},[k(Dn,{icon:r.icon,title:r.title,details:r.details,link:r.link,"link-text":r.linkText,rel:r.rel,target:r.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):h("",!0)}}),jn=$(Gn,[["__scopeId","data-v-d0a190d7"]]),zn=m({__name:"VPHomeFeatures",setup(a){const{frontmatter:e}=V();return(t,s)=>i(e).features?(o(),g(jn,{key:0,class:"VPHomeFeatures",features:i(e).features},null,8,["features"])):h("",!0)}}),Kn=m({__name:"VPHomeContent",setup(a){const{width:e}=We({initialWidth:0,includeScrollbar:!1});return(t,s)=>(o(),c("div",{class:"vp-doc container",style:Ne(i(e)?{"--vp-offset":`calc(50% - ${i(e)/2}px)`}:{})},[u(t.$slots,"default",{},void 0,!0)],4))}}),Rn=$(Kn,[["__scopeId","data-v-7a48a447"]]),Wn={class:"VPHome"},qn=m({__name:"VPHome",setup(a){const{frontmatter:e}=V();return(t,s)=>{const n=R("Content");return o(),c("div",Wn,[u(t.$slots,"home-hero-before",{},void 0,!0),k(Nn,null,{"home-hero-info-before":v(()=>[u(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(t.$slots,"home-hero-after",{},void 0,!0),u(t.$slots,"home-features-before",{},void 0,!0),k(zn),u(t.$slots,"home-features-after",{},void 0,!0),i(e).markdownStyles!==!1?(o(),g(Rn,{key:0},{default:v(()=>[k(n)]),_:1})):(o(),g(n,{key:1}))])}}}),Jn=$(qn,[["__scopeId","data-v-cbb6ec48"]]),Yn={},Xn={class:"VPPage"};function Qn(a,e){const t=R("Content");return o(),c("div",Xn,[u(a.$slots,"page-top"),k(t),u(a.$slots,"page-bottom")])}const Zn=$(Yn,[["render",Qn]]),xn=m({__name:"VPContent",setup(a){const{page:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>(o(),c("div",{class:I(["VPContent",{"has-sidebar":i(s),"is-home":i(t).layout==="home"}]),id:"VPContent"},[i(e).isNotFound?u(n.$slots,"not-found",{key:0},()=>[k(mt)],!0):i(t).layout==="page"?(o(),g(Zn,{key:1},{"page-top":v(()=>[u(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):i(t).layout==="home"?(o(),g(Jn,{key:2},{"home-hero-before":v(()=>[u(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[u(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):i(t).layout&&i(t).layout!=="doc"?(o(),g(E(i(t).layout),{key:3})):(o(),g(fn,{key:4},{"doc-top":v(()=>[u(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),es=$(xn,[["__scopeId","data-v-91765379"]]),ts={class:"container"},ns=["innerHTML"],ss=["innerHTML"],as=m({__name:"VPFooter",setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U();return(n,r)=>i(e).footer&&i(t).footer!==!1?(o(),c("footer",{key:0,class:I(["VPFooter",{"has-sidebar":i(s)}])},[p("div",ts,[i(e).footer.message?(o(),c("p",{key:0,class:"message",innerHTML:i(e).footer.message},null,8,ns)):h("",!0),i(e).footer.copyright?(o(),c("p",{key:1,class:"copyright",innerHTML:i(e).footer.copyright},null,8,ss)):h("",!0)])],2)):h("",!0)}}),os=$(as,[["__scopeId","data-v-c970a860"]]);function rs(){const{theme:a,frontmatter:e}=V(),t=Ve([]),s=y(()=>t.value.length>0);return x(()=>{t.value=be(e.value.outline??a.value.outline)}),{headers:t,hasLocalNav:s}}const is={class:"menu-text"},ls={class:"header"},us={class:"outline"},cs=m({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(a){const e=a,{theme:t}=V(),s=T(!1),n=T(0),r=T(),l=T();function d(_){var P;(P=r.value)!=null&&P.contains(_.target)||(s.value=!1)}F(s,_=>{if(_){document.addEventListener("click",d);return}document.removeEventListener("click",d)}),ie("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function f(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function b(_){_.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),he(()=>{s.value=!1}))}function L(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(_,P)=>(o(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ne({"--vp-vh":n.value+"px"}),ref_key:"main",ref:r},[_.headers.length>0?(o(),c("button",{key:0,onClick:f,class:I({open:s.value})},[p("span",is,w(i(Ce)(i(t))),1),P[0]||(P[0]=p("span",{class:"vpi-chevron-right icon"},null,-1))],2)):(o(),c("button",{key:1,onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)),k(de,{name:"flyout"},{default:v(()=>[s.value?(o(),c("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:b},[p("div",ls,[p("a",{class:"top-link",href:"#",onClick:L},w(i(t).returnToTopLabel||"Return to top"),1)]),p("div",us,[k(He,{headers:_.headers},null,8,["headers"])])],512)):h("",!0)]),_:1})],4))}}),ds=$(cs,[["__scopeId","data-v-bc9dc845"]]),fs={class:"container"},ps=["aria-expanded"],vs={class:"menu-text"},hs=m({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(a){const{theme:e,frontmatter:t}=V(),{hasSidebar:s}=U(),{headers:n}=rs(),{y:r}=we(),l=T(0);O(()=>{l.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=be(t.value.outline??e.value.outline)});const d=y(()=>n.value.length===0),f=y(()=>d.value&&!s.value),b=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:d.value,fixed:f.value}));return(L,_)=>i(t).layout!=="home"&&(!f.value||i(r)>=l.value)?(o(),c("div",{key:0,class:I(b.value)},[p("div",fs,[i(s)?(o(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:_[0]||(_[0]=P=>L.$emit("open-menu"))},[_[1]||(_[1]=p("span",{class:"vpi-align-left menu-icon"},null,-1)),p("span",vs,w(i(e).sidebarMenuLabel||"Menu"),1)],8,ps)):h("",!0),k(ds,{headers:i(n),navHeight:l.value},null,8,["headers","navHeight"])])],2)):h("",!0)}}),ms=$(hs,[["__scopeId","data-v-070ab83d"]]);function _s(){const a=T(!1);function e(){a.value=!0,window.addEventListener("resize",n)}function t(){a.value=!1,window.removeEventListener("resize",n)}function s(){a.value?t():e()}function n(){window.outerWidth>=768&&t()}const r=ee();return F(()=>r.path,t),{isScreenOpen:a,openScreen:e,closeScreen:t,toggleScreen:s}}const bs={},ks={class:"VPSwitch",type:"button",role:"switch"},gs={class:"check"},$s={key:0,class:"icon"};function ys(a,e){return o(),c("button",ks,[p("span",gs,[a.$slots.default?(o(),c("span",$s,[u(a.$slots,"default",{},void 0,!0)])):h("",!0)])])}const Ps=$(bs,[["render",ys],["__scopeId","data-v-4a1c76db"]]),Ss=m({__name:"VPSwitchAppearance",setup(a){const{isDark:e,theme:t}=V(),s=q("toggle-appearance",()=>{e.value=!e.value}),n=T("");return ve(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(r,l)=>(o(),g(Ps,{title:n.value,class:"VPSwitchAppearance","aria-checked":i(e),onClick:i(s)},{default:v(()=>l[0]||(l[0]=[p("span",{class:"vpi-sun sun"},null,-1),p("span",{class:"vpi-moon moon"},null,-1)])),_:1},8,["title","aria-checked","onClick"]))}}),ke=$(Ss,[["__scopeId","data-v-e40a8bb6"]]),Ls={key:0,class:"VPNavBarAppearance"},Vs=m({__name:"VPNavBarAppearance",setup(a){const{site:e}=V();return(t,s)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",Ls,[k(ke)])):h("",!0)}}),Ts=$(Vs,[["__scopeId","data-v-af096f4a"]]),ge=T();let Be=!1,oe=0;function Ns(a){const e=T(!1);if(te){!Be&&ws(),oe++;const t=F(ge,s=>{var n,r,l;s===a.el.value||(n=a.el.value)!=null&&n.contains(s)?(e.value=!0,(r=a.onFocus)==null||r.call(a)):(e.value=!1,(l=a.onBlur)==null||l.call(a))});pe(()=>{t(),oe--,oe||Is()})}return qe(e)}function ws(){document.addEventListener("focusin",Ee),Be=!0,ge.value=document.activeElement}function Is(){document.removeEventListener("focusin",Ee)}function Ee(){ge.value=document.activeElement}const Ms={class:"VPMenuLink"},As=["innerHTML"],Cs=m({__name:"VPMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,s)=>(o(),c("div",Ms,[k(D,{class:I({active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,As)]),_:1},8,["class","href","target","rel","no-icon"])]))}}),ne=$(Cs,[["__scopeId","data-v-acbfed09"]]),Hs={class:"VPMenuGroup"},Bs={key:0,class:"title"},Es=m({__name:"VPMenuGroup",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),c("div",Hs,[e.text?(o(),c("p",Bs,w(e.text),1)):h("",!0),(o(!0),c(M,null,H(e.items,s=>(o(),c(M,null,["link"in s?(o(),g(ne,{key:0,item:s},null,8,["item"])):h("",!0)],64))),256))]))}}),Ds=$(Es,[["__scopeId","data-v-48c802d0"]]),Fs={class:"VPMenu"},Os={key:0,class:"items"},Us=m({__name:"VPMenu",props:{items:{}},setup(a){return(e,t)=>(o(),c("div",Fs,[e.items?(o(),c("div",Os,[(o(!0),c(M,null,H(e.items,s=>(o(),c(M,{key:JSON.stringify(s)},["link"in s?(o(),g(ne,{key:0,item:s},null,8,["item"])):"component"in s?(o(),g(E(s.component),j({key:1,ref_for:!0},s.props),null,16)):(o(),g(Ds,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):h("",!0),u(e.$slots,"default",{},void 0,!0)]))}}),Gs=$(Us,[["__scopeId","data-v-7dd3104a"]]),js=["aria-expanded","aria-label"],zs={key:0,class:"text"},Ks=["innerHTML"],Rs={key:1,class:"vpi-more-horizontal icon"},Ws={class:"menu"},qs=m({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(a){const e=T(!1),t=T();Ns({el:t,onBlur:s});function s(){e.value=!1}return(n,r)=>(o(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:r[1]||(r[1]=l=>e.value=!0),onMouseleave:r[2]||(r[2]=l=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:r[0]||(r[0]=l=>e.value=!e.value)},[n.button||n.icon?(o(),c("span",zs,[n.icon?(o(),c("span",{key:0,class:I([n.icon,"option-icon"])},null,2)):h("",!0),n.button?(o(),c("span",{key:1,innerHTML:n.button},null,8,Ks)):h("",!0),r[3]||(r[3]=p("span",{class:"vpi-chevron-down text-icon"},null,-1))])):(o(),c("span",Rs))],8,js),p("div",Ws,[k(Gs,{items:n.items},{default:v(()=>[u(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(qs,[["__scopeId","data-v-04f5c5e9"]]),Js=["href","aria-label","innerHTML"],Ys=m({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(a){const e=a,t=T();O(async()=>{var r;await he();const n=(r=t.value)==null?void 0:r.children[0];n instanceof HTMLElement&&n.className.startsWith("vpi-social-")&&(getComputedStyle(n).maskImage||getComputedStyle(n).webkitMaskImage)==="none"&&n.style.setProperty("--icon",`url('https://api.iconify.design/simple-icons/${e.icon}.svg')`)});const s=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,r)=>(o(),c("a",{ref_key:"el",ref:t,class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:s.value},null,8,Js))}}),Xs=$(Ys,[["__scopeId","data-v-d26d30cb"]]),Qs={class:"VPSocialLinks"},Zs=m({__name:"VPSocialLinks",props:{links:{}},setup(a){return(e,t)=>(o(),c("div",Qs,[(o(!0),c(M,null,H(e.links,({link:s,icon:n,ariaLabel:r})=>(o(),g(Xs,{key:s,icon:n,link:s,ariaLabel:r},null,8,["icon","link","ariaLabel"]))),128))]))}}),ye=$(Zs,[["__scopeId","data-v-ee7a9424"]]),xs={key:0,class:"group translations"},ea={class:"trans-title"},ta={key:1,class:"group"},na={class:"item appearance"},sa={class:"label"},aa={class:"appearance-action"},oa={key:2,class:"group"},ra={class:"item social-links"},ia=m({__name:"VPNavBarExtra",setup(a){const{site:e,theme:t}=V(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),r=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(l,d)=>r.value?(o(),g($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[i(s).length&&i(n).label?(o(),c("div",xs,[p("p",ea,w(i(n).label),1),(o(!0),c(M,null,H(i(s),f=>(o(),g(ne,{key:f.link,item:f},null,8,["item"]))),128))])):h("",!0),i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",ta,[p("div",na,[p("p",sa,w(i(t).darkModeSwitchLabel||"Appearance"),1),p("div",aa,[k(ke)])])])):h("",!0),i(t).socialLinks?(o(),c("div",oa,[p("div",ra,[k(ye,{class:"social-links-list",links:i(t).socialLinks},null,8,["links"])])])):h("",!0)]),_:1})):h("",!0)}}),la=$(ia,[["__scopeId","data-v-925effce"]]),ua=["aria-expanded"],ca=m({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(a){return(e,t)=>(o(),c("button",{type:"button",class:I(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},t[1]||(t[1]=[p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)]),10,ua))}}),da=$(ca,[["__scopeId","data-v-5dea55bf"]]),fa=["innerHTML"],pa=m({__name:"VPNavBarMenuLink",props:{item:{}},setup(a){const{page:e}=V();return(t,s)=>(o(),g(D,{class:I({VPNavBarMenuLink:!0,active:i(K)(i(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,fa)]),_:1},8,["class","href","target","rel","no-icon"]))}}),va=$(pa,[["__scopeId","data-v-956ec74c"]]),ha=m({__name:"VPNavBarMenuGroup",props:{item:{}},setup(a){const e=a,{page:t}=V(),s=r=>"component"in r?!1:"link"in r?K(t.value.relativePath,r.link,!!e.item.activeMatch):r.items.some(s),n=y(()=>s(e.item));return(r,l)=>(o(),g($e,{class:I({VPNavBarMenuGroup:!0,active:i(K)(i(t).relativePath,r.item.activeMatch,!!r.item.activeMatch)||n.value}),button:r.item.text,items:r.item.items},null,8,["class","button","items"]))}}),ma={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},_a=m({__name:"VPNavBarMenu",setup(a){const{theme:e}=V();return(t,s)=>i(e).nav?(o(),c("nav",ma,[s[0]||(s[0]=p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),(o(!0),c(M,null,H(i(e).nav,n=>(o(),c(M,{key:JSON.stringify(n)},["link"in n?(o(),g(va,{key:0,item:n},null,8,["item"])):"component"in n?(o(),g(E(n.component),j({key:1,ref_for:!0},n.props),null,16)):(o(),g(ha,{key:2,item:n},null,8,["item"]))],64))),128))])):h("",!0)}}),ba=$(_a,[["__scopeId","data-v-e6d46098"]]);function ka(a){const{localeIndex:e,theme:t}=V();function s(n){var A,C,N;const r=n.split("."),l=(A=t.value.search)==null?void 0:A.options,d=l&&typeof l=="object",f=d&&((N=(C=l.locales)==null?void 0:C[e.value])==null?void 0:N.translations)||null,b=d&&l.translations||null;let L=f,_=b,P=a;const S=r.pop();for(const B of r){let G=null;const W=P==null?void 0:P[B];W&&(G=P=W);const se=_==null?void 0:_[B];se&&(G=_=se);const ae=L==null?void 0:L[B];ae&&(G=L=ae),W||(P=G),se||(_=G),ae||(L=G)}return(L==null?void 0:L[S])??(_==null?void 0:_[S])??(P==null?void 0:P[S])??""}return s}const ga=["aria-label"],$a={class:"DocSearch-Button-Container"},ya={class:"DocSearch-Button-Placeholder"},Pe=m({__name:"VPNavBarSearchButton",setup(a){const t=ka({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(o(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":i(t)("button.buttonAriaLabel")},[p("span",$a,[n[0]||(n[0]=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1)),p("span",ya,w(i(t)("button.buttonText")),1)]),n[1]||(n[1]=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1))],8,ga))}}),Pa={class:"VPNavBarSearch"},Sa={id:"local-search"},La={key:1,id:"docsearch"},Va=m({__name:"VPNavBarSearch",setup(a){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.BFjx05Wg.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=V(),n=T(!1),r=T(!1);O(()=>{});function l(){n.value||(n.value=!0,setTimeout(d,16))}function d(){const _=new Event("keydown");_.key="k",_.metaKey=!0,window.dispatchEvent(_),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||d()},16)}function f(_){const P=_.target,S=P.tagName;return P.isContentEditable||S==="INPUT"||S==="SELECT"||S==="TEXTAREA"}const b=T(!1);ie("k",_=>{(_.ctrlKey||_.metaKey)&&(_.preventDefault(),b.value=!0)}),ie("/",_=>{f(_)||(_.preventDefault(),b.value=!0)});const L="local";return(_,P)=>{var S;return o(),c("div",Pa,[i(L)==="local"?(o(),c(M,{key:0},[b.value?(o(),g(i(e),{key:0,onClose:P[0]||(P[0]=A=>b.value=!1)})):h("",!0),p("div",Sa,[k(Pe,{onClick:P[1]||(P[1]=A=>b.value=!0)})])],64)):i(L)==="algolia"?(o(),c(M,{key:1},[n.value?(o(),g(i(t),{key:0,algolia:((S=i(s).search)==null?void 0:S.options)??i(s).algolia,onVnodeBeforeMount:P[2]||(P[2]=A=>r.value=!0)},null,8,["algolia"])):h("",!0),r.value?h("",!0):(o(),c("div",La,[k(Pe,{onClick:l})]))],64)):h("",!0)])}}}),Ta=m({__name:"VPNavBarSocialLinks",setup(a){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(o(),g(ye,{key:0,class:"VPNavBarSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),Na=$(Ta,[["__scopeId","data-v-164c457f"]]),wa=["href","rel","target"],Ia=["innerHTML"],Ma={key:2},Aa=m({__name:"VPNavBarTitle",setup(a){const{site:e,theme:t}=V(),{hasSidebar:s}=U(),{currentLang:n}=Y(),r=y(()=>{var f;return typeof t.value.logoLink=="string"?t.value.logoLink:(f=t.value.logoLink)==null?void 0:f.link}),l=y(()=>{var f;return typeof t.value.logoLink=="string"||(f=t.value.logoLink)==null?void 0:f.rel}),d=y(()=>{var f;return typeof t.value.logoLink=="string"||(f=t.value.logoLink)==null?void 0:f.target});return(f,b)=>(o(),c("div",{class:I(["VPNavBarTitle",{"has-sidebar":i(s)}])},[p("a",{class:"title",href:r.value??i(_e)(i(n).link),rel:l.value,target:d.value},[u(f.$slots,"nav-bar-title-before",{},void 0,!0),i(t).logo?(o(),g(Q,{key:0,class:"logo",image:i(t).logo},null,8,["image"])):h("",!0),i(t).siteTitle?(o(),c("span",{key:1,innerHTML:i(t).siteTitle},null,8,Ia)):i(t).siteTitle===void 0?(o(),c("span",Ma,w(i(e).title),1)):h("",!0),u(f.$slots,"nav-bar-title-after",{},void 0,!0)],8,wa)],2))}}),Ca=$(Aa,[["__scopeId","data-v-0f4f798b"]]),Ha={class:"items"},Ba={class:"title"},Ea=m({__name:"VPNavBarTranslations",setup(a){const{theme:e}=V(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,r)=>i(t).length&&i(s).label?(o(),g($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:i(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",Ha,[p("p",Ba,w(i(s).label),1),(o(!0),c(M,null,H(i(t),l=>(o(),g(ne,{key:l.link,item:l},null,8,["item"]))),128))])]),_:1},8,["label"])):h("",!0)}}),Da=$(Ea,[["__scopeId","data-v-c80d9ad0"]]),Fa={class:"wrapper"},Oa={class:"container"},Ua={class:"title"},Ga={class:"content"},ja={class:"content-body"},za=m({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(a){const e=a,{y:t}=we(),{hasSidebar:s}=U(),{frontmatter:n}=V(),r=T({});return ve(()=>{r.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(l,d)=>(o(),c("div",{class:I(["VPNavBar",r.value])},[p("div",Fa,[p("div",Oa,[p("div",Ua,[k(Ca,null,{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",Ga,[p("div",ja,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),k(Va,{class:"search"}),k(ba,{class:"menu"}),k(Da,{class:"translations"}),k(Ts,{class:"appearance"}),k(Na,{class:"social-links"}),k(la,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),k(da,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=f=>l.$emit("toggle-screen"))},null,8,["active"])])])])]),d[1]||(d[1]=p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1))],2))}}),Ka=$(za,[["__scopeId","data-v-822684d1"]]),Ra={key:0,class:"VPNavScreenAppearance"},Wa={class:"text"},qa=m({__name:"VPNavScreenAppearance",setup(a){const{site:e,theme:t}=V();return(s,n)=>i(e).appearance&&i(e).appearance!=="force-dark"&&i(e).appearance!=="force-auto"?(o(),c("div",Ra,[p("p",Wa,w(i(t).darkModeSwitchLabel||"Appearance"),1),k(ke)])):h("",!0)}}),Ja=$(qa,[["__scopeId","data-v-ffb44008"]]),Ya=["innerHTML"],Xa=m({__name:"VPNavScreenMenuLink",props:{item:{}},setup(a){const e=q("close-screen");return(t,s)=>(o(),g(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Ya)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),Qa=$(Xa,[["__scopeId","data-v-735512b8"]]),Za=["innerHTML"],xa=m({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(a){const e=q("close-screen");return(t,s)=>(o(),g(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,"no-icon":t.item.noIcon,onClick:i(e)},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Za)]),_:1},8,["href","target","rel","no-icon","onClick"]))}}),De=$(xa,[["__scopeId","data-v-372ae7c0"]]),eo={class:"VPNavScreenMenuGroupSection"},to={key:0,class:"title"},no=m({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(a){return(e,t)=>(o(),c("div",eo,[e.text?(o(),c("p",to,w(e.text),1)):h("",!0),(o(!0),c(M,null,H(e.items,s=>(o(),g(De,{key:s.text,item:s},null,8,["item"]))),128))]))}}),so=$(no,[["__scopeId","data-v-4b8941ac"]]),ao=["aria-controls","aria-expanded"],oo=["innerHTML"],ro=["id"],io={key:0,class:"item"},lo={key:1,class:"item"},uo={key:2,class:"group"},co=m({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(a){const e=a,t=T(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(r,l)=>(o(),c("div",{class:I(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:r.text},null,8,oo),l[0]||(l[0]=p("span",{class:"vpi-plus button-icon"},null,-1))],8,ao),p("div",{id:s.value,class:"items"},[(o(!0),c(M,null,H(r.items,d=>(o(),c(M,{key:JSON.stringify(d)},["link"in d?(o(),c("div",io,[k(De,{item:d},null,8,["item"])])):"component"in d?(o(),c("div",lo,[(o(),g(E(d.component),j({ref_for:!0},d.props,{"screen-menu":""}),null,16))])):(o(),c("div",uo,[k(so,{text:d.text,items:d.items},null,8,["text","items"])]))],64))),128))],8,ro)],2))}}),fo=$(co,[["__scopeId","data-v-875057a5"]]),po={key:0,class:"VPNavScreenMenu"},vo=m({__name:"VPNavScreenMenu",setup(a){const{theme:e}=V();return(t,s)=>i(e).nav?(o(),c("nav",po,[(o(!0),c(M,null,H(i(e).nav,n=>(o(),c(M,{key:JSON.stringify(n)},["link"in n?(o(),g(Qa,{key:0,item:n},null,8,["item"])):"component"in n?(o(),g(E(n.component),j({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(o(),g(fo,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):h("",!0)}}),ho=m({__name:"VPNavScreenSocialLinks",setup(a){const{theme:e}=V();return(t,s)=>i(e).socialLinks?(o(),g(ye,{key:0,class:"VPNavScreenSocialLinks",links:i(e).socialLinks},null,8,["links"])):h("",!0)}}),mo={class:"list"},_o=m({__name:"VPNavScreenTranslations",setup(a){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=T(!1);function n(){s.value=!s.value}return(r,l)=>i(e).length&&i(t).label?(o(),c("div",{key:0,class:I(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[l[0]||(l[0]=p("span",{class:"vpi-languages icon lang"},null,-1)),z(" "+w(i(t).label)+" ",1),l[1]||(l[1]=p("span",{class:"vpi-chevron-down icon chevron"},null,-1))]),p("ul",mo,[(o(!0),c(M,null,H(i(e),d=>(o(),c("li",{key:d.link,class:"item"},[k(D,{class:"link",href:d.link},{default:v(()=>[z(w(d.text),1)]),_:2},1032,["href"])]))),128))])],2)):h("",!0)}}),bo=$(_o,[["__scopeId","data-v-362991c2"]]),ko={class:"container"},go=m({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(a){const e=T(null),t=Ie(te?document.body:null);return(s,n)=>(o(),g(de,{name:"fade",onEnter:n[0]||(n[0]=r=>t.value=!0),onAfterLeave:n[1]||(n[1]=r=>t.value=!1)},{default:v(()=>[s.open?(o(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",ko,[u(s.$slots,"nav-screen-content-before",{},void 0,!0),k(vo,{class:"menu"}),k(bo,{class:"translations"}),k(Ja,{class:"appearance"}),k(ho,{class:"social-links"}),u(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):h("",!0)]),_:3}))}}),$o=$(go,[["__scopeId","data-v-833aabba"]]),yo={key:0,class:"VPNav"},Po=m({__name:"VPNav",setup(a){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=_s(),{frontmatter:n}=V(),r=y(()=>n.value.navbar!==!1);return me("close-screen",t),Z(()=>{te&&document.documentElement.classList.toggle("hide-nav",!r.value)}),(l,d)=>r.value?(o(),c("header",yo,[k(Ka,{"is-screen-open":i(e),onToggleScreen:i(s)},{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(l.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(l.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),k($o,{open:i(e)},{"nav-screen-content-before":v(()=>[u(l.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(l.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):h("",!0)}}),So=$(Po,[["__scopeId","data-v-f1e365da"]]),Lo=["role","tabindex"],Vo={key:1,class:"items"},To=m({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(a){const e=a,{collapsed:t,collapsible:s,isLink:n,isActiveLink:r,hasActiveLink:l,hasChildren:d,toggle:f}=gt(y(()=>e.item)),b=y(()=>d.value?"section":"div"),L=y(()=>n.value?"a":"div"),_=y(()=>d.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),P=y(()=>n.value?void 0:"button"),S=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":r.value},{"has-active":l.value}]);function A(N){"key"in N&&N.key!=="Enter"||!e.item.link&&f()}function C(){e.item.link&&f()}return(N,B)=>{const G=R("VPSidebarItem",!0);return o(),g(E(b.value),{class:I(["VPSidebarItem",S.value])},{default:v(()=>[N.item.text?(o(),c("div",j({key:0,class:"item",role:P.value},Qe(N.item.items?{click:A,keydown:A}:{},!0),{tabindex:N.item.items&&0}),[B[1]||(B[1]=p("div",{class:"indicator"},null,-1)),N.item.link?(o(),g(D,{key:0,tag:L.value,class:"link",href:N.item.link,rel:N.item.rel,target:N.item.target},{default:v(()=>[(o(),g(E(_.value),{class:"text",innerHTML:N.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(o(),g(E(_.value),{key:1,class:"text",innerHTML:N.item.text},null,8,["innerHTML"])),N.item.collapsed!=null&&N.item.items&&N.item.items.length?(o(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},B[0]||(B[0]=[p("span",{class:"vpi-chevron-right caret-icon"},null,-1)]),32)):h("",!0)],16,Lo)):h("",!0),N.item.items&&N.item.items.length?(o(),c("div",Vo,[N.depth<5?(o(!0),c(M,{key:0},H(N.item.items,W=>(o(),g(G,{key:W.text,item:W,depth:N.depth+1},null,8,["item","depth"]))),128)):h("",!0)])):h("",!0)]),_:1},8,["class"])}}}),No=$(To,[["__scopeId","data-v-196b2e5f"]]),wo=m({__name:"VPSidebarGroup",props:{items:{}},setup(a){const e=T(!0);let t=null;return O(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Ze(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(o(!0),c(M,null,H(s.items,r=>(o(),c("div",{key:r.text,class:I(["group",{"no-transition":e.value}])},[k(No,{item:r,depth:0},null,8,["item"])],2))),128))}}),Io=$(wo,[["__scopeId","data-v-9e426adc"]]),Mo={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Ao=m({__name:"VPSidebar",props:{open:{type:Boolean}},setup(a){const{sidebarGroups:e,hasSidebar:t}=U(),s=a,n=T(null),r=Ie(te?document.body:null);F([s,n],()=>{var d;s.open?(r.value=!0,(d=n.value)==null||d.focus()):r.value=!1},{immediate:!0,flush:"post"});const l=T(0);return F(e,()=>{l.value+=1},{deep:!0}),(d,f)=>i(t)?(o(),c("aside",{key:0,class:I(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:n,onClick:f[0]||(f[0]=xe(()=>{},["stop"]))},[f[2]||(f[2]=p("div",{class:"curtain"},null,-1)),p("nav",Mo,[f[1]||(f[1]=p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),u(d.$slots,"sidebar-nav-before",{},void 0,!0),(o(),g(Io,{items:i(e),key:l.value},null,8,["items"])),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):h("",!0)}}),Co=$(Ao,[["__scopeId","data-v-18756405"]]),Ho=m({__name:"VPSkipLink",setup(a){const e=ee(),t=T();F(()=>e.path,()=>t.value.focus());function s({target:n}){const r=document.getElementById(decodeURIComponent(n.hash).slice(1));if(r){const l=()=>{r.removeAttribute("tabindex"),r.removeEventListener("blur",l)};r.setAttribute("tabindex","-1"),r.addEventListener("blur",l),r.focus(),window.scrollTo(0,0)}}return(n,r)=>(o(),c(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),Bo=$(Ho,[["__scopeId","data-v-c3508ec8"]]),Eo=m({__name:"Layout",setup(a){const{isOpen:e,open:t,close:s}=U(),n=ee();F(()=>n.path,s),kt(e,s);const{frontmatter:r}=V(),l=Me(),d=y(()=>!!l["home-hero-image"]);return me("hero-image-slot-exists",d),(f,b)=>{const L=R("Content");return i(r).layout!==!1?(o(),c("div",{key:0,class:I(["Layout",i(r).pageClass])},[u(f.$slots,"layout-top",{},void 0,!0),k(Bo),k(rt,{class:"backdrop",show:i(e),onClick:i(s)},null,8,["show","onClick"]),k(So,null,{"nav-bar-title-before":v(()=>[u(f.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(f.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(f.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(f.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(f.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(f.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),k(ms,{open:i(e),onOpenMenu:i(t)},null,8,["open","onOpenMenu"]),k(Co,{open:i(e)},{"sidebar-nav-before":v(()=>[u(f.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(f.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),k(es,null,{"page-top":v(()=>[u(f.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(f.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(f.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(f.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[u(f.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(f.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[u(f.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[u(f.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[u(f.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(f.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(f.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(f.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(f.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(f.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(f.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(f.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(f.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(f.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(f.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(f.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(f.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(f.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(f.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),k(os),u(f.$slots,"layout-bottom",{},void 0,!0)],2)):(o(),g(L,{key:1}))}}}),Do=$(Eo,[["__scopeId","data-v-a9a9e638"]]),Se={Layout:Do,enhanceApp:({app:a})=>{a.component("Badge",st)}},Fo=a=>{if(typeof document>"u")return{stabilizeScrollPosition:n=>async(...r)=>n(...r)};const e=document.documentElement;return{stabilizeScrollPosition:s=>async(...n)=>{const r=s(...n),l=a.value;if(!l)return r;const d=l.offsetTop-e.scrollTop;return await he(),e.scrollTop=l.offsetTop-d,r}}},Fe="vitepress:tabSharedState",J=typeof localStorage<"u"?localStorage:null,Oe="vitepress:tabsSharedState",Oo=()=>{const a=J==null?void 0:J.getItem(Oe);if(a)try{return JSON.parse(a)}catch{}return{}},Uo=a=>{J&&J.setItem(Oe,JSON.stringify(a))},Go=a=>{const e=et({});F(()=>e.content,(t,s)=>{t&&s&&Uo(t)},{deep:!0}),a.provide(Fe,e)},jo=(a,e)=>{const t=q(Fe);if(!t)throw new Error("[vitepress-plugin-tabs] TabsSharedState should be injected");O(()=>{t.content||(t.content=Oo())});const s=T(),n=y({get(){var f;const l=e.value,d=a.value;if(l){const b=(f=t.content)==null?void 0:f[l];if(b&&d.includes(b))return b}else{const b=s.value;if(b)return b}return d[0]},set(l){const d=e.value;d?t.content&&(t.content[d]=l):s.value=l}});return{selected:n,select:l=>{n.value=l}}};let Le=0;const zo=()=>(Le++,""+Le);function Ko(){const a=Me();return y(()=>{var s;const t=(s=a.default)==null?void 0:s.call(a);return t?t.filter(n=>typeof n.type=="object"&&"__name"in n.type&&n.type.__name==="PluginTabsTab"&&n.props).map(n=>{var r;return(r=n.props)==null?void 0:r.label}):[]})}const Ue="vitepress:tabSingleState",Ro=a=>{me(Ue,a)},Wo=()=>{const a=q(Ue);if(!a)throw new Error("[vitepress-plugin-tabs] TabsSingleState should be injected");return a},qo={class:"plugin-tabs"},Jo=["id","aria-selected","aria-controls","tabindex","onClick"],Yo=m({__name:"PluginTabs",props:{sharedStateKey:{}},setup(a){const e=a,t=Ko(),{selected:s,select:n}=jo(t,tt(e,"sharedStateKey")),r=T(),{stabilizeScrollPosition:l}=Fo(r),d=l(n),f=T([]),b=_=>{var A;const P=t.value.indexOf(s.value);let S;_.key==="ArrowLeft"?S=P>=1?P-1:t.value.length-1:_.key==="ArrowRight"&&(S=P(o(),c("div",qo,[p("div",{ref_key:"tablist",ref:r,class:"plugin-tabs--tab-list",role:"tablist",onKeydown:b},[(o(!0),c(M,null,H(i(t),S=>(o(),c("button",{id:`tab-${S}-${i(L)}`,ref_for:!0,ref_key:"buttonRefs",ref:f,key:S,role:"tab",class:"plugin-tabs--tab","aria-selected":S===i(s),"aria-controls":`panel-${S}-${i(L)}`,tabindex:S===i(s)?0:-1,onClick:()=>i(d)(S)},w(S),9,Jo))),128))],544),u(_.$slots,"default")]))}}),Xo=["id","aria-labelledby"],Qo=m({__name:"PluginTabsTab",props:{label:{}},setup(a){const{uid:e,selected:t}=Wo();return(s,n)=>i(t)===s.label?(o(),c("div",{key:0,id:`panel-${s.label}-${i(e)}`,class:"plugin-tabs--content",role:"tabpanel",tabindex:"0","aria-labelledby":`tab-${s.label}-${i(e)}`},[u(s.$slots,"default",{},void 0,!0)],8,Xo)):h("",!0)}}),Zo=$(Qo,[["__scopeId","data-v-9b0d03d2"]]),xo=a=>{Go(a),a.component("PluginTabs",Yo),a.component("PluginTabsTab",Zo)},tr={extends:Se,Layout(){return nt(Se.Layout,null,{})},enhanceApp({app:a,router:e,siteData:t}){xo(a)}};export{tr as R,ka as c,V as u};
diff --git a/previews/PR126/assets/mmazupv.BjVPut0E.png b/previews/PR126/assets/dhrjrxu.BjVPut0E.png
similarity index 100%
rename from previews/PR126/assets/mmazupv.BjVPut0E.png
rename to previews/PR126/assets/dhrjrxu.BjVPut0E.png
diff --git a/previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.js b/previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.js
similarity index 98%
rename from previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.js
rename to previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.js
index 9cbd05a7..cc76934f 100644
--- a/previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.js
+++ b/previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/hxniwym.D0gpz0HH.png",k="/IncompressibleNavierStokes.jl/previews/PR126/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/twcloar.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/previews/PR126/assets/mmazupv.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/mgwqqoh.BQ4kmQL6.png",C=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator2D.md","filePath":"examples/generated/Actuator2D.md","lastUpdated":null}'),E={name:"examples/generated/Actuator2D.md"};function d(r,s,g,y,F,c){return h(),a("div",null,s[0]||(s[0]=[n(`

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

Packages

A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/opgihfw.D0gpz0HH.png",k="/IncompressibleNavierStokes.jl/previews/PR126/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/gmwwpzt.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/previews/PR126/assets/dhrjrxu.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/wvbzouq.BQ4kmQL6.png",C=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator2D.md","filePath":"examples/generated/Actuator2D.md","lastUpdated":null}'),E={name:"examples/generated/Actuator2D.md"};function d(r,s,g,y,F,c){return h(),a("div",null,s[0]||(s[0]=[n(`

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

Packages

A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

A 2D grid is a Cartesian product of two vectors

julia
n = 40
 x = LinRange(0.0, 10.0, 5n + 1), LinRange(-2.0, 2.0, 2n + 1)
 plotgrid(x...; figure = (; size = (600, 300)))

Boundary conditions

julia
inflow(dim, x, y, t) = sinpi(sinpi(t / 6) / 6 + (dim == 1) / 2)
@@ -61,16 +61,16 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const p
         rtp = realtimeplotter(; setup, size = (600, 300), nupdate = 5),
         log = timelogger(; nupdate = 24),
     ),
-);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.11
-[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.041
-[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.0095
-[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0087
-[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0088
-[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0087
-[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0089
-[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.0089
-[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0088
-[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0087

Post-process

We create a box to visualize the actuator.

julia
box = (
+);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.12
+[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.042
+[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.01
+[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0091
+[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0091
+[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0091

Post-process

We create a box to visualize the actuator.

julia
box = (
     [xc - δ / 2, xc - δ / 2, xc + δ / 2, xc + δ / 2, xc - δ / 2],
     [yc + D / 2, yc - D / 2, yc - D / 2, yc + D / 2, yc + D / 2],
 )
([1.945, 1.945, 2.055, 2.055, 1.945], [0.5, -0.5, -0.5, 0.5, 0.5])

Plot pressure

julia
fig = fieldplot(state; setup, size = (600, 300), fieldname = :pressure)
diff --git a/previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.lean.js b/previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.lean.js
similarity index 98%
rename from previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.lean.js
rename to previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.lean.js
index 9cbd05a7..cc76934f 100644
--- a/previews/PR126/assets/examples_generated_Actuator2D.md.CPxjirdp.lean.js
+++ b/previews/PR126/assets/examples_generated_Actuator2D.md.XEdcJ7D_.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/hxniwym.D0gpz0HH.png",k="/IncompressibleNavierStokes.jl/previews/PR126/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/twcloar.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/previews/PR126/assets/mmazupv.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/mgwqqoh.BQ4kmQL6.png",C=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator2D.md","filePath":"examples/generated/Actuator2D.md","lastUpdated":null}'),E={name:"examples/generated/Actuator2D.md"};function d(r,s,g,y,F,c){return h(),a("div",null,s[0]||(s[0]=[n(`

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

Packages

A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/opgihfw.D0gpz0HH.png",k="/IncompressibleNavierStokes.jl/previews/PR126/Actuator2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/gmwwpzt.B0GX2W7p.png",t="/IncompressibleNavierStokes.jl/previews/PR126/assets/dhrjrxu.BjVPut0E.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/wvbzouq.BQ4kmQL6.png",C=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator2D.md","filePath":"examples/generated/Actuator2D.md","lastUpdated":null}'),E={name:"examples/generated/Actuator2D.md"};function d(r,s,g,y,F,c){return h(),a("div",null,s[0]||(s[0]=[n(`

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

Packages

A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

A 2D grid is a Cartesian product of two vectors

julia
n = 40
 x = LinRange(0.0, 10.0, 5n + 1), LinRange(-2.0, 2.0, 2n + 1)
 plotgrid(x...; figure = (; size = (600, 300)))

Boundary conditions

julia
inflow(dim, x, y, t) = sinpi(sinpi(t / 6) / 6 + (dim == 1) / 2)
@@ -61,16 +61,16 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const p
         rtp = realtimeplotter(; setup, size = (600, 300), nupdate = 5),
         log = timelogger(; nupdate = 24),
     ),
-);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.11
-[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.041
-[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.0095
-[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0087
-[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0088
-[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0087
-[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0089
-[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.0089
-[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0088
-[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0087

Post-process

We create a box to visualize the actuator.

julia
box = (
+);
[ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.12
+[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.042
+[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.01
+[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0089
+[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0091
+[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.009
+[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0091
+[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0091

Post-process

We create a box to visualize the actuator.

julia
box = (
     [xc - δ / 2, xc - δ / 2, xc + δ / 2, xc + δ / 2, xc - δ / 2],
     [yc + D / 2, yc - D / 2, yc - D / 2, yc + D / 2, yc + D / 2],
 )
([1.945, 1.945, 2.055, 2.055, 1.945], [0.5, -0.5, -0.5, 0.5, 0.5])

Plot pressure

julia
fig = fieldplot(state; setup, size = (600, 300), fieldname = :pressure)
diff --git a/previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.js b/previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.js
rename to previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.js
index acba18f2..4463eb17 100644
--- a/previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.js
+++ b/previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Unsteady actuator case - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator3D.md","filePath":"examples/generated/Actuator3D.md","lastUpdated":null}'),k={name:"examples/generated/Actuator3D.md"};function t(p,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 3D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a short cylinder.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Unsteady actuator case - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator3D.md","filePath":"examples/generated/Actuator3D.md","lastUpdated":null}'),k={name:"examples/generated/Actuator3D.md"};function t(p,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 3D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a short cylinder.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "Actuator3D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(100)

A 3D grid is a Cartesian product of three vectors

julia
x = LinRange(0.0, 6.0, 31), LinRange(-2.0, 2.0, 41), LinRange(-2.0, 2.0, 41)
 plotgrid(x...)

Boundary conditions: Unsteady BC requires time derivatives

julia
boundary_conditions = (
diff --git a/previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.lean.js b/previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.lean.js
rename to previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.lean.js
index acba18f2..4463eb17 100644
--- a/previews/PR126/assets/examples_generated_Actuator3D.md.DDNf_NQa.lean.js
+++ b/previews/PR126/assets/examples_generated_Actuator3D.md.Do97Evrm.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Unsteady actuator case - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator3D.md","filePath":"examples/generated/Actuator3D.md","lastUpdated":null}'),k={name:"examples/generated/Actuator3D.md"};function t(p,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 3D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a short cylinder.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Unsteady actuator case - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Actuator3D.md","filePath":"examples/generated/Actuator3D.md","lastUpdated":null}'),k={name:"examples/generated/Actuator3D.md"};function t(p,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 3D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a short cylinder.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "Actuator3D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(100)

A 3D grid is a Cartesian product of three vectors

julia
x = LinRange(0.0, 6.0, 31), LinRange(-2.0, 2.0, 41), LinRange(-2.0, 2.0, 41)
 plotgrid(x...)

Boundary conditions: Unsteady BC requires time derivatives

julia
boundary_conditions = (
diff --git a/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.js b/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.js
rename to previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.js
index ef055957..1d48e42d 100644
--- a/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.js
+++ b/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Backward Facing Step - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep2D.md","filePath":"examples/generated/BackwardFacingStep2D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep2D.md"};function p(k,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 2D

In this example we consider a channel with walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Backward Facing Step - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep2D.md","filePath":"examples/generated/BackwardFacingStep2D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep2D.md"};function p(k,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 2D

In this example we consider a channel with walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "BackwardFacingStep2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(3_000)

Boundary conditions: steady inflow on the top half

julia
U(dim, x, y, t) =
     dim == 1 && y  0 ? 24y * (one(x) / 2 - y) : zero(x) + randn(typeof(x)) / 1_000
diff --git a/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.lean.js b/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.lean.js
rename to previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.lean.js
index ef055957..1d48e42d 100644
--- a/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.B1L_JUM9.lean.js
+++ b/previews/PR126/assets/examples_generated_BackwardFacingStep2D.md.DnwQ8OOv.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Backward Facing Step - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep2D.md","filePath":"examples/generated/BackwardFacingStep2D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep2D.md"};function p(k,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 2D

In this example we consider a channel with walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Backward Facing Step - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep2D.md","filePath":"examples/generated/BackwardFacingStep2D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep2D.md"};function p(k,s,l,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 2D

In this example we consider a channel with walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "BackwardFacingStep2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(3_000)

Boundary conditions: steady inflow on the top half

julia
U(dim, x, y, t) =
     dim == 1 && y  0 ? 24y * (one(x) / 2 - y) : zero(x) + randn(typeof(x)) / 1_000
diff --git a/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.js b/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.js
rename to previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.js
index dfd69af5..1066d09c 100644
--- a/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.js
+++ b/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Backward Facing Step - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep3D.md","filePath":"examples/generated/BackwardFacingStep3D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 3D

In this example we consider a channel with periodic side boundaries, walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Backward Facing Step - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep3D.md","filePath":"examples/generated/BackwardFacingStep3D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 3D

In this example we consider a channel with periodic side boundaries, walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "BackwardFacingStep3D")

Floating point type

julia
T = Float32

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(1000)

A 3D grid is a Cartesian product of three vectors

julia
x = LinRange(T(0), T(10), 129),
 LinRange(-T(0.5), T(0.5), 17),
diff --git a/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.lean.js b/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.lean.js
rename to previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.lean.js
index dfd69af5..1066d09c 100644
--- a/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.BQ3_PVJu.lean.js
+++ b/previews/PR126/assets/examples_generated_BackwardFacingStep3D.md.DobF6mmh.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Backward Facing Step - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep3D.md","filePath":"examples/generated/BackwardFacingStep3D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 3D

In this example we consider a channel with periodic side boundaries, walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Backward Facing Step - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/BackwardFacingStep3D.md","filePath":"examples/generated/BackwardFacingStep3D.md","lastUpdated":null}'),t={name:"examples/generated/BackwardFacingStep3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Backward Facing Step - 3D

In this example we consider a channel with periodic side boundaries, walls at the top and bottom, and a step at the left with a parabolic inflow. Initially the velocity is an extension of the inflow, but as time passes the velocity finds a new steady state.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "BackwardFacingStep3D")

Floating point type

julia
T = Float32

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(1000)

A 3D grid is a Cartesian product of three vectors

julia
x = LinRange(T(0), T(10), 129),
 LinRange(-T(0.5), T(0.5), 17),
diff --git a/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.js b/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.js
similarity index 85%
rename from previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.js
rename to previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.js
index bfcf4ca0..06937d2e 100644
--- a/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.js
+++ b/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.BSoZtefh.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/cellnff.CfNIkngZ.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/aqsfkdr.B0sBqA42.png",h="/IncompressibleNavierStokes.jl/previews/PR126/assets/tglpiml.BmW-IXuN.png",u=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence2D.md","filePath":"examples/generated/DecayingTurbulence2D.md","lastUpdated":null}'),k={name:"examples/generated/DecayingTurbulence2D.md"};function E(r,s,d,g,y,o){return p(),a("div",null,s[0]||(s[0]=[n(`

Decaying Homogeneous Isotropic Turbulence - 2D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

Packages

We just need IncompressibleNavierStokes and a Makie plotting backend.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.CojPSOJE.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/vhpjezl.BFO_dsdV.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/gdusrnj.D0YptP_W.png",h="/IncompressibleNavierStokes.jl/previews/PR126/assets/umvagyk.Dbt_L6Xl.png",u=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence2D.md","filePath":"examples/generated/DecayingTurbulence2D.md","lastUpdated":null}'),k={name:"examples/generated/DecayingTurbulence2D.md"};function E(r,s,d,g,y,o){return p(),a("div",null,s[0]||(s[0]=[n(`

Decaying Homogeneous Isotropic Turbulence - 2D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

Packages

We just need IncompressibleNavierStokes and a Makie plotting backend.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

julia
n = 256
 ax = LinRange(0.0, 1.0, n + 1)
 setup = Setup(; x = (ax, ax), Re = 4e3);
@@ -22,13 +22,14 @@ import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.BSoZtefh.js";const t
         ),
         log = timelogger(; nupdate = 100),
     ),
-);
[ Info: t = 0.107178	Δt = 0.0012	umax = 3	itertime = 0.027
-[ Info: t = 0.221125	Δt = 0.0013	umax = 2.7	itertime = 0.016
-[ Info: t = 0.349375	Δt = 0.0014	umax = 2.5	itertime = 0.015
-[ Info: t = 0.476132	Δt = 0.0013	umax = 2.8	itertime = 0.015
-[ Info: t = 0.608872	Δt = 0.0014	umax = 2.6	itertime = 0.015
-[ Info: t = 0.748175	Δt = 0.0015	umax = 2.4	itertime = 0.015
-[ Info: t = 0.901732	Δt = 0.0015	umax = 2.4	itertime = 0.015

Post-process

We may visualize or export the computed fields

Energy history

julia
outputs.ehist

Energy spectrum

julia
outputs.espec

Plot field

julia
fieldplot(state; setup)

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
+);
[ Info: t = 0.0796116	Δt = 0.00081	umax = 4.3	itertime = 0.027
+[ Info: t = 0.166772	Δt = 0.001	umax = 3.5	itertime = 0.016
+[ Info: t = 0.280155	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.391684	Δt = 0.0011	umax = 3.3	itertime = 0.015
+[ Info: t = 0.516822	Δt = 0.0014	umax = 2.5	itertime = 0.015
+[ Info: t = 0.639491	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.775942	Δt = 0.0013	umax = 2.7	itertime = 0.015
+[ Info: t = 0.905614	Δt = 0.0012	umax = 3	itertime = 0.015

Post-process

We may visualize or export the computed fields

Energy history

julia
outputs.ehist

Energy spectrum

julia
outputs.espec

Plot field

julia
fieldplot(state; setup)

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
 n = 256
diff --git a/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.lean.js b/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.lean.js
similarity index 85%
rename from previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.lean.js
rename to previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.lean.js
index bfcf4ca0..06937d2e 100644
--- a/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.pTOk0VQT.lean.js
+++ b/previews/PR126/assets/examples_generated_DecayingTurbulence2D.md.DppokV8U.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.BSoZtefh.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/cellnff.CfNIkngZ.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/aqsfkdr.B0sBqA42.png",h="/IncompressibleNavierStokes.jl/previews/PR126/assets/tglpiml.BmW-IXuN.png",u=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence2D.md","filePath":"examples/generated/DecayingTurbulence2D.md","lastUpdated":null}'),k={name:"examples/generated/DecayingTurbulence2D.md"};function E(r,s,d,g,y,o){return p(),a("div",null,s[0]||(s[0]=[n(`

Decaying Homogeneous Isotropic Turbulence - 2D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

Packages

We just need IncompressibleNavierStokes and a Makie plotting backend.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.CojPSOJE.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/DecayingTurbulence2D.mp4",l="/IncompressibleNavierStokes.jl/previews/PR126/assets/vhpjezl.BFO_dsdV.png",e="/IncompressibleNavierStokes.jl/previews/PR126/assets/gdusrnj.D0YptP_W.png",h="/IncompressibleNavierStokes.jl/previews/PR126/assets/umvagyk.Dbt_L6Xl.png",u=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence2D.md","filePath":"examples/generated/DecayingTurbulence2D.md","lastUpdated":null}'),k={name:"examples/generated/DecayingTurbulence2D.md"};function E(r,s,d,g,y,o){return p(),a("div",null,s[0]||(s[0]=[n(`

Decaying Homogeneous Isotropic Turbulence - 2D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

Packages

We just need IncompressibleNavierStokes and a Makie plotting backend.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

julia
n = 256
 ax = LinRange(0.0, 1.0, n + 1)
 setup = Setup(; x = (ax, ax), Re = 4e3);
@@ -22,13 +22,14 @@ import{_ as i,c as a,a5 as n,o as p}from"./chunks/framework.BSoZtefh.js";const t
         ),
         log = timelogger(; nupdate = 100),
     ),
-);
[ Info: t = 0.107178	Δt = 0.0012	umax = 3	itertime = 0.027
-[ Info: t = 0.221125	Δt = 0.0013	umax = 2.7	itertime = 0.016
-[ Info: t = 0.349375	Δt = 0.0014	umax = 2.5	itertime = 0.015
-[ Info: t = 0.476132	Δt = 0.0013	umax = 2.8	itertime = 0.015
-[ Info: t = 0.608872	Δt = 0.0014	umax = 2.6	itertime = 0.015
-[ Info: t = 0.748175	Δt = 0.0015	umax = 2.4	itertime = 0.015
-[ Info: t = 0.901732	Δt = 0.0015	umax = 2.4	itertime = 0.015

Post-process

We may visualize or export the computed fields

Energy history

julia
outputs.ehist

Energy spectrum

julia
outputs.espec

Plot field

julia
fieldplot(state; setup)

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
+);
[ Info: t = 0.0796116	Δt = 0.00081	umax = 4.3	itertime = 0.027
+[ Info: t = 0.166772	Δt = 0.001	umax = 3.5	itertime = 0.016
+[ Info: t = 0.280155	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.391684	Δt = 0.0011	umax = 3.3	itertime = 0.015
+[ Info: t = 0.516822	Δt = 0.0014	umax = 2.5	itertime = 0.015
+[ Info: t = 0.639491	Δt = 0.0012	umax = 2.9	itertime = 0.015
+[ Info: t = 0.775942	Δt = 0.0013	umax = 2.7	itertime = 0.015
+[ Info: t = 0.905614	Δt = 0.0012	umax = 3	itertime = 0.015

Post-process

We may visualize or export the computed fields

Energy history

julia
outputs.ehist

Energy spectrum

julia
outputs.espec

Plot field

julia
fieldplot(state; setup)

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
 n = 256
diff --git a/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.js b/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.js
rename to previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.js
index a727fbde..596ec675 100644
--- a/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.js
+++ b/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence3D.md","filePath":"examples/generated/DecayingTurbulence3D.md","lastUpdated":null}'),p={name:"examples/generated/DecayingTurbulence3D.md"};function l(e,s,h,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Decaying Homogeneous Isotropic Turbulence - 3D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence3D.md","filePath":"examples/generated/DecayingTurbulence3D.md","lastUpdated":null}'),p={name:"examples/generated/DecayingTurbulence3D.md"};function l(e,s,h,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Decaying Homogeneous Isotropic Turbulence - 3D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

julia
using CairoMakie
 using IncompressibleNavierStokes

Problem setup

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()
 T = Float32
diff --git a/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.lean.js b/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.lean.js
rename to previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.lean.js
index a727fbde..596ec675 100644
--- a/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.CPesWMyv.lean.js
+++ b/previews/PR126/assets/examples_generated_DecayingTurbulence3D.md.Dg09qhTk.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence3D.md","filePath":"examples/generated/DecayingTurbulence3D.md","lastUpdated":null}'),p={name:"examples/generated/DecayingTurbulence3D.md"};function l(e,s,h,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Decaying Homogeneous Isotropic Turbulence - 3D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Decaying Homogeneous Isotropic Turbulence - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/DecayingTurbulence3D.md","filePath":"examples/generated/DecayingTurbulence3D.md","lastUpdated":null}'),p={name:"examples/generated/DecayingTurbulence3D.md"};function l(e,s,h,k,r,E){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Decaying Homogeneous Isotropic Turbulence - 3D

In this example we consider decaying homogeneous isotropic turbulence, similar to the cases considered in [1] and [2]. The initial velocity field is created randomly, but with a specific energy spectrum. Due to viscous dissipation, the turbulent features eventually group to form larger visible eddies.

julia
using CairoMakie
 using IncompressibleNavierStokes

Problem setup

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()
 T = Float32
diff --git a/previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.js b/previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.js
rename to previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.js
index c8157a24..07dcbcea 100644
--- a/previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.js
+++ b/previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.js
@@ -1,4 +1,4 @@
-import{_ as h,c as a,j as s,a as t,a5 as n,o as l}from"./chunks/framework.BSoZtefh.js";const c=JSON.parse('{"title":"Kolmogorov flow (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Kolmogorov2D.md","filePath":"examples/generated/Kolmogorov2D.md","lastUpdated":null}'),p={name:"examples/generated/Kolmogorov2D.md"},e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.165ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4492.8 1083.9","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.149ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.876ex",height:"5.43ex",role:"img",focusable:"false",viewBox:"0 -1450 9227.2 2400","aria-hidden":"true"};function E(g,i,o,y,T,Q){return l(),a("div",null,[i[6]||(i[6]=s("p",null,[s("em",null,"Note: Output is not generated for this example (to save resources on GitHub).")],-1)),i[7]||(i[7]=s("h1",{id:"Kolmogorov-flow-(2D)",tabindex:"-1"},[t("Kolmogorov flow (2D) "),s("a",{class:"header-anchor",href:"#Kolmogorov-flow-(2D)","aria-label":'Permalink to "Kolmogorov flow (2D) {#Kolmogorov-flow-(2D)}"'},"​")],-1)),s("p",null,[i[2]||(i[2]=t("The Kolmogorov flow in a periodic box ")),s("mjx-container",e,[(l(),a("svg",k,i[0]||(i[0]=[n('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",{mathvariant:"normal"},"Ω"),s("mo",null,"="),s("mo",{stretchy:"false"},"["),s("mn",null,"0"),s("mo",null,","),s("mn",null,"1"),s("msup",null,[s("mo",{stretchy:"false"},"]"),s("mn",null,"2")])])],-1))]),i[3]||(i[3]=t(" is initiated via the force field"))]),s("mjx-container",r,[(l(),a("svg",d,i[4]||(i[4]=[n('',1)]))),i[5]||(i[5]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mtable",{columnspacing:"1em",rowspacing:"4pt"},[s("mtr",null,[s("mtd",null,[s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"π"),s("mi",null,"k"),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd",null,[s("mn",null,"0")])])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),i[8]||(i[8]=n(`

where k is the wavenumber where energy is injected.

Packages

We just need the IncompressibleNavierStokes and a Makie plotting package.

julia
using CairoMakie
+import{_ as h,c as a,j as s,a as t,a5 as n,o as l}from"./chunks/framework.CojPSOJE.js";const c=JSON.parse('{"title":"Kolmogorov flow (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Kolmogorov2D.md","filePath":"examples/generated/Kolmogorov2D.md","lastUpdated":null}'),p={name:"examples/generated/Kolmogorov2D.md"},e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.165ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4492.8 1083.9","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.149ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.876ex",height:"5.43ex",role:"img",focusable:"false",viewBox:"0 -1450 9227.2 2400","aria-hidden":"true"};function E(g,i,o,y,T,Q){return l(),a("div",null,[i[6]||(i[6]=s("p",null,[s("em",null,"Note: Output is not generated for this example (to save resources on GitHub).")],-1)),i[7]||(i[7]=s("h1",{id:"Kolmogorov-flow-(2D)",tabindex:"-1"},[t("Kolmogorov flow (2D) "),s("a",{class:"header-anchor",href:"#Kolmogorov-flow-(2D)","aria-label":'Permalink to "Kolmogorov flow (2D) {#Kolmogorov-flow-(2D)}"'},"​")],-1)),s("p",null,[i[2]||(i[2]=t("The Kolmogorov flow in a periodic box ")),s("mjx-container",e,[(l(),a("svg",k,i[0]||(i[0]=[n('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",{mathvariant:"normal"},"Ω"),s("mo",null,"="),s("mo",{stretchy:"false"},"["),s("mn",null,"0"),s("mo",null,","),s("mn",null,"1"),s("msup",null,[s("mo",{stretchy:"false"},"]"),s("mn",null,"2")])])],-1))]),i[3]||(i[3]=t(" is initiated via the force field"))]),s("mjx-container",r,[(l(),a("svg",d,i[4]||(i[4]=[n('',1)]))),i[5]||(i[5]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mtable",{columnspacing:"1em",rowspacing:"4pt"},[s("mtr",null,[s("mtd",null,[s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"π"),s("mi",null,"k"),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd",null,[s("mn",null,"0")])])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),i[8]||(i[8]=n(`

where k is the wavenumber where energy is injected.

Packages

We just need the IncompressibleNavierStokes and a Makie plotting package.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

Define a uniform grid with a steady body force field.

julia
n = 256
 axis = range(0.0, 1.0, n + 1)
 setup = Setup(;
diff --git a/previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.lean.js b/previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.lean.js
rename to previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.lean.js
index c8157a24..07dcbcea 100644
--- a/previews/PR126/assets/examples_generated_Kolmogorov2D.md.C7XWVq5k.lean.js
+++ b/previews/PR126/assets/examples_generated_Kolmogorov2D.md.evM9cP7-.lean.js
@@ -1,4 +1,4 @@
-import{_ as h,c as a,j as s,a as t,a5 as n,o as l}from"./chunks/framework.BSoZtefh.js";const c=JSON.parse('{"title":"Kolmogorov flow (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Kolmogorov2D.md","filePath":"examples/generated/Kolmogorov2D.md","lastUpdated":null}'),p={name:"examples/generated/Kolmogorov2D.md"},e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.165ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4492.8 1083.9","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.149ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.876ex",height:"5.43ex",role:"img",focusable:"false",viewBox:"0 -1450 9227.2 2400","aria-hidden":"true"};function E(g,i,o,y,T,Q){return l(),a("div",null,[i[6]||(i[6]=s("p",null,[s("em",null,"Note: Output is not generated for this example (to save resources on GitHub).")],-1)),i[7]||(i[7]=s("h1",{id:"Kolmogorov-flow-(2D)",tabindex:"-1"},[t("Kolmogorov flow (2D) "),s("a",{class:"header-anchor",href:"#Kolmogorov-flow-(2D)","aria-label":'Permalink to "Kolmogorov flow (2D) {#Kolmogorov-flow-(2D)}"'},"​")],-1)),s("p",null,[i[2]||(i[2]=t("The Kolmogorov flow in a periodic box ")),s("mjx-container",e,[(l(),a("svg",k,i[0]||(i[0]=[n('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",{mathvariant:"normal"},"Ω"),s("mo",null,"="),s("mo",{stretchy:"false"},"["),s("mn",null,"0"),s("mo",null,","),s("mn",null,"1"),s("msup",null,[s("mo",{stretchy:"false"},"]"),s("mn",null,"2")])])],-1))]),i[3]||(i[3]=t(" is initiated via the force field"))]),s("mjx-container",r,[(l(),a("svg",d,i[4]||(i[4]=[n('',1)]))),i[5]||(i[5]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mtable",{columnspacing:"1em",rowspacing:"4pt"},[s("mtr",null,[s("mtd",null,[s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"π"),s("mi",null,"k"),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd",null,[s("mn",null,"0")])])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),i[8]||(i[8]=n(`

where k is the wavenumber where energy is injected.

Packages

We just need the IncompressibleNavierStokes and a Makie plotting package.

julia
using CairoMakie
+import{_ as h,c as a,j as s,a as t,a5 as n,o as l}from"./chunks/framework.CojPSOJE.js";const c=JSON.parse('{"title":"Kolmogorov flow (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/Kolmogorov2D.md","filePath":"examples/generated/Kolmogorov2D.md","lastUpdated":null}'),p={name:"examples/generated/Kolmogorov2D.md"},e={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.165ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4492.8 1083.9","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.149ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.876ex",height:"5.43ex",role:"img",focusable:"false",viewBox:"0 -1450 9227.2 2400","aria-hidden":"true"};function E(g,i,o,y,T,Q){return l(),a("div",null,[i[6]||(i[6]=s("p",null,[s("em",null,"Note: Output is not generated for this example (to save resources on GitHub).")],-1)),i[7]||(i[7]=s("h1",{id:"Kolmogorov-flow-(2D)",tabindex:"-1"},[t("Kolmogorov flow (2D) "),s("a",{class:"header-anchor",href:"#Kolmogorov-flow-(2D)","aria-label":'Permalink to "Kolmogorov flow (2D) {#Kolmogorov-flow-(2D)}"'},"​")],-1)),s("p",null,[i[2]||(i[2]=t("The Kolmogorov flow in a periodic box ")),s("mjx-container",e,[(l(),a("svg",k,i[0]||(i[0]=[n('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",{mathvariant:"normal"},"Ω"),s("mo",null,"="),s("mo",{stretchy:"false"},"["),s("mn",null,"0"),s("mo",null,","),s("mn",null,"1"),s("msup",null,[s("mo",{stretchy:"false"},"]"),s("mn",null,"2")])])],-1))]),i[3]||(i[3]=t(" is initiated via the force field"))]),s("mjx-container",r,[(l(),a("svg",d,i[4]||(i[4]=[n('',1)]))),i[5]||(i[5]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mtable",{columnspacing:"1em",rowspacing:"4pt"},[s("mtr",null,[s("mtd",null,[s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"π"),s("mi",null,"k"),s("mi",null,"y"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd",null,[s("mn",null,"0")])])]),s("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),i[8]||(i[8]=n(`

where k is the wavenumber where energy is injected.

Packages

We just need the IncompressibleNavierStokes and a Makie plotting package.

julia
using CairoMakie
 using IncompressibleNavierStokes

Setup

Define a uniform grid with a steady body force field.

julia
n = 256
 axis = range(0.0, 1.0, n + 1)
 setup = Setup(;
diff --git a/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.js b/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.js
rename to previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.js
index 7912e64c..13aa8b12 100644
--- a/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.js
+++ b/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.BSoZtefh.js";const o=JSON.parse('{"title":"Tutorial: Lid-Driven Cavity - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity2D.md","filePath":"examples/generated/LidDrivenCavity2D.md","lastUpdated":null}'),l={name:"examples/generated/LidDrivenCavity2D.md"};function p(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Tutorial: Lid-Driven Cavity - 2D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

We start by loading packages. A Makie plotting backend is needed

for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.CojPSOJE.js";const o=JSON.parse('{"title":"Tutorial: Lid-Driven Cavity - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity2D.md","filePath":"examples/generated/LidDrivenCavity2D.md","lastUpdated":null}'),l={name:"examples/generated/LidDrivenCavity2D.md"};function p(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Tutorial: Lid-Driven Cavity - 2D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

We start by loading packages. A Makie plotting backend is needed

for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Case name for saving results

julia
outdir = joinpath(@__DIR__, "output", "LidDrivenCavity2D")

The code allows for using different floating point number types, including single precision (Float32) and double precision (Float64). On the CPU, the speed is not really different, but double precision uses twice as much memory as single precision. When running on the GPU, single precision is preferred. Half precision (Float16) is also an option, but then the values should be scaled judiciously to avoid vanishing digits when applying differential operators of the form "right minus left divided by small distance".

Note how floating point type hygiene is enforced in the following using T to avoid mixing different precisions.

T = Float64

julia
T = Float32
 # T = Float16

We can also choose to do the computations on a different device. By default, the computations are performed on the host (CPU). An optional backend allows for moving arrays to a different device such as a GPU.

Note: For GPUs, single precision is preferred.

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Here we choose a moderate Reynolds number. Note how we pass the floating point type.

julia
Re = T(1_000)

Non-zero Dirichlet boundary conditions are specified as plain Julia functions.

julia
U = (T(1), T(0))
diff --git a/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.lean.js b/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.lean.js
rename to previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.lean.js
index 7912e64c..13aa8b12 100644
--- a/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.D_iNsMnv.lean.js
+++ b/previews/PR126/assets/examples_generated_LidDrivenCavity2D.md.DKchvkMs.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.BSoZtefh.js";const o=JSON.parse('{"title":"Tutorial: Lid-Driven Cavity - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity2D.md","filePath":"examples/generated/LidDrivenCavity2D.md","lastUpdated":null}'),l={name:"examples/generated/LidDrivenCavity2D.md"};function p(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Tutorial: Lid-Driven Cavity - 2D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

We start by loading packages. A Makie plotting backend is needed

for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as t}from"./chunks/framework.CojPSOJE.js";const o=JSON.parse('{"title":"Tutorial: Lid-Driven Cavity - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity2D.md","filePath":"examples/generated/LidDrivenCavity2D.md","lastUpdated":null}'),l={name:"examples/generated/LidDrivenCavity2D.md"};function p(e,s,h,k,d,r){return t(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Tutorial: Lid-Driven Cavity - 2D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

We start by loading packages. A Makie plotting backend is needed

for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Case name for saving results

julia
outdir = joinpath(@__DIR__, "output", "LidDrivenCavity2D")

The code allows for using different floating point number types, including single precision (Float32) and double precision (Float64). On the CPU, the speed is not really different, but double precision uses twice as much memory as single precision. When running on the GPU, single precision is preferred. Half precision (Float16) is also an option, but then the values should be scaled judiciously to avoid vanishing digits when applying differential operators of the form "right minus left divided by small distance".

Note how floating point type hygiene is enforced in the following using T to avoid mixing different precisions.

T = Float64

julia
T = Float32
 # T = Float16

We can also choose to do the computations on a different device. By default, the computations are performed on the host (CPU). An optional backend allows for moving arrays to a different device such as a GPU.

Note: For GPUs, single precision is preferred.

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Here we choose a moderate Reynolds number. Note how we pass the floating point type.

julia
Re = T(1_000)

Non-zero Dirichlet boundary conditions are specified as plain Julia functions.

julia
U = (T(1), T(0))
diff --git a/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.js b/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.js
rename to previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.js
index fd58d55b..73db73f6 100644
--- a/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.js
+++ b/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Lid-Driven Cavity - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity3D.md","filePath":"examples/generated/LidDrivenCavity3D.md","lastUpdated":null}'),t={name:"examples/generated/LidDrivenCavity3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Lid-Driven Cavity - 3D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Lid-Driven Cavity - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity3D.md","filePath":"examples/generated/LidDrivenCavity3D.md","lastUpdated":null}'),t={name:"examples/generated/LidDrivenCavity3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Lid-Driven Cavity - 3D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

julia
using CairoMakie
 using IncompressibleNavierStokes

Case name for saving results

julia
outdir = joinpath(@__DIR__, "output", "LidDrivenCavity3D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(1_000)

A 3D grid is a Cartesian product of three vectors. Here we refine the grid near the walls.

julia
x = cosine_grid(T(0), T(1), 25), cosine_grid(T(0), T(1), 25), LinRange(-T(0.2), T(0.2), 11)
 plotgrid(x...)

Boundary conditions: horizontal movement of the top lid

julia
U = (T(1), T(1 / 5), T(0))
diff --git a/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.lean.js b/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.lean.js
rename to previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.lean.js
index fd58d55b..73db73f6 100644
--- a/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.CXnvIfHv.lean.js
+++ b/previews/PR126/assets/examples_generated_LidDrivenCavity3D.md.Cl04Txa7.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Lid-Driven Cavity - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity3D.md","filePath":"examples/generated/LidDrivenCavity3D.md","lastUpdated":null}'),t={name:"examples/generated/LidDrivenCavity3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Lid-Driven Cavity - 3D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Lid-Driven Cavity - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/LidDrivenCavity3D.md","filePath":"examples/generated/LidDrivenCavity3D.md","lastUpdated":null}'),t={name:"examples/generated/LidDrivenCavity3D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Lid-Driven Cavity - 3D

In this example we consider a box with a moving lid. The velocity is initially at rest. The solution should reach at steady state equilibrium after a certain time. The same steady state should be obtained when solving a steady state problem.

julia
using CairoMakie
 using IncompressibleNavierStokes

Case name for saving results

julia
outdir = joinpath(@__DIR__, "output", "LidDrivenCavity3D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(1_000)

A 3D grid is a Cartesian product of three vectors. Here we refine the grid near the walls.

julia
x = cosine_grid(T(0), T(1), 25), cosine_grid(T(0), T(1), 25), LinRange(-T(0.2), T(0.2), 11)
 plotgrid(x...)

Boundary conditions: horizontal movement of the top lid

julia
U = (T(1), T(1 / 5), T(0))
diff --git a/previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.js b/previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.js
rename to previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.js
index c9244c80..8346ecbd 100644
--- a/previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.js
+++ b/previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as h,o as n}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/MultiActuator.md","filePath":"examples/generated/MultiActuator.md","lastUpdated":null}'),k={name:"examples/generated/MultiActuator.md"};function p(l,s,t,e,E,d){return n(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

julia
using CairoMakie
+import{_ as i,c as a,a5 as h,o as n}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/MultiActuator.md","filePath":"examples/generated/MultiActuator.md","lastUpdated":null}'),k={name:"examples/generated/MultiActuator.md"};function p(l,s,t,e,E,d){return n(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

julia
using CairoMakie
 using IncompressibleNavierStokes
 using Random

Output directory

julia
outdir = joinpath(@__DIR__, "output", "MultiActuator")

Floating point precision

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Boundary conditions

julia
boundary_conditions = (
diff --git a/previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.lean.js b/previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.lean.js
rename to previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.lean.js
index c9244c80..8346ecbd 100644
--- a/previews/PR126/assets/examples_generated_MultiActuator.md.DeF4XHSW.lean.js
+++ b/previews/PR126/assets/examples_generated_MultiActuator.md.Cx0M-9lH.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as h,o as n}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/MultiActuator.md","filePath":"examples/generated/MultiActuator.md","lastUpdated":null}'),k={name:"examples/generated/MultiActuator.md"};function p(l,s,t,e,E,d){return n(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

julia
using CairoMakie
+import{_ as i,c as a,a5 as h,o as n}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Unsteady actuator case - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/MultiActuator.md","filePath":"examples/generated/MultiActuator.md","lastUpdated":null}'),k={name:"examples/generated/MultiActuator.md"};function p(l,s,t,e,E,d){return n(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Unsteady actuator case - 2D

In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

julia
using CairoMakie
 using IncompressibleNavierStokes
 using Random

Output directory

julia
outdir = joinpath(@__DIR__, "output", "MultiActuator")

Floating point precision

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Boundary conditions

julia
boundary_conditions = (
diff --git a/previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.js b/previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.js
rename to previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.js
index 225afe90..6c59f311 100644
--- a/previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.js
+++ b/previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Planar mixing - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlanarMixing2D.md","filePath":"examples/generated/PlanarMixing2D.md","lastUpdated":null}'),k={name:"examples/generated/PlanarMixing2D.md"};function p(l,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Planar mixing - 2D

Planar mixing example, as presented in [3].

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Planar mixing - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlanarMixing2D.md","filePath":"examples/generated/PlanarMixing2D.md","lastUpdated":null}'),k={name:"examples/generated/PlanarMixing2D.md"};function p(l,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Planar mixing - 2D

Planar mixing example, as presented in [3].

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "PlanarMixing2D")

Viscosity model

julia
Re = 500.0

Boundary conditions

julia
ΔU = 1.0
 Ubar = 1.0
 ϵ = (0.082Ubar, 0.012Ubar)
diff --git a/previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.lean.js b/previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.lean.js
rename to previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.lean.js
index 225afe90..6c59f311 100644
--- a/previews/PR126/assets/examples_generated_PlanarMixing2D.md.DlU0y6-e.lean.js
+++ b/previews/PR126/assets/examples_generated_PlanarMixing2D.md.p5HNvMEf.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Planar mixing - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlanarMixing2D.md","filePath":"examples/generated/PlanarMixing2D.md","lastUpdated":null}'),k={name:"examples/generated/PlanarMixing2D.md"};function p(l,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Planar mixing - 2D

Planar mixing example, as presented in [3].

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Planar mixing - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlanarMixing2D.md","filePath":"examples/generated/PlanarMixing2D.md","lastUpdated":null}'),k={name:"examples/generated/PlanarMixing2D.md"};function p(l,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Planar mixing - 2D

Planar mixing example, as presented in [3].

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "PlanarMixing2D")

Viscosity model

julia
Re = 500.0

Boundary conditions

julia
ΔU = 1.0
 Ubar = 1.0
 ϵ = (0.082Ubar, 0.012Ubar)
diff --git a/previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.lean.js b/previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.lean.js
rename to previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.js
index b5f02751..c0993cd1 100644
--- a/previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.lean.js
+++ b/previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as h,o as k}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Plane jets - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlaneJets2D.md","filePath":"examples/generated/PlaneJets2D.md","lastUpdated":null}'),n={name:"examples/generated/PlaneJets2D.md"};function l(p,s,t,e,E,d){return k(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Plane jets - 2D

Plane jets example, as presented in [4]. Note that the original formulation is in 3D.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using FFTW
+import{_ as i,c as a,a5 as h,o as k}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Plane jets - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlaneJets2D.md","filePath":"examples/generated/PlaneJets2D.md","lastUpdated":null}'),n={name:"examples/generated/PlaneJets2D.md"};function l(p,s,t,e,E,d){return k(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Plane jets - 2D

Plane jets example, as presented in [4]. Note that the original formulation is in 3D.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using FFTW
 using CairoMakie
 using IncompressibleNavierStokes
 using LaTeXStrings

Output directory

julia
outdir = joinpath(@__DIR__, "output", "PlaneJets2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
diff --git a/previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.js b/previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.js
rename to previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.lean.js
index b5f02751..c0993cd1 100644
--- a/previews/PR126/assets/examples_generated_PlaneJets2D.md.Cxpw6Mt8.js
+++ b/previews/PR126/assets/examples_generated_PlaneJets2D.md.D5dQzF-j.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as h,o as k}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Plane jets - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlaneJets2D.md","filePath":"examples/generated/PlaneJets2D.md","lastUpdated":null}'),n={name:"examples/generated/PlaneJets2D.md"};function l(p,s,t,e,E,d){return k(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Plane jets - 2D

Plane jets example, as presented in [4]. Note that the original formulation is in 3D.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using FFTW
+import{_ as i,c as a,a5 as h,o as k}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Plane jets - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/PlaneJets2D.md","filePath":"examples/generated/PlaneJets2D.md","lastUpdated":null}'),n={name:"examples/generated/PlaneJets2D.md"};function l(p,s,t,e,E,d){return k(),a("div",null,s[0]||(s[0]=[h(`

Note: Output is not generated for this example (to save resources on GitHub).

Plane jets - 2D

Plane jets example, as presented in [4]. Note that the original formulation is in 3D.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using FFTW
 using CairoMakie
 using IncompressibleNavierStokes
 using LaTeXStrings

Output directory

julia
outdir = joinpath(@__DIR__, "output", "PlaneJets2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
diff --git a/previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.js b/previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.js
rename to previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.js
index 47edb7e0..e88ab186 100644
--- a/previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.js
+++ b/previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/assets/wkhxrwf.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/previews/PR126/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/previews/PR126/assets/smlqomf.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/previews/PR126/assets/ctebodm.D8geYuhY.png",C=JSON.parse('{"title":"Rayleigh-Bénard convection (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard2D.md","filePath":"examples/generated/RayleighBenard2D.md","lastUpdated":null}'),e={name:"examples/generated/RayleighBenard2D.md"};function E(r,s,d,g,y,F){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Bénard convection (2D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/assets/iibybek.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/previews/PR126/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/previews/PR126/assets/nsdhhlu.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/previews/PR126/assets/npdsiqn.D8geYuhY.png",C=JSON.parse('{"title":"Rayleigh-Bénard convection (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard2D.md","filePath":"examples/generated/RayleighBenard2D.md","lastUpdated":null}'),e={name:"examples/generated/RayleighBenard2D.md"};function E(r,s,d,g,y,F){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Bénard convection (2D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory for saving results

julia
outdir = joinpath(@__DIR__, "output", "RayleighBenard2D")
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/RayleighBenard2D"

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
@@ -86,14 +86,14 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const t
         nupdate = 50,
     ),
     log = timelogger(; nupdate = 1000),
-)
(rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#295#296"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), log = (initialize = IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#295#296"()))

Solve equation

julia
state, outputs = solve_unsteady(;
+)
(rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#291#292"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), log = (initialize = IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#291#292"()))

Solve equation

julia
state, outputs = solve_unsteady(;
     setup,
     ustart,
     tempstart,
     tlims = (T(0), T(20)),
     Δt = T(1e-2),
     processors,
-);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.014
+);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.015
 [ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.012

Nusselt numbers

julia
outputs.nusselt

Average temperature

julia
outputs.avg

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
diff --git a/previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.lean.js b/previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.lean.js
rename to previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.lean.js
index 47edb7e0..e88ab186 100644
--- a/previews/PR126/assets/examples_generated_RayleighBenard2D.md.BkiCHbrq.lean.js
+++ b/previews/PR126/assets/examples_generated_RayleighBenard2D.md.D9MRvGoD.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/assets/wkhxrwf.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/previews/PR126/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/previews/PR126/assets/smlqomf.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/previews/PR126/assets/ctebodm.D8geYuhY.png",C=JSON.parse('{"title":"Rayleigh-Bénard convection (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard2D.md","filePath":"examples/generated/RayleighBenard2D.md","lastUpdated":null}'),e={name:"examples/generated/RayleighBenard2D.md"};function E(r,s,d,g,y,F){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Bénard convection (2D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const t="/IncompressibleNavierStokes.jl/previews/PR126/assets/iibybek.BxypEGK2.png",l="/IncompressibleNavierStokes.jl/previews/PR126/RayleighBenard2D.mp4",k="/IncompressibleNavierStokes.jl/previews/PR126/assets/nsdhhlu.C3CW_rGA.png",p="/IncompressibleNavierStokes.jl/previews/PR126/assets/npdsiqn.D8geYuhY.png",C=JSON.parse('{"title":"Rayleigh-Bénard convection (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard2D.md","filePath":"examples/generated/RayleighBenard2D.md","lastUpdated":null}'),e={name:"examples/generated/RayleighBenard2D.md"};function E(r,s,d,g,y,F){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Bénard convection (2D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory for saving results

julia
outdir = joinpath(@__DIR__, "output", "RayleighBenard2D")
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/RayleighBenard2D"

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
@@ -86,14 +86,14 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const t
         nupdate = 50,
     ),
     log = timelogger(; nupdate = 1000),
-)
(rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#295#296"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), log = (initialize = IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#295#296"()))

Solve equation

julia
state, outputs = solve_unsteady(;
+)
(rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#291#292"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), log = (initialize = IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#291#292"()))

Solve equation

julia
state, outputs = solve_unsteady(;
     setup,
     ustart,
     tempstart,
     tlims = (T(0), T(20)),
     Δt = T(1e-2),
     processors,
-);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.014
+);
[ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.015
 [ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.012

Nusselt numbers

julia
outputs.nusselt

Average temperature

julia
outputs.avg

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
diff --git a/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.js b/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.js
rename to previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.js
index 7adb714e..47a92f40 100644
--- a/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.js
+++ b/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Rayleigh-Bénard convection (3D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard3D.md","filePath":"examples/generated/RayleighBenard3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighBenard3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Bénard convection (3D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Rayleigh-Bénard convection (3D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard3D.md","filePath":"examples/generated/RayleighBenard3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighBenard3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Bénard convection (3D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
 using IncompressibleNavierStokes

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
diff --git a/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.lean.js b/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.lean.js
rename to previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.lean.js
index 7adb714e..47a92f40 100644
--- a/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BFDE04bU.lean.js
+++ b/previews/PR126/assets/examples_generated_RayleighBenard3D.md.BwFG5aXw.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Rayleigh-Bénard convection (3D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard3D.md","filePath":"examples/generated/RayleighBenard3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighBenard3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Bénard convection (3D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Rayleigh-Bénard convection (3D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighBenard3D.md","filePath":"examples/generated/RayleighBenard3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighBenard3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Bénard convection (3D)

A hot and a cold plate generate a convection cell in a box.

julia
using CairoMakie
 using IncompressibleNavierStokes

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
diff --git a/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.js b/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.js
rename to previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.js
index 7be0e70f..524dcce9 100644
--- a/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.js
+++ b/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const k="/IncompressibleNavierStokes.jl/previews/PR126/assets/pvzthuc.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/previews/PR126/RayleighTaylor2D.mp4",F=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor2D.md","filePath":"examples/generated/RayleighTaylor2D.md","lastUpdated":null}'),p={name:"examples/generated/RayleighTaylor2D.md"};function l(e,s,E,r,d,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const k="/IncompressibleNavierStokes.jl/previews/PR126/assets/qkfemqj.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/previews/PR126/RayleighTaylor2D.mp4",F=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor2D.md","filePath":"examples/generated/RayleighTaylor2D.md","lastUpdated":null}'),p={name:"examples/generated/RayleighTaylor2D.md"};function l(e,s,E,r,d,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory for saving results

julia
outdir = joinpath(@__DIR__, "output", "RayleighTaylor2D")
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/RayleighTaylor2D"

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
@@ -35,15 +35,15 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const k
         log = timelogger(; nupdate = 200),
     ),
 );
[ Info: t = 1	Δt = 0.005	umax = 0.1	itertime = 0.011
-[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0032
-[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0032
+[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0033
+[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0033
 [ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0032
 [ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0032
 [ Info: t = 6	Δt = 0.005	umax = 0.84	itertime = 0.0032
-[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
+[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0032
 [ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
-[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
-[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0032

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
+[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0033
+[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0034

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
 outdir = joinpath(@__DIR__, "output", "RayleighTaylor2D")
diff --git a/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.lean.js b/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.lean.js
rename to previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.lean.js
index 7be0e70f..524dcce9 100644
--- a/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.oD5hepLY.lean.js
+++ b/previews/PR126/assets/examples_generated_RayleighTaylor2D.md.CiHBMR2I.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const k="/IncompressibleNavierStokes.jl/previews/PR126/assets/pvzthuc.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/previews/PR126/RayleighTaylor2D.mp4",F=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor2D.md","filePath":"examples/generated/RayleighTaylor2D.md","lastUpdated":null}'),p={name:"examples/generated/RayleighTaylor2D.md"};function l(e,s,E,r,d,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const k="/IncompressibleNavierStokes.jl/previews/PR126/assets/qkfemqj.C2NI-x6W.png",t="/IncompressibleNavierStokes.jl/previews/PR126/RayleighTaylor2D.mp4",F=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor2D.md","filePath":"examples/generated/RayleighTaylor2D.md","lastUpdated":null}'),p={name:"examples/generated/RayleighTaylor2D.md"};function l(e,s,E,r,d,g){return h(),a("div",null,s[0]||(s[0]=[n(`

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory for saving results

julia
outdir = joinpath(@__DIR__, "output", "RayleighTaylor2D")
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/RayleighTaylor2D"

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
@@ -35,15 +35,15 @@ import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const k
         log = timelogger(; nupdate = 200),
     ),
 );
[ Info: t = 1	Δt = 0.005	umax = 0.1	itertime = 0.011
-[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0032
-[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0032
+[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0033
+[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0033
 [ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0032
 [ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0032
 [ Info: t = 6	Δt = 0.005	umax = 0.84	itertime = 0.0032
-[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
+[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0032
 [ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
-[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
-[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0032

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
+[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0033
+[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0034

Copy-pasteable code

Below is the full code for this example stripped of comments and output.

julia
using GLMakie
 using IncompressibleNavierStokes
 
 outdir = joinpath(@__DIR__, "output", "RayleighTaylor2D")
diff --git a/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.js b/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.js
rename to previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.js
index ce56f9c6..abbba626 100644
--- a/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.js
+++ b/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor3D.md","filePath":"examples/generated/RayleighTaylor3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighTaylor3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor3D.md","filePath":"examples/generated/RayleighTaylor3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighTaylor3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
 using IncompressibleNavierStokes

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
diff --git a/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.lean.js b/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.lean.js
rename to previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.lean.js
index ce56f9c6..abbba626 100644
--- a/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.DNAhoUfj.lean.js
+++ b/previews/PR126/assets/examples_generated_RayleighTaylor3D.md.CyfwF_YF.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor3D.md","filePath":"examples/generated/RayleighTaylor3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighTaylor3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Rayleigh-Taylor instability in 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/RayleighTaylor3D.md","filePath":"examples/generated/RayleighTaylor3D.md","lastUpdated":null}'),k={name:"examples/generated/RayleighTaylor3D.md"};function l(p,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Rayleigh-Taylor instability in 2D

Two fluids with different temperatures start mixing.

julia
using CairoMakie
 using IncompressibleNavierStokes

Hardware

julia
backend = CPU()
 
 # using CUDA, CUDSS
diff --git a/previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.js b/previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.js
rename to previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.js
index 5007ce07..eae87abe 100644
--- a/previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.js
+++ b/previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Shear layer - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/ShearLayer2D.md","filePath":"examples/generated/ShearLayer2D.md","lastUpdated":null}'),t={name:"examples/generated/ShearLayer2D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Shear layer - 2D

Shear layer example.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Shear layer - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/ShearLayer2D.md","filePath":"examples/generated/ShearLayer2D.md","lastUpdated":null}'),t={name:"examples/generated/ShearLayer2D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Shear layer - 2D

Shear layer example.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "ShearLayer2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(2000)

A 2D grid is a Cartesian product of two vectors

julia
n = 128
 lims = T(0), T()
diff --git a/previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.lean.js b/previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.lean.js
rename to previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.lean.js
index 5007ce07..eae87abe 100644
--- a/previews/PR126/assets/examples_generated_ShearLayer2D.md.DGqD8BRv.lean.js
+++ b/previews/PR126/assets/examples_generated_ShearLayer2D.md.DYQHuo0o.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Shear layer - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/ShearLayer2D.md","filePath":"examples/generated/ShearLayer2D.md","lastUpdated":null}'),t={name:"examples/generated/ShearLayer2D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Shear layer - 2D

Shear layer example.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Shear layer - 2D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/ShearLayer2D.md","filePath":"examples/generated/ShearLayer2D.md","lastUpdated":null}'),t={name:"examples/generated/ShearLayer2D.md"};function p(l,s,k,e,E,d){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Shear layer - 2D

Shear layer example.

We start by loading packages. A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

julia
using CairoMakie
 using IncompressibleNavierStokes

Output directory

julia
outdir = joinpath(@__DIR__, "output", "ShearLayer2D")

Floating point type

julia
T = Float64

Backend

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Reynolds number

julia
Re = T(2000)

A 2D grid is a Cartesian product of two vectors

julia
n = 128
 lims = T(0), T()
diff --git a/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.js b/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.js
rename to previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.js
index 4111202b..7520bbf4 100644
--- a/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.js
+++ b/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.js
@@ -1,4 +1,4 @@
-import{_ as l,c as a,j as s,a as h,a5 as t,o as n}from"./chunks/framework.BSoZtefh.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/mwblntt.CGB02zQg.png",m=JSON.parse('{"title":"Convergence study: Taylor-Green vortex (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex2D.md","filePath":"examples/generated/TaylorGreenVortex2D.md","lastUpdated":null}'),k={name:"examples/generated/TaylorGreenVortex2D.md"},e={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.474ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.107ex",height:"6.078ex",role:"img",focusable:"false",viewBox:"0 -1593.3 14633.5 2686.7","aria-hidden":"true"};function r(E,i,T,Q,g,y){return n(),a("div",null,[i[2]||(i[2]=s("h1",{id:"Convergence-study:-Taylor-Green-vortex-(2D)",tabindex:"-1"},[h("Convergence study: Taylor-Green vortex (2D) "),s("a",{class:"header-anchor",href:"#Convergence-study:-Taylor-Green-vortex-(2D)","aria-label":'Permalink to "Convergence study: Taylor-Green vortex (2D) {#Convergence-study:-Taylor-Green-vortex-(2D)}"'},"​")],-1)),i[3]||(i[3]=s("p",null,"In this example we consider the Taylor-Green vortex. In 2D, it has an analytical solution, given by",-1)),s("mjx-container",e,[(n(),a("svg",d,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"−"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])]),s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"+"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])])])])],-1))]),i[4]||(i[4]=t(`

This allows us to test the convergence of our solver.

julia
using CairoMakie
+import{_ as l,c as a,j as s,a as h,a5 as t,o as n}from"./chunks/framework.CojPSOJE.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/udeaqlz.CGB02zQg.png",m=JSON.parse('{"title":"Convergence study: Taylor-Green vortex (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex2D.md","filePath":"examples/generated/TaylorGreenVortex2D.md","lastUpdated":null}'),k={name:"examples/generated/TaylorGreenVortex2D.md"},e={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.474ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.107ex",height:"6.078ex",role:"img",focusable:"false",viewBox:"0 -1593.3 14633.5 2686.7","aria-hidden":"true"};function r(E,i,T,Q,g,y){return n(),a("div",null,[i[2]||(i[2]=s("h1",{id:"Convergence-study:-Taylor-Green-vortex-(2D)",tabindex:"-1"},[h("Convergence study: Taylor-Green vortex (2D) "),s("a",{class:"header-anchor",href:"#Convergence-study:-Taylor-Green-vortex-(2D)","aria-label":'Permalink to "Convergence study: Taylor-Green vortex (2D) {#Convergence-study:-Taylor-Green-vortex-(2D)}"'},"​")],-1)),i[3]||(i[3]=s("p",null,"In this example we consider the Taylor-Green vortex. In 2D, it has an analytical solution, given by",-1)),s("mjx-container",e,[(n(),a("svg",d,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"−"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])]),s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"+"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])])])])],-1))]),i[4]||(i[4]=t(`

This allows us to test the convergence of our solver.

julia
using CairoMakie
 using IncompressibleNavierStokes
 using LinearAlgebra

Output directory

julia
outdir = joinpath(@__DIR__, "output", "TaylorGreenVortex2D")
 ispath(outdir) || mkpath(outdir)
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/TaylorGreenVortex2D"

Convergence

julia
"""
diff --git a/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.lean.js b/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.lean.js
rename to previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.lean.js
index 4111202b..7520bbf4 100644
--- a/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.DQ07YTsD.lean.js
+++ b/previews/PR126/assets/examples_generated_TaylorGreenVortex2D.md.Cu7C7v5Q.lean.js
@@ -1,4 +1,4 @@
-import{_ as l,c as a,j as s,a as h,a5 as t,o as n}from"./chunks/framework.BSoZtefh.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/mwblntt.CGB02zQg.png",m=JSON.parse('{"title":"Convergence study: Taylor-Green vortex (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex2D.md","filePath":"examples/generated/TaylorGreenVortex2D.md","lastUpdated":null}'),k={name:"examples/generated/TaylorGreenVortex2D.md"},e={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.474ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.107ex",height:"6.078ex",role:"img",focusable:"false",viewBox:"0 -1593.3 14633.5 2686.7","aria-hidden":"true"};function r(E,i,T,Q,g,y){return n(),a("div",null,[i[2]||(i[2]=s("h1",{id:"Convergence-study:-Taylor-Green-vortex-(2D)",tabindex:"-1"},[h("Convergence study: Taylor-Green vortex (2D) "),s("a",{class:"header-anchor",href:"#Convergence-study:-Taylor-Green-vortex-(2D)","aria-label":'Permalink to "Convergence study: Taylor-Green vortex (2D) {#Convergence-study:-Taylor-Green-vortex-(2D)}"'},"​")],-1)),i[3]||(i[3]=s("p",null,"In this example we consider the Taylor-Green vortex. In 2D, it has an analytical solution, given by",-1)),s("mjx-container",e,[(n(),a("svg",d,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"−"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])]),s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"+"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])])])])],-1))]),i[4]||(i[4]=t(`

This allows us to test the convergence of our solver.

julia
using CairoMakie
+import{_ as l,c as a,j as s,a as h,a5 as t,o as n}from"./chunks/framework.CojPSOJE.js";const p="/IncompressibleNavierStokes.jl/previews/PR126/assets/udeaqlz.CGB02zQg.png",m=JSON.parse('{"title":"Convergence study: Taylor-Green vortex (2D)","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex2D.md","filePath":"examples/generated/TaylorGreenVortex2D.md","lastUpdated":null}'),k={name:"examples/generated/TaylorGreenVortex2D.md"},e={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.474ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.107ex",height:"6.078ex",role:"img",focusable:"false",viewBox:"0 -1593.3 14633.5 2686.7","aria-hidden":"true"};function r(E,i,T,Q,g,y){return n(),a("div",null,[i[2]||(i[2]=s("h1",{id:"Convergence-study:-Taylor-Green-vortex-(2D)",tabindex:"-1"},[h("Convergence study: Taylor-Green vortex (2D) "),s("a",{class:"header-anchor",href:"#Convergence-study:-Taylor-Green-vortex-(2D)","aria-label":'Permalink to "Convergence study: Taylor-Green vortex (2D) {#Convergence-study:-Taylor-Green-vortex-(2D)}"'},"​")],-1)),i[3]||(i[3]=s("p",null,"In this example we consider the Taylor-Green vortex. In 2D, it has an analytical solution, given by",-1)),s("mjx-container",e,[(n(),a("svg",d,i[0]||(i[0]=[t('',1)]))),i[1]||(i[1]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"1")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"−"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])]),s("mtr",null,[s("mtd",null,[s("msup",null,[s("mi",null,"u"),s("mn",null,"2")]),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",null,","),s("mi",null,"y"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",null,"+"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mi",null,"sin"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mo",{stretchy:"false"},"("),s("mi",null,"y"),s("mo",{stretchy:"false"},")"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"e")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"2"),s("mi",null,"t"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("mi",null,"R"),s("mi",null,"e")])])])])])])],-1))]),i[4]||(i[4]=t(`

This allows us to test the convergence of our solver.

julia
using CairoMakie
 using IncompressibleNavierStokes
 using LinearAlgebra

Output directory

julia
outdir = joinpath(@__DIR__, "output", "TaylorGreenVortex2D")
 ispath(outdir) || mkpath(outdir)
"/home/runner/work/IncompressibleNavierStokes.jl/IncompressibleNavierStokes.jl/docs/build/examples/generated/output/TaylorGreenVortex2D"

Convergence

julia
"""
diff --git a/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.js b/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.js
rename to previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.js
index 8f19a554..7fc1d6d6 100644
--- a/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.js
+++ b/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Taylor-Green vortex - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex3D.md","filePath":"examples/generated/TaylorGreenVortex3D.md","lastUpdated":null}'),p={name:"examples/generated/TaylorGreenVortex3D.md"};function l(k,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Taylor-Green vortex - 3D

In this example we consider the Taylor-Green vortex.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Taylor-Green vortex - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex3D.md","filePath":"examples/generated/TaylorGreenVortex3D.md","lastUpdated":null}'),p={name:"examples/generated/TaylorGreenVortex3D.md"};function l(k,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Taylor-Green vortex - 3D

In this example we consider the Taylor-Green vortex.

julia
using CairoMakie
 using IncompressibleNavierStokes

Floating point precision

julia
T = Float64

Backend

Running in 3D is heavier than in 2D. If you are running this on a CPU, consider using multiple threads by starting Julia with julia -t auto, or add "julia.NumThreads": "auto" to the settings in VSCode.

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Setup

julia
n = 32
 r = range(T(0), T(1), n + 1)
diff --git a/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.lean.js b/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.lean.js
similarity index 99%
rename from previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.lean.js
rename to previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.lean.js
index 8f19a554..7fc1d6d6 100644
--- a/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.CgnLg1YH.lean.js
+++ b/previews/PR126/assets/examples_generated_TaylorGreenVortex3D.md.Cvz76giG.lean.js
@@ -1,4 +1,4 @@
-import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Taylor-Green vortex - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex3D.md","filePath":"examples/generated/TaylorGreenVortex3D.md","lastUpdated":null}'),p={name:"examples/generated/TaylorGreenVortex3D.md"};function l(k,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Taylor-Green vortex - 3D

In this example we consider the Taylor-Green vortex.

julia
using CairoMakie
+import{_ as i,c as a,a5 as n,o as h}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Taylor-Green vortex - 3D","description":"","frontmatter":{},"headers":[],"relativePath":"examples/generated/TaylorGreenVortex3D.md","filePath":"examples/generated/TaylorGreenVortex3D.md","lastUpdated":null}'),p={name:"examples/generated/TaylorGreenVortex3D.md"};function l(k,s,t,e,E,r){return h(),a("div",null,s[0]||(s[0]=[n(`

Note: Output is not generated for this example (to save resources on GitHub).

Taylor-Green vortex - 3D

In this example we consider the Taylor-Green vortex.

julia
using CairoMakie
 using IncompressibleNavierStokes

Floating point precision

julia
T = Float64

Backend

Running in 3D is heavier than in 2D. If you are running this on a CPU, consider using multiple threads by starting Julia with julia -t auto, or add "julia.NumThreads": "auto" to the settings in VSCode.

julia
backend = CPU()
 # using CUDA; backend = CUDABackend()

Setup

julia
n = 32
 r = range(T(0), T(1), n + 1)
diff --git a/previews/PR126/assets/examples_index.md.Bv0KGHOS.js b/previews/PR126/assets/examples_index.md.VmxEgioE.js
similarity index 97%
rename from previews/PR126/assets/examples_index.md.Bv0KGHOS.js
rename to previews/PR126/assets/examples_index.md.VmxEgioE.js
index 60999c3c..fbd349a7 100644
--- a/previews/PR126/assets/examples_index.md.Bv0KGHOS.js
+++ b/previews/PR126/assets/examples_index.md.VmxEgioE.js
@@ -1 +1 @@
-import{d,o as t,c as i,j as e,k as m,g as f,t as p,_ as u,F as y,C as D,b,K as w,a5 as v,G as o,a as c}from"./chunks/framework.BSoZtefh.js";const x={class:"img-box"},_=["href"],k=["src"],N={class:"transparent-box1"},T={class:"caption"},S={class:"transparent-box2"},B={class:"subcaption"},F={class:"opacity-low"},C=d({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(g){return(a,s)=>(t(),i("div",x,[e("a",{href:a.href},[e("img",{src:m(f)(a.src),height:"100px",alt:""},null,8,k),e("div",N,[e("div",T,[e("h2",null,p(a.caption),1)])]),e("div",S,[e("div",B,[e("p",F,p(a.desc),1)])])],8,_)]))}}),G=u(C,[["__scopeId","data-v-f778be06"]]),P={class:"gallery-image"},R=d({__name:"Gallery",props:{images:{}},setup(g){return(a,s)=>(t(),i("div",P,[(t(!0),i(y,null,D(a.images,l=>(t(),b(G,w({ref_for:!0},l),null,16))),256))]))}}),n=u(R,[["__scopeId","data-v-9f22d17b"]]),A=JSON.parse('{"title":"Examples gallery","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":null}'),q={name:"examples/index.md"},E=d({...q,setup(g){const a=[{href:"generated/DecayingTurbulence2D",src:"../DecayingTurbulence2D.gif",caption:"Decaying turbulence (2D)",desc:"Decaying turbulence in a periodic 2D-box"},{href:"generated/DecayingTurbulence3D",src:"../DecayingTurbulence3D.png",caption:"Decaying turbulence (3D)",desc:"Decaying turbulence in a periodic 3D-box"},{href:"generated/TaylorGreenVortex2D",src:"../TaylorGreenVortex2D.png",caption:"Taylor-Green vortex (2D)",desc:"Decaying vortex structures in a periodic 2D-box"},{href:"generated/TaylorGreenVortex3D",src:"../TaylorGreenVortex3D.png",caption:"Taylor-Green vortex (3D)",desc:"Decaying vortex structures in a periodic 3D-box"},{href:"generated/Kolmogorov2D",src:"../logo.svg",caption:"Kolmogorov flow (2D)",desc:"Initiate a flow through a sinusoidal force"},{href:"generated/ShearLayer2D",src:"../logo.svg",caption:"Shear-layer (2D)",desc:"Two layers with different velocities"},{href:"generated/PlanarMixing2D",src:"../logo.svg",caption:"Planar mixing (2D)",desc:"Planar mixing layers"}],s=[{href:"generated/Actuator2D",src:"../Actuator2D.gif",caption:"Actuator (2D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/Actuator3D",src:"../Actuator3D.png",caption:"Actuator (3D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/BackwardFacingStep2D",src:"../BackwardFacingStep2D.png",caption:"Backward Facing Step (2D)",desc:"Flow past a backward facing step"},{href:"generated/BackwardFacingStep3D",src:"../BackwardFacingStep3D.png",caption:"Backward Facing Step (3D)",desc:"Flow past a backward facing step"},{href:"generated/LidDrivenCavity2D",src:"../logo.svg",caption:"Lid-driven cavity (2D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/LidDrivenCavity3D",src:"../logo.svg",caption:"Lid-driven cavity (3D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/MultiActuator",src:"../logo.svg",desc:"Multi-actuator (2D)",caption:"Unsteady inflow around multiple actuator disks"}],l=[{href:"generated/RayleighBenard2D",src:"../RayleighBenard2D.gif",caption:"Rayleigh-Bénard convection (2D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighBenard3D",src:"../RayleighBenard3D.gif",caption:"Rayleigh-Bénard convection (3D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighTaylor2D",src:"../RayleighTaylor2D.gif",caption:"Rayleigh-Taylor instability (2D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"},{href:"generated/RayleighTaylor3D",src:"../logo.svg",caption:"Rayleigh-Taylor instability (3D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"}],h=[{href:"generated/prioranalysis",src:"../logo.svg",caption:"Filter analysis",desc:"Compare discrete filters and their properties with DNS data"},{href:"generated/postanalysis",src:"../logo.svg",caption:"CNN closure models",desc:"Compare CNN closure models for different filters, grid sizes, and projection orders"},{href:"generated/symmetryanalysis",src:"../logo.svg",caption:"Symmetry-preserving closure models",desc:"Train group equivariant CNNs and compare to normal CNNs"}];return(L,r)=>(t(),i("div",null,[r[0]||(r[0]=v('

Examples gallery

Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

Simple flows

',3)),o(n,{images:a}),r[1]||(r[1]=e("h2",{id:"Flows-with-mixed-boundary-conditions",tabindex:"-1"},[c("Flows with mixed boundary conditions "),e("a",{class:"header-anchor",href:"#Flows-with-mixed-boundary-conditions","aria-label":'Permalink to "Flows with mixed boundary conditions {#Flows-with-mixed-boundary-conditions}"'},"​")],-1)),o(n,{images:s}),r[2]||(r[2]=e("h2",{id:"With-a-temperature-equation",tabindex:"-1"},[c("With a temperature equation "),e("a",{class:"header-anchor",href:"#With-a-temperature-equation","aria-label":'Permalink to "With a temperature equation {#With-a-temperature-equation}"'},"​")],-1)),o(n,{images:l}),r[3]||(r[3]=e("h2",{id:"Neural-network-closure-models",tabindex:"-1"},[c("Neural network closure models "),e("a",{class:"header-anchor",href:"#Neural-network-closure-models","aria-label":'Permalink to "Neural network closure models {#Neural-network-closure-models}"'},"​")],-1)),o(n,{images:h})]))}});export{A as __pageData,E as default}; +import{d,o as t,c as i,j as e,k as m,g as f,t as p,_ as u,F as y,C as D,b,K as w,a5 as v,G as o,a as c}from"./chunks/framework.CojPSOJE.js";const x={class:"img-box"},_=["href"],k=["src"],N={class:"transparent-box1"},T={class:"caption"},S={class:"transparent-box2"},B={class:"subcaption"},F={class:"opacity-low"},C=d({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(g){return(a,s)=>(t(),i("div",x,[e("a",{href:a.href},[e("img",{src:m(f)(a.src),height:"100px",alt:""},null,8,k),e("div",N,[e("div",T,[e("h2",null,p(a.caption),1)])]),e("div",S,[e("div",B,[e("p",F,p(a.desc),1)])])],8,_)]))}}),G=u(C,[["__scopeId","data-v-f778be06"]]),P={class:"gallery-image"},R=d({__name:"Gallery",props:{images:{}},setup(g){return(a,s)=>(t(),i("div",P,[(t(!0),i(y,null,D(a.images,l=>(t(),b(G,w({ref_for:!0},l),null,16))),256))]))}}),n=u(R,[["__scopeId","data-v-9f22d17b"]]),A=JSON.parse('{"title":"Examples gallery","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":null}'),q={name:"examples/index.md"},E=d({...q,setup(g){const a=[{href:"generated/DecayingTurbulence2D",src:"../DecayingTurbulence2D.gif",caption:"Decaying turbulence (2D)",desc:"Decaying turbulence in a periodic 2D-box"},{href:"generated/DecayingTurbulence3D",src:"../DecayingTurbulence3D.png",caption:"Decaying turbulence (3D)",desc:"Decaying turbulence in a periodic 3D-box"},{href:"generated/TaylorGreenVortex2D",src:"../TaylorGreenVortex2D.png",caption:"Taylor-Green vortex (2D)",desc:"Decaying vortex structures in a periodic 2D-box"},{href:"generated/TaylorGreenVortex3D",src:"../TaylorGreenVortex3D.png",caption:"Taylor-Green vortex (3D)",desc:"Decaying vortex structures in a periodic 3D-box"},{href:"generated/Kolmogorov2D",src:"../logo.svg",caption:"Kolmogorov flow (2D)",desc:"Initiate a flow through a sinusoidal force"},{href:"generated/ShearLayer2D",src:"../logo.svg",caption:"Shear-layer (2D)",desc:"Two layers with different velocities"},{href:"generated/PlanarMixing2D",src:"../logo.svg",caption:"Planar mixing (2D)",desc:"Planar mixing layers"}],s=[{href:"generated/Actuator2D",src:"../Actuator2D.gif",caption:"Actuator (2D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/Actuator3D",src:"../Actuator3D.png",caption:"Actuator (3D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/BackwardFacingStep2D",src:"../BackwardFacingStep2D.png",caption:"Backward Facing Step (2D)",desc:"Flow past a backward facing step"},{href:"generated/BackwardFacingStep3D",src:"../BackwardFacingStep3D.png",caption:"Backward Facing Step (3D)",desc:"Flow past a backward facing step"},{href:"generated/LidDrivenCavity2D",src:"../logo.svg",caption:"Lid-driven cavity (2D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/LidDrivenCavity3D",src:"../logo.svg",caption:"Lid-driven cavity (3D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/MultiActuator",src:"../logo.svg",desc:"Multi-actuator (2D)",caption:"Unsteady inflow around multiple actuator disks"}],l=[{href:"generated/RayleighBenard2D",src:"../RayleighBenard2D.gif",caption:"Rayleigh-Bénard convection (2D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighBenard3D",src:"../RayleighBenard3D.gif",caption:"Rayleigh-Bénard convection (3D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighTaylor2D",src:"../RayleighTaylor2D.gif",caption:"Rayleigh-Taylor instability (2D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"},{href:"generated/RayleighTaylor3D",src:"../logo.svg",caption:"Rayleigh-Taylor instability (3D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"}],h=[{href:"generated/prioranalysis",src:"../logo.svg",caption:"Filter analysis",desc:"Compare discrete filters and their properties with DNS data"},{href:"generated/postanalysis",src:"../logo.svg",caption:"CNN closure models",desc:"Compare CNN closure models for different filters, grid sizes, and projection orders"},{href:"generated/symmetryanalysis",src:"../logo.svg",caption:"Symmetry-preserving closure models",desc:"Train group equivariant CNNs and compare to normal CNNs"}];return(L,r)=>(t(),i("div",null,[r[0]||(r[0]=v('

Examples gallery

Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

Simple flows

',3)),o(n,{images:a}),r[1]||(r[1]=e("h2",{id:"Flows-with-mixed-boundary-conditions",tabindex:"-1"},[c("Flows with mixed boundary conditions "),e("a",{class:"header-anchor",href:"#Flows-with-mixed-boundary-conditions","aria-label":'Permalink to "Flows with mixed boundary conditions {#Flows-with-mixed-boundary-conditions}"'},"​")],-1)),o(n,{images:s}),r[2]||(r[2]=e("h2",{id:"With-a-temperature-equation",tabindex:"-1"},[c("With a temperature equation "),e("a",{class:"header-anchor",href:"#With-a-temperature-equation","aria-label":'Permalink to "With a temperature equation {#With-a-temperature-equation}"'},"​")],-1)),o(n,{images:l}),r[3]||(r[3]=e("h2",{id:"Neural-network-closure-models",tabindex:"-1"},[c("Neural network closure models "),e("a",{class:"header-anchor",href:"#Neural-network-closure-models","aria-label":'Permalink to "Neural network closure models {#Neural-network-closure-models}"'},"​")],-1)),o(n,{images:h})]))}});export{A as __pageData,E as default}; diff --git a/previews/PR126/assets/examples_index.md.Bv0KGHOS.lean.js b/previews/PR126/assets/examples_index.md.VmxEgioE.lean.js similarity index 97% rename from previews/PR126/assets/examples_index.md.Bv0KGHOS.lean.js rename to previews/PR126/assets/examples_index.md.VmxEgioE.lean.js index 60999c3c..fbd349a7 100644 --- a/previews/PR126/assets/examples_index.md.Bv0KGHOS.lean.js +++ b/previews/PR126/assets/examples_index.md.VmxEgioE.lean.js @@ -1 +1 @@ -import{d,o as t,c as i,j as e,k as m,g as f,t as p,_ as u,F as y,C as D,b,K as w,a5 as v,G as o,a as c}from"./chunks/framework.BSoZtefh.js";const x={class:"img-box"},_=["href"],k=["src"],N={class:"transparent-box1"},T={class:"caption"},S={class:"transparent-box2"},B={class:"subcaption"},F={class:"opacity-low"},C=d({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(g){return(a,s)=>(t(),i("div",x,[e("a",{href:a.href},[e("img",{src:m(f)(a.src),height:"100px",alt:""},null,8,k),e("div",N,[e("div",T,[e("h2",null,p(a.caption),1)])]),e("div",S,[e("div",B,[e("p",F,p(a.desc),1)])])],8,_)]))}}),G=u(C,[["__scopeId","data-v-f778be06"]]),P={class:"gallery-image"},R=d({__name:"Gallery",props:{images:{}},setup(g){return(a,s)=>(t(),i("div",P,[(t(!0),i(y,null,D(a.images,l=>(t(),b(G,w({ref_for:!0},l),null,16))),256))]))}}),n=u(R,[["__scopeId","data-v-9f22d17b"]]),A=JSON.parse('{"title":"Examples gallery","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":null}'),q={name:"examples/index.md"},E=d({...q,setup(g){const a=[{href:"generated/DecayingTurbulence2D",src:"../DecayingTurbulence2D.gif",caption:"Decaying turbulence (2D)",desc:"Decaying turbulence in a periodic 2D-box"},{href:"generated/DecayingTurbulence3D",src:"../DecayingTurbulence3D.png",caption:"Decaying turbulence (3D)",desc:"Decaying turbulence in a periodic 3D-box"},{href:"generated/TaylorGreenVortex2D",src:"../TaylorGreenVortex2D.png",caption:"Taylor-Green vortex (2D)",desc:"Decaying vortex structures in a periodic 2D-box"},{href:"generated/TaylorGreenVortex3D",src:"../TaylorGreenVortex3D.png",caption:"Taylor-Green vortex (3D)",desc:"Decaying vortex structures in a periodic 3D-box"},{href:"generated/Kolmogorov2D",src:"../logo.svg",caption:"Kolmogorov flow (2D)",desc:"Initiate a flow through a sinusoidal force"},{href:"generated/ShearLayer2D",src:"../logo.svg",caption:"Shear-layer (2D)",desc:"Two layers with different velocities"},{href:"generated/PlanarMixing2D",src:"../logo.svg",caption:"Planar mixing (2D)",desc:"Planar mixing layers"}],s=[{href:"generated/Actuator2D",src:"../Actuator2D.gif",caption:"Actuator (2D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/Actuator3D",src:"../Actuator3D.png",caption:"Actuator (3D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/BackwardFacingStep2D",src:"../BackwardFacingStep2D.png",caption:"Backward Facing Step (2D)",desc:"Flow past a backward facing step"},{href:"generated/BackwardFacingStep3D",src:"../BackwardFacingStep3D.png",caption:"Backward Facing Step (3D)",desc:"Flow past a backward facing step"},{href:"generated/LidDrivenCavity2D",src:"../logo.svg",caption:"Lid-driven cavity (2D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/LidDrivenCavity3D",src:"../logo.svg",caption:"Lid-driven cavity (3D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/MultiActuator",src:"../logo.svg",desc:"Multi-actuator (2D)",caption:"Unsteady inflow around multiple actuator disks"}],l=[{href:"generated/RayleighBenard2D",src:"../RayleighBenard2D.gif",caption:"Rayleigh-Bénard convection (2D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighBenard3D",src:"../RayleighBenard3D.gif",caption:"Rayleigh-Bénard convection (3D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighTaylor2D",src:"../RayleighTaylor2D.gif",caption:"Rayleigh-Taylor instability (2D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"},{href:"generated/RayleighTaylor3D",src:"../logo.svg",caption:"Rayleigh-Taylor instability (3D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"}],h=[{href:"generated/prioranalysis",src:"../logo.svg",caption:"Filter analysis",desc:"Compare discrete filters and their properties with DNS data"},{href:"generated/postanalysis",src:"../logo.svg",caption:"CNN closure models",desc:"Compare CNN closure models for different filters, grid sizes, and projection orders"},{href:"generated/symmetryanalysis",src:"../logo.svg",caption:"Symmetry-preserving closure models",desc:"Train group equivariant CNNs and compare to normal CNNs"}];return(L,r)=>(t(),i("div",null,[r[0]||(r[0]=v('

Examples gallery

Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

Simple flows

',3)),o(n,{images:a}),r[1]||(r[1]=e("h2",{id:"Flows-with-mixed-boundary-conditions",tabindex:"-1"},[c("Flows with mixed boundary conditions "),e("a",{class:"header-anchor",href:"#Flows-with-mixed-boundary-conditions","aria-label":'Permalink to "Flows with mixed boundary conditions {#Flows-with-mixed-boundary-conditions}"'},"​")],-1)),o(n,{images:s}),r[2]||(r[2]=e("h2",{id:"With-a-temperature-equation",tabindex:"-1"},[c("With a temperature equation "),e("a",{class:"header-anchor",href:"#With-a-temperature-equation","aria-label":'Permalink to "With a temperature equation {#With-a-temperature-equation}"'},"​")],-1)),o(n,{images:l}),r[3]||(r[3]=e("h2",{id:"Neural-network-closure-models",tabindex:"-1"},[c("Neural network closure models "),e("a",{class:"header-anchor",href:"#Neural-network-closure-models","aria-label":'Permalink to "Neural network closure models {#Neural-network-closure-models}"'},"​")],-1)),o(n,{images:h})]))}});export{A as __pageData,E as default}; +import{d,o as t,c as i,j as e,k as m,g as f,t as p,_ as u,F as y,C as D,b,K as w,a5 as v,G as o,a as c}from"./chunks/framework.CojPSOJE.js";const x={class:"img-box"},_=["href"],k=["src"],N={class:"transparent-box1"},T={class:"caption"},S={class:"transparent-box2"},B={class:"subcaption"},F={class:"opacity-low"},C=d({__name:"GalleryImage",props:{href:{},src:{},caption:{},desc:{}},setup(g){return(a,s)=>(t(),i("div",x,[e("a",{href:a.href},[e("img",{src:m(f)(a.src),height:"100px",alt:""},null,8,k),e("div",N,[e("div",T,[e("h2",null,p(a.caption),1)])]),e("div",S,[e("div",B,[e("p",F,p(a.desc),1)])])],8,_)]))}}),G=u(C,[["__scopeId","data-v-f778be06"]]),P={class:"gallery-image"},R=d({__name:"Gallery",props:{images:{}},setup(g){return(a,s)=>(t(),i("div",P,[(t(!0),i(y,null,D(a.images,l=>(t(),b(G,w({ref_for:!0},l),null,16))),256))]))}}),n=u(R,[["__scopeId","data-v-9f22d17b"]]),A=JSON.parse('{"title":"Examples gallery","description":"","frontmatter":{},"headers":[],"relativePath":"examples/index.md","filePath":"examples/index.md","lastUpdated":null}'),q={name:"examples/index.md"},E=d({...q,setup(g){const a=[{href:"generated/DecayingTurbulence2D",src:"../DecayingTurbulence2D.gif",caption:"Decaying turbulence (2D)",desc:"Decaying turbulence in a periodic 2D-box"},{href:"generated/DecayingTurbulence3D",src:"../DecayingTurbulence3D.png",caption:"Decaying turbulence (3D)",desc:"Decaying turbulence in a periodic 3D-box"},{href:"generated/TaylorGreenVortex2D",src:"../TaylorGreenVortex2D.png",caption:"Taylor-Green vortex (2D)",desc:"Decaying vortex structures in a periodic 2D-box"},{href:"generated/TaylorGreenVortex3D",src:"../TaylorGreenVortex3D.png",caption:"Taylor-Green vortex (3D)",desc:"Decaying vortex structures in a periodic 3D-box"},{href:"generated/Kolmogorov2D",src:"../logo.svg",caption:"Kolmogorov flow (2D)",desc:"Initiate a flow through a sinusoidal force"},{href:"generated/ShearLayer2D",src:"../logo.svg",caption:"Shear-layer (2D)",desc:"Two layers with different velocities"},{href:"generated/PlanarMixing2D",src:"../logo.svg",caption:"Planar mixing (2D)",desc:"Planar mixing layers"}],s=[{href:"generated/Actuator2D",src:"../Actuator2D.gif",caption:"Actuator (2D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/Actuator3D",src:"../Actuator3D.png",caption:"Actuator (3D)",desc:"Unsteady inflow around an actuator disk"},{href:"generated/BackwardFacingStep2D",src:"../BackwardFacingStep2D.png",caption:"Backward Facing Step (2D)",desc:"Flow past a backward facing step"},{href:"generated/BackwardFacingStep3D",src:"../BackwardFacingStep3D.png",caption:"Backward Facing Step (3D)",desc:"Flow past a backward facing step"},{href:"generated/LidDrivenCavity2D",src:"../logo.svg",caption:"Lid-driven cavity (2D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/LidDrivenCavity3D",src:"../logo.svg",caption:"Lid-driven cavity (3D)",desc:"Generate a flow caused by a moving lid"},{href:"generated/MultiActuator",src:"../logo.svg",desc:"Multi-actuator (2D)",caption:"Unsteady inflow around multiple actuator disks"}],l=[{href:"generated/RayleighBenard2D",src:"../RayleighBenard2D.gif",caption:"Rayleigh-Bénard convection (2D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighBenard3D",src:"../RayleighBenard3D.gif",caption:"Rayleigh-Bénard convection (3D)",desc:"Convection generated by a temperature gradient between a hot and a cold plate"},{href:"generated/RayleighTaylor2D",src:"../RayleighTaylor2D.gif",caption:"Rayleigh-Taylor instability (2D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"},{href:"generated/RayleighTaylor3D",src:"../logo.svg",caption:"Rayleigh-Taylor instability (3D)",desc:"Convection generated by a temperature gradient between hot and cold fluids"}],h=[{href:"generated/prioranalysis",src:"../logo.svg",caption:"Filter analysis",desc:"Compare discrete filters and their properties with DNS data"},{href:"generated/postanalysis",src:"../logo.svg",caption:"CNN closure models",desc:"Compare CNN closure models for different filters, grid sizes, and projection orders"},{href:"generated/symmetryanalysis",src:"../logo.svg",caption:"Symmetry-preserving closure models",desc:"Train group equivariant CNNs and compare to normal CNNs"}];return(L,r)=>(t(),i("div",null,[r[0]||(r[0]=v('

Examples gallery

Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

Simple flows

',3)),o(n,{images:a}),r[1]||(r[1]=e("h2",{id:"Flows-with-mixed-boundary-conditions",tabindex:"-1"},[c("Flows with mixed boundary conditions "),e("a",{class:"header-anchor",href:"#Flows-with-mixed-boundary-conditions","aria-label":'Permalink to "Flows with mixed boundary conditions {#Flows-with-mixed-boundary-conditions}"'},"​")],-1)),o(n,{images:s}),r[2]||(r[2]=e("h2",{id:"With-a-temperature-equation",tabindex:"-1"},[c("With a temperature equation "),e("a",{class:"header-anchor",href:"#With-a-temperature-equation","aria-label":'Permalink to "With a temperature equation {#With-a-temperature-equation}"'},"​")],-1)),o(n,{images:l}),r[3]||(r[3]=e("h2",{id:"Neural-network-closure-models",tabindex:"-1"},[c("Neural network closure models "),e("a",{class:"header-anchor",href:"#Neural-network-closure-models","aria-label":'Permalink to "Neural network closure models {#Neural-network-closure-models}"'},"​")],-1)),o(n,{images:h})]))}});export{A as __pageData,E as default}; diff --git a/previews/PR126/assets/gdusrnj.D0YptP_W.png b/previews/PR126/assets/gdusrnj.D0YptP_W.png new file mode 100644 index 00000000..1bbe75c4 Binary files /dev/null and b/previews/PR126/assets/gdusrnj.D0YptP_W.png differ diff --git a/previews/PR126/assets/getting_started.md.CNlPkqwq.js b/previews/PR126/assets/getting_started.md.C05263AI.js similarity index 90% rename from previews/PR126/assets/getting_started.md.CNlPkqwq.js rename to previews/PR126/assets/getting_started.md.C05263AI.js index 91bffc35..0ad144ba 100644 --- a/previews/PR126/assets/getting_started.md.CNlPkqwq.js +++ b/previews/PR126/assets/getting_started.md.C05263AI.js @@ -1 +1 @@ -import{_ as t,c as a,a5 as s,o as i}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),n={name:"getting_started.md"};function o(r,e,l,d,p,c){return i(),a("div",null,e[0]||(e[0]=[s('

Getting Started

To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

sh
add IncompressibleNavierStokes

which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

Check out the gallery for commented example simulations.

',5)]))}const m=t(n,[["render",o]]);export{g as __pageData,m as default}; +import{_ as t,c as a,a5 as s,o as i}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),n={name:"getting_started.md"};function o(r,e,l,d,p,c){return i(),a("div",null,e[0]||(e[0]=[s('

Getting Started

To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

sh
add IncompressibleNavierStokes

which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

Check out the gallery for commented example simulations.

',5)]))}const m=t(n,[["render",o]]);export{g as __pageData,m as default}; diff --git a/previews/PR126/assets/getting_started.md.CNlPkqwq.lean.js b/previews/PR126/assets/getting_started.md.C05263AI.lean.js similarity index 90% rename from previews/PR126/assets/getting_started.md.CNlPkqwq.lean.js rename to previews/PR126/assets/getting_started.md.C05263AI.lean.js index 91bffc35..0ad144ba 100644 --- a/previews/PR126/assets/getting_started.md.CNlPkqwq.lean.js +++ b/previews/PR126/assets/getting_started.md.C05263AI.lean.js @@ -1 +1 @@ -import{_ as t,c as a,a5 as s,o as i}from"./chunks/framework.BSoZtefh.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),n={name:"getting_started.md"};function o(r,e,l,d,p,c){return i(),a("div",null,e[0]||(e[0]=[s('

Getting Started

To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

sh
add IncompressibleNavierStokes

which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

Check out the gallery for commented example simulations.

',5)]))}const m=t(n,[["render",o]]);export{g as __pageData,m as default}; +import{_ as t,c as a,a5 as s,o as i}from"./chunks/framework.CojPSOJE.js";const g=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),n={name:"getting_started.md"};function o(r,e,l,d,p,c){return i(),a("div",null,e[0]||(e[0]=[s('

Getting Started

To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

sh
add IncompressibleNavierStokes

which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

Check out the gallery for commented example simulations.

',5)]))}const m=t(n,[["render",o]]);export{g as __pageData,m as default}; diff --git a/previews/PR126/assets/twcloar.B0GX2W7p.png b/previews/PR126/assets/gmwwpzt.B0GX2W7p.png similarity index 100% rename from previews/PR126/assets/twcloar.B0GX2W7p.png rename to previews/PR126/assets/gmwwpzt.B0GX2W7p.png diff --git a/previews/PR126/assets/wkhxrwf.BxypEGK2.png b/previews/PR126/assets/iibybek.BxypEGK2.png similarity index 100% rename from previews/PR126/assets/wkhxrwf.BxypEGK2.png rename to previews/PR126/assets/iibybek.BxypEGK2.png diff --git a/previews/PR126/assets/index.md.DfziRIh_.js b/previews/PR126/assets/index.md.ZaF1sGJo.js similarity index 96% rename from previews/PR126/assets/index.md.DfziRIh_.js rename to previews/PR126/assets/index.md.ZaF1sGJo.js index 5e7502d6..33aa8734 100644 --- a/previews/PR126/assets/index.md.DfziRIh_.js +++ b/previews/PR126/assets/index.md.ZaF1sGJo.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BSoZtefh.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Navier-Stokes","text":"Experience 21st century turbulence","tagline":"Differentiable fluid solver written in Julia","image":{"src":"/logo.svg","alt":"IncompressibleNavierStokes"},"actions":[{"theme":"brand","text":"Getting started","link":"/getting_started"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/agdestein/IncompressibleNavierStokes.jl"},{"theme":"alt","text":"Gallery","link":"/examples"}]},"features":[{"icon":"\\"CUDA.jl\\"/","title":"GPU acceleration","details":"Fast and efficient 2D/3D kernels for CPU and GPU with CUDA.jl","link":"/manual/gpu"},{"icon":"\\"ChainRules.jl\\"/","title":"Differentiable physics","details":"Backpropagate through the solver using Zygote.jl to optimize closure models","link":"/manual/differentiability"},{"icon":"\\"Lux.jl\\"/","title":"Neural network integration","details":"Integrate neural network closure models with Lux.jl","link":"/manual/closure"},{"icon":"🌊","title":"Problems","details":"Solve for decaying turbulence, channel flows, actuator disks, Rayleigh-Bénard convection, and more","link":"/examples"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function l(n,s,o,r,c,d){return a(),t("div")}const g=e(i,[["render",l]]);export{h as __pageData,g as default}; +import{_ as e,c as t,o as a}from"./chunks/framework.CojPSOJE.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Navier-Stokes","text":"Experience 21st century turbulence","tagline":"Differentiable fluid solver written in Julia","image":{"src":"/logo.svg","alt":"IncompressibleNavierStokes"},"actions":[{"theme":"brand","text":"Getting started","link":"/getting_started"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/agdestein/IncompressibleNavierStokes.jl"},{"theme":"alt","text":"Gallery","link":"/examples"}]},"features":[{"icon":"\\"CUDA.jl\\"/","title":"GPU acceleration","details":"Fast and efficient 2D/3D kernels for CPU and GPU with CUDA.jl","link":"/manual/gpu"},{"icon":"\\"ChainRules.jl\\"/","title":"Differentiable physics","details":"Backpropagate through the solver using Zygote.jl to optimize closure models","link":"/manual/differentiability"},{"icon":"\\"Lux.jl\\"/","title":"Neural network integration","details":"Integrate neural network closure models with Lux.jl","link":"/manual/closure"},{"icon":"🌊","title":"Problems","details":"Solve for decaying turbulence, channel flows, actuator disks, Rayleigh-Bénard convection, and more","link":"/examples"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function l(n,s,o,r,c,d){return a(),t("div")}const g=e(i,[["render",l]]);export{h as __pageData,g as default}; diff --git a/previews/PR126/assets/index.md.DfziRIh_.lean.js b/previews/PR126/assets/index.md.ZaF1sGJo.lean.js similarity index 96% rename from previews/PR126/assets/index.md.DfziRIh_.lean.js rename to previews/PR126/assets/index.md.ZaF1sGJo.lean.js index 5e7502d6..33aa8734 100644 --- a/previews/PR126/assets/index.md.DfziRIh_.lean.js +++ b/previews/PR126/assets/index.md.ZaF1sGJo.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BSoZtefh.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Navier-Stokes","text":"Experience 21st century turbulence","tagline":"Differentiable fluid solver written in Julia","image":{"src":"/logo.svg","alt":"IncompressibleNavierStokes"},"actions":[{"theme":"brand","text":"Getting started","link":"/getting_started"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/agdestein/IncompressibleNavierStokes.jl"},{"theme":"alt","text":"Gallery","link":"/examples"}]},"features":[{"icon":"\\"CUDA.jl\\"/","title":"GPU acceleration","details":"Fast and efficient 2D/3D kernels for CPU and GPU with CUDA.jl","link":"/manual/gpu"},{"icon":"\\"ChainRules.jl\\"/","title":"Differentiable physics","details":"Backpropagate through the solver using Zygote.jl to optimize closure models","link":"/manual/differentiability"},{"icon":"\\"Lux.jl\\"/","title":"Neural network integration","details":"Integrate neural network closure models with Lux.jl","link":"/manual/closure"},{"icon":"🌊","title":"Problems","details":"Solve for decaying turbulence, channel flows, actuator disks, Rayleigh-Bénard convection, and more","link":"/examples"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function l(n,s,o,r,c,d){return a(),t("div")}const g=e(i,[["render",l]]);export{h as __pageData,g as default}; +import{_ as e,c as t,o as a}from"./chunks/framework.CojPSOJE.js";const h=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Navier-Stokes","text":"Experience 21st century turbulence","tagline":"Differentiable fluid solver written in Julia","image":{"src":"/logo.svg","alt":"IncompressibleNavierStokes"},"actions":[{"theme":"brand","text":"Getting started","link":"/getting_started"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/agdestein/IncompressibleNavierStokes.jl"},{"theme":"alt","text":"Gallery","link":"/examples"}]},"features":[{"icon":"\\"CUDA.jl\\"/","title":"GPU acceleration","details":"Fast and efficient 2D/3D kernels for CPU and GPU with CUDA.jl","link":"/manual/gpu"},{"icon":"\\"ChainRules.jl\\"/","title":"Differentiable physics","details":"Backpropagate through the solver using Zygote.jl to optimize closure models","link":"/manual/differentiability"},{"icon":"\\"Lux.jl\\"/","title":"Neural network integration","details":"Integrate neural network closure models with Lux.jl","link":"/manual/closure"},{"icon":"🌊","title":"Problems","details":"Solve for decaying turbulence, channel flows, actuator disks, Rayleigh-Bénard convection, and more","link":"/examples"}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":null}'),i={name:"index.md"};function l(n,s,o,r,c,d){return a(),t("div")}const g=e(i,[["render",l]]);export{h as __pageData,g as default}; diff --git a/previews/PR126/assets/manual_closure.md.s1okUHBh.js b/previews/PR126/assets/manual_closure.md.CZwmLtkz.js similarity index 90% rename from previews/PR126/assets/manual_closure.md.s1okUHBh.js rename to previews/PR126/assets/manual_closure.md.CZwmLtkz.js index 4d444dad..1cd2086e 100644 --- a/previews/PR126/assets/manual_closure.md.s1okUHBh.js +++ b/previews/PR126/assets/manual_closure.md.CZwmLtkz.js @@ -1,8 +1,8 @@ -import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framework.BSoZtefh.js";const I1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),T={name:"manual/closure.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"17.749ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 7845 3367","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.239ex",height:"1.753ex",role:"img",focusable:"false",viewBox:"0 -693 3199.6 775","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.494ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 9500.4 3367","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.778ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 786 727","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.26ex",height:"2.98ex",role:"img",focusable:"false",viewBox:"0 -1067 7187 1317","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4908.2 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.408ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 2390.6 705","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.935ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 11905.1 3367","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -693 572 704","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.687ex",height:"2.57ex",role:"img",focusable:"false",viewBox:"0 -886.1 11353.9 1136.1","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.483ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 9053.6 1133.9","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.035ex",height:"1.926ex",role:"img",focusable:"false",viewBox:"0 -694 899.6 851.1","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -705 469 715","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},d1={class:"jldocstring custom-block",open:""},T1={class:"jldocstring custom-block",open:""},p1={class:"jldocstring custom-block",open:""},Q1={class:"jldocstring custom-block",open:""},m1={class:"jldocstring custom-block",open:""},h1={class:"jldocstring custom-block",open:""},u1={class:"jldocstring custom-block",open:""},g1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},E1={class:"jldocstring custom-block",open:""},w1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},H1={class:"jldocstring custom-block",open:""},j1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},M1={class:"jldocstring custom-block",open:""},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.04ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2227.7 1000","aria-hidden":"true"},N1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""};function D1(F1,a,A1,O1,S1,B1){const l=d("Badge");return o(),n("div",null,[a[166]||(a[166]=s(`

Neural closure models

NeuralClosure

These features are experimental, and require cloning IncompressibleNavierStokes from GitHub:

sh
git clone https://github.com/agdestein/IncompressibleNavierStokes.jl
-cd IncompressibleNavierStokes/lib/NeuralClosure

Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

`,3)),t("mjx-container",p,[(o(),n("svg",Q,a[0]||(a[0]=[s('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[6]||(a[6]=e("Applying a spatial filter ")),t("mjx-container",m,[(o(),n("svg",h,a[2]||(a[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),a[7]||(a[7]=e(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,a[4]||(a[4]=[s('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Φ"),t("mi",null,"u")])],-1))]),a[8]||(a[8]=e(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,a[9]||(a[9]=[s('',1)]))),a[10]||(a[10]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"c"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"p"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[29]||(a[29]=e("where the discretizations ")),t("mjx-container",b,[(o(),n("svg",y,a[11]||(a[11]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),a[30]||(a[30]=e(", ")),t("mjx-container",x,[(o(),n("svg",f,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"F")])],-1))]),a[31]||(a[31]=e(", and ")),t("mjx-container",E,[(o(),n("svg",w,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43A",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"G")])],-1))]),a[32]||(a[32]=e(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,a[17]||(a[17]=[s('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c"),t("mo",null,"="),t("mover",null,[t("mrow",null,[t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")")]),t("mo",{accent:"true"},"―")]),t("mo",null,"−"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[33]||(a[33]=e(" is a commutator error. We here assumed that ")),t("mjx-container",j,[(o(),n("svg",C,a[19]||(a[19]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),a[34]||(a[34]=e(" and ")),t("mjx-container",M,[(o(),n("svg",L,a[21]||(a[21]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),a[35]||(a[35]=e(" commute, which is the case for face averaging filters. Replacing ")),t("mjx-container",V,[(o(),n("svg",N,a[23]||(a[23]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),a[36]||(a[36]=e(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,a[25]||(a[25]=[s('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"≈"),t("mi",null,"c")])],-1))]),a[37]||(a[37]=e(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,a[27]||(a[27]=[s('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"≈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))])]),t("mjx-container",O,[(o(),n("svg",S,a[38]||(a[38]=[s('',1)]))),a[39]||(a[39]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"q"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,".")])])])])],-1))]),a[167]||(a[167]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[e("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),a[168]||(a[168]=t("p",null,"IncompressibleNavierStokes provides a NeuralClosure module.",-1)),t("details",B,[t("summary",null,[a[40]||(a[40]=t("a",{id:"NeuralClosure.NeuralClosure",href:"#NeuralClosure.NeuralClosure"},[t("span",{class:"jlbinding"},"NeuralClosure.NeuralClosure")],-1)),a[41]||(a[41]=e()),i(l,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[42]||(a[42]=t("p",null,"Neural closure modelling tools.",-1)),a[43]||(a[43]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/lib/NeuralClosure/src/NeuralClosure.jl#L1-L3",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",R,[t("summary",null,[a[44]||(a[44]=t("a",{id:"NeuralClosure.collocate-Tuple{Any}",href:"#NeuralClosure.collocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.collocate")],-1)),a[45]||(a[45]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[46]||(a[46]=s('
julia
collocate(u) -> Any

Interpolate velocity components to volume centers.

source

',3))]),t("details",I,[t("summary",null,[a[47]||(a[47]=t("a",{id:"NeuralClosure.create_closure-Tuple",href:"#NeuralClosure.create_closure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_closure")],-1)),a[48]||(a[48]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[49]||(a[49]=s('
julia
create_closure(layers...; rng)

Create neural closure model from layers.

source

',3))]),t("details",z,[t("summary",null,[a[50]||(a[50]=t("a",{id:"NeuralClosure.decollocate-Tuple{Any}",href:"#NeuralClosure.decollocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.decollocate")],-1)),a[51]||(a[51]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[52]||(a[52]=s('
julia
decollocate(u) -> Any

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",G,[t("summary",null,[a[53]||(a[53]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),a[54]||(a[54]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[55]||(a[55]=s(`
julia
wrappedclosure(
+import{_ as r,c as n,a5 as a,j as t,a as e,G as i,B as d,o}from"./chunks/framework.CojPSOJE.js";const I1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),T={name:"manual/closure.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"17.749ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 7845 3367","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.239ex",height:"1.753ex",role:"img",focusable:"false",viewBox:"0 -693 3199.6 775","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.494ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 9500.4 3367","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.778ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 786 727","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.26ex",height:"2.98ex",role:"img",focusable:"false",viewBox:"0 -1067 7187 1317","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4908.2 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.408ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 2390.6 705","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.935ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 11905.1 3367","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -693 572 704","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.687ex",height:"2.57ex",role:"img",focusable:"false",viewBox:"0 -886.1 11353.9 1136.1","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.483ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 9053.6 1133.9","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.035ex",height:"1.926ex",role:"img",focusable:"false",viewBox:"0 -694 899.6 851.1","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -705 469 715","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},d1={class:"jldocstring custom-block",open:""},T1={class:"jldocstring custom-block",open:""},p1={class:"jldocstring custom-block",open:""},Q1={class:"jldocstring custom-block",open:""},m1={class:"jldocstring custom-block",open:""},h1={class:"jldocstring custom-block",open:""},u1={class:"jldocstring custom-block",open:""},g1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},E1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},w1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},H1={class:"jldocstring custom-block",open:""},j1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},M1={class:"jldocstring custom-block",open:""},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.04ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2227.7 1000","aria-hidden":"true"},N1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""};function D1(F1,s,A1,O1,S1,B1){const l=d("Badge");return o(),n("div",null,[s[166]||(s[166]=a(`

Neural closure models

NeuralClosure

These features are experimental, and require cloning IncompressibleNavierStokes from GitHub:

sh
git clone https://github.com/agdestein/IncompressibleNavierStokes.jl
+cd IncompressibleNavierStokes/lib/NeuralClosure

Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

`,3)),t("mjx-container",p,[(o(),n("svg",Q,s[0]||(s[0]=[a('',1)]))),s[1]||(s[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,".")])])])])],-1))]),t("p",null,[s[6]||(s[6]=e("Applying a spatial filter ")),t("mjx-container",m,[(o(),n("svg",h,s[2]||(s[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),s[3]||(s[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),s[7]||(s[7]=e(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,s[4]||(s[4]=[a('',1)]))),s[5]||(s[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Φ"),t("mi",null,"u")])],-1))]),s[8]||(s[8]=e(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,s[9]||(s[9]=[a('',1)]))),s[10]||(s[10]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"c"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"p"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,",")])])])])],-1))]),t("p",null,[s[29]||(s[29]=e("where the discretizations ")),t("mjx-container",y,[(o(),n("svg",b,s[11]||(s[11]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),s[12]||(s[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),s[30]||(s[30]=e(", ")),t("mjx-container",x,[(o(),n("svg",E,s[13]||(s[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[14]||(s[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"F")])],-1))]),s[31]||(s[31]=e(", and ")),t("mjx-container",f,[(o(),n("svg",w,s[15]||(s[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43A",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),s[16]||(s[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"G")])],-1))]),s[32]||(s[32]=e(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[a('',1)]))),s[18]||(s[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c"),t("mo",null,"="),t("mover",null,[t("mrow",null,[t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")")]),t("mo",{accent:"true"},"―")]),t("mo",null,"−"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")")])],-1))]),s[33]||(s[33]=e(" is a commutator error. We here assumed that ")),t("mjx-container",j,[(o(),n("svg",C,s[19]||(s[19]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),s[20]||(s[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),s[34]||(s[34]=e(" and ")),t("mjx-container",M,[(o(),n("svg",L,s[21]||(s[21]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),s[22]||(s[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),s[35]||(s[35]=e(" commute, which is the case for face averaging filters. Replacing ")),t("mjx-container",V,[(o(),n("svg",N,s[23]||(s[23]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),s[24]||(s[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),s[36]||(s[36]=e(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[a('',1)]))),s[26]||(s[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"≈"),t("mi",null,"c")])],-1))]),s[37]||(s[37]=e(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[a('',1)]))),s[28]||(s[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"≈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))])]),t("mjx-container",O,[(o(),n("svg",S,s[38]||(s[38]=[a('',1)]))),s[39]||(s[39]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"q"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,".")])])])])],-1))]),s[167]||(s[167]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[e("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[168]||(s[168]=t("p",null,"IncompressibleNavierStokes provides a NeuralClosure module.",-1)),t("details",B,[t("summary",null,[s[40]||(s[40]=t("a",{id:"NeuralClosure.NeuralClosure",href:"#NeuralClosure.NeuralClosure"},[t("span",{class:"jlbinding"},"NeuralClosure.NeuralClosure")],-1)),s[41]||(s[41]=e()),i(l,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[42]||(s[42]=t("p",null,"Neural closure modelling tools.",-1)),s[43]||(s[43]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/lib/NeuralClosure/src/NeuralClosure.jl#L1-L3",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",R,[t("summary",null,[s[44]||(s[44]=t("a",{id:"NeuralClosure.collocate-Tuple{Any}",href:"#NeuralClosure.collocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.collocate")],-1)),s[45]||(s[45]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=a('
julia
collocate(u) -> Any

Interpolate velocity components to volume centers.

source

',3))]),t("details",I,[t("summary",null,[s[47]||(s[47]=t("a",{id:"NeuralClosure.create_closure-Tuple",href:"#NeuralClosure.create_closure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_closure")],-1)),s[48]||(s[48]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=a('
julia
create_closure(layers...; rng)

Create neural closure model from layers.

source

',3))]),t("details",z,[t("summary",null,[s[50]||(s[50]=t("a",{id:"NeuralClosure.decollocate-Tuple{Any}",href:"#NeuralClosure.decollocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.decollocate")],-1)),s[51]||(s[51]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=a('
julia
decollocate(u) -> Any

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",G,[t("summary",null,[s[53]||(s[53]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),s[54]||(s[54]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[55]=a(`
julia
wrappedclosure(
     m,
     setup
-) -> NeuralClosure.var"#neuralclosure#1"

Wrap closure model and parameters so that it can be used in the solver.

source

`,3))]),a[169]||(a[169]=t("h2",{id:"filters",tabindex:"-1"},[e("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),a[170]||(a[170]=t("p",null,"The following filters are available:",-1)),t("details",q,[t("summary",null,[a[56]||(a[56]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),a[57]||(a[57]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[58]||(a[58]=s('
julia
abstract type AbstractFilter

Discrete DNS filter.

Subtypes ConcreteFilter should implement the in-place method:

(::ConcreteFilter)(v, u, setup_les, compression)

which filters the DNS field u and put result in LES field v. Then the out-of place method:

(::ConcreteFilter)(u, setup_les, compression)

automatically becomes available.

Fields

source

',9))]),t("details",X,[t("summary",null,[a[59]||(a[59]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),a[60]||(a[60]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[61]||(a[61]=s('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

',4))]),t("details",J,[t("summary",null,[a[62]||(a[62]=t("a",{id:"NeuralClosure.VolumeAverage",href:"#NeuralClosure.VolumeAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.VolumeAverage")],-1)),a[63]||(a[63]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[64]||(a[64]=s('
julia
struct VolumeAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume.

Fields

source

',4))]),t("details",P,[t("summary",null,[a[65]||(a[65]=t("a",{id:"NeuralClosure.reconstruct!-NTuple{5, Any}",href:"#NeuralClosure.reconstruct!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct!")],-1)),a[66]||(a[66]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[67]||(a[67]=s('
julia
reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity u from LES velocity v.

source

',3))]),t("details",U,[t("summary",null,[a[68]||(a[68]=t("a",{id:"NeuralClosure.reconstruct-NTuple{4, Any}",href:"#NeuralClosure.reconstruct-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct")],-1)),a[69]||(a[69]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[70]||(a[70]=s('
julia
reconstruct(v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),a[171]||(a[171]=t("h2",{id:"training",tabindex:"-1"},[e("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[a[75]||(a[75]=e("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",W,[(o(),n("svg",$,a[71]||(a[71]=[s('',1)]))),a[72]||(a[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))]),a[76]||(a[76]=e(" and exact commutator errors ")),t("mjx-container",K,[(o(),n("svg",Y,a[73]||(a[73]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),a[74]||(a[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),a[77]||(a[77]=e(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",_,[(o(),n("svg",t1,a[78]||(a[78]=[s('',1)]))),a[79]||(a[79]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"c"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),a[172]||(a[172]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,a[80]||(a[80]=[s('',1)]))),a[81]||(a[81]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"post")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),t("p",null,[a[88]||(a[88]=e("where ")),t("mjx-container",s1,[(o(),n("svg",l1,a[82]||(a[82]=[s('',1)]))),a[83]||(a[83]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),a[89]||(a[89]=e(" is the solution to the LES equation for the given parameters ")),t("mjx-container",i1,[(o(),n("svg",n1,a[84]||(a[84]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D703",d:"M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z",style:{"stroke-width":"3"}})])])],-1)]))),a[85]||(a[85]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ")])],-1))]),a[90]||(a[90]=e(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",o1,[(o(),n("svg",r1,a[86]||(a[86]=[s('',1)]))),a[87]||(a[87]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),a[91]||(a[91]=e(" does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE."))]),t("details",d1,[t("summary",null,[a[92]||(a[92]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),a[93]||(a[93]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[94]||(a[94]=s(`
julia
create_callback(
+) -> NeuralClosure.var"#neuralclosure#1"

Wrap closure model and parameters so that it can be used in the solver.

source

`,3))]),s[169]||(s[169]=t("h2",{id:"filters",tabindex:"-1"},[e("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[170]||(s[170]=t("p",null,"The following filters are available:",-1)),t("details",q,[t("summary",null,[s[56]||(s[56]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[57]||(s[57]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[58]||(s[58]=a('
julia
abstract type AbstractFilter

Discrete DNS filter.

Subtypes ConcreteFilter should implement the in-place method:

(::ConcreteFilter)(v, u, setup_les, compression)

which filters the DNS field u and put result in LES field v. Then the out-of place method:

(::ConcreteFilter)(u, setup_les, compression)

automatically becomes available.

Fields

source

',9))]),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[60]||(s[60]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=a('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

',4))]),t("details",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.VolumeAverage",href:"#NeuralClosure.VolumeAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.VolumeAverage")],-1)),s[63]||(s[63]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=a('
julia
struct VolumeAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume.

Fields

source

',4))]),t("details",P,[t("summary",null,[s[65]||(s[65]=t("a",{id:"NeuralClosure.reconstruct!-NTuple{5, Any}",href:"#NeuralClosure.reconstruct!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct!")],-1)),s[66]||(s[66]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
julia
reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity u from LES velocity v.

source

',3))]),t("details",U,[t("summary",null,[s[68]||(s[68]=t("a",{id:"NeuralClosure.reconstruct-NTuple{4, Any}",href:"#NeuralClosure.reconstruct-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct")],-1)),s[69]||(s[69]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[70]||(s[70]=a('
julia
reconstruct(v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[171]||(s[171]=t("h2",{id:"training",tabindex:"-1"},[e("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[75]||(s[75]=e("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",W,[(o(),n("svg",$,s[71]||(s[71]=[a('',1)]))),s[72]||(s[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))]),s[76]||(s[76]=e(" and exact commutator errors ")),t("mjx-container",K,[(o(),n("svg",Y,s[73]||(s[73]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),s[74]||(s[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),s[77]||(s[77]=e(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",_,[(o(),n("svg",t1,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"c"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),s[172]||(s[172]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",s1,[(o(),n("svg",e1,s[80]||(s[80]=[a('',1)]))),s[81]||(s[81]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"post")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),t("p",null,[s[88]||(s[88]=e("where ")),t("mjx-container",a1,[(o(),n("svg",l1,s[82]||(s[82]=[a('',1)]))),s[83]||(s[83]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[89]||(s[89]=e(" is the solution to the LES equation for the given parameters ")),t("mjx-container",i1,[(o(),n("svg",n1,s[84]||(s[84]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D703",d:"M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z",style:{"stroke-width":"3"}})])])],-1)]))),s[85]||(s[85]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ")])],-1))]),s[90]||(s[90]=e(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",o1,[(o(),n("svg",r1,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[91]||(s[91]=e(" does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE."))]),t("details",d1,[t("summary",null,[s[92]||(s[92]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[93]||(s[93]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[94]||(s[94]=a(`
julia
create_callback(
     err;
     θ,
     callbackstate,
@@ -11,29 +11,29 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     displayupdates,
     figfile,
     nupdate
-)

Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

If state is nonempty, it also plots previous convergence.

If not using interactive GLMakie window, set displayupdates to true.

source

`,5))]),t("details",T1,[t("summary",null,[a[95]||(a[95]=t("a",{id:"NeuralClosure.create_dataloader_post-Tuple{Any}",href:"#NeuralClosure.create_dataloader_post-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_post")],-1)),a[96]||(a[96]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[97]||(a[97]=s(`
julia
create_dataloader_post(
+)

Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

If state is nonempty, it also plots previous convergence.

If not using interactive GLMakie window, set displayupdates to true.

source

`,5))]),t("details",T1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_dataloader_post-Tuple{Any}",href:"#NeuralClosure.create_dataloader_post-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_post")],-1)),s[96]||(s[96]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=a(`
julia
create_dataloader_post(
     trajectories;
     ntrajectory,
     nunroll,
     device
-)

Create trajectory dataloader.

source

`,3))]),t("details",p1,[t("summary",null,[a[98]||(a[98]=t("a",{id:"NeuralClosure.create_dataloader_prior-Tuple{Any}",href:"#NeuralClosure.create_dataloader_prior-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_prior")],-1)),a[99]||(a[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[100]||(a[100]=s(`
julia
create_dataloader_prior(
+)

Create trajectory dataloader.

source

`,3))]),t("details",p1,[t("summary",null,[s[98]||(s[98]=t("a",{id:"NeuralClosure.create_dataloader_prior-Tuple{Any}",href:"#NeuralClosure.create_dataloader_prior-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_prior")],-1)),s[99]||(s[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=a(`
julia
create_dataloader_prior(
     data;
     batchsize,
     device
-) -> NeuralClosure.var"#dataloader#40"{Int64}

Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

source

`,3))]),t("details",Q1,[t("summary",null,[a[101]||(a[101]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),a[102]||(a[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[103]||(a[103]=s(`
julia
create_loss_post(
+) -> NeuralClosure.var"#dataloader#40"{Int64}

Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[102]||(s[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=a(`
julia
create_loss_post(
 ;
     setup,
     method,
     psolver,
     closure_model,
     nsubstep
-)

Create a-posteriori loss function.

source

`,3))]),t("details",m1,[t("summary",null,[a[104]||(a[104]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),a[105]||(a[105]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[106]||(a[106]=s(`
julia
create_loss_prior(
+)

Create a-posteriori loss function.

source

`,3))]),t("details",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),s[105]||(s[105]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[106]||(s[106]=a(`
julia
create_loss_prior(
     f
 ) -> NeuralClosure.var"#loss_prior#53"{_A, NeuralClosure.var"#51#52"} where _A
 create_loss_prior(
     f,
     normalize
-) -> NeuralClosure.var"#loss_prior#53"

Return mean squared error loss for the predictor f.

source

`,3))]),t("details",h1,[t("summary",null,[a[107]||(a[107]=t("a",{id:"NeuralClosure.create_relerr_post-Tuple{}",href:"#NeuralClosure.create_relerr_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_post")],-1)),a[108]||(a[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[109]||(a[109]=s(`
julia
create_relerr_post(
+) -> NeuralClosure.var"#loss_prior#53"

Return mean squared error loss for the predictor f.

source

`,3))]),t("details",h1,[t("summary",null,[s[107]||(s[107]=t("a",{id:"NeuralClosure.create_relerr_post-Tuple{}",href:"#NeuralClosure.create_relerr_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_post")],-1)),s[108]||(s[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[109]||(s[109]=a(`
julia
create_relerr_post(
 ;
     data,
     setup,
@@ -41,7 +41,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     psolver,
     closure_model,
     nsubstep
-)

Create a-posteriori relative error.

source

`,3))]),t("details",u1,[t("summary",null,[a[110]||(a[110]=t("a",{id:"NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}",href:"#NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_prior")],-1)),a[111]||(a[111]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[112]||(a[112]=s('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[a[113]||(a[113]=t("a",{id:"NeuralClosure.create_relerr_symmetry_post-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_post")],-1)),a[114]||(a[114]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[115]||(a[115]=s(`
julia
create_relerr_symmetry_post(
+)

Create a-posteriori relative error.

source

`,3))]),t("details",u1,[t("summary",null,[s[110]||(s[110]=t("a",{id:"NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}",href:"#NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_prior")],-1)),s[111]||(s[111]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[112]||(s[112]=a('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[s[113]||(s[113]=t("a",{id:"NeuralClosure.create_relerr_symmetry_post-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_post")],-1)),s[114]||(s[114]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=a(`
julia
create_relerr_symmetry_post(
 ;
     u,
     setup,
@@ -50,7 +50,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     Δt,
     nstep,
     g
-)

Create a-posteriori symmetry error.

source

`,3))]),t("details",c1,[t("summary",null,[a[116]||(a[116]=t("a",{id:"NeuralClosure.create_relerr_symmetry_prior-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_prior-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_prior")],-1)),a[117]||(a[117]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[118]||(a[118]=s('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",k1,[t("summary",null,[a[119]||(a[119]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),a[120]||(a[120]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[121]||(a[121]=s(`
julia
train(
+)

Create a-posteriori symmetry error.

source

`,3))]),t("details",c1,[t("summary",null,[s[116]||(s[116]=t("a",{id:"NeuralClosure.create_relerr_symmetry_prior-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_prior-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_prior")],-1)),s[117]||(s[117]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=a('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),s[120]||(s[120]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=a(`
julia
train(
 ;
     dataloader,
     loss,
@@ -59,7 +59,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     callback,
     callbackstate,
     λ
-)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),t("details",b1,[t("summary",null,[a[122]||(a[122]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),a[123]||(a[123]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[124]||(a[124]=s(`
julia
trainepoch(
+)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),t("details",y1,[t("summary",null,[s[122]||(s[122]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[123]||(s[123]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=a(`
julia
trainepoch(
 ;
     dataloader,
     loss,
@@ -69,7 +69,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     device,
     noiselevel,
     λ
-)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),a[173]||(a[173]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[e("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),a[174]||(a[174]=t("p",null,"We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).",-1)),t("details",y1,[t("summary",null,[a[125]||(a[125]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),a[126]||(a[126]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[127]||(a[127]=s(`
julia
cnn(
+)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),s[173]||(s[173]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[e("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[174]||(s[174]=t("p",null,"We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).",-1)),t("details",b1,[t("summary",null,[s[125]||(s[125]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[126]||(s[126]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=a(`
julia
cnn(
 ;
     setup,
     radii,
@@ -78,7 +78,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     use_bias,
     channel_augmenter,
     rng
-)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

`,3))]),t("details",x1,[t("summary",null,[a[128]||(a[128]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),a[129]||(a[129]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[130]||(a[130]=s('
julia
struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

The kwargs are passed to the Conv layer.

The layer has three variants:

  • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

  • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

  • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

Fields

  • islifting

  • isprojecting

  • cin

  • cout

  • conv

source

',8))]),t("details",f1,[t("summary",null,[a[131]||(a[131]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),a[132]||(a[132]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[133]||(a[133]=s('
julia
gcnn(; setup, radii, channels, activations, use_bias, rng)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

',3))]),t("details",E1,[t("summary",null,[a[134]||(a[134]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),a[135]||(a[135]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[136]||(a[136]=s('
julia
rot2(u, r)

Rotate the field u by 90 degrees counter-clockwise r - 1 times.

source

',3))]),t("details",w1,[t("summary",null,[a[137]||(a[137]=t("a",{id:"NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T",href:"#NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),a[138]||(a[138]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[139]||(a[139]=s('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",v1,[t("summary",null,[a[140]||(a[140]=t("a",{id:"NeuralClosure.rot2stag-Tuple{Any, Any}",href:"#NeuralClosure.rot2stag-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2stag")],-1)),a[141]||(a[141]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[142]||(a[142]=s('
julia
rot2stag(u, g) -> Any

Rotate staggered grid velocity field. See also rot2.

source

',3))]),t("details",H1,[t("summary",null,[a[143]||(a[143]=t("a",{id:"NeuralClosure.vecrot2-Tuple{Any, Any}",href:"#NeuralClosure.vecrot2-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.vecrot2")],-1)),a[144]||(a[144]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[145]||(a[145]=s('
julia
vecrot2(u, r) -> Any

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",j1,[t("summary",null,[a[146]||(a[146]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),a[147]||(a[147]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[148]||(a[148]=s('
julia
struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

Fourier layer operating on uniformly discretized functions.

Some important sizes:

  • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

  • (nx..., cin, nsample): Input size

  • (nx..., cout, nsample): Output size

  • nx = fill(n, dimension()): Number of points in each spatial dimension

  • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

  • kmax: Cut-off wavenumber

  • nsample: Number of input samples (treated independently)

Fields

  • dimension

  • kmax

  • cin

  • cout

  • σ

  • init_weight

source

',7))]),t("details",C1,[t("summary",null,[a[149]||(a[149]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),a[150]||(a[150]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[151]||(a[151]=s('
julia
fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

source

',3))]),a[175]||(a[175]=t("h2",{id:"Data-generation",tabindex:"-1"},[e("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",M1,[t("summary",null,[a[152]||(a[152]=t("a",{id:"NeuralClosure.create_io_arrays-Tuple{Any, Any}",href:"#NeuralClosure.create_io_arrays-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_io_arrays")],-1)),a[153]||(a[153]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[158]||(a[158]=s('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[a[156]||(a[156]=e("Create ")),t("mjx-container",L1,[(o(),n("svg",V1,a[154]||(a[154]=[s('',1)]))),a[155]||(a[155]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"c"),t("mo",{stretchy:"false"},")")])],-1))]),a[157]||(a[157]=e(" pairs for a-priori training."))]),a[159]||(a[159]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N1,[t("summary",null,[a[160]||(a[160]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),a[161]||(a[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[162]||(a[162]=s(`
julia
create_les_data(
+)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

`,3))]),t("details",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[129]||(s[129]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[130]||(s[130]=a('
julia
struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

The kwargs are passed to the Conv layer.

The layer has three variants:

  • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

  • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

  • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

Fields

  • islifting

  • isprojecting

  • cin

  • cout

  • conv

source

',8))]),t("details",E1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[132]||(s[132]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[133]||(s[133]=a('
julia
gcnn(; setup, radii, channels, activations, use_bias, rng)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

',3))]),t("details",f1,[t("summary",null,[s[134]||(s[134]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[135]||(s[135]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[136]||(s[136]=a('
julia
rot2(u, r)

Rotate the field u by 90 degrees counter-clockwise r - 1 times.

source

',3))]),t("details",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T",href:"#NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[139]||(s[139]=a('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=t("a",{id:"NeuralClosure.rot2stag-Tuple{Any, Any}",href:"#NeuralClosure.rot2stag-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2stag")],-1)),s[141]||(s[141]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=a('
julia
rot2stag(u, g) -> Any

Rotate staggered grid velocity field. See also rot2.

source

',3))]),t("details",H1,[t("summary",null,[s[143]||(s[143]=t("a",{id:"NeuralClosure.vecrot2-Tuple{Any, Any}",href:"#NeuralClosure.vecrot2-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.vecrot2")],-1)),s[144]||(s[144]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[145]||(s[145]=a('
julia
vecrot2(u, r) -> Any

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",j1,[t("summary",null,[s[146]||(s[146]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[147]||(s[147]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[148]||(s[148]=a('
julia
struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

Fourier layer operating on uniformly discretized functions.

Some important sizes:

  • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

  • (nx..., cin, nsample): Input size

  • (nx..., cout, nsample): Output size

  • nx = fill(n, dimension()): Number of points in each spatial dimension

  • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

  • kmax: Cut-off wavenumber

  • nsample: Number of input samples (treated independently)

Fields

  • dimension

  • kmax

  • cin

  • cout

  • σ

  • init_weight

source

',7))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[150]||(s[150]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=a('
julia
fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

source

',3))]),s[175]||(s[175]=t("h2",{id:"Data-generation",tabindex:"-1"},[e("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.create_io_arrays-Tuple{Any, Any}",href:"#NeuralClosure.create_io_arrays-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_io_arrays")],-1)),s[153]||(s[153]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[158]||(s[158]=a('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[156]||(s[156]=e("Create ")),t("mjx-container",L1,[(o(),n("svg",V1,s[154]||(s[154]=[a('',1)]))),s[155]||(s[155]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"c"),t("mo",{stretchy:"false"},")")])],-1))]),s[157]||(s[157]=e(" pairs for a-priori training."))]),s[159]||(s[159]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N1,[t("summary",null,[s[160]||(s[160]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[161]||(s[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[162]||(s[162]=a(`
julia
create_les_data(
 ;
     D,
     Re,
@@ -98,7 +98,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     rng,
     filenames,
     kwargs...
-)

Create filtered DNS data.

source

`,3))]),t("details",Z1,[t("summary",null,[a[163]||(a[163]=t("a",{id:"NeuralClosure.filtersaver-NTuple{6, Any}",href:"#NeuralClosure.filtersaver-NTuple{6, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.filtersaver")],-1)),a[164]||(a[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[165]||(a[165]=s(`
julia
filtersaver(
+)

Create filtered DNS data.

source

`,3))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.filtersaver-NTuple{6, Any}",href:"#NeuralClosure.filtersaver-NTuple{6, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.filtersaver")],-1)),s[164]||(s[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=a(`
julia
filtersaver(
     dns,
     les,
     filters,
@@ -109,4 +109,4 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     filenames,
     F,
     p
-)

Save filtered DNS data.

source

`,3))])])}const z1=r(T,[["render",D1]]);export{I1 as __pageData,z1 as default}; +)

Save filtered DNS data.

source

`,3))])])}const z1=r(T,[["render",D1]]);export{I1 as __pageData,z1 as default}; diff --git a/previews/PR126/assets/manual_closure.md.s1okUHBh.lean.js b/previews/PR126/assets/manual_closure.md.CZwmLtkz.lean.js similarity index 90% rename from previews/PR126/assets/manual_closure.md.s1okUHBh.lean.js rename to previews/PR126/assets/manual_closure.md.CZwmLtkz.lean.js index 4d444dad..1cd2086e 100644 --- a/previews/PR126/assets/manual_closure.md.s1okUHBh.lean.js +++ b/previews/PR126/assets/manual_closure.md.CZwmLtkz.lean.js @@ -1,8 +1,8 @@ -import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framework.BSoZtefh.js";const I1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),T={name:"manual/closure.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"17.749ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 7845 3367","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.239ex",height:"1.753ex",role:"img",focusable:"false",viewBox:"0 -693 3199.6 775","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.494ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 9500.4 3367","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.778ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 786 727","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.26ex",height:"2.98ex",role:"img",focusable:"false",viewBox:"0 -1067 7187 1317","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4908.2 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.408ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 2390.6 705","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.935ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 11905.1 3367","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -693 572 704","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.687ex",height:"2.57ex",role:"img",focusable:"false",viewBox:"0 -886.1 11353.9 1136.1","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.483ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 9053.6 1133.9","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.035ex",height:"1.926ex",role:"img",focusable:"false",viewBox:"0 -694 899.6 851.1","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -705 469 715","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},d1={class:"jldocstring custom-block",open:""},T1={class:"jldocstring custom-block",open:""},p1={class:"jldocstring custom-block",open:""},Q1={class:"jldocstring custom-block",open:""},m1={class:"jldocstring custom-block",open:""},h1={class:"jldocstring custom-block",open:""},u1={class:"jldocstring custom-block",open:""},g1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},E1={class:"jldocstring custom-block",open:""},w1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},H1={class:"jldocstring custom-block",open:""},j1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},M1={class:"jldocstring custom-block",open:""},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.04ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2227.7 1000","aria-hidden":"true"},N1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""};function D1(F1,a,A1,O1,S1,B1){const l=d("Badge");return o(),n("div",null,[a[166]||(a[166]=s(`

Neural closure models

NeuralClosure

These features are experimental, and require cloning IncompressibleNavierStokes from GitHub:

sh
git clone https://github.com/agdestein/IncompressibleNavierStokes.jl
-cd IncompressibleNavierStokes/lib/NeuralClosure

Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

`,3)),t("mjx-container",p,[(o(),n("svg",Q,a[0]||(a[0]=[s('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[6]||(a[6]=e("Applying a spatial filter ")),t("mjx-container",m,[(o(),n("svg",h,a[2]||(a[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),a[7]||(a[7]=e(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,a[4]||(a[4]=[s('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Φ"),t("mi",null,"u")])],-1))]),a[8]||(a[8]=e(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,a[9]||(a[9]=[s('',1)]))),a[10]||(a[10]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"c"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"p"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[29]||(a[29]=e("where the discretizations ")),t("mjx-container",b,[(o(),n("svg",y,a[11]||(a[11]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),a[30]||(a[30]=e(", ")),t("mjx-container",x,[(o(),n("svg",f,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"F")])],-1))]),a[31]||(a[31]=e(", and ")),t("mjx-container",E,[(o(),n("svg",w,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43A",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"G")])],-1))]),a[32]||(a[32]=e(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,a[17]||(a[17]=[s('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c"),t("mo",null,"="),t("mover",null,[t("mrow",null,[t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")")]),t("mo",{accent:"true"},"―")]),t("mo",null,"−"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[33]||(a[33]=e(" is a commutator error. We here assumed that ")),t("mjx-container",j,[(o(),n("svg",C,a[19]||(a[19]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),a[34]||(a[34]=e(" and ")),t("mjx-container",M,[(o(),n("svg",L,a[21]||(a[21]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),a[35]||(a[35]=e(" commute, which is the case for face averaging filters. Replacing ")),t("mjx-container",V,[(o(),n("svg",N,a[23]||(a[23]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),a[36]||(a[36]=e(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,a[25]||(a[25]=[s('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"≈"),t("mi",null,"c")])],-1))]),a[37]||(a[37]=e(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,a[27]||(a[27]=[s('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"≈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))])]),t("mjx-container",O,[(o(),n("svg",S,a[38]||(a[38]=[s('',1)]))),a[39]||(a[39]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"q"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,".")])])])])],-1))]),a[167]||(a[167]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[e("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),a[168]||(a[168]=t("p",null,"IncompressibleNavierStokes provides a NeuralClosure module.",-1)),t("details",B,[t("summary",null,[a[40]||(a[40]=t("a",{id:"NeuralClosure.NeuralClosure",href:"#NeuralClosure.NeuralClosure"},[t("span",{class:"jlbinding"},"NeuralClosure.NeuralClosure")],-1)),a[41]||(a[41]=e()),i(l,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[42]||(a[42]=t("p",null,"Neural closure modelling tools.",-1)),a[43]||(a[43]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/lib/NeuralClosure/src/NeuralClosure.jl#L1-L3",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",R,[t("summary",null,[a[44]||(a[44]=t("a",{id:"NeuralClosure.collocate-Tuple{Any}",href:"#NeuralClosure.collocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.collocate")],-1)),a[45]||(a[45]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[46]||(a[46]=s('
julia
collocate(u) -> Any

Interpolate velocity components to volume centers.

source

',3))]),t("details",I,[t("summary",null,[a[47]||(a[47]=t("a",{id:"NeuralClosure.create_closure-Tuple",href:"#NeuralClosure.create_closure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_closure")],-1)),a[48]||(a[48]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[49]||(a[49]=s('
julia
create_closure(layers...; rng)

Create neural closure model from layers.

source

',3))]),t("details",z,[t("summary",null,[a[50]||(a[50]=t("a",{id:"NeuralClosure.decollocate-Tuple{Any}",href:"#NeuralClosure.decollocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.decollocate")],-1)),a[51]||(a[51]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[52]||(a[52]=s('
julia
decollocate(u) -> Any

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",G,[t("summary",null,[a[53]||(a[53]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),a[54]||(a[54]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[55]||(a[55]=s(`
julia
wrappedclosure(
+import{_ as r,c as n,a5 as a,j as t,a as e,G as i,B as d,o}from"./chunks/framework.CojPSOJE.js";const I1=JSON.parse('{"title":"Neural closure models","description":"","frontmatter":{},"headers":[],"relativePath":"manual/closure.md","filePath":"manual/closure.md","lastUpdated":null}'),T={name:"manual/closure.md"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"17.749ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 7845 3367","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.239ex",height:"1.753ex",role:"img",focusable:"false",viewBox:"0 -693 3199.6 775","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.494ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 9500.4 3367","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.778ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 786 727","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.26ex",height:"2.98ex",role:"img",focusable:"false",viewBox:"0 -1067 7187 1317","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 722 683","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4908.2 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.408ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 2390.6 705","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.935ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 11905.1 3367","aria-hidden":"true"},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},z={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},X={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},P={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},W={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -693 572 704","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.98ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 433 453","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.687ex",height:"2.57ex",role:"img",focusable:"false",viewBox:"0 -886.1 11353.9 1136.1","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.483ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 9053.6 1133.9","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.035ex",height:"1.926ex",role:"img",focusable:"false",viewBox:"0 -694 899.6 851.1","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.618ex",role:"img",focusable:"false",viewBox:"0 -705 469 715","aria-hidden":"true"},o1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"5.117ex",height:"1.892ex",role:"img",focusable:"false",viewBox:"0 -836.1 2261.7 836.1","aria-hidden":"true"},d1={class:"jldocstring custom-block",open:""},T1={class:"jldocstring custom-block",open:""},p1={class:"jldocstring custom-block",open:""},Q1={class:"jldocstring custom-block",open:""},m1={class:"jldocstring custom-block",open:""},h1={class:"jldocstring custom-block",open:""},u1={class:"jldocstring custom-block",open:""},g1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},E1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},w1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},H1={class:"jldocstring custom-block",open:""},j1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},M1={class:"jldocstring custom-block",open:""},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.04ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2227.7 1000","aria-hidden":"true"},N1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""};function D1(F1,s,A1,O1,S1,B1){const l=d("Badge");return o(),n("div",null,[s[166]||(s[166]=a(`

Neural closure models

NeuralClosure

These features are experimental, and require cloning IncompressibleNavierStokes from GitHub:

sh
git clone https://github.com/agdestein/IncompressibleNavierStokes.jl
+cd IncompressibleNavierStokes/lib/NeuralClosure

Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

`,3)),t("mjx-container",p,[(o(),n("svg",Q,s[0]||(s[0]=[a('',1)]))),s[1]||(s[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,".")])])])])],-1))]),t("p",null,[s[6]||(s[6]=e("Applying a spatial filter ")),t("mjx-container",m,[(o(),n("svg",h,s[2]||(s[2]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),s[3]||(s[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),s[7]||(s[7]=e(", the extracted large scale components ")),t("mjx-container",u,[(o(),n("svg",g,s[4]||(s[4]=[a('',1)]))),s[5]||(s[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Φ"),t("mi",null,"u")])],-1))]),s[8]||(s[8]=e(" are governed by the equation"))]),t("mjx-container",c,[(o(),n("svg",k,s[9]||(s[9]=[a('',1)]))),s[10]||(s[10]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"c"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"p"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,",")])])])])],-1))]),t("p",null,[s[29]||(s[29]=e("where the discretizations ")),t("mjx-container",y,[(o(),n("svg",b,s[11]||(s[11]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),s[12]||(s[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),s[30]||(s[30]=e(", ")),t("mjx-container",x,[(o(),n("svg",E,s[13]||(s[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[14]||(s[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"F")])],-1))]),s[31]||(s[31]=e(", and ")),t("mjx-container",f,[(o(),n("svg",w,s[15]||(s[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43A",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q492 659 471 656T418 643T357 615T294 567T236 496T189 394T158 260Q156 242 156 221Q156 173 170 136T206 79T256 45T308 28T353 24Q407 24 452 47T514 106Q517 114 529 161T541 214Q541 222 528 224T468 227H431Q425 233 425 235T427 254Q431 267 437 273H454Q494 271 594 271Q634 271 659 271T695 272T707 272Q721 272 721 263Q721 261 719 249Q714 230 709 228Q706 227 694 227Q674 227 653 224Q646 221 643 215T629 164Q620 131 614 108Q589 6 586 3Q584 1 581 1Q571 1 553 21T530 52Q530 53 528 52T522 47Q448 -22 322 -22Q201 -22 126 55T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),s[16]||(s[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"G")])],-1))]),s[32]||(s[32]=e(" are adapted to the size of their inputs and ")),t("mjx-container",v,[(o(),n("svg",H,s[17]||(s[17]=[a('',1)]))),s[18]||(s[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c"),t("mo",null,"="),t("mover",null,[t("mrow",null,[t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",{stretchy:"false"},")")]),t("mo",{accent:"true"},"―")]),t("mo",null,"−"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")")])],-1))]),s[33]||(s[33]=e(" is a commutator error. We here assumed that ")),t("mjx-container",j,[(o(),n("svg",C,s[19]||(s[19]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),s[20]||(s[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"M")])],-1))]),s[34]||(s[34]=e(" and ")),t("mjx-container",M,[(o(),n("svg",L,s[21]||(s[21]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A6",d:"M312 622Q310 623 307 625T303 629T297 631T286 634T270 635T246 636T211 637H184V683H196Q220 680 361 680T526 683H538V637H511Q468 637 447 635T422 631T411 622V533L425 531Q525 519 595 466T665 342Q665 301 642 267T583 209T506 172T425 152L411 150V61Q417 55 421 53T447 48T511 46H538V0H526Q502 3 361 3T196 0H184V46H211Q231 46 245 46T270 47T286 48T297 51T303 54T307 57T312 61V150H310Q309 151 289 153T232 166T160 195Q149 201 136 210T103 238T69 284T56 342Q56 414 128 467T294 530Q309 532 310 533H312V622ZM170 342Q170 207 307 188H312V495H309Q301 495 282 491T231 469T186 423Q170 389 170 342ZM415 188Q487 199 519 236T551 342Q551 384 539 414T507 459T470 481T434 491T415 495H410V188H415Z",style:{"stroke-width":"3"}})])])],-1)]))),s[22]||(s[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Φ")])],-1))]),s[35]||(s[35]=e(" commute, which is the case for face averaging filters. Replacing ")),t("mjx-container",V,[(o(),n("svg",N,s[23]||(s[23]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),s[24]||(s[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),s[36]||(s[36]=e(" with a parameterized closure model ")),t("mjx-container",Z,[(o(),n("svg",D,s[25]||(s[25]=[a('',1)]))),s[26]||(s[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"≈"),t("mi",null,"c")])],-1))]),s[37]||(s[37]=e(" gives the LES equations for the approximate large scale velocity ")),t("mjx-container",F,[(o(),n("svg",A,s[27]||(s[27]=[a('',1)]))),s[28]||(s[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,"≈"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))])]),t("mjx-container",O,[(o(),n("svg",S,s[38]||(s[38]=[a('',1)]))),s[39]||(s[39]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"G"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"q"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,".")])])])])],-1))]),s[167]||(s[167]=t("h2",{id:"NeuralClosure-module",tabindex:"-1"},[e("NeuralClosure module "),t("a",{class:"header-anchor",href:"#NeuralClosure-module","aria-label":'Permalink to "NeuralClosure module {#NeuralClosure-module}"'},"​")],-1)),s[168]||(s[168]=t("p",null,"IncompressibleNavierStokes provides a NeuralClosure module.",-1)),t("details",B,[t("summary",null,[s[40]||(s[40]=t("a",{id:"NeuralClosure.NeuralClosure",href:"#NeuralClosure.NeuralClosure"},[t("span",{class:"jlbinding"},"NeuralClosure.NeuralClosure")],-1)),s[41]||(s[41]=e()),i(l,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),s[42]||(s[42]=t("p",null,"Neural closure modelling tools.",-1)),s[43]||(s[43]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/lib/NeuralClosure/src/NeuralClosure.jl#L1-L3",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",R,[t("summary",null,[s[44]||(s[44]=t("a",{id:"NeuralClosure.collocate-Tuple{Any}",href:"#NeuralClosure.collocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.collocate")],-1)),s[45]||(s[45]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=a('
julia
collocate(u) -> Any

Interpolate velocity components to volume centers.

source

',3))]),t("details",I,[t("summary",null,[s[47]||(s[47]=t("a",{id:"NeuralClosure.create_closure-Tuple",href:"#NeuralClosure.create_closure-Tuple"},[t("span",{class:"jlbinding"},"NeuralClosure.create_closure")],-1)),s[48]||(s[48]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=a('
julia
create_closure(layers...; rng)

Create neural closure model from layers.

source

',3))]),t("details",z,[t("summary",null,[s[50]||(s[50]=t("a",{id:"NeuralClosure.decollocate-Tuple{Any}",href:"#NeuralClosure.decollocate-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.decollocate")],-1)),s[51]||(s[51]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=a('
julia
decollocate(u) -> Any

Interpolate closure force from volume centers to volume faces.

source

',3))]),t("details",G,[t("summary",null,[s[53]||(s[53]=t("a",{id:"NeuralClosure.wrappedclosure-Tuple{Any, Any}",href:"#NeuralClosure.wrappedclosure-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.wrappedclosure")],-1)),s[54]||(s[54]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[55]||(s[55]=a(`
julia
wrappedclosure(
     m,
     setup
-) -> NeuralClosure.var"#neuralclosure#1"

Wrap closure model and parameters so that it can be used in the solver.

source

`,3))]),a[169]||(a[169]=t("h2",{id:"filters",tabindex:"-1"},[e("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),a[170]||(a[170]=t("p",null,"The following filters are available:",-1)),t("details",q,[t("summary",null,[a[56]||(a[56]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),a[57]||(a[57]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[58]||(a[58]=s('
julia
abstract type AbstractFilter

Discrete DNS filter.

Subtypes ConcreteFilter should implement the in-place method:

(::ConcreteFilter)(v, u, setup_les, compression)

which filters the DNS field u and put result in LES field v. Then the out-of place method:

(::ConcreteFilter)(u, setup_les, compression)

automatically becomes available.

Fields

source

',9))]),t("details",X,[t("summary",null,[a[59]||(a[59]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),a[60]||(a[60]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[61]||(a[61]=s('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

',4))]),t("details",J,[t("summary",null,[a[62]||(a[62]=t("a",{id:"NeuralClosure.VolumeAverage",href:"#NeuralClosure.VolumeAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.VolumeAverage")],-1)),a[63]||(a[63]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[64]||(a[64]=s('
julia
struct VolumeAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume.

Fields

source

',4))]),t("details",P,[t("summary",null,[a[65]||(a[65]=t("a",{id:"NeuralClosure.reconstruct!-NTuple{5, Any}",href:"#NeuralClosure.reconstruct!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct!")],-1)),a[66]||(a[66]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[67]||(a[67]=s('
julia
reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity u from LES velocity v.

source

',3))]),t("details",U,[t("summary",null,[a[68]||(a[68]=t("a",{id:"NeuralClosure.reconstruct-NTuple{4, Any}",href:"#NeuralClosure.reconstruct-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct")],-1)),a[69]||(a[69]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[70]||(a[70]=s('
julia
reconstruct(v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),a[171]||(a[171]=t("h2",{id:"training",tabindex:"-1"},[e("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[a[75]||(a[75]=e("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",W,[(o(),n("svg",$,a[71]||(a[71]=[s('',1)]))),a[72]||(a[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))]),a[76]||(a[76]=e(" and exact commutator errors ")),t("mjx-container",K,[(o(),n("svg",Y,a[73]||(a[73]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),a[74]||(a[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),a[77]||(a[77]=e(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",_,[(o(),n("svg",t1,a[78]||(a[78]=[s('',1)]))),a[79]||(a[79]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"c"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),a[172]||(a[172]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",a1,[(o(),n("svg",e1,a[80]||(a[80]=[s('',1)]))),a[81]||(a[81]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"post")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),t("p",null,[a[88]||(a[88]=e("where ")),t("mjx-container",s1,[(o(),n("svg",l1,a[82]||(a[82]=[s('',1)]))),a[83]||(a[83]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),a[89]||(a[89]=e(" is the solution to the LES equation for the given parameters ")),t("mjx-container",i1,[(o(),n("svg",n1,a[84]||(a[84]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D703",d:"M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z",style:{"stroke-width":"3"}})])])],-1)]))),a[85]||(a[85]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ")])],-1))]),a[90]||(a[90]=e(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",o1,[(o(),n("svg",r1,a[86]||(a[86]=[s('',1)]))),a[87]||(a[87]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),a[91]||(a[91]=e(" does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE."))]),t("details",d1,[t("summary",null,[a[92]||(a[92]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),a[93]||(a[93]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[94]||(a[94]=s(`
julia
create_callback(
+) -> NeuralClosure.var"#neuralclosure#1"

Wrap closure model and parameters so that it can be used in the solver.

source

`,3))]),s[169]||(s[169]=t("h2",{id:"filters",tabindex:"-1"},[e("Filters "),t("a",{class:"header-anchor",href:"#filters","aria-label":'Permalink to "Filters"'},"​")],-1)),s[170]||(s[170]=t("p",null,"The following filters are available:",-1)),t("details",q,[t("summary",null,[s[56]||(s[56]=t("a",{id:"NeuralClosure.AbstractFilter",href:"#NeuralClosure.AbstractFilter"},[t("span",{class:"jlbinding"},"NeuralClosure.AbstractFilter")],-1)),s[57]||(s[57]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[58]||(s[58]=a('
julia
abstract type AbstractFilter

Discrete DNS filter.

Subtypes ConcreteFilter should implement the in-place method:

(::ConcreteFilter)(v, u, setup_les, compression)

which filters the DNS field u and put result in LES field v. Then the out-of place method:

(::ConcreteFilter)(u, setup_les, compression)

automatically becomes available.

Fields

source

',9))]),t("details",X,[t("summary",null,[s[59]||(s[59]=t("a",{id:"NeuralClosure.FaceAverage",href:"#NeuralClosure.FaceAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.FaceAverage")],-1)),s[60]||(s[60]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[61]||(s[61]=a('
julia
struct FaceAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume face.

Fields

source

',4))]),t("details",J,[t("summary",null,[s[62]||(s[62]=t("a",{id:"NeuralClosure.VolumeAverage",href:"#NeuralClosure.VolumeAverage"},[t("span",{class:"jlbinding"},"NeuralClosure.VolumeAverage")],-1)),s[63]||(s[63]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[64]||(s[64]=a('
julia
struct VolumeAverage <: NeuralClosure.AbstractFilter

Average fine grid velocity field over coarse volume.

Fields

source

',4))]),t("details",P,[t("summary",null,[s[65]||(s[65]=t("a",{id:"NeuralClosure.reconstruct!-NTuple{5, Any}",href:"#NeuralClosure.reconstruct!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct!")],-1)),s[66]||(s[66]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[67]||(s[67]=a('
julia
reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity u from LES velocity v.

source

',3))]),t("details",U,[t("summary",null,[s[68]||(s[68]=t("a",{id:"NeuralClosure.reconstruct-NTuple{4, Any}",href:"#NeuralClosure.reconstruct-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.reconstruct")],-1)),s[69]||(s[69]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[70]||(s[70]=a('
julia
reconstruct(v, setup_dns, setup_les, comp) -> Any

Reconstruct DNS velocity field. See also reconstruct!.

source

',3))]),s[171]||(s[171]=t("h2",{id:"training",tabindex:"-1"},[e("Training "),t("a",{class:"header-anchor",href:"#training","aria-label":'Permalink to "Training"'},"​")],-1)),t("p",null,[s[75]||(s[75]=e("To improve the model parameters, we exploit exact filtered DNS data ")),t("mjx-container",W,[(o(),n("svg",$,s[71]||(s[71]=[a('',1)]))),s[72]||(s[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])])])],-1))]),s[76]||(s[76]=e(" and exact commutator errors ")),t("mjx-container",K,[(o(),n("svg",Y,s[73]||(s[73]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D450",d:"M34 159Q34 268 120 355T306 442Q362 442 394 418T427 355Q427 326 408 306T360 285Q341 285 330 295T319 325T330 359T352 380T366 386H367Q367 388 361 392T340 400T306 404Q276 404 249 390Q228 381 206 359Q162 315 142 235T121 119Q121 73 147 50Q169 26 205 26H209Q321 26 394 111Q403 121 406 121Q410 121 419 112T429 98T420 83T391 55T346 25T282 0T202 -11Q127 -11 81 37T34 159Z",style:{"stroke-width":"3"}})])])],-1)]))),s[74]||(s[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"c")])],-1))]),s[77]||(s[77]=e(" obtained through DNS. The model is trained by minimizing the a priori loss function"))]),t("mjx-container",_,[(o(),n("svg",t1,s[78]||(s[78]=[a('',1)]))),s[79]||(s[79]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"m"),t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",null,"c"),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),s[172]||(s[172]=t("p",null,"or the a posteriori loss function",-1)),t("mjx-container",s1,[(o(),n("svg",e1,s[80]||(s[80]=[a('',1)]))),s[81]||(s[81]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"post")]),t("mo",{stretchy:"false"},"("),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("msup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2")]),t("mo",null,",")])],-1))]),t("p",null,[s[88]||(s[88]=e("where ")),t("mjx-container",a1,[(o(),n("svg",l1,s[82]||(s[82]=[a('',1)]))),s[83]||(s[83]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"¯")])]),t("mi",null,"θ")])])],-1))]),s[89]||(s[89]=e(" is the solution to the LES equation for the given parameters ")),t("mjx-container",i1,[(o(),n("svg",n1,s[84]||(s[84]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D703",d:"M35 200Q35 302 74 415T180 610T319 704Q320 704 327 704T339 705Q393 701 423 656Q462 596 462 495Q462 380 417 261T302 66T168 -10H161Q125 -10 99 10T60 63T41 130T35 200ZM383 566Q383 668 330 668Q294 668 260 623T204 521T170 421T157 371Q206 370 254 370L351 371Q352 372 359 404T375 484T383 566ZM113 132Q113 26 166 26Q181 26 198 36T239 74T287 161T335 307L340 324H145Q145 321 136 286T120 208T113 132Z",style:{"stroke-width":"3"}})])])],-1)]))),s[85]||(s[85]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ")])],-1))]),s[90]||(s[90]=e(". The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing ")),t("mjx-container",o1,[(o(),n("svg",r1,s[86]||(s[86]=[a('',1)]))),s[87]||(s[87]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"L"),t("mtext",null,"prior")])])],-1))]),s[91]||(s[91]=e(" does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE."))]),t("details",d1,[t("summary",null,[s[92]||(s[92]=t("a",{id:"NeuralClosure.create_callback-Tuple{Any}",href:"#NeuralClosure.create_callback-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_callback")],-1)),s[93]||(s[93]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[94]||(s[94]=a(`
julia
create_callback(
     err;
     θ,
     callbackstate,
@@ -11,29 +11,29 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     displayupdates,
     figfile,
     nupdate
-)

Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

If state is nonempty, it also plots previous convergence.

If not using interactive GLMakie window, set displayupdates to true.

source

`,5))]),t("details",T1,[t("summary",null,[a[95]||(a[95]=t("a",{id:"NeuralClosure.create_dataloader_post-Tuple{Any}",href:"#NeuralClosure.create_dataloader_post-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_post")],-1)),a[96]||(a[96]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[97]||(a[97]=s(`
julia
create_dataloader_post(
+)

Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

If state is nonempty, it also plots previous convergence.

If not using interactive GLMakie window, set displayupdates to true.

source

`,5))]),t("details",T1,[t("summary",null,[s[95]||(s[95]=t("a",{id:"NeuralClosure.create_dataloader_post-Tuple{Any}",href:"#NeuralClosure.create_dataloader_post-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_post")],-1)),s[96]||(s[96]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[97]||(s[97]=a(`
julia
create_dataloader_post(
     trajectories;
     ntrajectory,
     nunroll,
     device
-)

Create trajectory dataloader.

source

`,3))]),t("details",p1,[t("summary",null,[a[98]||(a[98]=t("a",{id:"NeuralClosure.create_dataloader_prior-Tuple{Any}",href:"#NeuralClosure.create_dataloader_prior-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_prior")],-1)),a[99]||(a[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[100]||(a[100]=s(`
julia
create_dataloader_prior(
+)

Create trajectory dataloader.

source

`,3))]),t("details",p1,[t("summary",null,[s[98]||(s[98]=t("a",{id:"NeuralClosure.create_dataloader_prior-Tuple{Any}",href:"#NeuralClosure.create_dataloader_prior-Tuple{Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_dataloader_prior")],-1)),s[99]||(s[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=a(`
julia
create_dataloader_prior(
     data;
     batchsize,
     device
-) -> NeuralClosure.var"#dataloader#40"{Int64}

Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

source

`,3))]),t("details",Q1,[t("summary",null,[a[101]||(a[101]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),a[102]||(a[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[103]||(a[103]=s(`
julia
create_loss_post(
+) -> NeuralClosure.var"#dataloader#40"{Int64}

Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

source

`,3))]),t("details",Q1,[t("summary",null,[s[101]||(s[101]=t("a",{id:"NeuralClosure.create_loss_post-Tuple{}",href:"#NeuralClosure.create_loss_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_post")],-1)),s[102]||(s[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=a(`
julia
create_loss_post(
 ;
     setup,
     method,
     psolver,
     closure_model,
     nsubstep
-)

Create a-posteriori loss function.

source

`,3))]),t("details",m1,[t("summary",null,[a[104]||(a[104]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),a[105]||(a[105]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[106]||(a[106]=s(`
julia
create_loss_prior(
+)

Create a-posteriori loss function.

source

`,3))]),t("details",m1,[t("summary",null,[s[104]||(s[104]=t("a",{id:"NeuralClosure.create_loss_prior",href:"#NeuralClosure.create_loss_prior"},[t("span",{class:"jlbinding"},"NeuralClosure.create_loss_prior")],-1)),s[105]||(s[105]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[106]||(s[106]=a(`
julia
create_loss_prior(
     f
 ) -> NeuralClosure.var"#loss_prior#53"{_A, NeuralClosure.var"#51#52"} where _A
 create_loss_prior(
     f,
     normalize
-) -> NeuralClosure.var"#loss_prior#53"

Return mean squared error loss for the predictor f.

source

`,3))]),t("details",h1,[t("summary",null,[a[107]||(a[107]=t("a",{id:"NeuralClosure.create_relerr_post-Tuple{}",href:"#NeuralClosure.create_relerr_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_post")],-1)),a[108]||(a[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[109]||(a[109]=s(`
julia
create_relerr_post(
+) -> NeuralClosure.var"#loss_prior#53"

Return mean squared error loss for the predictor f.

source

`,3))]),t("details",h1,[t("summary",null,[s[107]||(s[107]=t("a",{id:"NeuralClosure.create_relerr_post-Tuple{}",href:"#NeuralClosure.create_relerr_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_post")],-1)),s[108]||(s[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[109]||(s[109]=a(`
julia
create_relerr_post(
 ;
     data,
     setup,
@@ -41,7 +41,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     psolver,
     closure_model,
     nsubstep
-)

Create a-posteriori relative error.

source

`,3))]),t("details",u1,[t("summary",null,[a[110]||(a[110]=t("a",{id:"NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}",href:"#NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_prior")],-1)),a[111]||(a[111]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[112]||(a[112]=s('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[a[113]||(a[113]=t("a",{id:"NeuralClosure.create_relerr_symmetry_post-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_post")],-1)),a[114]||(a[114]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[115]||(a[115]=s(`
julia
create_relerr_symmetry_post(
+)

Create a-posteriori relative error.

source

`,3))]),t("details",u1,[t("summary",null,[s[110]||(s[110]=t("a",{id:"NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}",href:"#NeuralClosure.create_relerr_prior-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_prior")],-1)),s[111]||(s[111]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[112]||(s[112]=a('
julia
create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

Create a-priori error.

source

',3))]),t("details",g1,[t("summary",null,[s[113]||(s[113]=t("a",{id:"NeuralClosure.create_relerr_symmetry_post-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_post-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_post")],-1)),s[114]||(s[114]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[115]||(s[115]=a(`
julia
create_relerr_symmetry_post(
 ;
     u,
     setup,
@@ -50,7 +50,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     Δt,
     nstep,
     g
-)

Create a-posteriori symmetry error.

source

`,3))]),t("details",c1,[t("summary",null,[a[116]||(a[116]=t("a",{id:"NeuralClosure.create_relerr_symmetry_prior-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_prior-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_prior")],-1)),a[117]||(a[117]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[118]||(a[118]=s('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",k1,[t("summary",null,[a[119]||(a[119]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),a[120]||(a[120]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[121]||(a[121]=s(`
julia
train(
+)

Create a-posteriori symmetry error.

source

`,3))]),t("details",c1,[t("summary",null,[s[116]||(s[116]=t("a",{id:"NeuralClosure.create_relerr_symmetry_prior-Tuple{}",href:"#NeuralClosure.create_relerr_symmetry_prior-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_relerr_symmetry_prior")],-1)),s[117]||(s[117]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[118]||(s[118]=a('
julia
create_relerr_symmetry_prior(; u, setup, g)

Create a-priori equivariance error.

source

',3))]),t("details",k1,[t("summary",null,[s[119]||(s[119]=t("a",{id:"NeuralClosure.train-Tuple{}",href:"#NeuralClosure.train-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.train")],-1)),s[120]||(s[120]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[121]||(s[121]=a(`
julia
train(
 ;
     dataloader,
     loss,
@@ -59,7 +59,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     callback,
     callbackstate,
     λ
-)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),t("details",b1,[t("summary",null,[a[122]||(a[122]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),a[123]||(a[123]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[124]||(a[124]=s(`
julia
trainepoch(
+)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),t("details",y1,[t("summary",null,[s[122]||(s[122]=t("a",{id:"NeuralClosure.trainepoch-Tuple{}",href:"#NeuralClosure.trainepoch-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.trainepoch")],-1)),s[123]||(s[123]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[124]||(s[124]=a(`
julia
trainepoch(
 ;
     dataloader,
     loss,
@@ -69,7 +69,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     device,
     noiselevel,
     λ
-)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),a[173]||(a[173]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[e("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),a[174]||(a[174]=t("p",null,"We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).",-1)),t("details",y1,[t("summary",null,[a[125]||(a[125]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),a[126]||(a[126]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[127]||(a[127]=s(`
julia
cnn(
+)

Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

source

`,4))]),s[173]||(s[173]=t("h2",{id:"Neural-architectures",tabindex:"-1"},[e("Neural architectures "),t("a",{class:"header-anchor",href:"#Neural-architectures","aria-label":'Permalink to "Neural architectures {#Neural-architectures}"'},"​")],-1)),s[174]||(s[174]=t("p",null,"We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).",-1)),t("details",b1,[t("summary",null,[s[125]||(s[125]=t("a",{id:"NeuralClosure.cnn-Tuple{}",href:"#NeuralClosure.cnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.cnn")],-1)),s[126]||(s[126]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[127]||(s[127]=a(`
julia
cnn(
 ;
     setup,
     radii,
@@ -78,7 +78,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     use_bias,
     channel_augmenter,
     rng
-)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

`,3))]),t("details",x1,[t("summary",null,[a[128]||(a[128]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),a[129]||(a[129]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[130]||(a[130]=s('
julia
struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

The kwargs are passed to the Conv layer.

The layer has three variants:

  • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

  • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

  • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

Fields

  • islifting

  • isprojecting

  • cin

  • cout

  • conv

source

',8))]),t("details",f1,[t("summary",null,[a[131]||(a[131]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),a[132]||(a[132]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[133]||(a[133]=s('
julia
gcnn(; setup, radii, channels, activations, use_bias, rng)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

',3))]),t("details",E1,[t("summary",null,[a[134]||(a[134]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),a[135]||(a[135]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[136]||(a[136]=s('
julia
rot2(u, r)

Rotate the field u by 90 degrees counter-clockwise r - 1 times.

source

',3))]),t("details",w1,[t("summary",null,[a[137]||(a[137]=t("a",{id:"NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T",href:"#NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),a[138]||(a[138]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[139]||(a[139]=s('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",v1,[t("summary",null,[a[140]||(a[140]=t("a",{id:"NeuralClosure.rot2stag-Tuple{Any, Any}",href:"#NeuralClosure.rot2stag-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2stag")],-1)),a[141]||(a[141]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[142]||(a[142]=s('
julia
rot2stag(u, g) -> Any

Rotate staggered grid velocity field. See also rot2.

source

',3))]),t("details",H1,[t("summary",null,[a[143]||(a[143]=t("a",{id:"NeuralClosure.vecrot2-Tuple{Any, Any}",href:"#NeuralClosure.vecrot2-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.vecrot2")],-1)),a[144]||(a[144]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[145]||(a[145]=s('
julia
vecrot2(u, r) -> Any

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",j1,[t("summary",null,[a[146]||(a[146]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),a[147]||(a[147]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[148]||(a[148]=s('
julia
struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

Fourier layer operating on uniformly discretized functions.

Some important sizes:

  • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

  • (nx..., cin, nsample): Input size

  • (nx..., cout, nsample): Output size

  • nx = fill(n, dimension()): Number of points in each spatial dimension

  • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

  • kmax: Cut-off wavenumber

  • nsample: Number of input samples (treated independently)

Fields

  • dimension

  • kmax

  • cin

  • cout

  • σ

  • init_weight

source

',7))]),t("details",C1,[t("summary",null,[a[149]||(a[149]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),a[150]||(a[150]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[151]||(a[151]=s('
julia
fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

source

',3))]),a[175]||(a[175]=t("h2",{id:"Data-generation",tabindex:"-1"},[e("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",M1,[t("summary",null,[a[152]||(a[152]=t("a",{id:"NeuralClosure.create_io_arrays-Tuple{Any, Any}",href:"#NeuralClosure.create_io_arrays-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_io_arrays")],-1)),a[153]||(a[153]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[158]||(a[158]=s('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[a[156]||(a[156]=e("Create ")),t("mjx-container",L1,[(o(),n("svg",V1,a[154]||(a[154]=[s('',1)]))),a[155]||(a[155]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"c"),t("mo",{stretchy:"false"},")")])],-1))]),a[157]||(a[157]=e(" pairs for a-priori training."))]),a[159]||(a[159]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N1,[t("summary",null,[a[160]||(a[160]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),a[161]||(a[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[162]||(a[162]=s(`
julia
create_les_data(
+)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

`,3))]),t("details",x1,[t("summary",null,[s[128]||(s[128]=t("a",{id:"NeuralClosure.GroupConv2D",href:"#NeuralClosure.GroupConv2D"},[t("span",{class:"jlbinding"},"NeuralClosure.GroupConv2D")],-1)),s[129]||(s[129]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[130]||(s[130]=a('
julia
struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

The kwargs are passed to the Conv layer.

The layer has three variants:

  • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

  • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

  • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

Fields

  • islifting

  • isprojecting

  • cin

  • cout

  • conv

source

',8))]),t("details",E1,[t("summary",null,[s[131]||(s[131]=t("a",{id:"NeuralClosure.gcnn-Tuple{}",href:"#NeuralClosure.gcnn-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.gcnn")],-1)),s[132]||(s[132]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[133]||(s[133]=a('
julia
gcnn(; setup, radii, channels, activations, use_bias, rng)

Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

source

',3))]),t("details",f1,[t("summary",null,[s[134]||(s[134]=t("a",{id:"NeuralClosure.rot2",href:"#NeuralClosure.rot2"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[135]||(s[135]=e()),i(l,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[136]||(s[136]=a('
julia
rot2(u, r)

Rotate the field u by 90 degrees counter-clockwise r - 1 times.

source

',3))]),t("details",w1,[t("summary",null,[s[137]||(s[137]=t("a",{id:"NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T",href:"#NeuralClosure.rot2-Union{Tuple{T}, Tuple{Tuple{T, T}, Any}} where T"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2")],-1)),s[138]||(s[138]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[139]||(s[139]=a('
julia
rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",v1,[t("summary",null,[s[140]||(s[140]=t("a",{id:"NeuralClosure.rot2stag-Tuple{Any, Any}",href:"#NeuralClosure.rot2stag-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.rot2stag")],-1)),s[141]||(s[141]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[142]||(s[142]=a('
julia
rot2stag(u, g) -> Any

Rotate staggered grid velocity field. See also rot2.

source

',3))]),t("details",H1,[t("summary",null,[s[143]||(s[143]=t("a",{id:"NeuralClosure.vecrot2-Tuple{Any, Any}",href:"#NeuralClosure.vecrot2-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.vecrot2")],-1)),s[144]||(s[144]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[145]||(s[145]=a('
julia
vecrot2(u, r) -> Any

Rotate vector fields [ux;;; uy]

source

',3))]),t("details",j1,[t("summary",null,[s[146]||(s[146]=t("a",{id:"NeuralClosure.FourierLayer",href:"#NeuralClosure.FourierLayer"},[t("span",{class:"jlbinding"},"NeuralClosure.FourierLayer")],-1)),s[147]||(s[147]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[148]||(s[148]=a('
julia
struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

Fourier layer operating on uniformly discretized functions.

Some important sizes:

  • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

  • (nx..., cin, nsample): Input size

  • (nx..., cout, nsample): Output size

  • nx = fill(n, dimension()): Number of points in each spatial dimension

  • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

  • kmax: Cut-off wavenumber

  • nsample: Number of input samples (treated independently)

Fields

  • dimension

  • kmax

  • cin

  • cout

  • σ

  • init_weight

source

',7))]),t("details",C1,[t("summary",null,[s[149]||(s[149]=t("a",{id:"NeuralClosure.fno-Tuple{}",href:"#NeuralClosure.fno-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.fno")],-1)),s[150]||(s[150]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[151]||(s[151]=a('
julia
fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

source

',3))]),s[175]||(s[175]=t("h2",{id:"Data-generation",tabindex:"-1"},[e("Data generation "),t("a",{class:"header-anchor",href:"#Data-generation","aria-label":'Permalink to "Data generation {#Data-generation}"'},"​")],-1)),t("details",M1,[t("summary",null,[s[152]||(s[152]=t("a",{id:"NeuralClosure.create_io_arrays-Tuple{Any, Any}",href:"#NeuralClosure.create_io_arrays-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_io_arrays")],-1)),s[153]||(s[153]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[158]||(s[158]=a('
julia
create_io_arrays(data, setup) -> NamedTuple
',1)),t("p",null,[s[156]||(s[156]=e("Create ")),t("mjx-container",L1,[(o(),n("svg",V1,s[154]||(s[154]=[a('',1)]))),s[155]||(s[155]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"u"),t("mo",{stretchy:"false"},"¯")])]),t("mo",null,","),t("mi",null,"c"),t("mo",{stretchy:"false"},")")])],-1))]),s[157]||(s[157]=e(" pairs for a-priori training."))]),s[159]||(s[159]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/lib/NeuralClosure/src/data_generation.jl#L228",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",N1,[t("summary",null,[s[160]||(s[160]=t("a",{id:"NeuralClosure.create_les_data-Tuple{}",href:"#NeuralClosure.create_les_data-Tuple{}"},[t("span",{class:"jlbinding"},"NeuralClosure.create_les_data")],-1)),s[161]||(s[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[162]||(s[162]=a(`
julia
create_les_data(
 ;
     D,
     Re,
@@ -98,7 +98,7 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     rng,
     filenames,
     kwargs...
-)

Create filtered DNS data.

source

`,3))]),t("details",Z1,[t("summary",null,[a[163]||(a[163]=t("a",{id:"NeuralClosure.filtersaver-NTuple{6, Any}",href:"#NeuralClosure.filtersaver-NTuple{6, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.filtersaver")],-1)),a[164]||(a[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[165]||(a[165]=s(`
julia
filtersaver(
+)

Create filtered DNS data.

source

`,3))]),t("details",Z1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"NeuralClosure.filtersaver-NTuple{6, Any}",href:"#NeuralClosure.filtersaver-NTuple{6, Any}"},[t("span",{class:"jlbinding"},"NeuralClosure.filtersaver")],-1)),s[164]||(s[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=a(`
julia
filtersaver(
     dns,
     les,
     filters,
@@ -109,4 +109,4 @@ import{_ as r,c as n,a5 as s,j as t,a as e,G as i,B as d,o}from"./chunks/framewo
     filenames,
     F,
     p
-)

Save filtered DNS data.

source

`,3))])])}const z1=r(T,[["render",D1]]);export{I1 as __pageData,z1 as default}; +)

Save filtered DNS data.

source

`,3))])])}const z1=r(T,[["render",D1]]);export{I1 as __pageData,z1 as default}; diff --git a/previews/PR126/assets/manual_differentiability.md.LRiuXsIx.js b/previews/PR126/assets/manual_differentiability.md.FG6WYO97.js similarity index 88% rename from previews/PR126/assets/manual_differentiability.md.LRiuXsIx.js rename to previews/PR126/assets/manual_differentiability.md.FG6WYO97.js index b16fe4ee..ec801bda 100644 --- a/previews/PR126/assets/manual_differentiability.md.LRiuXsIx.js +++ b/previews/PR126/assets/manual_differentiability.md.FG6WYO97.js @@ -1,4 +1,4 @@ -import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"Differentiating through the code","description":"","frontmatter":{},"headers":[],"relativePath":"manual/differentiability.md","filePath":"manual/differentiability.md","lastUpdated":null}'),l={name:"manual/differentiability.md"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"};function r(d,s,o,g,c,E){return t(),n("div",null,[s[10]||(s[10]=e(`

Differentiating through the code

IncompressibleNavierStokes is reverse-mode differentiable, which means that you can back-propagate gradients through the code. Two AD libraries are currently supported:

  • Zygote.jl: it is the default AD library in the Julia ecosystem and is the most widely used.

  • Enzyme.jl: currently has low coverage over the Julia programming language, however it is usually the most efficient if applicable.

Automatic differentiation with Zygote

Zygote.jl is the default choice for AD backend because it is easy to understand, compatible with most of the Julia ecosystem and good with vectorized code and BLAS. This comes at a cost however, as intermediate velocity fields need to be stored in memory for use in the backward pass. For this reason, many of the operators come in two versions: a slow differentiable allocating non-mutating variant (e.g. divergence) and fast non-differentiable non-allocating mutating variant (e.g. divergence!.)

Zygote limitation: array mutation

To make your code differentiable, you must use the differentiable versions of the operators (without the exclamation marks).

Example: Gradient of kinetic energy

To differentiate outputs of a simulation with respect to the initial conditions, make a time stepping loop composed of differentiable operations:

julia
using IncompressibleNavierStokes
+import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"Differentiating through the code","description":"","frontmatter":{},"headers":[],"relativePath":"manual/differentiability.md","filePath":"manual/differentiability.md","lastUpdated":null}'),l={name:"manual/differentiability.md"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"};function r(d,s,o,g,c,E){return t(),n("div",null,[s[10]||(s[10]=e(`

Differentiating through the code

IncompressibleNavierStokes is reverse-mode differentiable, which means that you can back-propagate gradients through the code. Two AD libraries are currently supported:

  • Zygote.jl: it is the default AD library in the Julia ecosystem and is the most widely used.

  • Enzyme.jl: currently has low coverage over the Julia programming language, however it is usually the most efficient if applicable.

Automatic differentiation with Zygote

Zygote.jl is the default choice for AD backend because it is easy to understand, compatible with most of the Julia ecosystem and good with vectorized code and BLAS. This comes at a cost however, as intermediate velocity fields need to be stored in memory for use in the backward pass. For this reason, many of the operators come in two versions: a slow differentiable allocating non-mutating variant (e.g. divergence) and fast non-differentiable non-allocating mutating variant (e.g. divergence!.)

Zygote limitation: array mutation

To make your code differentiable, you must use the differentiable versions of the operators (without the exclamation marks).

Example: Gradient of kinetic energy

To differentiate outputs of a simulation with respect to the initial conditions, make a time stepping loop composed of differentiable operations:

julia
using IncompressibleNavierStokes
 
 ax = range(0, 1, 101)
 setup = Setup(; x = (ax, ax), Re = 500.0)
@@ -73,7 +73,7 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0     0.0  0.0  0.0  0.0  0.0  0.0  0.0
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  …  0.0  0.0  0.0  0.0  0.0  0.0  0.0
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0     0.0  0.0  0.0  0.0  0.0  0.0  0.0
`,23)),i("p",null,[s[2]||(s[2]=a("Remember that the derivative of the output (also called the ")),s[3]||(s[3]=i("em",null,"seed",-1)),s[4]||(s[4]=a(") has to be set to ")),i("mjx-container",h,[(t(),n("svg",k,s[0]||(s[0]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mn"},[i("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mn",null,"1")])],-1))]),s[5]||(s[5]=a(" in order to compute the gradient. In this case the output is the force, that we store mutating the value of ")),s[6]||(s[6]=i("code",null,"dudt",-1)),s[7]||(s[7]=a(" inside ")),s[8]||(s[8]=i("code",null,"right_hand_side!",-1)),s[9]||(s[9]=a("."))]),s[11]||(s[11]=e(`

Then we pack the parameters to be passed to right_hand_side!:

julia
params = [setup, psolver];
-params_ref = Ref(params);
Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#124"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
+params_ref = Ref(params);
Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#120"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
 (rdft2-rank>=2/1
   (rdft2-vrank>=1-x100/1
     (rdft2-ct-dit/20
@@ -88,6 +88,6 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js
   (dft-vrank>=1-x51/1
     (dft-ct-dit/10
       (dftw-direct-10/6 "t3fv_10_avx2_128")
-      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [0.0 1.0e-323 … 4.476222801294416e-309 2.22285826e-316; 1.0e-323 5.0e-324 … 4.086352372e-315 2.788239291745271e-292; … ; 1.0e-323 0.0 … 1.5e-323 2.5e-323; 5.0e-324 5.0e-324 … 4.172013485024793e-309 2.781469643852857e-309], ComplexF64[6.9473808475373e-310 + 6.9472543692157e-310im 6.9473808474195e-310 + 6.94738084786455e-310im … 1.45993310422047e-310 + 1.459933104524e-310im 1.02534836643315e-310 + 1.01855797969653e-310im; 6.94738084734203e-310 + 6.9473808472946e-310im 6.94738084786455e-310 + 6.9473396554765e-310im … 1.01855798000167e-310 + 1.02534836643315e-310im 1.0253483662276e-310 + 1.45314271789175e-310im; … ; 6.9473808474195e-310 + 6.94738084786455e-310im 0.0 + 0.0im … 1.425981173916e-311 + 1.0253483662276e-310im 1.425981173916e-311 + 1.0253483662276e-310im; 6.94738084741634e-310 + 6.9473808474195e-310im 0.0 + 0.0im … 1.45314271789175e-310 + 1.02534836643157e-310im 1.4259811738527e-311 + 1.351286920025e-310im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

Now, we call the autodiff function from Enzyme:

julia
Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
((nothing, nothing, nothing, nothing),)

Since we have passed a Duplicated object, the gradient of u is stored in du.

Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

julia
f = create_right_hand_side(setup, psolver)
+      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [-1.5169854288852012e167 3.836077315317973e-74 … 2.1219957905e-314 2.1219957905e-314; -8.507379514117979e-225 1.6027028966112923e-91 … 1.920406190823e-311 1.4578111083926e-311; … ; -1.2141858833153945e-300 3.3507373493510954e-307 … 0.0 2.1219957905e-314; 2.1995970577474693e-65 1.9226358005791237e-244 … 0.0 1.7209385864723e-311], ComplexF64[-1.861253086923037e-142 + 8.042877991305456e-295im -2.0507237810427664e196 + 7.951586378475656e99im … 3.226759849637e-312 + 9.732773503e-315im NaN + NaN*im; 2.8101085824812788e-154 + 3.6740254877366077e-153im 3.542437186098202e-246 - 4.88313130037973e-42im … 5.10171079e-315 + 4.61191569e-315im 5.101703954e-315 + 0.0im; … ; -3.041019724203204e130 - 6.465481485673722e146im 0.0 + 0.0im … 3.487346077e-315 + 4.0e-323im 7.153453405e-315 + 9.814087183e-315im; -2.1844512363060048e92 + 3.0219088082524375e124im 2.47e-320 + 0.0im … 3.50943247e-315 + 4.0e-323im 0.0 + 0.0im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

Now, we call the autodiff function from Enzyme:

julia
Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
((nothing, nothing, nothing, nothing),)

Since we have passed a Duplicated object, the gradient of u is stored in du.

Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

julia
f = create_right_hand_side(setup, psolver)
 _, zpull = Zygote.pullback(f, u, nothing, 0.0);
 @assert zpull(dudt)[1] == du
`,9))])}const m=p(l,[["render",r]]);export{u as __pageData,m as default}; diff --git a/previews/PR126/assets/manual_differentiability.md.LRiuXsIx.lean.js b/previews/PR126/assets/manual_differentiability.md.FG6WYO97.lean.js similarity index 88% rename from previews/PR126/assets/manual_differentiability.md.LRiuXsIx.lean.js rename to previews/PR126/assets/manual_differentiability.md.FG6WYO97.lean.js index b16fe4ee..ec801bda 100644 --- a/previews/PR126/assets/manual_differentiability.md.LRiuXsIx.lean.js +++ b/previews/PR126/assets/manual_differentiability.md.FG6WYO97.lean.js @@ -1,4 +1,4 @@ -import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js";const u=JSON.parse('{"title":"Differentiating through the code","description":"","frontmatter":{},"headers":[],"relativePath":"manual/differentiability.md","filePath":"manual/differentiability.md","lastUpdated":null}'),l={name:"manual/differentiability.md"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"};function r(d,s,o,g,c,E){return t(),n("div",null,[s[10]||(s[10]=e(`

Differentiating through the code

IncompressibleNavierStokes is reverse-mode differentiable, which means that you can back-propagate gradients through the code. Two AD libraries are currently supported:

  • Zygote.jl: it is the default AD library in the Julia ecosystem and is the most widely used.

  • Enzyme.jl: currently has low coverage over the Julia programming language, however it is usually the most efficient if applicable.

Automatic differentiation with Zygote

Zygote.jl is the default choice for AD backend because it is easy to understand, compatible with most of the Julia ecosystem and good with vectorized code and BLAS. This comes at a cost however, as intermediate velocity fields need to be stored in memory for use in the backward pass. For this reason, many of the operators come in two versions: a slow differentiable allocating non-mutating variant (e.g. divergence) and fast non-differentiable non-allocating mutating variant (e.g. divergence!.)

Zygote limitation: array mutation

To make your code differentiable, you must use the differentiable versions of the operators (without the exclamation marks).

Example: Gradient of kinetic energy

To differentiate outputs of a simulation with respect to the initial conditions, make a time stepping loop composed of differentiable operations:

julia
using IncompressibleNavierStokes
+import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.CojPSOJE.js";const u=JSON.parse('{"title":"Differentiating through the code","description":"","frontmatter":{},"headers":[],"relativePath":"manual/differentiability.md","filePath":"manual/differentiability.md","lastUpdated":null}'),l={name:"manual/differentiability.md"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"};function r(d,s,o,g,c,E){return t(),n("div",null,[s[10]||(s[10]=e(`

Differentiating through the code

IncompressibleNavierStokes is reverse-mode differentiable, which means that you can back-propagate gradients through the code. Two AD libraries are currently supported:

  • Zygote.jl: it is the default AD library in the Julia ecosystem and is the most widely used.

  • Enzyme.jl: currently has low coverage over the Julia programming language, however it is usually the most efficient if applicable.

Automatic differentiation with Zygote

Zygote.jl is the default choice for AD backend because it is easy to understand, compatible with most of the Julia ecosystem and good with vectorized code and BLAS. This comes at a cost however, as intermediate velocity fields need to be stored in memory for use in the backward pass. For this reason, many of the operators come in two versions: a slow differentiable allocating non-mutating variant (e.g. divergence) and fast non-differentiable non-allocating mutating variant (e.g. divergence!.)

Zygote limitation: array mutation

To make your code differentiable, you must use the differentiable versions of the operators (without the exclamation marks).

Example: Gradient of kinetic energy

To differentiate outputs of a simulation with respect to the initial conditions, make a time stepping loop composed of differentiable operations:

julia
using IncompressibleNavierStokes
 
 ax = range(0, 1, 101)
 setup = Setup(; x = (ax, ax), Re = 500.0)
@@ -73,7 +73,7 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0     0.0  0.0  0.0  0.0  0.0  0.0  0.0
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  …  0.0  0.0  0.0  0.0  0.0  0.0  0.0
  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0     0.0  0.0  0.0  0.0  0.0  0.0  0.0
`,23)),i("p",null,[s[2]||(s[2]=a("Remember that the derivative of the output (also called the ")),s[3]||(s[3]=i("em",null,"seed",-1)),s[4]||(s[4]=a(") has to be set to ")),i("mjx-container",h,[(t(),n("svg",k,s[0]||(s[0]=[i("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[i("g",{"data-mml-node":"math"},[i("g",{"data-mml-node":"mn"},[i("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),s[1]||(s[1]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mn",null,"1")])],-1))]),s[5]||(s[5]=a(" in order to compute the gradient. In this case the output is the force, that we store mutating the value of ")),s[6]||(s[6]=i("code",null,"dudt",-1)),s[7]||(s[7]=a(" inside ")),s[8]||(s[8]=i("code",null,"right_hand_side!",-1)),s[9]||(s[9]=a("."))]),s[11]||(s[11]=e(`

Then we pack the parameters to be passed to right_hand_side!:

julia
params = [setup, psolver];
-params_ref = Ref(params);
Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#124"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
+params_ref = Ref(params);
Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#120"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
 (rdft2-rank>=2/1
   (rdft2-vrank>=1-x100/1
     (rdft2-ct-dit/20
@@ -88,6 +88,6 @@ import{_ as p,c as n,a5 as e,j as i,a,o as t}from"./chunks/framework.BSoZtefh.js
   (dft-vrank>=1-x51/1
     (dft-ct-dit/10
       (dftw-direct-10/6 "t3fv_10_avx2_128")
-      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [0.0 1.0e-323 … 4.476222801294416e-309 2.22285826e-316; 1.0e-323 5.0e-324 … 4.086352372e-315 2.788239291745271e-292; … ; 1.0e-323 0.0 … 1.5e-323 2.5e-323; 5.0e-324 5.0e-324 … 4.172013485024793e-309 2.781469643852857e-309], ComplexF64[6.9473808475373e-310 + 6.9472543692157e-310im 6.9473808474195e-310 + 6.94738084786455e-310im … 1.45993310422047e-310 + 1.459933104524e-310im 1.02534836643315e-310 + 1.01855797969653e-310im; 6.94738084734203e-310 + 6.9473808472946e-310im 6.94738084786455e-310 + 6.9473396554765e-310im … 1.01855798000167e-310 + 1.02534836643315e-310im 1.0253483662276e-310 + 1.45314271789175e-310im; … ; 6.9473808474195e-310 + 6.94738084786455e-310im 0.0 + 0.0im … 1.425981173916e-311 + 1.0253483662276e-310im 1.425981173916e-311 + 1.0253483662276e-310im; 6.94738084741634e-310 + 6.9473808474195e-310im 0.0 + 0.0im … 1.45314271789175e-310 + 1.02534836643157e-310im 1.4259811738527e-311 + 1.351286920025e-310im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

Now, we call the autodiff function from Enzyme:

julia
Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
((nothing, nothing, nothing, nothing),)

Since we have passed a Duplicated object, the gradient of u is stored in du.

Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

julia
f = create_right_hand_side(setup, psolver)
+      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [-1.5169854288852012e167 3.836077315317973e-74 … 2.1219957905e-314 2.1219957905e-314; -8.507379514117979e-225 1.6027028966112923e-91 … 1.920406190823e-311 1.4578111083926e-311; … ; -1.2141858833153945e-300 3.3507373493510954e-307 … 0.0 2.1219957905e-314; 2.1995970577474693e-65 1.9226358005791237e-244 … 0.0 1.7209385864723e-311], ComplexF64[-1.861253086923037e-142 + 8.042877991305456e-295im -2.0507237810427664e196 + 7.951586378475656e99im … 3.226759849637e-312 + 9.732773503e-315im NaN + NaN*im; 2.8101085824812788e-154 + 3.6740254877366077e-153im 3.542437186098202e-246 - 4.88313130037973e-42im … 5.10171079e-315 + 4.61191569e-315im 5.101703954e-315 + 0.0im; … ; -3.041019724203204e130 - 6.465481485673722e146im 0.0 + 0.0im … 3.487346077e-315 + 4.0e-323im 7.153453405e-315 + 9.814087183e-315im; -2.1844512363060048e92 + 3.0219088082524375e124im 2.47e-320 + 0.0im … 3.50943247e-315 + 4.0e-323im 0.0 + 0.0im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

Now, we call the autodiff function from Enzyme:

julia
Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
((nothing, nothing, nothing, nothing),)

Since we have passed a Duplicated object, the gradient of u is stored in du.

Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

julia
f = create_right_hand_side(setup, psolver)
 _, zpull = Zygote.pullback(f, u, nothing, 0.0);
 @assert zpull(dudt)[1] == du
`,9))])}const m=p(l,[["render",r]]);export{u as __pageData,m as default}; diff --git a/previews/PR126/assets/manual_gpu.md.DpR1QCQ8.js b/previews/PR126/assets/manual_gpu.md.R8m1jgoL.js similarity index 95% rename from previews/PR126/assets/manual_gpu.md.DpR1QCQ8.js rename to previews/PR126/assets/manual_gpu.md.R8m1jgoL.js index 639a4c0d..bea4b2cc 100644 --- a/previews/PR126/assets/manual_gpu.md.DpR1QCQ8.js +++ b/previews/PR126/assets/manual_gpu.md.R8m1jgoL.js @@ -1,2 +1,2 @@ -import{_ as a,c as s,a5 as t,o as i}from"./chunks/framework.BSoZtefh.js";const c=JSON.parse('{"title":"GPU Support","description":"","frontmatter":{},"headers":[],"relativePath":"manual/gpu.md","filePath":"manual/gpu.md","lastUpdated":null}'),l={name:"manual/gpu.md"};function r(p,e,n,o,h,d){return i(),s("div",null,e[0]||(e[0]=[t(`

GPU Support

IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

julia
using CUDA
+import{_ as a,c as s,a5 as t,o as i}from"./chunks/framework.CojPSOJE.js";const c=JSON.parse('{"title":"GPU Support","description":"","frontmatter":{},"headers":[],"relativePath":"manual/gpu.md","filePath":"manual/gpu.md","lastUpdated":null}'),l={name:"manual/gpu.md"};function r(p,e,n,o,h,d){return i(),s("div",null,e[0]||(e[0]=[t(`

GPU Support

IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

julia
using CUDA
 setup = Setup(; kwargs..., backend = CUDABackend())

All operators have been made are backend agnostic by using KernelAbstractions.jl. Even if a GPU is not available, the operators are multithreaded if Julia is started with multiple threads (e.g. julia -t 4)

  • This has been tested with CUDA compatible GPUs.

  • This has not been tested with other GPU interfaces, such as

    If they start supporting sparse matrices and fast Fourier transforms they could also be used.

psolver_direct on CUDA

To use a specialized linear solver for CUDA, make sure to install and using CUDA.jl and CUDSS.jl. Then psolver_direct will automatically use the CUDSS solver.

`,6)]))}const k=a(l,[["render",r]]);export{c as __pageData,k as default}; diff --git a/previews/PR126/assets/manual_gpu.md.DpR1QCQ8.lean.js b/previews/PR126/assets/manual_gpu.md.R8m1jgoL.lean.js similarity index 95% rename from previews/PR126/assets/manual_gpu.md.DpR1QCQ8.lean.js rename to previews/PR126/assets/manual_gpu.md.R8m1jgoL.lean.js index 639a4c0d..bea4b2cc 100644 --- a/previews/PR126/assets/manual_gpu.md.DpR1QCQ8.lean.js +++ b/previews/PR126/assets/manual_gpu.md.R8m1jgoL.lean.js @@ -1,2 +1,2 @@ -import{_ as a,c as s,a5 as t,o as i}from"./chunks/framework.BSoZtefh.js";const c=JSON.parse('{"title":"GPU Support","description":"","frontmatter":{},"headers":[],"relativePath":"manual/gpu.md","filePath":"manual/gpu.md","lastUpdated":null}'),l={name:"manual/gpu.md"};function r(p,e,n,o,h,d){return i(),s("div",null,e[0]||(e[0]=[t(`

GPU Support

IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

julia
using CUDA
+import{_ as a,c as s,a5 as t,o as i}from"./chunks/framework.CojPSOJE.js";const c=JSON.parse('{"title":"GPU Support","description":"","frontmatter":{},"headers":[],"relativePath":"manual/gpu.md","filePath":"manual/gpu.md","lastUpdated":null}'),l={name:"manual/gpu.md"};function r(p,e,n,o,h,d){return i(),s("div",null,e[0]||(e[0]=[t(`

GPU Support

IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

julia
using CUDA
 setup = Setup(; kwargs..., backend = CUDABackend())

All operators have been made are backend agnostic by using KernelAbstractions.jl. Even if a GPU is not available, the operators are multithreaded if Julia is started with multiple threads (e.g. julia -t 4)

  • This has been tested with CUDA compatible GPUs.

  • This has not been tested with other GPU interfaces, such as

    If they start supporting sparse matrices and fast Fourier transforms they could also be used.

psolver_direct on CUDA

To use a specialized linear solver for CUDA, make sure to install and using CUDA.jl and CUDSS.jl. Then psolver_direct will automatically use the CUDSS solver.

`,6)]))}const k=a(l,[["render",r]]);export{c as __pageData,k as default}; diff --git a/previews/PR126/assets/manual_les.md.C92GZ80j.js b/previews/PR126/assets/manual_les.md.B91LySPy.js similarity index 94% rename from previews/PR126/assets/manual_les.md.C92GZ80j.js rename to previews/PR126/assets/manual_les.md.B91LySPy.js index 2212d9e8..9067e312 100644 --- a/previews/PR126/assets/manual_les.md.C92GZ80j.js +++ b/previews/PR126/assets/manual_les.md.B91LySPy.js @@ -1 +1 @@ -import{_ as t,c as s,a5 as o,o as a}from"./chunks/framework.BSoZtefh.js";const i="/IncompressibleNavierStokes.jl/previews/PR126/assets/resolution.DAYTxiG0.png",f=JSON.parse('{"title":"Large eddy simulation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/les.md","filePath":"manual/les.md","lastUpdated":null}'),r={name:"manual/les.md"};function l(n,e,d,c,m,u){return a(),s("div",null,e[0]||(e[0]=[o('

Large eddy simulation

Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

',7)]))}const p=t(r,[["render",l]]);export{f as __pageData,p as default}; +import{_ as t,c as s,a5 as o,o as a}from"./chunks/framework.CojPSOJE.js";const i="/IncompressibleNavierStokes.jl/previews/PR126/assets/resolution.DAYTxiG0.png",f=JSON.parse('{"title":"Large eddy simulation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/les.md","filePath":"manual/les.md","lastUpdated":null}'),r={name:"manual/les.md"};function l(n,e,d,c,m,u){return a(),s("div",null,e[0]||(e[0]=[o('

Large eddy simulation

Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

',7)]))}const p=t(r,[["render",l]]);export{f as __pageData,p as default}; diff --git a/previews/PR126/assets/manual_les.md.C92GZ80j.lean.js b/previews/PR126/assets/manual_les.md.B91LySPy.lean.js similarity index 94% rename from previews/PR126/assets/manual_les.md.C92GZ80j.lean.js rename to previews/PR126/assets/manual_les.md.B91LySPy.lean.js index 2212d9e8..9067e312 100644 --- a/previews/PR126/assets/manual_les.md.C92GZ80j.lean.js +++ b/previews/PR126/assets/manual_les.md.B91LySPy.lean.js @@ -1 +1 @@ -import{_ as t,c as s,a5 as o,o as a}from"./chunks/framework.BSoZtefh.js";const i="/IncompressibleNavierStokes.jl/previews/PR126/assets/resolution.DAYTxiG0.png",f=JSON.parse('{"title":"Large eddy simulation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/les.md","filePath":"manual/les.md","lastUpdated":null}'),r={name:"manual/les.md"};function l(n,e,d,c,m,u){return a(),s("div",null,e[0]||(e[0]=[o('

Large eddy simulation

Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

',7)]))}const p=t(r,[["render",l]]);export{f as __pageData,p as default}; +import{_ as t,c as s,a5 as o,o as a}from"./chunks/framework.CojPSOJE.js";const i="/IncompressibleNavierStokes.jl/previews/PR126/assets/resolution.DAYTxiG0.png",f=JSON.parse('{"title":"Large eddy simulation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/les.md","filePath":"manual/les.md","lastUpdated":null}'),r={name:"manual/les.md"};function l(n,e,d,c,m,u){return a(),s("div",null,e[0]||(e[0]=[o('

Large eddy simulation

Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

',7)]))}const p=t(r,[["render",l]]);export{f as __pageData,p as default}; diff --git a/previews/PR126/assets/manual_matrices.md.bqsxKyZ2.js b/previews/PR126/assets/manual_matrices.md.C52OXQSB.js similarity index 98% rename from previews/PR126/assets/manual_matrices.md.bqsxKyZ2.js rename to previews/PR126/assets/manual_matrices.md.C52OXQSB.js index cfd9e0e3..38e9f824 100644 --- a/previews/PR126/assets/manual_matrices.md.bqsxKyZ2.js +++ b/previews/PR126/assets/manual_matrices.md.C52OXQSB.js @@ -1,4 +1,4 @@ -import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const L=JSON.parse('{"title":"Sparse matrices","description":"","frontmatter":{},"headers":[],"relativePath":"manual/matrices.md","filePath":"manual/matrices.md","lastUpdated":null}'),h={name:"manual/matrices.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204 1000","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.801ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2122 1000","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.53ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3328.4 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.17ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4495.2 1000","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""};function S(B,s,A,D,I,M){const e=o("Badge");return p(),l("div",null,[s[53]||(s[53]=n(`

Sparse matrices

In IncompressibleNavierStokes, all operators are implemented as matrix-free kernels. However, access to the underlying matrices can sometimes be useful, for example to precompute matrix factorizations. We therefore provide sparse matrix versions of some of the linear operators (see full list below).

Example

Consider a simple setup

julia
using IncompressibleNavierStokes
+import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const L=JSON.parse('{"title":"Sparse matrices","description":"","frontmatter":{},"headers":[],"relativePath":"manual/matrices.md","filePath":"manual/matrices.md","lastUpdated":null}'),h={name:"manual/matrices.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204 1000","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.801ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2122 1000","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.53ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3328.4 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.17ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4495.2 1000","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""};function S(B,s,A,D,I,M){const e=o("Badge");return p(),l("div",null,[s[53]||(s[53]=n(`

Sparse matrices

In IncompressibleNavierStokes, all operators are implemented as matrix-free kernels. However, access to the underlying matrices can sometimes be useful, for example to precompute matrix factorizations. We therefore provide sparse matrix versions of some of the linear operators (see full list below).

Example

Consider a simple setup

julia
using IncompressibleNavierStokes
 ax = range(0, 1, 17);
 setup = Setup(; x = (ax, ax), Re = 1e3);
(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (18, 18), Nu = ((16, 16), (16, 16)), Np = (16, 16), Iu = (CartesianIndices((2:17, 2:17)), CartesianIndices((2:17, 2:17))), Ip = CartesianIndices((2:17, 2:17)), x = ([-0.0625, 0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625], [-0.0625, 0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625]), xu = (([0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625], [-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125]), ([-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125], [0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625])), xp = ([-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125], [-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125]), Δ = ([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625], [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625]), Δu = ([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.03125], [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.03125]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])), (([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 1000.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing)

The matrices for the linear operators are named by appending _mat to the function name, for example: divergence, pressuregradient, and diffusion become divergence_mat, pressuregradient_mat, diffusion_mat etc.

Let's assemble some matrices:

julia
divergence_mat(setup)
324×648 SparseArrays.SparseMatrixCSC{Float64, Int64} with 1024 stored entries:
 ⎡⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤
@@ -108,12 +108,12 @@ import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/fr
  0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0
  0.0     0.0     0.0     0.0     0.0  …     0.0     0.0     0.0     0.0  0.0
  0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0
- 0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0

By adding yM, we get the equality:

julia
maximum(abs, (div_matrix + yM) - div_kernel)
2.842170943040401e-14

API

`,14)),a("details",b,[a("summary",null,[s[20]||(s[20]=a("a",{id:"IncompressibleNavierStokes.bc_p_mat",href:"#IncompressibleNavierStokes.bc_p_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_p_mat")],-1)),s[21]||(s[21]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[22]||(s[22]=a("p",null,[i("Matrix for applying boundary conditions to pressure fields "),a("code",null,"p"),i(".")],-1)),s[23]||(s[23]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L61",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",T,[a("summary",null,[s[24]||(s[24]=a("a",{id:"IncompressibleNavierStokes.bc_temp_mat",href:"#IncompressibleNavierStokes.bc_temp_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_temp_mat")],-1)),s[25]||(s[25]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=a("p",null,[i("Matrix for applying boundary conditions to temperature fields "),a("code",null,"temp"),i(".")],-1)),s[27]||(s[27]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L64",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",Q,[a("summary",null,[s[28]||(s[28]=a("a",{id:"IncompressibleNavierStokes.bc_u_mat",href:"#IncompressibleNavierStokes.bc_u_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_u_mat")],-1)),s[29]||(s[29]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[30]||(s[30]=a("p",null,[i("Create matrix for applying boundary conditions to velocity fields "),a("code",null,"u"),i(". This matrix only applies the boundary conditions depending on "),a("code",null,"u"),i(" itself (e.g. "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.PeriodicBC"},[a("code",null,"PeriodicBC")]),i("). It does not apply constant boundary conditions (e.g. non-zero "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.DirichletBC"},[a("code",null,"DirichletBC")]),i(").")],-1)),s[31]||(s[31]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L54",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",v,[a("summary",null,[s[32]||(s[32]=a("a",{id:"IncompressibleNavierStokes.diffusion_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.diffusion_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion_mat")],-1)),s[33]||(s[33]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=n(`
julia
diffusion_mat(
+ 0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0

By adding yM, we get the equality:

julia
maximum(abs, (div_matrix + yM) - div_kernel)
2.842170943040401e-14

API

`,14)),a("details",b,[a("summary",null,[s[20]||(s[20]=a("a",{id:"IncompressibleNavierStokes.bc_p_mat",href:"#IncompressibleNavierStokes.bc_p_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_p_mat")],-1)),s[21]||(s[21]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[22]||(s[22]=a("p",null,[i("Matrix for applying boundary conditions to pressure fields "),a("code",null,"p"),i(".")],-1)),s[23]||(s[23]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L61",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",T,[a("summary",null,[s[24]||(s[24]=a("a",{id:"IncompressibleNavierStokes.bc_temp_mat",href:"#IncompressibleNavierStokes.bc_temp_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_temp_mat")],-1)),s[25]||(s[25]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=a("p",null,[i("Matrix for applying boundary conditions to temperature fields "),a("code",null,"temp"),i(".")],-1)),s[27]||(s[27]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L64",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",Q,[a("summary",null,[s[28]||(s[28]=a("a",{id:"IncompressibleNavierStokes.bc_u_mat",href:"#IncompressibleNavierStokes.bc_u_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_u_mat")],-1)),s[29]||(s[29]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[30]||(s[30]=a("p",null,[i("Create matrix for applying boundary conditions to velocity fields "),a("code",null,"u"),i(". This matrix only applies the boundary conditions depending on "),a("code",null,"u"),i(" itself (e.g. "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.PeriodicBC"},[a("code",null,"PeriodicBC")]),i("). It does not apply constant boundary conditions (e.g. non-zero "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.DirichletBC"},[a("code",null,"DirichletBC")]),i(").")],-1)),s[31]||(s[31]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L54",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",v,[a("summary",null,[s[32]||(s[32]=a("a",{id:"IncompressibleNavierStokes.diffusion_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.diffusion_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion_mat")],-1)),s[33]||(s[33]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=n(`
julia
diffusion_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Diffusion matrix.

source

`,3))]),a("details",f,[a("summary",null,[s[35]||(s[35]=a("a",{id:"IncompressibleNavierStokes.divergence_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.divergence_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence_mat")],-1)),s[36]||(s[36]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[37]||(s[37]=n(`
julia
divergence_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Diffusion matrix.

source

`,3))]),a("details",f,[a("summary",null,[s[35]||(s[35]=a("a",{id:"IncompressibleNavierStokes.divergence_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.divergence_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence_mat")],-1)),s[36]||(s[36]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[37]||(s[37]=n(`
julia
divergence_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Divergence matrix.

source

`,3))]),a("details",C,[a("summary",null,[s[38]||(s[38]=a("a",{id:"IncompressibleNavierStokes.laplacian_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.laplacian_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian_mat")],-1)),s[39]||(s[39]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[40]||(s[40]=n('
julia
laplacian_mat(setup) -> Any

Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

source

',3))]),a("details",x,[a("summary",null,[s[41]||(s[41]=a("a",{id:"IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_scalarfield_mat")],-1)),s[42]||(s[42]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[43]||(s[43]=n('
julia
pad_scalarfield_mat(setup) -> Any

Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

See also: pad_vectorfield_mat.

source

',4))]),a("details",F,[a("summary",null,[s[44]||(s[44]=a("a",{id:"IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_vectorfield_mat")],-1)),s[45]||(s[45]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=n(`
julia
pad_vectorfield_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Divergence matrix.

source

`,3))]),a("details",C,[a("summary",null,[s[38]||(s[38]=a("a",{id:"IncompressibleNavierStokes.laplacian_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.laplacian_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian_mat")],-1)),s[39]||(s[39]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[40]||(s[40]=n('
julia
laplacian_mat(setup) -> Any

Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

source

',3))]),a("details",x,[a("summary",null,[s[41]||(s[41]=a("a",{id:"IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_scalarfield_mat")],-1)),s[42]||(s[42]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[43]||(s[43]=n('
julia
pad_scalarfield_mat(setup) -> Any

Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

See also: pad_vectorfield_mat.

source

',4))]),a("details",F,[a("summary",null,[s[44]||(s[44]=a("a",{id:"IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_vectorfield_mat")],-1)),s[45]||(s[45]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=n(`
julia
pad_vectorfield_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

source

`,3))]),a("details",j,[a("summary",null,[s[47]||(s[47]=a("a",{id:"IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient_mat")],-1)),s[48]||(s[48]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=n(`
julia
pressuregradient_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

source

`,3))]),a("details",j,[a("summary",null,[s[47]||(s[47]=a("a",{id:"IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient_mat")],-1)),s[48]||(s[48]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=n(`
julia
pressuregradient_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Pressure gradient matrix.

source

`,3))]),a("details",w,[a("summary",null,[s[50]||(s[50]=a("a",{id:"IncompressibleNavierStokes.volume_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.volume_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.volume_mat")],-1)),s[51]||(s[51]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=n('
julia
volume_mat(setup) -> Any

Volume-size matrix.

source

',3))])])}const _=r(h,[["render",S]]);export{L as __pageData,_ as default}; +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Pressure gradient matrix.

source

`,3))]),a("details",w,[a("summary",null,[s[50]||(s[50]=a("a",{id:"IncompressibleNavierStokes.volume_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.volume_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.volume_mat")],-1)),s[51]||(s[51]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=n('
julia
volume_mat(setup) -> Any

Volume-size matrix.

source

',3))])])}const _=r(h,[["render",S]]);export{L as __pageData,_ as default}; diff --git a/previews/PR126/assets/manual_matrices.md.bqsxKyZ2.lean.js b/previews/PR126/assets/manual_matrices.md.C52OXQSB.lean.js similarity index 98% rename from previews/PR126/assets/manual_matrices.md.bqsxKyZ2.lean.js rename to previews/PR126/assets/manual_matrices.md.C52OXQSB.lean.js index cfd9e0e3..38e9f824 100644 --- a/previews/PR126/assets/manual_matrices.md.bqsxKyZ2.lean.js +++ b/previews/PR126/assets/manual_matrices.md.C52OXQSB.lean.js @@ -1,4 +1,4 @@ -import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const L=JSON.parse('{"title":"Sparse matrices","description":"","frontmatter":{},"headers":[],"relativePath":"manual/matrices.md","filePath":"manual/matrices.md","lastUpdated":null}'),h={name:"manual/matrices.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204 1000","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.801ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2122 1000","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.53ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3328.4 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.17ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4495.2 1000","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""};function S(B,s,A,D,I,M){const e=o("Badge");return p(),l("div",null,[s[53]||(s[53]=n(`

Sparse matrices

In IncompressibleNavierStokes, all operators are implemented as matrix-free kernels. However, access to the underlying matrices can sometimes be useful, for example to precompute matrix factorizations. We therefore provide sparse matrix versions of some of the linear operators (see full list below).

Example

Consider a simple setup

julia
using IncompressibleNavierStokes
+import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const L=JSON.parse('{"title":"Sparse matrices","description":"","frontmatter":{},"headers":[],"relativePath":"manual/matrices.md","filePath":"manual/matrices.md","lastUpdated":null}'),h={name:"manual/matrices.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.986ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204 1000","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.801ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2122 1000","aria-hidden":"true"},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.53ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3328.4 1000","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.17ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4495.2 1000","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""};function S(B,s,A,D,I,M){const e=o("Badge");return p(),l("div",null,[s[53]||(s[53]=n(`

Sparse matrices

In IncompressibleNavierStokes, all operators are implemented as matrix-free kernels. However, access to the underlying matrices can sometimes be useful, for example to precompute matrix factorizations. We therefore provide sparse matrix versions of some of the linear operators (see full list below).

Example

Consider a simple setup

julia
using IncompressibleNavierStokes
 ax = range(0, 1, 17);
 setup = Setup(; x = (ax, ax), Re = 1e3);
(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (18, 18), Nu = ((16, 16), (16, 16)), Np = (16, 16), Iu = (CartesianIndices((2:17, 2:17)), CartesianIndices((2:17, 2:17))), Ip = CartesianIndices((2:17, 2:17)), x = ([-0.0625, 0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625], [-0.0625, 0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625]), xu = (([0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625], [-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125]), ([-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125], [0.0, 0.0625, 0.125, 0.1875, 0.25, 0.3125, 0.375, 0.4375, 0.5, 0.5625, 0.625, 0.6875, 0.75, 0.8125, 0.875, 0.9375, 1.0, 1.0625])), xp = ([-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125], [-0.03125, 0.03125, 0.09375, 0.15625, 0.21875, 0.28125, 0.34375, 0.40625, 0.46875, 0.53125, 0.59375, 0.65625, 0.71875, 0.78125, 0.84375, 0.90625, 0.96875, 1.03125]), Δ = ([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625], [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625]), Δu = ([0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.03125], [0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.0625, 0.03125]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])), (([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 1000.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing)

The matrices for the linear operators are named by appending _mat to the function name, for example: divergence, pressuregradient, and diffusion become divergence_mat, pressuregradient_mat, diffusion_mat etc.

Let's assemble some matrices:

julia
divergence_mat(setup)
324×648 SparseArrays.SparseMatrixCSC{Float64, Int64} with 1024 stored entries:
 ⎡⠀⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣄⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⎤
@@ -108,12 +108,12 @@ import{_ as r,c as l,a5 as n,j as a,a as i,G as t,B as o,o as p}from"./chunks/fr
  0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0
  0.0     0.0     0.0     0.0     0.0  …     0.0     0.0     0.0     0.0  0.0
  0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0
- 0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0

By adding yM, we get the equality:

julia
maximum(abs, (div_matrix + yM) - div_kernel)
2.842170943040401e-14

API

`,14)),a("details",b,[a("summary",null,[s[20]||(s[20]=a("a",{id:"IncompressibleNavierStokes.bc_p_mat",href:"#IncompressibleNavierStokes.bc_p_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_p_mat")],-1)),s[21]||(s[21]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[22]||(s[22]=a("p",null,[i("Matrix for applying boundary conditions to pressure fields "),a("code",null,"p"),i(".")],-1)),s[23]||(s[23]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L61",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",T,[a("summary",null,[s[24]||(s[24]=a("a",{id:"IncompressibleNavierStokes.bc_temp_mat",href:"#IncompressibleNavierStokes.bc_temp_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_temp_mat")],-1)),s[25]||(s[25]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=a("p",null,[i("Matrix for applying boundary conditions to temperature fields "),a("code",null,"temp"),i(".")],-1)),s[27]||(s[27]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L64",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",Q,[a("summary",null,[s[28]||(s[28]=a("a",{id:"IncompressibleNavierStokes.bc_u_mat",href:"#IncompressibleNavierStokes.bc_u_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_u_mat")],-1)),s[29]||(s[29]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[30]||(s[30]=a("p",null,[i("Create matrix for applying boundary conditions to velocity fields "),a("code",null,"u"),i(". This matrix only applies the boundary conditions depending on "),a("code",null,"u"),i(" itself (e.g. "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.PeriodicBC"},[a("code",null,"PeriodicBC")]),i("). It does not apply constant boundary conditions (e.g. non-zero "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.DirichletBC"},[a("code",null,"DirichletBC")]),i(").")],-1)),s[31]||(s[31]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/matrices.jl#L54",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",v,[a("summary",null,[s[32]||(s[32]=a("a",{id:"IncompressibleNavierStokes.diffusion_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.diffusion_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion_mat")],-1)),s[33]||(s[33]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=n(`
julia
diffusion_mat(
+ 0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0

By adding yM, we get the equality:

julia
maximum(abs, (div_matrix + yM) - div_kernel)
2.842170943040401e-14

API

`,14)),a("details",b,[a("summary",null,[s[20]||(s[20]=a("a",{id:"IncompressibleNavierStokes.bc_p_mat",href:"#IncompressibleNavierStokes.bc_p_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_p_mat")],-1)),s[21]||(s[21]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[22]||(s[22]=a("p",null,[i("Matrix for applying boundary conditions to pressure fields "),a("code",null,"p"),i(".")],-1)),s[23]||(s[23]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L61",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",T,[a("summary",null,[s[24]||(s[24]=a("a",{id:"IncompressibleNavierStokes.bc_temp_mat",href:"#IncompressibleNavierStokes.bc_temp_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_temp_mat")],-1)),s[25]||(s[25]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[26]||(s[26]=a("p",null,[i("Matrix for applying boundary conditions to temperature fields "),a("code",null,"temp"),i(".")],-1)),s[27]||(s[27]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L64",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",Q,[a("summary",null,[s[28]||(s[28]=a("a",{id:"IncompressibleNavierStokes.bc_u_mat",href:"#IncompressibleNavierStokes.bc_u_mat"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.bc_u_mat")],-1)),s[29]||(s[29]=i()),t(e,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[30]||(s[30]=a("p",null,[i("Create matrix for applying boundary conditions to velocity fields "),a("code",null,"u"),i(". This matrix only applies the boundary conditions depending on "),a("code",null,"u"),i(" itself (e.g. "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.PeriodicBC"},[a("code",null,"PeriodicBC")]),i("). It does not apply constant boundary conditions (e.g. non-zero "),a("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.DirichletBC"},[a("code",null,"DirichletBC")]),i(").")],-1)),s[31]||(s[31]=a("p",null,[a("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/matrices.jl#L54",target:"_blank",rel:"noreferrer"},"source")],-1))]),a("details",v,[a("summary",null,[s[32]||(s[32]=a("a",{id:"IncompressibleNavierStokes.diffusion_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.diffusion_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion_mat")],-1)),s[33]||(s[33]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=n(`
julia
diffusion_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Diffusion matrix.

source

`,3))]),a("details",f,[a("summary",null,[s[35]||(s[35]=a("a",{id:"IncompressibleNavierStokes.divergence_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.divergence_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence_mat")],-1)),s[36]||(s[36]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[37]||(s[37]=n(`
julia
divergence_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Diffusion matrix.

source

`,3))]),a("details",f,[a("summary",null,[s[35]||(s[35]=a("a",{id:"IncompressibleNavierStokes.divergence_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.divergence_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence_mat")],-1)),s[36]||(s[36]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[37]||(s[37]=n(`
julia
divergence_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Divergence matrix.

source

`,3))]),a("details",C,[a("summary",null,[s[38]||(s[38]=a("a",{id:"IncompressibleNavierStokes.laplacian_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.laplacian_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian_mat")],-1)),s[39]||(s[39]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[40]||(s[40]=n('
julia
laplacian_mat(setup) -> Any

Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

source

',3))]),a("details",x,[a("summary",null,[s[41]||(s[41]=a("a",{id:"IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_scalarfield_mat")],-1)),s[42]||(s[42]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[43]||(s[43]=n('
julia
pad_scalarfield_mat(setup) -> Any

Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

See also: pad_vectorfield_mat.

source

',4))]),a("details",F,[a("summary",null,[s[44]||(s[44]=a("a",{id:"IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_vectorfield_mat")],-1)),s[45]||(s[45]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=n(`
julia
pad_vectorfield_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Divergence matrix.

source

`,3))]),a("details",C,[a("summary",null,[s[38]||(s[38]=a("a",{id:"IncompressibleNavierStokes.laplacian_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.laplacian_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian_mat")],-1)),s[39]||(s[39]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[40]||(s[40]=n('
julia
laplacian_mat(setup) -> Any

Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

source

',3))]),a("details",x,[a("summary",null,[s[41]||(s[41]=a("a",{id:"IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_scalarfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_scalarfield_mat")],-1)),s[42]||(s[42]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[43]||(s[43]=n('
julia
pad_scalarfield_mat(setup) -> Any

Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

See also: pad_vectorfield_mat.

source

',4))]),a("details",F,[a("summary",null,[s[44]||(s[44]=a("a",{id:"IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pad_vectorfield_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pad_vectorfield_mat")],-1)),s[45]||(s[45]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[46]||(s[46]=n(`
julia
pad_vectorfield_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

source

`,3))]),a("details",j,[a("summary",null,[s[47]||(s[47]=a("a",{id:"IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient_mat")],-1)),s[48]||(s[48]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=n(`
julia
pressuregradient_mat(
+) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

source

`,3))]),a("details",j,[a("summary",null,[s[47]||(s[47]=a("a",{id:"IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.pressuregradient_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient_mat")],-1)),s[48]||(s[48]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[49]||(s[49]=n(`
julia
pressuregradient_mat(
     setup
-) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Pressure gradient matrix.

source

`,3))]),a("details",w,[a("summary",null,[s[50]||(s[50]=a("a",{id:"IncompressibleNavierStokes.volume_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.volume_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.volume_mat")],-1)),s[51]||(s[51]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=n('
julia
volume_mat(setup) -> Any

Volume-size matrix.

source

',3))])])}const _=r(h,[["render",S]]);export{L as __pageData,_ as default}; +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

Pressure gradient matrix.

source

`,3))]),a("details",w,[a("summary",null,[s[50]||(s[50]=a("a",{id:"IncompressibleNavierStokes.volume_mat-Tuple{Any}",href:"#IncompressibleNavierStokes.volume_mat-Tuple{Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.volume_mat")],-1)),s[51]||(s[51]=i()),t(e,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[52]||(s[52]=n('
julia
volume_mat(setup) -> Any

Volume-size matrix.

source

',3))])])}const _=r(h,[["render",S]]);export{L as __pageData,_ as default}; diff --git a/previews/PR126/assets/manual_ns.md.Bdh0AlV6.lean.js b/previews/PR126/assets/manual_ns.md.K2Xm3fp6.js similarity index 99% rename from previews/PR126/assets/manual_ns.md.Bdh0AlV6.lean.js rename to previews/PR126/assets/manual_ns.md.K2Xm3fp6.js index c7aff7e0..c4a6097a 100644 --- a/previews/PR126/assets/manual_ns.md.Bdh0AlV6.lean.js +++ b/previews/PR126/assets/manual_ns.md.K2Xm3fp6.js @@ -1 +1 @@ -import{_ as s,c as T,j as t,a,a5 as l,o as e}from"./chunks/framework.BSoZtefh.js";const U1=JSON.parse('{"title":"Incompressible Navier-Stokes equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ns.md","filePath":"manual/ns.md","lastUpdated":null}'),o={name:"manual/ns.md"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.279ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.051ex",height:"7.69ex",role:"img",focusable:"false",viewBox:"0 -1949.5 15934.4 3399","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.304ex",height:"2.022ex",role:"img",focusable:"false",viewBox:"0 -853.7 3228.3 893.7","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.473ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4187.2 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.199ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -442 530 442","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.798ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6982.8 1103.7","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.033ex"},xmlns:"http://www.w3.org/2000/svg",width:"68.204ex",height:"11.197ex",role:"img",focusable:"false",viewBox:"0 -2724.5 30146.3 4949","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.451ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -705 2851.6 745","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.081ex",height:"1.667ex",role:"img",focusable:"false",viewBox:"0 -715 1362 737","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.672ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 1181 705","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.059ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1352 999","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.345ex",height:"1.708ex",role:"img",focusable:"false",viewBox:"0 -715 3246.6 755","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.081ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -583 3571.7 747.8","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.77ex",height:"1.373ex",role:"img",focusable:"false",viewBox:"0 -442 1666.2 606.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.319ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4561 765","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.649ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6917 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.337ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6779 1000","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.474ex",height:"1.629ex",role:"img",focusable:"false",viewBox:"0 -680 2419.6 720","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.281ex",height:"1.803ex",role:"img",focusable:"false",viewBox:"0 -715 4986 797","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.029ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.17ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -431 517 444","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.432ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3727 748","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.339ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7222 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.053ex",height:"2.826ex",role:"img",focusable:"false",viewBox:"0 -899.5 13725.4 1249","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.786ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 23331.5 3093.4","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.632ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 3373.3 1209.9","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.535ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 4656.7 1209.9","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.202ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.008ex",height:"3.159ex",role:"img",focusable:"false",viewBox:"0 -864.9 11053.8 1396.1","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.369ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4583 765","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.695ex",height:"5.095ex",role:"img",focusable:"false",viewBox:"0 -1509.9 8263.1 2251.9","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.567ex",height:"11.153ex",role:"img",focusable:"false",viewBox:"0 -2714.9 9090.8 4929.8","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.473ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 651 899","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.371ex",height:"4.826ex",role:"img",focusable:"false",viewBox:"0 -1391 11214 2132.9","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.159ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 4932.1 1088.9","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.063ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 4890 899","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},F1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.049ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 6209.6 1088.9","aria-hidden":"true"};function N1(I1,Q,q1,E1,K1,W1){return e(),T("div",null,[Q[138]||(Q[138]=t("h1",{id:"Incompressible-Navier-Stokes-equations",tabindex:"-1"},[a("Incompressible Navier-Stokes equations "),t("a",{class:"header-anchor",href:"#Incompressible-Navier-Stokes-equations","aria-label":'Permalink to "Incompressible Navier-Stokes equations {#Incompressible-Navier-Stokes-equations}"'},"​")],-1)),Q[139]||(Q[139]=t("p",null,"The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:",-1)),t("mjx-container",n,[(e(),T("svg",m,Q[0]||(Q[0]=[l('',1)]))),Q[1]||(Q[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"u")]),t("mrow",null,[t("mi",null,"∂"),t("mi",null,"t")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",null,"+"),t("mi",null,"ν"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"u"),t("mo",null,"+"),t("mi",null,"f"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[20]||(Q[20]=a("where ")),t("mjx-container",r,[(e(),T("svg",d,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"⊂"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mi",null,"d")])])],-1))]),Q[21]||(Q[21]=a(" is the domain, ")),t("mjx-container",i,[(e(),T("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"d"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"2"),t("mo",null,","),t("mn",null,"3"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),Q[22]||(Q[22]=a(" is the spatial dimension, ")),t("mjx-container",p,[(e(),T("svg",g,Q[6]||(Q[6]=[l('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"u"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[23]||(Q[23]=a(" is the velocity field, ")),t("mjx-container",u,[(e(),T("svg",w,Q[8]||(Q[8]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[9]||(Q[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),Q[24]||(Q[24]=a(" is the pressure, ")),t("mjx-container",x,[(e(),T("svg",c,Q[10]||(Q[10]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D708",d:"M74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[11]||(Q[11]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ν")])],-1))]),Q[25]||(Q[25]=a(" is the kinematic viscosity, and ")),t("mjx-container",H,[(e(),T("svg",f,Q[12]||(Q[12]=[l('',1)]))),Q[13]||(Q[13]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"f"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"f"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"f"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[26]||(Q[26]=a(" is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate ")),t("mjx-container",L,[(e(),T("svg",y,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[27]||(Q[27]=a(" and time ")),t("mjx-container",k,[(e(),T("svg",M,Q[16]||(Q[16]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[17]||(Q[17]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t")])],-1))]),Q[28]||(Q[28]=a(". We assume that ")),t("mjx-container",V,[(e(),T("svg",Z,Q[18]||(Q[18]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[19]||(Q[19]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[29]||(Q[29]=a(" is a rectangular domain."))]),Q[140]||(Q[140]=t("h2",{id:"Integral-form",tabindex:"-1"},[a("Integral form "),t("a",{class:"header-anchor",href:"#Integral-form","aria-label":'Permalink to "Integral form {#Integral-form}"'},"​")],-1)),Q[141]||(Q[141]=t("p",null,"The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:",-1)),t("mjx-container",v,[(e(),T("svg",b,Q[30]||(Q[30]=[l('',1)]))),Q[31]||(Q[31]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"u"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",null,"−"),t("mi",null,"p"),t("mi",null,"I"),t("mo",null,"+"),t("mi",null,"ν"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"f"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[42]||(Q[42]=a("where ")),t("mjx-container",D,[(e(),T("svg",j,Q[32]||(Q[32]=[l('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",null,"⊂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[43]||(Q[43]=a(" is an arbitrary control volume with boundary ")),t("mjx-container",C,[(e(),T("svg",O,Q[34]||(Q[34]=[l('',1)]))),Q[35]||(Q[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])],-1))]),Q[44]||(Q[44]=a(", normal ")),t("mjx-container",R,[(e(),T("svg",B,Q[36]||(Q[36]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),Q[45]||(Q[45]=a(", surface element ")),t("mjx-container",S,[(e(),T("svg",z,Q[38]||(Q[38]=[l('',1)]))),Q[39]||(Q[39]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[46]||(Q[46]=a(", and volume size ")),t("mjx-container",J,[(e(),T("svg",G,Q[40]||(Q[40]=[l('',1)]))),Q[41]||(Q[41]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),Q[47]||(Q[47]=a(". We have divided by the control volume sizes in the integral form."))]),Q[142]||(Q[142]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t("p",null,[Q[50]||(Q[50]=a("The boundary conditions on a part of the boundary ")),t("mjx-container",A,[(e(),T("svg",P,Q[48]||(Q[48]=[l('',1)]))),Q[49]||(Q[49]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[51]||(Q[51]=a(" are one or more of the following:"))]),t("ul",null,[t("li",null,[t("p",null,[Q[58]||(Q[58]=a("Dirichlet: ")),t("mjx-container",X,[(e(),T("svg",F,Q[52]||(Q[52]=[l('',1)]))),Q[53]||(Q[53]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[59]||(Q[59]=a(" on ")),t("mjx-container",N,[(e(),T("svg",I,Q[54]||(Q[54]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[55]||(Q[55]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[60]||(Q[60]=a(" for some ")),t("mjx-container",q,[(e(),T("svg",E,Q[56]||(Q[56]=[l('',1)]))),Q[57]||(Q[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[61]||(Q[61]=a(";"))])]),t("li",null,[t("p",null,[Q[66]||(Q[66]=a("Neumann: ")),t("mjx-container",K,[(e(),T("svg",W,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[67]||(Q[67]=a(" on ")),t("mjx-container",$,[(e(),T("svg",U,Q[64]||(Q[64]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[65]||(Q[65]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[68]||(Q[68]=a(";"))])]),t("li",null,[t("p",null,[Q[79]||(Q[79]=a("Periodic: ")),t("mjx-container",Y,[(e(),T("svg",_,Q[69]||(Q[69]=[l('',1)]))),Q[70]||(Q[70]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[80]||(Q[80]=a(" and ")),t("mjx-container",t1,[(e(),T("svg",Q1,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[81]||(Q[81]=a(" for ")),t("mjx-container",a1,[(e(),T("svg",T1,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"∈"),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[82]||(Q[82]=a(", where ")),t("mjx-container",e1,[(e(),T("svg",l1,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[83]||(Q[83]=a(" is another part of the boundary and ")),t("mjx-container",s1,[(e(),T("svg",o1,Q[77]||(Q[77]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D70F",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[78]||(Q[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ")])],-1))]),Q[84]||(Q[84]=a(" is a translation vector;"))])]),t("li",null,[t("p",null,[Q[91]||(Q[91]=a("Stress free: ")),t("mjx-container",n1,[(e(),T("svg",m1,Q[85]||(Q[85]=[l('',1)]))),Q[86]||(Q[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[92]||(Q[92]=a(" on ")),t("mjx-container",r1,[(e(),T("svg",d1,Q[87]||(Q[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[88]||(Q[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[93]||(Q[93]=a(", where ")),t("mjx-container",i1,[(e(),T("svg",h1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"I")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"ν"),t("mi",null,"S"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[94]||(Q[94]=a("."))])])]),Q[143]||(Q[143]=t("h2",{id:"Pressure-equation",tabindex:"-1"},[a("Pressure equation "),t("a",{class:"header-anchor",href:"#Pressure-equation","aria-label":'Permalink to "Pressure equation {#Pressure-equation}"'},"​")],-1)),Q[144]||(Q[144]=t("p",null,"Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:",-1)),t("mjx-container",p1,[(e(),T("svg",g1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"f")])],-1))]),Q[145]||(Q[145]=t("p",null,"In scalar notation, this becomes",-1)),t("mjx-container",u1,[(e(),T("svg",w1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mi",null,"p"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"β"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")]),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"f"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),Q[146]||(Q[146]=t("p",null,"Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.",-1)),t("p",null,[Q[101]||(Q[101]=a("If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to ")),t("mjx-container",x1,[(e(),T("svg",c1,Q[99]||(Q[99]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mn"},[t("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[100]||(Q[100]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"1")])],-1))]),Q[102]||(Q[102]=a("."))]),Q[147]||(Q[147]=t("h2",{id:"Other-quantities-of-interest",tabindex:"-1"},[a("Other quantities of interest "),t("a",{class:"header-anchor",href:"#Other-quantities-of-interest","aria-label":'Permalink to "Other quantities of interest {#Other-quantities-of-interest}"'},"​")],-1)),Q[148]||(Q[148]=t("h3",{id:"Reynolds-number",tabindex:"-1"},[a("Reynolds number "),t("a",{class:"header-anchor",href:"#Reynolds-number","aria-label":'Permalink to "Reynolds number {#Reynolds-number}"'},"​")],-1)),t("p",null,[Q[105]||(Q[105]=a("The Reynolds number is the inverse of the viscosity: ")),t("mjx-container",H1,[(e(),T("svg",f1,Q[103]||(Q[103]=[l('',1)]))),Q[104]||(Q[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("mi",null,"e"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mi",null,"ν")])])],-1))]),Q[106]||(Q[106]=a(". It is the only flow parameter governing the incompressible Navier-Stokes equations."))]),Q[149]||(Q[149]=t("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),t("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),t("p",null,[Q[111]||(Q[111]=a("The local and total kinetic energy are defined by ")),t("mjx-container",L1,[(e(),T("svg",y1,Q[107]||(Q[107]=[l('',1)]))),Q[108]||(Q[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2"),t("mn",null,"2")])])],-1))]),Q[112]||(Q[112]=a(" and ")),t("mjx-container",k1,[(e(),T("svg",M1,Q[109]||(Q[109]=[l('',1)]))),Q[110]||(Q[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"K"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msup",null,[t("mi",null,"L"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")")]),t("mn",null,"2")]),t("mo",null,"="),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mi",{mathvariant:"normal"},"Ω")]),t("mi",null,"k"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[113]||(Q[113]=a("."))]),Q[150]||(Q[150]=t("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),t("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t("p",null,[Q[116]||(Q[116]=a("The vorticity is defined as ")),t("mjx-container",V1,[(e(),T("svg",Z1,Q[114]||(Q[114]=[l('',1)]))),Q[115]||(Q[115]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"u")])],-1))]),Q[117]||(Q[117]=a("."))]),Q[151]||(Q[151]=t("p",null,"In 2D, it is a scalar field given by",-1)),t("mjx-container",v1,[(e(),T("svg",b1,Q[118]||(Q[118]=[l('',1)]))),Q[119]||(Q[119]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[152]||(Q[152]=t("p",null,"In 3D, it is a vector field given by",-1)),t("mjx-container",D1,[(e(),T("svg",j1,Q[120]||(Q[120]=[l('',1)]))),Q[121]||(Q[121]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[Q[124]||(Q[124]=a("Note that the 2D vorticity is equal to the ")),t("mjx-container",C1,[(e(),T("svg",O1,Q[122]||(Q[122]=[l('',1)]))),Q[123]||(Q[123]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])],-1))]),Q[125]||(Q[125]=a("-component of the 3D vorticity."))]),Q[153]||(Q[153]=t("h3",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),t("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t("p",null,[Q[128]||(Q[128]=a("In 2D, the stream function ")),t("mjx-container",R1,[(e(),T("svg",B1,Q[126]||(Q[126]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D713",d:"M161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[127]||(Q[127]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ψ")])],-1))]),Q[129]||(Q[129]=a(" is a scalar field such that"))]),t("mjx-container",S1,[(e(),T("svg",z1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[154]||(Q[154]=t("p",null,"It can be found by solving",-1)),t("mjx-container",J1,[(e(),T("svg",G1,Q[132]||(Q[132]=[l('',1)]))),Q[133]||(Q[133]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"ω"),t("mo",null,".")])],-1))]),Q[155]||(Q[155]=t("p",null,"In 3D, the stream function is a vector field such that",-1)),t("mjx-container",A1,[(e(),T("svg",P1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ψ"),t("mo",null,".")])],-1))]),Q[156]||(Q[156]=t("p",null,"It can be found by solving",-1)),t("mjx-container",X1,[(e(),T("svg",F1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ω"),t("mo",null,".")])],-1))])])}const Y1=s(o,[["render",N1]]);export{U1 as __pageData,Y1 as default}; +import{_ as s,c as T,j as t,a,a5 as l,o as e}from"./chunks/framework.CojPSOJE.js";const U1=JSON.parse('{"title":"Incompressible Navier-Stokes equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ns.md","filePath":"manual/ns.md","lastUpdated":null}'),o={name:"manual/ns.md"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.279ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.051ex",height:"7.69ex",role:"img",focusable:"false",viewBox:"0 -1949.5 15934.4 3399","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.304ex",height:"2.022ex",role:"img",focusable:"false",viewBox:"0 -853.7 3228.3 893.7","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.473ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4187.2 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.199ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -442 530 442","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.798ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6982.8 1103.7","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.033ex"},xmlns:"http://www.w3.org/2000/svg",width:"68.204ex",height:"11.197ex",role:"img",focusable:"false",viewBox:"0 -2724.5 30146.3 4949","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.451ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -705 2851.6 745","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.081ex",height:"1.667ex",role:"img",focusable:"false",viewBox:"0 -715 1362 737","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.672ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 1181 705","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.059ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1352 999","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.345ex",height:"1.708ex",role:"img",focusable:"false",viewBox:"0 -715 3246.6 755","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.081ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -583 3571.7 747.8","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.77ex",height:"1.373ex",role:"img",focusable:"false",viewBox:"0 -442 1666.2 606.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.319ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4561 765","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.649ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6917 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.337ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6779 1000","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.474ex",height:"1.629ex",role:"img",focusable:"false",viewBox:"0 -680 2419.6 720","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.281ex",height:"1.803ex",role:"img",focusable:"false",viewBox:"0 -715 4986 797","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.029ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.17ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -431 517 444","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.432ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3727 748","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.339ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7222 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.053ex",height:"2.826ex",role:"img",focusable:"false",viewBox:"0 -899.5 13725.4 1249","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.786ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 23331.5 3093.4","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.632ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 3373.3 1209.9","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.535ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 4656.7 1209.9","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.202ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.008ex",height:"3.159ex",role:"img",focusable:"false",viewBox:"0 -864.9 11053.8 1396.1","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.369ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4583 765","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.695ex",height:"5.095ex",role:"img",focusable:"false",viewBox:"0 -1509.9 8263.1 2251.9","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.567ex",height:"11.153ex",role:"img",focusable:"false",viewBox:"0 -2714.9 9090.8 4929.8","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.473ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 651 899","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.371ex",height:"4.826ex",role:"img",focusable:"false",viewBox:"0 -1391 11214 2132.9","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.159ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 4932.1 1088.9","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.063ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 4890 899","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},F1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.049ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 6209.6 1088.9","aria-hidden":"true"};function N1(I1,Q,q1,E1,K1,W1){return e(),T("div",null,[Q[138]||(Q[138]=t("h1",{id:"Incompressible-Navier-Stokes-equations",tabindex:"-1"},[a("Incompressible Navier-Stokes equations "),t("a",{class:"header-anchor",href:"#Incompressible-Navier-Stokes-equations","aria-label":'Permalink to "Incompressible Navier-Stokes equations {#Incompressible-Navier-Stokes-equations}"'},"​")],-1)),Q[139]||(Q[139]=t("p",null,"The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:",-1)),t("mjx-container",n,[(e(),T("svg",m,Q[0]||(Q[0]=[l('',1)]))),Q[1]||(Q[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"u")]),t("mrow",null,[t("mi",null,"∂"),t("mi",null,"t")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",null,"+"),t("mi",null,"ν"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"u"),t("mo",null,"+"),t("mi",null,"f"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[20]||(Q[20]=a("where ")),t("mjx-container",r,[(e(),T("svg",d,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"⊂"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mi",null,"d")])])],-1))]),Q[21]||(Q[21]=a(" is the domain, ")),t("mjx-container",i,[(e(),T("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"d"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"2"),t("mo",null,","),t("mn",null,"3"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),Q[22]||(Q[22]=a(" is the spatial dimension, ")),t("mjx-container",p,[(e(),T("svg",g,Q[6]||(Q[6]=[l('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"u"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[23]||(Q[23]=a(" is the velocity field, ")),t("mjx-container",u,[(e(),T("svg",w,Q[8]||(Q[8]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[9]||(Q[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),Q[24]||(Q[24]=a(" is the pressure, ")),t("mjx-container",x,[(e(),T("svg",c,Q[10]||(Q[10]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D708",d:"M74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[11]||(Q[11]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ν")])],-1))]),Q[25]||(Q[25]=a(" is the kinematic viscosity, and ")),t("mjx-container",H,[(e(),T("svg",f,Q[12]||(Q[12]=[l('',1)]))),Q[13]||(Q[13]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"f"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"f"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"f"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[26]||(Q[26]=a(" is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate ")),t("mjx-container",L,[(e(),T("svg",y,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[27]||(Q[27]=a(" and time ")),t("mjx-container",k,[(e(),T("svg",M,Q[16]||(Q[16]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[17]||(Q[17]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t")])],-1))]),Q[28]||(Q[28]=a(". We assume that ")),t("mjx-container",V,[(e(),T("svg",Z,Q[18]||(Q[18]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[19]||(Q[19]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[29]||(Q[29]=a(" is a rectangular domain."))]),Q[140]||(Q[140]=t("h2",{id:"Integral-form",tabindex:"-1"},[a("Integral form "),t("a",{class:"header-anchor",href:"#Integral-form","aria-label":'Permalink to "Integral form {#Integral-form}"'},"​")],-1)),Q[141]||(Q[141]=t("p",null,"The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:",-1)),t("mjx-container",v,[(e(),T("svg",b,Q[30]||(Q[30]=[l('',1)]))),Q[31]||(Q[31]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"u"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",null,"−"),t("mi",null,"p"),t("mi",null,"I"),t("mo",null,"+"),t("mi",null,"ν"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"f"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[42]||(Q[42]=a("where ")),t("mjx-container",D,[(e(),T("svg",j,Q[32]||(Q[32]=[l('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",null,"⊂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[43]||(Q[43]=a(" is an arbitrary control volume with boundary ")),t("mjx-container",C,[(e(),T("svg",O,Q[34]||(Q[34]=[l('',1)]))),Q[35]||(Q[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])],-1))]),Q[44]||(Q[44]=a(", normal ")),t("mjx-container",R,[(e(),T("svg",B,Q[36]||(Q[36]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),Q[45]||(Q[45]=a(", surface element ")),t("mjx-container",S,[(e(),T("svg",z,Q[38]||(Q[38]=[l('',1)]))),Q[39]||(Q[39]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[46]||(Q[46]=a(", and volume size ")),t("mjx-container",J,[(e(),T("svg",G,Q[40]||(Q[40]=[l('',1)]))),Q[41]||(Q[41]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),Q[47]||(Q[47]=a(". We have divided by the control volume sizes in the integral form."))]),Q[142]||(Q[142]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t("p",null,[Q[50]||(Q[50]=a("The boundary conditions on a part of the boundary ")),t("mjx-container",A,[(e(),T("svg",P,Q[48]||(Q[48]=[l('',1)]))),Q[49]||(Q[49]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[51]||(Q[51]=a(" are one or more of the following:"))]),t("ul",null,[t("li",null,[t("p",null,[Q[58]||(Q[58]=a("Dirichlet: ")),t("mjx-container",X,[(e(),T("svg",F,Q[52]||(Q[52]=[l('',1)]))),Q[53]||(Q[53]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[59]||(Q[59]=a(" on ")),t("mjx-container",N,[(e(),T("svg",I,Q[54]||(Q[54]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[55]||(Q[55]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[60]||(Q[60]=a(" for some ")),t("mjx-container",q,[(e(),T("svg",E,Q[56]||(Q[56]=[l('',1)]))),Q[57]||(Q[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[61]||(Q[61]=a(";"))])]),t("li",null,[t("p",null,[Q[66]||(Q[66]=a("Neumann: ")),t("mjx-container",K,[(e(),T("svg",W,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[67]||(Q[67]=a(" on ")),t("mjx-container",$,[(e(),T("svg",U,Q[64]||(Q[64]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[65]||(Q[65]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[68]||(Q[68]=a(";"))])]),t("li",null,[t("p",null,[Q[79]||(Q[79]=a("Periodic: ")),t("mjx-container",Y,[(e(),T("svg",_,Q[69]||(Q[69]=[l('',1)]))),Q[70]||(Q[70]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[80]||(Q[80]=a(" and ")),t("mjx-container",t1,[(e(),T("svg",Q1,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[81]||(Q[81]=a(" for ")),t("mjx-container",a1,[(e(),T("svg",T1,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"∈"),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[82]||(Q[82]=a(", where ")),t("mjx-container",e1,[(e(),T("svg",l1,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[83]||(Q[83]=a(" is another part of the boundary and ")),t("mjx-container",s1,[(e(),T("svg",o1,Q[77]||(Q[77]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D70F",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[78]||(Q[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ")])],-1))]),Q[84]||(Q[84]=a(" is a translation vector;"))])]),t("li",null,[t("p",null,[Q[91]||(Q[91]=a("Stress free: ")),t("mjx-container",n1,[(e(),T("svg",m1,Q[85]||(Q[85]=[l('',1)]))),Q[86]||(Q[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[92]||(Q[92]=a(" on ")),t("mjx-container",r1,[(e(),T("svg",d1,Q[87]||(Q[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[88]||(Q[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[93]||(Q[93]=a(", where ")),t("mjx-container",i1,[(e(),T("svg",h1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"I")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"ν"),t("mi",null,"S"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[94]||(Q[94]=a("."))])])]),Q[143]||(Q[143]=t("h2",{id:"Pressure-equation",tabindex:"-1"},[a("Pressure equation "),t("a",{class:"header-anchor",href:"#Pressure-equation","aria-label":'Permalink to "Pressure equation {#Pressure-equation}"'},"​")],-1)),Q[144]||(Q[144]=t("p",null,"Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:",-1)),t("mjx-container",p1,[(e(),T("svg",g1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"f")])],-1))]),Q[145]||(Q[145]=t("p",null,"In scalar notation, this becomes",-1)),t("mjx-container",u1,[(e(),T("svg",w1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mi",null,"p"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"β"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")]),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"f"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),Q[146]||(Q[146]=t("p",null,"Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.",-1)),t("p",null,[Q[101]||(Q[101]=a("If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to ")),t("mjx-container",x1,[(e(),T("svg",c1,Q[99]||(Q[99]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mn"},[t("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[100]||(Q[100]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"1")])],-1))]),Q[102]||(Q[102]=a("."))]),Q[147]||(Q[147]=t("h2",{id:"Other-quantities-of-interest",tabindex:"-1"},[a("Other quantities of interest "),t("a",{class:"header-anchor",href:"#Other-quantities-of-interest","aria-label":'Permalink to "Other quantities of interest {#Other-quantities-of-interest}"'},"​")],-1)),Q[148]||(Q[148]=t("h3",{id:"Reynolds-number",tabindex:"-1"},[a("Reynolds number "),t("a",{class:"header-anchor",href:"#Reynolds-number","aria-label":'Permalink to "Reynolds number {#Reynolds-number}"'},"​")],-1)),t("p",null,[Q[105]||(Q[105]=a("The Reynolds number is the inverse of the viscosity: ")),t("mjx-container",H1,[(e(),T("svg",f1,Q[103]||(Q[103]=[l('',1)]))),Q[104]||(Q[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("mi",null,"e"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mi",null,"ν")])])],-1))]),Q[106]||(Q[106]=a(". It is the only flow parameter governing the incompressible Navier-Stokes equations."))]),Q[149]||(Q[149]=t("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),t("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),t("p",null,[Q[111]||(Q[111]=a("The local and total kinetic energy are defined by ")),t("mjx-container",L1,[(e(),T("svg",y1,Q[107]||(Q[107]=[l('',1)]))),Q[108]||(Q[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2"),t("mn",null,"2")])])],-1))]),Q[112]||(Q[112]=a(" and ")),t("mjx-container",k1,[(e(),T("svg",M1,Q[109]||(Q[109]=[l('',1)]))),Q[110]||(Q[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"K"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msup",null,[t("mi",null,"L"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")")]),t("mn",null,"2")]),t("mo",null,"="),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mi",{mathvariant:"normal"},"Ω")]),t("mi",null,"k"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[113]||(Q[113]=a("."))]),Q[150]||(Q[150]=t("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),t("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t("p",null,[Q[116]||(Q[116]=a("The vorticity is defined as ")),t("mjx-container",V1,[(e(),T("svg",Z1,Q[114]||(Q[114]=[l('',1)]))),Q[115]||(Q[115]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"u")])],-1))]),Q[117]||(Q[117]=a("."))]),Q[151]||(Q[151]=t("p",null,"In 2D, it is a scalar field given by",-1)),t("mjx-container",v1,[(e(),T("svg",b1,Q[118]||(Q[118]=[l('',1)]))),Q[119]||(Q[119]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[152]||(Q[152]=t("p",null,"In 3D, it is a vector field given by",-1)),t("mjx-container",D1,[(e(),T("svg",j1,Q[120]||(Q[120]=[l('',1)]))),Q[121]||(Q[121]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[Q[124]||(Q[124]=a("Note that the 2D vorticity is equal to the ")),t("mjx-container",C1,[(e(),T("svg",O1,Q[122]||(Q[122]=[l('',1)]))),Q[123]||(Q[123]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])],-1))]),Q[125]||(Q[125]=a("-component of the 3D vorticity."))]),Q[153]||(Q[153]=t("h3",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),t("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t("p",null,[Q[128]||(Q[128]=a("In 2D, the stream function ")),t("mjx-container",R1,[(e(),T("svg",B1,Q[126]||(Q[126]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D713",d:"M161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[127]||(Q[127]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ψ")])],-1))]),Q[129]||(Q[129]=a(" is a scalar field such that"))]),t("mjx-container",S1,[(e(),T("svg",z1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[154]||(Q[154]=t("p",null,"It can be found by solving",-1)),t("mjx-container",J1,[(e(),T("svg",G1,Q[132]||(Q[132]=[l('',1)]))),Q[133]||(Q[133]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"ω"),t("mo",null,".")])],-1))]),Q[155]||(Q[155]=t("p",null,"In 3D, the stream function is a vector field such that",-1)),t("mjx-container",A1,[(e(),T("svg",P1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ψ"),t("mo",null,".")])],-1))]),Q[156]||(Q[156]=t("p",null,"It can be found by solving",-1)),t("mjx-container",X1,[(e(),T("svg",F1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ω"),t("mo",null,".")])],-1))])])}const Y1=s(o,[["render",N1]]);export{U1 as __pageData,Y1 as default}; diff --git a/previews/PR126/assets/manual_ns.md.Bdh0AlV6.js b/previews/PR126/assets/manual_ns.md.K2Xm3fp6.lean.js similarity index 99% rename from previews/PR126/assets/manual_ns.md.Bdh0AlV6.js rename to previews/PR126/assets/manual_ns.md.K2Xm3fp6.lean.js index c7aff7e0..c4a6097a 100644 --- a/previews/PR126/assets/manual_ns.md.Bdh0AlV6.js +++ b/previews/PR126/assets/manual_ns.md.K2Xm3fp6.lean.js @@ -1 +1 @@ -import{_ as s,c as T,j as t,a,a5 as l,o as e}from"./chunks/framework.BSoZtefh.js";const U1=JSON.parse('{"title":"Incompressible Navier-Stokes equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ns.md","filePath":"manual/ns.md","lastUpdated":null}'),o={name:"manual/ns.md"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.279ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.051ex",height:"7.69ex",role:"img",focusable:"false",viewBox:"0 -1949.5 15934.4 3399","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.304ex",height:"2.022ex",role:"img",focusable:"false",viewBox:"0 -853.7 3228.3 893.7","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.473ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4187.2 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.199ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -442 530 442","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.798ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6982.8 1103.7","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.033ex"},xmlns:"http://www.w3.org/2000/svg",width:"68.204ex",height:"11.197ex",role:"img",focusable:"false",viewBox:"0 -2724.5 30146.3 4949","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.451ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -705 2851.6 745","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.081ex",height:"1.667ex",role:"img",focusable:"false",viewBox:"0 -715 1362 737","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.672ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 1181 705","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.059ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1352 999","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.345ex",height:"1.708ex",role:"img",focusable:"false",viewBox:"0 -715 3246.6 755","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.081ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -583 3571.7 747.8","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.77ex",height:"1.373ex",role:"img",focusable:"false",viewBox:"0 -442 1666.2 606.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.319ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4561 765","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.649ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6917 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.337ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6779 1000","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.474ex",height:"1.629ex",role:"img",focusable:"false",viewBox:"0 -680 2419.6 720","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.281ex",height:"1.803ex",role:"img",focusable:"false",viewBox:"0 -715 4986 797","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.029ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.17ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -431 517 444","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.432ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3727 748","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.339ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7222 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.053ex",height:"2.826ex",role:"img",focusable:"false",viewBox:"0 -899.5 13725.4 1249","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.786ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 23331.5 3093.4","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.632ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 3373.3 1209.9","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.535ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 4656.7 1209.9","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.202ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.008ex",height:"3.159ex",role:"img",focusable:"false",viewBox:"0 -864.9 11053.8 1396.1","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.369ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4583 765","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.695ex",height:"5.095ex",role:"img",focusable:"false",viewBox:"0 -1509.9 8263.1 2251.9","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.567ex",height:"11.153ex",role:"img",focusable:"false",viewBox:"0 -2714.9 9090.8 4929.8","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.473ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 651 899","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.371ex",height:"4.826ex",role:"img",focusable:"false",viewBox:"0 -1391 11214 2132.9","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.159ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 4932.1 1088.9","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.063ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 4890 899","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},F1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.049ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 6209.6 1088.9","aria-hidden":"true"};function N1(I1,Q,q1,E1,K1,W1){return e(),T("div",null,[Q[138]||(Q[138]=t("h1",{id:"Incompressible-Navier-Stokes-equations",tabindex:"-1"},[a("Incompressible Navier-Stokes equations "),t("a",{class:"header-anchor",href:"#Incompressible-Navier-Stokes-equations","aria-label":'Permalink to "Incompressible Navier-Stokes equations {#Incompressible-Navier-Stokes-equations}"'},"​")],-1)),Q[139]||(Q[139]=t("p",null,"The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:",-1)),t("mjx-container",n,[(e(),T("svg",m,Q[0]||(Q[0]=[l('',1)]))),Q[1]||(Q[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"u")]),t("mrow",null,[t("mi",null,"∂"),t("mi",null,"t")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",null,"+"),t("mi",null,"ν"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"u"),t("mo",null,"+"),t("mi",null,"f"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[20]||(Q[20]=a("where ")),t("mjx-container",r,[(e(),T("svg",d,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"⊂"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mi",null,"d")])])],-1))]),Q[21]||(Q[21]=a(" is the domain, ")),t("mjx-container",i,[(e(),T("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"d"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"2"),t("mo",null,","),t("mn",null,"3"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),Q[22]||(Q[22]=a(" is the spatial dimension, ")),t("mjx-container",p,[(e(),T("svg",g,Q[6]||(Q[6]=[l('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"u"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[23]||(Q[23]=a(" is the velocity field, ")),t("mjx-container",u,[(e(),T("svg",w,Q[8]||(Q[8]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[9]||(Q[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),Q[24]||(Q[24]=a(" is the pressure, ")),t("mjx-container",x,[(e(),T("svg",c,Q[10]||(Q[10]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D708",d:"M74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[11]||(Q[11]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ν")])],-1))]),Q[25]||(Q[25]=a(" is the kinematic viscosity, and ")),t("mjx-container",H,[(e(),T("svg",f,Q[12]||(Q[12]=[l('',1)]))),Q[13]||(Q[13]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"f"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"f"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"f"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[26]||(Q[26]=a(" is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate ")),t("mjx-container",L,[(e(),T("svg",y,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[27]||(Q[27]=a(" and time ")),t("mjx-container",k,[(e(),T("svg",M,Q[16]||(Q[16]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[17]||(Q[17]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t")])],-1))]),Q[28]||(Q[28]=a(". We assume that ")),t("mjx-container",V,[(e(),T("svg",Z,Q[18]||(Q[18]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[19]||(Q[19]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[29]||(Q[29]=a(" is a rectangular domain."))]),Q[140]||(Q[140]=t("h2",{id:"Integral-form",tabindex:"-1"},[a("Integral form "),t("a",{class:"header-anchor",href:"#Integral-form","aria-label":'Permalink to "Integral form {#Integral-form}"'},"​")],-1)),Q[141]||(Q[141]=t("p",null,"The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:",-1)),t("mjx-container",v,[(e(),T("svg",b,Q[30]||(Q[30]=[l('',1)]))),Q[31]||(Q[31]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"u"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",null,"−"),t("mi",null,"p"),t("mi",null,"I"),t("mo",null,"+"),t("mi",null,"ν"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"f"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[42]||(Q[42]=a("where ")),t("mjx-container",D,[(e(),T("svg",j,Q[32]||(Q[32]=[l('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",null,"⊂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[43]||(Q[43]=a(" is an arbitrary control volume with boundary ")),t("mjx-container",C,[(e(),T("svg",O,Q[34]||(Q[34]=[l('',1)]))),Q[35]||(Q[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])],-1))]),Q[44]||(Q[44]=a(", normal ")),t("mjx-container",R,[(e(),T("svg",B,Q[36]||(Q[36]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),Q[45]||(Q[45]=a(", surface element ")),t("mjx-container",S,[(e(),T("svg",z,Q[38]||(Q[38]=[l('',1)]))),Q[39]||(Q[39]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[46]||(Q[46]=a(", and volume size ")),t("mjx-container",J,[(e(),T("svg",G,Q[40]||(Q[40]=[l('',1)]))),Q[41]||(Q[41]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),Q[47]||(Q[47]=a(". We have divided by the control volume sizes in the integral form."))]),Q[142]||(Q[142]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t("p",null,[Q[50]||(Q[50]=a("The boundary conditions on a part of the boundary ")),t("mjx-container",A,[(e(),T("svg",P,Q[48]||(Q[48]=[l('',1)]))),Q[49]||(Q[49]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[51]||(Q[51]=a(" are one or more of the following:"))]),t("ul",null,[t("li",null,[t("p",null,[Q[58]||(Q[58]=a("Dirichlet: ")),t("mjx-container",X,[(e(),T("svg",F,Q[52]||(Q[52]=[l('',1)]))),Q[53]||(Q[53]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[59]||(Q[59]=a(" on ")),t("mjx-container",N,[(e(),T("svg",I,Q[54]||(Q[54]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[55]||(Q[55]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[60]||(Q[60]=a(" for some ")),t("mjx-container",q,[(e(),T("svg",E,Q[56]||(Q[56]=[l('',1)]))),Q[57]||(Q[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[61]||(Q[61]=a(";"))])]),t("li",null,[t("p",null,[Q[66]||(Q[66]=a("Neumann: ")),t("mjx-container",K,[(e(),T("svg",W,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[67]||(Q[67]=a(" on ")),t("mjx-container",$,[(e(),T("svg",U,Q[64]||(Q[64]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[65]||(Q[65]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[68]||(Q[68]=a(";"))])]),t("li",null,[t("p",null,[Q[79]||(Q[79]=a("Periodic: ")),t("mjx-container",Y,[(e(),T("svg",_,Q[69]||(Q[69]=[l('',1)]))),Q[70]||(Q[70]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[80]||(Q[80]=a(" and ")),t("mjx-container",t1,[(e(),T("svg",Q1,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[81]||(Q[81]=a(" for ")),t("mjx-container",a1,[(e(),T("svg",T1,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"∈"),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[82]||(Q[82]=a(", where ")),t("mjx-container",e1,[(e(),T("svg",l1,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[83]||(Q[83]=a(" is another part of the boundary and ")),t("mjx-container",s1,[(e(),T("svg",o1,Q[77]||(Q[77]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D70F",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[78]||(Q[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ")])],-1))]),Q[84]||(Q[84]=a(" is a translation vector;"))])]),t("li",null,[t("p",null,[Q[91]||(Q[91]=a("Stress free: ")),t("mjx-container",n1,[(e(),T("svg",m1,Q[85]||(Q[85]=[l('',1)]))),Q[86]||(Q[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[92]||(Q[92]=a(" on ")),t("mjx-container",r1,[(e(),T("svg",d1,Q[87]||(Q[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[88]||(Q[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[93]||(Q[93]=a(", where ")),t("mjx-container",i1,[(e(),T("svg",h1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"I")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"ν"),t("mi",null,"S"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[94]||(Q[94]=a("."))])])]),Q[143]||(Q[143]=t("h2",{id:"Pressure-equation",tabindex:"-1"},[a("Pressure equation "),t("a",{class:"header-anchor",href:"#Pressure-equation","aria-label":'Permalink to "Pressure equation {#Pressure-equation}"'},"​")],-1)),Q[144]||(Q[144]=t("p",null,"Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:",-1)),t("mjx-container",p1,[(e(),T("svg",g1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"f")])],-1))]),Q[145]||(Q[145]=t("p",null,"In scalar notation, this becomes",-1)),t("mjx-container",u1,[(e(),T("svg",w1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mi",null,"p"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"β"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")]),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"f"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),Q[146]||(Q[146]=t("p",null,"Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.",-1)),t("p",null,[Q[101]||(Q[101]=a("If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to ")),t("mjx-container",x1,[(e(),T("svg",c1,Q[99]||(Q[99]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mn"},[t("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[100]||(Q[100]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"1")])],-1))]),Q[102]||(Q[102]=a("."))]),Q[147]||(Q[147]=t("h2",{id:"Other-quantities-of-interest",tabindex:"-1"},[a("Other quantities of interest "),t("a",{class:"header-anchor",href:"#Other-quantities-of-interest","aria-label":'Permalink to "Other quantities of interest {#Other-quantities-of-interest}"'},"​")],-1)),Q[148]||(Q[148]=t("h3",{id:"Reynolds-number",tabindex:"-1"},[a("Reynolds number "),t("a",{class:"header-anchor",href:"#Reynolds-number","aria-label":'Permalink to "Reynolds number {#Reynolds-number}"'},"​")],-1)),t("p",null,[Q[105]||(Q[105]=a("The Reynolds number is the inverse of the viscosity: ")),t("mjx-container",H1,[(e(),T("svg",f1,Q[103]||(Q[103]=[l('',1)]))),Q[104]||(Q[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("mi",null,"e"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mi",null,"ν")])])],-1))]),Q[106]||(Q[106]=a(". It is the only flow parameter governing the incompressible Navier-Stokes equations."))]),Q[149]||(Q[149]=t("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),t("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),t("p",null,[Q[111]||(Q[111]=a("The local and total kinetic energy are defined by ")),t("mjx-container",L1,[(e(),T("svg",y1,Q[107]||(Q[107]=[l('',1)]))),Q[108]||(Q[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2"),t("mn",null,"2")])])],-1))]),Q[112]||(Q[112]=a(" and ")),t("mjx-container",k1,[(e(),T("svg",M1,Q[109]||(Q[109]=[l('',1)]))),Q[110]||(Q[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"K"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msup",null,[t("mi",null,"L"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")")]),t("mn",null,"2")]),t("mo",null,"="),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mi",{mathvariant:"normal"},"Ω")]),t("mi",null,"k"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[113]||(Q[113]=a("."))]),Q[150]||(Q[150]=t("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),t("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t("p",null,[Q[116]||(Q[116]=a("The vorticity is defined as ")),t("mjx-container",V1,[(e(),T("svg",Z1,Q[114]||(Q[114]=[l('',1)]))),Q[115]||(Q[115]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"u")])],-1))]),Q[117]||(Q[117]=a("."))]),Q[151]||(Q[151]=t("p",null,"In 2D, it is a scalar field given by",-1)),t("mjx-container",v1,[(e(),T("svg",b1,Q[118]||(Q[118]=[l('',1)]))),Q[119]||(Q[119]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[152]||(Q[152]=t("p",null,"In 3D, it is a vector field given by",-1)),t("mjx-container",D1,[(e(),T("svg",j1,Q[120]||(Q[120]=[l('',1)]))),Q[121]||(Q[121]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[Q[124]||(Q[124]=a("Note that the 2D vorticity is equal to the ")),t("mjx-container",C1,[(e(),T("svg",O1,Q[122]||(Q[122]=[l('',1)]))),Q[123]||(Q[123]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])],-1))]),Q[125]||(Q[125]=a("-component of the 3D vorticity."))]),Q[153]||(Q[153]=t("h3",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),t("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t("p",null,[Q[128]||(Q[128]=a("In 2D, the stream function ")),t("mjx-container",R1,[(e(),T("svg",B1,Q[126]||(Q[126]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D713",d:"M161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[127]||(Q[127]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ψ")])],-1))]),Q[129]||(Q[129]=a(" is a scalar field such that"))]),t("mjx-container",S1,[(e(),T("svg",z1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[154]||(Q[154]=t("p",null,"It can be found by solving",-1)),t("mjx-container",J1,[(e(),T("svg",G1,Q[132]||(Q[132]=[l('',1)]))),Q[133]||(Q[133]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"ω"),t("mo",null,".")])],-1))]),Q[155]||(Q[155]=t("p",null,"In 3D, the stream function is a vector field such that",-1)),t("mjx-container",A1,[(e(),T("svg",P1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ψ"),t("mo",null,".")])],-1))]),Q[156]||(Q[156]=t("p",null,"It can be found by solving",-1)),t("mjx-container",X1,[(e(),T("svg",F1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ω"),t("mo",null,".")])],-1))])])}const Y1=s(o,[["render",N1]]);export{U1 as __pageData,Y1 as default}; +import{_ as s,c as T,j as t,a,a5 as l,o as e}from"./chunks/framework.CojPSOJE.js";const U1=JSON.parse('{"title":"Incompressible Navier-Stokes equations","description":"","frontmatter":{},"headers":[],"relativePath":"manual/ns.md","filePath":"manual/ns.md","lastUpdated":null}'),o={name:"manual/ns.md"},n={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.279ex"},xmlns:"http://www.w3.org/2000/svg",width:"36.051ex",height:"7.69ex",role:"img",focusable:"false",viewBox:"0 -1949.5 15934.4 3399","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.304ex",height:"2.022ex",role:"img",focusable:"false",viewBox:"0 -853.7 3228.3 893.7","aria-hidden":"true"},i={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.473ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4187.2 1000","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.199ex",height:"1ex",role:"img",focusable:"false",viewBox:"0 -442 530 442","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.798ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6982.8 1103.7","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.708ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 6942.8 1103.7","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.817ex",height:"1.441ex",role:"img",focusable:"false",viewBox:"0 -626 361 637","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.033ex"},xmlns:"http://www.w3.org/2000/svg",width:"68.204ex",height:"11.197ex",role:"img",focusable:"false",viewBox:"0 -2724.5 30146.3 4949","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.451ex",height:"1.686ex",role:"img",focusable:"false",viewBox:"0 -705 2851.6 745","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.081ex",height:"1.667ex",role:"img",focusable:"false",viewBox:"0 -715 1362 737","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.672ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 1181 705","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.059ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1352 999","aria-hidden":"true"},A={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.345ex",height:"1.708ex",role:"img",focusable:"false",viewBox:"0 -715 3246.6 755","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.081ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -583 3571.7 747.8","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.373ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.77ex",height:"1.373ex",role:"img",focusable:"false",viewBox:"0 -442 1666.2 606.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.319ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4561 765","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.649ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6917 1000","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.337ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6779 1000","aria-hidden":"true"},a1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.474ex",height:"1.629ex",role:"img",focusable:"false",viewBox:"0 -680 2419.6 720","aria-hidden":"true"},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.281ex",height:"1.803ex",role:"img",focusable:"false",viewBox:"0 -715 4986 797","aria-hidden":"true"},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.029ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.17ex",height:"1.005ex",role:"img",focusable:"false",viewBox:"0 -431 517 444","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.432ex",height:"1.692ex",role:"img",focusable:"false",viewBox:"0 -666 3727 748","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.414ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 625 680","aria-hidden":"true"},i1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.339ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7222 1000","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.053ex",height:"2.826ex",role:"img",focusable:"false",viewBox:"0 -899.5 13725.4 1249","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.786ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 23331.5 3093.4","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.632ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 3373.3 1209.9","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.535ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 4656.7 1209.9","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.202ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.008ex",height:"3.159ex",role:"img",focusable:"false",viewBox:"0 -864.9 11053.8 1396.1","aria-hidden":"true"},V1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.369ex",height:"1.731ex",role:"img",focusable:"false",viewBox:"0 -683 4583 765","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.695ex",height:"5.095ex",role:"img",focusable:"false",viewBox:"0 -1509.9 8263.1 2251.9","aria-hidden":"true"},D1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-5.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.567ex",height:"11.153ex",role:"img",focusable:"false",viewBox:"0 -2714.9 9090.8 4929.8","aria-hidden":"true"},C1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},R1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.473ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 651 899","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.679ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.371ex",height:"4.826ex",role:"img",focusable:"false",viewBox:"0 -1391 11214 2132.9","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.159ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 4932.1 1088.9","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.063ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -694 4890 899","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},F1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.049ex",height:"2.464ex",role:"img",focusable:"false",viewBox:"0 -883.9 6209.6 1088.9","aria-hidden":"true"};function N1(I1,Q,q1,E1,K1,W1){return e(),T("div",null,[Q[138]||(Q[138]=t("h1",{id:"Incompressible-Navier-Stokes-equations",tabindex:"-1"},[a("Incompressible Navier-Stokes equations "),t("a",{class:"header-anchor",href:"#Incompressible-Navier-Stokes-equations","aria-label":'Permalink to "Incompressible Navier-Stokes equations {#Incompressible-Navier-Stokes-equations}"'},"​")],-1)),Q[139]||(Q[139]=t("p",null,"The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:",-1)),t("mjx-container",n,[(e(),T("svg",m,Q[0]||(Q[0]=[l('',1)]))),Q[1]||(Q[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"u")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"u")]),t("mrow",null,[t("mi",null,"∂"),t("mi",null,"t")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",null,"+"),t("mi",null,"ν"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"u"),t("mo",null,"+"),t("mi",null,"f"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[20]||(Q[20]=a("where ")),t("mjx-container",r,[(e(),T("svg",d,Q[2]||(Q[2]=[l('',1)]))),Q[3]||(Q[3]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,"⊂"),t("msup",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"double-struck"},"R")]),t("mi",null,"d")])])],-1))]),Q[21]||(Q[21]=a(" is the domain, ")),t("mjx-container",i,[(e(),T("svg",h,Q[4]||(Q[4]=[l('',1)]))),Q[5]||(Q[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"d"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"2"),t("mo",null,","),t("mn",null,"3"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),Q[22]||(Q[22]=a(" is the spatial dimension, ")),t("mjx-container",p,[(e(),T("svg",g,Q[6]||(Q[6]=[l('',1)]))),Q[7]||(Q[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"u"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[23]||(Q[23]=a(" is the velocity field, ")),t("mjx-container",u,[(e(),T("svg",w,Q[8]||(Q[8]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[9]||(Q[9]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),Q[24]||(Q[24]=a(" is the pressure, ")),t("mjx-container",x,[(e(),T("svg",c,Q[10]||(Q[10]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D708",d:"M74 431Q75 431 146 436T219 442Q231 442 231 434Q231 428 185 241L137 51H140L150 55Q161 59 177 67T214 86T261 119T312 165Q410 264 445 394Q458 442 496 442Q509 442 519 434T530 411Q530 390 516 352T469 262T388 162T267 70T106 5Q81 -2 71 -2Q66 -2 59 -1T51 1Q45 5 45 11Q45 13 88 188L132 364Q133 377 125 380T86 385H65Q59 391 59 393T61 412Q65 431 74 431Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[11]||(Q[11]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ν")])],-1))]),Q[25]||(Q[25]=a(" is the kinematic viscosity, and ")),t("mjx-container",H,[(e(),T("svg",f,Q[12]||(Q[12]=[l('',1)]))),Q[13]||(Q[13]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"f"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"f"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"f"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[26]||(Q[26]=a(" is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate ")),t("mjx-container",L,[(e(),T("svg",y,Q[14]||(Q[14]=[l('',1)]))),Q[15]||(Q[15]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")]),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("msup",null,[t("mi",null,"x"),t("mi",null,"d")]),t("mo",{stretchy:"false"},")")])],-1))]),Q[27]||(Q[27]=a(" and time ")),t("mjx-container",k,[(e(),T("svg",M,Q[16]||(Q[16]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D461",d:"M26 385Q19 392 19 395Q19 399 22 411T27 425Q29 430 36 430T87 431H140L159 511Q162 522 166 540T173 566T179 586T187 603T197 615T211 624T229 626Q247 625 254 615T261 596Q261 589 252 549T232 470L222 433Q222 431 272 431H323Q330 424 330 420Q330 398 317 385H210L174 240Q135 80 135 68Q135 26 162 26Q197 26 230 60T283 144Q285 150 288 151T303 153H307Q322 153 322 145Q322 142 319 133Q314 117 301 95T267 48T216 6T155 -11Q125 -11 98 4T59 56Q57 64 57 83V101L92 241Q127 382 128 383Q128 385 77 385H26Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[17]||(Q[17]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t")])],-1))]),Q[28]||(Q[28]=a(". We assume that ")),t("mjx-container",V,[(e(),T("svg",Z,Q[18]||(Q[18]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[19]||(Q[19]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[29]||(Q[29]=a(" is a rectangular domain."))]),Q[140]||(Q[140]=t("h2",{id:"Integral-form",tabindex:"-1"},[a("Integral form "),t("a",{class:"header-anchor",href:"#Integral-form","aria-label":'Permalink to "Integral form {#Integral-form}"'},"​")],-1)),Q[141]||(Q[141]=t("p",null,"The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:",-1)),t("mjx-container",v,[(e(),T("svg",b,Q[30]||(Q[30]=[l('',1)]))),Q[31]||(Q[31]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,",")])]),t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"u"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",null,"−"),t("mi",null,"p"),t("mi",null,"I"),t("mo",null,"+"),t("mi",null,"ν"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"⋅"),t("mi",null,"n"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])]),t("mi",null,"f"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω"),t("mo",null,",")])])])])],-1))]),t("p",null,[Q[42]||(Q[42]=a("where ")),t("mjx-container",D,[(e(),T("svg",j,Q[32]||(Q[32]=[l('',1)]))),Q[33]||(Q[33]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",null,"⊂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[43]||(Q[43]=a(" is an arbitrary control volume with boundary ")),t("mjx-container",C,[(e(),T("svg",O,Q[34]||(Q[34]=[l('',1)]))),Q[35]||(Q[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"∂"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")])])],-1))]),Q[44]||(Q[44]=a(", normal ")),t("mjx-container",R,[(e(),T("svg",B,Q[36]||(Q[36]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[37]||(Q[37]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),Q[45]||(Q[45]=a(", surface element ")),t("mjx-container",S,[(e(),T("svg",z,Q[38]||(Q[38]=[l('',1)]))),Q[39]||(Q[39]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[46]||(Q[46]=a(", and volume size ")),t("mjx-container",J,[(e(),T("svg",G,Q[40]||(Q[40]=[l('',1)]))),Q[41]||(Q[41]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),Q[47]||(Q[47]=a(". We have divided by the control volume sizes in the integral form."))]),Q[142]||(Q[142]=t("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),t("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t("p",null,[Q[50]||(Q[50]=a("The boundary conditions on a part of the boundary ")),t("mjx-container",A,[(e(),T("svg",P,Q[48]||(Q[48]=[l('',1)]))),Q[49]||(Q[49]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[51]||(Q[51]=a(" are one or more of the following:"))]),t("ul",null,[t("li",null,[t("p",null,[Q[58]||(Q[58]=a("Dirichlet: ")),t("mjx-container",X,[(e(),T("svg",F,Q[52]||(Q[52]=[l('',1)]))),Q[53]||(Q[53]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[59]||(Q[59]=a(" on ")),t("mjx-container",N,[(e(),T("svg",I,Q[54]||(Q[54]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[55]||(Q[55]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[60]||(Q[60]=a(" for some ")),t("mjx-container",q,[(e(),T("svg",E,Q[56]||(Q[56]=[l('',1)]))),Q[57]||(Q[57]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"BC")])])],-1))]),Q[61]||(Q[61]=a(";"))])]),t("li",null,[t("p",null,[Q[66]||(Q[66]=a("Neumann: ")),t("mjx-container",K,[(e(),T("svg",W,Q[62]||(Q[62]=[l('',1)]))),Q[63]||(Q[63]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"u"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[67]||(Q[67]=a(" on ")),t("mjx-container",$,[(e(),T("svg",U,Q[64]||(Q[64]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[65]||(Q[65]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[68]||(Q[68]=a(";"))])]),t("li",null,[t("p",null,[Q[79]||(Q[79]=a("Periodic: ")),t("mjx-container",Y,[(e(),T("svg",_,Q[69]||(Q[69]=[l('',1)]))),Q[70]||(Q[70]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[80]||(Q[80]=a(" and ")),t("mjx-container",t1,[(e(),T("svg",Q1,Q[71]||(Q[71]=[l('',1)]))),Q[72]||(Q[72]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mi",null,"p"),t("mo",{stretchy:"false"},"("),t("mi",null,"x"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",{stretchy:"false"},")")])],-1))]),Q[81]||(Q[81]=a(" for ")),t("mjx-container",a1,[(e(),T("svg",T1,Q[73]||(Q[73]=[l('',1)]))),Q[74]||(Q[74]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"x"),t("mo",null,"∈"),t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[82]||(Q[82]=a(", where ")),t("mjx-container",e1,[(e(),T("svg",l1,Q[75]||(Q[75]=[l('',1)]))),Q[76]||(Q[76]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ"),t("mo",null,"+"),t("mi",null,"τ"),t("mo",null,"⊂"),t("mi",null,"∂"),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[83]||(Q[83]=a(" is another part of the boundary and ")),t("mjx-container",s1,[(e(),T("svg",o1,Q[77]||(Q[77]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D70F",d:"M39 284Q18 284 18 294Q18 301 45 338T99 398Q134 425 164 429Q170 431 332 431Q492 431 497 429Q517 424 517 402Q517 388 508 376T485 360Q479 358 389 358T299 356Q298 355 283 274T251 109T233 20Q228 5 215 -4T186 -13Q153 -13 153 20V30L203 192Q214 228 227 272T248 336L254 357Q254 358 208 358Q206 358 197 358T183 359Q105 359 61 295Q56 287 53 286T39 284Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[78]||(Q[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ")])],-1))]),Q[84]||(Q[84]=a(" is a translation vector;"))])]),t("li",null,[t("p",null,[Q[91]||(Q[91]=a("Stress free: ")),t("mjx-container",n1,[(e(),T("svg",m1,Q[85]||(Q[85]=[l('',1)]))),Q[86]||(Q[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"⋅"),t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0")])],-1))]),Q[92]||(Q[92]=a(" on ")),t("mjx-container",r1,[(e(),T("svg",d1,Q[87]||(Q[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"393",d:"M128 619Q121 626 117 628T101 631T58 634H25V680H554V676Q556 670 568 560T582 444V440H542V444Q542 445 538 478T523 545T492 598Q454 634 349 634H334Q264 634 249 633T233 621Q232 618 232 339L233 61Q240 54 245 52T270 48T333 46H360V0H348Q324 3 182 3Q51 3 36 0H25V46H58Q100 47 109 49T128 61V619Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[88]||(Q[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Γ")])],-1))]),Q[93]||(Q[93]=a(", where ")),t("mjx-container",i1,[(e(),T("svg",h1,Q[89]||(Q[89]=[l('',1)]))),Q[90]||(Q[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"σ"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mo",null,"−"),t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"I")]),t("mo",null,"+"),t("mn",null,"2"),t("mi",null,"ν"),t("mi",null,"S"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),Q[94]||(Q[94]=a("."))])])]),Q[143]||(Q[143]=t("h2",{id:"Pressure-equation",tabindex:"-1"},[a("Pressure equation "),t("a",{class:"header-anchor",href:"#Pressure-equation","aria-label":'Permalink to "Pressure equation {#Pressure-equation}"'},"​")],-1)),Q[144]||(Q[144]=t("p",null,"Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:",-1)),t("mjx-container",p1,[(e(),T("svg",g1,Q[95]||(Q[95]=[l('',1)]))),Q[96]||(Q[96]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("msup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"sans-serif"},"T")])]),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"⋅"),t("mi",null,"f")])],-1))]),Q[145]||(Q[145]=t("p",null,"In scalar notation, this becomes",-1)),t("mjx-container",u1,[(e(),T("svg",w1,Q[97]||(Q[97]=[l('',1)]))),Q[98]||(Q[98]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mi",null,"p"),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"β"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("msup",null,[t("mi",null,"∂"),t("mn",null,"2")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")]),t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")]),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"d")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"f"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),Q[146]||(Q[146]=t("p",null,"Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.",-1)),t("p",null,[Q[101]||(Q[101]=a("If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to ")),t("mjx-container",x1,[(e(),T("svg",c1,Q[99]||(Q[99]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mn"},[t("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[100]||(Q[100]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"1")])],-1))]),Q[102]||(Q[102]=a("."))]),Q[147]||(Q[147]=t("h2",{id:"Other-quantities-of-interest",tabindex:"-1"},[a("Other quantities of interest "),t("a",{class:"header-anchor",href:"#Other-quantities-of-interest","aria-label":'Permalink to "Other quantities of interest {#Other-quantities-of-interest}"'},"​")],-1)),Q[148]||(Q[148]=t("h3",{id:"Reynolds-number",tabindex:"-1"},[a("Reynolds number "),t("a",{class:"header-anchor",href:"#Reynolds-number","aria-label":'Permalink to "Reynolds number {#Reynolds-number}"'},"​")],-1)),t("p",null,[Q[105]||(Q[105]=a("The Reynolds number is the inverse of the viscosity: ")),t("mjx-container",H1,[(e(),T("svg",f1,Q[103]||(Q[103]=[l('',1)]))),Q[104]||(Q[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("mi",null,"e"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mi",null,"ν")])])],-1))]),Q[106]||(Q[106]=a(". It is the only flow parameter governing the incompressible Navier-Stokes equations."))]),Q[149]||(Q[149]=t("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),t("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),t("p",null,[Q[111]||(Q[111]=a("The local and total kinetic energy are defined by ")),t("mjx-container",L1,[(e(),T("svg",y1,Q[107]||(Q[107]=[l('',1)]))),Q[108]||(Q[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mn",null,"2"),t("mn",null,"2")])])],-1))]),Q[112]||(Q[112]=a(" and ")),t("mjx-container",k1,[(e(),T("svg",M1,Q[109]||(Q[109]=[l('',1)]))),Q[110]||(Q[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"K"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mi",null,"u"),t("msubsup",null,[t("mo",{"data-mjx-texclass":"ORD"},"∥"),t("mrow",{"data-mjx-texclass":"ORD"},[t("msup",null,[t("mi",null,"L"),t("mn",null,"2")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Ω"),t("mo",{stretchy:"false"},")")]),t("mn",null,"2")]),t("mo",null,"="),t("msub",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mi",{mathvariant:"normal"},"Ω")]),t("mi",null,"k"),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",{mathvariant:"normal"},"Ω")])],-1))]),Q[113]||(Q[113]=a("."))]),Q[150]||(Q[150]=t("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),t("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t("p",null,[Q[116]||(Q[116]=a("The vorticity is defined as ")),t("mjx-container",V1,[(e(),T("svg",Z1,Q[114]||(Q[114]=[l('',1)]))),Q[115]||(Q[115]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ω"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"u")])],-1))]),Q[117]||(Q[117]=a("."))]),Q[151]||(Q[151]=t("p",null,"In 2D, it is a scalar field given by",-1)),t("mjx-container",v1,[(e(),T("svg",b1,Q[118]||(Q[118]=[l('',1)]))),Q[119]||(Q[119]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[152]||(Q[152]=t("p",null,"In 3D, it is a vector field given by",-1)),t("mjx-container",D1,[(e(),T("svg",j1,Q[120]||(Q[120]=[l('',1)]))),Q[121]||(Q[121]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"ω"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mtable",{columnspacing:"1em",rowspacing:"4pt"},[t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"3")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])])])]),t("mtr",null,[t("mtd",null,[t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"1")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,"+"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])])])])]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[Q[124]||(Q[124]=a("Note that the 2D vorticity is equal to the ")),t("mjx-container",C1,[(e(),T("svg",O1,Q[122]||(Q[122]=[l('',1)]))),Q[123]||(Q[123]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"x"),t("mn",null,"3")])])],-1))]),Q[125]||(Q[125]=a("-component of the 3D vorticity."))]),Q[153]||(Q[153]=t("h3",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),t("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t("p",null,[Q[128]||(Q[128]=a("In 2D, the stream function ")),t("mjx-container",R1,[(e(),T("svg",B1,Q[126]||(Q[126]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D713",d:"M161 441Q202 441 226 417T250 358Q250 338 218 252T187 127Q190 85 214 61Q235 43 257 37Q275 29 288 29H289L371 360Q455 691 456 692Q459 694 472 694Q492 694 492 687Q492 678 411 356Q329 28 329 27T335 26Q421 26 498 114T576 278Q576 302 568 319T550 343T532 361T524 384Q524 405 541 424T583 443Q602 443 618 425T634 366Q634 337 623 288T605 220Q573 125 492 57T329 -11H319L296 -104Q272 -198 272 -199Q270 -205 252 -205H239Q233 -199 233 -197Q233 -192 256 -102T279 -9Q272 -8 265 -8Q106 14 106 139Q106 174 139 264T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Q21 299 34 333T82 404T161 441Z",style:{"stroke-width":"3"}})])])],-1)]))),Q[127]||(Q[127]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ψ")])],-1))]),Q[129]||(Q[129]=a(" is a scalar field such that"))]),t("mjx-container",S1,[(e(),T("svg",z1,Q[130]||(Q[130]=[l('',1)]))),Q[131]||(Q[131]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"1")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"2")])])]),t("mo",null,","),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"1em"})]),t("msup",null,[t("mi",null,"u"),t("mn",null,"2")]),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("mi",null,"ψ")]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mn",null,"1")])])]),t("mo",null,".")])],-1))]),Q[154]||(Q[154]=t("p",null,"It can be found by solving",-1)),t("mjx-container",J1,[(e(),T("svg",G1,Q[132]||(Q[132]=[l('',1)]))),Q[133]||(Q[133]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mo",null,"−"),t("mi",null,"ω"),t("mo",null,".")])],-1))]),Q[155]||(Q[155]=t("p",null,"In 3D, the stream function is a vector field such that",-1)),t("mjx-container",A1,[(e(),T("svg",P1,Q[134]||(Q[134]=[l('',1)]))),Q[135]||(Q[135]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ψ"),t("mo",null,".")])],-1))]),Q[156]||(Q[156]=t("p",null,"It can be found by solving",-1)),t("mjx-container",X1,[(e(),T("svg",F1,Q[136]||(Q[136]=[l('',1)]))),Q[137]||(Q[137]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"ψ"),t("mo",null,"="),t("mi",{mathvariant:"normal"},"∇"),t("mo",null,"×"),t("mi",null,"ω"),t("mo",null,".")])],-1))])])}const Y1=s(o,[["render",N1]]);export{U1 as __pageData,Y1 as default}; diff --git a/previews/PR126/assets/manual_operators.md.BWJyilKl.js b/previews/PR126/assets/manual_operators.md.BWJyilKl.js new file mode 100644 index 00000000..c0cde1de --- /dev/null +++ b/previews/PR126/assets/manual_operators.md.BWJyilKl.js @@ -0,0 +1,6 @@ +import{_ as Q,c as n,a5 as a,j as t,a as e,G as i,B as r,o}from"./chunks/framework.CojPSOJE.js";const l2=JSON.parse('{"title":"Operators","description":"","frontmatter":{},"headers":[],"relativePath":"manual/operators.md","filePath":"manual/operators.md","lastUpdated":null}'),T={name:"manual/operators.md"},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.068ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.927ex",height:"5.369ex",role:"img",focusable:"false",viewBox:"0 -1459 5271.6 2372.9","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},x={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.907ex",height:"6.539ex",role:"img",focusable:"false",viewBox:"0 -1537.5 10125 2890.2","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.662ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 4270.6 1044.2","aria-hidden":"true"},X={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},Y={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},s1={class:"jldocstring custom-block",open:""},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.669ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.359ex",height:"2.69ex",role:"img",focusable:"false",viewBox:"0 -893.3 6788.6 1189","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.598ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 6010.1 1044.2","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.114ex",height:"3.023ex",role:"img",focusable:"false",viewBox:"0 -983.2 4912.3 1336","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.253ex",height:"2.819ex",role:"img",focusable:"false",viewBox:"0 -893.3 6742 1246.1","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.334ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.614ex",height:"3.686ex",role:"img",focusable:"false",viewBox:"0 -1039.8 5133.2 1629.3","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.482ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"3.851ex",role:"img",focusable:"false",viewBox:"0 -1047.1 8968.4 1702.1","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.254ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.959ex",height:"3.238ex",role:"img",focusable:"false",viewBox:"0 -877 3517.7 1431","aria-hidden":"true"},u1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.725ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 12254.6 2499.8","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"32.233ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 14247.1 2499.8","aria-hidden":"true"},A1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},V1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""},S1={class:"jldocstring custom-block",open:""},N1={class:"jldocstring custom-block",open:""},I1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""},F1={class:"jldocstring custom-block",open:""},B1={class:"jldocstring custom-block",open:""},O1={class:"jldocstring custom-block",open:""},R1={class:"jldocstring custom-block",open:""},G1={class:"jldocstring custom-block",open:""},J1={class:"jldocstring custom-block",open:""},z1={class:"jldocstring custom-block",open:""},P1={class:"jldocstring custom-block",open:""},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.309ex",height:"1.906ex",role:"img",focusable:"false",viewBox:"0 -677 1020.6 842.6","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},$1={class:"jldocstring custom-block",open:""};function W1(Y1,s,_1,t2,s2,e2){const l=r("Badge");return o(),n("div",null,[s[262]||(s[262]=a('

Operators

All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

',2)),t("details",d,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.Offset",href:"#IncompressibleNavierStokes.Offset"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Offset")],-1)),s[1]||(s[1]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
julia
struct Offset{D}

Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

Fields

source

',5))]),t("details",p,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.Dfield!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.Dfield!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield!")],-1)),s[4]||(s[4]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[9]||(s[9]=a('
julia
Dfield!(d, G, p, setup; ϵ) -> Any
',1)),t("p",null,[s[7]||(s[7]=e("Compute the ")),t("mjx-container",m,[(o(),n("svg",h,s[5]||(s[5]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),s[6]||(s[6]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),s[8]||(s[8]=e("-field (in-place version)."))]),s[10]||(s[10]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1389",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",g,[t("summary",null,[s[11]||(s[11]=t("a",{id:"IncompressibleNavierStokes.Dfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Dfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield")],-1)),s[12]||(s[12]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[21]||(s[21]=a('
julia
Dfield(p, setup; kwargs...) -> Any
',1)),t("p",null,[s[15]||(s[15]=e("Compute the ")),t("mjx-container",u,[(o(),n("svg",k,s[13]||(s[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),s[14]||(s[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),s[16]||(s[16]=e("-field [")),s[17]||(s[17]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#LiJiajia2019"},"5",-1)),s[18]||(s[18]=e("] given by"))]),t("mjx-container",c,[(o(),n("svg",y,s[19]||(s[19]=[a('',1)]))),s[20]||(s[20]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"D"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"2"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),t("mrow",null,[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p")])]),t("mo",null,".")])],-1))]),s[22]||(s[22]=t("p",null,"Differentiable version.",-1)),s[23]||(s[23]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1374",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield!")],-1)),s[25]||(s[25]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[30]||(s[30]=a('
julia
Qfield!(Q, u, setup) -> Any
',1)),t("p",null,[s[28]||(s[28]=e("Compute the ")),t("mjx-container",f,[(o(),n("svg",v,s[26]||(s[26]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),s[27]||(s[27]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),s[29]||(s[29]=e("-field (in-place version)."))]),s[31]||(s[31]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1440",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",x,[t("summary",null,[s[32]||(s[32]=t("a",{id:"IncompressibleNavierStokes.Qfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Qfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield")],-1)),s[33]||(s[33]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[42]||(s[42]=a('
julia
Qfield(u, setup) -> Any
',1)),t("p",null,[s[36]||(s[36]=e("Compute ")),t("mjx-container",w,[(o(),n("svg",j,s[34]||(s[34]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),s[35]||(s[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),s[37]||(s[37]=e("-field [")),s[38]||(s[38]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),s[39]||(s[39]=e("] given by"))]),t("mjx-container",H,[(o(),n("svg",L,s[40]||(s[40]=[a('',1)]))),s[41]||(s[41]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,","),t("mi",null,"β")])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),s[43]||(s[43]=t("p",null,"Differentiable version.",-1)),s[44]||(s[44]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1425",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce!")],-1)),s[46]||(s[46]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=a('
julia
applybodyforce!(F, u, t, setup) -> Any

Compute body force (in-place version). Add the result to F.

source

',3))]),t("details",M,[t("summary",null,[s[48]||(s[48]=t("a",{id:"IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce")],-1)),s[49]||(s[49]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=a('
julia
applybodyforce(u, t, setup) -> Any

Compute body force (differentiable version).

source

',3))]),t("details",A,[t("summary",null,[s[51]||(s[51]=t("a",{id:"IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure!")],-1)),s[52]||(s[52]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=a('
julia
applypressure!(u, p, setup) -> Any

Subtract pressure gradient (in-place version).

source

',3))]),t("details",C,[t("summary",null,[s[54]||(s[54]=t("a",{id:"IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure")],-1)),s[55]||(s[55]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[56]||(s[56]=a('
julia
applypressure(u, p, setup) -> Any

Subtract pressure gradient (differentiable version).

source

',3))]),t("details",V,[t("summary",null,[s[57]||(s[57]=t("a",{id:"IncompressibleNavierStokes.avg-NTuple{4, Any}",href:"#IncompressibleNavierStokes.avg-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.avg")],-1)),s[58]||(s[58]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[59]||(s[59]=a('
julia
avg(ϕ, Δ, I, α) -> Any

Average scalar field ϕ in the α-direction.

source

',3))]),t("details",Z,[t("summary",null,[s[60]||(s[60]=t("a",{id:"IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection!")],-1)),s[61]||(s[61]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[62]=a('
julia
convection!(F, u, setup) -> Any

Compute convective term (in-place version). Add the result to F.

source

',3))]),t("details",S,[t("summary",null,[s[63]||(s[63]=t("a",{id:"IncompressibleNavierStokes.convection-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.convection-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection")],-1)),s[64]||(s[64]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[65]||(s[65]=a('
julia
convection(u, setup) -> Any

Compute convective term (differentiable version).

source

',3))]),t("details",N,[t("summary",null,[s[66]||(s[66]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp!")],-1)),s[67]||(s[67]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[68]||(s[68]=a('
julia
convection_diffusion_temp!(c, u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

source

',3))]),t("details",I,[t("summary",null,[s[69]||(s[69]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp")],-1)),s[70]||(s[70]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[71]||(s[71]=a('
julia
convection_diffusion_temp(u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (differentiable version).

source

',3))]),t("details",D,[t("summary",null,[s[72]||(s[72]=t("a",{id:"IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convectiondiffusion!")],-1)),s[73]||(s[73]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[74]||(s[74]=a('
julia
convectiondiffusion!(F, u, setup) -> Any

Compute convective and diffusive terms (in-place version). Add the result to F.

source

',3))]),t("details",F,[t("summary",null,[s[75]||(s[75]=t("a",{id:"IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion!")],-1)),s[76]||(s[76]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[77]||(s[77]=a('
julia
diffusion!(F, u, setup; use_viscosity) -> Any

Compute diffusive term (in-place version). Add the result to F.

Keyword arguments:

  • with_viscosity = true: Include viscosity in the operator.

source

',5))]),t("details",B,[t("summary",null,[s[78]||(s[78]=t("a",{id:"IncompressibleNavierStokes.diffusion-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.diffusion-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion")],-1)),s[79]||(s[79]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[80]||(s[80]=a('
julia
diffusion(u, setup; kwargs...) -> Any

Compute diffusive term (differentiable version).

source

',3))]),t("details",O,[t("summary",null,[s[81]||(s[81]=t("a",{id:"IncompressibleNavierStokes.dissipation!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.dissipation!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation!")],-1)),s[82]||(s[82]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[83]||(s[83]=a('
julia
dissipation!(diss, diff, u, setup) -> Any

Compute dissipation term for the temperature equation (in-place version). Add result to diss.

source

',3))]),t("details",R,[t("summary",null,[s[84]||(s[84]=t("a",{id:"IncompressibleNavierStokes.dissipation-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation")],-1)),s[85]||(s[85]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[86]||(s[86]=a('
julia
dissipation(u, setup) -> Any

Compute dissipation term for the temperature equation (differentiable version).

source

',3))]),t("details",G,[t("summary",null,[s[87]||(s[87]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain!")],-1)),s[88]||(s[88]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[89]||(s[89]=a('
julia
dissipation_from_strain!(ϵ, u, setup) -> Any

Compute dissipation term from strain-rate tensor (in-place version).

source

',3))]),t("details",J,[t("summary",null,[s[90]||(s[90]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain")],-1)),s[91]||(s[91]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[96]||(s[96]=a('
julia
dissipation_from_strain(u, setup) -> Any
',1)),t("p",null,[s[94]||(s[94]=e("Compute dissipation term ")),t("mjx-container",z,[(o(),n("svg",P,s[92]||(s[92]=[a('',1)]))),s[93]||(s[93]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))]),s[95]||(s[95]=e(" from strain-rate tensor (differentiable version)."))]),s[97]||(s[97]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",X,[t("summary",null,[s[98]||(s[98]=t("a",{id:"IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence!")],-1)),s[99]||(s[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=a('
julia
divergence!(div, u, setup) -> Any

Compute divergence of velocity field (in-place version).

source

',3))]),t("details",q,[t("summary",null,[s[101]||(s[101]=t("a",{id:"IncompressibleNavierStokes.divergence-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.divergence-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence")],-1)),s[102]||(s[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=a('
julia
divergence(u, setup) -> Any

Compute divergence of velocity field (differentiable version).

source

',3))]),t("details",K,[t("summary",null,[s[104]||(s[104]=t("a",{id:"IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divoftensor!")],-1)),s[105]||(s[105]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=a('
julia
divoftensor!(s, σ, setup) -> Any

Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

source

',3))]),t("details",U,[t("summary",null,[s[107]||(s[107]=t("a",{id:"IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field!")],-1)),s[108]||(s[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[113]||(s[113]=a('
julia
eig2field!(λ, u, setup) -> Any
',1)),t("p",null,[s[111]||(s[111]=e("Compute the second eigenvalue of ")),t("mjx-container",$,[(o(),n("svg",W,s[109]||(s[109]=[a('',1)]))),s[110]||(s[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),s[112]||(s[112]=e(" (in-place version)."))]),s[114]||(s[114]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1470",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Y,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.eig2field-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.eig2field-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field")],-1)),s[116]||(s[116]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[123]||(s[123]=a('
julia
eig2field(u, setup) -> Any
',1)),t("p",null,[s[119]||(s[119]=e("Compute the second eigenvalue of ")),t("mjx-container",_,[(o(),n("svg",t1,s[117]||(s[117]=[a('',1)]))),s[118]||(s[118]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),s[120]||(s[120]=e(", as proposed by Jeong and Hussain [")),s[121]||(s[121]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),s[122]||(s[122]=e("]."))]),s[124]||(s[124]=t("p",null,"Differentiable version.",-1)),s[125]||(s[125]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1462",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",s1,[t("summary",null,[s[126]||(s[126]=t("a",{id:"IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_scale_numbers")],-1)),s[127]||(s[127]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[149]||(s[149]=a(`
julia
get_scale_numbers(
+    u,
+    setup
+) -> NamedTuple{(:uavg, , , , :Reλ, :L, , :Re_int), <:NTuple{8, Any}}

Get the following dimensional scale numbers [7]:

`,2)),t("ul",null,[t("li",null,[t("p",null,[s[130]||(s[130]=e("Velocity ")),t("mjx-container",e1,[(o(),n("svg",a1,s[128]||(s[128]=[a('',1)]))),s[129]||(s[129]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")]),t("mo",null,"="),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msup",null,[t("mo",{fence:"false",stretchy:"false"},"⟩"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])])])],-1))])])]),t("li",null,[t("p",null,[s[133]||(s[133]=e("Dissipation rate ")),t("mjx-container",l1,[(o(),n("svg",i1,s[131]||(s[131]=[a('',1)]))),s[132]||(s[132]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ϵ"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))])])]),t("li",null,[t("p",null,[s[136]||(s[136]=e("Kolmolgorov length scale ")),t("mjx-container",n1,[(o(),n("svg",o1,s[134]||(s[134]=[a('',1)]))),s[135]||(s[135]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("msup",null,[t("mi",null,"ν"),t("mn",null,"3")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"4")])])])],-1))])])]),t("li",null,[t("p",null,[s[139]||(s[139]=e("Taylor length scale ")),t("mjx-container",Q1,[(o(),n("svg",r1,s[137]||(s[137]=[a('',1)]))),s[138]||(s[138]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("mrow",null,[t("mn",null,"5"),t("mi",null,"ν")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])]),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])],-1))])])]),t("li",null,[t("p",null,[s[142]||(s[142]=e("Taylor-scale Reynolds number ")),t("mjx-container",T1,[(o(),n("svg",d1,s[140]||(s[140]=[a('',1)]))),s[141]||(s[141]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("msub",null,[t("mi",null,"e"),t("mi",null,"λ")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"λ"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])]),t("mrow",null,[t("msqrt",null,[t("mn",null,"3")]),t("mi",null,"ν")])])])],-1))])])]),t("li",null,[t("p",null,[s[145]||(s[145]=e("Integral length scale ")),t("mjx-container",p1,[(o(),n("svg",m1,s[143]||(s[143]=[a('',1)]))),s[144]||(s[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"L"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"π")]),t("mrow",null,[t("mn",null,"2"),t("msubsup",null,[t("mi",null,"u"),t("mtext",null,"avg"),t("mn",null,"2")])])]),t("msubsup",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mn",null,"0"),t("mi",{mathvariant:"normal"},"∞")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"E"),t("mo",{stretchy:"false"},"("),t("mi",null,"k"),t("mo",{stretchy:"false"},")")]),t("mi",null,"k")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"k")])],-1))])])]),t("li",null,[t("p",null,[s[148]||(s[148]=e("Large-eddy turnover time ")),t("mjx-container",h1,[(o(),n("svg",g1,s[146]||(s[146]=[a('',1)]))),s[147]||(s[147]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ"),t("mo",null,"="),t("mfrac",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])])],-1))])])])]),s[150]||(s[150]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1558",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",u1,[t("summary",null,[s[151]||(s[151]=t("a",{id:"IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity!")],-1)),s[152]||(s[152]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[153]||(s[153]=a('
julia
gravity!(F, temp, setup) -> Any

Compute gravity term (in-place version). add the result to F.

source

',3))]),t("details",k1,[t("summary",null,[s[154]||(s[154]=t("a",{id:"IncompressibleNavierStokes.gravity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.gravity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity")],-1)),s[155]||(s[155]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[156]||(s[156]=a('
julia
gravity(temp, setup) -> Any

Compute gravity term (differentiable version).

source

',3))]),t("details",c1,[t("summary",null,[s[157]||(s[157]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p!")],-1)),s[158]||(s[158]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[159]||(s[159]=a('
julia
interpolate_u_p!(up, u, setup) -> Any

Interpolate velocity to pressure points (in-place version).

source

',3))]),t("details",y1,[t("summary",null,[s[160]||(s[160]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p")],-1)),s[161]||(s[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[162]||(s[162]=a('
julia
interpolate_u_p(u, setup) -> Any

Interpolate velocity to pressure points (differentiable version).

source

',3))]),t("details",b1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p!")],-1)),s[164]||(s[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=a('
julia
interpolate_ω_p!(ωp, ω, setup) -> Any

Interpolate vorticity to pressure points (in-place version).

source

',3))]),t("details",f1,[t("summary",null,[s[166]||(s[166]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p")],-1)),s[167]||(s[167]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[168]||(s[168]=a('
julia
interpolate_ω_p(ω, setup) -> Any

Interpolate vorticity to pressure points (differentiable version).

source

',3))]),t("details",v1,[t("summary",null,[s[169]||(s[169]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy!")],-1)),s[170]||(s[170]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[171]||(s[171]=a('
julia
kinetic_energy!(ke, u, setup; interpolate_first) -> Any

Compute kinetic energy field (in-place version).

source

',3))]),t("details",x1,[t("summary",null,[s[172]||(s[172]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy")],-1)),s[173]||(s[173]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[184]||(s[184]=a('
julia
kinetic_energy(u, setup; kwargs...) -> Any
',1)),t("p",null,[s[176]||(s[176]=e("Compute kinetic energy field ")),t("mjx-container",w1,[(o(),n("svg",j1,s[174]||(s[174]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),s[175]||(s[175]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k")])],-1))]),s[177]||(s[177]=e(" (in-place version). If ")),s[178]||(s[178]=t("code",null,"interpolate_first",-1)),s[179]||(s[179]=e(" is true, it is given by"))]),t("mjx-container",H1,[(o(),n("svg",L1,s[180]||(s[180]=[a('',1)]))),s[181]||(s[181]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"8")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,".")])],-1))]),s[185]||(s[185]=t("p",null,"Otherwise, it is given by",-1)),t("mjx-container",E1,[(o(),n("svg",M1,s[182]||(s[182]=[a('',1)]))),s[183]||(s[183]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"4")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),s[186]||(s[186]=t("p",null,[e("as in ["),t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2023"},"8"),e("].")],-1)),s[187]||(s[187]=t("p",null,"Differentiable version.",-1)),s[188]||(s[188]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1491",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",A1,[t("summary",null,[s[189]||(s[189]=t("a",{id:"IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian!")],-1)),s[190]||(s[190]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[191]||(s[191]=a('
julia
laplacian!(L, p, setup) -> Any

Compute Laplacian of pressure field (in-place version).

source

',3))]),t("details",C1,[t("summary",null,[s[192]||(s[192]=t("a",{id:"IncompressibleNavierStokes.laplacian-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.laplacian-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian")],-1)),s[193]||(s[193]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[194]||(s[194]=a('
julia
laplacian(p, setup) -> Any

Compute Laplacian of pressure field (differentiable version).

source

',3))]),t("details",V1,[t("summary",null,[s[195]||(s[195]=t("a",{id:"IncompressibleNavierStokes.momentum!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.momentum!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum!")],-1)),s[196]||(s[196]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[197]||(s[197]=a('
julia
momentum!(F, u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (in-place version).

source

',3))]),t("details",Z1,[t("summary",null,[s[198]||(s[198]=t("a",{id:"IncompressibleNavierStokes.momentum-NTuple{4, Any}",href:"#IncompressibleNavierStokes.momentum-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum")],-1)),s[199]||(s[199]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[200]||(s[200]=a('
julia
momentum(u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (differentiable version).

source

',3))]),t("details",S1,[t("summary",null,[s[201]||(s[201]=t("a",{id:"IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient!")],-1)),s[202]||(s[202]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[203]||(s[203]=a('
julia
pressuregradient!(G, p, setup) -> Any

Compute pressure gradient (in-place version).

source

',3))]),t("details",N1,[t("summary",null,[s[204]||(s[204]=t("a",{id:"IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient")],-1)),s[205]||(s[205]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[206]||(s[206]=a('
julia
pressuregradient(p, setup) -> Any

Compute pressure gradient (differentiable version).

source

',3))]),t("details",I1,[t("summary",null,[s[207]||(s[207]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume!")],-1)),s[208]||(s[208]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[209]||(s[209]=a('
julia
scalewithvolume!(p, setup) -> Any

Scale scalar field with volume sizes (in-place version).

source

',3))]),t("details",D1,[t("summary",null,[s[210]||(s[210]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume")],-1)),s[211]||(s[211]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[212]||(s[212]=a('
julia
scalewithvolume(p, setup) -> Any

Scale scalar field p with volume sizes (differentiable version).

source

',3))]),t("details",F1,[t("summary",null,[s[213]||(s[213]=t("a",{id:"IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}",href:"#IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagorinsky_closure")],-1)),s[214]||(s[214]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[215]||(s[215]=a(`
julia
smagorinsky_closure(
+    setup
+) -> IncompressibleNavierStokes.var"#closure#184"

Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

source

`,3))]),t("details",B1,[t("summary",null,[s[216]||(s[216]=t("a",{id:"IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagtensor!")],-1)),s[217]||(s[217]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[218]||(s[218]=a('
julia
smagtensor!(σ, u, θ, setup) -> Any

Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

source

',3))]),t("details",O1,[t("summary",null,[s[219]||(s[219]=t("a",{id:"IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.total_kinetic_energy")],-1)),s[220]||(s[220]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[221]||(s[221]=a('
julia
total_kinetic_energy(u, setup; kwargs...) -> Any

Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

source

',3))]),t("details",R1,[t("summary",null,[s[222]||(s[222]=t("a",{id:"IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}",href:"#IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.unit_cartesian_indices")],-1)),s[223]||(s[223]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[224]||(s[224]=a('
julia
unit_cartesian_indices(D) -> Any

Get tuple of all unit vectors as Cartesian indices.

source

',3))]),t("details",G1,[t("summary",null,[s[225]||(s[225]=t("a",{id:"IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity!")],-1)),s[226]||(s[226]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[227]||(s[227]=a('
julia
vorticity!(ω, u, setup) -> Any

Compute vorticity field (in-place version).

source

',3))]),t("details",J1,[t("summary",null,[s[228]||(s[228]=t("a",{id:"IncompressibleNavierStokes.vorticity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.vorticity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity")],-1)),s[229]||(s[229]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[230]||(s[230]=a('
julia
vorticity(u, setup) -> Any

Compute vorticity field (differentiable version).

source

',3))]),t("details",z1,[t("summary",null,[s[231]||(s[231]=t("a",{id:"IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.lastdimcontract")],-1)),s[232]||(s[232]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[233]||(s[233]=a('
julia
lastdimcontract(a, b, setup) -> Any

Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

source

',3))]),t("details",P1,[t("summary",null,[s[234]||(s[234]=t("a",{id:"IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis!")],-1)),s[235]||(s[235]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[257]||(s[257]=a('
julia
tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}
',1)),t("p",null,[s[240]||(s[240]=e("Compute symmetry tensor basis ")),s[241]||(s[241]=t("code",null,"B[1]",-1)),s[242]||(s[242]=e("-")),s[243]||(s[243]=t("code",null,"B[11]",-1)),s[244]||(s[244]=e(" and invariants ")),s[245]||(s[245]=t("code",null,"V[1]",-1)),s[246]||(s[246]=e("-")),s[247]||(s[247]=t("code",null,"V[5]",-1)),s[248]||(s[248]=e(", as specified in [")),s[249]||(s[249]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Silvis2017"},"9",-1)),s[250]||(s[250]=e("] in equations (9) and (11). Note that ")),s[251]||(s[251]=t("code",null,"B[1]",-1)),s[252]||(s[252]=e(" corresponds to ")),t("mjx-container",X1,[(o(),n("svg",q1,s[236]||(s[236]=[a('',1)]))),s[237]||(s[237]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mn",null,"0")])])],-1))]),s[253]||(s[253]=e(" in the paper, and ")),s[254]||(s[254]=t("code",null,"V",-1)),s[255]||(s[255]=e(" to ")),t("mjx-container",K1,[(o(),n("svg",U1,s[238]||(s[238]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[239]||(s[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"I")])],-1))]),s[256]||(s[256]=e("."))]),s[258]||(s[258]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/tensorbasis.jl#L16",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$1,[t("summary",null,[s[259]||(s[259]=t("a",{id:"IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis")],-1)),s[260]||(s[260]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[261]||(s[261]=a('
julia
tensorbasis(u, setup) -> Tuple{Any, Any}

Compute symmetry tensor basis (differentiable version).

source

',3))])])}const i2=Q(T,[["render",W1]]);export{l2 as __pageData,i2 as default}; diff --git a/previews/PR126/assets/manual_operators.md.BWJyilKl.lean.js b/previews/PR126/assets/manual_operators.md.BWJyilKl.lean.js new file mode 100644 index 00000000..c0cde1de --- /dev/null +++ b/previews/PR126/assets/manual_operators.md.BWJyilKl.lean.js @@ -0,0 +1,6 @@ +import{_ as Q,c as n,a5 as a,j as t,a as e,G as i,B as r,o}from"./chunks/framework.CojPSOJE.js";const l2=JSON.parse('{"title":"Operators","description":"","frontmatter":{},"headers":[],"relativePath":"manual/operators.md","filePath":"manual/operators.md","lastUpdated":null}'),T={name:"manual/operators.md"},d={class:"jldocstring custom-block",open:""},p={class:"jldocstring custom-block",open:""},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.068ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.927ex",height:"5.369ex",role:"img",focusable:"false",viewBox:"0 -1459 5271.6 2372.9","aria-hidden":"true"},b={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},x={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.907ex",height:"6.539ex",role:"img",focusable:"false",viewBox:"0 -1537.5 10125 2890.2","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.662ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 4270.6 1044.2","aria-hidden":"true"},X={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},Y={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},s1={class:"jldocstring custom-block",open:""},e1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.669ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.359ex",height:"2.69ex",role:"img",focusable:"false",viewBox:"0 -893.3 6788.6 1189","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.598ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 6010.1 1044.2","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.114ex",height:"3.023ex",role:"img",focusable:"false",viewBox:"0 -983.2 4912.3 1336","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.253ex",height:"2.819ex",role:"img",focusable:"false",viewBox:"0 -893.3 6742 1246.1","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.334ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.614ex",height:"3.686ex",role:"img",focusable:"false",viewBox:"0 -1039.8 5133.2 1629.3","aria-hidden":"true"},p1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.482ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"3.851ex",role:"img",focusable:"false",viewBox:"0 -1047.1 8968.4 1702.1","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.254ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.959ex",height:"3.238ex",role:"img",focusable:"false",viewBox:"0 -877 3517.7 1431","aria-hidden":"true"},u1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.725ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 12254.6 2499.8","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"32.233ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 14247.1 2499.8","aria-hidden":"true"},A1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},V1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""},S1={class:"jldocstring custom-block",open:""},N1={class:"jldocstring custom-block",open:""},I1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""},F1={class:"jldocstring custom-block",open:""},B1={class:"jldocstring custom-block",open:""},O1={class:"jldocstring custom-block",open:""},R1={class:"jldocstring custom-block",open:""},G1={class:"jldocstring custom-block",open:""},J1={class:"jldocstring custom-block",open:""},z1={class:"jldocstring custom-block",open:""},P1={class:"jldocstring custom-block",open:""},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.309ex",height:"1.906ex",role:"img",focusable:"false",viewBox:"0 -677 1020.6 842.6","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},$1={class:"jldocstring custom-block",open:""};function W1(Y1,s,_1,t2,s2,e2){const l=r("Badge");return o(),n("div",null,[s[262]||(s[262]=a('

Operators

All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

',2)),t("details",d,[t("summary",null,[s[0]||(s[0]=t("a",{id:"IncompressibleNavierStokes.Offset",href:"#IncompressibleNavierStokes.Offset"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Offset")],-1)),s[1]||(s[1]=e()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),s[2]||(s[2]=a('
julia
struct Offset{D}

Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

Fields

source

',5))]),t("details",p,[t("summary",null,[s[3]||(s[3]=t("a",{id:"IncompressibleNavierStokes.Dfield!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.Dfield!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield!")],-1)),s[4]||(s[4]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[9]||(s[9]=a('
julia
Dfield!(d, G, p, setup; ϵ) -> Any
',1)),t("p",null,[s[7]||(s[7]=e("Compute the ")),t("mjx-container",m,[(o(),n("svg",h,s[5]||(s[5]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),s[6]||(s[6]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),s[8]||(s[8]=e("-field (in-place version)."))]),s[10]||(s[10]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1389",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",g,[t("summary",null,[s[11]||(s[11]=t("a",{id:"IncompressibleNavierStokes.Dfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Dfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield")],-1)),s[12]||(s[12]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[21]||(s[21]=a('
julia
Dfield(p, setup; kwargs...) -> Any
',1)),t("p",null,[s[15]||(s[15]=e("Compute the ")),t("mjx-container",u,[(o(),n("svg",k,s[13]||(s[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),s[14]||(s[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),s[16]||(s[16]=e("-field [")),s[17]||(s[17]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#LiJiajia2019"},"5",-1)),s[18]||(s[18]=e("] given by"))]),t("mjx-container",c,[(o(),n("svg",y,s[19]||(s[19]=[a('',1)]))),s[20]||(s[20]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"D"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"2"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),t("mrow",null,[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p")])]),t("mo",null,".")])],-1))]),s[22]||(s[22]=t("p",null,"Differentiable version.",-1)),s[23]||(s[23]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1374",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",b,[t("summary",null,[s[24]||(s[24]=t("a",{id:"IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield!")],-1)),s[25]||(s[25]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[30]||(s[30]=a('
julia
Qfield!(Q, u, setup) -> Any
',1)),t("p",null,[s[28]||(s[28]=e("Compute the ")),t("mjx-container",f,[(o(),n("svg",v,s[26]||(s[26]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),s[27]||(s[27]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),s[29]||(s[29]=e("-field (in-place version)."))]),s[31]||(s[31]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1440",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",x,[t("summary",null,[s[32]||(s[32]=t("a",{id:"IncompressibleNavierStokes.Qfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Qfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield")],-1)),s[33]||(s[33]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[42]||(s[42]=a('
julia
Qfield(u, setup) -> Any
',1)),t("p",null,[s[36]||(s[36]=e("Compute ")),t("mjx-container",w,[(o(),n("svg",j,s[34]||(s[34]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),s[35]||(s[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),s[37]||(s[37]=e("-field [")),s[38]||(s[38]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),s[39]||(s[39]=e("] given by"))]),t("mjx-container",H,[(o(),n("svg",L,s[40]||(s[40]=[a('',1)]))),s[41]||(s[41]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,","),t("mi",null,"β")])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),s[43]||(s[43]=t("p",null,"Differentiable version.",-1)),s[44]||(s[44]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1425",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[s[45]||(s[45]=t("a",{id:"IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce!")],-1)),s[46]||(s[46]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[47]||(s[47]=a('
julia
applybodyforce!(F, u, t, setup) -> Any

Compute body force (in-place version). Add the result to F.

source

',3))]),t("details",M,[t("summary",null,[s[48]||(s[48]=t("a",{id:"IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce")],-1)),s[49]||(s[49]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[50]||(s[50]=a('
julia
applybodyforce(u, t, setup) -> Any

Compute body force (differentiable version).

source

',3))]),t("details",A,[t("summary",null,[s[51]||(s[51]=t("a",{id:"IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure!")],-1)),s[52]||(s[52]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[53]||(s[53]=a('
julia
applypressure!(u, p, setup) -> Any

Subtract pressure gradient (in-place version).

source

',3))]),t("details",C,[t("summary",null,[s[54]||(s[54]=t("a",{id:"IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure")],-1)),s[55]||(s[55]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[56]||(s[56]=a('
julia
applypressure(u, p, setup) -> Any

Subtract pressure gradient (differentiable version).

source

',3))]),t("details",V,[t("summary",null,[s[57]||(s[57]=t("a",{id:"IncompressibleNavierStokes.avg-NTuple{4, Any}",href:"#IncompressibleNavierStokes.avg-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.avg")],-1)),s[58]||(s[58]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[59]||(s[59]=a('
julia
avg(ϕ, Δ, I, α) -> Any

Average scalar field ϕ in the α-direction.

source

',3))]),t("details",Z,[t("summary",null,[s[60]||(s[60]=t("a",{id:"IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection!")],-1)),s[61]||(s[61]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[62]||(s[62]=a('
julia
convection!(F, u, setup) -> Any

Compute convective term (in-place version). Add the result to F.

source

',3))]),t("details",S,[t("summary",null,[s[63]||(s[63]=t("a",{id:"IncompressibleNavierStokes.convection-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.convection-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection")],-1)),s[64]||(s[64]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[65]||(s[65]=a('
julia
convection(u, setup) -> Any

Compute convective term (differentiable version).

source

',3))]),t("details",N,[t("summary",null,[s[66]||(s[66]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp!")],-1)),s[67]||(s[67]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[68]||(s[68]=a('
julia
convection_diffusion_temp!(c, u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

source

',3))]),t("details",I,[t("summary",null,[s[69]||(s[69]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp")],-1)),s[70]||(s[70]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[71]||(s[71]=a('
julia
convection_diffusion_temp(u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (differentiable version).

source

',3))]),t("details",D,[t("summary",null,[s[72]||(s[72]=t("a",{id:"IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convectiondiffusion!")],-1)),s[73]||(s[73]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[74]||(s[74]=a('
julia
convectiondiffusion!(F, u, setup) -> Any

Compute convective and diffusive terms (in-place version). Add the result to F.

source

',3))]),t("details",F,[t("summary",null,[s[75]||(s[75]=t("a",{id:"IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion!")],-1)),s[76]||(s[76]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[77]||(s[77]=a('
julia
diffusion!(F, u, setup; use_viscosity) -> Any

Compute diffusive term (in-place version). Add the result to F.

Keyword arguments:

  • with_viscosity = true: Include viscosity in the operator.

source

',5))]),t("details",B,[t("summary",null,[s[78]||(s[78]=t("a",{id:"IncompressibleNavierStokes.diffusion-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.diffusion-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion")],-1)),s[79]||(s[79]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[80]||(s[80]=a('
julia
diffusion(u, setup; kwargs...) -> Any

Compute diffusive term (differentiable version).

source

',3))]),t("details",O,[t("summary",null,[s[81]||(s[81]=t("a",{id:"IncompressibleNavierStokes.dissipation!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.dissipation!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation!")],-1)),s[82]||(s[82]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[83]||(s[83]=a('
julia
dissipation!(diss, diff, u, setup) -> Any

Compute dissipation term for the temperature equation (in-place version). Add result to diss.

source

',3))]),t("details",R,[t("summary",null,[s[84]||(s[84]=t("a",{id:"IncompressibleNavierStokes.dissipation-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation")],-1)),s[85]||(s[85]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[86]||(s[86]=a('
julia
dissipation(u, setup) -> Any

Compute dissipation term for the temperature equation (differentiable version).

source

',3))]),t("details",G,[t("summary",null,[s[87]||(s[87]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain!")],-1)),s[88]||(s[88]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[89]||(s[89]=a('
julia
dissipation_from_strain!(ϵ, u, setup) -> Any

Compute dissipation term from strain-rate tensor (in-place version).

source

',3))]),t("details",J,[t("summary",null,[s[90]||(s[90]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain")],-1)),s[91]||(s[91]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[96]||(s[96]=a('
julia
dissipation_from_strain(u, setup) -> Any
',1)),t("p",null,[s[94]||(s[94]=e("Compute dissipation term ")),t("mjx-container",z,[(o(),n("svg",P,s[92]||(s[92]=[a('',1)]))),s[93]||(s[93]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))]),s[95]||(s[95]=e(" from strain-rate tensor (differentiable version)."))]),s[97]||(s[97]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",X,[t("summary",null,[s[98]||(s[98]=t("a",{id:"IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence!")],-1)),s[99]||(s[99]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[100]||(s[100]=a('
julia
divergence!(div, u, setup) -> Any

Compute divergence of velocity field (in-place version).

source

',3))]),t("details",q,[t("summary",null,[s[101]||(s[101]=t("a",{id:"IncompressibleNavierStokes.divergence-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.divergence-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence")],-1)),s[102]||(s[102]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[103]||(s[103]=a('
julia
divergence(u, setup) -> Any

Compute divergence of velocity field (differentiable version).

source

',3))]),t("details",K,[t("summary",null,[s[104]||(s[104]=t("a",{id:"IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divoftensor!")],-1)),s[105]||(s[105]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[106]||(s[106]=a('
julia
divoftensor!(s, σ, setup) -> Any

Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

source

',3))]),t("details",U,[t("summary",null,[s[107]||(s[107]=t("a",{id:"IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field!")],-1)),s[108]||(s[108]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[113]||(s[113]=a('
julia
eig2field!(λ, u, setup) -> Any
',1)),t("p",null,[s[111]||(s[111]=e("Compute the second eigenvalue of ")),t("mjx-container",$,[(o(),n("svg",W,s[109]||(s[109]=[a('',1)]))),s[110]||(s[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),s[112]||(s[112]=e(" (in-place version)."))]),s[114]||(s[114]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1470",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Y,[t("summary",null,[s[115]||(s[115]=t("a",{id:"IncompressibleNavierStokes.eig2field-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.eig2field-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field")],-1)),s[116]||(s[116]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[123]||(s[123]=a('
julia
eig2field(u, setup) -> Any
',1)),t("p",null,[s[119]||(s[119]=e("Compute the second eigenvalue of ")),t("mjx-container",_,[(o(),n("svg",t1,s[117]||(s[117]=[a('',1)]))),s[118]||(s[118]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),s[120]||(s[120]=e(", as proposed by Jeong and Hussain [")),s[121]||(s[121]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),s[122]||(s[122]=e("]."))]),s[124]||(s[124]=t("p",null,"Differentiable version.",-1)),s[125]||(s[125]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1462",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",s1,[t("summary",null,[s[126]||(s[126]=t("a",{id:"IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_scale_numbers")],-1)),s[127]||(s[127]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[149]||(s[149]=a(`
julia
get_scale_numbers(
+    u,
+    setup
+) -> NamedTuple{(:uavg, , , , :Reλ, :L, , :Re_int), <:NTuple{8, Any}}

Get the following dimensional scale numbers [7]:

`,2)),t("ul",null,[t("li",null,[t("p",null,[s[130]||(s[130]=e("Velocity ")),t("mjx-container",e1,[(o(),n("svg",a1,s[128]||(s[128]=[a('',1)]))),s[129]||(s[129]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")]),t("mo",null,"="),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msup",null,[t("mo",{fence:"false",stretchy:"false"},"⟩"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])])])],-1))])])]),t("li",null,[t("p",null,[s[133]||(s[133]=e("Dissipation rate ")),t("mjx-container",l1,[(o(),n("svg",i1,s[131]||(s[131]=[a('',1)]))),s[132]||(s[132]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ϵ"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))])])]),t("li",null,[t("p",null,[s[136]||(s[136]=e("Kolmolgorov length scale ")),t("mjx-container",n1,[(o(),n("svg",o1,s[134]||(s[134]=[a('',1)]))),s[135]||(s[135]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("msup",null,[t("mi",null,"ν"),t("mn",null,"3")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"4")])])])],-1))])])]),t("li",null,[t("p",null,[s[139]||(s[139]=e("Taylor length scale ")),t("mjx-container",Q1,[(o(),n("svg",r1,s[137]||(s[137]=[a('',1)]))),s[138]||(s[138]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("mrow",null,[t("mn",null,"5"),t("mi",null,"ν")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])]),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])],-1))])])]),t("li",null,[t("p",null,[s[142]||(s[142]=e("Taylor-scale Reynolds number ")),t("mjx-container",T1,[(o(),n("svg",d1,s[140]||(s[140]=[a('',1)]))),s[141]||(s[141]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("msub",null,[t("mi",null,"e"),t("mi",null,"λ")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"λ"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])]),t("mrow",null,[t("msqrt",null,[t("mn",null,"3")]),t("mi",null,"ν")])])])],-1))])])]),t("li",null,[t("p",null,[s[145]||(s[145]=e("Integral length scale ")),t("mjx-container",p1,[(o(),n("svg",m1,s[143]||(s[143]=[a('',1)]))),s[144]||(s[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"L"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"π")]),t("mrow",null,[t("mn",null,"2"),t("msubsup",null,[t("mi",null,"u"),t("mtext",null,"avg"),t("mn",null,"2")])])]),t("msubsup",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mn",null,"0"),t("mi",{mathvariant:"normal"},"∞")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"E"),t("mo",{stretchy:"false"},"("),t("mi",null,"k"),t("mo",{stretchy:"false"},")")]),t("mi",null,"k")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"k")])],-1))])])]),t("li",null,[t("p",null,[s[148]||(s[148]=e("Large-eddy turnover time ")),t("mjx-container",h1,[(o(),n("svg",g1,s[146]||(s[146]=[a('',1)]))),s[147]||(s[147]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ"),t("mo",null,"="),t("mfrac",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])])],-1))])])])]),s[150]||(s[150]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1558",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",u1,[t("summary",null,[s[151]||(s[151]=t("a",{id:"IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity!")],-1)),s[152]||(s[152]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[153]||(s[153]=a('
julia
gravity!(F, temp, setup) -> Any

Compute gravity term (in-place version). add the result to F.

source

',3))]),t("details",k1,[t("summary",null,[s[154]||(s[154]=t("a",{id:"IncompressibleNavierStokes.gravity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.gravity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity")],-1)),s[155]||(s[155]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[156]||(s[156]=a('
julia
gravity(temp, setup) -> Any

Compute gravity term (differentiable version).

source

',3))]),t("details",c1,[t("summary",null,[s[157]||(s[157]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p!")],-1)),s[158]||(s[158]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[159]||(s[159]=a('
julia
interpolate_u_p!(up, u, setup) -> Any

Interpolate velocity to pressure points (in-place version).

source

',3))]),t("details",y1,[t("summary",null,[s[160]||(s[160]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p")],-1)),s[161]||(s[161]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[162]||(s[162]=a('
julia
interpolate_u_p(u, setup) -> Any

Interpolate velocity to pressure points (differentiable version).

source

',3))]),t("details",b1,[t("summary",null,[s[163]||(s[163]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p!")],-1)),s[164]||(s[164]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[165]||(s[165]=a('
julia
interpolate_ω_p!(ωp, ω, setup) -> Any

Interpolate vorticity to pressure points (in-place version).

source

',3))]),t("details",f1,[t("summary",null,[s[166]||(s[166]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p")],-1)),s[167]||(s[167]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[168]||(s[168]=a('
julia
interpolate_ω_p(ω, setup) -> Any

Interpolate vorticity to pressure points (differentiable version).

source

',3))]),t("details",v1,[t("summary",null,[s[169]||(s[169]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy!")],-1)),s[170]||(s[170]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[171]||(s[171]=a('
julia
kinetic_energy!(ke, u, setup; interpolate_first) -> Any

Compute kinetic energy field (in-place version).

source

',3))]),t("details",x1,[t("summary",null,[s[172]||(s[172]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy")],-1)),s[173]||(s[173]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[184]||(s[184]=a('
julia
kinetic_energy(u, setup; kwargs...) -> Any
',1)),t("p",null,[s[176]||(s[176]=e("Compute kinetic energy field ")),t("mjx-container",w1,[(o(),n("svg",j1,s[174]||(s[174]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),s[175]||(s[175]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k")])],-1))]),s[177]||(s[177]=e(" (in-place version). If ")),s[178]||(s[178]=t("code",null,"interpolate_first",-1)),s[179]||(s[179]=e(" is true, it is given by"))]),t("mjx-container",H1,[(o(),n("svg",L1,s[180]||(s[180]=[a('',1)]))),s[181]||(s[181]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"8")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,".")])],-1))]),s[185]||(s[185]=t("p",null,"Otherwise, it is given by",-1)),t("mjx-container",E1,[(o(),n("svg",M1,s[182]||(s[182]=[a('',1)]))),s[183]||(s[183]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"4")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),s[186]||(s[186]=t("p",null,[e("as in ["),t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2023"},"8"),e("].")],-1)),s[187]||(s[187]=t("p",null,"Differentiable version.",-1)),s[188]||(s[188]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/operators.jl#L1491",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",A1,[t("summary",null,[s[189]||(s[189]=t("a",{id:"IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian!")],-1)),s[190]||(s[190]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[191]||(s[191]=a('
julia
laplacian!(L, p, setup) -> Any

Compute Laplacian of pressure field (in-place version).

source

',3))]),t("details",C1,[t("summary",null,[s[192]||(s[192]=t("a",{id:"IncompressibleNavierStokes.laplacian-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.laplacian-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian")],-1)),s[193]||(s[193]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[194]||(s[194]=a('
julia
laplacian(p, setup) -> Any

Compute Laplacian of pressure field (differentiable version).

source

',3))]),t("details",V1,[t("summary",null,[s[195]||(s[195]=t("a",{id:"IncompressibleNavierStokes.momentum!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.momentum!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum!")],-1)),s[196]||(s[196]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[197]||(s[197]=a('
julia
momentum!(F, u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (in-place version).

source

',3))]),t("details",Z1,[t("summary",null,[s[198]||(s[198]=t("a",{id:"IncompressibleNavierStokes.momentum-NTuple{4, Any}",href:"#IncompressibleNavierStokes.momentum-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum")],-1)),s[199]||(s[199]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[200]||(s[200]=a('
julia
momentum(u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (differentiable version).

source

',3))]),t("details",S1,[t("summary",null,[s[201]||(s[201]=t("a",{id:"IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient!")],-1)),s[202]||(s[202]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[203]||(s[203]=a('
julia
pressuregradient!(G, p, setup) -> Any

Compute pressure gradient (in-place version).

source

',3))]),t("details",N1,[t("summary",null,[s[204]||(s[204]=t("a",{id:"IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient")],-1)),s[205]||(s[205]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[206]||(s[206]=a('
julia
pressuregradient(p, setup) -> Any

Compute pressure gradient (differentiable version).

source

',3))]),t("details",I1,[t("summary",null,[s[207]||(s[207]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume!")],-1)),s[208]||(s[208]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[209]||(s[209]=a('
julia
scalewithvolume!(p, setup) -> Any

Scale scalar field with volume sizes (in-place version).

source

',3))]),t("details",D1,[t("summary",null,[s[210]||(s[210]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume")],-1)),s[211]||(s[211]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[212]||(s[212]=a('
julia
scalewithvolume(p, setup) -> Any

Scale scalar field p with volume sizes (differentiable version).

source

',3))]),t("details",F1,[t("summary",null,[s[213]||(s[213]=t("a",{id:"IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}",href:"#IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagorinsky_closure")],-1)),s[214]||(s[214]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[215]||(s[215]=a(`
julia
smagorinsky_closure(
+    setup
+) -> IncompressibleNavierStokes.var"#closure#184"

Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

source

`,3))]),t("details",B1,[t("summary",null,[s[216]||(s[216]=t("a",{id:"IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagtensor!")],-1)),s[217]||(s[217]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[218]||(s[218]=a('
julia
smagtensor!(σ, u, θ, setup) -> Any

Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

source

',3))]),t("details",O1,[t("summary",null,[s[219]||(s[219]=t("a",{id:"IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.total_kinetic_energy")],-1)),s[220]||(s[220]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[221]||(s[221]=a('
julia
total_kinetic_energy(u, setup; kwargs...) -> Any

Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

source

',3))]),t("details",R1,[t("summary",null,[s[222]||(s[222]=t("a",{id:"IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}",href:"#IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.unit_cartesian_indices")],-1)),s[223]||(s[223]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[224]||(s[224]=a('
julia
unit_cartesian_indices(D) -> Any

Get tuple of all unit vectors as Cartesian indices.

source

',3))]),t("details",G1,[t("summary",null,[s[225]||(s[225]=t("a",{id:"IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity!")],-1)),s[226]||(s[226]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[227]||(s[227]=a('
julia
vorticity!(ω, u, setup) -> Any

Compute vorticity field (in-place version).

source

',3))]),t("details",J1,[t("summary",null,[s[228]||(s[228]=t("a",{id:"IncompressibleNavierStokes.vorticity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.vorticity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity")],-1)),s[229]||(s[229]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[230]||(s[230]=a('
julia
vorticity(u, setup) -> Any

Compute vorticity field (differentiable version).

source

',3))]),t("details",z1,[t("summary",null,[s[231]||(s[231]=t("a",{id:"IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.lastdimcontract")],-1)),s[232]||(s[232]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[233]||(s[233]=a('
julia
lastdimcontract(a, b, setup) -> Any

Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

source

',3))]),t("details",P1,[t("summary",null,[s[234]||(s[234]=t("a",{id:"IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis!")],-1)),s[235]||(s[235]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[257]||(s[257]=a('
julia
tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}
',1)),t("p",null,[s[240]||(s[240]=e("Compute symmetry tensor basis ")),s[241]||(s[241]=t("code",null,"B[1]",-1)),s[242]||(s[242]=e("-")),s[243]||(s[243]=t("code",null,"B[11]",-1)),s[244]||(s[244]=e(" and invariants ")),s[245]||(s[245]=t("code",null,"V[1]",-1)),s[246]||(s[246]=e("-")),s[247]||(s[247]=t("code",null,"V[5]",-1)),s[248]||(s[248]=e(", as specified in [")),s[249]||(s[249]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Silvis2017"},"9",-1)),s[250]||(s[250]=e("] in equations (9) and (11). Note that ")),s[251]||(s[251]=t("code",null,"B[1]",-1)),s[252]||(s[252]=e(" corresponds to ")),t("mjx-container",X1,[(o(),n("svg",q1,s[236]||(s[236]=[a('',1)]))),s[237]||(s[237]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mn",null,"0")])])],-1))]),s[253]||(s[253]=e(" in the paper, and ")),s[254]||(s[254]=t("code",null,"V",-1)),s[255]||(s[255]=e(" to ")),t("mjx-container",K1,[(o(),n("svg",U1,s[238]||(s[238]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),s[239]||(s[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"I")])],-1))]),s[256]||(s[256]=e("."))]),s[258]||(s[258]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/tensorbasis.jl#L16",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$1,[t("summary",null,[s[259]||(s[259]=t("a",{id:"IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis")],-1)),s[260]||(s[260]=e()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[261]||(s[261]=a('
julia
tensorbasis(u, setup) -> Tuple{Any, Any}

Compute symmetry tensor basis (differentiable version).

source

',3))])])}const i2=Q(T,[["render",W1]]);export{l2 as __pageData,i2 as default}; diff --git a/previews/PR126/assets/manual_operators.md.C-RXRSw7.js b/previews/PR126/assets/manual_operators.md.C-RXRSw7.js deleted file mode 100644 index 0851409b..00000000 --- a/previews/PR126/assets/manual_operators.md.C-RXRSw7.js +++ /dev/null @@ -1,6 +0,0 @@ -import{_ as Q,c as n,a5 as a,j as t,a as s,G as i,B as r,o}from"./chunks/framework.BSoZtefh.js";const l2=JSON.parse('{"title":"Operators","description":"","frontmatter":{},"headers":[],"relativePath":"manual/operators.md","filePath":"manual/operators.md","lastUpdated":null}'),T={name:"manual/operators.md"},p={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.068ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.927ex",height:"5.369ex",role:"img",focusable:"false",viewBox:"0 -1459 5271.6 2372.9","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},x={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.907ex",height:"6.539ex",role:"img",focusable:"false",viewBox:"0 -1537.5 10125 2890.2","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.662ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 4270.6 1044.2","aria-hidden":"true"},X={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},Y={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},e1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.669ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.359ex",height:"2.69ex",role:"img",focusable:"false",viewBox:"0 -893.3 6788.6 1189","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.598ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 6010.1 1044.2","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.114ex",height:"3.023ex",role:"img",focusable:"false",viewBox:"0 -983.2 4912.3 1336","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.253ex",height:"2.819ex",role:"img",focusable:"false",viewBox:"0 -893.3 6742 1246.1","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.334ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.614ex",height:"3.686ex",role:"img",focusable:"false",viewBox:"0 -1039.8 5133.2 1629.3","aria-hidden":"true"},d1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.482ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"3.851ex",role:"img",focusable:"false",viewBox:"0 -1047.1 8968.4 1702.1","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.254ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.959ex",height:"3.238ex",role:"img",focusable:"false",viewBox:"0 -877 3517.7 1431","aria-hidden":"true"},u1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.725ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 12254.6 2499.8","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"32.233ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 14247.1 2499.8","aria-hidden":"true"},A1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},V1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""},S1={class:"jldocstring custom-block",open:""},N1={class:"jldocstring custom-block",open:""},I1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""},F1={class:"jldocstring custom-block",open:""},O1={class:"jldocstring custom-block",open:""},B1={class:"jldocstring custom-block",open:""},R1={class:"jldocstring custom-block",open:""},G1={class:"jldocstring custom-block",open:""},J1={class:"jldocstring custom-block",open:""},z1={class:"jldocstring custom-block",open:""},P1={class:"jldocstring custom-block",open:""},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.309ex",height:"1.906ex",role:"img",focusable:"false",viewBox:"0 -677 1020.6 842.6","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},$1={class:"jldocstring custom-block",open:""};function W1(Y1,e,_1,t2,e2,s2){const l=r("Badge");return o(),n("div",null,[e[262]||(e[262]=a('

Operators

All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

',2)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.Offset",href:"#IncompressibleNavierStokes.Offset"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Offset")],-1)),e[1]||(e[1]=s()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=a('
julia
struct Offset{D}

Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

Fields

source

',5))]),t("details",d,[t("summary",null,[e[3]||(e[3]=t("a",{id:"IncompressibleNavierStokes.Dfield!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.Dfield!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield!")],-1)),e[4]||(e[4]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[9]||(e[9]=a('
julia
Dfield!(d, G, p, setup; ϵ) -> Any
',1)),t("p",null,[e[7]||(e[7]=s("Compute the ")),t("mjx-container",m,[(o(),n("svg",h,e[5]||(e[5]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),e[6]||(e[6]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),e[8]||(e[8]=s("-field (in-place version)."))]),e[10]||(e[10]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1389",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",g,[t("summary",null,[e[11]||(e[11]=t("a",{id:"IncompressibleNavierStokes.Dfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Dfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield")],-1)),e[12]||(e[12]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[21]||(e[21]=a('
julia
Dfield(p, setup; kwargs...) -> Any
',1)),t("p",null,[e[15]||(e[15]=s("Compute the ")),t("mjx-container",u,[(o(),n("svg",k,e[13]||(e[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),e[14]||(e[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),e[16]||(e[16]=s("-field [")),e[17]||(e[17]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#LiJiajia2019"},"5",-1)),e[18]||(e[18]=s("] given by"))]),t("mjx-container",c,[(o(),n("svg",b,e[19]||(e[19]=[a('',1)]))),e[20]||(e[20]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"D"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"2"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),t("mrow",null,[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p")])]),t("mo",null,".")])],-1))]),e[22]||(e[22]=t("p",null,"Differentiable version.",-1)),e[23]||(e[23]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1374",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[e[24]||(e[24]=t("a",{id:"IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield!")],-1)),e[25]||(e[25]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=a('
julia
Qfield!(Q, u, setup) -> Any
',1)),t("p",null,[e[28]||(e[28]=s("Compute the ")),t("mjx-container",f,[(o(),n("svg",v,e[26]||(e[26]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),e[27]||(e[27]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),e[29]||(e[29]=s("-field (in-place version)."))]),e[31]||(e[31]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1440",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",x,[t("summary",null,[e[32]||(e[32]=t("a",{id:"IncompressibleNavierStokes.Qfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Qfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield")],-1)),e[33]||(e[33]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[42]||(e[42]=a('
julia
Qfield(u, setup) -> Any
',1)),t("p",null,[e[36]||(e[36]=s("Compute ")),t("mjx-container",w,[(o(),n("svg",j,e[34]||(e[34]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),e[35]||(e[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),e[37]||(e[37]=s("-field [")),e[38]||(e[38]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),e[39]||(e[39]=s("] given by"))]),t("mjx-container",H,[(o(),n("svg",L,e[40]||(e[40]=[a('',1)]))),e[41]||(e[41]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,","),t("mi",null,"β")])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),e[43]||(e[43]=t("p",null,"Differentiable version.",-1)),e[44]||(e[44]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1425",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[e[45]||(e[45]=t("a",{id:"IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce!")],-1)),e[46]||(e[46]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[47]||(e[47]=a('
julia
applybodyforce!(F, u, t, setup) -> Any

Compute body force (in-place version). Add the result to F.

source

',3))]),t("details",M,[t("summary",null,[e[48]||(e[48]=t("a",{id:"IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce")],-1)),e[49]||(e[49]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[50]||(e[50]=a('
julia
applybodyforce(u, t, setup) -> Any

Compute body force (differentiable version).

source

',3))]),t("details",A,[t("summary",null,[e[51]||(e[51]=t("a",{id:"IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure!")],-1)),e[52]||(e[52]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[53]||(e[53]=a('
julia
applypressure!(u, p, setup) -> Any

Subtract pressure gradient (in-place version).

source

',3))]),t("details",C,[t("summary",null,[e[54]||(e[54]=t("a",{id:"IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure")],-1)),e[55]||(e[55]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[56]||(e[56]=a('
julia
applypressure(u, p, setup) -> Any

Subtract pressure gradient (differentiable version).

source

',3))]),t("details",V,[t("summary",null,[e[57]||(e[57]=t("a",{id:"IncompressibleNavierStokes.avg-NTuple{4, Any}",href:"#IncompressibleNavierStokes.avg-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.avg")],-1)),e[58]||(e[58]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[59]||(e[59]=a('
julia
avg(ϕ, Δ, I, α) -> Any

Average scalar field ϕ in the α-direction.

source

',3))]),t("details",Z,[t("summary",null,[e[60]||(e[60]=t("a",{id:"IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection!")],-1)),e[61]||(e[61]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[62]||(e[62]=a('
julia
convection!(F, u, setup) -> Any

Compute convective term (in-place version). Add the result to F.

source

',3))]),t("details",S,[t("summary",null,[e[63]||(e[63]=t("a",{id:"IncompressibleNavierStokes.convection-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.convection-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection")],-1)),e[64]||(e[64]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[65]||(e[65]=a('
julia
convection(u, setup) -> Any

Compute convective term (differentiable version).

source

',3))]),t("details",N,[t("summary",null,[e[66]||(e[66]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp!")],-1)),e[67]||(e[67]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[68]||(e[68]=a('
julia
convection_diffusion_temp!(c, u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

source

',3))]),t("details",I,[t("summary",null,[e[69]||(e[69]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp")],-1)),e[70]||(e[70]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[71]||(e[71]=a('
julia
convection_diffusion_temp(u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (differentiable version).

source

',3))]),t("details",D,[t("summary",null,[e[72]||(e[72]=t("a",{id:"IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convectiondiffusion!")],-1)),e[73]||(e[73]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[74]||(e[74]=a('
julia
convectiondiffusion!(F, u, setup) -> Any

Compute convective and diffusive terms (in-place version). Add the result to F.

source

',3))]),t("details",F,[t("summary",null,[e[75]||(e[75]=t("a",{id:"IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion!")],-1)),e[76]||(e[76]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[77]||(e[77]=a('
julia
diffusion!(F, u, setup; use_viscosity) -> Any

Compute diffusive term (in-place version). Add the result to F.

Keyword arguments:

  • with_viscosity = true: Include viscosity in the operator.

source

',5))]),t("details",O,[t("summary",null,[e[78]||(e[78]=t("a",{id:"IncompressibleNavierStokes.diffusion-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.diffusion-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion")],-1)),e[79]||(e[79]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[80]||(e[80]=a('
julia
diffusion(u, setup; kwargs...) -> Any

Compute diffusive term (differentiable version).

source

',3))]),t("details",B,[t("summary",null,[e[81]||(e[81]=t("a",{id:"IncompressibleNavierStokes.dissipation!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.dissipation!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation!")],-1)),e[82]||(e[82]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[83]||(e[83]=a('
julia
dissipation!(diss, diff, u, setup) -> Any

Compute dissipation term for the temperature equation (in-place version). Add result to diss.

source

',3))]),t("details",R,[t("summary",null,[e[84]||(e[84]=t("a",{id:"IncompressibleNavierStokes.dissipation-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation")],-1)),e[85]||(e[85]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[86]||(e[86]=a('
julia
dissipation(u, setup) -> Any

Compute dissipation term for the temperature equation (differentiable version).

source

',3))]),t("details",G,[t("summary",null,[e[87]||(e[87]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain!")],-1)),e[88]||(e[88]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[89]||(e[89]=a('
julia
dissipation_from_strain!(ϵ, u, setup) -> Any

Compute dissipation term from strain-rate tensor (in-place version).

source

',3))]),t("details",J,[t("summary",null,[e[90]||(e[90]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain")],-1)),e[91]||(e[91]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[96]||(e[96]=a('
julia
dissipation_from_strain(u, setup) -> Any
',1)),t("p",null,[e[94]||(e[94]=s("Compute dissipation term ")),t("mjx-container",z,[(o(),n("svg",P,e[92]||(e[92]=[a('',1)]))),e[93]||(e[93]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))]),e[95]||(e[95]=s(" from strain-rate tensor (differentiable version)."))]),e[97]||(e[97]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",X,[t("summary",null,[e[98]||(e[98]=t("a",{id:"IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence!")],-1)),e[99]||(e[99]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[100]||(e[100]=a('
julia
divergence!(div, u, setup) -> Any

Compute divergence of velocity field (in-place version).

source

',3))]),t("details",q,[t("summary",null,[e[101]||(e[101]=t("a",{id:"IncompressibleNavierStokes.divergence-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.divergence-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence")],-1)),e[102]||(e[102]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[103]||(e[103]=a('
julia
divergence(u, setup) -> Any

Compute divergence of velocity field (differentiable version).

source

',3))]),t("details",K,[t("summary",null,[e[104]||(e[104]=t("a",{id:"IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divoftensor!")],-1)),e[105]||(e[105]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[106]||(e[106]=a('
julia
divoftensor!(s, σ, setup) -> Any

Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

source

',3))]),t("details",U,[t("summary",null,[e[107]||(e[107]=t("a",{id:"IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field!")],-1)),e[108]||(e[108]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[113]||(e[113]=a('
julia
eig2field!(λ, u, setup) -> Any
',1)),t("p",null,[e[111]||(e[111]=s("Compute the second eigenvalue of ")),t("mjx-container",$,[(o(),n("svg",W,e[109]||(e[109]=[a('',1)]))),e[110]||(e[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),e[112]||(e[112]=s(" (in-place version)."))]),e[114]||(e[114]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1470",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Y,[t("summary",null,[e[115]||(e[115]=t("a",{id:"IncompressibleNavierStokes.eig2field-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.eig2field-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field")],-1)),e[116]||(e[116]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[123]||(e[123]=a('
julia
eig2field(u, setup) -> Any
',1)),t("p",null,[e[119]||(e[119]=s("Compute the second eigenvalue of ")),t("mjx-container",_,[(o(),n("svg",t1,e[117]||(e[117]=[a('',1)]))),e[118]||(e[118]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),e[120]||(e[120]=s(", as proposed by Jeong and Hussain [")),e[121]||(e[121]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),e[122]||(e[122]=s("]."))]),e[124]||(e[124]=t("p",null,"Differentiable version.",-1)),e[125]||(e[125]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1462",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",e1,[t("summary",null,[e[126]||(e[126]=t("a",{id:"IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_scale_numbers")],-1)),e[127]||(e[127]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[149]||(e[149]=a(`
julia
get_scale_numbers(
-    u,
-    setup
-) -> NamedTuple{(:uavg, , , , :Reλ, :L, ), <:Tuple{Any, Any, Any, Any, Any, Nothing, Nothing}}

Get the following dimensional scale numbers [7]:

`,2)),t("ul",null,[t("li",null,[t("p",null,[e[130]||(e[130]=s("Velocity ")),t("mjx-container",s1,[(o(),n("svg",a1,e[128]||(e[128]=[a('',1)]))),e[129]||(e[129]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")]),t("mo",null,"="),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msup",null,[t("mo",{fence:"false",stretchy:"false"},"⟩"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])])])],-1))])])]),t("li",null,[t("p",null,[e[133]||(e[133]=s("Dissipation rate ")),t("mjx-container",l1,[(o(),n("svg",i1,e[131]||(e[131]=[a('',1)]))),e[132]||(e[132]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ϵ"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))])])]),t("li",null,[t("p",null,[e[136]||(e[136]=s("Kolmolgorov length scale ")),t("mjx-container",n1,[(o(),n("svg",o1,e[134]||(e[134]=[a('',1)]))),e[135]||(e[135]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("msup",null,[t("mi",null,"ν"),t("mn",null,"3")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"4")])])])],-1))])])]),t("li",null,[t("p",null,[e[139]||(e[139]=s("Taylor length scale ")),t("mjx-container",Q1,[(o(),n("svg",r1,e[137]||(e[137]=[a('',1)]))),e[138]||(e[138]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("mrow",null,[t("mn",null,"5"),t("mi",null,"ν")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])]),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])],-1))])])]),t("li",null,[t("p",null,[e[142]||(e[142]=s("Taylor-scale Reynolds number ")),t("mjx-container",T1,[(o(),n("svg",p1,e[140]||(e[140]=[a('',1)]))),e[141]||(e[141]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("msub",null,[t("mi",null,"e"),t("mi",null,"λ")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"λ"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])]),t("mrow",null,[t("msqrt",null,[t("mn",null,"3")]),t("mi",null,"ν")])])])],-1))])])]),t("li",null,[t("p",null,[e[145]||(e[145]=s("Integral length scale ")),t("mjx-container",d1,[(o(),n("svg",m1,e[143]||(e[143]=[a('',1)]))),e[144]||(e[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"L"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"π")]),t("mrow",null,[t("mn",null,"2"),t("msubsup",null,[t("mi",null,"u"),t("mtext",null,"avg"),t("mn",null,"2")])])]),t("msubsup",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mn",null,"0"),t("mi",{mathvariant:"normal"},"∞")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"E"),t("mo",{stretchy:"false"},"("),t("mi",null,"k"),t("mo",{stretchy:"false"},")")]),t("mi",null,"k")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"k")])],-1))])])]),t("li",null,[t("p",null,[e[148]||(e[148]=s("Large-eddy turnover time ")),t("mjx-container",h1,[(o(),n("svg",g1,e[146]||(e[146]=[a('',1)]))),e[147]||(e[147]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ"),t("mo",null,"="),t("mfrac",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])])],-1))])])])]),e[150]||(e[150]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1558",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",u1,[t("summary",null,[e[151]||(e[151]=t("a",{id:"IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity!")],-1)),e[152]||(e[152]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[153]||(e[153]=a('
julia
gravity!(F, temp, setup) -> Any

Compute gravity term (in-place version). add the result to F.

source

',3))]),t("details",k1,[t("summary",null,[e[154]||(e[154]=t("a",{id:"IncompressibleNavierStokes.gravity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.gravity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity")],-1)),e[155]||(e[155]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[156]||(e[156]=a('
julia
gravity(temp, setup) -> Any

Compute gravity term (differentiable version).

source

',3))]),t("details",c1,[t("summary",null,[e[157]||(e[157]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p!")],-1)),e[158]||(e[158]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[159]||(e[159]=a('
julia
interpolate_u_p!(up, u, setup) -> Any

Interpolate velocity to pressure points (in-place version).

source

',3))]),t("details",b1,[t("summary",null,[e[160]||(e[160]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p")],-1)),e[161]||(e[161]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[162]||(e[162]=a('
julia
interpolate_u_p(u, setup) -> Any

Interpolate velocity to pressure points (differentiable version).

source

',3))]),t("details",y1,[t("summary",null,[e[163]||(e[163]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p!")],-1)),e[164]||(e[164]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[165]||(e[165]=a('
julia
interpolate_ω_p!(ωp, ω, setup) -> Any

Interpolate vorticity to pressure points (in-place version).

source

',3))]),t("details",f1,[t("summary",null,[e[166]||(e[166]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p")],-1)),e[167]||(e[167]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[168]||(e[168]=a('
julia
interpolate_ω_p(ω, setup) -> Any

Interpolate vorticity to pressure points (differentiable version).

source

',3))]),t("details",v1,[t("summary",null,[e[169]||(e[169]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy!")],-1)),e[170]||(e[170]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[171]||(e[171]=a('
julia
kinetic_energy!(ke, u, setup; interpolate_first) -> Any

Compute kinetic energy field (in-place version).

source

',3))]),t("details",x1,[t("summary",null,[e[172]||(e[172]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy")],-1)),e[173]||(e[173]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[184]||(e[184]=a('
julia
kinetic_energy(u, setup; kwargs...) -> Any
',1)),t("p",null,[e[176]||(e[176]=s("Compute kinetic energy field ")),t("mjx-container",w1,[(o(),n("svg",j1,e[174]||(e[174]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),e[175]||(e[175]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k")])],-1))]),e[177]||(e[177]=s(" (in-place version). If ")),e[178]||(e[178]=t("code",null,"interpolate_first",-1)),e[179]||(e[179]=s(" is true, it is given by"))]),t("mjx-container",H1,[(o(),n("svg",L1,e[180]||(e[180]=[a('',1)]))),e[181]||(e[181]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"8")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,".")])],-1))]),e[185]||(e[185]=t("p",null,"Otherwise, it is given by",-1)),t("mjx-container",E1,[(o(),n("svg",M1,e[182]||(e[182]=[a('',1)]))),e[183]||(e[183]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"4")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),e[186]||(e[186]=t("p",null,[s("as in ["),t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2023"},"8"),s("].")],-1)),e[187]||(e[187]=t("p",null,"Differentiable version.",-1)),e[188]||(e[188]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1491",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",A1,[t("summary",null,[e[189]||(e[189]=t("a",{id:"IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian!")],-1)),e[190]||(e[190]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[191]||(e[191]=a('
julia
laplacian!(L, p, setup) -> Any

Compute Laplacian of pressure field (in-place version).

source

',3))]),t("details",C1,[t("summary",null,[e[192]||(e[192]=t("a",{id:"IncompressibleNavierStokes.laplacian-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.laplacian-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian")],-1)),e[193]||(e[193]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[194]||(e[194]=a('
julia
laplacian(p, setup) -> Any

Compute Laplacian of pressure field (differentiable version).

source

',3))]),t("details",V1,[t("summary",null,[e[195]||(e[195]=t("a",{id:"IncompressibleNavierStokes.momentum!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.momentum!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum!")],-1)),e[196]||(e[196]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[197]||(e[197]=a('
julia
momentum!(F, u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (in-place version).

source

',3))]),t("details",Z1,[t("summary",null,[e[198]||(e[198]=t("a",{id:"IncompressibleNavierStokes.momentum-NTuple{4, Any}",href:"#IncompressibleNavierStokes.momentum-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum")],-1)),e[199]||(e[199]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[200]||(e[200]=a('
julia
momentum(u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (differentiable version).

source

',3))]),t("details",S1,[t("summary",null,[e[201]||(e[201]=t("a",{id:"IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient!")],-1)),e[202]||(e[202]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[203]||(e[203]=a('
julia
pressuregradient!(G, p, setup) -> Any

Compute pressure gradient (in-place version).

source

',3))]),t("details",N1,[t("summary",null,[e[204]||(e[204]=t("a",{id:"IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient")],-1)),e[205]||(e[205]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[206]||(e[206]=a('
julia
pressuregradient(p, setup) -> Any

Compute pressure gradient (differentiable version).

source

',3))]),t("details",I1,[t("summary",null,[e[207]||(e[207]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume!")],-1)),e[208]||(e[208]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[209]||(e[209]=a('
julia
scalewithvolume!(p, setup) -> Any

Scale scalar field with volume sizes (in-place version).

source

',3))]),t("details",D1,[t("summary",null,[e[210]||(e[210]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume")],-1)),e[211]||(e[211]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[212]||(e[212]=a('
julia
scalewithvolume(p, setup) -> Any

Scale scalar field p with volume sizes (differentiable version).

source

',3))]),t("details",F1,[t("summary",null,[e[213]||(e[213]=t("a",{id:"IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}",href:"#IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagorinsky_closure")],-1)),e[214]||(e[214]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[215]||(e[215]=a(`
julia
smagorinsky_closure(
-    setup
-) -> IncompressibleNavierStokes.var"#closure#188"

Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

source

`,3))]),t("details",O1,[t("summary",null,[e[216]||(e[216]=t("a",{id:"IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagtensor!")],-1)),e[217]||(e[217]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[218]||(e[218]=a('
julia
smagtensor!(σ, u, θ, setup) -> Any

Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

source

',3))]),t("details",B1,[t("summary",null,[e[219]||(e[219]=t("a",{id:"IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.total_kinetic_energy")],-1)),e[220]||(e[220]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[221]||(e[221]=a('
julia
total_kinetic_energy(u, setup; kwargs...) -> Any

Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

source

',3))]),t("details",R1,[t("summary",null,[e[222]||(e[222]=t("a",{id:"IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}",href:"#IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.unit_cartesian_indices")],-1)),e[223]||(e[223]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[224]||(e[224]=a('
julia
unit_cartesian_indices(D) -> Any

Get tuple of all unit vectors as Cartesian indices.

source

',3))]),t("details",G1,[t("summary",null,[e[225]||(e[225]=t("a",{id:"IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity!")],-1)),e[226]||(e[226]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[227]||(e[227]=a('
julia
vorticity!(ω, u, setup) -> Any

Compute vorticity field (in-place version).

source

',3))]),t("details",J1,[t("summary",null,[e[228]||(e[228]=t("a",{id:"IncompressibleNavierStokes.vorticity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.vorticity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity")],-1)),e[229]||(e[229]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[230]||(e[230]=a('
julia
vorticity(u, setup) -> Any

Compute vorticity field (differentiable version).

source

',3))]),t("details",z1,[t("summary",null,[e[231]||(e[231]=t("a",{id:"IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.lastdimcontract")],-1)),e[232]||(e[232]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[233]||(e[233]=a('
julia
lastdimcontract(a, b, setup) -> Any

Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

source

',3))]),t("details",P1,[t("summary",null,[e[234]||(e[234]=t("a",{id:"IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis!")],-1)),e[235]||(e[235]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[257]||(e[257]=a('
julia
tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}
',1)),t("p",null,[e[240]||(e[240]=s("Compute symmetry tensor basis ")),e[241]||(e[241]=t("code",null,"B[1]",-1)),e[242]||(e[242]=s("-")),e[243]||(e[243]=t("code",null,"B[11]",-1)),e[244]||(e[244]=s(" and invariants ")),e[245]||(e[245]=t("code",null,"V[1]",-1)),e[246]||(e[246]=s("-")),e[247]||(e[247]=t("code",null,"V[5]",-1)),e[248]||(e[248]=s(", as specified in [")),e[249]||(e[249]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Silvis2017"},"9",-1)),e[250]||(e[250]=s("] in equations (9) and (11). Note that ")),e[251]||(e[251]=t("code",null,"B[1]",-1)),e[252]||(e[252]=s(" corresponds to ")),t("mjx-container",X1,[(o(),n("svg",q1,e[236]||(e[236]=[a('',1)]))),e[237]||(e[237]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mn",null,"0")])])],-1))]),e[253]||(e[253]=s(" in the paper, and ")),e[254]||(e[254]=t("code",null,"V",-1)),e[255]||(e[255]=s(" to ")),t("mjx-container",K1,[(o(),n("svg",U1,e[238]||(e[238]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),e[239]||(e[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"I")])],-1))]),e[256]||(e[256]=s("."))]),e[258]||(e[258]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/tensorbasis.jl#L16",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$1,[t("summary",null,[e[259]||(e[259]=t("a",{id:"IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis")],-1)),e[260]||(e[260]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[261]||(e[261]=a('
julia
tensorbasis(u, setup) -> Tuple{Any, Any}

Compute symmetry tensor basis (differentiable version).

source

',3))])])}const i2=Q(T,[["render",W1]]);export{l2 as __pageData,i2 as default}; diff --git a/previews/PR126/assets/manual_operators.md.C-RXRSw7.lean.js b/previews/PR126/assets/manual_operators.md.C-RXRSw7.lean.js deleted file mode 100644 index 0851409b..00000000 --- a/previews/PR126/assets/manual_operators.md.C-RXRSw7.lean.js +++ /dev/null @@ -1,6 +0,0 @@ -import{_ as Q,c as n,a5 as a,j as t,a as s,G as i,B as r,o}from"./chunks/framework.BSoZtefh.js";const l2=JSON.parse('{"title":"Operators","description":"","frontmatter":{},"headers":[],"relativePath":"manual/operators.md","filePath":"manual/operators.md","lastUpdated":null}'),T={name:"manual/operators.md"},p={class:"jldocstring custom-block",open:""},d={class:"jldocstring custom-block",open:""},m={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.068ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.927ex",height:"5.369ex",role:"img",focusable:"false",viewBox:"0 -1459 5271.6 2372.9","aria-hidden":"true"},y={class:"jldocstring custom-block",open:""},f={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},x={class:"jldocstring custom-block",open:""},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.79ex",height:"2.032ex",role:"img",focusable:"false",viewBox:"0 -704 791 898","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.907ex",height:"6.539ex",role:"img",focusable:"false",viewBox:"0 -1537.5 10125 2890.2","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},M={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},V={class:"jldocstring custom-block",open:""},Z={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""},N={class:"jldocstring custom-block",open:""},I={class:"jldocstring custom-block",open:""},D={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},O={class:"jldocstring custom-block",open:""},B={class:"jldocstring custom-block",open:""},R={class:"jldocstring custom-block",open:""},G={class:"jldocstring custom-block",open:""},J={class:"jldocstring custom-block",open:""},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.662ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 4270.6 1044.2","aria-hidden":"true"},X={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},K={class:"jldocstring custom-block",open:""},U={class:"jldocstring custom-block",open:""},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},Y={class:"jldocstring custom-block",open:""},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.034ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 3551.2 915.9","aria-hidden":"true"},e1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.669ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.359ex",height:"2.69ex",role:"img",focusable:"false",viewBox:"0 -893.3 6788.6 1189","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.598ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 6010.1 1044.2","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.114ex",height:"3.023ex",role:"img",focusable:"false",viewBox:"0 -983.2 4912.3 1336","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.253ex",height:"2.819ex",role:"img",focusable:"false",viewBox:"0 -893.3 6742 1246.1","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.334ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.614ex",height:"3.686ex",role:"img",focusable:"false",viewBox:"0 -1039.8 5133.2 1629.3","aria-hidden":"true"},d1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.482ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.29ex",height:"3.851ex",role:"img",focusable:"false",viewBox:"0 -1047.1 8968.4 1702.1","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.254ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.959ex",height:"3.238ex",role:"img",focusable:"false",viewBox:"0 -877 3517.7 1431","aria-hidden":"true"},u1={class:"jldocstring custom-block",open:""},k1={class:"jldocstring custom-block",open:""},c1={class:"jldocstring custom-block",open:""},b1={class:"jldocstring custom-block",open:""},y1={class:"jldocstring custom-block",open:""},f1={class:"jldocstring custom-block",open:""},v1={class:"jldocstring custom-block",open:""},x1={class:"jldocstring custom-block",open:""},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},H1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.725ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 12254.6 2499.8","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.619ex"},xmlns:"http://www.w3.org/2000/svg",width:"32.233ex",height:"5.656ex",role:"img",focusable:"false",viewBox:"0 -1342 14247.1 2499.8","aria-hidden":"true"},A1={class:"jldocstring custom-block",open:""},C1={class:"jldocstring custom-block",open:""},V1={class:"jldocstring custom-block",open:""},Z1={class:"jldocstring custom-block",open:""},S1={class:"jldocstring custom-block",open:""},N1={class:"jldocstring custom-block",open:""},I1={class:"jldocstring custom-block",open:""},D1={class:"jldocstring custom-block",open:""},F1={class:"jldocstring custom-block",open:""},O1={class:"jldocstring custom-block",open:""},B1={class:"jldocstring custom-block",open:""},R1={class:"jldocstring custom-block",open:""},G1={class:"jldocstring custom-block",open:""},J1={class:"jldocstring custom-block",open:""},z1={class:"jldocstring custom-block",open:""},P1={class:"jldocstring custom-block",open:""},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.309ex",height:"1.906ex",role:"img",focusable:"false",viewBox:"0 -677 1020.6 842.6","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},$1={class:"jldocstring custom-block",open:""};function W1(Y1,e,_1,t2,e2,s2){const l=r("Badge");return o(),n("div",null,[e[262]||(e[262]=a('

Operators

All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

',2)),t("details",p,[t("summary",null,[e[0]||(e[0]=t("a",{id:"IncompressibleNavierStokes.Offset",href:"#IncompressibleNavierStokes.Offset"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Offset")],-1)),e[1]||(e[1]=s()),i(l,{type:"info",class:"jlObjectType jlType",text:"Type"})]),e[2]||(e[2]=a('
julia
struct Offset{D}

Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

Fields

source

',5))]),t("details",d,[t("summary",null,[e[3]||(e[3]=t("a",{id:"IncompressibleNavierStokes.Dfield!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.Dfield!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield!")],-1)),e[4]||(e[4]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[9]||(e[9]=a('
julia
Dfield!(d, G, p, setup; ϵ) -> Any
',1)),t("p",null,[e[7]||(e[7]=s("Compute the ")),t("mjx-container",m,[(o(),n("svg",h,e[5]||(e[5]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),e[6]||(e[6]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),e[8]||(e[8]=s("-field (in-place version)."))]),e[10]||(e[10]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1389",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",g,[t("summary",null,[e[11]||(e[11]=t("a",{id:"IncompressibleNavierStokes.Dfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Dfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dfield")],-1)),e[12]||(e[12]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[21]||(e[21]=a('
julia
Dfield(p, setup; kwargs...) -> Any
',1)),t("p",null,[e[15]||(e[15]=s("Compute the ")),t("mjx-container",u,[(o(),n("svg",k,e[13]||(e[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),e[14]||(e[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"D")])],-1))]),e[16]||(e[16]=s("-field [")),e[17]||(e[17]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#LiJiajia2019"},"5",-1)),e[18]||(e[18]=s("] given by"))]),t("mjx-container",c,[(o(),n("svg",b,e[19]||(e[19]=[a('',1)]))),e[20]||(e[20]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"D"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"2"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),t("mi",{mathvariant:"normal"},"∇"),t("mi",null,"p"),t("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),t("mrow",null,[t("msup",null,[t("mi",{mathvariant:"normal"},"∇"),t("mn",null,"2")]),t("mi",null,"p")])]),t("mo",null,".")])],-1))]),e[22]||(e[22]=t("p",null,"Differentiable version.",-1)),e[23]||(e[23]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1374",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",y,[t("summary",null,[e[24]||(e[24]=t("a",{id:"IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.Qfield!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield!")],-1)),e[25]||(e[25]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=a('
julia
Qfield!(Q, u, setup) -> Any
',1)),t("p",null,[e[28]||(e[28]=s("Compute the ")),t("mjx-container",f,[(o(),n("svg",v,e[26]||(e[26]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),e[27]||(e[27]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),e[29]||(e[29]=s("-field (in-place version)."))]),e[31]||(e[31]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1440",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",x,[t("summary",null,[e[32]||(e[32]=t("a",{id:"IncompressibleNavierStokes.Qfield-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.Qfield-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.Qfield")],-1)),e[33]||(e[33]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[42]||(e[42]=a('
julia
Qfield(u, setup) -> Any
',1)),t("p",null,[e[36]||(e[36]=s("Compute ")),t("mjx-container",w,[(o(),n("svg",j,e[34]||(e[34]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D444",d:"M399 -80Q399 -47 400 -30T402 -11V-7L387 -11Q341 -22 303 -22Q208 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435Q740 255 592 107Q529 47 461 16L444 8V3Q444 2 449 -24T470 -66T516 -82Q551 -82 583 -60T625 -3Q631 11 638 11Q647 11 649 2Q649 -6 639 -34T611 -100T557 -165T481 -194Q399 -194 399 -87V-80ZM636 468Q636 523 621 564T580 625T530 655T477 665Q429 665 379 640Q277 591 215 464T153 216Q153 110 207 59Q231 38 236 38V46Q236 86 269 120T347 155Q372 155 390 144T417 114T429 82T435 55L448 64Q512 108 557 185T619 334T636 468ZM314 18Q362 18 404 39L403 49Q399 104 366 115Q354 117 347 117Q344 117 341 117T337 118Q317 118 296 98T274 52Q274 18 314 18Z",style:{"stroke-width":"3"}})])])],-1)]))),e[35]||(e[35]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q")])],-1))]),e[37]||(e[37]=s("-field [")),e[38]||(e[38]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),e[39]||(e[39]=s("] given by"))]),t("mjx-container",H,[(o(),n("svg",L,e[40]||(e[40]=[a('',1)]))),e[41]||(e[41]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"α"),t("mo",null,","),t("mi",null,"β")])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"α")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"β")])])]),t("mfrac",null,[t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"u"),t("mi",null,"β")])]),t("mrow",null,[t("mi",null,"∂"),t("msup",null,[t("mi",null,"x"),t("mi",null,"α")])])]),t("mo",null,".")])],-1))]),e[43]||(e[43]=t("p",null,"Differentiable version.",-1)),e[44]||(e[44]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1425",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",E,[t("summary",null,[e[45]||(e[45]=t("a",{id:"IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.applybodyforce!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce!")],-1)),e[46]||(e[46]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[47]||(e[47]=a('
julia
applybodyforce!(F, u, t, setup) -> Any

Compute body force (in-place version). Add the result to F.

source

',3))]),t("details",M,[t("summary",null,[e[48]||(e[48]=t("a",{id:"IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applybodyforce-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applybodyforce")],-1)),e[49]||(e[49]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[50]||(e[50]=a('
julia
applybodyforce(u, t, setup) -> Any

Compute body force (differentiable version).

source

',3))]),t("details",A,[t("summary",null,[e[51]||(e[51]=t("a",{id:"IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure!")],-1)),e[52]||(e[52]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[53]||(e[53]=a('
julia
applypressure!(u, p, setup) -> Any

Subtract pressure gradient (in-place version).

source

',3))]),t("details",C,[t("summary",null,[e[54]||(e[54]=t("a",{id:"IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.applypressure-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.applypressure")],-1)),e[55]||(e[55]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[56]||(e[56]=a('
julia
applypressure(u, p, setup) -> Any

Subtract pressure gradient (differentiable version).

source

',3))]),t("details",V,[t("summary",null,[e[57]||(e[57]=t("a",{id:"IncompressibleNavierStokes.avg-NTuple{4, Any}",href:"#IncompressibleNavierStokes.avg-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.avg")],-1)),e[58]||(e[58]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[59]||(e[59]=a('
julia
avg(ϕ, Δ, I, α) -> Any

Average scalar field ϕ in the α-direction.

source

',3))]),t("details",Z,[t("summary",null,[e[60]||(e[60]=t("a",{id:"IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection!")],-1)),e[61]||(e[61]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[62]||(e[62]=a('
julia
convection!(F, u, setup) -> Any

Compute convective term (in-place version). Add the result to F.

source

',3))]),t("details",S,[t("summary",null,[e[63]||(e[63]=t("a",{id:"IncompressibleNavierStokes.convection-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.convection-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection")],-1)),e[64]||(e[64]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[65]||(e[65]=a('
julia
convection(u, setup) -> Any

Compute convective term (differentiable version).

source

',3))]),t("details",N,[t("summary",null,[e[66]||(e[66]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp!")],-1)),e[67]||(e[67]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[68]||(e[68]=a('
julia
convection_diffusion_temp!(c, u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

source

',3))]),t("details",I,[t("summary",null,[e[69]||(e[69]=t("a",{id:"IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convection_diffusion_temp-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convection_diffusion_temp")],-1)),e[70]||(e[70]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[71]||(e[71]=a('
julia
convection_diffusion_temp(u, temp, setup) -> Any

Compute convection-diffusion term for the temperature equation. (differentiable version).

source

',3))]),t("details",D,[t("summary",null,[e[72]||(e[72]=t("a",{id:"IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.convectiondiffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.convectiondiffusion!")],-1)),e[73]||(e[73]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[74]||(e[74]=a('
julia
convectiondiffusion!(F, u, setup) -> Any

Compute convective and diffusive terms (in-place version). Add the result to F.

source

',3))]),t("details",F,[t("summary",null,[e[75]||(e[75]=t("a",{id:"IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.diffusion!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion!")],-1)),e[76]||(e[76]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[77]||(e[77]=a('
julia
diffusion!(F, u, setup; use_viscosity) -> Any

Compute diffusive term (in-place version). Add the result to F.

Keyword arguments:

  • with_viscosity = true: Include viscosity in the operator.

source

',5))]),t("details",O,[t("summary",null,[e[78]||(e[78]=t("a",{id:"IncompressibleNavierStokes.diffusion-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.diffusion-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.diffusion")],-1)),e[79]||(e[79]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[80]||(e[80]=a('
julia
diffusion(u, setup; kwargs...) -> Any

Compute diffusive term (differentiable version).

source

',3))]),t("details",B,[t("summary",null,[e[81]||(e[81]=t("a",{id:"IncompressibleNavierStokes.dissipation!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.dissipation!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation!")],-1)),e[82]||(e[82]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[83]||(e[83]=a('
julia
dissipation!(diss, diff, u, setup) -> Any

Compute dissipation term for the temperature equation (in-place version). Add result to diss.

source

',3))]),t("details",R,[t("summary",null,[e[84]||(e[84]=t("a",{id:"IncompressibleNavierStokes.dissipation-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation")],-1)),e[85]||(e[85]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[86]||(e[86]=a('
julia
dissipation(u, setup) -> Any

Compute dissipation term for the temperature equation (differentiable version).

source

',3))]),t("details",G,[t("summary",null,[e[87]||(e[87]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain!")],-1)),e[88]||(e[88]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[89]||(e[89]=a('
julia
dissipation_from_strain!(ϵ, u, setup) -> Any

Compute dissipation term from strain-rate tensor (in-place version).

source

',3))]),t("details",J,[t("summary",null,[e[90]||(e[90]=t("a",{id:"IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.dissipation_from_strain-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.dissipation_from_strain")],-1)),e[91]||(e[91]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[96]||(e[96]=a('
julia
dissipation_from_strain(u, setup) -> Any
',1)),t("p",null,[e[94]||(e[94]=s("Compute dissipation term ")),t("mjx-container",z,[(o(),n("svg",P,e[92]||(e[92]=[a('',1)]))),e[93]||(e[93]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))]),e[95]||(e[95]=s(" from strain-rate tensor (differentiable version)."))]),e[97]||(e[97]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L810",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",X,[t("summary",null,[e[98]||(e[98]=t("a",{id:"IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divergence!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence!")],-1)),e[99]||(e[99]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[100]||(e[100]=a('
julia
divergence!(div, u, setup) -> Any

Compute divergence of velocity field (in-place version).

source

',3))]),t("details",q,[t("summary",null,[e[101]||(e[101]=t("a",{id:"IncompressibleNavierStokes.divergence-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.divergence-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divergence")],-1)),e[102]||(e[102]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[103]||(e[103]=a('
julia
divergence(u, setup) -> Any

Compute divergence of velocity field (differentiable version).

source

',3))]),t("details",K,[t("summary",null,[e[104]||(e[104]=t("a",{id:"IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.divoftensor!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.divoftensor!")],-1)),e[105]||(e[105]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[106]||(e[106]=a('
julia
divoftensor!(s, σ, setup) -> Any

Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

source

',3))]),t("details",U,[t("summary",null,[e[107]||(e[107]=t("a",{id:"IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.eig2field!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field!")],-1)),e[108]||(e[108]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[113]||(e[113]=a('
julia
eig2field!(λ, u, setup) -> Any
',1)),t("p",null,[e[111]||(e[111]=s("Compute the second eigenvalue of ")),t("mjx-container",$,[(o(),n("svg",W,e[109]||(e[109]=[a('',1)]))),e[110]||(e[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),e[112]||(e[112]=s(" (in-place version)."))]),e[114]||(e[114]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1470",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",Y,[t("summary",null,[e[115]||(e[115]=t("a",{id:"IncompressibleNavierStokes.eig2field-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.eig2field-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.eig2field")],-1)),e[116]||(e[116]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[123]||(e[123]=a('
julia
eig2field(u, setup) -> Any
',1)),t("p",null,[e[119]||(e[119]=s("Compute the second eigenvalue of ")),t("mjx-container",_,[(o(),n("svg",t1,e[117]||(e[117]=[a('',1)]))),e[118]||(e[118]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"S"),t("mn",null,"2")]),t("mo",null,"+"),t("msup",null,[t("mi",null,"R"),t("mn",null,"2")])])],-1))]),e[120]||(e[120]=s(", as proposed by Jeong and Hussain [")),e[121]||(e[121]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Jeong1995"},"6",-1)),e[122]||(e[122]=s("]."))]),e[124]||(e[124]=t("p",null,"Differentiable version.",-1)),e[125]||(e[125]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1462",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",e1,[t("summary",null,[e[126]||(e[126]=t("a",{id:"IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.get_scale_numbers-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_scale_numbers")],-1)),e[127]||(e[127]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[149]||(e[149]=a(`
julia
get_scale_numbers(
-    u,
-    setup
-) -> NamedTuple{(:uavg, , , , :Reλ, :L, ), <:Tuple{Any, Any, Any, Any, Any, Nothing, Nothing}}

Get the following dimensional scale numbers [7]:

`,2)),t("ul",null,[t("li",null,[t("p",null,[e[130]||(e[130]=s("Velocity ")),t("mjx-container",s1,[(o(),n("svg",a1,e[128]||(e[128]=[a('',1)]))),e[129]||(e[129]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")]),t("mo",null,"="),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msub",null,[t("mi",null,"u"),t("mi",null,"i")]),t("msup",null,[t("mo",{fence:"false",stretchy:"false"},"⟩"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])])])],-1))])])]),t("li",null,[t("p",null,[e[133]||(e[133]=s("Dissipation rate ")),t("mjx-container",l1,[(o(),n("svg",i1,e[131]||(e[131]=[a('',1)]))),e[132]||(e[132]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"ϵ"),t("mo",null,"="),t("mn",null,"2"),t("mi",null,"ν"),t("mo",{fence:"false",stretchy:"false"},"⟨"),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"S"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("mo",{fence:"false",stretchy:"false"},"⟩")])],-1))])])]),t("li",null,[t("p",null,[e[136]||(e[136]=s("Kolmolgorov length scale ")),t("mjx-container",n1,[(o(),n("svg",o1,e[134]||(e[134]=[a('',1)]))),e[135]||(e[135]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"η"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("msup",null,[t("mi",null,"ν"),t("mn",null,"3")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"4")])])])],-1))])])]),t("li",null,[t("p",null,[e[139]||(e[139]=s("Taylor length scale ")),t("mjx-container",Q1,[(o(),n("svg",r1,e[137]||(e[137]=[a('',1)]))),e[138]||(e[138]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"λ"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mfrac",null,[t("mrow",null,[t("mn",null,"5"),t("mi",null,"ν")]),t("mi",null,"ϵ")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mn",null,"1"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mn",null,"2")])]),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])],-1))])])]),t("li",null,[t("p",null,[e[142]||(e[142]=s("Taylor-scale Reynolds number ")),t("mjx-container",T1,[(o(),n("svg",p1,e[140]||(e[140]=[a('',1)]))),e[141]||(e[141]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"R"),t("msub",null,[t("mi",null,"e"),t("mi",null,"λ")]),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"λ"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])]),t("mrow",null,[t("msqrt",null,[t("mn",null,"3")]),t("mi",null,"ν")])])])],-1))])])]),t("li",null,[t("p",null,[e[145]||(e[145]=s("Integral length scale ")),t("mjx-container",d1,[(o(),n("svg",m1,e[143]||(e[143]=[a('',1)]))),e[144]||(e[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"L"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mn",null,"3"),t("mi",null,"π")]),t("mrow",null,[t("mn",null,"2"),t("msubsup",null,[t("mi",null,"u"),t("mtext",null,"avg"),t("mn",null,"2")])])]),t("msubsup",null,[t("mo",{"data-mjx-texclass":"OP"},"∫"),t("mn",null,"0"),t("mi",{mathvariant:"normal"},"∞")]),t("mfrac",null,[t("mrow",null,[t("mi",null,"E"),t("mo",{stretchy:"false"},"("),t("mi",null,"k"),t("mo",{stretchy:"false"},")")]),t("mi",null,"k")]),t("mstyle",{scriptlevel:"0"},[t("mspace",{width:"0.167em"})]),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"k")])],-1))])])]),t("li",null,[t("p",null,[e[148]||(e[148]=s("Large-eddy turnover time ")),t("mjx-container",h1,[(o(),n("svg",g1,e[146]||(e[146]=[a('',1)]))),e[147]||(e[147]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"τ"),t("mo",null,"="),t("mfrac",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"u"),t("mtext",null,"avg")])])])],-1))])])])]),e[150]||(e[150]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1558",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",u1,[t("summary",null,[e[151]||(e[151]=t("a",{id:"IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.gravity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity!")],-1)),e[152]||(e[152]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[153]||(e[153]=a('
julia
gravity!(F, temp, setup) -> Any

Compute gravity term (in-place version). add the result to F.

source

',3))]),t("details",k1,[t("summary",null,[e[154]||(e[154]=t("a",{id:"IncompressibleNavierStokes.gravity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.gravity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.gravity")],-1)),e[155]||(e[155]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[156]||(e[156]=a('
julia
gravity(temp, setup) -> Any

Compute gravity term (differentiable version).

source

',3))]),t("details",c1,[t("summary",null,[e[157]||(e[157]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p!")],-1)),e[158]||(e[158]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[159]||(e[159]=a('
julia
interpolate_u_p!(up, u, setup) -> Any

Interpolate velocity to pressure points (in-place version).

source

',3))]),t("details",b1,[t("summary",null,[e[160]||(e[160]=t("a",{id:"IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_u_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_u_p")],-1)),e[161]||(e[161]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[162]||(e[162]=a('
julia
interpolate_u_p(u, setup) -> Any

Interpolate velocity to pressure points (differentiable version).

source

',3))]),t("details",y1,[t("summary",null,[e[163]||(e[163]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p!")],-1)),e[164]||(e[164]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[165]||(e[165]=a('
julia
interpolate_ω_p!(ωp, ω, setup) -> Any

Interpolate vorticity to pressure points (in-place version).

source

',3))]),t("details",f1,[t("summary",null,[e[166]||(e[166]=t("a",{id:"IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.interpolate_ω_p-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.interpolate_ω_p")],-1)),e[167]||(e[167]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[168]||(e[168]=a('
julia
interpolate_ω_p(ω, setup) -> Any

Interpolate vorticity to pressure points (differentiable version).

source

',3))]),t("details",v1,[t("summary",null,[e[169]||(e[169]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy!")],-1)),e[170]||(e[170]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[171]||(e[171]=a('
julia
kinetic_energy!(ke, u, setup; interpolate_first) -> Any

Compute kinetic energy field (in-place version).

source

',3))]),t("details",x1,[t("summary",null,[e[172]||(e[172]=t("a",{id:"IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.kinetic_energy")],-1)),e[173]||(e[173]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[184]||(e[184]=a('
julia
kinetic_energy(u, setup; kwargs...) -> Any
',1)),t("p",null,[e[176]||(e[176]=s("Compute kinetic energy field ")),t("mjx-container",w1,[(o(),n("svg",j1,e[174]||(e[174]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),e[175]||(e[175]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"k")])],-1))]),e[177]||(e[177]=s(" (in-place version). If ")),e[178]||(e[178]=t("code",null,"interpolate_first",-1)),e[179]||(e[179]=s(" is true, it is given by"))]),t("mjx-container",H1,[(o(),n("svg",L1,e[180]||(e[180]=[a('',1)]))),e[181]||(e[181]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"8")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("mo",null,"+"),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,".")])],-1))]),e[185]||(e[185]=t("p",null,"Otherwise, it is given by",-1)),t("mjx-container",E1,[(o(),n("svg",M1,e[182]||(e[182]=[a('',1)]))),e[183]||(e[183]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("msub",null,[t("mi",null,"k"),t("mi",null,"I")]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"4")]),t("munder",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mi",null,"α")]),t("mo",{stretchy:"false"},"("),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"+"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("msubsup",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"I"),t("mo",null,"−"),t("msub",null,[t("mi",null,"h"),t("mi",null,"α")])]),t("mi",null,"α")]),t("msup",null,[t("mo",{stretchy:"false"},")"),t("mn",null,"2")]),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),e[186]||(e[186]=t("p",null,[s("as in ["),t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2023"},"8"),s("].")],-1)),e[187]||(e[187]=t("p",null,"Differentiable version.",-1)),e[188]||(e[188]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/operators.jl#L1491",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",A1,[t("summary",null,[e[189]||(e[189]=t("a",{id:"IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.laplacian!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian!")],-1)),e[190]||(e[190]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[191]||(e[191]=a('
julia
laplacian!(L, p, setup) -> Any

Compute Laplacian of pressure field (in-place version).

source

',3))]),t("details",C1,[t("summary",null,[e[192]||(e[192]=t("a",{id:"IncompressibleNavierStokes.laplacian-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.laplacian-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.laplacian")],-1)),e[193]||(e[193]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[194]||(e[194]=a('
julia
laplacian(p, setup) -> Any

Compute Laplacian of pressure field (differentiable version).

source

',3))]),t("details",V1,[t("summary",null,[e[195]||(e[195]=t("a",{id:"IncompressibleNavierStokes.momentum!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.momentum!-NTuple{5, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum!")],-1)),e[196]||(e[196]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[197]||(e[197]=a('
julia
momentum!(F, u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (in-place version).

source

',3))]),t("details",Z1,[t("summary",null,[e[198]||(e[198]=t("a",{id:"IncompressibleNavierStokes.momentum-NTuple{4, Any}",href:"#IncompressibleNavierStokes.momentum-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.momentum")],-1)),e[199]||(e[199]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[200]||(e[200]=a('
julia
momentum(u, temp, t, setup) -> Any

Right hand side of momentum equations, excluding pressure gradient (differentiable version).

source

',3))]),t("details",S1,[t("summary",null,[e[201]||(e[201]=t("a",{id:"IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient!")],-1)),e[202]||(e[202]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[203]||(e[203]=a('
julia
pressuregradient!(G, p, setup) -> Any

Compute pressure gradient (in-place version).

source

',3))]),t("details",N1,[t("summary",null,[e[204]||(e[204]=t("a",{id:"IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.pressuregradient-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressuregradient")],-1)),e[205]||(e[205]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[206]||(e[206]=a('
julia
pressuregradient(p, setup) -> Any

Compute pressure gradient (differentiable version).

source

',3))]),t("details",I1,[t("summary",null,[e[207]||(e[207]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume!-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume!")],-1)),e[208]||(e[208]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[209]||(e[209]=a('
julia
scalewithvolume!(p, setup) -> Any

Scale scalar field with volume sizes (in-place version).

source

',3))]),t("details",D1,[t("summary",null,[e[210]||(e[210]=t("a",{id:"IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.scalewithvolume-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalewithvolume")],-1)),e[211]||(e[211]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[212]||(e[212]=a('
julia
scalewithvolume(p, setup) -> Any

Scale scalar field p with volume sizes (differentiable version).

source

',3))]),t("details",F1,[t("summary",null,[e[213]||(e[213]=t("a",{id:"IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}",href:"#IncompressibleNavierStokes.smagorinsky_closure-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagorinsky_closure")],-1)),e[214]||(e[214]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[215]||(e[215]=a(`
julia
smagorinsky_closure(
-    setup
-) -> IncompressibleNavierStokes.var"#closure#188"

Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

source

`,3))]),t("details",O1,[t("summary",null,[e[216]||(e[216]=t("a",{id:"IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.smagtensor!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.smagtensor!")],-1)),e[217]||(e[217]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[218]||(e[218]=a('
julia
smagtensor!(σ, u, θ, setup) -> Any

Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

source

',3))]),t("details",B1,[t("summary",null,[e[219]||(e[219]=t("a",{id:"IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.total_kinetic_energy-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.total_kinetic_energy")],-1)),e[220]||(e[220]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[221]||(e[221]=a('
julia
total_kinetic_energy(u, setup; kwargs...) -> Any

Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

source

',3))]),t("details",R1,[t("summary",null,[e[222]||(e[222]=t("a",{id:"IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}",href:"#IncompressibleNavierStokes.unit_cartesian_indices-Tuple{Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.unit_cartesian_indices")],-1)),e[223]||(e[223]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[224]||(e[224]=a('
julia
unit_cartesian_indices(D) -> Any

Get tuple of all unit vectors as Cartesian indices.

source

',3))]),t("details",G1,[t("summary",null,[e[225]||(e[225]=t("a",{id:"IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.vorticity!-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity!")],-1)),e[226]||(e[226]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[227]||(e[227]=a('
julia
vorticity!(ω, u, setup) -> Any

Compute vorticity field (in-place version).

source

',3))]),t("details",J1,[t("summary",null,[e[228]||(e[228]=t("a",{id:"IncompressibleNavierStokes.vorticity-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.vorticity-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.vorticity")],-1)),e[229]||(e[229]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[230]||(e[230]=a('
julia
vorticity(u, setup) -> Any

Compute vorticity field (differentiable version).

source

',3))]),t("details",z1,[t("summary",null,[e[231]||(e[231]=t("a",{id:"IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.lastdimcontract-Tuple{Any, Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.lastdimcontract")],-1)),e[232]||(e[232]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[233]||(e[233]=a('
julia
lastdimcontract(a, b, setup) -> Any

Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

source

',3))]),t("details",P1,[t("summary",null,[e[234]||(e[234]=t("a",{id:"IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.tensorbasis!-NTuple{4, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis!")],-1)),e[235]||(e[235]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[257]||(e[257]=a('
julia
tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}
',1)),t("p",null,[e[240]||(e[240]=s("Compute symmetry tensor basis ")),e[241]||(e[241]=t("code",null,"B[1]",-1)),e[242]||(e[242]=s("-")),e[243]||(e[243]=t("code",null,"B[11]",-1)),e[244]||(e[244]=s(" and invariants ")),e[245]||(e[245]=t("code",null,"V[1]",-1)),e[246]||(e[246]=s("-")),e[247]||(e[247]=t("code",null,"V[5]",-1)),e[248]||(e[248]=s(", as specified in [")),e[249]||(e[249]=t("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Silvis2017"},"9",-1)),e[250]||(e[250]=s("] in equations (9) and (11). Note that ")),e[251]||(e[251]=t("code",null,"B[1]",-1)),e[252]||(e[252]=s(" corresponds to ")),t("mjx-container",X1,[(o(),n("svg",q1,e[236]||(e[236]=[a('',1)]))),e[237]||(e[237]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"T"),t("mn",null,"0")])])],-1))]),e[253]||(e[253]=s(" in the paper, and ")),e[254]||(e[254]=t("code",null,"V",-1)),e[255]||(e[255]=s(" to ")),t("mjx-container",K1,[(o(),n("svg",U1,e[238]||(e[238]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),e[239]||(e[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"I")])],-1))]),e[256]||(e[256]=s("."))]),e[258]||(e[258]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/tensorbasis.jl#L16",target:"_blank",rel:"noreferrer"},"source")],-1))]),t("details",$1,[t("summary",null,[e[259]||(e[259]=t("a",{id:"IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.tensorbasis-Tuple{Any, Any}"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.tensorbasis")],-1)),e[260]||(e[260]=s()),i(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[261]||(e[261]=a('
julia
tensorbasis(u, setup) -> Tuple{Any, Any}

Compute symmetry tensor basis (differentiable version).

source

',3))])])}const i2=Q(T,[["render",W1]]);export{l2 as __pageData,i2 as default}; diff --git a/previews/PR126/assets/manual_precision.md.B1snHDv2.js b/previews/PR126/assets/manual_precision.md.ClrCWUTo.js similarity index 93% rename from previews/PR126/assets/manual_precision.md.B1snHDv2.js rename to previews/PR126/assets/manual_precision.md.ClrCWUTo.js index f3f50be2..588eb20f 100644 --- a/previews/PR126/assets/manual_precision.md.B1snHDv2.js +++ b/previews/PR126/assets/manual_precision.md.ClrCWUTo.js @@ -1 +1 @@ -import{_ as o,c as i,a5 as s,o as r}from"./chunks/framework.BSoZtefh.js";const f=JSON.parse('{"title":"Floating point precision","description":"","frontmatter":{},"headers":[],"relativePath":"manual/precision.md","filePath":"manual/precision.md","lastUpdated":null}'),a={name:"manual/precision.md"};function n(t,e,c,l,p,d){return r(),i("div",null,e[0]||(e[0]=[s('

Floating point precision

IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

  • Double precision (Float64)

  • Single precision (Float32)

  • Half precision (Float16)

To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

GPU precision

For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

Pressure solvers

SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

',6)]))}const m=o(a,[["render",n]]);export{f as __pageData,m as default}; +import{_ as o,c as i,a5 as s,o as r}from"./chunks/framework.CojPSOJE.js";const f=JSON.parse('{"title":"Floating point precision","description":"","frontmatter":{},"headers":[],"relativePath":"manual/precision.md","filePath":"manual/precision.md","lastUpdated":null}'),a={name:"manual/precision.md"};function n(t,e,c,l,p,d){return r(),i("div",null,e[0]||(e[0]=[s('

Floating point precision

IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

  • Double precision (Float64)

  • Single precision (Float32)

  • Half precision (Float16)

To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

GPU precision

For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

Pressure solvers

SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

',6)]))}const m=o(a,[["render",n]]);export{f as __pageData,m as default}; diff --git a/previews/PR126/assets/manual_precision.md.B1snHDv2.lean.js b/previews/PR126/assets/manual_precision.md.ClrCWUTo.lean.js similarity index 93% rename from previews/PR126/assets/manual_precision.md.B1snHDv2.lean.js rename to previews/PR126/assets/manual_precision.md.ClrCWUTo.lean.js index f3f50be2..588eb20f 100644 --- a/previews/PR126/assets/manual_precision.md.B1snHDv2.lean.js +++ b/previews/PR126/assets/manual_precision.md.ClrCWUTo.lean.js @@ -1 +1 @@ -import{_ as o,c as i,a5 as s,o as r}from"./chunks/framework.BSoZtefh.js";const f=JSON.parse('{"title":"Floating point precision","description":"","frontmatter":{},"headers":[],"relativePath":"manual/precision.md","filePath":"manual/precision.md","lastUpdated":null}'),a={name:"manual/precision.md"};function n(t,e,c,l,p,d){return r(),i("div",null,e[0]||(e[0]=[s('

Floating point precision

IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

  • Double precision (Float64)

  • Single precision (Float32)

  • Half precision (Float16)

To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

GPU precision

For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

Pressure solvers

SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

',6)]))}const m=o(a,[["render",n]]);export{f as __pageData,m as default}; +import{_ as o,c as i,a5 as s,o as r}from"./chunks/framework.CojPSOJE.js";const f=JSON.parse('{"title":"Floating point precision","description":"","frontmatter":{},"headers":[],"relativePath":"manual/precision.md","filePath":"manual/precision.md","lastUpdated":null}'),a={name:"manual/precision.md"};function n(t,e,c,l,p,d){return r(),i("div",null,e[0]||(e[0]=[s('

Floating point precision

IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

  • Double precision (Float64)

  • Single precision (Float32)

  • Half precision (Float16)

To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

GPU precision

For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

Pressure solvers

SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

',6)]))}const m=o(a,[["render",n]]);export{f as __pageData,m as default}; diff --git a/previews/PR126/assets/manual_pressure.md.CcFLQeFQ.js b/previews/PR126/assets/manual_pressure.md.BKvWGea4.js similarity index 83% rename from previews/PR126/assets/manual_pressure.md.CcFLQeFQ.js rename to previews/PR126/assets/manual_pressure.md.BKvWGea4.js index ddde3612..6c4899ca 100644 --- a/previews/PR126/assets/manual_pressure.md.CcFLQeFQ.js +++ b/previews/PR126/assets/manual_pressure.md.BKvWGea4.js @@ -1,16 +1,16 @@ -import{_ as r,c as n,j as e,a as i,a5 as a,G as l,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const I=JSON.parse('{"title":"Pressure solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/pressure.md","filePath":"manual/pressure.md","lastUpdated":null}'),d={name:"manual/pressure.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.194ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6715.6 1000","aria-hidden":"true"},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""};function j(C,s,N,F,S,x){const t=o("Badge");return p(),n("div",null,[s[35]||(s[35]=e("h1",{id:"Pressure-solvers",tabindex:"-1"},[i("Pressure solvers "),e("a",{class:"header-anchor",href:"#Pressure-solvers","aria-label":'Permalink to "Pressure solvers {#Pressure-solvers}"'},"​")],-1)),s[36]||(s[36]=e("p",null,"The discrete pressure Poisson equation",-1)),e("mjx-container",h,[(p(),n("svg",k,s[0]||(s[0]=[a('',1)]))),s[1]||(s[1]=e("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[e("mi",null,"L"),e("mi",null,"p"),e("mo",null,"="),e("mi",null,"W"),e("mi",null,"M"),e("mi",null,"F"),e("mo",{stretchy:"false"},"("),e("mi",null,"u"),e("mo",{stretchy:"false"},")")])],-1))]),s[37]||(s[37]=e("p",null,"enforces divergence freeness. There are multiple options for solving this system.",-1)),e("details",c,[e("summary",null,[s[2]||(s[2]=e("a",{id:"IncompressibleNavierStokes.default_psolver-Tuple{Any}",href:"#IncompressibleNavierStokes.default_psolver-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.default_psolver")],-1)),s[3]||(s[3]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[4]||(s[4]=a(`
julia
default_psolver(
+import{_ as r,c as n,j as e,a as i,a5 as t,G as l,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const I=JSON.parse('{"title":"Pressure solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/pressure.md","filePath":"manual/pressure.md","lastUpdated":null}'),d={name:"manual/pressure.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.194ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6715.6 1000","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""};function f(C,s,N,F,S,x){const a=o("Badge");return p(),n("div",null,[s[35]||(s[35]=e("h1",{id:"Pressure-solvers",tabindex:"-1"},[i("Pressure solvers "),e("a",{class:"header-anchor",href:"#Pressure-solvers","aria-label":'Permalink to "Pressure solvers {#Pressure-solvers}"'},"​")],-1)),s[36]||(s[36]=e("p",null,"The discrete pressure Poisson equation",-1)),e("mjx-container",h,[(p(),n("svg",k,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=e("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[e("mi",null,"L"),e("mi",null,"p"),e("mo",null,"="),e("mi",null,"W"),e("mi",null,"M"),e("mi",null,"F"),e("mo",{stretchy:"false"},"("),e("mi",null,"u"),e("mo",{stretchy:"false"},")")])],-1))]),s[37]||(s[37]=e("p",null,"enforces divergence freeness. There are multiple options for solving this system.",-1)),e("details",u,[e("summary",null,[s[2]||(s[2]=e("a",{id:"IncompressibleNavierStokes.default_psolver-Tuple{Any}",href:"#IncompressibleNavierStokes.default_psolver-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.default_psolver")],-1)),s[3]||(s[3]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[4]||(s[4]=t(`
julia
default_psolver(
     setup
-) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#124"}

Get default Poisson solver from setup.

source

`,3))]),e("details",u,[e("summary",null,[s[5]||(s[5]=e("a",{id:"IncompressibleNavierStokes.poisson!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson!")],-1)),s[6]||(s[6]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[7]||(s[7]=a('
julia
poisson!(psolver, f) -> Any

Solve the Poisson equation for the pressure (in-place version).

source

',3))]),e("details",g,[e("summary",null,[s[8]||(s[8]=e("a",{id:"IncompressibleNavierStokes.poisson-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson")],-1)),s[9]||(s[9]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=a('
julia
poisson(psolver, f) -> Any

Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

Differentiable version.

source

',4))]),e("details",b,[e("summary",null,[s[11]||(s[11]=e("a",{id:"IncompressibleNavierStokes.pressure!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.pressure!-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure!")],-1)),s[12]||(s[12]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=a('
julia
pressure!(p, u, temp, t, setup; psolver, F)

Compute pressure from velocity field (in-place version).

source

',3))]),e("details",Q,[e("summary",null,[s[14]||(s[14]=e("a",{id:"IncompressibleNavierStokes.pressure-NTuple{4, Any}",href:"#IncompressibleNavierStokes.pressure-NTuple{4, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure")],-1)),s[15]||(s[15]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=a('
julia
pressure(u, temp, t, setup; psolver)

Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

Differentiable version.

source

',4))]),e("details",m,[e("summary",null,[s[17]||(s[17]=e("a",{id:"IncompressibleNavierStokes.project!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project!")],-1)),s[18]||(s[18]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=a('
julia
project!(u, setup; psolver, p)

Project velocity field onto divergence-free space (in-place version).

source

',3))]),e("details",T,[e("summary",null,[s[20]||(s[20]=e("a",{id:"IncompressibleNavierStokes.project-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project")],-1)),s[21]||(s[21]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=a('
julia
project(u, setup; psolver)

Project velocity field onto divergence-free space (differentiable version).

source

',3))]),e("details",y,[e("summary",null,[s[23]||(s[23]=e("a",{id:"IncompressibleNavierStokes.psolver_cg-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg")],-1)),s[24]||(s[24]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=a(`
julia
psolver_cg(
+) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#120"}

Get default Poisson solver from setup.

source

`,3))]),e("details",g,[e("summary",null,[s[5]||(s[5]=e("a",{id:"IncompressibleNavierStokes.poisson!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson!")],-1)),s[6]||(s[6]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[7]||(s[7]=t('
julia
poisson!(psolver, f) -> Any

Solve the Poisson equation for the pressure (in-place version).

source

',3))]),e("details",c,[e("summary",null,[s[8]||(s[8]=e("a",{id:"IncompressibleNavierStokes.poisson-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson")],-1)),s[9]||(s[9]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=t('
julia
poisson(psolver, f) -> Any

Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

Differentiable version.

source

',4))]),e("details",Q,[e("summary",null,[s[11]||(s[11]=e("a",{id:"IncompressibleNavierStokes.pressure!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.pressure!-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure!")],-1)),s[12]||(s[12]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=t('
julia
pressure!(p, u, temp, t, setup; psolver, F)

Compute pressure from velocity field (in-place version).

source

',3))]),e("details",m,[e("summary",null,[s[14]||(s[14]=e("a",{id:"IncompressibleNavierStokes.pressure-NTuple{4, Any}",href:"#IncompressibleNavierStokes.pressure-NTuple{4, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure")],-1)),s[15]||(s[15]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t('
julia
pressure(u, temp, t, setup; psolver)

Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

Differentiable version.

source

',4))]),e("details",T,[e("summary",null,[s[17]||(s[17]=e("a",{id:"IncompressibleNavierStokes.project!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project!")],-1)),s[18]||(s[18]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
julia
project!(u, setup; psolver, p)

Project velocity field onto divergence-free space (in-place version).

source

',3))]),e("details",b,[e("summary",null,[s[20]||(s[20]=e("a",{id:"IncompressibleNavierStokes.project-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project")],-1)),s[21]||(s[21]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
julia
project(u, setup; psolver)

Project velocity field onto divergence-free space (differentiable version).

source

',3))]),e("details",y,[e("summary",null,[s[23]||(s[23]=e("a",{id:"IncompressibleNavierStokes.psolver_cg-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg")],-1)),s[24]||(s[24]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=t(`
julia
psolver_cg(
     setup;
     abstol,
     reltol,
     maxiter,
     preconditioner
-) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

Conjugate gradients iterative Poisson solver.

source

`,3))]),e("details",v,[e("summary",null,[s[26]||(s[26]=e("a",{id:"IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg_matrix")],-1)),s[27]||(s[27]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=a(`
julia
psolver_cg_matrix(
+) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

Conjugate gradients iterative Poisson solver.

source

`,3))]),e("details",v,[e("summary",null,[s[26]||(s[26]=e("a",{id:"IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg_matrix")],-1)),s[27]||(s[27]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
julia
psolver_cg_matrix(
     setup;
     kwargs...
-) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

source

`,3))]),e("details",E,[e("summary",null,[s[29]||(s[29]=e("a",{id:"IncompressibleNavierStokes.psolver_direct-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_direct-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_direct")],-1)),s[30]||(s[30]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=a(`
julia
psolver_direct(
+) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

source

`,3))]),e("details",E,[e("summary",null,[s[29]||(s[29]=e("a",{id:"IncompressibleNavierStokes.psolver_direct-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_direct-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_direct")],-1)),s[30]||(s[30]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t(`
julia
psolver_direct(
     setup
-) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

Create direct Poisson solver using an appropriate matrix decomposition.

source

`,3))]),e("details",f,[e("summary",null,[s[32]||(s[32]=e("a",{id:"IncompressibleNavierStokes.psolver_spectral-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_spectral-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_spectral")],-1)),s[33]||(s[33]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=a(`
julia
psolver_spectral(
+) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

Create direct Poisson solver using an appropriate matrix decomposition.

source

`,3))]),e("details",j,[e("summary",null,[s[32]||(s[32]=e("a",{id:"IncompressibleNavierStokes.psolver_spectral-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_spectral-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_spectral")],-1)),s[33]||(s[33]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=t(`
julia
psolver_spectral(
     setup
-) -> IncompressibleNavierStokes.var"#psolve!#124"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",j]]);export{I as __pageData,H as default}; +) -> IncompressibleNavierStokes.var"#psolve!#120"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",f]]);export{I as __pageData,H as default}; diff --git a/previews/PR126/assets/manual_pressure.md.CcFLQeFQ.lean.js b/previews/PR126/assets/manual_pressure.md.BKvWGea4.lean.js similarity index 83% rename from previews/PR126/assets/manual_pressure.md.CcFLQeFQ.lean.js rename to previews/PR126/assets/manual_pressure.md.BKvWGea4.lean.js index ddde3612..6c4899ca 100644 --- a/previews/PR126/assets/manual_pressure.md.CcFLQeFQ.lean.js +++ b/previews/PR126/assets/manual_pressure.md.BKvWGea4.lean.js @@ -1,16 +1,16 @@ -import{_ as r,c as n,j as e,a as i,a5 as a,G as l,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const I=JSON.parse('{"title":"Pressure solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/pressure.md","filePath":"manual/pressure.md","lastUpdated":null}'),d={name:"manual/pressure.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.194ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6715.6 1000","aria-hidden":"true"},c={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""};function j(C,s,N,F,S,x){const t=o("Badge");return p(),n("div",null,[s[35]||(s[35]=e("h1",{id:"Pressure-solvers",tabindex:"-1"},[i("Pressure solvers "),e("a",{class:"header-anchor",href:"#Pressure-solvers","aria-label":'Permalink to "Pressure solvers {#Pressure-solvers}"'},"​")],-1)),s[36]||(s[36]=e("p",null,"The discrete pressure Poisson equation",-1)),e("mjx-container",h,[(p(),n("svg",k,s[0]||(s[0]=[a('',1)]))),s[1]||(s[1]=e("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[e("mi",null,"L"),e("mi",null,"p"),e("mo",null,"="),e("mi",null,"W"),e("mi",null,"M"),e("mi",null,"F"),e("mo",{stretchy:"false"},"("),e("mi",null,"u"),e("mo",{stretchy:"false"},")")])],-1))]),s[37]||(s[37]=e("p",null,"enforces divergence freeness. There are multiple options for solving this system.",-1)),e("details",c,[e("summary",null,[s[2]||(s[2]=e("a",{id:"IncompressibleNavierStokes.default_psolver-Tuple{Any}",href:"#IncompressibleNavierStokes.default_psolver-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.default_psolver")],-1)),s[3]||(s[3]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[4]||(s[4]=a(`
julia
default_psolver(
+import{_ as r,c as n,j as e,a as i,a5 as t,G as l,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const I=JSON.parse('{"title":"Pressure solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/pressure.md","filePath":"manual/pressure.md","lastUpdated":null}'),d={name:"manual/pressure.md"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.194ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6715.6 1000","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},Q={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""};function f(C,s,N,F,S,x){const a=o("Badge");return p(),n("div",null,[s[35]||(s[35]=e("h1",{id:"Pressure-solvers",tabindex:"-1"},[i("Pressure solvers "),e("a",{class:"header-anchor",href:"#Pressure-solvers","aria-label":'Permalink to "Pressure solvers {#Pressure-solvers}"'},"​")],-1)),s[36]||(s[36]=e("p",null,"The discrete pressure Poisson equation",-1)),e("mjx-container",h,[(p(),n("svg",k,s[0]||(s[0]=[t('',1)]))),s[1]||(s[1]=e("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[e("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[e("mi",null,"L"),e("mi",null,"p"),e("mo",null,"="),e("mi",null,"W"),e("mi",null,"M"),e("mi",null,"F"),e("mo",{stretchy:"false"},"("),e("mi",null,"u"),e("mo",{stretchy:"false"},")")])],-1))]),s[37]||(s[37]=e("p",null,"enforces divergence freeness. There are multiple options for solving this system.",-1)),e("details",u,[e("summary",null,[s[2]||(s[2]=e("a",{id:"IncompressibleNavierStokes.default_psolver-Tuple{Any}",href:"#IncompressibleNavierStokes.default_psolver-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.default_psolver")],-1)),s[3]||(s[3]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[4]||(s[4]=t(`
julia
default_psolver(
     setup
-) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#124"}

Get default Poisson solver from setup.

source

`,3))]),e("details",u,[e("summary",null,[s[5]||(s[5]=e("a",{id:"IncompressibleNavierStokes.poisson!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson!")],-1)),s[6]||(s[6]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[7]||(s[7]=a('
julia
poisson!(psolver, f) -> Any

Solve the Poisson equation for the pressure (in-place version).

source

',3))]),e("details",g,[e("summary",null,[s[8]||(s[8]=e("a",{id:"IncompressibleNavierStokes.poisson-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson")],-1)),s[9]||(s[9]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=a('
julia
poisson(psolver, f) -> Any

Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

Differentiable version.

source

',4))]),e("details",b,[e("summary",null,[s[11]||(s[11]=e("a",{id:"IncompressibleNavierStokes.pressure!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.pressure!-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure!")],-1)),s[12]||(s[12]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=a('
julia
pressure!(p, u, temp, t, setup; psolver, F)

Compute pressure from velocity field (in-place version).

source

',3))]),e("details",Q,[e("summary",null,[s[14]||(s[14]=e("a",{id:"IncompressibleNavierStokes.pressure-NTuple{4, Any}",href:"#IncompressibleNavierStokes.pressure-NTuple{4, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure")],-1)),s[15]||(s[15]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=a('
julia
pressure(u, temp, t, setup; psolver)

Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

Differentiable version.

source

',4))]),e("details",m,[e("summary",null,[s[17]||(s[17]=e("a",{id:"IncompressibleNavierStokes.project!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project!")],-1)),s[18]||(s[18]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=a('
julia
project!(u, setup; psolver, p)

Project velocity field onto divergence-free space (in-place version).

source

',3))]),e("details",T,[e("summary",null,[s[20]||(s[20]=e("a",{id:"IncompressibleNavierStokes.project-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project")],-1)),s[21]||(s[21]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=a('
julia
project(u, setup; psolver)

Project velocity field onto divergence-free space (differentiable version).

source

',3))]),e("details",y,[e("summary",null,[s[23]||(s[23]=e("a",{id:"IncompressibleNavierStokes.psolver_cg-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg")],-1)),s[24]||(s[24]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=a(`
julia
psolver_cg(
+) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#120"}

Get default Poisson solver from setup.

source

`,3))]),e("details",g,[e("summary",null,[s[5]||(s[5]=e("a",{id:"IncompressibleNavierStokes.poisson!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson!")],-1)),s[6]||(s[6]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[7]||(s[7]=t('
julia
poisson!(psolver, f) -> Any

Solve the Poisson equation for the pressure (in-place version).

source

',3))]),e("details",c,[e("summary",null,[s[8]||(s[8]=e("a",{id:"IncompressibleNavierStokes.poisson-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.poisson-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.poisson")],-1)),s[9]||(s[9]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=t('
julia
poisson(psolver, f) -> Any

Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

Differentiable version.

source

',4))]),e("details",Q,[e("summary",null,[s[11]||(s[11]=e("a",{id:"IncompressibleNavierStokes.pressure!-NTuple{5, Any}",href:"#IncompressibleNavierStokes.pressure!-NTuple{5, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure!")],-1)),s[12]||(s[12]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=t('
julia
pressure!(p, u, temp, t, setup; psolver, F)

Compute pressure from velocity field (in-place version).

source

',3))]),e("details",m,[e("summary",null,[s[14]||(s[14]=e("a",{id:"IncompressibleNavierStokes.pressure-NTuple{4, Any}",href:"#IncompressibleNavierStokes.pressure-NTuple{4, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.pressure")],-1)),s[15]||(s[15]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t('
julia
pressure(u, temp, t, setup; psolver)

Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

Differentiable version.

source

',4))]),e("details",T,[e("summary",null,[s[17]||(s[17]=e("a",{id:"IncompressibleNavierStokes.project!-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project!-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project!")],-1)),s[18]||(s[18]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
julia
project!(u, setup; psolver, p)

Project velocity field onto divergence-free space (in-place version).

source

',3))]),e("details",b,[e("summary",null,[s[20]||(s[20]=e("a",{id:"IncompressibleNavierStokes.project-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.project-Tuple{Any, Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.project")],-1)),s[21]||(s[21]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
julia
project(u, setup; psolver)

Project velocity field onto divergence-free space (differentiable version).

source

',3))]),e("details",y,[e("summary",null,[s[23]||(s[23]=e("a",{id:"IncompressibleNavierStokes.psolver_cg-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg")],-1)),s[24]||(s[24]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[25]||(s[25]=t(`
julia
psolver_cg(
     setup;
     abstol,
     reltol,
     maxiter,
     preconditioner
-) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

Conjugate gradients iterative Poisson solver.

source

`,3))]),e("details",v,[e("summary",null,[s[26]||(s[26]=e("a",{id:"IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg_matrix")],-1)),s[27]||(s[27]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=a(`
julia
psolver_cg_matrix(
+) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

Conjugate gradients iterative Poisson solver.

source

`,3))]),e("details",v,[e("summary",null,[s[26]||(s[26]=e("a",{id:"IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_cg_matrix-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_cg_matrix")],-1)),s[27]||(s[27]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
julia
psolver_cg_matrix(
     setup;
     kwargs...
-) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

source

`,3))]),e("details",E,[e("summary",null,[s[29]||(s[29]=e("a",{id:"IncompressibleNavierStokes.psolver_direct-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_direct-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_direct")],-1)),s[30]||(s[30]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=a(`
julia
psolver_direct(
+) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

source

`,3))]),e("details",E,[e("summary",null,[s[29]||(s[29]=e("a",{id:"IncompressibleNavierStokes.psolver_direct-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_direct-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_direct")],-1)),s[30]||(s[30]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t(`
julia
psolver_direct(
     setup
-) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

Create direct Poisson solver using an appropriate matrix decomposition.

source

`,3))]),e("details",f,[e("summary",null,[s[32]||(s[32]=e("a",{id:"IncompressibleNavierStokes.psolver_spectral-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_spectral-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_spectral")],-1)),s[33]||(s[33]=i()),l(t,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=a(`
julia
psolver_spectral(
+) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

Create direct Poisson solver using an appropriate matrix decomposition.

source

`,3))]),e("details",j,[e("summary",null,[s[32]||(s[32]=e("a",{id:"IncompressibleNavierStokes.psolver_spectral-Tuple{Any}",href:"#IncompressibleNavierStokes.psolver_spectral-Tuple{Any}"},[e("span",{class:"jlbinding"},"IncompressibleNavierStokes.psolver_spectral")],-1)),s[33]||(s[33]=i()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[34]||(s[34]=t(`
julia
psolver_spectral(
     setup
-) -> IncompressibleNavierStokes.var"#psolve!#124"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",j]]);export{I as __pageData,H as default}; +) -> IncompressibleNavierStokes.var"#psolve!#120"

Create spectral Poisson solver from setup.

source

`,3))])])}const H=r(d,[["render",f]]);export{I as __pageData,H as default}; diff --git a/previews/PR126/assets/manual_sciml.md.D14bQOZ2.js b/previews/PR126/assets/manual_sciml.md.qY4MTzys.js similarity index 69% rename from previews/PR126/assets/manual_sciml.md.D14bQOZ2.js rename to previews/PR126/assets/manual_sciml.md.qY4MTzys.js index e49f0da9..050e8082 100644 --- a/previews/PR126/assets/manual_sciml.md.D14bQOZ2.js +++ b/previews/PR126/assets/manual_sciml.md.qY4MTzys.js @@ -1,4 +1,4 @@ -import{_ as T,c as i,j as a,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/framework.BSoZtefh.js";const L=JSON.parse('{"title":"Using IncompressibleNavierStokes in SciML","description":"","frontmatter":{},"headers":[],"relativePath":"manual/sciml.md","filePath":"manual/sciml.md","lastUpdated":null}'),r={name:"manual/sciml.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.605ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 5571.2 2067","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.497ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 23203.8 3367","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function c(u,s,y,E,H,f){const l=p("Badge");return e(),i("div",null,[s[14]||(s[14]=a("h1",{id:"Using-IncompressibleNavierStokes-in-SciML",tabindex:"-1"},[t("Using IncompressibleNavierStokes in SciML "),a("a",{class:"header-anchor",href:"#Using-IncompressibleNavierStokes-in-SciML","aria-label":'Permalink to "Using IncompressibleNavierStokes in SciML {#Using-IncompressibleNavierStokes-in-SciML}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The "),a("a",{href:"https://sciml.ai/",target:"_blank",rel:"noreferrer"},"SciML organization"),t(" is a collection of tools for solving equations and modeling systems. It has a coherent development principle, unified APIs over large collections of equation solvers, pervasive differentiability and sensitivity analysis, and features many of the highest performance and parallel implementations one can find.")],-1)),a("p",null,[s[2]||(s[2]=t("In particular, ")),s[3]||(s[3]=a("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl",-1)),s[4]||(s[4]=t(" contains tools to solve differential equations defined as ")),a("mjx-container",d,[(e(),i("svg",o,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[a("mstyle",{displaystyle:"true",scriptlevel:"0"},[a("mfrac",null,[a("mrow",null,[a("mi",null,"d"),a("mi",null,"u")]),a("mrow",null,[a("mi",null,"d"),a("mi",null,"t")])])]),a("mo",null,"="),a("mi",null,"f"),a("mo",{stretchy:"false"},"("),a("mi",null,"u"),a("mo",null,","),a("mi",null,"t"),a("mo",{stretchy:"false"},")")])],-1))]),s[5]||(s[5]=t(" that include a large collection of solvers, sensitivity analysis, and more."))]),s[16]||(s[16]=a("p",null,"Using IncompressibleNavierStokes it is possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation and obtaining:",-1)),a("mjx-container",h,[(e(),i("svg",m,s[6]||(s[6]=[n('',1)]))),s[7]||(s[7]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[a("mtr",null,[a("mtd",null,[a("mfrac",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")])]),a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("mi",null,"t")])])]),a("mtd",null,[a("mi"),a("mo",null,"="),a("mo",{stretchy:"false"},"("),a("mi",null,"I"),a("mo",null,"−"),a("mi",null,"G"),a("msup",null,[a("mi",null,"L"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mo",null,"−"),a("mn",null,"1")])]),a("mi",null,"W"),a("mi",null,"M"),a("mo",{stretchy:"false"},")"),a("mo",{stretchy:"false"},"("),a("mi",null,"F"),a("mo",{stretchy:"false"},"("),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")]),a("mo",{stretchy:"false"},")"),a("mo",null,"−"),a("msub",null,[a("mi",null,"y"),a("mi",null,"G")]),a("mo",{stretchy:"false"},")"),a("mo",null,"−"),a("mi",null,"G"),a("msup",null,[a("mi",null,"L"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mo",null,"−"),a("mn",null,"1")])]),a("mi",null,"W"),a("mfrac",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("msub",null,[a("mi",null,"y"),a("mi",null,"M")])]),a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("mi",null,"t")])])])]),a("mtr",null,[a("mtd"),a("mtd",null,[a("mi"),a("mo",null,"="),a("mi",null,"f"),a("mo",{stretchy:"false"},"("),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")]),a("mo",{stretchy:"false"},")"),a("mo",null,".")])])])])],-1))]),s[17]||(s[17]=n(`

The derivation and the drawbacks of this approach are discussed in the documentation.

This projected right-hand side can be used in the SciML solvers to solve the Navier-Stokes equations. The following example shows how to use the SciML solvers to solve the ODEs obtained from the Navier-Stokes equations.

OrdinaryDiffEqTsit5

We here use the explicit solver Tsit5 from OrdinaryDiffEqTsit5 directly to skip loading all the toolchains for implicit solvers, which takes a while to install on GitHub.

julia
using OrdinaryDiffEqTsit5
+import{_ as T,c as i,j as s,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Using IncompressibleNavierStokes in SciML","description":"","frontmatter":{},"headers":[],"relativePath":"manual/sciml.md","filePath":"manual/sciml.md","lastUpdated":null}'),r={name:"manual/sciml.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.605ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 5571.2 2067","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.497ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 23203.8 3367","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function c(u,a,y,E,H,f){const l=p("Badge");return e(),i("div",null,[a[14]||(a[14]=s("h1",{id:"Using-IncompressibleNavierStokes-in-SciML",tabindex:"-1"},[t("Using IncompressibleNavierStokes in SciML "),s("a",{class:"header-anchor",href:"#Using-IncompressibleNavierStokes-in-SciML","aria-label":'Permalink to "Using IncompressibleNavierStokes in SciML {#Using-IncompressibleNavierStokes-in-SciML}"'},"​")],-1)),a[15]||(a[15]=s("p",null,[t("The "),s("a",{href:"https://sciml.ai/",target:"_blank",rel:"noreferrer"},"SciML organization"),t(" is a collection of tools for solving equations and modeling systems. It has a coherent development principle, unified APIs over large collections of equation solvers, pervasive differentiability and sensitivity analysis, and features many of the highest performance and parallel implementations one can find.")],-1)),s("p",null,[a[2]||(a[2]=t("In particular, ")),a[3]||(a[3]=s("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl",-1)),a[4]||(a[4]=t(" contains tools to solve differential equations defined as ")),s("mjx-container",d,[(e(),i("svg",o,a[0]||(a[0]=[n('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mstyle",{displaystyle:"true",scriptlevel:"0"},[s("mfrac",null,[s("mrow",null,[s("mi",null,"d"),s("mi",null,"u")]),s("mrow",null,[s("mi",null,"d"),s("mi",null,"t")])])]),s("mo",null,"="),s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=t(" that include a large collection of solvers, sensitivity analysis, and more."))]),a[16]||(a[16]=s("p",null,"Using IncompressibleNavierStokes it is possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation and obtaining:",-1)),s("mjx-container",h,[(e(),i("svg",m,a[6]||(a[6]=[n('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")])]),s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"t")])])]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"I"),s("mo",null,"−"),s("mi",null,"G"),s("msup",null,[s("mi",null,"L"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"W"),s("mi",null,"M"),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"("),s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")]),s("mo",{stretchy:"false"},")"),s("mo",null,"−"),s("msub",null,[s("mi",null,"y"),s("mi",null,"G")]),s("mo",{stretchy:"false"},")"),s("mo",null,"−"),s("mi",null,"G"),s("msup",null,[s("mi",null,"L"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"W"),s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("msub",null,[s("mi",null,"y"),s("mi",null,"M")])]),s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"t")])])])]),s("mtr",null,[s("mtd"),s("mtd",null,[s("mi"),s("mo",null,"="),s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")]),s("mo",{stretchy:"false"},")"),s("mo",null,".")])])])])],-1))]),a[17]||(a[17]=n(`

The derivation and the drawbacks of this approach are discussed in the documentation.

This projected right-hand side can be used in the SciML solvers to solve the Navier-Stokes equations. The following example shows how to use the SciML solvers to solve the ODEs obtained from the Navier-Stokes equations.

OrdinaryDiffEqTsit5

We here use the explicit solver Tsit5 from OrdinaryDiffEqTsit5 directly to skip loading all the toolchains for implicit solvers, which takes a while to install on GitHub.

julia
using OrdinaryDiffEqTsit5
 using IncompressibleNavierStokes
 ax = range(0, 1, 101)
 setup = Setup(; x = (ax, ax), Re = 500.0)
@@ -9,53 +9,53 @@ import{_ as T,c as i,j as a,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/fr
 problem = ODEProblem(f, u0, tspan) #SciMLBase.ODEProblem
 sol = solve(problem, Tsit5(), reltol = 1e-8, abstol = 1e-8) # sol: SciMLBase.ODESolution
retcode: Success
 Interpolation: specialized 4th order "free" interpolation
-t: 212-element Vector{Float64}:
+t: 250-element Vector{Float64}:
  0.0
- 0.0016775779886938518
- 0.0024515906294917565
- 0.0036937756597660177
- 0.004744359932985878
- 0.005955362736923781
- 0.0071390751083091316
- 0.008386636861924696
- 0.009645156117581473
- 0.010936958169616918
+ 0.001556073323302609
+ 0.0022719733109081946
+ 0.003421770136632073
+ 0.004392878613129141
+ 0.005511656380449501
+ 0.006603690367079683
+ 0.007753321995088192
+ 0.008911590687048847
+ 0.010098916435172417
 
- 0.8984930998969533
- 0.9118748988126503
- 0.9254968389682297
- 0.9393543206945666
- 0.9534433190187698
- 0.9677595077716898
- 0.9822997420095799
- 0.9970628244296934
+ 0.9180935463070241
+ 0.9287950605670815
+ 0.9396497491283882
+ 0.950661239457886
+ 0.9618337193811496
+ 0.9731711225787223
+ 0.9846787126922614
+ 0.996361412839949
  1.0
-u: 212-element Vector{Array{Float64, 3}}:
- [1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433; … ; 1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433;;; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525; … ; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525]
- [1.4310738946896817 2.037963099708429 … 1.4310738946896817 2.037963099708429; 1.5869175083011309 2.0532385940120887 … 1.588327603138371 2.074915689630976; … ; 1.4310738946896817 2.0646385389800517 … 1.4707449035500546 2.037963099708429; 1.5869175083011309 2.074915689630976 … 1.5869175083011309 2.074915689630976;;; -0.3843075577328367 -0.6173973185403617 … -0.3843075577328367 -0.6173973185403617; -0.34228152248255667 -0.2420089432080796 … -0.25340888817604323 -0.38860275562819596; … ; -0.3843075577328367 -0.44793764689863946 … -0.28243935383757307 -0.6173973185403617; -0.34228152248255667 -0.38860275562819596 … -0.34228152248255667 -0.38860275562819596]
- [1.41677387871106 2.026206225445256 … 1.41677387871106 2.026206225445256; 1.5847511350956696 2.0556684473065676 … 1.5879577687647815 2.0866824407621585; … ; 1.41677387871106 2.065761529283348 … 1.4758327495143713 2.026206225445256; 1.5847511350956696 2.0866824407621585 … 1.5847511350956696 2.0866824407621585;;; -0.39899399061633306 -0.6593050784076984 … -0.39899399061633306 -0.6593050784076984; -0.34188065544854157 -0.20124022712840817 … -0.21133330910518938 -0.41592062803461616; … ; -0.39899399061633306 -0.4105277740400618 … -0.24894307730776155 -0.6593050784076984; -0.34188065544854157 -0.41592062803461616 … -0.34188065544854157 -0.41592062803461616]
- [1.391620717845853 2.005052930950454 … 1.391620717845853 2.005052930950454; 1.5785967602636484 2.0575009086990472 … 1.5862214072663858 2.1026182098459665; … ; 1.391620717845853 2.065879364931202 … 1.4830825537815986 2.005052930950454; 1.5785967602636484 2.1026182098459665 … 1.5785967602636484 2.1026182098459665;;; -0.4251380669009577 -0.7289528594833986 … -0.4251380669009577 -0.7289528594833986; -0.3424451007836423 -0.13576237682522638 … -0.14414083305738165 -0.46022008886919996; … ; -0.4251380669009577 -0.3514934686109557 … -0.19619839721969912 -0.7289528594833986; -0.3424451007836423 -0.46022008886919996 … -0.3424451007836423 -0.46022008886919996]
- [1.3683366507304067 1.9851283805313755 … 1.3683366507304067 1.9851283805313755; 1.5708280441413918 2.057102516014986 … 1.5836664262450098 2.1133081687983375; … ; 1.3683366507304067 2.0643939821950585 … 1.4883158148529916 1.9851283805313755; 1.5708280441413918 2.1133081687983375 … 1.5708280441413918 2.1133081687983375;;; -0.44984225330664884 -0.7902139129867269 … -0.44984225330664884 -0.7902139129867269; -0.34427101031988805 -0.08053363877178918 … -0.08782510495186124 -0.4982591359356883; … ; -0.44984225330664884 -0.30267536983452664 … -0.15268278547971995 -0.7902139129867269; -0.34427101031988805 -0.4982591359356883 … -0.34427101031988805 -0.4982591359356883]
- [1.3393682527712583 1.9600730631740435 … 1.3393682527712583 1.9600730631740435; 1.558999023490557 2.054493427553239 … 1.57950836847274 2.1225488522672933; … ; 1.3393682527712583 2.060933169437688 … 1.4933079794955013 1.9600730631740435; 1.558999023490557 2.1225488522672933 … 1.558999023490557 2.1225488522672933;;; -0.48138807330255545 -0.8635507784356191 … -0.48138807330255545 -0.8635507784356191; -0.34814473328245776 -0.01729418575514602 … -0.02373392763959295 -0.5429297006640443; … ; -0.48138807330255545 -0.2478305189843362 … -0.10389764719909182 -0.8635507784356191; -0.34814473328245776 -0.5429297006640443 … -0.34814473328245776 -0.5429297006640443]
- [1.309023603907686 1.9336578801571804 … 1.309023603907686 1.9336578801571804; 1.5445301181443962 2.0497976350046425 … 1.5742163600010184 2.1285084136651826; … ; 1.309023603907686 2.0558026885624203 … 1.497096545742828 1.9336578801571804; 1.5445301181443962 2.1285084136651826 … 1.5445301181443962 2.1285084136651826;;; -0.5154881691893956 -0.9380605402073995 … -0.5154881691893956 -0.9380605402073995; -0.3539882338969757 0.043835392813216995 … 0.03783033925544225 -0.5876158502792285; … ; -0.5154881691893956 -0.19583831365463097 … -0.05774146260707564 -0.9380605402073995; -0.3539882338969757 -0.5876158502792285 … -0.3539882338969757 -0.5876158502792285]
- [1.2750805605945816 1.904031237572206 … 1.2750805605945816 1.904031237572206; 1.5262751744748195 2.0426552525097845 … 1.5673604992364663 2.13165995622661; … ; 1.2750805605945816 2.0486025202291174 … 1.499910676274747 1.904031237572206; 1.5262751744748195 2.13165995622661 … 1.5262751744748195 2.13165995622661;;; -0.5549806081559608 -1.0195833757760737 … -0.5549806081559608 -1.0195833757760737; -0.36258175247807684 0.10726628202190677 … 0.101319014302577 -0.6359866935141251; … ; -0.5549806081559608 -0.1428955588958576 … -0.010821008352053463 -1.0195833757760737; -0.36258175247807684 -0.6359866935141251 … -0.36258175247807684 -0.6359866935141251]
- [1.2390293609716085 1.8725732991803752 … 1.2390293609716085 1.8725732991803752; 1.5048708458871851 2.033288015121601 … 1.5591546395991858 2.1317769112643323; … ; 1.2390293609716085 2.0395614281872345 … 1.501517456149803 1.8725732991803752; 1.5048708458871851 2.1317769112643323 … 1.5048708458871851 2.1317769112643323;;; -0.5985326754929186 -1.1048628282971928 … -0.5985326754929186 -1.1048628282971928; -0.3739981547416027 0.1699656370380011 … 0.16369222397237182 -0.6862777065879397; … ; -0.5985326754929186 -0.09150946309929023 … 0.034657669392390775 -1.1048628282971928; -0.3739981547416027 -0.6862777065879397 … -0.3739981547416027 -0.6862777065879397]
- [1.2003859162688768 1.8389443123237112 … 1.2003859162688768 1.8389443123237112; 1.4799487091064865 2.021549979114891 … 1.5494279100647357 2.1289256658165314; … ; 1.2003859162688768 2.0285213189520688 … 1.5018789444457645 1.8389443123237112; 1.4799487091064865 2.1289256658165314 … 1.4799487091064865 2.1289256658165314;;; -0.6470887764045219 -1.195453394721505 … -0.6470887764045219 -1.195453394721505; -0.38877926401317714 0.23273741070513682 … 0.22576607086796496 -0.7396157784188764; … ; -0.6470887764045219 -0.04093867588285244 … 0.07937258002515016 -1.195453394721505; -0.38877926401317714 -0.7396157784188764 … -0.38877926401317714 -0.7396157784188764]
+u: 250-element Vector{Array{Float64, 3}}:
+ [-0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767; … ; -0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767;;; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933; … ; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933]
+ [-0.2641988258161559 -0.6842105823948037 … -0.2641988258161559 -0.6842105823948037; -0.5554719943970878 -1.08372897008126 … -0.528894551624645 -1.125192961125848; … ; -0.2641988258161559 -0.6521599014458829 … -0.24660861817531196 -0.6842105823948037; -0.5554719943970878 -1.125192961125848 … -0.5554719943970878 -1.125192961125848;;; -0.8306925883975206 -0.35454388747389226 … -0.8306925883975206 -0.35454388747389226; -0.7586606649333464 -0.37724634474597607 … -0.8088154133813523 -0.35541234336812005; … ; -0.8306925883975206 -0.3913130883274286 … -0.8953078101536035 -0.35454388747389226; -0.7586606649333464 -0.35541234336812005 … -0.7586606649333464 -0.35541234336812005]
+ [-0.29635788393351875 -0.7203682339266996 … -0.29635788393351875 -0.7203682339266996; -0.5933162222243581 -1.1048800462393567 … -0.555300508914644 -1.1643784257900822; … ; -0.29635788393351875 -0.6735966431693873 … -0.2706142291619179 -0.7203682339266996; -0.5933162222243581 -1.1643784257900822 … -0.5933162222243581 -1.1643784257900822;;; -0.8012086656581645 -0.33810243969112724 … -0.8012086656581645 -0.33810243969112724; -0.72560424690118 -0.36724612686305513 … -0.7985295299330236 -0.3359125744024713; … ; -0.8012086656581645 -0.3913746919645915 … -0.8951618846757197 -0.33810243969112724; -0.72560424690118 -0.3359125744024713 … -0.72560424690118 -0.3359125744024713]
+ [-0.34870754688428995 -0.7792596863183789 … -0.34870754688428995 -0.7792596863183789; -0.6536904301507283 -1.1395757760607585 … -0.5983345984476474 -1.2266899400473281; … ; -0.34870754688428995 -0.708884091950401 … -0.3097852247390696 -0.7792596863183789; -0.6536904301507283 -1.2266899400473281 … -0.6536904301507283 -1.2266899400473281;;; -0.753216807906376 -0.31096681916681274 … -0.753216807906376 -0.31096681916681274; -0.6716905600910769 -0.3500842508696068 … -0.7807759349799628 -0.3042677935801389; … ; -0.753216807906376 -0.39012952150454966 … -0.8937554550180197 -0.31096681916681274; -0.6716905600910769 -0.3042677935801389 … -0.6716905600910769 -0.3042677935801389]
+ [-0.39361546526753777 -0.8297647119844105 … -0.39361546526753777 -0.8297647119844105; -0.7042833888763731 -1.1695019008798557 … -0.6352636457861688 -1.2786676916508652; … ; -0.39361546526753777 -0.7394933393542665 … -0.3434795771460868 -0.8297647119844105; -0.7042833888763731 -1.2786676916508652 … -0.7042833888763731 -1.2786676916508652;;; -0.7120319197818502 -0.2873699515434851 … -0.7120319197818502 -0.2873699515434851; -0.6253825540141095 -0.33459423769035684 … -0.7646027992159439 -0.2773323957675547; … ; -0.7120319197818502 -0.38775605243015243 … -0.8913876494923778 -0.2873699515434851; -0.6253825540141095 -0.2773323957675547 … -0.6253825540141095 -0.2773323957675547]
+ [-0.4461634229992338 -0.8887849397472614 … -0.4461634229992338 -0.8887849397472614; -0.7620974925853543 -1.2045755939435638 … -0.6784394648834674 -1.3377339263593422; … ; -0.4461634229992338 -0.7756381846387064 … -0.383011302659914 -0.8887849397472614; -0.7620974925853543 -1.3377339263593422 … -0.7620974925853543 -1.3377339263593422;;; -0.6637977532679439 -0.2594495139580558 … -0.6637977532679439 -0.2594495139580558; -0.5711913409704478 -0.31571389869368033 … -0.7446513079985353 -0.2462154169355641; … ; -0.6637977532679439 -0.38348972758687006 … -0.8872523550652668 -0.2594495139580558; -0.5711913409704478 -0.2462154169355641 … -0.5711913409704478 -0.2462154169355641]
+ [-0.49830968480792187 -0.947212977565134 … -0.49830968480792187 -0.947212977565134; -0.8180108075209138 -1.2393008281557438 … -0.7211930017278865 -1.3944547759171668; … ; -0.49830968480792187 -0.8117828430335173 … -0.42234916731621935 -0.947212977565134; -0.8180108075209138 -1.3944547759171668 … -0.8180108075209138 -1.3944547759171668;;; -0.615861342309636 -0.23148070686490213 … -0.615861342309636 -0.23148070686490213; -0.5174805693233535 -0.2963296028916884 … -0.7238475880139124 -0.21592330024807257; … ; -0.615861342309636 -0.3777229387338287 … -0.8816979780401091 -0.23148070686490213; -0.5174805693233535 -0.21592330024807257 … -0.5174805693233535 -0.21592330024807257]
+ [-0.5541277796045936 -1.009535330400806 … -0.5541277796045936 -1.009535330400806; -0.8762706094789094 -1.2762212525839953 … -0.7667917804973445 -1.453052732869159; … ; -0.5541277796045936 -0.8506901457986655 … -0.46457135411059036 -1.009535330400806; -0.8762706094789094 -1.453052732869159 … -0.8762706094789094 -1.453052732869159;;; -0.5644424424610739 -0.20133259927658942 … -0.5644424424610739 -0.20133259927658942; -0.46014869396484176 -0.27505011099912496 … -0.7005812177844533 -0.18432917246446268; … ; -0.5644424424610739 -0.36993227528061523 … -0.8741637253888226 -0.20133259927658942; -0.46014869396484176 -0.18432917246446268 … -0.46014869396484176 -0.18432917246446268]
+ [-0.6113188355612936 -1.0730901502800942 … -0.6113188355612936 -1.0730901502800942; -0.9342761753547372 -1.3136112244033429 … -0.8132665202195992 -1.5107941098760225; … ; -0.6113188355612936 -0.8906927667179808 … -0.5079484072907596 -1.0730901502800942; -0.9342761753547372 -1.5107941098760225 … -0.9342761753547372 -1.5107941098760225;;; -0.5116144577915119 -0.17030399583320407 … -0.5116144577915119 -0.17030399583320407; -0.4016783050313231 -0.25288023085937766 … -0.6757986885447391 -0.15304289223675197; … ; -0.5116144577915119 -0.36030644877162527 … -0.8647617965965074 -0.17030399583320407; -0.4016783050313231 -0.15304289223675197 … -0.4016783050313231 -0.15304289223675197]
+ [-0.6709207752864298 -1.1389341858331228 … -0.6709207752864298 -1.1389341858331228; -0.9929267103789987 -1.351922786908686 … -0.8613612264733349 -1.568464077675137; … ; -0.6709207752864298 -0.9324262333581842 … -0.5532718324517414 -1.1389341858331228; -0.9929267103789987 -1.568464077675137 … -0.9929267103789987 -1.568464077675137;;; -0.45637398637517057 -0.13791381931950897 … -0.45637398637517057 -0.13791381931950897; -0.34114843658326266 -0.22960206139636438 … -0.6490986149468652 -0.12181430001360327; … ; -0.45637398637517057 -0.3486158886946604 … -0.8531831743790232 -0.13791381931950897; -0.34114843658326266 -0.12181430001360327 … -0.34114843658326266 -0.12181430001360327]
 
- [0.6048854718137157 1.7487841124129428 … 0.6048854718137157 1.7487841124129428; 0.5896185921818861 0.1505645261347854 … 0.15240233330966635 2.1036591177156305; … ; 0.6048854718137157 0.16279095516406053 … 0.16229980382267836 1.7487841124129428; 0.5896185921818861 2.1036591177156305 … 0.5896185921818861 2.1036591177156305;;; -6.86780939456026 -7.0267128790424955 … -6.86780939456026 -7.0267128790424955; -5.717907919358522 -0.15627288942074785 … -0.16849931844999072 -5.943197746830108; … ; -6.86780939456026 -0.1657913435934261 … -0.1749933043938824 -7.0267128790424955; -5.717907919358522 -5.943197746830108 … -5.717907919358522 -5.943197746830108]
- [0.6050014144769785 1.748153123634293 … 0.6050014144769785 1.748153123634293; 0.5900975469606192 0.15052392859078634 … 0.15312228527657937 2.103787615228544; … ; 0.6050014144769785 0.16087478543160325 … 0.16144707846505515 1.748153123634293; 0.5900975469606192 2.103787615228544 … 0.5900975469606192 2.103787615228544;;; -6.867210580036855 -7.027409795615081 … -6.867210580036855 -7.027409795615081; -5.716365792589818 -0.15490284078797595 … -0.16525369762875974 -5.942661142693805; … ; -6.867210580036855 -0.16528144072912018 … -0.17237448288502757 -7.027409795615081; -5.716365792589818 -5.942661142693805 … -5.716365792589818 -5.942661142693805]
- [0.6044249222451645 1.7469106126508502 … 0.6044249222451645 1.7469106126508502; 0.5900274372629859 0.1498402974886133 … 0.15317663182585173 2.1033964431830405; … ; 0.6044249222451645 0.15830772883283686 … 0.15987551123188729 1.7469106126508502; 0.5900274372629859 2.1033964431830405 … 0.5900274372629859 2.1033964431830405;;; -6.867381645601023 -7.028796544094941 … -6.867381645601023 -7.028796544094941; -5.715518625925486 -0.15399665041844993 … -0.16246408176264088 -5.942792582381415; … ; -6.867381645601023 -0.16524854794342847 … -0.1702736286334392 -7.028796544094941; -5.715518625925486 -5.942792582381415 … -5.715518625925486 -5.942792582381415]
- [0.6031812862420463 1.7450953976257477 … 0.6031812862420463 1.7450953976257477; 0.5894024122775645 0.1485366310428622 … 0.1525727845682203 2.1024938421686965; … ; 0.6031812862420463 0.1551333805764159 … 0.15761387899624388 1.7450953976257477; 0.5894024122775645 2.1024938421686965 … 0.5894024122775645 2.1024938421686965;;; -6.868268679688738 -7.030804299340781 … -6.868268679688738 -7.030804299340781; -5.715349687682886 -0.15353358777170695 … -0.16013033730522802 -5.943558268755094; … ; -6.868268679688738 -0.16563634636437952 … -0.16865471950754676 -7.030804299340781; -5.715349687682886 -5.943558268755094 … -5.715349687682886 -5.943558268755094]
- [0.6013085665698479 1.742755945895593 … 0.6013085665698479 1.742755945895593; 0.5882286005654174 0.14664447091012814 … 0.15132900103549865 2.1010980291583543; … ; 0.6013085665698479 0.15140235565122434 … 0.15470156992990525 1.742755945895593; 0.5882286005654174 2.1010980291583543 … 0.5882286005654174 2.1010980291583543;;; -6.869807557370203 -7.033358035379117 … -6.869807557370203 -7.033358035379117; -5.7158292479648685 -0.15348060101411037 … -0.15823848575517419 -5.944913967346289; … ; -6.869807557370203 -0.16637975997295137 … -0.1674702015560798 -7.033358035379117; -5.7158292479648685 -5.944913967346289 … -5.7158292479648685 -5.944913967346289]
- [0.598855892317473 1.7399486131942257 … 0.598855892317473 1.7399486131942257; 0.5865234384949342 0.14420257362155195 … 0.14947336059990066 2.099236269320718; … ; 0.598855892317473 0.14717056425114167 … 0.1511869228624846 1.7399486131942257; 0.5865234384949342 2.099236269320718 … 0.5865234384949342 2.099236269320718;;; -6.871926544771357 -7.036378952815045 … -6.871926544771357 -7.036378952815045; -5.716916280449167 -0.1537941605127281 … -0.15676215114228556 -5.946806979844537; … ; -6.871926544771357 -0.16740741888827054 … -0.16666333597637634 -7.036378952815045; -5.716916280449167 -5.946806979844537 … -5.716916280449167 -5.946806979844537]
- [0.5958811815730007 1.7367353970175616 … 0.5958811815730007 1.7367353970175616; 0.5843144049204488 0.14125514734050593 … 0.14704223379031514 2.096943457889973; … ; 0.5958811815730007 0.14249693421680834 … 0.14712492153548007 1.7367353970175616; 0.5843144049204488 2.096943457889973 … 0.5843144049204488 2.096943457889973;;; -6.8745491457220105 -7.0397870793822195 … -6.8745491457220105 -7.0397870793822195; -5.718560585210772 -0.15442234356989648 … -0.15566413044616673 -5.949178459716383; … ; -6.8745491457220105 -0.16864416365228513 … -0.1661704881941689 -7.0397870793822195; -5.718560585210772 -5.949178459716383 … -5.718560585210772 -5.949178459716383]
- [0.5924486575208425 1.733181704205474 … 0.5924486575208425 1.733181704205474; 0.5816373449202014 0.13785000188772933 … 0.14407842680583244 2.0942604659118893; … ; 0.5924486575208425 0.13744136679333582 … 0.14257484181118496 1.733181704205474; 0.5816373449202014 2.0942604659118893 … 0.5816373449202014 2.0942604659118893;;; -6.877596861611518 -7.043503508107856 … -6.877596861611518 -7.043503508107856; -5.720705249283326 -0.15530711497910096 … -0.15489847988467512 -5.951965779045637; … ; -6.877596861611518 -0.17001336497945702 … -0.16592357051038312 -7.043503508107856; -5.720705249283326 -5.951965779045637 … -5.720705249283326 -5.951965779045637]
- [0.5917236853921971 1.7324466138864494 … 0.5917236853921971 1.7324466138864494; 0.5810578454401288 0.1371288733000369 … 0.14343522277923373 2.0936892619948675; … ; 0.5917236853921971 0.13640463537769287 … 0.14162539765649912 1.7324466138864494; 0.5810578454401288 2.0936892619948675 … 0.5810578454401288 2.0936892619948675;;; -6.878241166841342 -7.044266014850046 … -6.878241166841342 -7.044266014850046; -5.721181922711051 -0.15550653671354817 … -0.15478229879117186 -5.9525588810990575; … ; -6.878241166841342 -0.1702923518797587 … -0.1658978521484009 -7.044266014850046; -5.721181922711051 -5.9525588810990575 … -5.721181922711051 -5.9525588810990575]

Alternatively, it is also possible to use an in-place formulation

julia
f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
+ [-1.2931007986840914 -1.7031160512642476 … -1.2931007986840914 -1.7031160512642476; -0.4476201050854184 0.7051094661178132 … 0.6976764032560655 -0.691373970429577; … ; -1.2931007986840914 0.6941724708221193 … 0.6861745240666373 -1.7031160512642476; -0.4476201050854184 -0.691373970429577 … -0.4476201050854184 -0.691373970429577;;; -0.3319201786040405 -1.1066968228277734 … -0.3319201786040405 -1.1066968228277734; -0.7339027349829377 0.08146985584337366 … 0.0924068511390998 -1.6781148837864952; … ; -0.3319201786040405 0.06503299545433096 … 0.07637620818235707 -1.1066968228277734; -0.7339027349829377 -1.6781148837864952 … -0.7339027349829377 -1.6781148837864952]
+ [-1.3033302294258857 -1.713179343473074 … -1.3033302294258857 -1.713179343473074; -0.45795886772885214 0.7040803213569757 … 0.696660491938344 -0.7012315932885084; … ; -1.3033302294258857 0.6935209673176284 … 0.6857245635110408 -1.713179343473074; -0.45795886772885214 -0.7012315932885084 … -0.45795886772885214 -0.7012315932885084;;; -0.3422573519004336 -1.1177053994467887 … -0.3422573519004336 -1.1177053994467887; -0.7445184282831224 0.08323181645056422 … 0.09379117048994434 -1.689339625763256; … ; -0.3422573519004336 0.0673893886406746 … 0.07840672901885568 -1.1177053994467887; -0.7445184282831224 -1.689339625763256 … -0.7445184282831224 -1.689339625763256]
+ [-1.3134095274974067 -1.7231391610450235 … -1.3134095274974067 -1.7231391610450235; -0.4680589497716697 0.7031425899303251 … 0.695876566510165 -0.7109406378100851; … ; -1.3134095274974067 0.6929260098627148 … 0.6854430483776558 -1.7231391610450235; -0.4680589497716697 -0.7109406378100851 … -0.4680589497716697 -0.7109406378100851;;; -0.3526741483872546 -1.128829845262931 … -0.3526741483872546 -1.128829845262931; -0.7548787322869919 0.0849027348933907 … 0.09511931496103386 -1.7003293819307372; … ; -0.3526741483872546 0.06937447110855348 … 0.08011130382809377 -1.128829845262931; -0.7548787322869919 -1.7003293819307372 … -0.7548787322869919 -1.7003293819307372]
+ [-1.3233838504056097 -1.733018259188943 … -1.3233838504056097 -1.733018259188943; -0.47795630815458795 0.7023007080275229 … 0.6953117322349547 -0.7205144393149414; … ; -1.3233838504056097 0.6923841222225156 … 0.6853073456180867 -1.733018259188943; -0.47795630815458795 -0.7205144393149414 … -0.47795630815458795 -0.7205144393149414;;; -0.3633376127439469 -1.140243995152969 … -0.3633376127439469 -1.140243995152969; -0.765170719883973 0.08632948540266908 … 0.09624607120770974 -1.711280985623885; … ; -0.3633376127439469 0.07086131054405251 … 0.08136799295997219 -1.140243995152969; -0.765170719883973 -1.711280985623885 … -0.765170719883973 -1.711280985623885]
+ [-1.3333033984017677 -1.74284474256906 … -1.3333033984017677 -1.74284474256906; -0.48769451733971814 0.7015524141228384 … 0.6949448881942601 -0.7299735203232772; … ; -1.3333033984017677 0.691886659893196 … 0.6852888281442672 -1.74284474256906; -0.48769451733971814 -0.7299735203232772 … -0.48769451733971814 -0.7299735203232772;;; -0.374400132844818 -1.1521046561379444 … -0.374400132844818 -1.1521046561379444; -0.775571081780308 0.08737433752485839 … 0.09704009175453462 -1.722379543235927; … ; -0.374400132844818 0.071742276692659 … 0.082071864773802 -1.1521046561379444; -0.775571081780308 -1.722379543235927 … -0.775571081780308 -1.722379543235927]
+ [-1.3432214137384335 -1.7526504647780206 … -1.3432214137384335 -1.7526504647780206; -0.49732306162838485 0.70088907410381 … 0.6947475158940635 -0.7393444366885983; … ; -1.3432214137384335 0.6914207474295654 … 0.6853541639991926 -1.7526504647780206; -0.49732306162838485 -0.7393444366885983 … -0.49732306162838485 -0.7393444366885983;;; -0.3859968980335953 -1.1645485037241428 … -0.3859968980335953 -1.1645485037241428; -0.7862425457346708 0.0879175374118662 … 0.097385864086145 -1.7337939927024886; … ; -0.3859968980335953 0.07193028639620751 … 0.08213587731725909 -1.1645485037241428; -0.7862425457346708 -1.7337939927024886 … -0.7862425457346708 -1.7337939927024886]
+ [-1.3531940008756465 -1.7624711663329278 … -1.3531940008756465 -1.7624711663329278; -0.5068973837688652 0.7002964119879739 … 0.6946849079856697 -0.7486602438730344; … ; -1.3531940008756465 0.6909705203116911 … 0.6854669804319274 -1.7624711663329278; -0.5068973837688652 -0.7486602438730344 … -0.5068973837688652 -0.7486602438730344;;; -0.39824630093679814 -1.1776923174767342 … -0.39824630093679814 -1.1776923174767342; -0.7973333113635569 0.08785911634943988 … 0.09718500802575686 -1.7456760088369485; … ; -0.39824630093679814 0.07135944587144352 … 0.08149131311546902 -1.1776923174767342; -0.7973333113635569 -1.7456760088369485 … -0.7973333113635569 -1.7456760088369485]
+ [-1.3632768075167574 -1.7723434658809323 … -1.3632768075167574 -1.7723434658809323; -0.5164758240843459 0.699755933948873 … 0.6947179115633345 -0.7579578537808336; … ; -1.3632768075167574 0.6905188089567419 … 0.6855898083159826 -1.7723434658809323; -0.5164758240843459 -0.7579578537808336 … -0.5164758240843459 -0.7579578537808336;;; -0.4112474111851038 -1.1916302889845585 … -0.4112474111851038 -1.1916302889845585; -0.8089740336813523 0.08711969029762791 … 0.09635681528979329 -1.7581564675498191; … ; -0.4112474111851038 0.06998500742819176 … 0.0800877787811059 -1.1916302889845585; -0.8089740336813523 -1.7581564675498191 … -0.8089740336813523 -1.7581564675498191]
+ [-1.3664165852536658 -1.7754037561894658 … -1.3664165852536658 -1.7754037561894658; -0.5194395386158631 0.6995965671054124 … 0.6947409485882146 -0.7608273016555152; … ; -1.3664165852536658 0.6903765813076334 … 0.6856239819956859 -1.7754037561894658; -0.5194395386158631 -0.7608273016555152 … -0.5194395386158631 -0.7608273016555152;;; -0.4154209528727798 -1.196100131813737 … -0.4154209528727798 -1.196100131813737; -0.8126924689970357 0.08674468242062354 … 0.09596466821843684 -1.7621432231857432; … ; -0.4154209528727798 0.06939482878041375 … 0.07949641409494351 -1.196100131813737; -0.8126924689970357 -1.7621432231857432 … -0.8126924689970357 -1.7621432231857432]

Alternatively, it is also possible to use an in-place formulation

julia
f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
 u = similar(u0)
 du = similar(u0)
 p = nothing
 t = 0.0
-f!(du,u,p,t)

that is usually faster than the out-of-place formulation.

You can look here for more information on how to use the SciML solvers and all the options available.

API

`,10)),a("details",g,[a("summary",null,[s[8]||(s[8]=a("a",{id:"IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_right_hand_side")],-1)),s[9]||(s[9]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=n(`
julia
create_right_hand_side(
+f!(du,u,p,t)

that is usually faster than the out-of-place formulation.

You can look here for more information on how to use the SciML solvers and all the options available.

API

`,10)),s("details",g,[s("summary",null,[a[8]||(a[8]=s("a",{id:"IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_right_hand_side")],-1)),a[9]||(a[9]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[10]||(a[10]=n(`
julia
create_right_hand_side(
     setup,
     psolver
-) -> IncompressibleNavierStokes.var"#right_hand_side#343"
create_right_hand_side(setup, psolver)

Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

Arguments

  • setup: The simulation setup containing grid and boundary conditions.

  • psolver: The pressure solver to be used.

Returns

A function that computes the right-hand side of the Navier-Stokes equations.

source

`,8))]),a("details",k,[a("summary",null,[s[11]||(s[11]=a("a",{id:"IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.right_hand_side!")],-1)),s[12]||(s[12]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=n('
julia
right_hand_side!(dudt, u, params_ref, t)
right_hand_side!(dudt, u, params_ref, t)

Computes the right-hand side of the Navier-Stokes equations in-place.

Arguments

  • dudt: The array to store the computed right-hand side.

  • u: The current velocity field.

  • params_ref: A reference to the parameters containing the setup and pressure solver.

  • t: The current time.

Returns

Nothing. The result is stored in dudt.

source

',8))])])}const v=T(r,[["render",c]]);export{L as __pageData,v as default}; +) -> IncompressibleNavierStokes.var"#right_hand_side#339"
create_right_hand_side(setup, psolver)

Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

Arguments

  • setup: The simulation setup containing grid and boundary conditions.

  • psolver: The pressure solver to be used.

Returns

A function that computes the right-hand side of the Navier-Stokes equations.

source

`,8))]),s("details",k,[s("summary",null,[a[11]||(a[11]=s("a",{id:"IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.right_hand_side!")],-1)),a[12]||(a[12]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[13]||(a[13]=n('
julia
right_hand_side!(dudt, u, params_ref, t)
right_hand_side!(dudt, u, params_ref, t)

Computes the right-hand side of the Navier-Stokes equations in-place.

Arguments

  • dudt: The array to store the computed right-hand side.

  • u: The current velocity field.

  • params_ref: A reference to the parameters containing the setup and pressure solver.

  • t: The current time.

Returns

Nothing. The result is stored in dudt.

source

',8))])])}const v=T(r,[["render",c]]);export{b as __pageData,v as default}; diff --git a/previews/PR126/assets/manual_sciml.md.D14bQOZ2.lean.js b/previews/PR126/assets/manual_sciml.md.qY4MTzys.lean.js similarity index 69% rename from previews/PR126/assets/manual_sciml.md.D14bQOZ2.lean.js rename to previews/PR126/assets/manual_sciml.md.qY4MTzys.lean.js index e49f0da9..050e8082 100644 --- a/previews/PR126/assets/manual_sciml.md.D14bQOZ2.lean.js +++ b/previews/PR126/assets/manual_sciml.md.qY4MTzys.lean.js @@ -1,4 +1,4 @@ -import{_ as T,c as i,j as a,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/framework.BSoZtefh.js";const L=JSON.parse('{"title":"Using IncompressibleNavierStokes in SciML","description":"","frontmatter":{},"headers":[],"relativePath":"manual/sciml.md","filePath":"manual/sciml.md","lastUpdated":null}'),r={name:"manual/sciml.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.605ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 5571.2 2067","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.497ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 23203.8 3367","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function c(u,s,y,E,H,f){const l=p("Badge");return e(),i("div",null,[s[14]||(s[14]=a("h1",{id:"Using-IncompressibleNavierStokes-in-SciML",tabindex:"-1"},[t("Using IncompressibleNavierStokes in SciML "),a("a",{class:"header-anchor",href:"#Using-IncompressibleNavierStokes-in-SciML","aria-label":'Permalink to "Using IncompressibleNavierStokes in SciML {#Using-IncompressibleNavierStokes-in-SciML}"'},"​")],-1)),s[15]||(s[15]=a("p",null,[t("The "),a("a",{href:"https://sciml.ai/",target:"_blank",rel:"noreferrer"},"SciML organization"),t(" is a collection of tools for solving equations and modeling systems. It has a coherent development principle, unified APIs over large collections of equation solvers, pervasive differentiability and sensitivity analysis, and features many of the highest performance and parallel implementations one can find.")],-1)),a("p",null,[s[2]||(s[2]=t("In particular, ")),s[3]||(s[3]=a("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl",-1)),s[4]||(s[4]=t(" contains tools to solve differential equations defined as ")),a("mjx-container",d,[(e(),i("svg",o,s[0]||(s[0]=[n('',1)]))),s[1]||(s[1]=a("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[a("mstyle",{displaystyle:"true",scriptlevel:"0"},[a("mfrac",null,[a("mrow",null,[a("mi",null,"d"),a("mi",null,"u")]),a("mrow",null,[a("mi",null,"d"),a("mi",null,"t")])])]),a("mo",null,"="),a("mi",null,"f"),a("mo",{stretchy:"false"},"("),a("mi",null,"u"),a("mo",null,","),a("mi",null,"t"),a("mo",{stretchy:"false"},")")])],-1))]),s[5]||(s[5]=t(" that include a large collection of solvers, sensitivity analysis, and more."))]),s[16]||(s[16]=a("p",null,"Using IncompressibleNavierStokes it is possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation and obtaining:",-1)),a("mjx-container",h,[(e(),i("svg",m,s[6]||(s[6]=[n('',1)]))),s[7]||(s[7]=a("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[a("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[a("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[a("mtr",null,[a("mtd",null,[a("mfrac",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")])]),a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("mi",null,"t")])])]),a("mtd",null,[a("mi"),a("mo",null,"="),a("mo",{stretchy:"false"},"("),a("mi",null,"I"),a("mo",null,"−"),a("mi",null,"G"),a("msup",null,[a("mi",null,"L"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mo",null,"−"),a("mn",null,"1")])]),a("mi",null,"W"),a("mi",null,"M"),a("mo",{stretchy:"false"},")"),a("mo",{stretchy:"false"},"("),a("mi",null,"F"),a("mo",{stretchy:"false"},"("),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")]),a("mo",{stretchy:"false"},")"),a("mo",null,"−"),a("msub",null,[a("mi",null,"y"),a("mi",null,"G")]),a("mo",{stretchy:"false"},")"),a("mo",null,"−"),a("mi",null,"G"),a("msup",null,[a("mi",null,"L"),a("mrow",{"data-mjx-texclass":"ORD"},[a("mo",null,"−"),a("mn",null,"1")])]),a("mi",null,"W"),a("mfrac",null,[a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("msub",null,[a("mi",null,"y"),a("mi",null,"M")])]),a("mrow",null,[a("mrow",{"data-mjx-texclass":"ORD"},[a("mi",{mathvariant:"normal"},"d")]),a("mi",null,"t")])])])]),a("mtr",null,[a("mtd"),a("mtd",null,[a("mi"),a("mo",null,"="),a("mi",null,"f"),a("mo",{stretchy:"false"},"("),a("msub",null,[a("mi",null,"u"),a("mi",null,"h")]),a("mo",{stretchy:"false"},")"),a("mo",null,".")])])])])],-1))]),s[17]||(s[17]=n(`

The derivation and the drawbacks of this approach are discussed in the documentation.

This projected right-hand side can be used in the SciML solvers to solve the Navier-Stokes equations. The following example shows how to use the SciML solvers to solve the ODEs obtained from the Navier-Stokes equations.

OrdinaryDiffEqTsit5

We here use the explicit solver Tsit5 from OrdinaryDiffEqTsit5 directly to skip loading all the toolchains for implicit solvers, which takes a while to install on GitHub.

julia
using OrdinaryDiffEqTsit5
+import{_ as T,c as i,j as s,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Using IncompressibleNavierStokes in SciML","description":"","frontmatter":{},"headers":[],"relativePath":"manual/sciml.md","filePath":"manual/sciml.md","lastUpdated":null}'),r={name:"manual/sciml.md"},d={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.605ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 5571.2 2067","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"52.497ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 23203.8 3367","aria-hidden":"true"},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""};function c(u,a,y,E,H,f){const l=p("Badge");return e(),i("div",null,[a[14]||(a[14]=s("h1",{id:"Using-IncompressibleNavierStokes-in-SciML",tabindex:"-1"},[t("Using IncompressibleNavierStokes in SciML "),s("a",{class:"header-anchor",href:"#Using-IncompressibleNavierStokes-in-SciML","aria-label":'Permalink to "Using IncompressibleNavierStokes in SciML {#Using-IncompressibleNavierStokes-in-SciML}"'},"​")],-1)),a[15]||(a[15]=s("p",null,[t("The "),s("a",{href:"https://sciml.ai/",target:"_blank",rel:"noreferrer"},"SciML organization"),t(" is a collection of tools for solving equations and modeling systems. It has a coherent development principle, unified APIs over large collections of equation solvers, pervasive differentiability and sensitivity analysis, and features many of the highest performance and parallel implementations one can find.")],-1)),s("p",null,[a[2]||(a[2]=t("In particular, ")),a[3]||(a[3]=s("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl",-1)),a[4]||(a[4]=t(" contains tools to solve differential equations defined as ")),s("mjx-container",d,[(e(),i("svg",o,a[0]||(a[0]=[n('',1)]))),a[1]||(a[1]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mstyle",{displaystyle:"true",scriptlevel:"0"},[s("mfrac",null,[s("mrow",null,[s("mi",null,"d"),s("mi",null,"u")]),s("mrow",null,[s("mi",null,"d"),s("mi",null,"t")])])]),s("mo",null,"="),s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",null,","),s("mi",null,"t"),s("mo",{stretchy:"false"},")")])],-1))]),a[5]||(a[5]=t(" that include a large collection of solvers, sensitivity analysis, and more."))]),a[16]||(a[16]=s("p",null,"Using IncompressibleNavierStokes it is possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation and obtaining:",-1)),s("mjx-container",h,[(e(),i("svg",m,a[6]||(a[6]=[n('',1)]))),a[7]||(a[7]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")])]),s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"t")])])]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"I"),s("mo",null,"−"),s("mi",null,"G"),s("msup",null,[s("mi",null,"L"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"W"),s("mi",null,"M"),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},"("),s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")]),s("mo",{stretchy:"false"},")"),s("mo",null,"−"),s("msub",null,[s("mi",null,"y"),s("mi",null,"G")]),s("mo",{stretchy:"false"},")"),s("mo",null,"−"),s("mi",null,"G"),s("msup",null,[s("mi",null,"L"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"W"),s("mfrac",null,[s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("msub",null,[s("mi",null,"y"),s("mi",null,"M")])]),s("mrow",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"t")])])])]),s("mtr",null,[s("mtd"),s("mtd",null,[s("mi"),s("mo",null,"="),s("mi",null,"f"),s("mo",{stretchy:"false"},"("),s("msub",null,[s("mi",null,"u"),s("mi",null,"h")]),s("mo",{stretchy:"false"},")"),s("mo",null,".")])])])])],-1))]),a[17]||(a[17]=n(`

The derivation and the drawbacks of this approach are discussed in the documentation.

This projected right-hand side can be used in the SciML solvers to solve the Navier-Stokes equations. The following example shows how to use the SciML solvers to solve the ODEs obtained from the Navier-Stokes equations.

OrdinaryDiffEqTsit5

We here use the explicit solver Tsit5 from OrdinaryDiffEqTsit5 directly to skip loading all the toolchains for implicit solvers, which takes a while to install on GitHub.

julia
using OrdinaryDiffEqTsit5
 using IncompressibleNavierStokes
 ax = range(0, 1, 101)
 setup = Setup(; x = (ax, ax), Re = 500.0)
@@ -9,53 +9,53 @@ import{_ as T,c as i,j as a,a as t,a5 as n,G as Q,B as p,o as e}from"./chunks/fr
 problem = ODEProblem(f, u0, tspan) #SciMLBase.ODEProblem
 sol = solve(problem, Tsit5(), reltol = 1e-8, abstol = 1e-8) # sol: SciMLBase.ODESolution
retcode: Success
 Interpolation: specialized 4th order "free" interpolation
-t: 212-element Vector{Float64}:
+t: 250-element Vector{Float64}:
  0.0
- 0.0016775779886938518
- 0.0024515906294917565
- 0.0036937756597660177
- 0.004744359932985878
- 0.005955362736923781
- 0.0071390751083091316
- 0.008386636861924696
- 0.009645156117581473
- 0.010936958169616918
+ 0.001556073323302609
+ 0.0022719733109081946
+ 0.003421770136632073
+ 0.004392878613129141
+ 0.005511656380449501
+ 0.006603690367079683
+ 0.007753321995088192
+ 0.008911590687048847
+ 0.010098916435172417
 
- 0.8984930998969533
- 0.9118748988126503
- 0.9254968389682297
- 0.9393543206945666
- 0.9534433190187698
- 0.9677595077716898
- 0.9822997420095799
- 0.9970628244296934
+ 0.9180935463070241
+ 0.9287950605670815
+ 0.9396497491283882
+ 0.950661239457886
+ 0.9618337193811496
+ 0.9731711225787223
+ 0.9846787126922614
+ 0.996361412839949
  1.0
-u: 212-element Vector{Array{Float64, 3}}:
- [1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433; … ; 1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433;;; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525; … ; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525]
- [1.4310738946896817 2.037963099708429 … 1.4310738946896817 2.037963099708429; 1.5869175083011309 2.0532385940120887 … 1.588327603138371 2.074915689630976; … ; 1.4310738946896817 2.0646385389800517 … 1.4707449035500546 2.037963099708429; 1.5869175083011309 2.074915689630976 … 1.5869175083011309 2.074915689630976;;; -0.3843075577328367 -0.6173973185403617 … -0.3843075577328367 -0.6173973185403617; -0.34228152248255667 -0.2420089432080796 … -0.25340888817604323 -0.38860275562819596; … ; -0.3843075577328367 -0.44793764689863946 … -0.28243935383757307 -0.6173973185403617; -0.34228152248255667 -0.38860275562819596 … -0.34228152248255667 -0.38860275562819596]
- [1.41677387871106 2.026206225445256 … 1.41677387871106 2.026206225445256; 1.5847511350956696 2.0556684473065676 … 1.5879577687647815 2.0866824407621585; … ; 1.41677387871106 2.065761529283348 … 1.4758327495143713 2.026206225445256; 1.5847511350956696 2.0866824407621585 … 1.5847511350956696 2.0866824407621585;;; -0.39899399061633306 -0.6593050784076984 … -0.39899399061633306 -0.6593050784076984; -0.34188065544854157 -0.20124022712840817 … -0.21133330910518938 -0.41592062803461616; … ; -0.39899399061633306 -0.4105277740400618 … -0.24894307730776155 -0.6593050784076984; -0.34188065544854157 -0.41592062803461616 … -0.34188065544854157 -0.41592062803461616]
- [1.391620717845853 2.005052930950454 … 1.391620717845853 2.005052930950454; 1.5785967602636484 2.0575009086990472 … 1.5862214072663858 2.1026182098459665; … ; 1.391620717845853 2.065879364931202 … 1.4830825537815986 2.005052930950454; 1.5785967602636484 2.1026182098459665 … 1.5785967602636484 2.1026182098459665;;; -0.4251380669009577 -0.7289528594833986 … -0.4251380669009577 -0.7289528594833986; -0.3424451007836423 -0.13576237682522638 … -0.14414083305738165 -0.46022008886919996; … ; -0.4251380669009577 -0.3514934686109557 … -0.19619839721969912 -0.7289528594833986; -0.3424451007836423 -0.46022008886919996 … -0.3424451007836423 -0.46022008886919996]
- [1.3683366507304067 1.9851283805313755 … 1.3683366507304067 1.9851283805313755; 1.5708280441413918 2.057102516014986 … 1.5836664262450098 2.1133081687983375; … ; 1.3683366507304067 2.0643939821950585 … 1.4883158148529916 1.9851283805313755; 1.5708280441413918 2.1133081687983375 … 1.5708280441413918 2.1133081687983375;;; -0.44984225330664884 -0.7902139129867269 … -0.44984225330664884 -0.7902139129867269; -0.34427101031988805 -0.08053363877178918 … -0.08782510495186124 -0.4982591359356883; … ; -0.44984225330664884 -0.30267536983452664 … -0.15268278547971995 -0.7902139129867269; -0.34427101031988805 -0.4982591359356883 … -0.34427101031988805 -0.4982591359356883]
- [1.3393682527712583 1.9600730631740435 … 1.3393682527712583 1.9600730631740435; 1.558999023490557 2.054493427553239 … 1.57950836847274 2.1225488522672933; … ; 1.3393682527712583 2.060933169437688 … 1.4933079794955013 1.9600730631740435; 1.558999023490557 2.1225488522672933 … 1.558999023490557 2.1225488522672933;;; -0.48138807330255545 -0.8635507784356191 … -0.48138807330255545 -0.8635507784356191; -0.34814473328245776 -0.01729418575514602 … -0.02373392763959295 -0.5429297006640443; … ; -0.48138807330255545 -0.2478305189843362 … -0.10389764719909182 -0.8635507784356191; -0.34814473328245776 -0.5429297006640443 … -0.34814473328245776 -0.5429297006640443]
- [1.309023603907686 1.9336578801571804 … 1.309023603907686 1.9336578801571804; 1.5445301181443962 2.0497976350046425 … 1.5742163600010184 2.1285084136651826; … ; 1.309023603907686 2.0558026885624203 … 1.497096545742828 1.9336578801571804; 1.5445301181443962 2.1285084136651826 … 1.5445301181443962 2.1285084136651826;;; -0.5154881691893956 -0.9380605402073995 … -0.5154881691893956 -0.9380605402073995; -0.3539882338969757 0.043835392813216995 … 0.03783033925544225 -0.5876158502792285; … ; -0.5154881691893956 -0.19583831365463097 … -0.05774146260707564 -0.9380605402073995; -0.3539882338969757 -0.5876158502792285 … -0.3539882338969757 -0.5876158502792285]
- [1.2750805605945816 1.904031237572206 … 1.2750805605945816 1.904031237572206; 1.5262751744748195 2.0426552525097845 … 1.5673604992364663 2.13165995622661; … ; 1.2750805605945816 2.0486025202291174 … 1.499910676274747 1.904031237572206; 1.5262751744748195 2.13165995622661 … 1.5262751744748195 2.13165995622661;;; -0.5549806081559608 -1.0195833757760737 … -0.5549806081559608 -1.0195833757760737; -0.36258175247807684 0.10726628202190677 … 0.101319014302577 -0.6359866935141251; … ; -0.5549806081559608 -0.1428955588958576 … -0.010821008352053463 -1.0195833757760737; -0.36258175247807684 -0.6359866935141251 … -0.36258175247807684 -0.6359866935141251]
- [1.2390293609716085 1.8725732991803752 … 1.2390293609716085 1.8725732991803752; 1.5048708458871851 2.033288015121601 … 1.5591546395991858 2.1317769112643323; … ; 1.2390293609716085 2.0395614281872345 … 1.501517456149803 1.8725732991803752; 1.5048708458871851 2.1317769112643323 … 1.5048708458871851 2.1317769112643323;;; -0.5985326754929186 -1.1048628282971928 … -0.5985326754929186 -1.1048628282971928; -0.3739981547416027 0.1699656370380011 … 0.16369222397237182 -0.6862777065879397; … ; -0.5985326754929186 -0.09150946309929023 … 0.034657669392390775 -1.1048628282971928; -0.3739981547416027 -0.6862777065879397 … -0.3739981547416027 -0.6862777065879397]
- [1.2003859162688768 1.8389443123237112 … 1.2003859162688768 1.8389443123237112; 1.4799487091064865 2.021549979114891 … 1.5494279100647357 2.1289256658165314; … ; 1.2003859162688768 2.0285213189520688 … 1.5018789444457645 1.8389443123237112; 1.4799487091064865 2.1289256658165314 … 1.4799487091064865 2.1289256658165314;;; -0.6470887764045219 -1.195453394721505 … -0.6470887764045219 -1.195453394721505; -0.38877926401317714 0.23273741070513682 … 0.22576607086796496 -0.7396157784188764; … ; -0.6470887764045219 -0.04093867588285244 … 0.07937258002515016 -1.195453394721505; -0.38877926401317714 -0.7396157784188764 … -0.38877926401317714 -0.7396157784188764]
+u: 250-element Vector{Array{Float64, 3}}:
+ [-0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767; … ; -0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767;;; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933; … ; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933]
+ [-0.2641988258161559 -0.6842105823948037 … -0.2641988258161559 -0.6842105823948037; -0.5554719943970878 -1.08372897008126 … -0.528894551624645 -1.125192961125848; … ; -0.2641988258161559 -0.6521599014458829 … -0.24660861817531196 -0.6842105823948037; -0.5554719943970878 -1.125192961125848 … -0.5554719943970878 -1.125192961125848;;; -0.8306925883975206 -0.35454388747389226 … -0.8306925883975206 -0.35454388747389226; -0.7586606649333464 -0.37724634474597607 … -0.8088154133813523 -0.35541234336812005; … ; -0.8306925883975206 -0.3913130883274286 … -0.8953078101536035 -0.35454388747389226; -0.7586606649333464 -0.35541234336812005 … -0.7586606649333464 -0.35541234336812005]
+ [-0.29635788393351875 -0.7203682339266996 … -0.29635788393351875 -0.7203682339266996; -0.5933162222243581 -1.1048800462393567 … -0.555300508914644 -1.1643784257900822; … ; -0.29635788393351875 -0.6735966431693873 … -0.2706142291619179 -0.7203682339266996; -0.5933162222243581 -1.1643784257900822 … -0.5933162222243581 -1.1643784257900822;;; -0.8012086656581645 -0.33810243969112724 … -0.8012086656581645 -0.33810243969112724; -0.72560424690118 -0.36724612686305513 … -0.7985295299330236 -0.3359125744024713; … ; -0.8012086656581645 -0.3913746919645915 … -0.8951618846757197 -0.33810243969112724; -0.72560424690118 -0.3359125744024713 … -0.72560424690118 -0.3359125744024713]
+ [-0.34870754688428995 -0.7792596863183789 … -0.34870754688428995 -0.7792596863183789; -0.6536904301507283 -1.1395757760607585 … -0.5983345984476474 -1.2266899400473281; … ; -0.34870754688428995 -0.708884091950401 … -0.3097852247390696 -0.7792596863183789; -0.6536904301507283 -1.2266899400473281 … -0.6536904301507283 -1.2266899400473281;;; -0.753216807906376 -0.31096681916681274 … -0.753216807906376 -0.31096681916681274; -0.6716905600910769 -0.3500842508696068 … -0.7807759349799628 -0.3042677935801389; … ; -0.753216807906376 -0.39012952150454966 … -0.8937554550180197 -0.31096681916681274; -0.6716905600910769 -0.3042677935801389 … -0.6716905600910769 -0.3042677935801389]
+ [-0.39361546526753777 -0.8297647119844105 … -0.39361546526753777 -0.8297647119844105; -0.7042833888763731 -1.1695019008798557 … -0.6352636457861688 -1.2786676916508652; … ; -0.39361546526753777 -0.7394933393542665 … -0.3434795771460868 -0.8297647119844105; -0.7042833888763731 -1.2786676916508652 … -0.7042833888763731 -1.2786676916508652;;; -0.7120319197818502 -0.2873699515434851 … -0.7120319197818502 -0.2873699515434851; -0.6253825540141095 -0.33459423769035684 … -0.7646027992159439 -0.2773323957675547; … ; -0.7120319197818502 -0.38775605243015243 … -0.8913876494923778 -0.2873699515434851; -0.6253825540141095 -0.2773323957675547 … -0.6253825540141095 -0.2773323957675547]
+ [-0.4461634229992338 -0.8887849397472614 … -0.4461634229992338 -0.8887849397472614; -0.7620974925853543 -1.2045755939435638 … -0.6784394648834674 -1.3377339263593422; … ; -0.4461634229992338 -0.7756381846387064 … -0.383011302659914 -0.8887849397472614; -0.7620974925853543 -1.3377339263593422 … -0.7620974925853543 -1.3377339263593422;;; -0.6637977532679439 -0.2594495139580558 … -0.6637977532679439 -0.2594495139580558; -0.5711913409704478 -0.31571389869368033 … -0.7446513079985353 -0.2462154169355641; … ; -0.6637977532679439 -0.38348972758687006 … -0.8872523550652668 -0.2594495139580558; -0.5711913409704478 -0.2462154169355641 … -0.5711913409704478 -0.2462154169355641]
+ [-0.49830968480792187 -0.947212977565134 … -0.49830968480792187 -0.947212977565134; -0.8180108075209138 -1.2393008281557438 … -0.7211930017278865 -1.3944547759171668; … ; -0.49830968480792187 -0.8117828430335173 … -0.42234916731621935 -0.947212977565134; -0.8180108075209138 -1.3944547759171668 … -0.8180108075209138 -1.3944547759171668;;; -0.615861342309636 -0.23148070686490213 … -0.615861342309636 -0.23148070686490213; -0.5174805693233535 -0.2963296028916884 … -0.7238475880139124 -0.21592330024807257; … ; -0.615861342309636 -0.3777229387338287 … -0.8816979780401091 -0.23148070686490213; -0.5174805693233535 -0.21592330024807257 … -0.5174805693233535 -0.21592330024807257]
+ [-0.5541277796045936 -1.009535330400806 … -0.5541277796045936 -1.009535330400806; -0.8762706094789094 -1.2762212525839953 … -0.7667917804973445 -1.453052732869159; … ; -0.5541277796045936 -0.8506901457986655 … -0.46457135411059036 -1.009535330400806; -0.8762706094789094 -1.453052732869159 … -0.8762706094789094 -1.453052732869159;;; -0.5644424424610739 -0.20133259927658942 … -0.5644424424610739 -0.20133259927658942; -0.46014869396484176 -0.27505011099912496 … -0.7005812177844533 -0.18432917246446268; … ; -0.5644424424610739 -0.36993227528061523 … -0.8741637253888226 -0.20133259927658942; -0.46014869396484176 -0.18432917246446268 … -0.46014869396484176 -0.18432917246446268]
+ [-0.6113188355612936 -1.0730901502800942 … -0.6113188355612936 -1.0730901502800942; -0.9342761753547372 -1.3136112244033429 … -0.8132665202195992 -1.5107941098760225; … ; -0.6113188355612936 -0.8906927667179808 … -0.5079484072907596 -1.0730901502800942; -0.9342761753547372 -1.5107941098760225 … -0.9342761753547372 -1.5107941098760225;;; -0.5116144577915119 -0.17030399583320407 … -0.5116144577915119 -0.17030399583320407; -0.4016783050313231 -0.25288023085937766 … -0.6757986885447391 -0.15304289223675197; … ; -0.5116144577915119 -0.36030644877162527 … -0.8647617965965074 -0.17030399583320407; -0.4016783050313231 -0.15304289223675197 … -0.4016783050313231 -0.15304289223675197]
+ [-0.6709207752864298 -1.1389341858331228 … -0.6709207752864298 -1.1389341858331228; -0.9929267103789987 -1.351922786908686 … -0.8613612264733349 -1.568464077675137; … ; -0.6709207752864298 -0.9324262333581842 … -0.5532718324517414 -1.1389341858331228; -0.9929267103789987 -1.568464077675137 … -0.9929267103789987 -1.568464077675137;;; -0.45637398637517057 -0.13791381931950897 … -0.45637398637517057 -0.13791381931950897; -0.34114843658326266 -0.22960206139636438 … -0.6490986149468652 -0.12181430001360327; … ; -0.45637398637517057 -0.3486158886946604 … -0.8531831743790232 -0.13791381931950897; -0.34114843658326266 -0.12181430001360327 … -0.34114843658326266 -0.12181430001360327]
 
- [0.6048854718137157 1.7487841124129428 … 0.6048854718137157 1.7487841124129428; 0.5896185921818861 0.1505645261347854 … 0.15240233330966635 2.1036591177156305; … ; 0.6048854718137157 0.16279095516406053 … 0.16229980382267836 1.7487841124129428; 0.5896185921818861 2.1036591177156305 … 0.5896185921818861 2.1036591177156305;;; -6.86780939456026 -7.0267128790424955 … -6.86780939456026 -7.0267128790424955; -5.717907919358522 -0.15627288942074785 … -0.16849931844999072 -5.943197746830108; … ; -6.86780939456026 -0.1657913435934261 … -0.1749933043938824 -7.0267128790424955; -5.717907919358522 -5.943197746830108 … -5.717907919358522 -5.943197746830108]
- [0.6050014144769785 1.748153123634293 … 0.6050014144769785 1.748153123634293; 0.5900975469606192 0.15052392859078634 … 0.15312228527657937 2.103787615228544; … ; 0.6050014144769785 0.16087478543160325 … 0.16144707846505515 1.748153123634293; 0.5900975469606192 2.103787615228544 … 0.5900975469606192 2.103787615228544;;; -6.867210580036855 -7.027409795615081 … -6.867210580036855 -7.027409795615081; -5.716365792589818 -0.15490284078797595 … -0.16525369762875974 -5.942661142693805; … ; -6.867210580036855 -0.16528144072912018 … -0.17237448288502757 -7.027409795615081; -5.716365792589818 -5.942661142693805 … -5.716365792589818 -5.942661142693805]
- [0.6044249222451645 1.7469106126508502 … 0.6044249222451645 1.7469106126508502; 0.5900274372629859 0.1498402974886133 … 0.15317663182585173 2.1033964431830405; … ; 0.6044249222451645 0.15830772883283686 … 0.15987551123188729 1.7469106126508502; 0.5900274372629859 2.1033964431830405 … 0.5900274372629859 2.1033964431830405;;; -6.867381645601023 -7.028796544094941 … -6.867381645601023 -7.028796544094941; -5.715518625925486 -0.15399665041844993 … -0.16246408176264088 -5.942792582381415; … ; -6.867381645601023 -0.16524854794342847 … -0.1702736286334392 -7.028796544094941; -5.715518625925486 -5.942792582381415 … -5.715518625925486 -5.942792582381415]
- [0.6031812862420463 1.7450953976257477 … 0.6031812862420463 1.7450953976257477; 0.5894024122775645 0.1485366310428622 … 0.1525727845682203 2.1024938421686965; … ; 0.6031812862420463 0.1551333805764159 … 0.15761387899624388 1.7450953976257477; 0.5894024122775645 2.1024938421686965 … 0.5894024122775645 2.1024938421686965;;; -6.868268679688738 -7.030804299340781 … -6.868268679688738 -7.030804299340781; -5.715349687682886 -0.15353358777170695 … -0.16013033730522802 -5.943558268755094; … ; -6.868268679688738 -0.16563634636437952 … -0.16865471950754676 -7.030804299340781; -5.715349687682886 -5.943558268755094 … -5.715349687682886 -5.943558268755094]
- [0.6013085665698479 1.742755945895593 … 0.6013085665698479 1.742755945895593; 0.5882286005654174 0.14664447091012814 … 0.15132900103549865 2.1010980291583543; … ; 0.6013085665698479 0.15140235565122434 … 0.15470156992990525 1.742755945895593; 0.5882286005654174 2.1010980291583543 … 0.5882286005654174 2.1010980291583543;;; -6.869807557370203 -7.033358035379117 … -6.869807557370203 -7.033358035379117; -5.7158292479648685 -0.15348060101411037 … -0.15823848575517419 -5.944913967346289; … ; -6.869807557370203 -0.16637975997295137 … -0.1674702015560798 -7.033358035379117; -5.7158292479648685 -5.944913967346289 … -5.7158292479648685 -5.944913967346289]
- [0.598855892317473 1.7399486131942257 … 0.598855892317473 1.7399486131942257; 0.5865234384949342 0.14420257362155195 … 0.14947336059990066 2.099236269320718; … ; 0.598855892317473 0.14717056425114167 … 0.1511869228624846 1.7399486131942257; 0.5865234384949342 2.099236269320718 … 0.5865234384949342 2.099236269320718;;; -6.871926544771357 -7.036378952815045 … -6.871926544771357 -7.036378952815045; -5.716916280449167 -0.1537941605127281 … -0.15676215114228556 -5.946806979844537; … ; -6.871926544771357 -0.16740741888827054 … -0.16666333597637634 -7.036378952815045; -5.716916280449167 -5.946806979844537 … -5.716916280449167 -5.946806979844537]
- [0.5958811815730007 1.7367353970175616 … 0.5958811815730007 1.7367353970175616; 0.5843144049204488 0.14125514734050593 … 0.14704223379031514 2.096943457889973; … ; 0.5958811815730007 0.14249693421680834 … 0.14712492153548007 1.7367353970175616; 0.5843144049204488 2.096943457889973 … 0.5843144049204488 2.096943457889973;;; -6.8745491457220105 -7.0397870793822195 … -6.8745491457220105 -7.0397870793822195; -5.718560585210772 -0.15442234356989648 … -0.15566413044616673 -5.949178459716383; … ; -6.8745491457220105 -0.16864416365228513 … -0.1661704881941689 -7.0397870793822195; -5.718560585210772 -5.949178459716383 … -5.718560585210772 -5.949178459716383]
- [0.5924486575208425 1.733181704205474 … 0.5924486575208425 1.733181704205474; 0.5816373449202014 0.13785000188772933 … 0.14407842680583244 2.0942604659118893; … ; 0.5924486575208425 0.13744136679333582 … 0.14257484181118496 1.733181704205474; 0.5816373449202014 2.0942604659118893 … 0.5816373449202014 2.0942604659118893;;; -6.877596861611518 -7.043503508107856 … -6.877596861611518 -7.043503508107856; -5.720705249283326 -0.15530711497910096 … -0.15489847988467512 -5.951965779045637; … ; -6.877596861611518 -0.17001336497945702 … -0.16592357051038312 -7.043503508107856; -5.720705249283326 -5.951965779045637 … -5.720705249283326 -5.951965779045637]
- [0.5917236853921971 1.7324466138864494 … 0.5917236853921971 1.7324466138864494; 0.5810578454401288 0.1371288733000369 … 0.14343522277923373 2.0936892619948675; … ; 0.5917236853921971 0.13640463537769287 … 0.14162539765649912 1.7324466138864494; 0.5810578454401288 2.0936892619948675 … 0.5810578454401288 2.0936892619948675;;; -6.878241166841342 -7.044266014850046 … -6.878241166841342 -7.044266014850046; -5.721181922711051 -0.15550653671354817 … -0.15478229879117186 -5.9525588810990575; … ; -6.878241166841342 -0.1702923518797587 … -0.1658978521484009 -7.044266014850046; -5.721181922711051 -5.9525588810990575 … -5.721181922711051 -5.9525588810990575]

Alternatively, it is also possible to use an in-place formulation

julia
f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
+ [-1.2931007986840914 -1.7031160512642476 … -1.2931007986840914 -1.7031160512642476; -0.4476201050854184 0.7051094661178132 … 0.6976764032560655 -0.691373970429577; … ; -1.2931007986840914 0.6941724708221193 … 0.6861745240666373 -1.7031160512642476; -0.4476201050854184 -0.691373970429577 … -0.4476201050854184 -0.691373970429577;;; -0.3319201786040405 -1.1066968228277734 … -0.3319201786040405 -1.1066968228277734; -0.7339027349829377 0.08146985584337366 … 0.0924068511390998 -1.6781148837864952; … ; -0.3319201786040405 0.06503299545433096 … 0.07637620818235707 -1.1066968228277734; -0.7339027349829377 -1.6781148837864952 … -0.7339027349829377 -1.6781148837864952]
+ [-1.3033302294258857 -1.713179343473074 … -1.3033302294258857 -1.713179343473074; -0.45795886772885214 0.7040803213569757 … 0.696660491938344 -0.7012315932885084; … ; -1.3033302294258857 0.6935209673176284 … 0.6857245635110408 -1.713179343473074; -0.45795886772885214 -0.7012315932885084 … -0.45795886772885214 -0.7012315932885084;;; -0.3422573519004336 -1.1177053994467887 … -0.3422573519004336 -1.1177053994467887; -0.7445184282831224 0.08323181645056422 … 0.09379117048994434 -1.689339625763256; … ; -0.3422573519004336 0.0673893886406746 … 0.07840672901885568 -1.1177053994467887; -0.7445184282831224 -1.689339625763256 … -0.7445184282831224 -1.689339625763256]
+ [-1.3134095274974067 -1.7231391610450235 … -1.3134095274974067 -1.7231391610450235; -0.4680589497716697 0.7031425899303251 … 0.695876566510165 -0.7109406378100851; … ; -1.3134095274974067 0.6929260098627148 … 0.6854430483776558 -1.7231391610450235; -0.4680589497716697 -0.7109406378100851 … -0.4680589497716697 -0.7109406378100851;;; -0.3526741483872546 -1.128829845262931 … -0.3526741483872546 -1.128829845262931; -0.7548787322869919 0.0849027348933907 … 0.09511931496103386 -1.7003293819307372; … ; -0.3526741483872546 0.06937447110855348 … 0.08011130382809377 -1.128829845262931; -0.7548787322869919 -1.7003293819307372 … -0.7548787322869919 -1.7003293819307372]
+ [-1.3233838504056097 -1.733018259188943 … -1.3233838504056097 -1.733018259188943; -0.47795630815458795 0.7023007080275229 … 0.6953117322349547 -0.7205144393149414; … ; -1.3233838504056097 0.6923841222225156 … 0.6853073456180867 -1.733018259188943; -0.47795630815458795 -0.7205144393149414 … -0.47795630815458795 -0.7205144393149414;;; -0.3633376127439469 -1.140243995152969 … -0.3633376127439469 -1.140243995152969; -0.765170719883973 0.08632948540266908 … 0.09624607120770974 -1.711280985623885; … ; -0.3633376127439469 0.07086131054405251 … 0.08136799295997219 -1.140243995152969; -0.765170719883973 -1.711280985623885 … -0.765170719883973 -1.711280985623885]
+ [-1.3333033984017677 -1.74284474256906 … -1.3333033984017677 -1.74284474256906; -0.48769451733971814 0.7015524141228384 … 0.6949448881942601 -0.7299735203232772; … ; -1.3333033984017677 0.691886659893196 … 0.6852888281442672 -1.74284474256906; -0.48769451733971814 -0.7299735203232772 … -0.48769451733971814 -0.7299735203232772;;; -0.374400132844818 -1.1521046561379444 … -0.374400132844818 -1.1521046561379444; -0.775571081780308 0.08737433752485839 … 0.09704009175453462 -1.722379543235927; … ; -0.374400132844818 0.071742276692659 … 0.082071864773802 -1.1521046561379444; -0.775571081780308 -1.722379543235927 … -0.775571081780308 -1.722379543235927]
+ [-1.3432214137384335 -1.7526504647780206 … -1.3432214137384335 -1.7526504647780206; -0.49732306162838485 0.70088907410381 … 0.6947475158940635 -0.7393444366885983; … ; -1.3432214137384335 0.6914207474295654 … 0.6853541639991926 -1.7526504647780206; -0.49732306162838485 -0.7393444366885983 … -0.49732306162838485 -0.7393444366885983;;; -0.3859968980335953 -1.1645485037241428 … -0.3859968980335953 -1.1645485037241428; -0.7862425457346708 0.0879175374118662 … 0.097385864086145 -1.7337939927024886; … ; -0.3859968980335953 0.07193028639620751 … 0.08213587731725909 -1.1645485037241428; -0.7862425457346708 -1.7337939927024886 … -0.7862425457346708 -1.7337939927024886]
+ [-1.3531940008756465 -1.7624711663329278 … -1.3531940008756465 -1.7624711663329278; -0.5068973837688652 0.7002964119879739 … 0.6946849079856697 -0.7486602438730344; … ; -1.3531940008756465 0.6909705203116911 … 0.6854669804319274 -1.7624711663329278; -0.5068973837688652 -0.7486602438730344 … -0.5068973837688652 -0.7486602438730344;;; -0.39824630093679814 -1.1776923174767342 … -0.39824630093679814 -1.1776923174767342; -0.7973333113635569 0.08785911634943988 … 0.09718500802575686 -1.7456760088369485; … ; -0.39824630093679814 0.07135944587144352 … 0.08149131311546902 -1.1776923174767342; -0.7973333113635569 -1.7456760088369485 … -0.7973333113635569 -1.7456760088369485]
+ [-1.3632768075167574 -1.7723434658809323 … -1.3632768075167574 -1.7723434658809323; -0.5164758240843459 0.699755933948873 … 0.6947179115633345 -0.7579578537808336; … ; -1.3632768075167574 0.6905188089567419 … 0.6855898083159826 -1.7723434658809323; -0.5164758240843459 -0.7579578537808336 … -0.5164758240843459 -0.7579578537808336;;; -0.4112474111851038 -1.1916302889845585 … -0.4112474111851038 -1.1916302889845585; -0.8089740336813523 0.08711969029762791 … 0.09635681528979329 -1.7581564675498191; … ; -0.4112474111851038 0.06998500742819176 … 0.0800877787811059 -1.1916302889845585; -0.8089740336813523 -1.7581564675498191 … -0.8089740336813523 -1.7581564675498191]
+ [-1.3664165852536658 -1.7754037561894658 … -1.3664165852536658 -1.7754037561894658; -0.5194395386158631 0.6995965671054124 … 0.6947409485882146 -0.7608273016555152; … ; -1.3664165852536658 0.6903765813076334 … 0.6856239819956859 -1.7754037561894658; -0.5194395386158631 -0.7608273016555152 … -0.5194395386158631 -0.7608273016555152;;; -0.4154209528727798 -1.196100131813737 … -0.4154209528727798 -1.196100131813737; -0.8126924689970357 0.08674468242062354 … 0.09596466821843684 -1.7621432231857432; … ; -0.4154209528727798 0.06939482878041375 … 0.07949641409494351 -1.196100131813737; -0.8126924689970357 -1.7621432231857432 … -0.8126924689970357 -1.7621432231857432]

Alternatively, it is also possible to use an in-place formulation

julia
f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
 u = similar(u0)
 du = similar(u0)
 p = nothing
 t = 0.0
-f!(du,u,p,t)

that is usually faster than the out-of-place formulation.

You can look here for more information on how to use the SciML solvers and all the options available.

API

`,10)),a("details",g,[a("summary",null,[s[8]||(s[8]=a("a",{id:"IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_right_hand_side")],-1)),s[9]||(s[9]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[10]||(s[10]=n(`
julia
create_right_hand_side(
+f!(du,u,p,t)

that is usually faster than the out-of-place formulation.

You can look here for more information on how to use the SciML solvers and all the options available.

API

`,10)),s("details",g,[s("summary",null,[a[8]||(a[8]=s("a",{id:"IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.create_right_hand_side-Tuple{Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_right_hand_side")],-1)),a[9]||(a[9]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[10]||(a[10]=n(`
julia
create_right_hand_side(
     setup,
     psolver
-) -> IncompressibleNavierStokes.var"#right_hand_side#343"
create_right_hand_side(setup, psolver)

Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

Arguments

  • setup: The simulation setup containing grid and boundary conditions.

  • psolver: The pressure solver to be used.

Returns

A function that computes the right-hand side of the Navier-Stokes equations.

source

`,8))]),a("details",k,[a("summary",null,[s[11]||(s[11]=a("a",{id:"IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}"},[a("span",{class:"jlbinding"},"IncompressibleNavierStokes.right_hand_side!")],-1)),s[12]||(s[12]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[13]||(s[13]=n('
julia
right_hand_side!(dudt, u, params_ref, t)
right_hand_side!(dudt, u, params_ref, t)

Computes the right-hand side of the Navier-Stokes equations in-place.

Arguments

  • dudt: The array to store the computed right-hand side.

  • u: The current velocity field.

  • params_ref: A reference to the parameters containing the setup and pressure solver.

  • t: The current time.

Returns

Nothing. The result is stored in dudt.

source

',8))])])}const v=T(r,[["render",c]]);export{L as __pageData,v as default}; +) -> IncompressibleNavierStokes.var"#right_hand_side#339"
create_right_hand_side(setup, psolver)

Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

Arguments

  • setup: The simulation setup containing grid and boundary conditions.

  • psolver: The pressure solver to be used.

Returns

A function that computes the right-hand side of the Navier-Stokes equations.

source

`,8))]),s("details",k,[s("summary",null,[a[11]||(a[11]=s("a",{id:"IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}",href:"#IncompressibleNavierStokes.right_hand_side!-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.right_hand_side!")],-1)),a[12]||(a[12]=t()),Q(l,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),a[13]||(a[13]=n('
julia
right_hand_side!(dudt, u, params_ref, t)
right_hand_side!(dudt, u, params_ref, t)

Computes the right-hand side of the Navier-Stokes equations in-place.

Arguments

  • dudt: The array to store the computed right-hand side.

  • u: The current velocity field.

  • params_ref: A reference to the parameters containing the setup and pressure solver.

  • t: The current time.

Returns

Nothing. The result is stored in dudt.

source

',8))])])}const v=T(r,[["render",c]]);export{b as __pageData,v as default}; diff --git a/previews/PR126/assets/manual_setup.md.axplHjHr.js b/previews/PR126/assets/manual_setup.md.DlOs-IW7.js similarity index 97% rename from previews/PR126/assets/manual_setup.md.axplHjHr.js rename to previews/PR126/assets/manual_setup.md.DlOs-IW7.js index a6f47da6..011d5efa 100644 --- a/previews/PR126/assets/manual_setup.md.axplHjHr.js +++ b/previews/PR126/assets/manual_setup.md.DlOs-IW7.js @@ -1,10 +1,10 @@ -import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.BSoZtefh.js";const T1=JSON.parse('{"title":"Problem setup","description":"","frontmatter":{},"headers":[],"relativePath":"manual/setup.md","filePath":"manual/setup.md","lastUpdated":null}'),p={name:"manual/setup.md"},Q={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.227ex",height:"1.799ex",role:"img",focusable:"false",viewBox:"0 -442 2310.5 795.1","aria-hidden":"true"},N={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.685ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 22402.7 2399","aria-hidden":"true"},S={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.346ex",height:"2.004ex",role:"img",focusable:"false",viewBox:"0 -846 4131.1 886","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.12ex",height:"2.664ex",role:"img",focusable:"false",viewBox:"0 -833.9 8893.2 1177.3","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.556ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 5549.6 877","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.89ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -694 3045.5 844","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.004ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.941ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -868.9 7046 1312.8","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.842ex"},xmlns:"http://www.w3.org/2000/svg",width:"40.13ex",height:"4.899ex",role:"img",focusable:"false",viewBox:"0 -1351.5 17737.3 2165.5","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.486ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1982.9 650","aria-hidden":"true"},$={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},s1={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},e1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},i1={class:"jldocstring custom-block",open:""};function l1(n1,t,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[t[124]||(t[124]=s("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),s("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),t[125]||(t[125]=s("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),s("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t[126]||(t[126]=s("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),s("details",Q,[s("summary",null,[t[0]||(t[0]=s("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),t[1]||(t[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[2]||(t[2]=a('
julia
abstract type AbstractBC

Boundary condition for one side of the domain.

Fields

source

',4))]),s("details",T,[s("summary",null,[t[3]||(t[3]=s("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),t[4]||(t[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[5]||(t[5]=a('
julia
struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

Fields

  • u: Boundary condition

source

',6))]),s("details",m,[s("summary",null,[t[6]||(t[6]=s("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),t[7]||(t[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[8]||(t[8]=a('
julia
struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

Periodic boundary conditions. Must be periodic on both sides.

Fields

source

',4))]),s("details",h,[s("summary",null,[t[9]||(t[9]=s("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),t[10]||(t[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[11]||(t[11]=a('
julia
struct PressureBC <: IncompressibleNavierStokes.AbstractBC

Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

Fields

source

',5))]),s("details",c,[s("summary",null,[t[12]||(t[12]=s("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),t[13]||(t[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[14]||(t[14]=a('
julia
struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

Fields

source

',4))]),s("details",g,[s("summary",null,[t[15]||(t[15]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),t[16]||(t[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[17]||(t[17]=a('
julia
apply_bc_p!(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (in-place version).

source

',3))]),s("details",k,[s("summary",null,[t[18]||(t[18]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),t[19]||(t[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[20]||(t[20]=a('
julia
apply_bc_p(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (differentiable version).

source

',3))]),s("details",u,[s("summary",null,[t[21]||(t[21]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),t[22]||(t[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[23]||(t[23]=a('
julia
apply_bc_temp!(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (in-place version).

source

',3))]),s("details",b,[s("summary",null,[t[24]||(t[24]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),t[25]||(t[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[26]||(t[26]=a('
julia
apply_bc_temp(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (differentiable version).

source

',3))]),s("details",y,[s("summary",null,[t[27]||(t[27]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),t[28]||(t[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[29]||(t[29]=a('
julia
apply_bc_u!(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (in-place version).

source

',3))]),s("details",f,[s("summary",null,[t[30]||(t[30]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),t[31]||(t[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[32]||(t[32]=a('
julia
apply_bc_u(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (differentiable version).

source

',3))]),s("details",v,[s("summary",null,[t[33]||(t[33]=s("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),t[34]||(t[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[35]||(t[35]=a('
julia
boundary(β, N, I, isright) -> Any

Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

source

',3))]),s("details",E,[s("summary",null,[t[36]||(t[36]=s("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),t[37]||(t[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[38]||(t[38]=a('
julia
offset_p(bc, isnormal, isright)

Number of non-DOF pressure components at boundary.

source

',3))]),s("details",x,[s("summary",null,[t[39]||(t[39]=s("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),t[40]||(t[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[41]||(t[41]=a('
julia
offset_u(bc, isnormal, isright)

Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

source

',3))]),t[127]||(t[127]=s("h2",{id:"grid",tabindex:"-1"},[e("Grid "),s("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),s("details",w,[s("summary",null,[t[42]||(t[42]=s("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),t[43]||(t[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[44]||(t[44]=a(`
julia
struct Dimension{N}

Represent an N-dimensional space. Returns N when called.

julia
julia> d = Dimension(3)
+import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.CojPSOJE.js";const T1=JSON.parse('{"title":"Problem setup","description":"","frontmatter":{},"headers":[],"relativePath":"manual/setup.md","filePath":"manual/setup.md","lastUpdated":null}'),p={name:"manual/setup.md"},Q={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.227ex",height:"1.799ex",role:"img",focusable:"false",viewBox:"0 -442 2310.5 795.1","aria-hidden":"true"},N={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.685ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 22402.7 2399","aria-hidden":"true"},S={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.346ex",height:"2.004ex",role:"img",focusable:"false",viewBox:"0 -846 4131.1 886","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.12ex",height:"2.664ex",role:"img",focusable:"false",viewBox:"0 -833.9 8893.2 1177.3","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.556ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 5549.6 877","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.89ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -694 3045.5 844","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.004ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.941ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -868.9 7046 1312.8","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.842ex"},xmlns:"http://www.w3.org/2000/svg",width:"40.13ex",height:"4.899ex",role:"img",focusable:"false",viewBox:"0 -1351.5 17737.3 2165.5","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.486ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1982.9 650","aria-hidden":"true"},$={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},s1={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},e1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},i1={class:"jldocstring custom-block",open:""};function l1(n1,t,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[t[124]||(t[124]=s("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),s("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),t[125]||(t[125]=s("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),s("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t[126]||(t[126]=s("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),s("details",Q,[s("summary",null,[t[0]||(t[0]=s("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),t[1]||(t[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[2]||(t[2]=a('
julia
abstract type AbstractBC

Boundary condition for one side of the domain.

Fields

source

',4))]),s("details",T,[s("summary",null,[t[3]||(t[3]=s("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),t[4]||(t[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[5]||(t[5]=a('
julia
struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

Fields

  • u: Boundary condition

source

',6))]),s("details",m,[s("summary",null,[t[6]||(t[6]=s("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),t[7]||(t[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[8]||(t[8]=a('
julia
struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

Periodic boundary conditions. Must be periodic on both sides.

Fields

source

',4))]),s("details",h,[s("summary",null,[t[9]||(t[9]=s("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),t[10]||(t[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[11]||(t[11]=a('
julia
struct PressureBC <: IncompressibleNavierStokes.AbstractBC

Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

Fields

source

',5))]),s("details",g,[s("summary",null,[t[12]||(t[12]=s("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),t[13]||(t[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[14]||(t[14]=a('
julia
struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

Fields

source

',4))]),s("details",c,[s("summary",null,[t[15]||(t[15]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),t[16]||(t[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[17]||(t[17]=a('
julia
apply_bc_p!(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (in-place version).

source

',3))]),s("details",k,[s("summary",null,[t[18]||(t[18]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),t[19]||(t[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[20]||(t[20]=a('
julia
apply_bc_p(p, t, setup; kwargs...) -> Any

Apply pressure boundary conditions (differentiable version).

source

',3))]),s("details",u,[s("summary",null,[t[21]||(t[21]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),t[22]||(t[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[23]||(t[23]=a('
julia
apply_bc_temp!(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (in-place version).

source

',3))]),s("details",b,[s("summary",null,[t[24]||(t[24]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),t[25]||(t[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[26]||(t[26]=a('
julia
apply_bc_temp(temp, t, setup; kwargs...) -> Any

Apply temperature boundary conditions (differentiable version).

source

',3))]),s("details",y,[s("summary",null,[t[27]||(t[27]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),t[28]||(t[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[29]||(t[29]=a('
julia
apply_bc_u!(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (in-place version).

source

',3))]),s("details",f,[s("summary",null,[t[30]||(t[30]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),t[31]||(t[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[32]||(t[32]=a('
julia
apply_bc_u(u, t, setup; kwargs...) -> Any

Apply velocity boundary conditions (differentiable version).

source

',3))]),s("details",v,[s("summary",null,[t[33]||(t[33]=s("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),t[34]||(t[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[35]||(t[35]=a('
julia
boundary(β, N, I, isright) -> Any

Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

source

',3))]),s("details",E,[s("summary",null,[t[36]||(t[36]=s("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),t[37]||(t[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[38]||(t[38]=a('
julia
offset_p(bc, isnormal, isright)

Number of non-DOF pressure components at boundary.

source

',3))]),s("details",x,[s("summary",null,[t[39]||(t[39]=s("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),t[40]||(t[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[41]||(t[41]=a('
julia
offset_u(bc, isnormal, isright)

Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

source

',3))]),t[127]||(t[127]=s("h2",{id:"grid",tabindex:"-1"},[e("Grid "),s("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),s("details",w,[s("summary",null,[t[42]||(t[42]=s("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),t[43]||(t[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[44]||(t[44]=a(`
julia
struct Dimension{N}

Represent an N-dimensional space. Returns N when called.

julia
julia> d = Dimension(3)
 Dimension{3}()
 
 julia> d()
-3

Fields

source

`,5))]),s("details",j,[s("summary",null,[t[45]||(t[45]=s("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),t[46]||(t[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[55]||(t[55]=a('
julia
Grid(; x, boundary_conditions, backend)

Create useful quantities for Cartesian box mesh ``x[1] \\times \\dots \\times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

',2)),s("ul",null,[t[54]||(t[54]=a("
  • N[α]: Number of finite volumes in direction β, including ghost volumes

  • Nu[α][β]: Number of u[α] velocity DOFs in direction β

  • Np[α]: Number of pressure DOFs in direction α

  • Iu[α]: Cartesian index range of u[α] velocity DOFs

  • Ip: Cartesian index range of pressure DOFs

  • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

  • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

  • xu[α][β]: β-coordinates of u[α] velocity points

  • xp[α]: α-coordinates of pressure points

  • Δ[α]: All volume widths in direction α

  • Δu[α]: Distance between pressure points in direction α

  • ",11)),s("li",null,[s("p",null,[t[51]||(t[51]=s("code",null,"A[α][β]",-1)),t[52]||(t[52]=e(": Interpolation weights from α-face centers ")),s("mjx-container",H,[(o(),n("svg",M,t[47]||(t[47]=[a('',1)]))),t[48]||(t[48]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"I")])])],-1))]),t[53]||(t[53]=e(" to ")),s("mjx-container",L,[(o(),n("svg",C,t[49]||(t[49]=[a('',1)]))),t[50]||(t[50]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"I"),s("mo",null,"±"),s("msub",null,[s("mi",null,"h"),s("mi",null,"β")])])])])],-1))])])])]),t[56]||(t[56]=s("p",null,"Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.",-1)),t[57]||(t[57]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",N,[s("summary",null,[t[58]||(t[58]=s("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),t[59]||(t[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[62]||(t[62]=a('
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    ',2)),s("mjx-container",F,[(o(),n("svg",Z,t[60]||(t[60]=[a('',1)]))),t[61]||(t[61]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mfrac",null,[s("mn",null,"1"),s("mn",null,"2")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"π"),s("mfrac",null,[s("mi",null,"i"),s("mi",null,"n")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"i"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[63]||(t[63]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.stretched_grid"},[s("code",null,"stretched_grid")]),e(".")],-1)),t[64]||(t[64]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",S,[s("summary",null,[t[65]||(t[65]=s("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),t[66]||(t[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[67]||(t[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),s("details",A,[s("summary",null,[t[68]||(t[68]=s("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),t[69]||(t[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[94]||(t[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    -stretched_grid(a, b, N, s) -> Any
    `,1)),s("p",null,[t[80]||(t[80]=a("Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector ",15)),s("mjx-container",D,[(o(),n("svg",I,t[70]||(t[70]=[a('',1)]))),t[71]||(t[71]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"∈"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"R")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"N"),s("mo",null,"+"),s("mn",null,"1")])])])],-1))]),t[81]||(t[81]=e(" such that ")),s("mjx-container",V,[(o(),n("svg",B,t[72]||(t[72]=[a('',1)]))),t[73]||(t[73]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"n")]),s("msup",null,[s("mi",null,"s"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"h")])],-1))]),t[82]||(t[82]=e(" for ")),s("mjx-container",O,[(o(),n("svg",P,t[74]||(t[74]=[a('',1)]))),t[75]||(t[75]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[83]||(t[83]=e(". Setting ")),s("mjx-container",z,[(o(),n("svg",R,t[76]||(t[76]=[a('',1)]))),t[77]||(t[77]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"N")]),s("mo",null,"="),s("mi",null,"b")])],-1))]),t[84]||(t[84]=e(" then gives ")),s("mjx-container",G,[(o(),n("svg",J,t[78]||(t[78]=[a('',1)]))),t[79]||(t[79]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"h"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"s")]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])])])],-1))]),t[85]||(t[85]=e(", resulting in"))]),s("mjx-container",q,[(o(),n("svg",U,t[86]||(t[86]=[a('',1)]))),t[87]||(t[87]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"n")])]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])]),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N"),s("mo",null,".")])],-1))]),s("p",null,[t[90]||(t[90]=e("Note that ")),t[91]||(t[91]=s("code",null,"stretched_grid(a, b, N, s)[n]",-1)),t[92]||(t[92]=e(" corresponds to ")),s("mjx-container",X,[(o(),n("svg",K,t[88]||(t[88]=[a('',1)]))),t[89]||(t[89]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"n"),s("mo",null,"−"),s("mn",null,"1")])])])],-1))]),t[93]||(t[93]=e("."))]),t[95]||(t[95]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("code",null,"cosine_grid")]),e(".")],-1)),t[96]||(t[96]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",$,[s("summary",null,[t[97]||(t[97]=s("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),t[98]||(t[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[99]||(t[99]=a(`
    julia
    tanh_grid(a, b, N) -> Any
    -tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    `,3))]),t[128]||(t[128]=s("h2",{id:"setup",tabindex:"-1"},[e("Setup "),s("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),s("details",W,[s("summary",null,[t[100]||(t[100]=s("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[s("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),t[101]||(t[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[102]||(t[102]=a('
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    ',8))]),s("details",Y,[s("summary",null,[t[103]||(t[103]=s("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),t[104]||(t[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[105]||(t[105]=a(`
    julia
    Setup(
    +3

    Fields

    source

    `,5))]),s("details",j,[s("summary",null,[t[45]||(t[45]=s("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),t[46]||(t[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[55]||(t[55]=a('
    julia
    Grid(; x, boundary_conditions, backend)

    Create useful quantities for Cartesian box mesh ``x[1] \\times \\dots \\times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

    ',2)),s("ul",null,[t[54]||(t[54]=a("
  • N[α]: Number of finite volumes in direction β, including ghost volumes

  • Nu[α][β]: Number of u[α] velocity DOFs in direction β

  • Np[α]: Number of pressure DOFs in direction α

  • Iu[α]: Cartesian index range of u[α] velocity DOFs

  • Ip: Cartesian index range of pressure DOFs

  • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

  • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

  • xu[α][β]: β-coordinates of u[α] velocity points

  • xp[α]: α-coordinates of pressure points

  • Δ[α]: All volume widths in direction α

  • Δu[α]: Distance between pressure points in direction α

  • ",11)),s("li",null,[s("p",null,[t[51]||(t[51]=s("code",null,"A[α][β]",-1)),t[52]||(t[52]=e(": Interpolation weights from α-face centers ")),s("mjx-container",H,[(o(),n("svg",M,t[47]||(t[47]=[a('',1)]))),t[48]||(t[48]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"I")])])],-1))]),t[53]||(t[53]=e(" to ")),s("mjx-container",L,[(o(),n("svg",C,t[49]||(t[49]=[a('',1)]))),t[50]||(t[50]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"I"),s("mo",null,"±"),s("msub",null,[s("mi",null,"h"),s("mi",null,"β")])])])])],-1))])])])]),t[56]||(t[56]=s("p",null,"Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.",-1)),t[57]||(t[57]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",N,[s("summary",null,[t[58]||(t[58]=s("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),t[59]||(t[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[62]||(t[62]=a('
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    ',2)),s("mjx-container",F,[(o(),n("svg",Z,t[60]||(t[60]=[a('',1)]))),t[61]||(t[61]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mfrac",null,[s("mn",null,"1"),s("mn",null,"2")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"π"),s("mfrac",null,[s("mi",null,"i"),s("mi",null,"n")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"i"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[63]||(t[63]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.stretched_grid"},[s("code",null,"stretched_grid")]),e(".")],-1)),t[64]||(t[64]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",S,[s("summary",null,[t[65]||(t[65]=s("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),t[66]||(t[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[67]||(t[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),s("details",A,[s("summary",null,[t[68]||(t[68]=s("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),t[69]||(t[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[94]||(t[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    +stretched_grid(a, b, N, s) -> Any
    `,1)),s("p",null,[t[80]||(t[80]=a("Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector ",15)),s("mjx-container",D,[(o(),n("svg",I,t[70]||(t[70]=[a('',1)]))),t[71]||(t[71]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"∈"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"R")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"N"),s("mo",null,"+"),s("mn",null,"1")])])])],-1))]),t[81]||(t[81]=e(" such that ")),s("mjx-container",V,[(o(),n("svg",B,t[72]||(t[72]=[a('',1)]))),t[73]||(t[73]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"n")]),s("msup",null,[s("mi",null,"s"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"h")])],-1))]),t[82]||(t[82]=e(" for ")),s("mjx-container",O,[(o(),n("svg",P,t[74]||(t[74]=[a('',1)]))),t[75]||(t[75]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[83]||(t[83]=e(". Setting ")),s("mjx-container",z,[(o(),n("svg",R,t[76]||(t[76]=[a('',1)]))),t[77]||(t[77]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"N")]),s("mo",null,"="),s("mi",null,"b")])],-1))]),t[84]||(t[84]=e(" then gives ")),s("mjx-container",G,[(o(),n("svg",J,t[78]||(t[78]=[a('',1)]))),t[79]||(t[79]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"h"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"s")]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])])])],-1))]),t[85]||(t[85]=e(", resulting in"))]),s("mjx-container",q,[(o(),n("svg",U,t[86]||(t[86]=[a('',1)]))),t[87]||(t[87]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"n")])]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])]),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N"),s("mo",null,".")])],-1))]),s("p",null,[t[90]||(t[90]=e("Note that ")),t[91]||(t[91]=s("code",null,"stretched_grid(a, b, N, s)[n]",-1)),t[92]||(t[92]=e(" corresponds to ")),s("mjx-container",X,[(o(),n("svg",K,t[88]||(t[88]=[a('',1)]))),t[89]||(t[89]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"n"),s("mo",null,"−"),s("mn",null,"1")])])])],-1))]),t[93]||(t[93]=e("."))]),t[95]||(t[95]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("code",null,"cosine_grid")]),e(".")],-1)),t[96]||(t[96]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",$,[s("summary",null,[t[97]||(t[97]=s("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),t[98]||(t[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[99]||(t[99]=a(`
    julia
    tanh_grid(a, b, N) -> Any
    +tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    `,3))]),t[128]||(t[128]=s("h2",{id:"setup",tabindex:"-1"},[e("Setup "),s("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),s("details",W,[s("summary",null,[t[100]||(t[100]=s("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[s("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),t[101]||(t[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[102]||(t[102]=a('
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    ',8))]),s("details",Y,[s("summary",null,[t[103]||(t[103]=s("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),t[104]||(t[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[105]||(t[105]=a(`
    julia
    Setup(
     ;
         x,
         boundary_conditions,
    @@ -16,7 +16,7 @@ import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framewo
         workgroupsize,
         temperature,
         Re
    -)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),s("details",_,[s("summary",null,[t[106]||(t[106]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),t[107]||(t[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[108]||(t[108]=a(`
    julia
    temperature_equation(
    +)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),s("details",_,[s("summary",null,[t[106]||(t[106]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),t[107]||(t[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[108]||(t[108]=a(`
    julia
    temperature_equation(
     ;
         Pr,
         Ra,
    @@ -25,7 +25,7 @@ import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framewo
         boundary_conditions,
         gdir,
         nondim_type
    -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))]),t[129]||(t[129]=s("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),s("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),s("details",s1,[s("summary",null,[t[109]||(t[109]=s("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),t[110]||(t[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[111]||(t[111]=a(`
    julia
    random_field(setup; ...) -> Any
    -random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    `,4))]),s("details",t1,[s("summary",null,[t[112]||(t[112]=s("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),t[113]||(t[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[114]||(t[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),s("details",e1,[s("summary",null,[t[115]||(t[115]=s("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),t[116]||(t[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[117]||(t[117]=a(`
    julia
    temperaturefield(setup, tempfunc) -> Any
    -temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    `,3))]),s("details",a1,[s("summary",null,[t[118]||(t[118]=s("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),t[119]||(t[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[120]||(t[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),s("details",i1,[s("summary",null,[t[121]||(t[121]=s("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),t[122]||(t[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[123]||(t[123]=a(`
    julia
    velocityfield(setup, ufunc; ...) -> Any
    -velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    `,3))])])}const m1=r(p,[["render",l1]]);export{T1 as __pageData,m1 as default}; +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))]),t[129]||(t[129]=s("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),s("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),s("details",s1,[s("summary",null,[t[109]||(t[109]=s("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),t[110]||(t[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[111]||(t[111]=a(`
    julia
    random_field(setup; ...) -> Any
    +random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    `,4))]),s("details",t1,[s("summary",null,[t[112]||(t[112]=s("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),t[113]||(t[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[114]||(t[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),s("details",e1,[s("summary",null,[t[115]||(t[115]=s("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),t[116]||(t[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[117]||(t[117]=a(`
    julia
    temperaturefield(setup, tempfunc) -> Any
    +temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    `,3))]),s("details",a1,[s("summary",null,[t[118]||(t[118]=s("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),t[119]||(t[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[120]||(t[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),s("details",i1,[s("summary",null,[t[121]||(t[121]=s("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),t[122]||(t[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[123]||(t[123]=a(`
    julia
    velocityfield(setup, ufunc; ...) -> Any
    +velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    `,3))])])}const m1=r(p,[["render",l1]]);export{T1 as __pageData,m1 as default}; diff --git a/previews/PR126/assets/manual_setup.md.axplHjHr.lean.js b/previews/PR126/assets/manual_setup.md.DlOs-IW7.lean.js similarity index 97% rename from previews/PR126/assets/manual_setup.md.axplHjHr.lean.js rename to previews/PR126/assets/manual_setup.md.DlOs-IW7.lean.js index a6f47da6..011d5efa 100644 --- a/previews/PR126/assets/manual_setup.md.axplHjHr.lean.js +++ b/previews/PR126/assets/manual_setup.md.DlOs-IW7.lean.js @@ -1,10 +1,10 @@ -import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.BSoZtefh.js";const T1=JSON.parse('{"title":"Problem setup","description":"","frontmatter":{},"headers":[],"relativePath":"manual/setup.md","filePath":"manual/setup.md","lastUpdated":null}'),p={name:"manual/setup.md"},Q={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.227ex",height:"1.799ex",role:"img",focusable:"false",viewBox:"0 -442 2310.5 795.1","aria-hidden":"true"},N={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.685ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 22402.7 2399","aria-hidden":"true"},S={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.346ex",height:"2.004ex",role:"img",focusable:"false",viewBox:"0 -846 4131.1 886","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.12ex",height:"2.664ex",role:"img",focusable:"false",viewBox:"0 -833.9 8893.2 1177.3","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.556ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 5549.6 877","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.89ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -694 3045.5 844","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.004ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.941ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -868.9 7046 1312.8","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.842ex"},xmlns:"http://www.w3.org/2000/svg",width:"40.13ex",height:"4.899ex",role:"img",focusable:"false",viewBox:"0 -1351.5 17737.3 2165.5","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.486ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1982.9 650","aria-hidden":"true"},$={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},s1={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},e1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},i1={class:"jldocstring custom-block",open:""};function l1(n1,t,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[t[124]||(t[124]=s("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),s("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),t[125]||(t[125]=s("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),s("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t[126]||(t[126]=s("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),s("details",Q,[s("summary",null,[t[0]||(t[0]=s("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),t[1]||(t[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[2]||(t[2]=a('
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    ',4))]),s("details",T,[s("summary",null,[t[3]||(t[3]=s("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),t[4]||(t[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[5]||(t[5]=a('
    julia
    struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

    Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

    When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

    Fields

    • u: Boundary condition

    source

    ',6))]),s("details",m,[s("summary",null,[t[6]||(t[6]=s("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),t[7]||(t[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[8]||(t[8]=a('
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    ',4))]),s("details",h,[s("summary",null,[t[9]||(t[9]=s("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),t[10]||(t[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[11]||(t[11]=a('
    julia
    struct PressureBC <: IncompressibleNavierStokes.AbstractBC

    Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

    Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

    Fields

    source

    ',5))]),s("details",c,[s("summary",null,[t[12]||(t[12]=s("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),t[13]||(t[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[14]||(t[14]=a('
    julia
    struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

    Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

    Fields

    source

    ',4))]),s("details",g,[s("summary",null,[t[15]||(t[15]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),t[16]||(t[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[17]||(t[17]=a('
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    ',3))]),s("details",k,[s("summary",null,[t[18]||(t[18]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),t[19]||(t[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[20]||(t[20]=a('
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    ',3))]),s("details",u,[s("summary",null,[t[21]||(t[21]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),t[22]||(t[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[23]||(t[23]=a('
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    ',3))]),s("details",b,[s("summary",null,[t[24]||(t[24]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),t[25]||(t[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[26]||(t[26]=a('
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    ',3))]),s("details",y,[s("summary",null,[t[27]||(t[27]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),t[28]||(t[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[29]||(t[29]=a('
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    ',3))]),s("details",f,[s("summary",null,[t[30]||(t[30]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),t[31]||(t[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[32]||(t[32]=a('
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    ',3))]),s("details",v,[s("summary",null,[t[33]||(t[33]=s("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),t[34]||(t[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[35]||(t[35]=a('
    julia
    boundary(β, N, I, isright) -> Any

    Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

    source

    ',3))]),s("details",E,[s("summary",null,[t[36]||(t[36]=s("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),t[37]||(t[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[38]||(t[38]=a('
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    ',3))]),s("details",x,[s("summary",null,[t[39]||(t[39]=s("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),t[40]||(t[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[41]||(t[41]=a('
    julia
    offset_u(bc, isnormal, isright)

    Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

    source

    ',3))]),t[127]||(t[127]=s("h2",{id:"grid",tabindex:"-1"},[e("Grid "),s("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),s("details",w,[s("summary",null,[t[42]||(t[42]=s("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),t[43]||(t[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[44]||(t[44]=a(`
    julia
    struct Dimension{N}

    Represent an N-dimensional space. Returns N when called.

    julia
    julia> d = Dimension(3)
    +import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framework.CojPSOJE.js";const T1=JSON.parse('{"title":"Problem setup","description":"","frontmatter":{},"headers":[],"relativePath":"manual/setup.md","filePath":"manual/setup.md","lastUpdated":null}'),p={name:"manual/setup.md"},Q={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},h={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.227ex",height:"1.799ex",role:"img",focusable:"false",viewBox:"0 -442 2310.5 795.1","aria-hidden":"true"},N={class:"jldocstring custom-block",open:""},F={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.148ex"},xmlns:"http://www.w3.org/2000/svg",width:"50.685ex",height:"5.428ex",role:"img",focusable:"false",viewBox:"0 -1449.5 22402.7 2399","aria-hidden":"true"},S={class:"jldocstring custom-block",open:""},A={class:"jldocstring custom-block",open:""},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.346ex",height:"2.004ex",role:"img",focusable:"false",viewBox:"0 -846 4131.1 886","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.12ex",height:"2.664ex",role:"img",focusable:"false",viewBox:"0 -833.9 8893.2 1177.3","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.556ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 5549.6 877","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.89ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -694 3045.5 844","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.004ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.941ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -868.9 7046 1312.8","aria-hidden":"true"},q={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.842ex"},xmlns:"http://www.w3.org/2000/svg",width:"40.13ex",height:"4.899ex",role:"img",focusable:"false",viewBox:"0 -1351.5 17737.3 2165.5","aria-hidden":"true"},X={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.486ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1982.9 650","aria-hidden":"true"},$={class:"jldocstring custom-block",open:""},W={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},s1={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},e1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},i1={class:"jldocstring custom-block",open:""};function l1(n1,t,o1,r1,d1,p1){const i=d("Badge");return o(),n("div",null,[t[124]||(t[124]=s("h1",{id:"Problem-setup",tabindex:"-1"},[e("Problem setup "),s("a",{class:"header-anchor",href:"#Problem-setup","aria-label":'Permalink to "Problem setup {#Problem-setup}"'},"​")],-1)),t[125]||(t[125]=s("h2",{id:"Boundary-conditions",tabindex:"-1"},[e("Boundary conditions "),s("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),t[126]||(t[126]=s("p",null,"Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.",-1)),s("details",Q,[s("summary",null,[t[0]||(t[0]=s("a",{id:"IncompressibleNavierStokes.AbstractBC",href:"#IncompressibleNavierStokes.AbstractBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractBC")],-1)),t[1]||(t[1]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[2]||(t[2]=a('
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    ',4))]),s("details",T,[s("summary",null,[t[3]||(t[3]=s("a",{id:"IncompressibleNavierStokes.DirichletBC",href:"#IncompressibleNavierStokes.DirichletBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.DirichletBC")],-1)),t[4]||(t[4]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[5]||(t[5]=a('
    julia
    struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

    Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

    When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

    Fields

    • u: Boundary condition

    source

    ',6))]),s("details",m,[s("summary",null,[t[6]||(t[6]=s("a",{id:"IncompressibleNavierStokes.PeriodicBC",href:"#IncompressibleNavierStokes.PeriodicBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PeriodicBC")],-1)),t[7]||(t[7]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[8]||(t[8]=a('
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    ',4))]),s("details",h,[s("summary",null,[t[9]||(t[9]=s("a",{id:"IncompressibleNavierStokes.PressureBC",href:"#IncompressibleNavierStokes.PressureBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.PressureBC")],-1)),t[10]||(t[10]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[11]||(t[11]=a('
    julia
    struct PressureBC <: IncompressibleNavierStokes.AbstractBC

    Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

    Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

    Fields

    source

    ',5))]),s("details",g,[s("summary",null,[t[12]||(t[12]=s("a",{id:"IncompressibleNavierStokes.SymmetricBC",href:"#IncompressibleNavierStokes.SymmetricBC"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.SymmetricBC")],-1)),t[13]||(t[13]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[14]||(t[14]=a('
    julia
    struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

    Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

    Fields

    source

    ',4))]),s("details",c,[s("summary",null,[t[15]||(t[15]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p!")],-1)),t[16]||(t[16]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[17]||(t[17]=a('
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    ',3))]),s("details",k,[s("summary",null,[t[18]||(t[18]=s("a",{id:"IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_p-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_p")],-1)),t[19]||(t[19]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[20]||(t[20]=a('
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    ',3))]),s("details",u,[s("summary",null,[t[21]||(t[21]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp!")],-1)),t[22]||(t[22]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[23]||(t[23]=a('
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    ',3))]),s("details",b,[s("summary",null,[t[24]||(t[24]=s("a",{id:"IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_temp-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_temp")],-1)),t[25]||(t[25]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[26]||(t[26]=a('
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    ',3))]),s("details",y,[s("summary",null,[t[27]||(t[27]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u!")],-1)),t[28]||(t[28]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[29]||(t[29]=a('
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    ',3))]),s("details",f,[s("summary",null,[t[30]||(t[30]=s("a",{id:"IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.apply_bc_u-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.apply_bc_u")],-1)),t[31]||(t[31]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[32]||(t[32]=a('
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    ',3))]),s("details",v,[s("summary",null,[t[33]||(t[33]=s("a",{id:"IncompressibleNavierStokes.boundary-NTuple{4, Any}",href:"#IncompressibleNavierStokes.boundary-NTuple{4, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.boundary")],-1)),t[34]||(t[34]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[35]||(t[35]=a('
    julia
    boundary(β, N, I, isright) -> Any

    Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

    source

    ',3))]),s("details",E,[s("summary",null,[t[36]||(t[36]=s("a",{id:"IncompressibleNavierStokes.offset_p",href:"#IncompressibleNavierStokes.offset_p"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_p")],-1)),t[37]||(t[37]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[38]||(t[38]=a('
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    ',3))]),s("details",x,[s("summary",null,[t[39]||(t[39]=s("a",{id:"IncompressibleNavierStokes.offset_u",href:"#IncompressibleNavierStokes.offset_u"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.offset_u")],-1)),t[40]||(t[40]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[41]||(t[41]=a('
    julia
    offset_u(bc, isnormal, isright)

    Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

    source

    ',3))]),t[127]||(t[127]=s("h2",{id:"grid",tabindex:"-1"},[e("Grid "),s("a",{class:"header-anchor",href:"#grid","aria-label":'Permalink to "Grid"'},"​")],-1)),s("details",w,[s("summary",null,[t[42]||(t[42]=s("a",{id:"IncompressibleNavierStokes.Dimension",href:"#IncompressibleNavierStokes.Dimension"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Dimension")],-1)),t[43]||(t[43]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[44]||(t[44]=a(`
    julia
    struct Dimension{N}

    Represent an N-dimensional space. Returns N when called.

    julia
    julia> d = Dimension(3)
     Dimension{3}()
     
     julia> d()
    -3

    Fields

    source

    `,5))]),s("details",j,[s("summary",null,[t[45]||(t[45]=s("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),t[46]||(t[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[55]||(t[55]=a('
    julia
    Grid(; x, boundary_conditions, backend)

    Create useful quantities for Cartesian box mesh ``x[1] \\times \\dots \\times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

    ',2)),s("ul",null,[t[54]||(t[54]=a("
  • N[α]: Number of finite volumes in direction β, including ghost volumes

  • Nu[α][β]: Number of u[α] velocity DOFs in direction β

  • Np[α]: Number of pressure DOFs in direction α

  • Iu[α]: Cartesian index range of u[α] velocity DOFs

  • Ip: Cartesian index range of pressure DOFs

  • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

  • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

  • xu[α][β]: β-coordinates of u[α] velocity points

  • xp[α]: α-coordinates of pressure points

  • Δ[α]: All volume widths in direction α

  • Δu[α]: Distance between pressure points in direction α

  • ",11)),s("li",null,[s("p",null,[t[51]||(t[51]=s("code",null,"A[α][β]",-1)),t[52]||(t[52]=e(": Interpolation weights from α-face centers ")),s("mjx-container",H,[(o(),n("svg",M,t[47]||(t[47]=[a('',1)]))),t[48]||(t[48]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"I")])])],-1))]),t[53]||(t[53]=e(" to ")),s("mjx-container",L,[(o(),n("svg",C,t[49]||(t[49]=[a('',1)]))),t[50]||(t[50]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"I"),s("mo",null,"±"),s("msub",null,[s("mi",null,"h"),s("mi",null,"β")])])])])],-1))])])])]),t[56]||(t[56]=s("p",null,"Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.",-1)),t[57]||(t[57]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",N,[s("summary",null,[t[58]||(t[58]=s("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),t[59]||(t[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[62]||(t[62]=a('
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    ',2)),s("mjx-container",F,[(o(),n("svg",Z,t[60]||(t[60]=[a('',1)]))),t[61]||(t[61]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mfrac",null,[s("mn",null,"1"),s("mn",null,"2")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"π"),s("mfrac",null,[s("mi",null,"i"),s("mi",null,"n")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"i"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[63]||(t[63]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.stretched_grid"},[s("code",null,"stretched_grid")]),e(".")],-1)),t[64]||(t[64]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",S,[s("summary",null,[t[65]||(t[65]=s("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),t[66]||(t[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[67]||(t[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),s("details",A,[s("summary",null,[t[68]||(t[68]=s("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),t[69]||(t[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[94]||(t[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    -stretched_grid(a, b, N, s) -> Any
    `,1)),s("p",null,[t[80]||(t[80]=a("Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector ",15)),s("mjx-container",D,[(o(),n("svg",I,t[70]||(t[70]=[a('',1)]))),t[71]||(t[71]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"∈"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"R")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"N"),s("mo",null,"+"),s("mn",null,"1")])])])],-1))]),t[81]||(t[81]=e(" such that ")),s("mjx-container",V,[(o(),n("svg",B,t[72]||(t[72]=[a('',1)]))),t[73]||(t[73]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"n")]),s("msup",null,[s("mi",null,"s"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"h")])],-1))]),t[82]||(t[82]=e(" for ")),s("mjx-container",O,[(o(),n("svg",P,t[74]||(t[74]=[a('',1)]))),t[75]||(t[75]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[83]||(t[83]=e(". Setting ")),s("mjx-container",z,[(o(),n("svg",R,t[76]||(t[76]=[a('',1)]))),t[77]||(t[77]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"N")]),s("mo",null,"="),s("mi",null,"b")])],-1))]),t[84]||(t[84]=e(" then gives ")),s("mjx-container",G,[(o(),n("svg",J,t[78]||(t[78]=[a('',1)]))),t[79]||(t[79]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"h"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"s")]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])])])],-1))]),t[85]||(t[85]=e(", resulting in"))]),s("mjx-container",q,[(o(),n("svg",U,t[86]||(t[86]=[a('',1)]))),t[87]||(t[87]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"n")])]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])]),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N"),s("mo",null,".")])],-1))]),s("p",null,[t[90]||(t[90]=e("Note that ")),t[91]||(t[91]=s("code",null,"stretched_grid(a, b, N, s)[n]",-1)),t[92]||(t[92]=e(" corresponds to ")),s("mjx-container",X,[(o(),n("svg",K,t[88]||(t[88]=[a('',1)]))),t[89]||(t[89]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"n"),s("mo",null,"−"),s("mn",null,"1")])])])],-1))]),t[93]||(t[93]=e("."))]),t[95]||(t[95]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("code",null,"cosine_grid")]),e(".")],-1)),t[96]||(t[96]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",$,[s("summary",null,[t[97]||(t[97]=s("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),t[98]||(t[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[99]||(t[99]=a(`
    julia
    tanh_grid(a, b, N) -> Any
    -tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    `,3))]),t[128]||(t[128]=s("h2",{id:"setup",tabindex:"-1"},[e("Setup "),s("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),s("details",W,[s("summary",null,[t[100]||(t[100]=s("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[s("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),t[101]||(t[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[102]||(t[102]=a('
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    ',8))]),s("details",Y,[s("summary",null,[t[103]||(t[103]=s("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),t[104]||(t[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[105]||(t[105]=a(`
    julia
    Setup(
    +3

    Fields

    source

    `,5))]),s("details",j,[s("summary",null,[t[45]||(t[45]=s("a",{id:"IncompressibleNavierStokes.Grid-Tuple{}",href:"#IncompressibleNavierStokes.Grid-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Grid")],-1)),t[46]||(t[46]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[55]||(t[55]=a('
    julia
    Grid(; x, boundary_conditions, backend)

    Create useful quantities for Cartesian box mesh ``x[1] \\times \\dots \\times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

    ',2)),s("ul",null,[t[54]||(t[54]=a("
  • N[α]: Number of finite volumes in direction β, including ghost volumes

  • Nu[α][β]: Number of u[α] velocity DOFs in direction β

  • Np[α]: Number of pressure DOFs in direction α

  • Iu[α]: Cartesian index range of u[α] velocity DOFs

  • Ip: Cartesian index range of pressure DOFs

  • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

  • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

  • xu[α][β]: β-coordinates of u[α] velocity points

  • xp[α]: α-coordinates of pressure points

  • Δ[α]: All volume widths in direction α

  • Δu[α]: Distance between pressure points in direction α

  • ",11)),s("li",null,[s("p",null,[t[51]||(t[51]=s("code",null,"A[α][β]",-1)),t[52]||(t[52]=e(": Interpolation weights from α-face centers ")),s("mjx-container",H,[(o(),n("svg",M,t[47]||(t[47]=[a('',1)]))),t[48]||(t[48]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"I")])])],-1))]),t[53]||(t[53]=e(" to ")),s("mjx-container",L,[(o(),n("svg",C,t[49]||(t[49]=[a('',1)]))),t[50]||(t[50]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"I"),s("mo",null,"±"),s("msub",null,[s("mi",null,"h"),s("mi",null,"β")])])])])],-1))])])])]),t[56]||(t[56]=s("p",null,"Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.",-1)),t[57]||(t[57]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L79",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",N,[s("summary",null,[t[58]||(t[58]=s("a",{id:"IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.cosine_grid")],-1)),t[59]||(t[59]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[62]||(t[62]=a('
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    ',2)),s("mjx-container",F,[(o(),n("svg",Z,t[60]||(t[60]=[a('',1)]))),t[61]||(t[61]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"i")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mfrac",null,[s("mn",null,"1"),s("mn",null,"2")]),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"cos"),s("mo",{"data-mjx-texclass":"NONE"},"⁡"),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"("),s("mi",null,"π"),s("mfrac",null,[s("mi",null,"i"),s("mi",null,"n")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{"data-mjx-texclass":"CLOSE"},")")]),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"i"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[63]||(t[63]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.stretched_grid"},[s("code",null,"stretched_grid")]),e(".")],-1)),t[64]||(t[64]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L28",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",S,[s("summary",null,[t[65]||(t[65]=s("a",{id:"IncompressibleNavierStokes.max_size-Tuple{Any}",href:"#IncompressibleNavierStokes.max_size-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.max_size")],-1)),t[66]||(t[66]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[67]||(t[67]=a('
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    ',3))]),s("details",A,[s("summary",null,[t[68]||(t[68]=s("a",{id:"IncompressibleNavierStokes.stretched_grid",href:"#IncompressibleNavierStokes.stretched_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.stretched_grid")],-1)),t[69]||(t[69]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[94]||(t[94]=a(`
    julia
    stretched_grid(a, b, N) -> Any
    +stretched_grid(a, b, N, s) -> Any
    `,1)),s("p",null,[t[80]||(t[80]=a("Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector ",15)),s("mjx-container",D,[(o(),n("svg",I,t[70]||(t[70]=[a('',1)]))),t[71]||(t[71]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x"),s("mo",null,"∈"),s("msup",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"R")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"N"),s("mo",null,"+"),s("mn",null,"1")])])])],-1))]),t[81]||(t[81]=e(" such that ")),s("mjx-container",V,[(o(),n("svg",B,t[72]||(t[72]=[a('',1)]))),t[73]||(t[73]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("munderover",null,[s("mo",{"data-mjx-texclass":"OP"},"∑"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"="),s("mn",null,"1")]),s("mi",null,"n")]),s("msup",null,[s("mi",null,"s"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"i"),s("mo",null,"−"),s("mn",null,"1")])]),s("mi",null,"h")])],-1))]),t[82]||(t[82]=e(" for ")),s("mjx-container",O,[(o(),n("svg",P,t[74]||(t[74]=[a('',1)]))),t[75]||(t[75]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N")])],-1))]),t[83]||(t[83]=e(". Setting ")),s("mjx-container",z,[(o(),n("svg",R,t[76]||(t[76]=[a('',1)]))),t[77]||(t[77]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"N")]),s("mo",null,"="),s("mi",null,"b")])],-1))]),t[84]||(t[84]=e(" then gives ")),s("mjx-container",G,[(o(),n("svg",J,t[78]||(t[78]=[a('',1)]))),t[79]||(t[79]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"h"),s("mo",null,"="),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("mi",null,"s")]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])])])],-1))]),t[85]||(t[85]=e(", resulting in"))]),s("mjx-container",q,[(o(),n("svg",U,t[86]||(t[86]=[a('',1)]))),t[87]||(t[87]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msub",null,[s("mi",null,"x"),s("mi",null,"n")]),s("mo",null,"="),s("mi",null,"a"),s("mo",null,"+"),s("mo",{stretchy:"false"},"("),s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a"),s("mo",{stretchy:"false"},")"),s("mfrac",null,[s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"n")])]),s("mrow",null,[s("mn",null,"1"),s("mo",null,"−"),s("msup",null,[s("mi",null,"s"),s("mi",null,"N")])])]),s("mo",null,","),s("mstyle",{scriptlevel:"0"},[s("mspace",{width:"1em"})]),s("mi",null,"n"),s("mo",null,"="),s("mn",null,"0"),s("mo",null,","),s("mo",null,"…"),s("mo",null,","),s("mi",null,"N"),s("mo",null,".")])],-1))]),s("p",null,[t[90]||(t[90]=e("Note that ")),t[91]||(t[91]=s("code",null,"stretched_grid(a, b, N, s)[n]",-1)),t[92]||(t[92]=e(" corresponds to ")),s("mjx-container",X,[(o(),n("svg",K,t[88]||(t[88]=[a('',1)]))),t[89]||(t[89]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("msub",null,[s("mi",null,"x"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"n"),s("mo",null,"−"),s("mn",null,"1")])])])],-1))]),t[93]||(t[93]=e("."))]),t[95]||(t[95]=s("p",null,[e("See also "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/setup#IncompressibleNavierStokes.cosine_grid-Tuple{Any, Any, Any}"},[s("code",null,"cosine_grid")]),e(".")],-1)),t[96]||(t[96]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/grid.jl#L45",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",$,[s("summary",null,[t[97]||(t[97]=s("a",{id:"IncompressibleNavierStokes.tanh_grid",href:"#IncompressibleNavierStokes.tanh_grid"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.tanh_grid")],-1)),t[98]||(t[98]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[99]||(t[99]=a(`
    julia
    tanh_grid(a, b, N) -> Any
    +tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    `,3))]),t[128]||(t[128]=s("h2",{id:"setup",tabindex:"-1"},[e("Setup "),s("a",{class:"header-anchor",href:"#setup","aria-label":'Permalink to "Setup"'},"​")],-1)),s("details",W,[s("summary",null,[t[100]||(t[100]=s("a",{id:"KernelAbstractions.CPU",href:"#KernelAbstractions.CPU"},[s("span",{class:"jlbinding"},"KernelAbstractions.CPU")],-1)),t[101]||(t[101]=e()),l(i,{type:"info",class:"jlObjectType jlType",text:"Type"})]),t[102]||(t[102]=a('
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    ',8))]),s("details",Y,[s("summary",null,[t[103]||(t[103]=s("a",{id:"IncompressibleNavierStokes.Setup-Tuple{}",href:"#IncompressibleNavierStokes.Setup-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.Setup")],-1)),t[104]||(t[104]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[105]||(t[105]=a(`
    julia
    Setup(
     ;
         x,
         boundary_conditions,
    @@ -16,7 +16,7 @@ import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framewo
         workgroupsize,
         temperature,
         Re
    -)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),s("details",_,[s("summary",null,[t[106]||(t[106]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),t[107]||(t[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[108]||(t[108]=a(`
    julia
    temperature_equation(
    +)

    Create problem setup (stored in a named tuple).

    source

    `,3))]),s("details",_,[s("summary",null,[t[106]||(t[106]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-Tuple{}",href:"#IncompressibleNavierStokes.temperature_equation-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),t[107]||(t[107]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[108]||(t[108]=a(`
    julia
    temperature_equation(
     ;
         Pr,
         Ra,
    @@ -25,7 +25,7 @@ import{_ as r,c as n,j as s,a as e,G as l,a5 as a,B as d,o}from"./chunks/framewo
         boundary_conditions,
         gdir,
         nondim_type
    -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))]),t[129]||(t[129]=s("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),s("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),s("details",s1,[s("summary",null,[t[109]||(t[109]=s("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),t[110]||(t[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[111]||(t[111]=a(`
    julia
    random_field(setup; ...) -> Any
    -random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    `,4))]),s("details",t1,[s("summary",null,[t[112]||(t[112]=s("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),t[113]||(t[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[114]||(t[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),s("details",e1,[s("summary",null,[t[115]||(t[115]=s("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),t[116]||(t[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[117]||(t[117]=a(`
    julia
    temperaturefield(setup, tempfunc) -> Any
    -temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    `,3))]),s("details",a1,[s("summary",null,[t[118]||(t[118]=s("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),t[119]||(t[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[120]||(t[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),s("details",i1,[s("summary",null,[t[121]||(t[121]=s("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),t[122]||(t[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[123]||(t[123]=a(`
    julia
    velocityfield(setup, ufunc; ...) -> Any
    -velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    `,3))])])}const m1=r(p,[["render",l1]]);export{T1 as __pageData,m1 as default}; +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))]),t[129]||(t[129]=s("h2",{id:"Field-initializers",tabindex:"-1"},[e("Field initializers "),s("a",{class:"header-anchor",href:"#Field-initializers","aria-label":'Permalink to "Field initializers {#Field-initializers}"'},"​")],-1)),s("details",s1,[s("summary",null,[t[109]||(t[109]=s("a",{id:"IncompressibleNavierStokes.random_field",href:"#IncompressibleNavierStokes.random_field"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.random_field")],-1)),t[110]||(t[110]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[111]||(t[111]=a(`
    julia
    random_field(setup; ...) -> Any
    +random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    `,4))]),s("details",t1,[s("summary",null,[t[112]||(t[112]=s("a",{id:"IncompressibleNavierStokes.scalarfield-Tuple{Any}",href:"#IncompressibleNavierStokes.scalarfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.scalarfield")],-1)),t[113]||(t[113]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[114]||(t[114]=a('
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    ',3))]),s("details",e1,[s("summary",null,[t[115]||(t[115]=s("a",{id:"IncompressibleNavierStokes.temperaturefield",href:"#IncompressibleNavierStokes.temperaturefield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperaturefield")],-1)),t[116]||(t[116]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[117]||(t[117]=a(`
    julia
    temperaturefield(setup, tempfunc) -> Any
    +temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    `,3))]),s("details",a1,[s("summary",null,[t[118]||(t[118]=s("a",{id:"IncompressibleNavierStokes.vectorfield-Tuple{Any}",href:"#IncompressibleNavierStokes.vectorfield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vectorfield")],-1)),t[119]||(t[119]=e()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),t[120]||(t[120]=a('
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    ',3))]),s("details",i1,[s("summary",null,[t[121]||(t[121]=s("a",{id:"IncompressibleNavierStokes.velocityfield",href:"#IncompressibleNavierStokes.velocityfield"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.velocityfield")],-1)),t[122]||(t[122]=e()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),t[123]||(t[123]=a(`
    julia
    velocityfield(setup, ufunc; ...) -> Any
    +velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    `,3))])])}const m1=r(p,[["render",l1]]);export{T1 as __pageData,m1 as default}; diff --git a/previews/PR126/assets/manual_solver.md.BQt3A_rE.js b/previews/PR126/assets/manual_solver.md.Bi4FRO99.js similarity index 83% rename from previews/PR126/assets/manual_solver.md.BQt3A_rE.js rename to previews/PR126/assets/manual_solver.md.Bi4FRO99.js index 691473bb..2719a466 100644 --- a/previews/PR126/assets/manual_solver.md.BQt3A_rE.js +++ b/previews/PR126/assets/manual_solver.md.Bi4FRO99.js @@ -1,6 +1,6 @@ -import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BSoZtefh.js";const V=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solver.md","filePath":"manual/solver.md","lastUpdated":null}'),d={name:"manual/solver.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.703ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2520.6 723","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.428ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.783ex",height:"5.507ex",role:"img",focusable:"false",viewBox:"0 -1361 11837.9 2434.1","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""};function N(I,e,H,M,B,A){const i=r("Badge");return o(),n("div",null,[e[55]||(e[55]=s("h1",{id:"solvers",tabindex:"-1"},[a("Solvers "),s("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1)),e[56]||(e[56]=s("h2",{id:"Solvers-2",tabindex:"-1"},[a("Solvers "),s("a",{class:"header-anchor",href:"#Solvers-2","aria-label":'Permalink to "Solvers {#Solvers-2}"'},"​")],-1)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_cfl_timestep!")],-1)),e[1]||(e[1]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[2]||(e[2]=t('
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    ',3))]),s("details",k,[s("summary",null,[e[3]||(e[3]=s("a",{id:"IncompressibleNavierStokes.get_state-Tuple{Any}",href:"#IncompressibleNavierStokes.get_state-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_state")],-1)),e[4]||(e[4]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[5]||(e[5]=t(`
    julia
    get_state(
    +import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framework.CojPSOJE.js";const V=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solver.md","filePath":"manual/solver.md","lastUpdated":null}'),d={name:"manual/solver.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.703ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2520.6 723","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.428ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.783ex",height:"5.507ex",role:"img",focusable:"false",viewBox:"0 -1361 11837.9 2434.1","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""};function N(I,e,H,M,B,A){const i=r("Badge");return o(),n("div",null,[e[55]||(e[55]=s("h1",{id:"solvers",tabindex:"-1"},[t("Solvers "),s("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1)),e[56]||(e[56]=s("h2",{id:"Solvers-2",tabindex:"-1"},[t("Solvers "),s("a",{class:"header-anchor",href:"#Solvers-2","aria-label":'Permalink to "Solvers {#Solvers-2}"'},"​")],-1)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_cfl_timestep!")],-1)),e[1]||(e[1]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[2]||(e[2]=a('
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    ',3))]),s("details",k,[s("summary",null,[e[3]||(e[3]=s("a",{id:"IncompressibleNavierStokes.get_state-Tuple{Any}",href:"#IncompressibleNavierStokes.get_state-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_state")],-1)),e[4]||(e[4]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[5]||(e[5]=a(`
    julia
    get_state(
         stepper
    -) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    `,3))]),s("details",c,[s("summary",null,[e[6]||(e[6]=s("a",{id:"IncompressibleNavierStokes.solve_unsteady-Tuple{}",href:"#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.solve_unsteady")],-1)),e[7]||(e[7]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=t(`
    julia
    solve_unsteady(
    +) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    `,3))]),s("details",c,[s("summary",null,[e[6]||(e[6]=s("a",{id:"IncompressibleNavierStokes.solve_unsteady-Tuple{}",href:"#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.solve_unsteady")],-1)),e[7]||(e[7]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=a(`
    julia
    solve_unsteady(
     ;
         setup,
         tlims,
    @@ -16,9 +16,9 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
         processors,
         θ,
         cache
    -)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    `,7))]),e[57]||(e[57]=s("h2",{id:"processors",tabindex:"-1"},[a("Processors "),s("a",{class:"header-anchor",href:"#processors","aria-label":'Permalink to "Processors"'},"​")],-1)),e[58]||(e[58]=s("p",null,[a("Processors can be used to process the solution in "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("code",null,"solve_unsteady")]),a(" after every time step.")],-1)),s("details",m,[s("summary",null,[e[9]||(e[9]=s("a",{id:"IncompressibleNavierStokes.animator",href:"#IncompressibleNavierStokes.animator"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.animator")],-1)),e[10]||(e[10]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=t('

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    ',4))]),s("details",g,[s("summary",null,[e[12]||(e[12]=s("a",{id:"IncompressibleNavierStokes.energy_history_plot",href:"#IncompressibleNavierStokes.energy_history_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_history_plot")],-1)),e[13]||(e[13]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s("p",null,"Create energy history plot.",-1)),e[15]||(e[15]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/processors.jl#L392",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",T,[s("summary",null,[e[16]||(e[16]=s("a",{id:"IncompressibleNavierStokes.energy_spectrum_plot",href:"#IncompressibleNavierStokes.energy_spectrum_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_spectrum_plot")],-1)),e[17]||(e[17]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s("p",null,[e[20]||(e[20]=a("Create energy spectrum plot. The energy at a scalar wavenumber level ")),s("mjx-container",Q,[(o(),n("svg",u,e[18]||(e[18]=[t('',1)]))),e[19]||(e[19]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"κ"),s("mo",null,"∈"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"N")])])],-1))]),e[21]||(e[21]=a(" is defined by"))]),s("mjx-container",b,[(o(),n("svg",y,e[22]||(e[22]=[t('',1)]))),e[23]||(e[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"κ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("msub",null,[s("mo",{"data-mjx-texclass":"OP"},"∫"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"κ"),s("mo",null,"≤"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"k"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"<"),s("mi",null,"κ"),s("mo",null,"+"),s("mn",null,"1")])]),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"k"),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"k"),s("mo",null,",")])],-1))]),e[24]||(e[24]=t('

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    ',4))]),s("details",E,[s("summary",null,[e[25]||(e[25]=s("a",{id:"IncompressibleNavierStokes.fieldplot",href:"#IncompressibleNavierStokes.fieldplot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldplot")],-1)),e[26]||(e[26]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=t('

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    ',9))]),s("details",v,[s("summary",null,[e[28]||(e[28]=s("a",{id:"IncompressibleNavierStokes.fieldsaver-Tuple{}",href:"#IncompressibleNavierStokes.fieldsaver-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldsaver")],-1)),e[29]||(e[29]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=t('
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    ',3))]),s("details",f,[s("summary",null,[e[31]||(e[31]=s("a",{id:"IncompressibleNavierStokes.observefield-Tuple{Any}",href:"#IncompressibleNavierStokes.observefield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observefield")],-1)),e[32]||(e[32]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[33]||(e[33]=t('
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    ',3))]),s("details",j,[s("summary",null,[e[34]||(e[34]=s("a",{id:"IncompressibleNavierStokes.observespectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.observespectrum-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observespectrum")],-1)),e[35]||(e[35]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[36]||(e[36]=t('
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    ',3))]),s("details",F,[s("summary",null,[e[37]||(e[37]=s("a",{id:"IncompressibleNavierStokes.processor",href:"#IncompressibleNavierStokes.processor"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.processor")],-1)),e[38]||(e[38]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[39]||(e[39]=t(`
    julia
    processor(
    +)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    `,7))]),e[57]||(e[57]=s("h2",{id:"processors",tabindex:"-1"},[t("Processors "),s("a",{class:"header-anchor",href:"#processors","aria-label":'Permalink to "Processors"'},"​")],-1)),e[58]||(e[58]=s("p",null,[t("Processors can be used to process the solution in "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("code",null,"solve_unsteady")]),t(" after every time step.")],-1)),s("details",m,[s("summary",null,[e[9]||(e[9]=s("a",{id:"IncompressibleNavierStokes.animator",href:"#IncompressibleNavierStokes.animator"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.animator")],-1)),e[10]||(e[10]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=a('

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    ',4))]),s("details",g,[s("summary",null,[e[12]||(e[12]=s("a",{id:"IncompressibleNavierStokes.energy_history_plot",href:"#IncompressibleNavierStokes.energy_history_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_history_plot")],-1)),e[13]||(e[13]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s("p",null,"Create energy history plot.",-1)),e[15]||(e[15]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/processors.jl#L406",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",T,[s("summary",null,[e[16]||(e[16]=s("a",{id:"IncompressibleNavierStokes.energy_spectrum_plot",href:"#IncompressibleNavierStokes.energy_spectrum_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_spectrum_plot")],-1)),e[17]||(e[17]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s("p",null,[e[20]||(e[20]=t("Create energy spectrum plot. The energy at a scalar wavenumber level ")),s("mjx-container",Q,[(o(),n("svg",u,e[18]||(e[18]=[a('',1)]))),e[19]||(e[19]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"κ"),s("mo",null,"∈"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"N")])])],-1))]),e[21]||(e[21]=t(" is defined by"))]),s("mjx-container",y,[(o(),n("svg",b,e[22]||(e[22]=[a('',1)]))),e[23]||(e[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"κ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("msub",null,[s("mo",{"data-mjx-texclass":"OP"},"∫"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"κ"),s("mo",null,"≤"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"k"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"<"),s("mi",null,"κ"),s("mo",null,"+"),s("mn",null,"1")])]),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"k"),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"k"),s("mo",null,",")])],-1))]),e[24]||(e[24]=a('

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    ',4))]),s("details",E,[s("summary",null,[e[25]||(e[25]=s("a",{id:"IncompressibleNavierStokes.fieldplot",href:"#IncompressibleNavierStokes.fieldplot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldplot")],-1)),e[26]||(e[26]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=a('

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    ',9))]),s("details",v,[s("summary",null,[e[28]||(e[28]=s("a",{id:"IncompressibleNavierStokes.fieldsaver-Tuple{}",href:"#IncompressibleNavierStokes.fieldsaver-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldsaver")],-1)),e[29]||(e[29]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=a('
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    ',3))]),s("details",f,[s("summary",null,[e[31]||(e[31]=s("a",{id:"IncompressibleNavierStokes.observefield-Tuple{Any}",href:"#IncompressibleNavierStokes.observefield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observefield")],-1)),e[32]||(e[32]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[33]||(e[33]=a('
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    ',3))]),s("details",j,[s("summary",null,[e[34]||(e[34]=s("a",{id:"IncompressibleNavierStokes.observespectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.observespectrum-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observespectrum")],-1)),e[35]||(e[35]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[36]||(e[36]=a('
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    ',3))]),s("details",F,[s("summary",null,[e[37]||(e[37]=s("a",{id:"IncompressibleNavierStokes.processor",href:"#IncompressibleNavierStokes.processor"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.processor")],-1)),e[38]||(e[38]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[39]||(e[39]=a(`
    julia
    processor(
         initialize
    -) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#295#296"}}
    +) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#291#292"}}
     processor(
         initialize,
         finalize
    @@ -40,7 +40,7 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
     The summand is 3, the time is 1.2
     The summand is 4, the time is 1.6
     The summand is 5, the time is 2.0
    -The final sum (at time t=2.0) is 15

    source

    `,8))]),s("details",C,[s("summary",null,[e[40]||(e[40]=s("a",{id:"IncompressibleNavierStokes.realtimeplotter",href:"#IncompressibleNavierStokes.realtimeplotter"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.realtimeplotter")],-1)),e[41]||(e[41]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[42]||(e[42]=t('

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    ',5))]),s("details",x,[s("summary",null,[e[43]||(e[43]=s("a",{id:"IncompressibleNavierStokes.save_vtk-Tuple{Any}",href:"#IncompressibleNavierStokes.save_vtk-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.save_vtk")],-1)),e[44]||(e[44]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=t('
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    ',4))]),s("details",w,[s("summary",null,[e[46]||(e[46]=s("a",{id:"IncompressibleNavierStokes.snapshotsaver-Tuple{Any}",href:"#IncompressibleNavierStokes.snapshotsaver-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.snapshotsaver")],-1)),e[47]||(e[47]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=t('
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    ',3))]),s("details",L,[s("summary",null,[e[49]||(e[49]=s("a",{id:"IncompressibleNavierStokes.timelogger-Tuple{}",href:"#IncompressibleNavierStokes.timelogger-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.timelogger")],-1)),e[50]||(e[50]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=t(`
    julia
    timelogger(
    +The final sum (at time t=2.0) is 15

    source

    `,8))]),s("details",C,[s("summary",null,[e[40]||(e[40]=s("a",{id:"IncompressibleNavierStokes.realtimeplotter",href:"#IncompressibleNavierStokes.realtimeplotter"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.realtimeplotter")],-1)),e[41]||(e[41]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[42]||(e[42]=a('

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    ',5))]),s("details",x,[s("summary",null,[e[43]||(e[43]=s("a",{id:"IncompressibleNavierStokes.save_vtk-Tuple{Any}",href:"#IncompressibleNavierStokes.save_vtk-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.save_vtk")],-1)),e[44]||(e[44]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=a('
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    ',4))]),s("details",w,[s("summary",null,[e[46]||(e[46]=s("a",{id:"IncompressibleNavierStokes.snapshotsaver-Tuple{Any}",href:"#IncompressibleNavierStokes.snapshotsaver-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.snapshotsaver")],-1)),e[47]||(e[47]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=a('
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    ',3))]),s("details",L,[s("summary",null,[e[49]||(e[49]=s("a",{id:"IncompressibleNavierStokes.timelogger-Tuple{}",href:"#IncompressibleNavierStokes.timelogger-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.timelogger")],-1)),e[50]||(e[50]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=a(`
    julia
    timelogger(
     ;
         showiter,
         showt,
    @@ -48,4 +48,4 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
         showmax,
         showspeed,
         nupdate
    -) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#295#296"}

    Create processor that logs time step information.

    source

    `,3))]),s("details",S,[s("summary",null,[e[52]||(e[52]=s("a",{id:"IncompressibleNavierStokes.vtk_writer-Tuple{}",href:"#IncompressibleNavierStokes.vtk_writer-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vtk_writer")],-1)),e[53]||(e[53]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=t('
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    ',3))])])}const Z=p(d,[["render",N]]);export{V as __pageData,Z as default}; +) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#291#292"}

    Create processor that logs time step information.

    source

    `,3))]),s("details",S,[s("summary",null,[e[52]||(e[52]=s("a",{id:"IncompressibleNavierStokes.vtk_writer-Tuple{}",href:"#IncompressibleNavierStokes.vtk_writer-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vtk_writer")],-1)),e[53]||(e[53]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=a('
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    ',3))])])}const Z=p(d,[["render",N]]);export{V as __pageData,Z as default}; diff --git a/previews/PR126/assets/manual_solver.md.BQt3A_rE.lean.js b/previews/PR126/assets/manual_solver.md.Bi4FRO99.lean.js similarity index 83% rename from previews/PR126/assets/manual_solver.md.BQt3A_rE.lean.js rename to previews/PR126/assets/manual_solver.md.Bi4FRO99.lean.js index 691473bb..2719a466 100644 --- a/previews/PR126/assets/manual_solver.md.BQt3A_rE.lean.js +++ b/previews/PR126/assets/manual_solver.md.Bi4FRO99.lean.js @@ -1,6 +1,6 @@ -import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BSoZtefh.js";const V=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solver.md","filePath":"manual/solver.md","lastUpdated":null}'),d={name:"manual/solver.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.703ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2520.6 723","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.428ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.783ex",height:"5.507ex",role:"img",focusable:"false",viewBox:"0 -1361 11837.9 2434.1","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""};function N(I,e,H,M,B,A){const i=r("Badge");return o(),n("div",null,[e[55]||(e[55]=s("h1",{id:"solvers",tabindex:"-1"},[a("Solvers "),s("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1)),e[56]||(e[56]=s("h2",{id:"Solvers-2",tabindex:"-1"},[a("Solvers "),s("a",{class:"header-anchor",href:"#Solvers-2","aria-label":'Permalink to "Solvers {#Solvers-2}"'},"​")],-1)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_cfl_timestep!")],-1)),e[1]||(e[1]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[2]||(e[2]=t('
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    ',3))]),s("details",k,[s("summary",null,[e[3]||(e[3]=s("a",{id:"IncompressibleNavierStokes.get_state-Tuple{Any}",href:"#IncompressibleNavierStokes.get_state-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_state")],-1)),e[4]||(e[4]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[5]||(e[5]=t(`
    julia
    get_state(
    +import{_ as p,c as n,j as s,a as t,G as l,a5 as a,B as r,o}from"./chunks/framework.CojPSOJE.js";const V=JSON.parse('{"title":"Solvers","description":"","frontmatter":{},"headers":[],"relativePath":"manual/solver.md","filePath":"manual/solver.md","lastUpdated":null}'),d={name:"manual/solver.md"},h={class:"jldocstring custom-block",open:""},k={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},g={class:"jldocstring custom-block",open:""},T={class:"jldocstring custom-block",open:""},Q={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.703ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2520.6 723","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.428ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.783ex",height:"5.507ex",role:"img",focusable:"false",viewBox:"0 -1361 11837.9 2434.1","aria-hidden":"true"},E={class:"jldocstring custom-block",open:""},v={class:"jldocstring custom-block",open:""},f={class:"jldocstring custom-block",open:""},j={class:"jldocstring custom-block",open:""},F={class:"jldocstring custom-block",open:""},C={class:"jldocstring custom-block",open:""},x={class:"jldocstring custom-block",open:""},w={class:"jldocstring custom-block",open:""},L={class:"jldocstring custom-block",open:""},S={class:"jldocstring custom-block",open:""};function N(I,e,H,M,B,A){const i=r("Badge");return o(),n("div",null,[e[55]||(e[55]=s("h1",{id:"solvers",tabindex:"-1"},[t("Solvers "),s("a",{class:"header-anchor",href:"#solvers","aria-label":'Permalink to "Solvers"'},"​")],-1)),e[56]||(e[56]=s("h2",{id:"Solvers-2",tabindex:"-1"},[t("Solvers "),s("a",{class:"header-anchor",href:"#Solvers-2","aria-label":'Permalink to "Solvers {#Solvers-2}"'},"​")],-1)),s("details",h,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}",href:"#IncompressibleNavierStokes.get_cfl_timestep!-Tuple{Any, Any, Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_cfl_timestep!")],-1)),e[1]||(e[1]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[2]||(e[2]=a('
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    ',3))]),s("details",k,[s("summary",null,[e[3]||(e[3]=s("a",{id:"IncompressibleNavierStokes.get_state-Tuple{Any}",href:"#IncompressibleNavierStokes.get_state-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_state")],-1)),e[4]||(e[4]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[5]||(e[5]=a(`
    julia
    get_state(
         stepper
    -) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    `,3))]),s("details",c,[s("summary",null,[e[6]||(e[6]=s("a",{id:"IncompressibleNavierStokes.solve_unsteady-Tuple{}",href:"#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.solve_unsteady")],-1)),e[7]||(e[7]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=t(`
    julia
    solve_unsteady(
    +) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    `,3))]),s("details",c,[s("summary",null,[e[6]||(e[6]=s("a",{id:"IncompressibleNavierStokes.solve_unsteady-Tuple{}",href:"#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.solve_unsteady")],-1)),e[7]||(e[7]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[8]||(e[8]=a(`
    julia
    solve_unsteady(
     ;
         setup,
         tlims,
    @@ -16,9 +16,9 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
         processors,
         θ,
         cache
    -)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    `,7))]),e[57]||(e[57]=s("h2",{id:"processors",tabindex:"-1"},[a("Processors "),s("a",{class:"header-anchor",href:"#processors","aria-label":'Permalink to "Processors"'},"​")],-1)),e[58]||(e[58]=s("p",null,[a("Processors can be used to process the solution in "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("code",null,"solve_unsteady")]),a(" after every time step.")],-1)),s("details",m,[s("summary",null,[e[9]||(e[9]=s("a",{id:"IncompressibleNavierStokes.animator",href:"#IncompressibleNavierStokes.animator"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.animator")],-1)),e[10]||(e[10]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=t('

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    ',4))]),s("details",g,[s("summary",null,[e[12]||(e[12]=s("a",{id:"IncompressibleNavierStokes.energy_history_plot",href:"#IncompressibleNavierStokes.energy_history_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_history_plot")],-1)),e[13]||(e[13]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s("p",null,"Create energy history plot.",-1)),e[15]||(e[15]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/processors.jl#L392",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",T,[s("summary",null,[e[16]||(e[16]=s("a",{id:"IncompressibleNavierStokes.energy_spectrum_plot",href:"#IncompressibleNavierStokes.energy_spectrum_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_spectrum_plot")],-1)),e[17]||(e[17]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s("p",null,[e[20]||(e[20]=a("Create energy spectrum plot. The energy at a scalar wavenumber level ")),s("mjx-container",Q,[(o(),n("svg",u,e[18]||(e[18]=[t('',1)]))),e[19]||(e[19]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"κ"),s("mo",null,"∈"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"N")])])],-1))]),e[21]||(e[21]=a(" is defined by"))]),s("mjx-container",b,[(o(),n("svg",y,e[22]||(e[22]=[t('',1)]))),e[23]||(e[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"κ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("msub",null,[s("mo",{"data-mjx-texclass":"OP"},"∫"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"κ"),s("mo",null,"≤"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"k"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"<"),s("mi",null,"κ"),s("mo",null,"+"),s("mn",null,"1")])]),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"k"),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"k"),s("mo",null,",")])],-1))]),e[24]||(e[24]=t('

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    ',4))]),s("details",E,[s("summary",null,[e[25]||(e[25]=s("a",{id:"IncompressibleNavierStokes.fieldplot",href:"#IncompressibleNavierStokes.fieldplot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldplot")],-1)),e[26]||(e[26]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=t('

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    ',9))]),s("details",v,[s("summary",null,[e[28]||(e[28]=s("a",{id:"IncompressibleNavierStokes.fieldsaver-Tuple{}",href:"#IncompressibleNavierStokes.fieldsaver-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldsaver")],-1)),e[29]||(e[29]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=t('
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    ',3))]),s("details",f,[s("summary",null,[e[31]||(e[31]=s("a",{id:"IncompressibleNavierStokes.observefield-Tuple{Any}",href:"#IncompressibleNavierStokes.observefield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observefield")],-1)),e[32]||(e[32]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[33]||(e[33]=t('
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    ',3))]),s("details",j,[s("summary",null,[e[34]||(e[34]=s("a",{id:"IncompressibleNavierStokes.observespectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.observespectrum-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observespectrum")],-1)),e[35]||(e[35]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[36]||(e[36]=t('
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    ',3))]),s("details",F,[s("summary",null,[e[37]||(e[37]=s("a",{id:"IncompressibleNavierStokes.processor",href:"#IncompressibleNavierStokes.processor"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.processor")],-1)),e[38]||(e[38]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[39]||(e[39]=t(`
    julia
    processor(
    +)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    `,7))]),e[57]||(e[57]=s("h2",{id:"processors",tabindex:"-1"},[t("Processors "),s("a",{class:"header-anchor",href:"#processors","aria-label":'Permalink to "Processors"'},"​")],-1)),e[58]||(e[58]=s("p",null,[t("Processors can be used to process the solution in "),s("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/manual/solver#IncompressibleNavierStokes.solve_unsteady-Tuple{}"},[s("code",null,"solve_unsteady")]),t(" after every time step.")],-1)),s("details",m,[s("summary",null,[e[9]||(e[9]=s("a",{id:"IncompressibleNavierStokes.animator",href:"#IncompressibleNavierStokes.animator"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.animator")],-1)),e[10]||(e[10]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[11]||(e[11]=a('

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    ',4))]),s("details",g,[s("summary",null,[e[12]||(e[12]=s("a",{id:"IncompressibleNavierStokes.energy_history_plot",href:"#IncompressibleNavierStokes.energy_history_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_history_plot")],-1)),e[13]||(e[13]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[14]||(e[14]=s("p",null,"Create energy history plot.",-1)),e[15]||(e[15]=s("p",null,[s("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/processors.jl#L406",target:"_blank",rel:"noreferrer"},"source")],-1))]),s("details",T,[s("summary",null,[e[16]||(e[16]=s("a",{id:"IncompressibleNavierStokes.energy_spectrum_plot",href:"#IncompressibleNavierStokes.energy_spectrum_plot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.energy_spectrum_plot")],-1)),e[17]||(e[17]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s("p",null,[e[20]||(e[20]=t("Create energy spectrum plot. The energy at a scalar wavenumber level ")),s("mjx-container",Q,[(o(),n("svg",u,e[18]||(e[18]=[a('',1)]))),e[19]||(e[19]=s("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"κ"),s("mo",null,"∈"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"double-struck"},"N")])])],-1))]),e[21]||(e[21]=t(" is defined by"))]),s("mjx-container",y,[(o(),n("svg",b,e[22]||(e[22]=[a('',1)]))),e[23]||(e[23]=s("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"κ"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("msub",null,[s("mo",{"data-mjx-texclass":"OP"},"∫"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"κ"),s("mo",null,"≤"),s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mi",null,"k"),s("msub",null,[s("mo",{"data-mjx-texclass":"ORD"},"∥"),s("mn",null,"2")]),s("mo",null,"<"),s("mi",null,"κ"),s("mo",null,"+"),s("mn",null,"1")])]),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mover",null,[s("mi",null,"e"),s("mo",{stretchy:"false"},"^")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"k"),s("mo",{stretchy:"false"},")"),s("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",{mathvariant:"normal"},"d")]),s("mi",null,"k"),s("mo",null,",")])],-1))]),e[24]||(e[24]=a('

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    ',4))]),s("details",E,[s("summary",null,[e[25]||(e[25]=s("a",{id:"IncompressibleNavierStokes.fieldplot",href:"#IncompressibleNavierStokes.fieldplot"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldplot")],-1)),e[26]||(e[26]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[27]||(e[27]=a('

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    ',9))]),s("details",v,[s("summary",null,[e[28]||(e[28]=s("a",{id:"IncompressibleNavierStokes.fieldsaver-Tuple{}",href:"#IncompressibleNavierStokes.fieldsaver-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.fieldsaver")],-1)),e[29]||(e[29]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[30]||(e[30]=a('
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    ',3))]),s("details",f,[s("summary",null,[e[31]||(e[31]=s("a",{id:"IncompressibleNavierStokes.observefield-Tuple{Any}",href:"#IncompressibleNavierStokes.observefield-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observefield")],-1)),e[32]||(e[32]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[33]||(e[33]=a('
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    ',3))]),s("details",j,[s("summary",null,[e[34]||(e[34]=s("a",{id:"IncompressibleNavierStokes.observespectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.observespectrum-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.observespectrum")],-1)),e[35]||(e[35]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[36]||(e[36]=a('
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    ',3))]),s("details",F,[s("summary",null,[e[37]||(e[37]=s("a",{id:"IncompressibleNavierStokes.processor",href:"#IncompressibleNavierStokes.processor"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.processor")],-1)),e[38]||(e[38]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[39]||(e[39]=a(`
    julia
    processor(
         initialize
    -) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#295#296"}}
    +) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#291#292"}}
     processor(
         initialize,
         finalize
    @@ -40,7 +40,7 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
     The summand is 3, the time is 1.2
     The summand is 4, the time is 1.6
     The summand is 5, the time is 2.0
    -The final sum (at time t=2.0) is 15

    source

    `,8))]),s("details",C,[s("summary",null,[e[40]||(e[40]=s("a",{id:"IncompressibleNavierStokes.realtimeplotter",href:"#IncompressibleNavierStokes.realtimeplotter"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.realtimeplotter")],-1)),e[41]||(e[41]=a()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[42]||(e[42]=t('

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    ',5))]),s("details",x,[s("summary",null,[e[43]||(e[43]=s("a",{id:"IncompressibleNavierStokes.save_vtk-Tuple{Any}",href:"#IncompressibleNavierStokes.save_vtk-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.save_vtk")],-1)),e[44]||(e[44]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=t('
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    ',4))]),s("details",w,[s("summary",null,[e[46]||(e[46]=s("a",{id:"IncompressibleNavierStokes.snapshotsaver-Tuple{Any}",href:"#IncompressibleNavierStokes.snapshotsaver-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.snapshotsaver")],-1)),e[47]||(e[47]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=t('
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    ',3))]),s("details",L,[s("summary",null,[e[49]||(e[49]=s("a",{id:"IncompressibleNavierStokes.timelogger-Tuple{}",href:"#IncompressibleNavierStokes.timelogger-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.timelogger")],-1)),e[50]||(e[50]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=t(`
    julia
    timelogger(
    +The final sum (at time t=2.0) is 15

    source

    `,8))]),s("details",C,[s("summary",null,[e[40]||(e[40]=s("a",{id:"IncompressibleNavierStokes.realtimeplotter",href:"#IncompressibleNavierStokes.realtimeplotter"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.realtimeplotter")],-1)),e[41]||(e[41]=t()),l(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[42]||(e[42]=a('

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    ',5))]),s("details",x,[s("summary",null,[e[43]||(e[43]=s("a",{id:"IncompressibleNavierStokes.save_vtk-Tuple{Any}",href:"#IncompressibleNavierStokes.save_vtk-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.save_vtk")],-1)),e[44]||(e[44]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[45]||(e[45]=a('
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    ',4))]),s("details",w,[s("summary",null,[e[46]||(e[46]=s("a",{id:"IncompressibleNavierStokes.snapshotsaver-Tuple{Any}",href:"#IncompressibleNavierStokes.snapshotsaver-Tuple{Any}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.snapshotsaver")],-1)),e[47]||(e[47]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[48]||(e[48]=a('
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    ',3))]),s("details",L,[s("summary",null,[e[49]||(e[49]=s("a",{id:"IncompressibleNavierStokes.timelogger-Tuple{}",href:"#IncompressibleNavierStokes.timelogger-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.timelogger")],-1)),e[50]||(e[50]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[51]||(e[51]=a(`
    julia
    timelogger(
     ;
         showiter,
         showt,
    @@ -48,4 +48,4 @@ import{_ as p,c as n,j as s,a,G as l,a5 as t,B as r,o}from"./chunks/framework.BS
         showmax,
         showspeed,
         nupdate
    -) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#295#296"}

    Create processor that logs time step information.

    source

    `,3))]),s("details",S,[s("summary",null,[e[52]||(e[52]=s("a",{id:"IncompressibleNavierStokes.vtk_writer-Tuple{}",href:"#IncompressibleNavierStokes.vtk_writer-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vtk_writer")],-1)),e[53]||(e[53]=a()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=t('
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    ',3))])])}const Z=p(d,[["render",N]]);export{V as __pageData,Z as default}; +) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#291#292"}

    Create processor that logs time step information.

    source

    `,3))]),s("details",S,[s("summary",null,[e[52]||(e[52]=s("a",{id:"IncompressibleNavierStokes.vtk_writer-Tuple{}",href:"#IncompressibleNavierStokes.vtk_writer-Tuple{}"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.vtk_writer")],-1)),e[53]||(e[53]=t()),l(i,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),e[54]||(e[54]=a('
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    ',3))])])}const Z=p(d,[["render",N]]);export{V as __pageData,Z as default}; diff --git a/previews/PR126/assets/manual_spatial.md.Cj3WsAzX.js b/previews/PR126/assets/manual_spatial.md.BhAOohkr.js similarity index 99% rename from previews/PR126/assets/manual_spatial.md.Cj3WsAzX.js rename to previews/PR126/assets/manual_spatial.md.BhAOohkr.js index 924ddbd3..8fbda30b 100644 --- a/previews/PR126/assets/manual_spatial.md.Cj3WsAzX.js +++ b/previews/PR126/assets/manual_spatial.md.BhAOohkr.js @@ -1 +1 @@ -import{_ as s,c as T,j as Q,a,a5 as l,o as e}from"./chunks/framework.BSoZtefh.js";const m="/IncompressibleNavierStokes.jl/previews/PR126/assets/grid.BpiJkA_F.png",q4=JSON.parse('{"title":"Spatial discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/spatial.md","filePath":"manual/spatial.md","lastUpdated":null}'),o={name:"manual/spatial.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.825ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6110.6 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.04ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.352ex",height:"2.972ex",role:"img",focusable:"false",viewBox:"0 -853.7 5901.8 1313.5","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.171ex",height:"1.65ex",role:"img",focusable:"false",viewBox:"0 -442 1401.8 729.2","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.746ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 2539.6 899","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 500 688","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.06ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4446.7 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.957ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6610.8 1000","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.207ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 975.5 840.8","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.693ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1190.3 736.2","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 736.2","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.897ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7468.5 1311.1","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.608ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3362.7 851.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.136ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 944 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.708ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.628ex",height:"2.404ex",role:"img",focusable:"false",viewBox:"0 -749.5 5581.6 1062.6","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.248ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 14695.6 1312.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.887ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 10116.1 1103.7","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.047ex",height:"3.138ex",role:"img",focusable:"false",viewBox:"0 -967.8 6650.7 1387.1","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.899ex",height:"3.398ex",role:"img",focusable:"false",viewBox:"0 -989.3 14099.5 1501.7","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.351ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 8111.2 1829.8","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.17ex",height:"2.477ex",role:"img",focusable:"false",viewBox:"0 -675.5 4937 1094.8","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.881ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 9671.5 1829.8","aria-hidden":"true"},g1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.431ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10356.5 1000","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.216ex",height:"1.979ex",role:"img",focusable:"false",viewBox:"0 -717 979.5 874.8","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4298.3 1000","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.558ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.85ex",height:"5.509ex",role:"img",focusable:"false",viewBox:"0 -1304.6 10983.9 2435","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.817ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.673ex",height:"2.852ex",role:"img",focusable:"false",viewBox:"0 -899.6 1623.4 1260.7","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},Z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.662ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7364.4 1311.1","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.628ex",height:"1.932ex",role:"img",focusable:"false",viewBox:"0 -704 1161.4 854","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.709ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2081.4 1000","aria-hidden":"true"},B1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.626ex",height:"2.235ex",role:"img",focusable:"false",viewBox:"0 -680 1160.5 987.7","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.083ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -750 2246.5 1057.7","aria-hidden":"true"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 686.5","aria-hidden":"true"},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.592ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.311ex",height:"1.592ex",role:"img",focusable:"false",viewBox:"0 -442 2347.5 703.6","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},m3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.651ex",height:"2.834ex",role:"img",focusable:"false",viewBox:"0 -805.5 7359.6 1252.4","aria-hidden":"true"},n3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.52ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 6860 2986.6","aria-hidden":"true"},r3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.677ex",height:"2.644ex",role:"img",focusable:"false",viewBox:"0 -749.5 6929.3 1168.8","aria-hidden":"true"},h3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},u3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},w3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.46ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 27165.4 3093.4","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.244ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -705 550 910","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.456ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 4179.4 1037.2","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},j3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},O3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"2.225ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 983.3","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},B3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.893ex",height:"1.974ex",role:"img",focusable:"false",viewBox:"0 -861.5 2162.8 872.5","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},I3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},J3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1500 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},N3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},K3={class:"tip custom-block"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.333ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.174ex",height:"3.232ex",role:"img",focusable:"false",viewBox:"0 -839.4 18641 1428.6","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.818ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.325ex",height:"6.755ex",role:"img",focusable:"false",viewBox:"0 -1740.2 12519.5 2985.6","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.65ex",height:"2.869ex",role:"img",focusable:"false",viewBox:"0 -839.4 2497.5 1268.1","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"37.854ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 16731.4 2986.6","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"76.065ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 33620.8 3093.4","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.504ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.611ex",height:"5.456ex",role:"img",focusable:"false",viewBox:"0 -1304.6 13972.2 2411.5","aria-hidden":"true"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.302ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6763.5 888","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.978ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1316.2 647","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.56ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 21905.5 3367","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.719ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 760 727","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.621ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1158.5 647","aria-hidden":"true"},A2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.672ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 6927 1104.3","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.554ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1128.8 647","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.239ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1431.5 840.8","aria-hidden":"true"},G2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.709ex",height:"2.495ex",role:"img",focusable:"false",viewBox:"0 -749.5 4291.3 1103","aria-hidden":"true"},E2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.885ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1717.4 999","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.489ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 15686 2067","aria-hidden":"true"},Q4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"29.728ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 13139.6 1104.3","aria-hidden":"true"},a4={class:"tip custom-block"},T4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},l4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.943ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 14118.6 1328.5","aria-hidden":"true"},m4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},n4={class:"tip custom-block"},d4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.541ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 681 683","aria-hidden":"true"},i4={class:"tip custom-block"},h4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.247ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 993.3 636","aria-hidden":"true"},g4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"41.494ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 18340.4 2067","aria-hidden":"true"},u4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.126ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 23481.8 2067","aria-hidden":"true"},w4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.966ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 7057.1 1083.9","aria-hidden":"true"},L4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.773ex",height:"1.887ex",role:"img",focusable:"false",viewBox:"0 -833.9 1667.7 833.9","aria-hidden":"true"},y4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.759ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 11827.4 1312.8","aria-hidden":"true"},k4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.127ex",height:"2.185ex",role:"img",focusable:"false",viewBox:"0 -883.9 8012.2 965.9","aria-hidden":"true"},Z4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.957ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4843 1083.9","aria-hidden":"true"},v4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},j4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},O4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.286ex",height:"2.36ex",role:"img",focusable:"false",viewBox:"0 -961.2 10734.5 1043.2","aria-hidden":"true"},F4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.999ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.753ex",height:"19.129ex",role:"img",focusable:"false",viewBox:"0 -4477.6 21990.6 8455.2","aria-hidden":"true"},B4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},X4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.191ex"},xmlns:"http://www.w3.org/2000/svg",width:"60.665ex",height:"17.514ex",role:"img",focusable:"false",viewBox:"0 -4120.6 26813.9 7741.1","aria-hidden":"true"};function S4(z4,t,I4,G4,J4,E4){return e(),T("div",null,[t[384]||(t[384]=Q("h1",{id:"Spatial-discretization",tabindex:"-1"},[a("Spatial discretization "),Q("a",{class:"header-anchor",href:"#Spatial-discretization","aria-label":'Permalink to "Spatial discretization {#Spatial-discretization}"'},"​")],-1)),Q("p",null,[t[36]||(t[36]=a("the ")),Q("mjx-container",n,[(e(),T("svg",d,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[37]||(t[37]=a(" spatial dimensions are indexed by ")),Q("mjx-container",r,[(e(),T("svg",i,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"d"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[38]||(t[38]=a(". The ")),Q("mjx-container",h,[(e(),T("svg",p,t[4]||(t[4]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[39]||(t[39]=a("-th unit vector is denoted ")),Q("mjx-container",g,[(e(),T("svg",H,t[6]||(t[6]=[l('',1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])]),Q("msubsup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")])])],-1))]),t[40]||(t[40]=a(", where the Kronecker symbol ")),Q("mjx-container",u,[(e(),T("svg",c,t[8]||(t[8]=[l('',1)]))),t[9]||(t[9]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])])])],-1))]),t[41]||(t[41]=a(" is ")),Q("mjx-container",w,[(e(),T("svg",x,t[10]||(t[10]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),t[11]||(t[11]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1")])],-1))]),t[42]||(t[42]=a(" if ")),Q("mjx-container",L,[(e(),T("svg",f,t[12]||(t[12]=[l('',1)]))),t[13]||(t[13]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mi",null,"β")])],-1))]),t[43]||(t[43]=a(" and ")),Q("mjx-container",y,[(e(),T("svg",M,t[14]||(t[14]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z",style:{"stroke-width":"3"}})])])],-1)]))),t[15]||(t[15]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"0")])],-1))]),t[44]||(t[44]=a(" otherwise. We note ")),Q("mjx-container",k,[(e(),T("svg",V,t[16]||(t[16]=[l('',1)]))),t[17]||(t[17]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[45]||(t[45]=a(". The Cartesian index ")),Q("mjx-container",Z,[(e(),T("svg",b,t[18]||(t[18]=[l('',1)]))),t[19]||(t[19]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[46]||(t[46]=a(" is used to avoid repeating terms and equations ")),Q("mjx-container",v,[(e(),T("svg",D,t[20]||(t[20]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[21]||(t[21]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[47]||(t[47]=a(" times, where ")),Q("mjx-container",j,[(e(),T("svg",C,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[48]||(t[48]=a(" is a scalar index (typically one of ")),Q("mjx-container",O,[(e(),T("svg",R,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[49]||(t[49]=a(", ")),Q("mjx-container",F,[(e(),T("svg",A,t[26]||(t[26]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[50]||(t[50]=a(", and ")),Q("mjx-container",B,[(e(),T("svg",X,t[28]||(t[28]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[29]||(t[29]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[51]||(t[51]=a(" in common notation). This notation is dimension-agnostic, since we can write ")),Q("mjx-container",S,[(e(),T("svg",z,t[30]||(t[30]=[l('',1)]))),t[31]||(t[31]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[52]||(t[52]=a(" instead of ")),Q("mjx-container",I,[(e(),T("svg",G,t[32]||(t[32]=[l('',1)]))),t[33]||(t[33]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j")])])])],-1))]),t[53]||(t[53]=a(" in 2D or ")),Q("mjx-container",J,[(e(),T("svg",E,t[34]||(t[34]=[l('',1)]))),t[35]||(t[35]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j"),Q("mi",null,"k")])])])],-1))]),t[54]||(t[54]=a(" in 3D. In our Julia implementation of the solver we use the same Cartesian notation (")),t[55]||(t[55]=Q("code",null,"u[I]",-1)),t[56]||(t[56]=a(" instead of ")),t[57]||(t[57]=Q("code",null,"u[i, j]",-1)),t[58]||(t[58]=a(" or ")),t[59]||(t[59]=Q("code",null,"u[i, j, k]",-1)),t[60]||(t[60]=a(")."))]),Q("p",null,[t[91]||(t[91]=a("For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [")),t[92]||(t[92]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Harlow1965"},"13",-1)),t[93]||(t[93]=a("]. Consider a rectangular domain ")),Q("mjx-container",P,[(e(),T("svg",q,t[61]||(t[61]=[l('',1)]))),t[62]||(t[62]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"["),Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"]")])],-1))]),t[94]||(t[94]=a(", where ")),Q("mjx-container",N,[(e(),T("svg",W,t[63]||(t[63]=[l('',1)]))),t[64]||(t[64]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,"<"),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")])])],-1))]),t[95]||(t[95]=a(" are the domain boundaries and ")),Q("mjx-container",K,[(e(),T("svg",U,t[65]||(t[65]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mo"},[Q("path",{"data-c":"220F",d:"M158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656Z",style:{"stroke-width":"3"}})])])],-1)]))),t[66]||(t[66]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"OP"},"∏")])],-1))]),t[96]||(t[96]=a(" is a Cartesian product. Let ")),Q("mjx-container",$,[(e(),T("svg",Y,t[67]||(t[67]=[l('',1)]))),t[68]||(t[68]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[97]||(t[97]=a(" be a partitioning of ")),Q("mjx-container",_,[(e(),T("svg",Q1,t[69]||(t[69]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),t[70]||(t[70]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω")])],-1))]),t[98]||(t[98]=a(", where ")),Q("mjx-container",t1,[(e(),T("svg",a1,t[71]||(t[71]=[l('',1)]))),t[72]||(t[72]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[99]||(t[99]=a(" are volume center indices, ")),Q("mjx-container",T1,[(e(),T("svg",e1,t[73]||(t[73]=[l('',1)]))),t[74]||(t[74]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"∈"),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"double-struck"},"N")]),Q("mi",null,"d")])])],-1))]),t[100]||(t[100]=a(" are the number of volumes in each dimension, ")),Q("mjx-container",l1,[(e(),T("svg",s1,t[75]||(t[75]=[l('',1)]))),t[76]||(t[76]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[101]||(t[101]=a(" is a finite volume, ")),Q("mjx-container",m1,[(e(),T("svg",o1,t[77]||(t[77]=[l('',1)]))),t[78]||(t[78]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"∩"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"≠"),Q("mi",null,"α")])]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"β")])]),Q("mi",null,"β")])])],-1))]),t[102]||(t[102]=a(" is a volume face, ")),Q("mjx-container",n1,[(e(),T("svg",d1,t[79]||(t[79]=[l('',1)]))),t[80]||(t[80]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),t[103]||(t[103]=a(" is a volume edge, ")),Q("mjx-container",r1,[(e(),T("svg",i1,t[81]||(t[81]=[l('',1)]))),t[82]||(t[82]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mn",null,"0"),Q("mi",null,"α")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[104]||(t[104]=a(" are volume boundary coordinates, and ")),Q("mjx-container",h1,[(e(),T("svg",p1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t[105]||(t[105]=a(" for ")),Q("mjx-container",g1,[(e(),T("svg",H1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[106]||(t[106]=a(" are volume center coordinates. We also define the operator ")),Q("mjx-container",u1,[(e(),T("svg",c1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")])])],-1))]),t[107]||(t[107]=a(" which maps a discrete scalar field ")),Q("mjx-container",w1,[(e(),T("svg",x1,t[89]||(t[89]=[l('',1)]))),t[90]||(t[90]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"φ"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"φ"),Q("mi",null,"I")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")])])],-1))]),t[108]||(t[108]=a(" to"))]),Q("mjx-container",L1,[(e(),T("svg",f1,t[109]||(t[109]=[l('',1)]))),t[110]||(t[110]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[119]||(t[119]=a("It can be interpreted as a discrete equivalent of the continuous operator ")),Q("mjx-container",y1,[(e(),T("svg",M1,t[111]||(t[111]=[l('',1)]))),t[112]||(t[112]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mi",null,"∂"),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mi",null,"α")])])])])],-1))]),t[120]||(t[120]=a(". All the above definitions are extended to be valid in volume centers ")),Q("mjx-container",k1,[(e(),T("svg",V1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[121]||(t[121]=a(", volume faces ")),Q("mjx-container",Z1,[(e(),T("svg",b1,t[115]||(t[115]=[l('',1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[122]||(t[122]=a(", or volume corners ")),Q("mjx-container",v1,[(e(),T("svg",D1,t[117]||(t[117]=[l('',1)]))),t[118]||(t[118]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[123]||(t[123]=a(". The discretization is illustrated below:"))]),t[385]||(t[385]=Q("p",null,[Q("img",{src:m,alt:""})],-1)),t[386]||(t[386]=Q("h2",{id:"Finite-volume-discretization-of-the-Navier-Stokes-equations",tabindex:"-1"},[a("Finite volume discretization of the Navier-Stokes equations "),Q("a",{class:"header-anchor",href:"#Finite-volume-discretization-of-the-Navier-Stokes-equations","aria-label":'Permalink to "Finite volume discretization of the Navier-Stokes equations {#Finite-volume-discretization-of-the-Navier-Stokes-equations}"'},"​")],-1)),Q("p",null,[t[150]||(t[150]=a("We now define the unknown degrees of freedom. The average pressure in ")),Q("mjx-container",j1,[(e(),T("svg",C1,t[124]||(t[124]=[l('',1)]))),t[125]||(t[125]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[151]||(t[151]=a(", ")),Q("mjx-container",O1,[(e(),T("svg",R1,t[126]||(t[126]=[l('',1)]))),t[127]||(t[127]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[152]||(t[152]=a(" is approximated by the quantity ")),Q("mjx-container",F1,[(e(),T("svg",A1,t[128]||(t[128]=[l('',1)]))),t[129]||(t[129]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"I")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[153]||(t[153]=a(". The average ")),Q("mjx-container",B1,[(e(),T("svg",X1,t[130]||(t[130]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[131]||(t[131]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[154]||(t[154]=a("-velocity on the face ")),Q("mjx-container",S1,[(e(),T("svg",z1,t[132]||(t[132]=[l('',1)]))),t[133]||(t[133]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[155]||(t[155]=a(", ")),Q("mjx-container",I1,[(e(),T("svg",G1,t[134]||(t[134]=[l('',1)]))),t[135]||(t[135]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[156]||(t[156]=a(" is approximated by the quantity ")),Q("mjx-container",J1,[(e(),T("svg",E1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[157]||(t[157]=a(". Note how the pressure ")),Q("mjx-container",P1,[(e(),T("svg",q1,t[138]||(t[138]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"p")])],-1))]),t[158]||(t[158]=a(" and the ")),Q("mjx-container",N1,[(e(),T("svg",W1,t[140]||(t[140]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[159]||(t[159]=a(" velocity fields ")),Q("mjx-container",K1,[(e(),T("svg",U1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[160]||(t[160]=a(" are each defined in their own canonical positions ")),Q("mjx-container",$1,[(e(),T("svg",Y1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"I")])])],-1))]),t[161]||(t[161]=a(" and ")),Q("mjx-container",_1,[(e(),T("svg",Q3,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])])],-1))]),t[162]||(t[162]=a(" for ")),Q("mjx-container",t3,[(e(),T("svg",a3,t[148]||(t[148]=[l('',1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[163]||(t[163]=a(". In the following, we derive equations for these unknowns."))]),Q("p",null,[t[170]||(t[170]=a("Using the pressure control volume ")),Q("mjx-container",T3,[(e(),T("svg",e3,t[164]||(t[164]=[l('',1)]))),t[165]||(t[165]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[171]||(t[171]=a(" with ")),Q("mjx-container",l3,[(e(),T("svg",s3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[172]||(t[172]=a(" in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ")),Q("mjx-container",m3,[(e(),T("svg",o3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")])])]),Q("mi",null,"u"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"≈"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[173]||(t[173]=a(" results in the discrete divergence-free constraint"))]),Q("mjx-container",n3,[(e(),T("svg",d3,t[174]||(t[174]=[l('',1)]))),t[175]||(t[175]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0.")])],-1))]),Q("p",null,[t[178]||(t[178]=a("Note how dividing by the volume size results in a discrete equation resembling the continuous one (since ")),Q("mjx-container",r3,[(e(),T("svg",i3,t[176]||(t[176]=[l('',1)]))),t[177]||(t[177]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[179]||(t[179]=a(")."))]),Q("p",null,[t[186]||(t[186]=a("Similarly, choosing an ")),Q("mjx-container",h3,[(e(),T("svg",p3,t[180]||(t[180]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[187]||(t[187]=a("-velocity control volume ")),Q("mjx-container",g3,[(e(),T("svg",H3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[188]||(t[188]=a(" with ")),Q("mjx-container",u3,[(e(),T("svg",c3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[189]||(t[189]=a(" in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations"))]),Q("mjx-container",w3,[(e(),T("svg",x3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[220]||(t[220]=a("where we made the assumption that ")),Q("mjx-container",L3,[(e(),T("svg",f3,t[192]||(t[192]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D453",d:"M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z",style:{"stroke-width":"3"}})])])],-1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"f")])],-1))]),t[221]||(t[221]=a(" is constant in time for simplicity. The outer discrete derivative in ")),Q("mjx-container",y3,[(e(),T("svg",M3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[222]||(t[222]=a(" is required at the position ")),Q("mjx-container",k3,[(e(),T("svg",V3,t[196]||(t[196]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[197]||(t[197]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I")])],-1))]),t[223]||(t[223]=a(", which means that the inner derivative is evaluated as ")),Q("mjx-container",Z3,[(e(),T("svg",b3,t[198]||(t[198]=[l('',1)]))),t[199]||(t[199]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[224]||(t[224]=a(" and ")),Q("mjx-container",v3,[(e(),T("svg",D3,t[200]||(t[200]=[l('',1)]))),t[201]||(t[201]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[225]||(t[225]=a(", thus requiring ")),Q("mjx-container",j3,[(e(),T("svg",C3,t[202]||(t[202]=[l('',1)]))),t[203]||(t[203]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[226]||(t[226]=a(", ")),Q("mjx-container",O3,[(e(),T("svg",R3,t[204]||(t[204]=[l('',1)]))),t[205]||(t[205]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")])])],-1))]),t[227]||(t[227]=a(", and ")),Q("mjx-container",F3,[(e(),T("svg",A3,t[206]||(t[206]=[l('',1)]))),t[207]||(t[207]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[228]||(t[228]=a(", which are all in their canonical positions. The two velocity components in the convective term ")),Q("mjx-container",B3,[(e(),T("svg",X3,t[208]||(t[208]=[l('',1)]))),t[209]||(t[209]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")])])],-1))]),t[229]||(t[229]=a(" are required at the positions ")),Q("mjx-container",S3,[(e(),T("svg",z3,t[210]||(t[210]=[l('',1)]))),t[211]||(t[211]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[230]||(t[230]=a(" and ")),Q("mjx-container",I3,[(e(),T("svg",G3,t[212]||(t[212]=[l('',1)]))),t[213]||(t[213]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[231]||(t[231]=a(", which are outside the canonical positions. Their value at the required position is obtained using averaging with weights ")),Q("mjx-container",J3,[(e(),T("svg",E3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[232]||(t[232]=a(" for the ")),Q("mjx-container",P3,[(e(),T("svg",q3,t[216]||(t[216]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[233]||(t[233]=a("-component and with linear interpolation for the ")),Q("mjx-container",N3,[(e(),T("svg",W3,t[218]||(t[218]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",style:{"stroke-width":"3"}})])])],-1)]))),t[219]||(t[219]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β")])],-1))]),t[234]||(t[234]=a("-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [")),t[235]||(t[235]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14",-1)),t[236]||(t[236]=a("]."))]),t[387]||(t[387]=Q("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),Q("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),Q("div",K3,[t[262]||(t[262]=Q("p",{class:"custom-block-title"},"Storage convention",-1)),Q("p",null,[t[253]||(t[253]=a("We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the ")),Q("mjx-container",U3,[(e(),T("svg",$3,t[237]||(t[237]=[l('',1)]))),t[238]||(t[238]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])],-1))]),t[254]||(t[254]=a("-index ")),Q("mjx-container",Y3,[(e(),T("svg",_3,t[239]||(t[239]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[240]||(t[240]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[255]||(t[255]=a(" will vary for one whole cycle in the vectors before the ")),Q("mjx-container",Q2,[(e(),T("svg",t2,t[241]||(t[241]=[l('',1)]))),t[242]||(t[242]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])],-1))]),t[256]||(t[256]=a("-index ")),Q("mjx-container",a2,[(e(),T("svg",T2,t[243]||(t[243]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[244]||(t[244]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[257]||(t[257]=a(", ")),Q("mjx-container",e2,[(e(),T("svg",l2,t[245]||(t[245]=[l('',1)]))),t[246]||(t[246]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[258]||(t[258]=a(" index ")),Q("mjx-container",s2,[(e(),T("svg",m2,t[247]||(t[247]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[248]||(t[248]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[259]||(t[259]=a(", and component-index ")),Q("mjx-container",o2,[(e(),T("svg",n2,t[249]||(t[249]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[250]||(t[250]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[260]||(t[260]=a(" are incremented, e.g. ")),Q("mjx-container",d2,[(e(),T("svg",r2,t[251]||(t[251]=[l('',1)]))),t[252]||(t[252]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[261]||(t[261]=a(" in 3D."))])]),t[388]||(t[388]=Q("h2",{id:"Fourth-order-accurate-discretization",tabindex:"-1"},[a("Fourth order accurate discretization "),Q("a",{class:"header-anchor",href:"#Fourth-order-accurate-discretization","aria-label":'Permalink to "Fourth order accurate discretization {#Fourth-order-accurate-discretization}"'},"​")],-1)),t[389]||(t[389]=Q("p",null,[a("The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14"),a("] ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2014"},"15"),a("]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume")],-1)),Q("mjx-container",i2,[(e(),T("svg",h2,t[263]||(t[263]=[l('',1)]))),t[264]||(t[264]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[267]||(t[267]=a("while the momentum equation is derived for its shifted variant ")),Q("mjx-container",p2,[(e(),T("svg",g2,t[265]||(t[265]=[l('',1)]))),t[266]||(t[266]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])]),Q("mn",null,"3")])])],-1))]),t[268]||(t[268]=a(". The resulting fourth order accurate equations are given by"))]),Q("mjx-container",H2,[(e(),T("svg",u2,t[269]||(t[269]=[l('',1)]))),t[270]||(t[270]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),Q("mrow",null,[Q("msup",null,[Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2"),Q("mo",null,"+"),Q("mi",null,"d")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[390]||(t[390]=Q("p",null,"and",-1)),Q("mjx-container",c2,[(e(),T("svg",w2,t[271]||(t[271]=[l('',1)]))),t[272]||(t[272]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mtext",null,"fourth order"),Q("mo",null,",")])],-1))]),t[391]||(t[391]=Q("p",null,"where",-1)),Q("mjx-container",x2,[(e(),T("svg",L2,t[273]||(t[273]=[l('',1)]))),t[274]||(t[274]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1")]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mi",null,"α")])])]),Q("mo",null,".")])],-1))]),t[392]||(t[392]=Q("h2",{id:"Matrix-representation",tabindex:"-1"},[a("Matrix representation "),Q("a",{class:"header-anchor",href:"#Matrix-representation","aria-label":'Permalink to "Matrix representation {#Matrix-representation}"'},"​")],-1)),t[393]||(t[393]=Q("p",null,"We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes",-1)),Q("mjx-container",f2,[(e(),T("svg",y2,t[275]||(t[275]=[l('',1)]))),t[276]||(t[276]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"M"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,",")])],-1))]),Q("p",null,[t[281]||(t[281]=a("where ")),Q("mjx-container",M2,[(e(),T("svg",k2,t[277]||(t[277]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[278]||(t[278]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[282]||(t[282]=a(" is the discrete divergence operator and ")),Q("mjx-container",V2,[(e(),T("svg",Z2,t[279]||(t[279]=[l('',1)]))),t[280]||(t[280]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])])],-1))]),t[283]||(t[283]=a(" contains the boundary value contributions of the velocity to the divergence field."))]),t[394]||(t[394]=Q("p",null,"The discrete momentum equations become",-1)),Q("mjx-container",b2,[(e(),T("svg",v2,t[284]||(t[284]=[l('',1)]))),t[285]||(t[285]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mo",null,"−"),Q("mi",null,"C"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"ν"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"D"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"f"),Q("mi",null,"h")]),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,",")])])])])],-1))]),Q("p",null,[t[306]||(t[306]=a("where ")),Q("mjx-container",D2,[(e(),T("svg",j2,t[286]||(t[286]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D436",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),t[287]||(t[287]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"C")])],-1))]),t[307]||(t[307]=a(" is she convection operator (including boundary contributions), ")),Q("mjx-container",C2,[(e(),T("svg",O2,t[288]||(t[288]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),t[289]||(t[289]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"D")])],-1))]),t[308]||(t[308]=a(" is the diffusion operator, ")),Q("mjx-container",R2,[(e(),T("svg",F2,t[290]||(t[290]=[l('',1)]))),t[291]||(t[291]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")])])],-1))]),t[309]||(t[309]=a(" is boundary contribution to the diffusion term, ")),Q("mjx-container",A2,[(e(),T("svg",B2,t[292]||(t[292]=[l('',1)]))),t[293]||(t[293]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"G"),Q("mo",null,"="),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[310]||(t[310]=a(" is the pressure gradient operator, ")),Q("mjx-container",X2,[(e(),T("svg",S2,t[294]||(t[294]=[l('',1)]))),t[295]||(t[295]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")])])],-1))]),t[311]||(t[311]=a(" contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), ")),Q("mjx-container",z2,[(e(),T("svg",I2,t[296]||(t[296]=[l('',1)]))),t[297]||(t[297]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"W"),Q("mi",null,"u")])])],-1))]),t[312]||(t[312]=a(" is a diagonal matrix containing the velocity volume sizes ")),Q("mjx-container",G2,[(e(),T("svg",J2,t[298]||(t[298]=[l('',1)]))),t[299]||(t[299]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[313]||(t[313]=a(", and ")),Q("mjx-container",E2,[(e(),T("svg",P2,t[300]||(t[300]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),t[301]||(t[301]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"W")])],-1))]),t[314]||(t[314]=a(" is a diagonal matrix containing the reference volume sizes ")),Q("mjx-container",q2,[(e(),T("svg",N2,t[302]||(t[302]=[l('',1)]))),t[303]||(t[303]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[315]||(t[315]=a(". The term ")),Q("mjx-container",W2,[(e(),T("svg",K2,t[304]||(t[304]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[305]||(t[305]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F")])],-1))]),t[316]||(t[316]=a(" refers to all the forces except for the pressure gradient."))]),t[395]||(t[395]=Q("div",{class:"tip custom-block"},[Q("p",{class:"custom-block-title"},"Volume normalization"),Q("p",null,"All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.")],-1)),t[396]||(t[396]=Q("h2",{id:"Discrete-pressure-Poisson-equation",tabindex:"-1"},[a("Discrete pressure Poisson equation "),Q("a",{class:"header-anchor",href:"#Discrete-pressure-Poisson-equation","aria-label":'Permalink to "Discrete pressure Poisson equation {#Discrete-pressure-Poisson-equation}"'},"​")],-1)),Q("p",null,[t[319]||(t[319]=a("Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the ")),t[320]||(t[320]=Q("em",null,"discrete",-1)),t[321]||(t[321]=a(" setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator ")),Q("mjx-container",U2,[(e(),T("svg",$2,t[317]||(t[317]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[318]||(t[318]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[322]||(t[322]=a(" to the discrete momentum equations yields the discrete pressure Poisson equation"))]),Q("mjx-container",Y2,[(e(),T("svg",_2,t[323]||(t[323]=[l('',1)]))),t[324]||(t[324]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"L"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[327]||(t[327]=a("where ")),Q("mjx-container",Q4,[(e(),T("svg",t4,t[325]||(t[325]=[l('',1)]))),t[326]||(t[326]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mi",null,"G"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[328]||(t[328]=a(" is a discrete Laplace operator. It is positive symmetric."))]),Q("div",a4,[t[339]||(t[339]=Q("p",{class:"custom-block-title"},"Unsteady Dirichlet boundary conditions",-1)),Q("p",null,[t[335]||(t[335]=a("If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term ")),Q("mjx-container",T4,[(e(),T("svg",e4,t[329]||(t[329]=[l('',1)]))),t[330]||(t[330]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])])],-1))]),t[336]||(t[336]=a(" will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example ")),Q("mjx-container",l4,[(e(),T("svg",s4,t[331]||(t[331]=[l('',1)]))),t[332]||(t[332]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"≈"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[337]||(t[337]=a(" for some ")),Q("mjx-container",m4,[(e(),T("svg",o4,t[333]||(t[333]=[l('',1)]))),t[334]||(t[334]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[338]||(t[338]=a("."))])]),Q("div",n4,[t[344]||(t[344]=Q("p",{class:"custom-block-title"},"Uniqueness of pressure field",-1)),Q("p",null,[t[342]||(t[342]=a("Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as ")),Q("mjx-container",d4,[(e(),T("svg",r4,t[340]||(t[340]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43F",d:"M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z",style:{"stroke-width":"3"}})])])],-1)]))),t[341]||(t[341]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L")])],-1))]),t[343]||(t[343]=a(" will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field."))])]),Q("div",i4,[t[360]||(t[360]=Q("p",{class:"custom-block-title"},"Pressure projection",-1)),Q("p",null,[t[347]||(t[347]=a("The pressure field ")),Q("mjx-container",h4,[(e(),T("svg",p4,t[345]||(t[345]=[l('',1)]))),t[346]||(t[346]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")])])],-1))]),t[348]||(t[348]=a(" can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:"))]),Q("mjx-container",g4,[(e(),T("svg",H4,t[349]||(t[349]=[l('',1)]))),t[350]||(t[350]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),t[361]||(t[361]=Q("p",null,"The momentum equations then become",-1)),Q("mjx-container",u4,[(e(),T("svg",c4,t[351]||(t[351]=[l('',1)]))),t[352]||(t[352]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[357]||(t[357]=a("The matrix ")),Q("mjx-container",w4,[(e(),T("svg",x4,t[353]||(t[353]=[l('',1)]))),t[354]||(t[354]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")")])],-1))]),t[358]||(t[358]=a(" is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix ")),Q("mjx-container",L4,[(e(),T("svg",f4,t[355]||(t[355]=[l('',1)]))),t[356]||(t[356]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])])])],-1))]),t[359]||(t[359]=a(", which would be very costly."))])]),t[397]||(t[397]=Q("h2",{id:"Discrete-output-quantities",tabindex:"-1"},[a("Discrete output quantities "),Q("a",{class:"header-anchor",href:"#Discrete-output-quantities","aria-label":'Permalink to "Discrete output quantities {#Discrete-output-quantities}"'},"​")],-1)),t[398]||(t[398]=Q("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),Q("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),Q("p",null,[t[364]||(t[364]=a("The local kinetic energy is defined by ")),Q("mjx-container",y4,[(e(),T("svg",M4,t[362]||(t[362]=[l('',1)]))),t[363]||(t[363]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mi",null,"u"),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[365]||(t[365]=a(". On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares."))]),t[399]||(t[399]=Q("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),Q("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t[400]||(t[400]=Q("p",null,"In 2D, the vorticity is a scalar. We define it as",-1)),Q("mjx-container",k4,[(e(),T("svg",V4,t[366]||(t[366]=[l('',1)]))),t[367]||(t[367]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"2")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"1")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,".")])],-1))]),Q("p",null,[t[374]||(t[374]=a("The 3D vorticity is a vector field ")),Q("mjx-container",Z4,[(e(),T("svg",b4,t[368]||(t[368]=[l('',1)]))),t[369]||(t[369]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"1")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[375]||(t[375]=a(". Noting ")),Q("mjx-container",v4,[(e(),T("svg",D4,t[370]||(t[370]=[l('',1)]))),t[371]||(t[371]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"+"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[376]||(t[376]=a(" and ")),Q("mjx-container",j4,[(e(),T("svg",C4,t[372]||(t[372]=[l('',1)]))),t[373]||(t[373]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[377]||(t[377]=a(", the vorticity is defined as through"))]),Q("mjx-container",O4,[(e(),T("svg",R4,t[378]||(t[378]=[l('',1)]))),t[379]||(t[379]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msup",null,[Q("mi",null,"ω"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("mo",null,".")])],-1))]),t[401]||(t[401]=Q("h2",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),Q("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t[402]||(t[402]=Q("p",null,"In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields",-1)),Q("mjx-container",F4,[(e(),T("svg",A4,t[380]||(t[380]=[l('',1)]))),t[381]||(t[381]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("mi",null,"ω"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("msup",null,[Q("mi",{mathvariant:"normal"},"∇"),Q("mn",null,"2")]),Q("mi",null,"ψ"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"2")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,".")])])])])],-1))]),t[403]||(t[403]=Q("p",null,"Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:",-1)),Q("mjx-container",B4,[(e(),T("svg",X4,t[382]||(t[382]=[l('',1)]))),t[383]||(t[383]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"+")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"=")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mtd")])])])],-1))])])}const N4=s(o,[["render",S4]]);export{q4 as __pageData,N4 as default}; +import{_ as s,c as T,j as Q,a,a5 as l,o as e}from"./chunks/framework.CojPSOJE.js";const m="/IncompressibleNavierStokes.jl/previews/PR126/assets/grid.BpiJkA_F.png",q4=JSON.parse('{"title":"Spatial discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/spatial.md","filePath":"manual/spatial.md","lastUpdated":null}'),o={name:"manual/spatial.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.825ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6110.6 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.04ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.352ex",height:"2.972ex",role:"img",focusable:"false",viewBox:"0 -853.7 5901.8 1313.5","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.171ex",height:"1.65ex",role:"img",focusable:"false",viewBox:"0 -442 1401.8 729.2","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.746ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 2539.6 899","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 500 688","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.06ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4446.7 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.957ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6610.8 1000","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.207ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 975.5 840.8","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.693ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1190.3 736.2","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 736.2","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.897ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7468.5 1311.1","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.608ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3362.7 851.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.136ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 944 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.708ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.628ex",height:"2.404ex",role:"img",focusable:"false",viewBox:"0 -749.5 5581.6 1062.6","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.248ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 14695.6 1312.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.887ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 10116.1 1103.7","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.047ex",height:"3.138ex",role:"img",focusable:"false",viewBox:"0 -967.8 6650.7 1387.1","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.899ex",height:"3.398ex",role:"img",focusable:"false",viewBox:"0 -989.3 14099.5 1501.7","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.351ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 8111.2 1829.8","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.17ex",height:"2.477ex",role:"img",focusable:"false",viewBox:"0 -675.5 4937 1094.8","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.881ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 9671.5 1829.8","aria-hidden":"true"},g1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.431ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10356.5 1000","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.216ex",height:"1.979ex",role:"img",focusable:"false",viewBox:"0 -717 979.5 874.8","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4298.3 1000","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.558ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.85ex",height:"5.509ex",role:"img",focusable:"false",viewBox:"0 -1304.6 10983.9 2435","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.817ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.673ex",height:"2.852ex",role:"img",focusable:"false",viewBox:"0 -899.6 1623.4 1260.7","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},Z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.662ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7364.4 1311.1","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.628ex",height:"1.932ex",role:"img",focusable:"false",viewBox:"0 -704 1161.4 854","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.709ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2081.4 1000","aria-hidden":"true"},B1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.626ex",height:"2.235ex",role:"img",focusable:"false",viewBox:"0 -680 1160.5 987.7","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.083ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -750 2246.5 1057.7","aria-hidden":"true"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 686.5","aria-hidden":"true"},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.592ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.311ex",height:"1.592ex",role:"img",focusable:"false",viewBox:"0 -442 2347.5 703.6","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},m3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.651ex",height:"2.834ex",role:"img",focusable:"false",viewBox:"0 -805.5 7359.6 1252.4","aria-hidden":"true"},n3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.52ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 6860 2986.6","aria-hidden":"true"},r3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.677ex",height:"2.644ex",role:"img",focusable:"false",viewBox:"0 -749.5 6929.3 1168.8","aria-hidden":"true"},h3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},u3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},w3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.46ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 27165.4 3093.4","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.244ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -705 550 910","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.456ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 4179.4 1037.2","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},j3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},O3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"2.225ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 983.3","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},B3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.893ex",height:"1.974ex",role:"img",focusable:"false",viewBox:"0 -861.5 2162.8 872.5","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},I3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},J3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1500 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},N3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},K3={class:"tip custom-block"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.333ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.174ex",height:"3.232ex",role:"img",focusable:"false",viewBox:"0 -839.4 18641 1428.6","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.818ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.325ex",height:"6.755ex",role:"img",focusable:"false",viewBox:"0 -1740.2 12519.5 2985.6","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.65ex",height:"2.869ex",role:"img",focusable:"false",viewBox:"0 -839.4 2497.5 1268.1","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"37.854ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 16731.4 2986.6","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"76.065ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 33620.8 3093.4","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.504ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.611ex",height:"5.456ex",role:"img",focusable:"false",viewBox:"0 -1304.6 13972.2 2411.5","aria-hidden":"true"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.302ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6763.5 888","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.978ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1316.2 647","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.56ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 21905.5 3367","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.719ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 760 727","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.621ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1158.5 647","aria-hidden":"true"},A2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.672ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 6927 1104.3","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.554ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1128.8 647","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.239ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1431.5 840.8","aria-hidden":"true"},G2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.709ex",height:"2.495ex",role:"img",focusable:"false",viewBox:"0 -749.5 4291.3 1103","aria-hidden":"true"},E2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.885ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1717.4 999","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.489ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 15686 2067","aria-hidden":"true"},Q4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"29.728ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 13139.6 1104.3","aria-hidden":"true"},a4={class:"tip custom-block"},T4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},l4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.943ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 14118.6 1328.5","aria-hidden":"true"},m4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},n4={class:"tip custom-block"},d4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.541ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 681 683","aria-hidden":"true"},i4={class:"tip custom-block"},h4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.247ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 993.3 636","aria-hidden":"true"},g4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"41.494ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 18340.4 2067","aria-hidden":"true"},u4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.126ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 23481.8 2067","aria-hidden":"true"},w4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.966ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 7057.1 1083.9","aria-hidden":"true"},L4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.773ex",height:"1.887ex",role:"img",focusable:"false",viewBox:"0 -833.9 1667.7 833.9","aria-hidden":"true"},y4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.759ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 11827.4 1312.8","aria-hidden":"true"},k4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.127ex",height:"2.185ex",role:"img",focusable:"false",viewBox:"0 -883.9 8012.2 965.9","aria-hidden":"true"},Z4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.957ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4843 1083.9","aria-hidden":"true"},v4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},j4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},O4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.286ex",height:"2.36ex",role:"img",focusable:"false",viewBox:"0 -961.2 10734.5 1043.2","aria-hidden":"true"},F4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.999ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.753ex",height:"19.129ex",role:"img",focusable:"false",viewBox:"0 -4477.6 21990.6 8455.2","aria-hidden":"true"},B4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},X4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.191ex"},xmlns:"http://www.w3.org/2000/svg",width:"60.665ex",height:"17.514ex",role:"img",focusable:"false",viewBox:"0 -4120.6 26813.9 7741.1","aria-hidden":"true"};function S4(z4,t,I4,G4,J4,E4){return e(),T("div",null,[t[384]||(t[384]=Q("h1",{id:"Spatial-discretization",tabindex:"-1"},[a("Spatial discretization "),Q("a",{class:"header-anchor",href:"#Spatial-discretization","aria-label":'Permalink to "Spatial discretization {#Spatial-discretization}"'},"​")],-1)),Q("p",null,[t[36]||(t[36]=a("the ")),Q("mjx-container",n,[(e(),T("svg",d,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[37]||(t[37]=a(" spatial dimensions are indexed by ")),Q("mjx-container",r,[(e(),T("svg",i,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"d"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[38]||(t[38]=a(". The ")),Q("mjx-container",h,[(e(),T("svg",p,t[4]||(t[4]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[39]||(t[39]=a("-th unit vector is denoted ")),Q("mjx-container",g,[(e(),T("svg",H,t[6]||(t[6]=[l('',1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])]),Q("msubsup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")])])],-1))]),t[40]||(t[40]=a(", where the Kronecker symbol ")),Q("mjx-container",u,[(e(),T("svg",c,t[8]||(t[8]=[l('',1)]))),t[9]||(t[9]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])])])],-1))]),t[41]||(t[41]=a(" is ")),Q("mjx-container",w,[(e(),T("svg",x,t[10]||(t[10]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),t[11]||(t[11]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1")])],-1))]),t[42]||(t[42]=a(" if ")),Q("mjx-container",L,[(e(),T("svg",f,t[12]||(t[12]=[l('',1)]))),t[13]||(t[13]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mi",null,"β")])],-1))]),t[43]||(t[43]=a(" and ")),Q("mjx-container",y,[(e(),T("svg",M,t[14]||(t[14]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z",style:{"stroke-width":"3"}})])])],-1)]))),t[15]||(t[15]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"0")])],-1))]),t[44]||(t[44]=a(" otherwise. We note ")),Q("mjx-container",k,[(e(),T("svg",V,t[16]||(t[16]=[l('',1)]))),t[17]||(t[17]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[45]||(t[45]=a(". The Cartesian index ")),Q("mjx-container",Z,[(e(),T("svg",b,t[18]||(t[18]=[l('',1)]))),t[19]||(t[19]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[46]||(t[46]=a(" is used to avoid repeating terms and equations ")),Q("mjx-container",v,[(e(),T("svg",D,t[20]||(t[20]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[21]||(t[21]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[47]||(t[47]=a(" times, where ")),Q("mjx-container",j,[(e(),T("svg",C,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[48]||(t[48]=a(" is a scalar index (typically one of ")),Q("mjx-container",O,[(e(),T("svg",R,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[49]||(t[49]=a(", ")),Q("mjx-container",F,[(e(),T("svg",A,t[26]||(t[26]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[50]||(t[50]=a(", and ")),Q("mjx-container",B,[(e(),T("svg",X,t[28]||(t[28]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[29]||(t[29]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[51]||(t[51]=a(" in common notation). This notation is dimension-agnostic, since we can write ")),Q("mjx-container",S,[(e(),T("svg",z,t[30]||(t[30]=[l('',1)]))),t[31]||(t[31]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[52]||(t[52]=a(" instead of ")),Q("mjx-container",I,[(e(),T("svg",G,t[32]||(t[32]=[l('',1)]))),t[33]||(t[33]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j")])])])],-1))]),t[53]||(t[53]=a(" in 2D or ")),Q("mjx-container",J,[(e(),T("svg",E,t[34]||(t[34]=[l('',1)]))),t[35]||(t[35]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j"),Q("mi",null,"k")])])])],-1))]),t[54]||(t[54]=a(" in 3D. In our Julia implementation of the solver we use the same Cartesian notation (")),t[55]||(t[55]=Q("code",null,"u[I]",-1)),t[56]||(t[56]=a(" instead of ")),t[57]||(t[57]=Q("code",null,"u[i, j]",-1)),t[58]||(t[58]=a(" or ")),t[59]||(t[59]=Q("code",null,"u[i, j, k]",-1)),t[60]||(t[60]=a(")."))]),Q("p",null,[t[91]||(t[91]=a("For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [")),t[92]||(t[92]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Harlow1965"},"13",-1)),t[93]||(t[93]=a("]. Consider a rectangular domain ")),Q("mjx-container",P,[(e(),T("svg",q,t[61]||(t[61]=[l('',1)]))),t[62]||(t[62]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"["),Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"]")])],-1))]),t[94]||(t[94]=a(", where ")),Q("mjx-container",N,[(e(),T("svg",W,t[63]||(t[63]=[l('',1)]))),t[64]||(t[64]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,"<"),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")])])],-1))]),t[95]||(t[95]=a(" are the domain boundaries and ")),Q("mjx-container",K,[(e(),T("svg",U,t[65]||(t[65]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mo"},[Q("path",{"data-c":"220F",d:"M158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656Z",style:{"stroke-width":"3"}})])])],-1)]))),t[66]||(t[66]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"OP"},"∏")])],-1))]),t[96]||(t[96]=a(" is a Cartesian product. Let ")),Q("mjx-container",$,[(e(),T("svg",Y,t[67]||(t[67]=[l('',1)]))),t[68]||(t[68]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[97]||(t[97]=a(" be a partitioning of ")),Q("mjx-container",_,[(e(),T("svg",Q1,t[69]||(t[69]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),t[70]||(t[70]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω")])],-1))]),t[98]||(t[98]=a(", where ")),Q("mjx-container",t1,[(e(),T("svg",a1,t[71]||(t[71]=[l('',1)]))),t[72]||(t[72]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[99]||(t[99]=a(" are volume center indices, ")),Q("mjx-container",T1,[(e(),T("svg",e1,t[73]||(t[73]=[l('',1)]))),t[74]||(t[74]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"∈"),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"double-struck"},"N")]),Q("mi",null,"d")])])],-1))]),t[100]||(t[100]=a(" are the number of volumes in each dimension, ")),Q("mjx-container",l1,[(e(),T("svg",s1,t[75]||(t[75]=[l('',1)]))),t[76]||(t[76]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[101]||(t[101]=a(" is a finite volume, ")),Q("mjx-container",m1,[(e(),T("svg",o1,t[77]||(t[77]=[l('',1)]))),t[78]||(t[78]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"∩"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"≠"),Q("mi",null,"α")])]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"β")])]),Q("mi",null,"β")])])],-1))]),t[102]||(t[102]=a(" is a volume face, ")),Q("mjx-container",n1,[(e(),T("svg",d1,t[79]||(t[79]=[l('',1)]))),t[80]||(t[80]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),t[103]||(t[103]=a(" is a volume edge, ")),Q("mjx-container",r1,[(e(),T("svg",i1,t[81]||(t[81]=[l('',1)]))),t[82]||(t[82]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mn",null,"0"),Q("mi",null,"α")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[104]||(t[104]=a(" are volume boundary coordinates, and ")),Q("mjx-container",h1,[(e(),T("svg",p1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t[105]||(t[105]=a(" for ")),Q("mjx-container",g1,[(e(),T("svg",H1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[106]||(t[106]=a(" are volume center coordinates. We also define the operator ")),Q("mjx-container",u1,[(e(),T("svg",c1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")])])],-1))]),t[107]||(t[107]=a(" which maps a discrete scalar field ")),Q("mjx-container",w1,[(e(),T("svg",x1,t[89]||(t[89]=[l('',1)]))),t[90]||(t[90]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"φ"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"φ"),Q("mi",null,"I")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")])])],-1))]),t[108]||(t[108]=a(" to"))]),Q("mjx-container",L1,[(e(),T("svg",f1,t[109]||(t[109]=[l('',1)]))),t[110]||(t[110]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[119]||(t[119]=a("It can be interpreted as a discrete equivalent of the continuous operator ")),Q("mjx-container",y1,[(e(),T("svg",M1,t[111]||(t[111]=[l('',1)]))),t[112]||(t[112]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mi",null,"∂"),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mi",null,"α")])])])])],-1))]),t[120]||(t[120]=a(". All the above definitions are extended to be valid in volume centers ")),Q("mjx-container",k1,[(e(),T("svg",V1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[121]||(t[121]=a(", volume faces ")),Q("mjx-container",Z1,[(e(),T("svg",b1,t[115]||(t[115]=[l('',1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[122]||(t[122]=a(", or volume corners ")),Q("mjx-container",v1,[(e(),T("svg",D1,t[117]||(t[117]=[l('',1)]))),t[118]||(t[118]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[123]||(t[123]=a(". The discretization is illustrated below:"))]),t[385]||(t[385]=Q("p",null,[Q("img",{src:m,alt:""})],-1)),t[386]||(t[386]=Q("h2",{id:"Finite-volume-discretization-of-the-Navier-Stokes-equations",tabindex:"-1"},[a("Finite volume discretization of the Navier-Stokes equations "),Q("a",{class:"header-anchor",href:"#Finite-volume-discretization-of-the-Navier-Stokes-equations","aria-label":'Permalink to "Finite volume discretization of the Navier-Stokes equations {#Finite-volume-discretization-of-the-Navier-Stokes-equations}"'},"​")],-1)),Q("p",null,[t[150]||(t[150]=a("We now define the unknown degrees of freedom. The average pressure in ")),Q("mjx-container",j1,[(e(),T("svg",C1,t[124]||(t[124]=[l('',1)]))),t[125]||(t[125]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[151]||(t[151]=a(", ")),Q("mjx-container",O1,[(e(),T("svg",R1,t[126]||(t[126]=[l('',1)]))),t[127]||(t[127]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[152]||(t[152]=a(" is approximated by the quantity ")),Q("mjx-container",F1,[(e(),T("svg",A1,t[128]||(t[128]=[l('',1)]))),t[129]||(t[129]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"I")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[153]||(t[153]=a(". The average ")),Q("mjx-container",B1,[(e(),T("svg",X1,t[130]||(t[130]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[131]||(t[131]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[154]||(t[154]=a("-velocity on the face ")),Q("mjx-container",S1,[(e(),T("svg",z1,t[132]||(t[132]=[l('',1)]))),t[133]||(t[133]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[155]||(t[155]=a(", ")),Q("mjx-container",I1,[(e(),T("svg",G1,t[134]||(t[134]=[l('',1)]))),t[135]||(t[135]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[156]||(t[156]=a(" is approximated by the quantity ")),Q("mjx-container",J1,[(e(),T("svg",E1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[157]||(t[157]=a(". Note how the pressure ")),Q("mjx-container",P1,[(e(),T("svg",q1,t[138]||(t[138]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"p")])],-1))]),t[158]||(t[158]=a(" and the ")),Q("mjx-container",N1,[(e(),T("svg",W1,t[140]||(t[140]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[159]||(t[159]=a(" velocity fields ")),Q("mjx-container",K1,[(e(),T("svg",U1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[160]||(t[160]=a(" are each defined in their own canonical positions ")),Q("mjx-container",$1,[(e(),T("svg",Y1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"I")])])],-1))]),t[161]||(t[161]=a(" and ")),Q("mjx-container",_1,[(e(),T("svg",Q3,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])])],-1))]),t[162]||(t[162]=a(" for ")),Q("mjx-container",t3,[(e(),T("svg",a3,t[148]||(t[148]=[l('',1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[163]||(t[163]=a(". In the following, we derive equations for these unknowns."))]),Q("p",null,[t[170]||(t[170]=a("Using the pressure control volume ")),Q("mjx-container",T3,[(e(),T("svg",e3,t[164]||(t[164]=[l('',1)]))),t[165]||(t[165]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[171]||(t[171]=a(" with ")),Q("mjx-container",l3,[(e(),T("svg",s3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[172]||(t[172]=a(" in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ")),Q("mjx-container",m3,[(e(),T("svg",o3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")])])]),Q("mi",null,"u"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"≈"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[173]||(t[173]=a(" results in the discrete divergence-free constraint"))]),Q("mjx-container",n3,[(e(),T("svg",d3,t[174]||(t[174]=[l('',1)]))),t[175]||(t[175]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0.")])],-1))]),Q("p",null,[t[178]||(t[178]=a("Note how dividing by the volume size results in a discrete equation resembling the continuous one (since ")),Q("mjx-container",r3,[(e(),T("svg",i3,t[176]||(t[176]=[l('',1)]))),t[177]||(t[177]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[179]||(t[179]=a(")."))]),Q("p",null,[t[186]||(t[186]=a("Similarly, choosing an ")),Q("mjx-container",h3,[(e(),T("svg",p3,t[180]||(t[180]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[187]||(t[187]=a("-velocity control volume ")),Q("mjx-container",g3,[(e(),T("svg",H3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[188]||(t[188]=a(" with ")),Q("mjx-container",u3,[(e(),T("svg",c3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[189]||(t[189]=a(" in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations"))]),Q("mjx-container",w3,[(e(),T("svg",x3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[220]||(t[220]=a("where we made the assumption that ")),Q("mjx-container",L3,[(e(),T("svg",f3,t[192]||(t[192]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D453",d:"M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z",style:{"stroke-width":"3"}})])])],-1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"f")])],-1))]),t[221]||(t[221]=a(" is constant in time for simplicity. The outer discrete derivative in ")),Q("mjx-container",y3,[(e(),T("svg",M3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[222]||(t[222]=a(" is required at the position ")),Q("mjx-container",k3,[(e(),T("svg",V3,t[196]||(t[196]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[197]||(t[197]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I")])],-1))]),t[223]||(t[223]=a(", which means that the inner derivative is evaluated as ")),Q("mjx-container",Z3,[(e(),T("svg",b3,t[198]||(t[198]=[l('',1)]))),t[199]||(t[199]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[224]||(t[224]=a(" and ")),Q("mjx-container",v3,[(e(),T("svg",D3,t[200]||(t[200]=[l('',1)]))),t[201]||(t[201]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[225]||(t[225]=a(", thus requiring ")),Q("mjx-container",j3,[(e(),T("svg",C3,t[202]||(t[202]=[l('',1)]))),t[203]||(t[203]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[226]||(t[226]=a(", ")),Q("mjx-container",O3,[(e(),T("svg",R3,t[204]||(t[204]=[l('',1)]))),t[205]||(t[205]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")])])],-1))]),t[227]||(t[227]=a(", and ")),Q("mjx-container",F3,[(e(),T("svg",A3,t[206]||(t[206]=[l('',1)]))),t[207]||(t[207]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[228]||(t[228]=a(", which are all in their canonical positions. The two velocity components in the convective term ")),Q("mjx-container",B3,[(e(),T("svg",X3,t[208]||(t[208]=[l('',1)]))),t[209]||(t[209]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")])])],-1))]),t[229]||(t[229]=a(" are required at the positions ")),Q("mjx-container",S3,[(e(),T("svg",z3,t[210]||(t[210]=[l('',1)]))),t[211]||(t[211]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[230]||(t[230]=a(" and ")),Q("mjx-container",I3,[(e(),T("svg",G3,t[212]||(t[212]=[l('',1)]))),t[213]||(t[213]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[231]||(t[231]=a(", which are outside the canonical positions. Their value at the required position is obtained using averaging with weights ")),Q("mjx-container",J3,[(e(),T("svg",E3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[232]||(t[232]=a(" for the ")),Q("mjx-container",P3,[(e(),T("svg",q3,t[216]||(t[216]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[233]||(t[233]=a("-component and with linear interpolation for the ")),Q("mjx-container",N3,[(e(),T("svg",W3,t[218]||(t[218]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",style:{"stroke-width":"3"}})])])],-1)]))),t[219]||(t[219]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β")])],-1))]),t[234]||(t[234]=a("-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [")),t[235]||(t[235]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14",-1)),t[236]||(t[236]=a("]."))]),t[387]||(t[387]=Q("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),Q("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),Q("div",K3,[t[262]||(t[262]=Q("p",{class:"custom-block-title"},"Storage convention",-1)),Q("p",null,[t[253]||(t[253]=a("We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the ")),Q("mjx-container",U3,[(e(),T("svg",$3,t[237]||(t[237]=[l('',1)]))),t[238]||(t[238]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])],-1))]),t[254]||(t[254]=a("-index ")),Q("mjx-container",Y3,[(e(),T("svg",_3,t[239]||(t[239]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[240]||(t[240]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[255]||(t[255]=a(" will vary for one whole cycle in the vectors before the ")),Q("mjx-container",Q2,[(e(),T("svg",t2,t[241]||(t[241]=[l('',1)]))),t[242]||(t[242]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])],-1))]),t[256]||(t[256]=a("-index ")),Q("mjx-container",a2,[(e(),T("svg",T2,t[243]||(t[243]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[244]||(t[244]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[257]||(t[257]=a(", ")),Q("mjx-container",e2,[(e(),T("svg",l2,t[245]||(t[245]=[l('',1)]))),t[246]||(t[246]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[258]||(t[258]=a(" index ")),Q("mjx-container",s2,[(e(),T("svg",m2,t[247]||(t[247]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[248]||(t[248]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[259]||(t[259]=a(", and component-index ")),Q("mjx-container",o2,[(e(),T("svg",n2,t[249]||(t[249]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[250]||(t[250]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[260]||(t[260]=a(" are incremented, e.g. ")),Q("mjx-container",d2,[(e(),T("svg",r2,t[251]||(t[251]=[l('',1)]))),t[252]||(t[252]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[261]||(t[261]=a(" in 3D."))])]),t[388]||(t[388]=Q("h2",{id:"Fourth-order-accurate-discretization",tabindex:"-1"},[a("Fourth order accurate discretization "),Q("a",{class:"header-anchor",href:"#Fourth-order-accurate-discretization","aria-label":'Permalink to "Fourth order accurate discretization {#Fourth-order-accurate-discretization}"'},"​")],-1)),t[389]||(t[389]=Q("p",null,[a("The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14"),a("] ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2014"},"15"),a("]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume")],-1)),Q("mjx-container",i2,[(e(),T("svg",h2,t[263]||(t[263]=[l('',1)]))),t[264]||(t[264]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[267]||(t[267]=a("while the momentum equation is derived for its shifted variant ")),Q("mjx-container",p2,[(e(),T("svg",g2,t[265]||(t[265]=[l('',1)]))),t[266]||(t[266]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])]),Q("mn",null,"3")])])],-1))]),t[268]||(t[268]=a(". The resulting fourth order accurate equations are given by"))]),Q("mjx-container",H2,[(e(),T("svg",u2,t[269]||(t[269]=[l('',1)]))),t[270]||(t[270]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),Q("mrow",null,[Q("msup",null,[Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2"),Q("mo",null,"+"),Q("mi",null,"d")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[390]||(t[390]=Q("p",null,"and",-1)),Q("mjx-container",c2,[(e(),T("svg",w2,t[271]||(t[271]=[l('',1)]))),t[272]||(t[272]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mtext",null,"fourth order"),Q("mo",null,",")])],-1))]),t[391]||(t[391]=Q("p",null,"where",-1)),Q("mjx-container",x2,[(e(),T("svg",L2,t[273]||(t[273]=[l('',1)]))),t[274]||(t[274]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1")]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mi",null,"α")])])]),Q("mo",null,".")])],-1))]),t[392]||(t[392]=Q("h2",{id:"Matrix-representation",tabindex:"-1"},[a("Matrix representation "),Q("a",{class:"header-anchor",href:"#Matrix-representation","aria-label":'Permalink to "Matrix representation {#Matrix-representation}"'},"​")],-1)),t[393]||(t[393]=Q("p",null,"We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes",-1)),Q("mjx-container",f2,[(e(),T("svg",y2,t[275]||(t[275]=[l('',1)]))),t[276]||(t[276]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"M"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,",")])],-1))]),Q("p",null,[t[281]||(t[281]=a("where ")),Q("mjx-container",M2,[(e(),T("svg",k2,t[277]||(t[277]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[278]||(t[278]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[282]||(t[282]=a(" is the discrete divergence operator and ")),Q("mjx-container",V2,[(e(),T("svg",Z2,t[279]||(t[279]=[l('',1)]))),t[280]||(t[280]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])])],-1))]),t[283]||(t[283]=a(" contains the boundary value contributions of the velocity to the divergence field."))]),t[394]||(t[394]=Q("p",null,"The discrete momentum equations become",-1)),Q("mjx-container",b2,[(e(),T("svg",v2,t[284]||(t[284]=[l('',1)]))),t[285]||(t[285]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mo",null,"−"),Q("mi",null,"C"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"ν"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"D"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"f"),Q("mi",null,"h")]),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,",")])])])])],-1))]),Q("p",null,[t[306]||(t[306]=a("where ")),Q("mjx-container",D2,[(e(),T("svg",j2,t[286]||(t[286]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D436",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),t[287]||(t[287]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"C")])],-1))]),t[307]||(t[307]=a(" is she convection operator (including boundary contributions), ")),Q("mjx-container",C2,[(e(),T("svg",O2,t[288]||(t[288]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),t[289]||(t[289]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"D")])],-1))]),t[308]||(t[308]=a(" is the diffusion operator, ")),Q("mjx-container",R2,[(e(),T("svg",F2,t[290]||(t[290]=[l('',1)]))),t[291]||(t[291]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")])])],-1))]),t[309]||(t[309]=a(" is boundary contribution to the diffusion term, ")),Q("mjx-container",A2,[(e(),T("svg",B2,t[292]||(t[292]=[l('',1)]))),t[293]||(t[293]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"G"),Q("mo",null,"="),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[310]||(t[310]=a(" is the pressure gradient operator, ")),Q("mjx-container",X2,[(e(),T("svg",S2,t[294]||(t[294]=[l('',1)]))),t[295]||(t[295]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")])])],-1))]),t[311]||(t[311]=a(" contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), ")),Q("mjx-container",z2,[(e(),T("svg",I2,t[296]||(t[296]=[l('',1)]))),t[297]||(t[297]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"W"),Q("mi",null,"u")])])],-1))]),t[312]||(t[312]=a(" is a diagonal matrix containing the velocity volume sizes ")),Q("mjx-container",G2,[(e(),T("svg",J2,t[298]||(t[298]=[l('',1)]))),t[299]||(t[299]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[313]||(t[313]=a(", and ")),Q("mjx-container",E2,[(e(),T("svg",P2,t[300]||(t[300]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),t[301]||(t[301]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"W")])],-1))]),t[314]||(t[314]=a(" is a diagonal matrix containing the reference volume sizes ")),Q("mjx-container",q2,[(e(),T("svg",N2,t[302]||(t[302]=[l('',1)]))),t[303]||(t[303]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[315]||(t[315]=a(". The term ")),Q("mjx-container",W2,[(e(),T("svg",K2,t[304]||(t[304]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[305]||(t[305]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F")])],-1))]),t[316]||(t[316]=a(" refers to all the forces except for the pressure gradient."))]),t[395]||(t[395]=Q("div",{class:"tip custom-block"},[Q("p",{class:"custom-block-title"},"Volume normalization"),Q("p",null,"All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.")],-1)),t[396]||(t[396]=Q("h2",{id:"Discrete-pressure-Poisson-equation",tabindex:"-1"},[a("Discrete pressure Poisson equation "),Q("a",{class:"header-anchor",href:"#Discrete-pressure-Poisson-equation","aria-label":'Permalink to "Discrete pressure Poisson equation {#Discrete-pressure-Poisson-equation}"'},"​")],-1)),Q("p",null,[t[319]||(t[319]=a("Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the ")),t[320]||(t[320]=Q("em",null,"discrete",-1)),t[321]||(t[321]=a(" setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator ")),Q("mjx-container",U2,[(e(),T("svg",$2,t[317]||(t[317]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[318]||(t[318]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[322]||(t[322]=a(" to the discrete momentum equations yields the discrete pressure Poisson equation"))]),Q("mjx-container",Y2,[(e(),T("svg",_2,t[323]||(t[323]=[l('',1)]))),t[324]||(t[324]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"L"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[327]||(t[327]=a("where ")),Q("mjx-container",Q4,[(e(),T("svg",t4,t[325]||(t[325]=[l('',1)]))),t[326]||(t[326]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mi",null,"G"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[328]||(t[328]=a(" is a discrete Laplace operator. It is positive symmetric."))]),Q("div",a4,[t[339]||(t[339]=Q("p",{class:"custom-block-title"},"Unsteady Dirichlet boundary conditions",-1)),Q("p",null,[t[335]||(t[335]=a("If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term ")),Q("mjx-container",T4,[(e(),T("svg",e4,t[329]||(t[329]=[l('',1)]))),t[330]||(t[330]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])])],-1))]),t[336]||(t[336]=a(" will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example ")),Q("mjx-container",l4,[(e(),T("svg",s4,t[331]||(t[331]=[l('',1)]))),t[332]||(t[332]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"≈"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[337]||(t[337]=a(" for some ")),Q("mjx-container",m4,[(e(),T("svg",o4,t[333]||(t[333]=[l('',1)]))),t[334]||(t[334]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[338]||(t[338]=a("."))])]),Q("div",n4,[t[344]||(t[344]=Q("p",{class:"custom-block-title"},"Uniqueness of pressure field",-1)),Q("p",null,[t[342]||(t[342]=a("Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as ")),Q("mjx-container",d4,[(e(),T("svg",r4,t[340]||(t[340]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43F",d:"M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z",style:{"stroke-width":"3"}})])])],-1)]))),t[341]||(t[341]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L")])],-1))]),t[343]||(t[343]=a(" will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field."))])]),Q("div",i4,[t[360]||(t[360]=Q("p",{class:"custom-block-title"},"Pressure projection",-1)),Q("p",null,[t[347]||(t[347]=a("The pressure field ")),Q("mjx-container",h4,[(e(),T("svg",p4,t[345]||(t[345]=[l('',1)]))),t[346]||(t[346]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")])])],-1))]),t[348]||(t[348]=a(" can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:"))]),Q("mjx-container",g4,[(e(),T("svg",H4,t[349]||(t[349]=[l('',1)]))),t[350]||(t[350]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),t[361]||(t[361]=Q("p",null,"The momentum equations then become",-1)),Q("mjx-container",u4,[(e(),T("svg",c4,t[351]||(t[351]=[l('',1)]))),t[352]||(t[352]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[357]||(t[357]=a("The matrix ")),Q("mjx-container",w4,[(e(),T("svg",x4,t[353]||(t[353]=[l('',1)]))),t[354]||(t[354]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")")])],-1))]),t[358]||(t[358]=a(" is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix ")),Q("mjx-container",L4,[(e(),T("svg",f4,t[355]||(t[355]=[l('',1)]))),t[356]||(t[356]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])])])],-1))]),t[359]||(t[359]=a(", which would be very costly."))])]),t[397]||(t[397]=Q("h2",{id:"Discrete-output-quantities",tabindex:"-1"},[a("Discrete output quantities "),Q("a",{class:"header-anchor",href:"#Discrete-output-quantities","aria-label":'Permalink to "Discrete output quantities {#Discrete-output-quantities}"'},"​")],-1)),t[398]||(t[398]=Q("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),Q("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),Q("p",null,[t[364]||(t[364]=a("The local kinetic energy is defined by ")),Q("mjx-container",y4,[(e(),T("svg",M4,t[362]||(t[362]=[l('',1)]))),t[363]||(t[363]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mi",null,"u"),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[365]||(t[365]=a(". On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares."))]),t[399]||(t[399]=Q("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),Q("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t[400]||(t[400]=Q("p",null,"In 2D, the vorticity is a scalar. We define it as",-1)),Q("mjx-container",k4,[(e(),T("svg",V4,t[366]||(t[366]=[l('',1)]))),t[367]||(t[367]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"2")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"1")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,".")])],-1))]),Q("p",null,[t[374]||(t[374]=a("The 3D vorticity is a vector field ")),Q("mjx-container",Z4,[(e(),T("svg",b4,t[368]||(t[368]=[l('',1)]))),t[369]||(t[369]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"1")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[375]||(t[375]=a(". Noting ")),Q("mjx-container",v4,[(e(),T("svg",D4,t[370]||(t[370]=[l('',1)]))),t[371]||(t[371]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"+"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[376]||(t[376]=a(" and ")),Q("mjx-container",j4,[(e(),T("svg",C4,t[372]||(t[372]=[l('',1)]))),t[373]||(t[373]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[377]||(t[377]=a(", the vorticity is defined as through"))]),Q("mjx-container",O4,[(e(),T("svg",R4,t[378]||(t[378]=[l('',1)]))),t[379]||(t[379]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msup",null,[Q("mi",null,"ω"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("mo",null,".")])],-1))]),t[401]||(t[401]=Q("h2",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),Q("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t[402]||(t[402]=Q("p",null,"In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields",-1)),Q("mjx-container",F4,[(e(),T("svg",A4,t[380]||(t[380]=[l('',1)]))),t[381]||(t[381]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("mi",null,"ω"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("msup",null,[Q("mi",{mathvariant:"normal"},"∇"),Q("mn",null,"2")]),Q("mi",null,"ψ"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"2")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,".")])])])])],-1))]),t[403]||(t[403]=Q("p",null,"Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:",-1)),Q("mjx-container",B4,[(e(),T("svg",X4,t[382]||(t[382]=[l('',1)]))),t[383]||(t[383]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"+")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"=")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mtd")])])])],-1))])])}const N4=s(o,[["render",S4]]);export{q4 as __pageData,N4 as default}; diff --git a/previews/PR126/assets/manual_spatial.md.Cj3WsAzX.lean.js b/previews/PR126/assets/manual_spatial.md.BhAOohkr.lean.js similarity index 99% rename from previews/PR126/assets/manual_spatial.md.Cj3WsAzX.lean.js rename to previews/PR126/assets/manual_spatial.md.BhAOohkr.lean.js index 924ddbd3..8fbda30b 100644 --- a/previews/PR126/assets/manual_spatial.md.Cj3WsAzX.lean.js +++ b/previews/PR126/assets/manual_spatial.md.BhAOohkr.lean.js @@ -1 +1 @@ -import{_ as s,c as T,j as Q,a,a5 as l,o as e}from"./chunks/framework.BSoZtefh.js";const m="/IncompressibleNavierStokes.jl/previews/PR126/assets/grid.BpiJkA_F.png",q4=JSON.parse('{"title":"Spatial discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/spatial.md","filePath":"manual/spatial.md","lastUpdated":null}'),o={name:"manual/spatial.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.825ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6110.6 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.04ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.352ex",height:"2.972ex",role:"img",focusable:"false",viewBox:"0 -853.7 5901.8 1313.5","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.171ex",height:"1.65ex",role:"img",focusable:"false",viewBox:"0 -442 1401.8 729.2","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.746ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 2539.6 899","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 500 688","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.06ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4446.7 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.957ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6610.8 1000","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.207ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 975.5 840.8","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.693ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1190.3 736.2","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 736.2","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.897ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7468.5 1311.1","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.608ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3362.7 851.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.136ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 944 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.708ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.628ex",height:"2.404ex",role:"img",focusable:"false",viewBox:"0 -749.5 5581.6 1062.6","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.248ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 14695.6 1312.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.887ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 10116.1 1103.7","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.047ex",height:"3.138ex",role:"img",focusable:"false",viewBox:"0 -967.8 6650.7 1387.1","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.899ex",height:"3.398ex",role:"img",focusable:"false",viewBox:"0 -989.3 14099.5 1501.7","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.351ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 8111.2 1829.8","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.17ex",height:"2.477ex",role:"img",focusable:"false",viewBox:"0 -675.5 4937 1094.8","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.881ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 9671.5 1829.8","aria-hidden":"true"},g1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.431ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10356.5 1000","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.216ex",height:"1.979ex",role:"img",focusable:"false",viewBox:"0 -717 979.5 874.8","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4298.3 1000","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.558ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.85ex",height:"5.509ex",role:"img",focusable:"false",viewBox:"0 -1304.6 10983.9 2435","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.817ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.673ex",height:"2.852ex",role:"img",focusable:"false",viewBox:"0 -899.6 1623.4 1260.7","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},Z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.662ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7364.4 1311.1","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.628ex",height:"1.932ex",role:"img",focusable:"false",viewBox:"0 -704 1161.4 854","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.709ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2081.4 1000","aria-hidden":"true"},B1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.626ex",height:"2.235ex",role:"img",focusable:"false",viewBox:"0 -680 1160.5 987.7","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.083ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -750 2246.5 1057.7","aria-hidden":"true"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 686.5","aria-hidden":"true"},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.592ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.311ex",height:"1.592ex",role:"img",focusable:"false",viewBox:"0 -442 2347.5 703.6","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},m3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.651ex",height:"2.834ex",role:"img",focusable:"false",viewBox:"0 -805.5 7359.6 1252.4","aria-hidden":"true"},n3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.52ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 6860 2986.6","aria-hidden":"true"},r3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.677ex",height:"2.644ex",role:"img",focusable:"false",viewBox:"0 -749.5 6929.3 1168.8","aria-hidden":"true"},h3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},u3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},w3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.46ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 27165.4 3093.4","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.244ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -705 550 910","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.456ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 4179.4 1037.2","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},j3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},O3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"2.225ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 983.3","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},B3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.893ex",height:"1.974ex",role:"img",focusable:"false",viewBox:"0 -861.5 2162.8 872.5","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},I3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},J3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1500 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},N3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},K3={class:"tip custom-block"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.333ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.174ex",height:"3.232ex",role:"img",focusable:"false",viewBox:"0 -839.4 18641 1428.6","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.818ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.325ex",height:"6.755ex",role:"img",focusable:"false",viewBox:"0 -1740.2 12519.5 2985.6","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.65ex",height:"2.869ex",role:"img",focusable:"false",viewBox:"0 -839.4 2497.5 1268.1","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"37.854ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 16731.4 2986.6","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"76.065ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 33620.8 3093.4","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.504ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.611ex",height:"5.456ex",role:"img",focusable:"false",viewBox:"0 -1304.6 13972.2 2411.5","aria-hidden":"true"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.302ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6763.5 888","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.978ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1316.2 647","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.56ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 21905.5 3367","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.719ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 760 727","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.621ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1158.5 647","aria-hidden":"true"},A2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.672ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 6927 1104.3","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.554ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1128.8 647","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.239ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1431.5 840.8","aria-hidden":"true"},G2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.709ex",height:"2.495ex",role:"img",focusable:"false",viewBox:"0 -749.5 4291.3 1103","aria-hidden":"true"},E2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.885ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1717.4 999","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.489ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 15686 2067","aria-hidden":"true"},Q4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"29.728ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 13139.6 1104.3","aria-hidden":"true"},a4={class:"tip custom-block"},T4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},l4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.943ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 14118.6 1328.5","aria-hidden":"true"},m4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},n4={class:"tip custom-block"},d4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.541ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 681 683","aria-hidden":"true"},i4={class:"tip custom-block"},h4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.247ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 993.3 636","aria-hidden":"true"},g4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"41.494ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 18340.4 2067","aria-hidden":"true"},u4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.126ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 23481.8 2067","aria-hidden":"true"},w4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.966ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 7057.1 1083.9","aria-hidden":"true"},L4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.773ex",height:"1.887ex",role:"img",focusable:"false",viewBox:"0 -833.9 1667.7 833.9","aria-hidden":"true"},y4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.759ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 11827.4 1312.8","aria-hidden":"true"},k4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.127ex",height:"2.185ex",role:"img",focusable:"false",viewBox:"0 -883.9 8012.2 965.9","aria-hidden":"true"},Z4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.957ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4843 1083.9","aria-hidden":"true"},v4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},j4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},O4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.286ex",height:"2.36ex",role:"img",focusable:"false",viewBox:"0 -961.2 10734.5 1043.2","aria-hidden":"true"},F4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.999ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.753ex",height:"19.129ex",role:"img",focusable:"false",viewBox:"0 -4477.6 21990.6 8455.2","aria-hidden":"true"},B4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},X4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.191ex"},xmlns:"http://www.w3.org/2000/svg",width:"60.665ex",height:"17.514ex",role:"img",focusable:"false",viewBox:"0 -4120.6 26813.9 7741.1","aria-hidden":"true"};function S4(z4,t,I4,G4,J4,E4){return e(),T("div",null,[t[384]||(t[384]=Q("h1",{id:"Spatial-discretization",tabindex:"-1"},[a("Spatial discretization "),Q("a",{class:"header-anchor",href:"#Spatial-discretization","aria-label":'Permalink to "Spatial discretization {#Spatial-discretization}"'},"​")],-1)),Q("p",null,[t[36]||(t[36]=a("the ")),Q("mjx-container",n,[(e(),T("svg",d,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[37]||(t[37]=a(" spatial dimensions are indexed by ")),Q("mjx-container",r,[(e(),T("svg",i,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"d"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[38]||(t[38]=a(". The ")),Q("mjx-container",h,[(e(),T("svg",p,t[4]||(t[4]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[39]||(t[39]=a("-th unit vector is denoted ")),Q("mjx-container",g,[(e(),T("svg",H,t[6]||(t[6]=[l('',1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])]),Q("msubsup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")])])],-1))]),t[40]||(t[40]=a(", where the Kronecker symbol ")),Q("mjx-container",u,[(e(),T("svg",c,t[8]||(t[8]=[l('',1)]))),t[9]||(t[9]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])])])],-1))]),t[41]||(t[41]=a(" is ")),Q("mjx-container",w,[(e(),T("svg",x,t[10]||(t[10]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),t[11]||(t[11]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1")])],-1))]),t[42]||(t[42]=a(" if ")),Q("mjx-container",L,[(e(),T("svg",f,t[12]||(t[12]=[l('',1)]))),t[13]||(t[13]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mi",null,"β")])],-1))]),t[43]||(t[43]=a(" and ")),Q("mjx-container",y,[(e(),T("svg",M,t[14]||(t[14]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z",style:{"stroke-width":"3"}})])])],-1)]))),t[15]||(t[15]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"0")])],-1))]),t[44]||(t[44]=a(" otherwise. We note ")),Q("mjx-container",k,[(e(),T("svg",V,t[16]||(t[16]=[l('',1)]))),t[17]||(t[17]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[45]||(t[45]=a(". The Cartesian index ")),Q("mjx-container",Z,[(e(),T("svg",b,t[18]||(t[18]=[l('',1)]))),t[19]||(t[19]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[46]||(t[46]=a(" is used to avoid repeating terms and equations ")),Q("mjx-container",v,[(e(),T("svg",D,t[20]||(t[20]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[21]||(t[21]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[47]||(t[47]=a(" times, where ")),Q("mjx-container",j,[(e(),T("svg",C,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[48]||(t[48]=a(" is a scalar index (typically one of ")),Q("mjx-container",O,[(e(),T("svg",R,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[49]||(t[49]=a(", ")),Q("mjx-container",F,[(e(),T("svg",A,t[26]||(t[26]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[50]||(t[50]=a(", and ")),Q("mjx-container",B,[(e(),T("svg",X,t[28]||(t[28]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[29]||(t[29]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[51]||(t[51]=a(" in common notation). This notation is dimension-agnostic, since we can write ")),Q("mjx-container",S,[(e(),T("svg",z,t[30]||(t[30]=[l('',1)]))),t[31]||(t[31]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[52]||(t[52]=a(" instead of ")),Q("mjx-container",I,[(e(),T("svg",G,t[32]||(t[32]=[l('',1)]))),t[33]||(t[33]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j")])])])],-1))]),t[53]||(t[53]=a(" in 2D or ")),Q("mjx-container",J,[(e(),T("svg",E,t[34]||(t[34]=[l('',1)]))),t[35]||(t[35]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j"),Q("mi",null,"k")])])])],-1))]),t[54]||(t[54]=a(" in 3D. In our Julia implementation of the solver we use the same Cartesian notation (")),t[55]||(t[55]=Q("code",null,"u[I]",-1)),t[56]||(t[56]=a(" instead of ")),t[57]||(t[57]=Q("code",null,"u[i, j]",-1)),t[58]||(t[58]=a(" or ")),t[59]||(t[59]=Q("code",null,"u[i, j, k]",-1)),t[60]||(t[60]=a(")."))]),Q("p",null,[t[91]||(t[91]=a("For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [")),t[92]||(t[92]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Harlow1965"},"13",-1)),t[93]||(t[93]=a("]. Consider a rectangular domain ")),Q("mjx-container",P,[(e(),T("svg",q,t[61]||(t[61]=[l('',1)]))),t[62]||(t[62]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"["),Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"]")])],-1))]),t[94]||(t[94]=a(", where ")),Q("mjx-container",N,[(e(),T("svg",W,t[63]||(t[63]=[l('',1)]))),t[64]||(t[64]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,"<"),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")])])],-1))]),t[95]||(t[95]=a(" are the domain boundaries and ")),Q("mjx-container",K,[(e(),T("svg",U,t[65]||(t[65]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mo"},[Q("path",{"data-c":"220F",d:"M158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656Z",style:{"stroke-width":"3"}})])])],-1)]))),t[66]||(t[66]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"OP"},"∏")])],-1))]),t[96]||(t[96]=a(" is a Cartesian product. Let ")),Q("mjx-container",$,[(e(),T("svg",Y,t[67]||(t[67]=[l('',1)]))),t[68]||(t[68]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[97]||(t[97]=a(" be a partitioning of ")),Q("mjx-container",_,[(e(),T("svg",Q1,t[69]||(t[69]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),t[70]||(t[70]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω")])],-1))]),t[98]||(t[98]=a(", where ")),Q("mjx-container",t1,[(e(),T("svg",a1,t[71]||(t[71]=[l('',1)]))),t[72]||(t[72]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[99]||(t[99]=a(" are volume center indices, ")),Q("mjx-container",T1,[(e(),T("svg",e1,t[73]||(t[73]=[l('',1)]))),t[74]||(t[74]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"∈"),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"double-struck"},"N")]),Q("mi",null,"d")])])],-1))]),t[100]||(t[100]=a(" are the number of volumes in each dimension, ")),Q("mjx-container",l1,[(e(),T("svg",s1,t[75]||(t[75]=[l('',1)]))),t[76]||(t[76]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[101]||(t[101]=a(" is a finite volume, ")),Q("mjx-container",m1,[(e(),T("svg",o1,t[77]||(t[77]=[l('',1)]))),t[78]||(t[78]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"∩"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"≠"),Q("mi",null,"α")])]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"β")])]),Q("mi",null,"β")])])],-1))]),t[102]||(t[102]=a(" is a volume face, ")),Q("mjx-container",n1,[(e(),T("svg",d1,t[79]||(t[79]=[l('',1)]))),t[80]||(t[80]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),t[103]||(t[103]=a(" is a volume edge, ")),Q("mjx-container",r1,[(e(),T("svg",i1,t[81]||(t[81]=[l('',1)]))),t[82]||(t[82]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mn",null,"0"),Q("mi",null,"α")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[104]||(t[104]=a(" are volume boundary coordinates, and ")),Q("mjx-container",h1,[(e(),T("svg",p1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t[105]||(t[105]=a(" for ")),Q("mjx-container",g1,[(e(),T("svg",H1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[106]||(t[106]=a(" are volume center coordinates. We also define the operator ")),Q("mjx-container",u1,[(e(),T("svg",c1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")])])],-1))]),t[107]||(t[107]=a(" which maps a discrete scalar field ")),Q("mjx-container",w1,[(e(),T("svg",x1,t[89]||(t[89]=[l('',1)]))),t[90]||(t[90]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"φ"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"φ"),Q("mi",null,"I")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")])])],-1))]),t[108]||(t[108]=a(" to"))]),Q("mjx-container",L1,[(e(),T("svg",f1,t[109]||(t[109]=[l('',1)]))),t[110]||(t[110]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[119]||(t[119]=a("It can be interpreted as a discrete equivalent of the continuous operator ")),Q("mjx-container",y1,[(e(),T("svg",M1,t[111]||(t[111]=[l('',1)]))),t[112]||(t[112]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mi",null,"∂"),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mi",null,"α")])])])])],-1))]),t[120]||(t[120]=a(". All the above definitions are extended to be valid in volume centers ")),Q("mjx-container",k1,[(e(),T("svg",V1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[121]||(t[121]=a(", volume faces ")),Q("mjx-container",Z1,[(e(),T("svg",b1,t[115]||(t[115]=[l('',1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[122]||(t[122]=a(", or volume corners ")),Q("mjx-container",v1,[(e(),T("svg",D1,t[117]||(t[117]=[l('',1)]))),t[118]||(t[118]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[123]||(t[123]=a(". The discretization is illustrated below:"))]),t[385]||(t[385]=Q("p",null,[Q("img",{src:m,alt:""})],-1)),t[386]||(t[386]=Q("h2",{id:"Finite-volume-discretization-of-the-Navier-Stokes-equations",tabindex:"-1"},[a("Finite volume discretization of the Navier-Stokes equations "),Q("a",{class:"header-anchor",href:"#Finite-volume-discretization-of-the-Navier-Stokes-equations","aria-label":'Permalink to "Finite volume discretization of the Navier-Stokes equations {#Finite-volume-discretization-of-the-Navier-Stokes-equations}"'},"​")],-1)),Q("p",null,[t[150]||(t[150]=a("We now define the unknown degrees of freedom. The average pressure in ")),Q("mjx-container",j1,[(e(),T("svg",C1,t[124]||(t[124]=[l('',1)]))),t[125]||(t[125]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[151]||(t[151]=a(", ")),Q("mjx-container",O1,[(e(),T("svg",R1,t[126]||(t[126]=[l('',1)]))),t[127]||(t[127]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[152]||(t[152]=a(" is approximated by the quantity ")),Q("mjx-container",F1,[(e(),T("svg",A1,t[128]||(t[128]=[l('',1)]))),t[129]||(t[129]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"I")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[153]||(t[153]=a(". The average ")),Q("mjx-container",B1,[(e(),T("svg",X1,t[130]||(t[130]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[131]||(t[131]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[154]||(t[154]=a("-velocity on the face ")),Q("mjx-container",S1,[(e(),T("svg",z1,t[132]||(t[132]=[l('',1)]))),t[133]||(t[133]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[155]||(t[155]=a(", ")),Q("mjx-container",I1,[(e(),T("svg",G1,t[134]||(t[134]=[l('',1)]))),t[135]||(t[135]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[156]||(t[156]=a(" is approximated by the quantity ")),Q("mjx-container",J1,[(e(),T("svg",E1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[157]||(t[157]=a(". Note how the pressure ")),Q("mjx-container",P1,[(e(),T("svg",q1,t[138]||(t[138]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"p")])],-1))]),t[158]||(t[158]=a(" and the ")),Q("mjx-container",N1,[(e(),T("svg",W1,t[140]||(t[140]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[159]||(t[159]=a(" velocity fields ")),Q("mjx-container",K1,[(e(),T("svg",U1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[160]||(t[160]=a(" are each defined in their own canonical positions ")),Q("mjx-container",$1,[(e(),T("svg",Y1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"I")])])],-1))]),t[161]||(t[161]=a(" and ")),Q("mjx-container",_1,[(e(),T("svg",Q3,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])])],-1))]),t[162]||(t[162]=a(" for ")),Q("mjx-container",t3,[(e(),T("svg",a3,t[148]||(t[148]=[l('',1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[163]||(t[163]=a(". In the following, we derive equations for these unknowns."))]),Q("p",null,[t[170]||(t[170]=a("Using the pressure control volume ")),Q("mjx-container",T3,[(e(),T("svg",e3,t[164]||(t[164]=[l('',1)]))),t[165]||(t[165]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[171]||(t[171]=a(" with ")),Q("mjx-container",l3,[(e(),T("svg",s3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[172]||(t[172]=a(" in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ")),Q("mjx-container",m3,[(e(),T("svg",o3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")])])]),Q("mi",null,"u"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"≈"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[173]||(t[173]=a(" results in the discrete divergence-free constraint"))]),Q("mjx-container",n3,[(e(),T("svg",d3,t[174]||(t[174]=[l('',1)]))),t[175]||(t[175]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0.")])],-1))]),Q("p",null,[t[178]||(t[178]=a("Note how dividing by the volume size results in a discrete equation resembling the continuous one (since ")),Q("mjx-container",r3,[(e(),T("svg",i3,t[176]||(t[176]=[l('',1)]))),t[177]||(t[177]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[179]||(t[179]=a(")."))]),Q("p",null,[t[186]||(t[186]=a("Similarly, choosing an ")),Q("mjx-container",h3,[(e(),T("svg",p3,t[180]||(t[180]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[187]||(t[187]=a("-velocity control volume ")),Q("mjx-container",g3,[(e(),T("svg",H3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[188]||(t[188]=a(" with ")),Q("mjx-container",u3,[(e(),T("svg",c3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[189]||(t[189]=a(" in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations"))]),Q("mjx-container",w3,[(e(),T("svg",x3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[220]||(t[220]=a("where we made the assumption that ")),Q("mjx-container",L3,[(e(),T("svg",f3,t[192]||(t[192]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D453",d:"M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z",style:{"stroke-width":"3"}})])])],-1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"f")])],-1))]),t[221]||(t[221]=a(" is constant in time for simplicity. The outer discrete derivative in ")),Q("mjx-container",y3,[(e(),T("svg",M3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[222]||(t[222]=a(" is required at the position ")),Q("mjx-container",k3,[(e(),T("svg",V3,t[196]||(t[196]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[197]||(t[197]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I")])],-1))]),t[223]||(t[223]=a(", which means that the inner derivative is evaluated as ")),Q("mjx-container",Z3,[(e(),T("svg",b3,t[198]||(t[198]=[l('',1)]))),t[199]||(t[199]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[224]||(t[224]=a(" and ")),Q("mjx-container",v3,[(e(),T("svg",D3,t[200]||(t[200]=[l('',1)]))),t[201]||(t[201]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[225]||(t[225]=a(", thus requiring ")),Q("mjx-container",j3,[(e(),T("svg",C3,t[202]||(t[202]=[l('',1)]))),t[203]||(t[203]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[226]||(t[226]=a(", ")),Q("mjx-container",O3,[(e(),T("svg",R3,t[204]||(t[204]=[l('',1)]))),t[205]||(t[205]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")])])],-1))]),t[227]||(t[227]=a(", and ")),Q("mjx-container",F3,[(e(),T("svg",A3,t[206]||(t[206]=[l('',1)]))),t[207]||(t[207]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[228]||(t[228]=a(", which are all in their canonical positions. The two velocity components in the convective term ")),Q("mjx-container",B3,[(e(),T("svg",X3,t[208]||(t[208]=[l('',1)]))),t[209]||(t[209]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")])])],-1))]),t[229]||(t[229]=a(" are required at the positions ")),Q("mjx-container",S3,[(e(),T("svg",z3,t[210]||(t[210]=[l('',1)]))),t[211]||(t[211]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[230]||(t[230]=a(" and ")),Q("mjx-container",I3,[(e(),T("svg",G3,t[212]||(t[212]=[l('',1)]))),t[213]||(t[213]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[231]||(t[231]=a(", which are outside the canonical positions. Their value at the required position is obtained using averaging with weights ")),Q("mjx-container",J3,[(e(),T("svg",E3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[232]||(t[232]=a(" for the ")),Q("mjx-container",P3,[(e(),T("svg",q3,t[216]||(t[216]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[233]||(t[233]=a("-component and with linear interpolation for the ")),Q("mjx-container",N3,[(e(),T("svg",W3,t[218]||(t[218]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",style:{"stroke-width":"3"}})])])],-1)]))),t[219]||(t[219]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β")])],-1))]),t[234]||(t[234]=a("-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [")),t[235]||(t[235]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14",-1)),t[236]||(t[236]=a("]."))]),t[387]||(t[387]=Q("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),Q("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),Q("div",K3,[t[262]||(t[262]=Q("p",{class:"custom-block-title"},"Storage convention",-1)),Q("p",null,[t[253]||(t[253]=a("We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the ")),Q("mjx-container",U3,[(e(),T("svg",$3,t[237]||(t[237]=[l('',1)]))),t[238]||(t[238]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])],-1))]),t[254]||(t[254]=a("-index ")),Q("mjx-container",Y3,[(e(),T("svg",_3,t[239]||(t[239]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[240]||(t[240]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[255]||(t[255]=a(" will vary for one whole cycle in the vectors before the ")),Q("mjx-container",Q2,[(e(),T("svg",t2,t[241]||(t[241]=[l('',1)]))),t[242]||(t[242]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])],-1))]),t[256]||(t[256]=a("-index ")),Q("mjx-container",a2,[(e(),T("svg",T2,t[243]||(t[243]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[244]||(t[244]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[257]||(t[257]=a(", ")),Q("mjx-container",e2,[(e(),T("svg",l2,t[245]||(t[245]=[l('',1)]))),t[246]||(t[246]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[258]||(t[258]=a(" index ")),Q("mjx-container",s2,[(e(),T("svg",m2,t[247]||(t[247]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[248]||(t[248]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[259]||(t[259]=a(", and component-index ")),Q("mjx-container",o2,[(e(),T("svg",n2,t[249]||(t[249]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[250]||(t[250]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[260]||(t[260]=a(" are incremented, e.g. ")),Q("mjx-container",d2,[(e(),T("svg",r2,t[251]||(t[251]=[l('',1)]))),t[252]||(t[252]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[261]||(t[261]=a(" in 3D."))])]),t[388]||(t[388]=Q("h2",{id:"Fourth-order-accurate-discretization",tabindex:"-1"},[a("Fourth order accurate discretization "),Q("a",{class:"header-anchor",href:"#Fourth-order-accurate-discretization","aria-label":'Permalink to "Fourth order accurate discretization {#Fourth-order-accurate-discretization}"'},"​")],-1)),t[389]||(t[389]=Q("p",null,[a("The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14"),a("] ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2014"},"15"),a("]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume")],-1)),Q("mjx-container",i2,[(e(),T("svg",h2,t[263]||(t[263]=[l('',1)]))),t[264]||(t[264]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[267]||(t[267]=a("while the momentum equation is derived for its shifted variant ")),Q("mjx-container",p2,[(e(),T("svg",g2,t[265]||(t[265]=[l('',1)]))),t[266]||(t[266]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])]),Q("mn",null,"3")])])],-1))]),t[268]||(t[268]=a(". The resulting fourth order accurate equations are given by"))]),Q("mjx-container",H2,[(e(),T("svg",u2,t[269]||(t[269]=[l('',1)]))),t[270]||(t[270]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),Q("mrow",null,[Q("msup",null,[Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2"),Q("mo",null,"+"),Q("mi",null,"d")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[390]||(t[390]=Q("p",null,"and",-1)),Q("mjx-container",c2,[(e(),T("svg",w2,t[271]||(t[271]=[l('',1)]))),t[272]||(t[272]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mtext",null,"fourth order"),Q("mo",null,",")])],-1))]),t[391]||(t[391]=Q("p",null,"where",-1)),Q("mjx-container",x2,[(e(),T("svg",L2,t[273]||(t[273]=[l('',1)]))),t[274]||(t[274]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1")]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mi",null,"α")])])]),Q("mo",null,".")])],-1))]),t[392]||(t[392]=Q("h2",{id:"Matrix-representation",tabindex:"-1"},[a("Matrix representation "),Q("a",{class:"header-anchor",href:"#Matrix-representation","aria-label":'Permalink to "Matrix representation {#Matrix-representation}"'},"​")],-1)),t[393]||(t[393]=Q("p",null,"We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes",-1)),Q("mjx-container",f2,[(e(),T("svg",y2,t[275]||(t[275]=[l('',1)]))),t[276]||(t[276]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"M"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,",")])],-1))]),Q("p",null,[t[281]||(t[281]=a("where ")),Q("mjx-container",M2,[(e(),T("svg",k2,t[277]||(t[277]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[278]||(t[278]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[282]||(t[282]=a(" is the discrete divergence operator and ")),Q("mjx-container",V2,[(e(),T("svg",Z2,t[279]||(t[279]=[l('',1)]))),t[280]||(t[280]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])])],-1))]),t[283]||(t[283]=a(" contains the boundary value contributions of the velocity to the divergence field."))]),t[394]||(t[394]=Q("p",null,"The discrete momentum equations become",-1)),Q("mjx-container",b2,[(e(),T("svg",v2,t[284]||(t[284]=[l('',1)]))),t[285]||(t[285]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mo",null,"−"),Q("mi",null,"C"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"ν"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"D"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"f"),Q("mi",null,"h")]),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,",")])])])])],-1))]),Q("p",null,[t[306]||(t[306]=a("where ")),Q("mjx-container",D2,[(e(),T("svg",j2,t[286]||(t[286]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D436",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),t[287]||(t[287]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"C")])],-1))]),t[307]||(t[307]=a(" is she convection operator (including boundary contributions), ")),Q("mjx-container",C2,[(e(),T("svg",O2,t[288]||(t[288]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),t[289]||(t[289]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"D")])],-1))]),t[308]||(t[308]=a(" is the diffusion operator, ")),Q("mjx-container",R2,[(e(),T("svg",F2,t[290]||(t[290]=[l('',1)]))),t[291]||(t[291]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")])])],-1))]),t[309]||(t[309]=a(" is boundary contribution to the diffusion term, ")),Q("mjx-container",A2,[(e(),T("svg",B2,t[292]||(t[292]=[l('',1)]))),t[293]||(t[293]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"G"),Q("mo",null,"="),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[310]||(t[310]=a(" is the pressure gradient operator, ")),Q("mjx-container",X2,[(e(),T("svg",S2,t[294]||(t[294]=[l('',1)]))),t[295]||(t[295]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")])])],-1))]),t[311]||(t[311]=a(" contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), ")),Q("mjx-container",z2,[(e(),T("svg",I2,t[296]||(t[296]=[l('',1)]))),t[297]||(t[297]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"W"),Q("mi",null,"u")])])],-1))]),t[312]||(t[312]=a(" is a diagonal matrix containing the velocity volume sizes ")),Q("mjx-container",G2,[(e(),T("svg",J2,t[298]||(t[298]=[l('',1)]))),t[299]||(t[299]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[313]||(t[313]=a(", and ")),Q("mjx-container",E2,[(e(),T("svg",P2,t[300]||(t[300]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),t[301]||(t[301]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"W")])],-1))]),t[314]||(t[314]=a(" is a diagonal matrix containing the reference volume sizes ")),Q("mjx-container",q2,[(e(),T("svg",N2,t[302]||(t[302]=[l('',1)]))),t[303]||(t[303]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[315]||(t[315]=a(". The term ")),Q("mjx-container",W2,[(e(),T("svg",K2,t[304]||(t[304]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[305]||(t[305]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F")])],-1))]),t[316]||(t[316]=a(" refers to all the forces except for the pressure gradient."))]),t[395]||(t[395]=Q("div",{class:"tip custom-block"},[Q("p",{class:"custom-block-title"},"Volume normalization"),Q("p",null,"All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.")],-1)),t[396]||(t[396]=Q("h2",{id:"Discrete-pressure-Poisson-equation",tabindex:"-1"},[a("Discrete pressure Poisson equation "),Q("a",{class:"header-anchor",href:"#Discrete-pressure-Poisson-equation","aria-label":'Permalink to "Discrete pressure Poisson equation {#Discrete-pressure-Poisson-equation}"'},"​")],-1)),Q("p",null,[t[319]||(t[319]=a("Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the ")),t[320]||(t[320]=Q("em",null,"discrete",-1)),t[321]||(t[321]=a(" setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator ")),Q("mjx-container",U2,[(e(),T("svg",$2,t[317]||(t[317]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[318]||(t[318]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[322]||(t[322]=a(" to the discrete momentum equations yields the discrete pressure Poisson equation"))]),Q("mjx-container",Y2,[(e(),T("svg",_2,t[323]||(t[323]=[l('',1)]))),t[324]||(t[324]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"L"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[327]||(t[327]=a("where ")),Q("mjx-container",Q4,[(e(),T("svg",t4,t[325]||(t[325]=[l('',1)]))),t[326]||(t[326]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mi",null,"G"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[328]||(t[328]=a(" is a discrete Laplace operator. It is positive symmetric."))]),Q("div",a4,[t[339]||(t[339]=Q("p",{class:"custom-block-title"},"Unsteady Dirichlet boundary conditions",-1)),Q("p",null,[t[335]||(t[335]=a("If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term ")),Q("mjx-container",T4,[(e(),T("svg",e4,t[329]||(t[329]=[l('',1)]))),t[330]||(t[330]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])])],-1))]),t[336]||(t[336]=a(" will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example ")),Q("mjx-container",l4,[(e(),T("svg",s4,t[331]||(t[331]=[l('',1)]))),t[332]||(t[332]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"≈"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[337]||(t[337]=a(" for some ")),Q("mjx-container",m4,[(e(),T("svg",o4,t[333]||(t[333]=[l('',1)]))),t[334]||(t[334]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[338]||(t[338]=a("."))])]),Q("div",n4,[t[344]||(t[344]=Q("p",{class:"custom-block-title"},"Uniqueness of pressure field",-1)),Q("p",null,[t[342]||(t[342]=a("Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as ")),Q("mjx-container",d4,[(e(),T("svg",r4,t[340]||(t[340]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43F",d:"M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z",style:{"stroke-width":"3"}})])])],-1)]))),t[341]||(t[341]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L")])],-1))]),t[343]||(t[343]=a(" will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field."))])]),Q("div",i4,[t[360]||(t[360]=Q("p",{class:"custom-block-title"},"Pressure projection",-1)),Q("p",null,[t[347]||(t[347]=a("The pressure field ")),Q("mjx-container",h4,[(e(),T("svg",p4,t[345]||(t[345]=[l('',1)]))),t[346]||(t[346]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")])])],-1))]),t[348]||(t[348]=a(" can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:"))]),Q("mjx-container",g4,[(e(),T("svg",H4,t[349]||(t[349]=[l('',1)]))),t[350]||(t[350]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),t[361]||(t[361]=Q("p",null,"The momentum equations then become",-1)),Q("mjx-container",u4,[(e(),T("svg",c4,t[351]||(t[351]=[l('',1)]))),t[352]||(t[352]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[357]||(t[357]=a("The matrix ")),Q("mjx-container",w4,[(e(),T("svg",x4,t[353]||(t[353]=[l('',1)]))),t[354]||(t[354]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")")])],-1))]),t[358]||(t[358]=a(" is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix ")),Q("mjx-container",L4,[(e(),T("svg",f4,t[355]||(t[355]=[l('',1)]))),t[356]||(t[356]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])])])],-1))]),t[359]||(t[359]=a(", which would be very costly."))])]),t[397]||(t[397]=Q("h2",{id:"Discrete-output-quantities",tabindex:"-1"},[a("Discrete output quantities "),Q("a",{class:"header-anchor",href:"#Discrete-output-quantities","aria-label":'Permalink to "Discrete output quantities {#Discrete-output-quantities}"'},"​")],-1)),t[398]||(t[398]=Q("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),Q("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),Q("p",null,[t[364]||(t[364]=a("The local kinetic energy is defined by ")),Q("mjx-container",y4,[(e(),T("svg",M4,t[362]||(t[362]=[l('',1)]))),t[363]||(t[363]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mi",null,"u"),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[365]||(t[365]=a(". On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares."))]),t[399]||(t[399]=Q("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),Q("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t[400]||(t[400]=Q("p",null,"In 2D, the vorticity is a scalar. We define it as",-1)),Q("mjx-container",k4,[(e(),T("svg",V4,t[366]||(t[366]=[l('',1)]))),t[367]||(t[367]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"2")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"1")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,".")])],-1))]),Q("p",null,[t[374]||(t[374]=a("The 3D vorticity is a vector field ")),Q("mjx-container",Z4,[(e(),T("svg",b4,t[368]||(t[368]=[l('',1)]))),t[369]||(t[369]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"1")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[375]||(t[375]=a(". Noting ")),Q("mjx-container",v4,[(e(),T("svg",D4,t[370]||(t[370]=[l('',1)]))),t[371]||(t[371]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"+"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[376]||(t[376]=a(" and ")),Q("mjx-container",j4,[(e(),T("svg",C4,t[372]||(t[372]=[l('',1)]))),t[373]||(t[373]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[377]||(t[377]=a(", the vorticity is defined as through"))]),Q("mjx-container",O4,[(e(),T("svg",R4,t[378]||(t[378]=[l('',1)]))),t[379]||(t[379]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msup",null,[Q("mi",null,"ω"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("mo",null,".")])],-1))]),t[401]||(t[401]=Q("h2",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),Q("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t[402]||(t[402]=Q("p",null,"In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields",-1)),Q("mjx-container",F4,[(e(),T("svg",A4,t[380]||(t[380]=[l('',1)]))),t[381]||(t[381]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("mi",null,"ω"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("msup",null,[Q("mi",{mathvariant:"normal"},"∇"),Q("mn",null,"2")]),Q("mi",null,"ψ"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"2")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,".")])])])])],-1))]),t[403]||(t[403]=Q("p",null,"Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:",-1)),Q("mjx-container",B4,[(e(),T("svg",X4,t[382]||(t[382]=[l('',1)]))),t[383]||(t[383]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"+")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"=")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mtd")])])])],-1))])])}const N4=s(o,[["render",S4]]);export{q4 as __pageData,N4 as default}; +import{_ as s,c as T,j as Q,a,a5 as l,o as e}from"./chunks/framework.CojPSOJE.js";const m="/IncompressibleNavierStokes.jl/previews/PR126/assets/grid.BpiJkA_F.png",q4=JSON.parse('{"title":"Spatial discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/spatial.md","filePath":"manual/spatial.md","lastUpdated":null}'),o={name:"manual/spatial.md"},n={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},r={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.825ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6110.6 1000","aria-hidden":"true"},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.04ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.352ex",height:"2.972ex",role:"img",focusable:"false",viewBox:"0 -853.7 5901.8 1313.5","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.171ex",height:"1.65ex",role:"img",focusable:"false",viewBox:"0 -442 1401.8 729.2","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.507ex",role:"img",focusable:"false",viewBox:"0 -666 500 666","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.746ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 2539.6 899","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.131ex",height:"1.557ex",role:"img",focusable:"false",viewBox:"0 -666 500 688","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.06ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4446.7 1000","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.957ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6610.8 1000","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},j={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.207ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 975.5 840.8","aria-hidden":"true"},O={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},S={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.693ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1190.3 736.2","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.666ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 736.2","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.897ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7468.5 1311.1","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.608ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 3362.7 851.8","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.136ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 944 1000","aria-hidden":"true"},$={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.708ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.628ex",height:"2.404ex",role:"img",focusable:"false",viewBox:"0 -749.5 5581.6 1062.6","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.633ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -704 722 704","aria-hidden":"true"},t1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"33.248ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 14695.6 1312.8","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.887ex",height:"2.497ex",role:"img",focusable:"false",viewBox:"0 -853.7 10116.1 1103.7","aria-hidden":"true"},l1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.047ex",height:"3.138ex",role:"img",focusable:"false",viewBox:"0 -967.8 6650.7 1387.1","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.159ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.899ex",height:"3.398ex",role:"img",focusable:"false",viewBox:"0 -989.3 14099.5 1501.7","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.351ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 8111.2 1829.8","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.17ex",height:"2.477ex",role:"img",focusable:"false",viewBox:"0 -675.5 4937 1094.8","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.539ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.881ex",height:"4.14ex",role:"img",focusable:"false",viewBox:"0 -1149.5 9671.5 1829.8","aria-hidden":"true"},g1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"23.431ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 10356.5 1000","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.216ex",height:"1.979ex",role:"img",focusable:"false",viewBox:"0 -717 979.5 874.8","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.725ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4298.3 1000","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.558ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.85ex",height:"5.509ex",role:"img",focusable:"false",viewBox:"0 -1304.6 10983.9 2435","aria-hidden":"true"},y1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.817ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.673ex",height:"2.852ex",role:"img",focusable:"false",viewBox:"0 -899.6 1623.4 1260.7","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},Z1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},v1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.777ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.662ex",height:"2.966ex",role:"img",focusable:"false",viewBox:"0 -967.8 7364.4 1311.1","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.628ex",height:"1.932ex",role:"img",focusable:"false",viewBox:"0 -704 1161.4 854","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.709ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2081.4 1000","aria-hidden":"true"},B1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.626ex",height:"2.235ex",role:"img",focusable:"false",viewBox:"0 -680 1160.5 987.7","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.083ex",height:"2.393ex",role:"img",focusable:"false",viewBox:"0 -750 2246.5 1057.7","aria-hidden":"true"},P1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.176ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -694 520 704","aria-hidden":"true"},K1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 686.5","aria-hidden":"true"},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.288ex",height:"1.339ex",role:"img",focusable:"false",viewBox:"0 -442 1011.4 592","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.592ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.311ex",height:"1.592ex",role:"img",focusable:"false",viewBox:"0 -442 2347.5 703.6","aria-hidden":"true"},t3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},a3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},T3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.09ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.359ex",height:"1.636ex",role:"img",focusable:"false",viewBox:"0 -683 2368.6 723","aria-hidden":"true"},m3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.011ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.651ex",height:"2.834ex",role:"img",focusable:"false",viewBox:"0 -805.5 7359.6 1252.4","aria-hidden":"true"},n3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},d3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.52ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 6860 2986.6","aria-hidden":"true"},r3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.949ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.677ex",height:"2.644ex",role:"img",focusable:"false",viewBox:"0 -749.5 6929.3 1168.8","aria-hidden":"true"},h3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.339ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.446ex",height:"1.934ex",role:"img",focusable:"false",viewBox:"0 -705 3290.9 855","aria-hidden":"true"},u3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},c3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.639ex",height:"1.927ex",role:"img",focusable:"false",viewBox:"0 -694 4702.5 851.8","aria-hidden":"true"},w3={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"61.46ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 27165.4 3093.4","aria-hidden":"true"},L3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.244ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -705 550 910","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.456ex",height:"2.347ex",role:"img",focusable:"false",viewBox:"0 -750 4179.4 1037.2","aria-hidden":"true"},k3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.14ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 504 683","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.799ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.297ex",height:"2.496ex",role:"img",focusable:"false",viewBox:"0 -750 4551.3 1103.1","aria-hidden":"true"},j3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},O3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.696ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.506ex",height:"2.225ex",role:"img",focusable:"false",viewBox:"0 -675.5 1107.5 983.3","aria-hidden":"true"},F3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.173ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.027ex",height:"2.702ex",role:"img",focusable:"false",viewBox:"0 -675.5 2664 1194.1","aria-hidden":"true"},B3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.893ex",height:"1.974ex",role:"img",focusable:"false",viewBox:"0 -861.5 2162.8 872.5","aria-hidden":"true"},S3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},I3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.65ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.302ex",height:"2.22ex",role:"img",focusable:"false",viewBox:"0 -694 2785.7 981.2","aria-hidden":"true"},J3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.394ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1500 1000","aria-hidden":"true"},P3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},N3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.281ex",height:"2.034ex",role:"img",focusable:"false",viewBox:"0 -705 566 899","aria-hidden":"true"},K3={class:"tip custom-block"},U3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},Y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},_3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.781ex",height:"1.52ex",role:"img",focusable:"false",viewBox:"0 -661 345 672","aria-hidden":"true"},Q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.912ex",role:"img",focusable:"false",viewBox:"0 -833.9 1008.6 844.9","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.462ex"},xmlns:"http://www.w3.org/2000/svg",width:"0.932ex",height:"1.957ex",role:"img",focusable:"false",viewBox:"0 -661 412 865","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.91ex",role:"img",focusable:"false",viewBox:"0 -833.2 1008.6 844.2","aria-hidden":"true"},s2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.179ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -694 521 705","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.448ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 640 453","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.333ex"},xmlns:"http://www.w3.org/2000/svg",width:"42.174ex",height:"3.232ex",role:"img",focusable:"false",viewBox:"0 -839.4 18641 1428.6","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.818ex"},xmlns:"http://www.w3.org/2000/svg",width:"28.325ex",height:"6.755ex",role:"img",focusable:"false",viewBox:"0 -1740.2 12519.5 2985.6","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.97ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.65ex",height:"2.869ex",role:"img",focusable:"false",viewBox:"0 -839.4 2497.5 1268.1","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.819ex"},xmlns:"http://www.w3.org/2000/svg",width:"37.854ex",height:"6.757ex",role:"img",focusable:"false",viewBox:"0 -1740.7 16731.4 2986.6","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.06ex"},xmlns:"http://www.w3.org/2000/svg",width:"76.065ex",height:"6.999ex",role:"img",focusable:"false",viewBox:"0 -1740.7 33620.8 3093.4","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.504ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.611ex",height:"5.456ex",role:"img",focusable:"false",viewBox:"0 -1304.6 13972.2 2411.5","aria-hidden":"true"},f2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.302ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6763.5 888","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Z2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.978ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1316.2 647","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},v2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-3.243ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.56ex",height:"7.618ex",role:"img",focusable:"false",viewBox:"0 -1933.5 21905.5 3367","aria-hidden":"true"},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.719ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -705 760 727","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.873ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 828 683","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.621ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1158.5 647","aria-hidden":"true"},A2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.672ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 6927 1104.3","aria-hidden":"true"},X2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.554ex",height:"1.464ex",role:"img",focusable:"false",viewBox:"0 -442 1128.8 647","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.239ex",height:"1.902ex",role:"img",focusable:"false",viewBox:"0 -683 1431.5 840.8","aria-hidden":"true"},G2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.8ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.709ex",height:"2.495ex",role:"img",focusable:"false",viewBox:"0 -749.5 4291.3 1103","aria-hidden":"true"},E2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},P2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.05ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.371ex",height:"1.595ex",role:"img",focusable:"false",viewBox:"0 -683 1048 705","aria-hidden":"true"},q2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.564ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.885ex",height:"2.26ex",role:"img",focusable:"false",viewBox:"0 -749.5 1717.4 999","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},K2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.695ex",height:"1.538ex",role:"img",focusable:"false",viewBox:"0 -680 749 680","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},$2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.378ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 1051 683","aria-hidden":"true"},Y2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},_2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"35.489ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 15686 2067","aria-hidden":"true"},Q4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.576ex"},xmlns:"http://www.w3.org/2000/svg",width:"29.728ex",height:"2.498ex",role:"img",focusable:"false",viewBox:"0 -849.5 13139.6 1104.3","aria-hidden":"true"},a4={class:"tip custom-block"},T4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},l4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"31.943ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 14118.6 1328.5","aria-hidden":"true"},m4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},n4={class:"tip custom-block"},d4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.541ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 681 683","aria-hidden":"true"},i4={class:"tip custom-block"},h4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.247ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 993.3 636","aria-hidden":"true"},g4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},H4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"41.494ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 18340.4 2067","aria-hidden":"true"},u4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.126ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 23481.8 2067","aria-hidden":"true"},w4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.966ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 7057.1 1083.9","aria-hidden":"true"},L4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"3.773ex",height:"1.887ex",role:"img",focusable:"false",viewBox:"0 -833.9 1667.7 833.9","aria-hidden":"true"},y4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.759ex",height:"2.97ex",role:"img",focusable:"false",viewBox:"0 -967.8 11827.4 1312.8","aria-hidden":"true"},k4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},V4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.127ex",height:"2.185ex",role:"img",focusable:"false",viewBox:"0 -883.9 8012.2 965.9","aria-hidden":"true"},Z4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.957ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4843 1083.9","aria-hidden":"true"},v4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},j4={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"18.264ex",height:"2.32ex",role:"img",focusable:"false",viewBox:"0 -775.2 8072.7 1025.2","aria-hidden":"true"},O4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},R4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"24.286ex",height:"2.36ex",role:"img",focusable:"false",viewBox:"0 -961.2 10734.5 1043.2","aria-hidden":"true"},F4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},A4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.999ex"},xmlns:"http://www.w3.org/2000/svg",width:"49.753ex",height:"19.129ex",role:"img",focusable:"false",viewBox:"0 -4477.6 21990.6 8455.2","aria-hidden":"true"},B4={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},X4={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.191ex"},xmlns:"http://www.w3.org/2000/svg",width:"60.665ex",height:"17.514ex",role:"img",focusable:"false",viewBox:"0 -4120.6 26813.9 7741.1","aria-hidden":"true"};function S4(z4,t,I4,G4,J4,E4){return e(),T("div",null,[t[384]||(t[384]=Q("h1",{id:"Spatial-discretization",tabindex:"-1"},[a("Spatial discretization "),Q("a",{class:"header-anchor",href:"#Spatial-discretization","aria-label":'Permalink to "Spatial discretization {#Spatial-discretization}"'},"​")],-1)),Q("p",null,[t[36]||(t[36]=a("the ")),Q("mjx-container",n,[(e(),T("svg",d,t[0]||(t[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[1]||(t[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[37]||(t[37]=a(" spatial dimensions are indexed by ")),Q("mjx-container",r,[(e(),T("svg",i,t[2]||(t[2]=[l('',1)]))),t[3]||(t[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("mi",null,"d"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[38]||(t[38]=a(". The ")),Q("mjx-container",h,[(e(),T("svg",p,t[4]||(t[4]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[5]||(t[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[39]||(t[39]=a("-th unit vector is denoted ")),Q("mjx-container",g,[(e(),T("svg",H,t[6]||(t[6]=[l('',1)]))),t[7]||(t[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])]),Q("msubsup",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")])])],-1))]),t[40]||(t[40]=a(", where the Kronecker symbol ")),Q("mjx-container",u,[(e(),T("svg",c,t[8]||(t[8]=[l('',1)]))),t[9]||(t[9]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"e"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mi",null,"β")])])])],-1))]),t[41]||(t[41]=a(" is ")),Q("mjx-container",w,[(e(),T("svg",x,t[10]||(t[10]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"31",d:"M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",style:{"stroke-width":"3"}})])])],-1)]))),t[11]||(t[11]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1")])],-1))]),t[42]||(t[42]=a(" if ")),Q("mjx-container",L,[(e(),T("svg",f,t[12]||(t[12]=[l('',1)]))),t[13]||(t[13]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mi",null,"β")])],-1))]),t[43]||(t[43]=a(" and ")),Q("mjx-container",y,[(e(),T("svg",M,t[14]||(t[14]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mn"},[Q("path",{"data-c":"30",d:"M96 585Q152 666 249 666Q297 666 345 640T423 548Q460 465 460 320Q460 165 417 83Q397 41 362 16T301 -15T250 -22Q224 -22 198 -16T137 16T82 83Q39 165 39 320Q39 494 96 585ZM321 597Q291 629 250 629Q208 629 178 597Q153 571 145 525T137 333Q137 175 145 125T181 46Q209 16 250 16Q290 16 318 46Q347 76 354 130T362 333Q362 478 354 524T321 597Z",style:{"stroke-width":"3"}})])])],-1)]))),t[15]||(t[15]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"0")])],-1))]),t[44]||(t[44]=a(" otherwise. We note ")),Q("mjx-container",k,[(e(),T("svg",V,t[16]||(t[16]=[l('',1)]))),t[17]||(t[17]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[45]||(t[45]=a(". The Cartesian index ")),Q("mjx-container",Z,[(e(),T("svg",b,t[18]||(t[18]=[l('',1)]))),t[19]||(t[19]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[46]||(t[46]=a(" is used to avoid repeating terms and equations ")),Q("mjx-container",v,[(e(),T("svg",D,t[20]||(t[20]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[21]||(t[21]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[47]||(t[47]=a(" times, where ")),Q("mjx-container",j,[(e(),T("svg",C,t[22]||(t[22]=[l('',1)]))),t[23]||(t[23]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[48]||(t[48]=a(" is a scalar index (typically one of ")),Q("mjx-container",O,[(e(),T("svg",R,t[24]||(t[24]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[25]||(t[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[49]||(t[49]=a(", ")),Q("mjx-container",F,[(e(),T("svg",A,t[26]||(t[26]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[27]||(t[27]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[50]||(t[50]=a(", and ")),Q("mjx-container",B,[(e(),T("svg",X,t[28]||(t[28]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[29]||(t[29]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[51]||(t[51]=a(" in common notation). This notation is dimension-agnostic, since we can write ")),Q("mjx-container",S,[(e(),T("svg",z,t[30]||(t[30]=[l('',1)]))),t[31]||(t[31]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[52]||(t[52]=a(" instead of ")),Q("mjx-container",I,[(e(),T("svg",G,t[32]||(t[32]=[l('',1)]))),t[33]||(t[33]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j")])])])],-1))]),t[53]||(t[53]=a(" in 2D or ")),Q("mjx-container",J,[(e(),T("svg",E,t[34]||(t[34]=[l('',1)]))),t[35]||(t[35]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mi",null,"j"),Q("mi",null,"k")])])])],-1))]),t[54]||(t[54]=a(" in 3D. In our Julia implementation of the solver we use the same Cartesian notation (")),t[55]||(t[55]=Q("code",null,"u[I]",-1)),t[56]||(t[56]=a(" instead of ")),t[57]||(t[57]=Q("code",null,"u[i, j]",-1)),t[58]||(t[58]=a(" or ")),t[59]||(t[59]=Q("code",null,"u[i, j, k]",-1)),t[60]||(t[60]=a(")."))]),Q("p",null,[t[91]||(t[91]=a("For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [")),t[92]||(t[92]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Harlow1965"},"13",-1)),t[93]||(t[93]=a("]. Consider a rectangular domain ")),Q("mjx-container",P,[(e(),T("svg",q,t[61]||(t[61]=[l('',1)]))),t[62]||(t[62]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"["),Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,","),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"]")])],-1))]),t[94]||(t[94]=a(", where ")),Q("mjx-container",N,[(e(),T("svg",W,t[63]||(t[63]=[l('',1)]))),t[64]||(t[64]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"a"),Q("mi",null,"α")]),Q("mo",null,"<"),Q("msub",null,[Q("mi",null,"b"),Q("mi",null,"α")])])],-1))]),t[95]||(t[95]=a(" are the domain boundaries and ")),Q("mjx-container",K,[(e(),T("svg",U,t[65]||(t[65]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mo"},[Q("path",{"data-c":"220F",d:"M158 656Q147 684 131 694Q110 707 69 710H55V750H888V710H874Q840 708 820 698T795 678T786 656V-155Q798 -206 874 -210H888V-250H570V-210H584Q618 -208 638 -197T663 -178T673 -155V710H270V277L271 -155Q283 -206 359 -210H373V-250H55V-210H69Q103 -208 123 -197T148 -178T158 -155V656Z",style:{"stroke-width":"3"}})])])],-1)]))),t[66]||(t[66]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"OP"},"∏")])],-1))]),t[96]||(t[96]=a(" is a Cartesian product. Let ")),Q("mjx-container",$,[(e(),T("svg",Y,t[67]||(t[67]=[l('',1)]))),t[68]||(t[68]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω"),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[97]||(t[97]=a(" be a partitioning of ")),Q("mjx-container",_,[(e(),T("svg",Q1,t[69]||(t[69]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"3A9",d:"M55 454Q55 503 75 546T127 617T197 665T272 695T337 704H352Q396 704 404 703Q527 687 596 615T666 454Q666 392 635 330T559 200T499 83V80H543Q589 81 600 83T617 93Q622 102 629 135T636 172L637 177H677V175L660 89Q645 3 644 2V0H552H488Q461 0 456 3T451 20Q451 89 499 235T548 455Q548 512 530 555T483 622T424 656T361 668Q332 668 303 658T243 626T193 560T174 456Q174 380 222 233T270 20Q270 7 263 0H77V2Q76 3 61 89L44 175V177H84L85 172Q85 171 88 155T96 119T104 93Q109 86 120 84T178 80H222V83Q206 132 162 199T87 329T55 454Z",style:{"stroke-width":"3"}})])])],-1)]))),t[70]||(t[70]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Ω")])],-1))]),t[98]||(t[98]=a(", where ")),Q("mjx-container",t1,[(e(),T("svg",a1,t[71]||(t[71]=[l('',1)]))),t[72]||(t[72]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mn",null,"2"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[99]||(t[99]=a(" are volume center indices, ")),Q("mjx-container",T1,[(e(),T("svg",e1,t[73]||(t[73]=[l('',1)]))),t[74]||(t[74]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"N"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"∈"),Q("msup",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"double-struck"},"N")]),Q("mi",null,"d")])])],-1))]),t[100]||(t[100]=a(" are the number of volumes in each dimension, ")),Q("mjx-container",l1,[(e(),T("svg",s1,t[75]||(t[75]=[l('',1)]))),t[76]||(t[76]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[101]||(t[101]=a(" is a finite volume, ")),Q("mjx-container",m1,[(e(),T("svg",o1,t[77]||(t[77]=[l('',1)]))),t[78]||(t[78]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"∩"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"="),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"∏"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"≠"),Q("mi",null,"α")])]),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"β")])]),Q("mi",null,"β")])])],-1))]),t[102]||(t[102]=a(" is a volume face, ")),Q("mjx-container",n1,[(e(),T("svg",d1,t[79]||(t[79]=[l('',1)]))),t[80]||(t[80]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"["),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"]")])])],-1))]),t[103]||(t[103]=a(" is a volume edge, ")),Q("mjx-container",r1,[(e(),T("svg",i1,t[81]||(t[81]=[l('',1)]))),t[82]||(t[82]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mn",null,"0"),Q("mi",null,"α")]),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")])]),Q("mi",null,"α")])])],-1))]),t[104]||(t[104]=a(" are volume boundary coordinates, and ")),Q("mjx-container",h1,[(e(),T("svg",p1,t[83]||(t[83]=[l('',1)]))),t[84]||(t[84]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"x"),Q("mi",null,"i"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"−"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"i"),Q("mo",null,"+"),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),t[105]||(t[105]=a(" for ")),Q("mjx-container",g1,[(e(),T("svg",H1,t[85]||(t[85]=[l('',1)]))),t[86]||(t[86]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i"),Q("mo",null,"∈"),Q("mo",{fence:"false",stretchy:"false"},"{"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",null,","),Q("mo",null,"…"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2"),Q("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),t[106]||(t[106]=a(" are volume center coordinates. We also define the operator ")),Q("mjx-container",u1,[(e(),T("svg",c1,t[87]||(t[87]=[l('',1)]))),t[88]||(t[88]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")])])],-1))]),t[107]||(t[107]=a(" which maps a discrete scalar field ")),Q("mjx-container",w1,[(e(),T("svg",x1,t[89]||(t[89]=[l('',1)]))),t[90]||(t[90]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"φ"),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"φ"),Q("mi",null,"I")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")])])],-1))]),t[108]||(t[108]=a(" to"))]),Q("mjx-container",L1,[(e(),T("svg",f1,t[109]||(t[109]=[l('',1)]))),t[110]||(t[110]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[119]||(t[119]=a("It can be interpreted as a discrete equivalent of the continuous operator ")),Q("mjx-container",y1,[(e(),T("svg",M1,t[111]||(t[111]=[l('',1)]))),t[112]||(t[112]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mi",null,"∂"),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mi",null,"α")])])])])],-1))]),t[120]||(t[120]=a(". All the above definitions are extended to be valid in volume centers ")),Q("mjx-container",k1,[(e(),T("svg",V1,t[113]||(t[113]=[l('',1)]))),t[114]||(t[114]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[121]||(t[121]=a(", volume faces ")),Q("mjx-container",Z1,[(e(),T("svg",b1,t[115]||(t[115]=[l('',1)]))),t[116]||(t[116]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[122]||(t[122]=a(", or volume corners ")),Q("mjx-container",v1,[(e(),T("svg",D1,t[117]||(t[117]=[l('',1)]))),t[118]||(t[118]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[123]||(t[123]=a(". The discretization is illustrated below:"))]),t[385]||(t[385]=Q("p",null,[Q("img",{src:m,alt:""})],-1)),t[386]||(t[386]=Q("h2",{id:"Finite-volume-discretization-of-the-Navier-Stokes-equations",tabindex:"-1"},[a("Finite volume discretization of the Navier-Stokes equations "),Q("a",{class:"header-anchor",href:"#Finite-volume-discretization-of-the-Navier-Stokes-equations","aria-label":'Permalink to "Finite volume discretization of the Navier-Stokes equations {#Finite-volume-discretization-of-the-Navier-Stokes-equations}"'},"​")],-1)),Q("p",null,[t[150]||(t[150]=a("We now define the unknown degrees of freedom. The average pressure in ")),Q("mjx-container",j1,[(e(),T("svg",C1,t[124]||(t[124]=[l('',1)]))),t[125]||(t[125]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[151]||(t[151]=a(", ")),Q("mjx-container",O1,[(e(),T("svg",R1,t[126]||(t[126]=[l('',1)]))),t[127]||(t[127]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[152]||(t[152]=a(" is approximated by the quantity ")),Q("mjx-container",F1,[(e(),T("svg",A1,t[128]||(t[128]=[l('',1)]))),t[129]||(t[129]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"I")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[153]||(t[153]=a(". The average ")),Q("mjx-container",B1,[(e(),T("svg",X1,t[130]||(t[130]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[131]||(t[131]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[154]||(t[154]=a("-velocity on the face ")),Q("mjx-container",S1,[(e(),T("svg",z1,t[132]||(t[132]=[l('',1)]))),t[133]||(t[133]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")])])],-1))]),t[155]||(t[155]=a(", ")),Q("mjx-container",I1,[(e(),T("svg",G1,t[134]||(t[134]=[l('',1)]))),t[135]||(t[135]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[156]||(t[156]=a(" is approximated by the quantity ")),Q("mjx-container",J1,[(e(),T("svg",E1,t[136]||(t[136]=[l('',1)]))),t[137]||(t[137]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")")])],-1))]),t[157]||(t[157]=a(". Note how the pressure ")),Q("mjx-container",P1,[(e(),T("svg",q1,t[138]||(t[138]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),t[139]||(t[139]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"p")])],-1))]),t[158]||(t[158]=a(" and the ")),Q("mjx-container",N1,[(e(),T("svg",W1,t[140]||(t[140]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D451",d:"M366 683Q367 683 438 688T511 694Q523 694 523 686Q523 679 450 384T375 83T374 68Q374 26 402 26Q411 27 422 35Q443 55 463 131Q469 151 473 152Q475 153 483 153H487H491Q506 153 506 145Q506 140 503 129Q490 79 473 48T445 8T417 -8Q409 -10 393 -10Q359 -10 336 5T306 36L300 51Q299 52 296 50Q294 48 292 46Q233 -10 172 -10Q117 -10 75 30T33 157Q33 205 53 255T101 341Q148 398 195 420T280 442Q336 442 364 400Q369 394 369 396Q370 400 396 505T424 616Q424 629 417 632T378 637H357Q351 643 351 645T353 664Q358 683 366 683ZM352 326Q329 405 277 405Q242 405 210 374T160 293Q131 214 119 129Q119 126 119 118T118 106Q118 61 136 44T179 26Q233 26 290 98L298 109L352 326Z",style:{"stroke-width":"3"}})])])],-1)]))),t[141]||(t[141]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"d")])],-1))]),t[159]||(t[159]=a(" velocity fields ")),Q("mjx-container",K1,[(e(),T("svg",U1,t[142]||(t[142]=[l('',1)]))),t[143]||(t[143]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[160]||(t[160]=a(" are each defined in their own canonical positions ")),Q("mjx-container",$1,[(e(),T("svg",Y1,t[144]||(t[144]=[l('',1)]))),t[145]||(t[145]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mi",null,"I")])])],-1))]),t[161]||(t[161]=a(" and ")),Q("mjx-container",_1,[(e(),T("svg",Q3,t[146]||(t[146]=[l('',1)]))),t[147]||(t[147]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])])],-1))]),t[162]||(t[162]=a(" for ")),Q("mjx-container",t3,[(e(),T("svg",a3,t[148]||(t[148]=[l('',1)]))),t[149]||(t[149]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[163]||(t[163]=a(". In the following, we derive equations for these unknowns."))]),Q("p",null,[t[170]||(t[170]=a("Using the pressure control volume ")),Q("mjx-container",T3,[(e(),T("svg",e3,t[164]||(t[164]=[l('',1)]))),t[165]||(t[165]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")])])],-1))]),t[171]||(t[171]=a(" with ")),Q("mjx-container",l3,[(e(),T("svg",s3,t[166]||(t[166]=[l('',1)]))),t[167]||(t[167]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")])])],-1))]),t[172]||(t[172]=a(" in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ")),Q("mjx-container",m3,[(e(),T("svg",o3,t[168]||(t[168]=[l('',1)]))),t[169]||(t[169]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")])])]),Q("mi",null,"u"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"≈"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"I")])])],-1))]),t[173]||(t[173]=a(" results in the discrete divergence-free constraint"))]),Q("mjx-container",n3,[(e(),T("svg",d3,t[174]||(t[174]=[l('',1)]))),t[175]||(t[175]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0.")])],-1))]),Q("p",null,[t[178]||(t[178]=a("Note how dividing by the volume size results in a discrete equation resembling the continuous one (since ")),Q("mjx-container",r3,[(e(),T("svg",i3,t[176]||(t[176]=[l('',1)]))),t[177]||(t[177]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",null,"="),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[179]||(t[179]=a(")."))]),Q("p",null,[t[186]||(t[186]=a("Similarly, choosing an ")),Q("mjx-container",h3,[(e(),T("svg",p3,t[180]||(t[180]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[181]||(t[181]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[187]||(t[187]=a("-velocity control volume ")),Q("mjx-container",g3,[(e(),T("svg",H3,t[182]||(t[182]=[l('',1)]))),t[183]||(t[183]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),Q("mo",null,"="),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[188]||(t[188]=a(" with ")),Q("mjx-container",u3,[(e(),T("svg",c3,t[184]||(t[184]=[l('',1)]))),t[185]||(t[185]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"∈"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"I")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])],-1))]),t[189]||(t[189]=a(" in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations"))]),Q("mjx-container",w3,[(e(),T("svg",x3,t[190]||(t[190]=[l('',1)]))),t[191]||(t[191]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[220]||(t[220]=a("where we made the assumption that ")),Q("mjx-container",L3,[(e(),T("svg",f3,t[192]||(t[192]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D453",d:"M118 -162Q120 -162 124 -164T135 -167T147 -168Q160 -168 171 -155T187 -126Q197 -99 221 27T267 267T289 382V385H242Q195 385 192 387Q188 390 188 397L195 425Q197 430 203 430T250 431Q298 431 298 432Q298 434 307 482T319 540Q356 705 465 705Q502 703 526 683T550 630Q550 594 529 578T487 561Q443 561 443 603Q443 622 454 636T478 657L487 662Q471 668 457 668Q445 668 434 658T419 630Q412 601 403 552T387 469T380 433Q380 431 435 431Q480 431 487 430T498 424Q499 420 496 407T491 391Q489 386 482 386T428 385H372L349 263Q301 15 282 -47Q255 -132 212 -173Q175 -205 139 -205Q107 -205 81 -186T55 -132Q55 -95 76 -78T118 -61Q162 -61 162 -103Q162 -122 151 -136T127 -157L118 -162Z",style:{"stroke-width":"3"}})])])],-1)]))),t[193]||(t[193]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"f")])],-1))]),t[221]||(t[221]=a(" is constant in time for simplicity. The outer discrete derivative in ")),Q("mjx-container",y3,[(e(),T("svg",M3,t[194]||(t[194]=[l('',1)]))),t[195]||(t[195]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])])])],-1))]),t[222]||(t[222]=a(" is required at the position ")),Q("mjx-container",k3,[(e(),T("svg",V3,t[196]||(t[196]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43C",d:"M43 1Q26 1 26 10Q26 12 29 24Q34 43 39 45Q42 46 54 46H60Q120 46 136 53Q137 53 138 54Q143 56 149 77T198 273Q210 318 216 344Q286 624 286 626Q284 630 284 631Q274 637 213 637H193Q184 643 189 662Q193 677 195 680T209 683H213Q285 681 359 681Q481 681 487 683H497Q504 676 504 672T501 655T494 639Q491 637 471 637Q440 637 407 634Q393 631 388 623Q381 609 337 432Q326 385 315 341Q245 65 245 59Q245 52 255 50T307 46H339Q345 38 345 37T342 19Q338 6 332 0H316Q279 2 179 2Q143 2 113 2T65 2T43 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[197]||(t[197]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I")])],-1))]),t[223]||(t[223]=a(", which means that the inner derivative is evaluated as ")),Q("mjx-container",Z3,[(e(),T("svg",b3,t[198]||(t[198]=[l('',1)]))),t[199]||(t[199]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[224]||(t[224]=a(" and ")),Q("mjx-container",v3,[(e(),T("svg",D3,t[200]||(t[200]=[l('',1)]))),t[201]||(t[201]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])])])],-1))]),t[225]||(t[225]=a(", thus requiring ")),Q("mjx-container",j3,[(e(),T("svg",C3,t[202]||(t[202]=[l('',1)]))),t[203]||(t[203]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[226]||(t[226]=a(", ")),Q("mjx-container",O3,[(e(),T("svg",R3,t[204]||(t[204]=[l('',1)]))),t[205]||(t[205]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")])])],-1))]),t[227]||(t[227]=a(", and ")),Q("mjx-container",F3,[(e(),T("svg",A3,t[206]||(t[206]=[l('',1)]))),t[207]||(t[207]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"2"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])]),Q("mi",null,"α")])])],-1))]),t[228]||(t[228]=a(", which are all in their canonical positions. The two velocity components in the convective term ")),Q("mjx-container",B3,[(e(),T("svg",X3,t[208]||(t[208]=[l('',1)]))),t[209]||(t[209]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")])])],-1))]),t[229]||(t[229]=a(" are required at the positions ")),Q("mjx-container",S3,[(e(),T("svg",z3,t[210]||(t[210]=[l('',1)]))),t[211]||(t[211]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[230]||(t[230]=a(" and ")),Q("mjx-container",I3,[(e(),T("svg",G3,t[212]||(t[212]=[l('',1)]))),t[213]||(t[213]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"β")])])],-1))]),t[231]||(t[231]=a(", which are outside the canonical positions. Their value at the required position is obtained using averaging with weights ")),Q("mjx-container",J3,[(e(),T("svg",E3,t[214]||(t[214]=[l('',1)]))),t[215]||(t[215]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])],-1))]),t[232]||(t[232]=a(" for the ")),Q("mjx-container",P3,[(e(),T("svg",q3,t[216]||(t[216]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[217]||(t[217]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[233]||(t[233]=a("-component and with linear interpolation for the ")),Q("mjx-container",N3,[(e(),T("svg",W3,t[218]||(t[218]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FD",d:"M29 -194Q23 -188 23 -186Q23 -183 102 134T186 465Q208 533 243 584T309 658Q365 705 429 705H431Q493 705 533 667T573 570Q573 465 469 396L482 383Q533 332 533 252Q533 139 448 65T257 -10Q227 -10 203 -2T165 17T143 40T131 59T126 65L62 -188Q60 -194 42 -194H29ZM353 431Q392 431 427 419L432 422Q436 426 439 429T449 439T461 453T472 471T484 495T493 524T501 560Q503 569 503 593Q503 611 502 616Q487 667 426 667Q384 667 347 643T286 582T247 514T224 455Q219 439 186 308T152 168Q151 163 151 147Q151 99 173 68Q204 26 260 26Q302 26 349 51T425 137Q441 171 449 214T457 279Q457 337 422 372Q380 358 347 358H337Q258 358 258 389Q258 396 261 403Q275 431 353 431Z",style:{"stroke-width":"3"}})])])],-1)]))),t[219]||(t[219]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"β")])],-1))]),t[234]||(t[234]=a("-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [")),t[235]||(t[235]=Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14",-1)),t[236]||(t[236]=a("]."))]),t[387]||(t[387]=Q("h2",{id:"Boundary-conditions",tabindex:"-1"},[a("Boundary conditions "),Q("a",{class:"header-anchor",href:"#Boundary-conditions","aria-label":'Permalink to "Boundary conditions {#Boundary-conditions}"'},"​")],-1)),Q("div",K3,[t[262]||(t[262]=Q("p",{class:"custom-block-title"},"Storage convention",-1)),Q("p",null,[t[253]||(t[253]=a("We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the ")),Q("mjx-container",U3,[(e(),T("svg",$3,t[237]||(t[237]=[l('',1)]))),t[238]||(t[238]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])],-1))]),t[254]||(t[254]=a("-index ")),Q("mjx-container",Y3,[(e(),T("svg",_3,t[239]||(t[239]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D456",d:"M184 600Q184 624 203 642T247 661Q265 661 277 649T290 619Q290 596 270 577T226 557Q211 557 198 567T184 600ZM21 287Q21 295 30 318T54 369T98 420T158 442Q197 442 223 419T250 357Q250 340 236 301T196 196T154 83Q149 61 149 51Q149 26 166 26Q175 26 185 29T208 43T235 78T260 137Q263 149 265 151T282 153Q302 153 302 143Q302 135 293 112T268 61T223 11T161 -11Q129 -11 102 10T74 74Q74 91 79 106T122 220Q160 321 166 341T173 380Q173 404 156 404H154Q124 404 99 371T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),t[240]||(t[240]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"i")])],-1))]),t[255]||(t[255]=a(" will vary for one whole cycle in the vectors before the ")),Q("mjx-container",Q2,[(e(),T("svg",t2,t[241]||(t[241]=[l('',1)]))),t[242]||(t[242]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])],-1))]),t[256]||(t[256]=a("-index ")),Q("mjx-container",a2,[(e(),T("svg",T2,t[243]||(t[243]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D457",d:"M297 596Q297 627 318 644T361 661Q378 661 389 651T403 623Q403 595 384 576T340 557Q322 557 310 567T297 596ZM288 376Q288 405 262 405Q240 405 220 393T185 362T161 325T144 293L137 279Q135 278 121 278H107Q101 284 101 286T105 299Q126 348 164 391T252 441Q253 441 260 441T272 442Q296 441 316 432Q341 418 354 401T367 348V332L318 133Q267 -67 264 -75Q246 -125 194 -164T75 -204Q25 -204 7 -183T-12 -137Q-12 -110 7 -91T53 -71Q70 -71 82 -81T95 -112Q95 -148 63 -167Q69 -168 77 -168Q111 -168 139 -140T182 -74L193 -32Q204 11 219 72T251 197T278 308T289 365Q289 372 288 376Z",style:{"stroke-width":"3"}})])])],-1)]))),t[244]||(t[244]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"j")])],-1))]),t[257]||(t[257]=a(", ")),Q("mjx-container",e2,[(e(),T("svg",l2,t[245]||(t[245]=[l('',1)]))),t[246]||(t[246]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"3")])])],-1))]),t[258]||(t[258]=a(" index ")),Q("mjx-container",s2,[(e(),T("svg",m2,t[247]||(t[247]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D458",d:"M121 647Q121 657 125 670T137 683Q138 683 209 688T282 694Q294 694 294 686Q294 679 244 477Q194 279 194 272Q213 282 223 291Q247 309 292 354T362 415Q402 442 438 442Q468 442 485 423T503 369Q503 344 496 327T477 302T456 291T438 288Q418 288 406 299T394 328Q394 353 410 369T442 390L458 393Q446 405 434 405H430Q398 402 367 380T294 316T228 255Q230 254 243 252T267 246T293 238T320 224T342 206T359 180T365 147Q365 130 360 106T354 66Q354 26 381 26Q429 26 459 145Q461 153 479 153H483Q499 153 499 144Q499 139 496 130Q455 -11 378 -11Q333 -11 305 15T277 90Q277 108 280 121T283 145Q283 167 269 183T234 206T200 217T182 220H180Q168 178 159 139T145 81T136 44T129 20T122 7T111 -2Q98 -11 83 -11Q66 -11 57 -1T48 16Q48 26 85 176T158 471L195 616Q196 629 188 632T149 637H144Q134 637 131 637T124 640T121 647Z",style:{"stroke-width":"3"}})])])],-1)]))),t[248]||(t[248]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k")])],-1))]),t[259]||(t[259]=a(", and component-index ")),Q("mjx-container",o2,[(e(),T("svg",n2,t[249]||(t[249]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D6FC",d:"M34 156Q34 270 120 356T309 442Q379 442 421 402T478 304Q484 275 485 237V208Q534 282 560 374Q564 388 566 390T582 393Q603 393 603 385Q603 376 594 346T558 261T497 161L486 147L487 123Q489 67 495 47T514 26Q528 28 540 37T557 60Q559 67 562 68T577 70Q597 70 597 62Q597 56 591 43Q579 19 556 5T512 -10H505Q438 -10 414 62L411 69L400 61Q390 53 370 41T325 18T267 -2T203 -11Q124 -11 79 39T34 156ZM208 26Q257 26 306 47T379 90L403 112Q401 255 396 290Q382 405 304 405Q235 405 183 332Q156 292 139 224T121 120Q121 71 146 49T208 26Z",style:{"stroke-width":"3"}})])])],-1)]))),t[250]||(t[250]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"α")])],-1))]),t[260]||(t[260]=a(" are incremented, e.g. ")),Q("mjx-container",d2,[(e(),T("svg",r2,t[251]||(t[251]=[l('',1)]))),t[252]||(t[252]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"1")]),Q("mo",null,","),Q("mo",null,"…"),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"2"),Q("mo",{stretchy:"false"},")"),Q("mo",null,","),Q("msub",null,[Q("mi",null,"N"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"3")])])]),Q("mo",{stretchy:"false"},"("),Q("mn",null,"3"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")]),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[261]||(t[261]=a(" in 3D."))])]),t[388]||(t[388]=Q("h2",{id:"Fourth-order-accurate-discretization",tabindex:"-1"},[a("Fourth order accurate discretization "),Q("a",{class:"header-anchor",href:"#Fourth-order-accurate-discretization","aria-label":'Permalink to "Fourth order accurate discretization {#Fourth-order-accurate-discretization}"'},"​")],-1)),t[389]||(t[389]=Q("p",null,[a("The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Verstappen2003"},"14"),a("] ["),Q("a",{href:"/IncompressibleNavierStokes.jl/previews/PR126/references#Sanderse2014"},"15"),a("]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume")],-1)),Q("mjx-container",i2,[(e(),T("svg",h2,t[263]||(t[263]=[l('',1)]))),t[264]||(t[264]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",null,"="),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"⋃"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",null,"∪"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mi",null,"α")])])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[267]||(t[267]=a("while the momentum equation is derived for its shifted variant ")),Q("mjx-container",p2,[(e(),T("svg",g2,t[265]||(t[265]=[l('',1)]))),t[266]||(t[266]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])]),Q("mn",null,"3")])])],-1))]),t[268]||(t[268]=a(". The resulting fourth order accurate equations are given by"))]),Q("mjx-container",H2,[(e(),T("svg",u2,t[269]||(t[269]=[l('',1)]))),t[270]||(t[270]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I"),Q("mn",null,"3")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")]),Q("mrow",null,[Q("msup",null,[Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mn",null,"2"),Q("mo",null,"+"),Q("mi",null,"d")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mn",null,"0")])],-1))]),t[390]||(t[390]=Q("p",null,"and",-1)),Q("mjx-container",c2,[(e(),T("svg",w2,t[271]||(t[271]=[l('',1)]))),t[272]||(t[272]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("msubsup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")]),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"β")]),Q("mo",{stretchy:"false"},")"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mi",null,"ν"),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"β"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"β")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"f"),Q("mi",null,"α")]),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"δ"),Q("mi",null,"α")]),Q("mi",null,"p"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I")])]),Q("mo",null,"+"),Q("mtext",null,"fourth order"),Q("mo",null,",")])],-1))]),t[391]||(t[391]=Q("p",null,"where",-1)),Q("mjx-container",x2,[(e(),T("svg",L2,t[273]||(t[273]=[l('',1)]))),t[274]||(t[274]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mo",{stretchy:"false"},"("),Q("msubsup",null,[Q("mi",null,"δ"),Q("mi",null,"α"),Q("mn",null,"3")]),Q("mi",null,"φ"),Q("msub",null,[Q("mo",{stretchy:"false"},")"),Q("mi",null,"I")]),Q("mo",null,"="),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"φ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mi",null,"α")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"−"),Q("mn",null,"1")]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")])]),Q("mi",null,"α")]),Q("mo",null,"+"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mi",null,"α")]),Q("mo",null,"+"),Q("mn",null,"1")]),Q("mi",null,"α")])])]),Q("mo",null,".")])],-1))]),t[392]||(t[392]=Q("h2",{id:"Matrix-representation",tabindex:"-1"},[a("Matrix representation "),Q("a",{class:"header-anchor",href:"#Matrix-representation","aria-label":'Permalink to "Matrix representation {#Matrix-representation}"'},"​")],-1)),t[393]||(t[393]=Q("p",null,"We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes",-1)),Q("mjx-container",f2,[(e(),T("svg",y2,t[275]||(t[275]=[l('',1)]))),t[276]||(t[276]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"M"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",null,"="),Q("mn",null,"0"),Q("mo",null,",")])],-1))]),Q("p",null,[t[281]||(t[281]=a("where ")),Q("mjx-container",M2,[(e(),T("svg",k2,t[277]||(t[277]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[278]||(t[278]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[282]||(t[282]=a(" is the discrete divergence operator and ")),Q("mjx-container",V2,[(e(),T("svg",Z2,t[279]||(t[279]=[l('',1)]))),t[280]||(t[280]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])])],-1))]),t[283]||(t[283]=a(" contains the boundary value contributions of the velocity to the divergence field."))]),t[394]||(t[394]=Q("p",null,"The discrete momentum equations become",-1)),Q("mjx-container",b2,[(e(),T("svg",v2,t[284]||(t[284]=[l('',1)]))),t[285]||(t[285]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mo",null,"−"),Q("mi",null,"C"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"ν"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"D"),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"f"),Q("mi",null,"h")]),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"G"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,",")])])])])],-1))]),Q("p",null,[t[306]||(t[306]=a("where ")),Q("mjx-container",D2,[(e(),T("svg",j2,t[286]||(t[286]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D436",d:"M50 252Q50 367 117 473T286 641T490 704Q580 704 633 653Q642 643 648 636T656 626L657 623Q660 623 684 649Q691 655 699 663T715 679T725 690L740 705H746Q760 705 760 698Q760 694 728 561Q692 422 692 421Q690 416 687 415T669 413H653Q647 419 647 422Q647 423 648 429T650 449T651 481Q651 552 619 605T510 659Q484 659 454 652T382 628T299 572T226 479Q194 422 175 346T156 222Q156 108 232 58Q280 24 350 24Q441 24 512 92T606 240Q610 253 612 255T628 257Q648 257 648 248Q648 243 647 239Q618 132 523 55T319 -22Q206 -22 128 53T50 252Z",style:{"stroke-width":"3"}})])])],-1)]))),t[287]||(t[287]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"C")])],-1))]),t[307]||(t[307]=a(" is she convection operator (including boundary contributions), ")),Q("mjx-container",C2,[(e(),T("svg",O2,t[288]||(t[288]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D437",d:"M287 628Q287 635 230 637Q207 637 200 638T193 647Q193 655 197 667T204 682Q206 683 403 683Q570 682 590 682T630 676Q702 659 752 597T803 431Q803 275 696 151T444 3L430 1L236 0H125H72Q48 0 41 2T33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM703 469Q703 507 692 537T666 584T629 613T590 629T555 636Q553 636 541 636T512 636T479 637H436Q392 637 386 627Q384 623 313 339T242 52Q242 48 253 48T330 47Q335 47 349 47T373 46Q499 46 581 128Q617 164 640 212T683 339T703 469Z",style:{"stroke-width":"3"}})])])],-1)]))),t[289]||(t[289]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"D")])],-1))]),t[308]||(t[308]=a(" is the diffusion operator, ")),Q("mjx-container",R2,[(e(),T("svg",F2,t[290]||(t[290]=[l('',1)]))),t[291]||(t[291]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"D")])])],-1))]),t[309]||(t[309]=a(" is boundary contribution to the diffusion term, ")),Q("mjx-container",A2,[(e(),T("svg",B2,t[292]||(t[292]=[l('',1)]))),t[293]||(t[293]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"G"),Q("mo",null,"="),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[310]||(t[310]=a(" is the pressure gradient operator, ")),Q("mjx-container",X2,[(e(),T("svg",S2,t[294]||(t[294]=[l('',1)]))),t[295]||(t[295]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")])])],-1))]),t[311]||(t[311]=a(" contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), ")),Q("mjx-container",z2,[(e(),T("svg",I2,t[296]||(t[296]=[l('',1)]))),t[297]||(t[297]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"W"),Q("mi",null,"u")])])],-1))]),t[312]||(t[312]=a(" is a diagonal matrix containing the velocity volume sizes ")),Q("mjx-container",G2,[(e(),T("svg",J2,t[298]||(t[298]=[l('',1)]))),t[299]||(t[299]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mi",null,"δ"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")])]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[313]||(t[313]=a(", and ")),Q("mjx-container",E2,[(e(),T("svg",P2,t[300]||(t[300]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44A",d:"M436 683Q450 683 486 682T553 680Q604 680 638 681T677 682Q695 682 695 674Q695 670 692 659Q687 641 683 639T661 637Q636 636 621 632T600 624T597 615Q597 603 613 377T629 138L631 141Q633 144 637 151T649 170T666 200T690 241T720 295T759 362Q863 546 877 572T892 604Q892 619 873 628T831 637Q817 637 817 647Q817 650 819 660Q823 676 825 679T839 682Q842 682 856 682T895 682T949 681Q1015 681 1034 683Q1048 683 1048 672Q1048 666 1045 655T1038 640T1028 637Q1006 637 988 631T958 617T939 600T927 584L923 578L754 282Q586 -14 585 -15Q579 -22 561 -22Q546 -22 542 -17Q539 -14 523 229T506 480L494 462Q472 425 366 239Q222 -13 220 -15T215 -19Q210 -22 197 -22Q178 -22 176 -15Q176 -12 154 304T131 622Q129 631 121 633T82 637H58Q51 644 51 648Q52 671 64 683H76Q118 680 176 680Q301 680 313 683H323Q329 677 329 674T327 656Q322 641 318 637H297Q236 634 232 620Q262 160 266 136L501 550L499 587Q496 629 489 632Q483 636 447 637Q428 637 422 639T416 648Q416 650 418 660Q419 664 420 669T421 676T424 680T428 682T436 683Z",style:{"stroke-width":"3"}})])])],-1)]))),t[301]||(t[301]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"W")])],-1))]),t[314]||(t[314]=a(" is a diagonal matrix containing the reference volume sizes ")),Q("mjx-container",q2,[(e(),T("svg",N2,t[302]||(t[302]=[l('',1)]))),t[303]||(t[303]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mi",null,"I")]),Q("mo",{"data-mjx-texclass":"ORD",stretchy:"false"},"|")])],-1))]),t[315]||(t[315]=a(". The term ")),Q("mjx-container",W2,[(e(),T("svg",K2,t[304]||(t[304]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D439",d:"M48 1Q31 1 31 11Q31 13 34 25Q38 41 42 43T65 46Q92 46 125 49Q139 52 144 61Q146 66 215 342T285 622Q285 629 281 629Q273 632 228 634H197Q191 640 191 642T193 659Q197 676 203 680H742Q749 676 749 669Q749 664 736 557T722 447Q720 440 702 440H690Q683 445 683 453Q683 454 686 477T689 530Q689 560 682 579T663 610T626 626T575 633T503 634H480Q398 633 393 631Q388 629 386 623Q385 622 352 492L320 363H375Q378 363 398 363T426 364T448 367T472 374T489 386Q502 398 511 419T524 457T529 475Q532 480 548 480H560Q567 475 567 470Q567 467 536 339T502 207Q500 200 482 200H470Q463 206 463 212Q463 215 468 234T473 274Q473 303 453 310T364 317H309L277 190Q245 66 245 60Q245 46 334 46H359Q365 40 365 39T363 19Q359 6 353 0H336Q295 2 185 2Q120 2 86 2T48 1Z",style:{"stroke-width":"3"}})])])],-1)]))),t[305]||(t[305]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F")])],-1))]),t[316]||(t[316]=a(" refers to all the forces except for the pressure gradient."))]),t[395]||(t[395]=Q("div",{class:"tip custom-block"},[Q("p",{class:"custom-block-title"},"Volume normalization"),Q("p",null,"All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.")],-1)),t[396]||(t[396]=Q("h2",{id:"Discrete-pressure-Poisson-equation",tabindex:"-1"},[a("Discrete pressure Poisson equation "),Q("a",{class:"header-anchor",href:"#Discrete-pressure-Poisson-equation","aria-label":'Permalink to "Discrete pressure Poisson equation {#Discrete-pressure-Poisson-equation}"'},"​")],-1)),Q("p",null,[t[319]||(t[319]=a("Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the ")),t[320]||(t[320]=Q("em",null,"discrete",-1)),t[321]||(t[321]=a(" setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator ")),Q("mjx-container",U2,[(e(),T("svg",$2,t[317]||(t[317]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D440",d:"M289 629Q289 635 232 637Q208 637 201 638T194 648Q194 649 196 659Q197 662 198 666T199 671T201 676T203 679T207 681T212 683T220 683T232 684Q238 684 262 684T307 683Q386 683 398 683T414 678Q415 674 451 396L487 117L510 154Q534 190 574 254T662 394Q837 673 839 675Q840 676 842 678T846 681L852 683H948Q965 683 988 683T1017 684Q1051 684 1051 673Q1051 668 1048 656T1045 643Q1041 637 1008 637Q968 636 957 634T939 623Q936 618 867 340T797 59Q797 55 798 54T805 50T822 48T855 46H886Q892 37 892 35Q892 19 885 5Q880 0 869 0Q864 0 828 1T736 2Q675 2 644 2T609 1Q592 1 592 11Q592 13 594 25Q598 41 602 43T625 46Q652 46 685 49Q699 52 704 61Q706 65 742 207T813 490T848 631L654 322Q458 10 453 5Q451 4 449 3Q444 0 433 0Q418 0 415 7Q413 11 374 317L335 624L267 354Q200 88 200 79Q206 46 272 46H282Q288 41 289 37T286 19Q282 3 278 1Q274 0 267 0Q265 0 255 0T221 1T157 2Q127 2 95 1T58 0Q43 0 39 2T35 11Q35 13 38 25T43 40Q45 46 65 46Q135 46 154 86Q158 92 223 354T289 629Z",style:{"stroke-width":"3"}})])])],-1)]))),t[318]||(t[318]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"M")])],-1))]),t[322]||(t[322]=a(" to the discrete momentum equations yields the discrete pressure Poisson equation"))]),Q("mjx-container",Y2,[(e(),T("svg",_2,t[323]||(t[323]=[l('',1)]))),t[324]||(t[324]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"L"),Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,",")])],-1))]),Q("p",null,[t[327]||(t[327]=a("where ")),Q("mjx-container",Q4,[(e(),T("svg",t4,t[325]||(t[325]=[l('',1)]))),t[326]||(t[326]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("mi",null,"G"),Q("mo",null,"="),Q("mi",null,"W"),Q("mi",null,"M"),Q("msubsup",null,[Q("mi",null,"W"),Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("msup",null,[Q("mi",null,"M"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"sans-serif"},"T")])]),Q("mi",null,"W")])],-1))]),t[328]||(t[328]=a(" is a discrete Laplace operator. It is positive symmetric."))]),Q("div",a4,[t[339]||(t[339]=Q("p",{class:"custom-block-title"},"Unsteady Dirichlet boundary conditions",-1)),Q("p",null,[t[335]||(t[335]=a("If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term ")),Q("mjx-container",T4,[(e(),T("svg",e4,t[329]||(t[329]=[l('',1)]))),t[330]||(t[330]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])])])],-1))]),t[336]||(t[336]=a(" will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example ")),Q("mjx-container",l4,[(e(),T("svg",s4,t[331]||(t[331]=[l('',1)]))),t[332]||(t[332]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"≈"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"t"),Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[337]||(t[337]=a(" for some ")),Q("mjx-container",m4,[(e(),T("svg",o4,t[333]||(t[333]=[l('',1)]))),t[334]||(t[334]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",{mathvariant:"normal"},"Δ"),Q("mi",null,"t")])],-1))]),t[338]||(t[338]=a("."))])]),Q("div",n4,[t[344]||(t[344]=Q("p",{class:"custom-block-title"},"Uniqueness of pressure field",-1)),Q("p",null,[t[342]||(t[342]=a("Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as ")),Q("mjx-container",d4,[(e(),T("svg",r4,t[340]||(t[340]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D43F",d:"M228 637Q194 637 192 641Q191 643 191 649Q191 673 202 682Q204 683 217 683Q271 680 344 680Q485 680 506 683H518Q524 677 524 674T522 656Q517 641 513 637H475Q406 636 394 628Q387 624 380 600T313 336Q297 271 279 198T252 88L243 52Q243 48 252 48T311 46H328Q360 46 379 47T428 54T478 72T522 106T564 161Q580 191 594 228T611 270Q616 273 628 273H641Q647 264 647 262T627 203T583 83T557 9Q555 4 553 3T537 0T494 -1Q483 -1 418 -1T294 0H116Q32 0 32 10Q32 17 34 24Q39 43 44 45Q48 46 59 46H65Q92 46 125 49Q139 52 144 61Q147 65 216 339T285 628Q285 635 228 637Z",style:{"stroke-width":"3"}})])])],-1)]))),t[341]||(t[341]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"L")])],-1))]),t[343]||(t[343]=a(" will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field."))])]),Q("div",i4,[t[360]||(t[360]=Q("p",{class:"custom-block-title"},"Pressure projection",-1)),Q("p",null,[t[347]||(t[347]=a("The pressure field ")),Q("mjx-container",h4,[(e(),T("svg",p4,t[345]||(t[345]=[l('',1)]))),t[346]||(t[346]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")])])],-1))]),t[348]||(t[348]=a(" can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:"))]),Q("mjx-container",g4,[(e(),T("svg",H4,t[349]||(t[349]=[l('',1)]))),t[350]||(t[350]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msub",null,[Q("mi",null,"p"),Q("mi",null,"h")]),Q("mo",null,"="),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),t[361]||(t[361]=Q("p",null,"The momentum equations then become",-1)),Q("mjx-container",u4,[(e(),T("svg",c4,t[351]||(t[351]=[l('',1)]))),t[352]||(t[352]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,"="),Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("msub",null,[Q("mi",null,"u"),Q("mi",null,"h")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"G")]),Q("mo",{stretchy:"false"},")"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mfrac",null,[Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("msub",null,[Q("mi",null,"y"),Q("mi",null,"M")])]),Q("mrow",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",null,"t")])]),Q("mo",null,".")])],-1))]),Q("p",null,[t[357]||(t[357]=a("The matrix ")),Q("mjx-container",w4,[(e(),T("svg",x4,t[353]||(t[353]=[l('',1)]))),t[354]||(t[354]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("mi",null,"I"),Q("mo",null,"−"),Q("mi",null,"G"),Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mi",null,"W"),Q("mi",null,"M"),Q("mo",{stretchy:"false"},")")])],-1))]),t[358]||(t[358]=a(" is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix ")),Q("mjx-container",L4,[(e(),T("svg",f4,t[355]||(t[355]=[l('',1)]))),t[356]||(t[356]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"L"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])])])],-1))]),t[359]||(t[359]=a(", which would be very costly."))])]),t[397]||(t[397]=Q("h2",{id:"Discrete-output-quantities",tabindex:"-1"},[a("Discrete output quantities "),Q("a",{class:"header-anchor",href:"#Discrete-output-quantities","aria-label":'Permalink to "Discrete output quantities {#Discrete-output-quantities}"'},"​")],-1)),t[398]||(t[398]=Q("h3",{id:"Kinetic-energy",tabindex:"-1"},[a("Kinetic energy "),Q("a",{class:"header-anchor",href:"#Kinetic-energy","aria-label":'Permalink to "Kinetic energy {#Kinetic-energy}"'},"​")],-1)),Q("p",null,[t[364]||(t[364]=a("The local kinetic energy is defined by ")),Q("mjx-container",y4,[(e(),T("svg",M4,t[362]||(t[362]=[l('',1)]))),t[363]||(t[363]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"k"),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mi",null,"u"),Q("msubsup",null,[Q("mo",{"data-mjx-texclass":"ORD"},"∥"),Q("mn",null,"2"),Q("mn",null,"2")]),Q("mo",null,"="),Q("mfrac",null,[Q("mn",null,"1"),Q("mn",null,"2")]),Q("munderover",null,[Q("mo",{"data-mjx-texclass":"OP"},"∑"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"α"),Q("mo",null,"="),Q("mn",null,"1")]),Q("mi",null,"d")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")]),Q("msup",null,[Q("mi",null,"u"),Q("mi",null,"α")])])],-1))]),t[365]||(t[365]=a(". On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares."))]),t[399]||(t[399]=Q("h3",{id:"vorticity",tabindex:"-1"},[a("Vorticity "),Q("a",{class:"header-anchor",href:"#vorticity","aria-label":'Permalink to "Vorticity"'},"​")],-1)),t[400]||(t[400]=Q("p",null,"In 2D, the vorticity is a scalar. We define it as",-1)),Q("mjx-container",k4,[(e(),T("svg",V4,t[366]||(t[366]=[l('',1)]))),t[367]||(t[367]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"ω"),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"2")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mn",null,"1")]),Q("msup",null,[Q("mi",null,"u"),Q("mn",null,"2")]),Q("mo",null,".")])],-1))]),Q("p",null,[t[374]||(t[374]=a("The 3D vorticity is a vector field ")),Q("mjx-container",Z4,[(e(),T("svg",b4,t[368]||(t[368]=[l('',1)]))),t[369]||(t[369]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"1")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"2")]),Q("mo",null,","),Q("msup",null,[Q("mi",null,"ω"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},")")])],-1))]),t[375]||(t[375]=a(". Noting ")),Q("mjx-container",v4,[(e(),T("svg",D4,t[370]||(t[370]=[l('',1)]))),t[371]||(t[371]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"+"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[376]||(t[376]=a(" and ")),Q("mjx-container",j4,[(e(),T("svg",C4,t[372]||(t[372]=[l('',1)]))),t[373]||(t[373]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")]),Q("mo",null,"="),Q("msub",null,[Q("mi",null,"mod"),Q("mn",null,"3")]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"α"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},")")])],-1))]),t[377]||(t[377]=a(", the vorticity is defined as through"))]),Q("mjx-container",O4,[(e(),T("svg",R4,t[378]||(t[378]=[l('',1)]))),t[379]||(t[379]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msup",null,[Q("mi",null,"ω"),Q("mi",null,"α")]),Q("mo",null,"="),Q("mo",null,"−"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("mo",null,"+"),Q("msup",null,[Q("mi",null,"δ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"+")])])]),Q("msup",null,[Q("mi",null,"u"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msup",null,[Q("mi",null,"α"),Q("mo",null,"−")])])]),Q("mo",null,".")])],-1))]),t[401]||(t[401]=Q("h2",{id:"Stream-function",tabindex:"-1"},[a("Stream function "),Q("a",{class:"header-anchor",href:"#Stream-function","aria-label":'Permalink to "Stream function {#Stream-function}"'},"​")],-1)),t[402]||(t[402]=Q("p",null,"In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields",-1)),Q("mjx-container",F4,[(e(),T("svg",A4,t[380]||(t[380]=[l('',1)]))),t[381]||(t[381]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("mi",null,"ω"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])])]),Q("msup",null,[Q("mi",{mathvariant:"normal"},"∇"),Q("mn",null,"2")]),Q("mi",null,"ψ"),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Ω")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"1")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"+"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"e"),Q("mn",null,"2")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,"−"),Q("msub",null,[Q("mo",{"data-mjx-texclass":"OP"},"∫"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")])]),Q("mn",null,"2")])])]),Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"∂"),Q("mi",null,"ψ")]),Q("mrow",null,[Q("mi",null,"∂"),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")])])]),Q("mstyle",{scriptlevel:"0"},[Q("mspace",{width:"0.167em"})]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",{mathvariant:"normal"},"d")]),Q("mi",{mathvariant:"normal"},"Γ"),Q("mo",null,".")])])])])],-1))]),t[403]||(t[403]=Q("p",null,"Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:",-1)),Q("mjx-container",B4,[(e(),T("svg",X4,t[382]||(t[382]=[l('',1)]))),t[383]||(t[383]=Q("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"1")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"1")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"+")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msubsup",null,[Q("mi",{mathvariant:"normal"},"Γ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])]),Q("mn",null,"2")]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"("),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"3"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("mfrac",null,[Q("mrow",null,[Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"ψ"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"−"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mrow",null,[Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"+"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")]),Q("mo",null,"−"),Q("msubsup",null,[Q("mi",null,"x"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("msub",null,[Q("mi",null,"I"),Q("mn",null,"2")]),Q("mo",null,"−"),Q("mn",null,"1"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("mn",null,"2")]),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},")")])]),Q("mtd",null,[Q("mi"),Q("mo",null,"=")])]),Q("mtr",null,[Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"|"),Q("msub",null,[Q("mi",{mathvariant:"normal"},"Ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])]),Q("mo",{"data-mjx-texclass":"CLOSE"},"|")]),Q("msub",null,[Q("mi",null,"ω"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"I"),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"1")]),Q("mo",null,"+"),Q("msub",null,[Q("mi",null,"h"),Q("mn",null,"2")])])])]),Q("mtd")])])])],-1))])])}const N4=s(o,[["render",S4]]);export{q4 as __pageData,N4 as default}; diff --git a/previews/PR126/assets/manual_temperature.md.CPXaDcA-.js b/previews/PR126/assets/manual_temperature.md.C4cjejrf.js similarity index 97% rename from previews/PR126/assets/manual_temperature.md.CPXaDcA-.js rename to previews/PR126/assets/manual_temperature.md.C4cjejrf.js index f7c7d5e8..b6059fda 100644 --- a/previews/PR126/assets/manual_temperature.md.CPXaDcA-.js +++ b/previews/PR126/assets/manual_temperature.md.C4cjejrf.js @@ -1,4 +1,4 @@ -import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framework.BSoZtefh.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),h={name:"manual/temperature.md"},d={class:"jldocstring custom-block",open:""};function k(u,e,c,E,m,g){const i=l("Badge");return o(),n("div",null,[e[3]||(e[3]=a(`

    Temperature equation

    IncompressibleNavierStokes.jl supports adding a temperature equation, which is coupled back to the momentum equation through a gravity term [8].

    To enable the temperature equation, you need to set the temperature keyword in setup:

    julia
    setup = Setup(;
    +import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),h={name:"manual/temperature.md"},d={class:"jldocstring custom-block",open:""};function k(u,e,c,E,m,g){const i=l("Badge");return o(),n("div",null,[e[3]||(e[3]=a(`

    Temperature equation

    IncompressibleNavierStokes.jl supports adding a temperature equation, which is coupled back to the momentum equation through a gravity term [8].

    To enable the temperature equation, you need to set the temperature keyword in setup:

    julia
    setup = Setup(;
         kwargs...,
         temperature = temperature_equation(; kwargs...),
     )

    where temperature_equation can be configured as follows:

    `,5)),s("details",d,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-manual-temperature",href:"#IncompressibleNavierStokes.temperature_equation-manual-temperature"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),e[1]||(e[1]=p()),r(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=a(`
    julia
    temperature_equation(
    @@ -10,4 +10,4 @@ import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framewo
         boundary_conditions,
         gdir,
         nondim_type
    -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))])])}const f=t(h,[["render",k]]);export{b as __pageData,f as default}; +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))])])}const f=t(h,[["render",k]]);export{b as __pageData,f as default}; diff --git a/previews/PR126/assets/manual_temperature.md.CPXaDcA-.lean.js b/previews/PR126/assets/manual_temperature.md.C4cjejrf.lean.js similarity index 97% rename from previews/PR126/assets/manual_temperature.md.CPXaDcA-.lean.js rename to previews/PR126/assets/manual_temperature.md.C4cjejrf.lean.js index f7c7d5e8..b6059fda 100644 --- a/previews/PR126/assets/manual_temperature.md.CPXaDcA-.lean.js +++ b/previews/PR126/assets/manual_temperature.md.C4cjejrf.lean.js @@ -1,4 +1,4 @@ -import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framework.BSoZtefh.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),h={name:"manual/temperature.md"},d={class:"jldocstring custom-block",open:""};function k(u,e,c,E,m,g){const i=l("Badge");return o(),n("div",null,[e[3]||(e[3]=a(`

    Temperature equation

    IncompressibleNavierStokes.jl supports adding a temperature equation, which is coupled back to the momentum equation through a gravity term [8].

    To enable the temperature equation, you need to set the temperature keyword in setup:

    julia
    setup = Setup(;
    +import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framework.CojPSOJE.js";const b=JSON.parse('{"title":"Temperature equation","description":"","frontmatter":{},"headers":[],"relativePath":"manual/temperature.md","filePath":"manual/temperature.md","lastUpdated":null}'),h={name:"manual/temperature.md"},d={class:"jldocstring custom-block",open:""};function k(u,e,c,E,m,g){const i=l("Badge");return o(),n("div",null,[e[3]||(e[3]=a(`

    Temperature equation

    IncompressibleNavierStokes.jl supports adding a temperature equation, which is coupled back to the momentum equation through a gravity term [8].

    To enable the temperature equation, you need to set the temperature keyword in setup:

    julia
    setup = Setup(;
         kwargs...,
         temperature = temperature_equation(; kwargs...),
     )

    where temperature_equation can be configured as follows:

    `,5)),s("details",d,[s("summary",null,[e[0]||(e[0]=s("a",{id:"IncompressibleNavierStokes.temperature_equation-manual-temperature",href:"#IncompressibleNavierStokes.temperature_equation-manual-temperature"},[s("span",{class:"jlbinding"},"IncompressibleNavierStokes.temperature_equation")],-1)),e[1]||(e[1]=p()),r(i,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),e[2]||(e[2]=a(`
    julia
    temperature_equation(
    @@ -10,4 +10,4 @@ import{_ as t,c as n,a5 as a,j as s,a as p,G as r,B as l,o}from"./chunks/framewo
         boundary_conditions,
         gdir,
         nondim_type
    -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))])])}const f=t(h,[["render",k]]);export{b as __pageData,f as default}; +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    `,4))])])}const f=t(h,[["render",k]]);export{b as __pageData,f as default}; diff --git a/previews/PR126/assets/manual_time.md.Cp9DQrAy.js b/previews/PR126/assets/manual_time.md.BVGrMWBs.js similarity index 99% rename from previews/PR126/assets/manual_time.md.Cp9DQrAy.js rename to previews/PR126/assets/manual_time.md.BVGrMWBs.js index f6b6b6dd..0716af96 100644 --- a/previews/PR126/assets/manual_time.md.Cp9DQrAy.js +++ b/previews/PR126/assets/manual_time.md.BVGrMWBs.js @@ -1,174 +1,174 @@ -import{_ as n,c as Q,j as t,a as s,a5 as e,G as i,B as o,o as l}from"./chunks/framework.BSoZtefh.js";const U4=JSON.parse('{"title":"Time discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time.md","filePath":"manual/time.md","lastUpdated":null}'),r={name:"manual/time.md"},d={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.898ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 11446.9 2067","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.193ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6273.2 888","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.988ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204.7 1000","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.237ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 3640.9 1083.9","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.452ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7272 877","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.953ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2631.1 915.9","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.035ex",height:"2.099ex",role:"img",focusable:"false",viewBox:"0 -846 3109.5 928","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.605ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 6897.5 915.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.478ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4631.1 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.019ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2218.3 1000","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1079.3 686.5","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},U={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},W={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.869ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7456.2 1000","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.012ex",height:"13.249ex",role:"img",focusable:"false",viewBox:"0 -3178 21221.3 5856","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.353ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3692.2 1000","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.874ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2596.1 1209.9","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.329ex",height:"2.748ex",role:"img",focusable:"false",viewBox:"0 -864.9 8985.2 1214.4","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.031ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.662ex",height:"17.192ex",role:"img",focusable:"false",viewBox:"0 -4049.5 23718.8 7599","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.801ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.818ex",height:"2.758ex",role:"img",focusable:"false",viewBox:"0 -864.9 5223.7 1219","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.661ex",height:"4.88ex",role:"img",focusable:"false",viewBox:"0 -1460 20624.2 2157","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.846ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15402 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.069ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 5334.6 910","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},q1={class:"jldocstring custom-block",open:""},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.126ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 939.6 636","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},l2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 650","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.37ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1489.7 650","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.513ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9066.7 1000","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.287ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9408.7 1000","aria-hidden":"true"},g2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.093ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2693.1 1209.9","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.724ex",role:"img",focusable:"false",viewBox:"0 -751 485 762","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.933ex",height:"5.926ex",role:"img",focusable:"false",viewBox:"0 -1449.5 29142.5 2619.4","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"30.973ex",height:"5.355ex",role:"img",focusable:"false",viewBox:"0 -1669.9 13690.2 2366.9","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.441ex",height:"5.796ex",role:"img",focusable:"false",viewBox:"0 -1392 9035 2561.9","aria-hidden":"true"},v2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.602ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.092ex",height:"4.663ex",role:"img",focusable:"false",viewBox:"0 -1353 9764.7 2061","aria-hidden":"true"},Z2={class:"jldocstring custom-block",open:""},j2={class:"jldocstring custom-block",open:""},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",role:"img",focusable:"false",viewBox:"0 -442 469 452","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.585ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 5562.5 881.6","aria-hidden":"true"},B2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.879ex",height:"1.977ex",role:"img",focusable:"false",viewBox:"0 -716 4808.5 873.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.358ex",height:"1.975ex",role:"img",focusable:"false",viewBox:"0 -716 4136.2 873.1","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.589ex",height:"1.772ex",role:"img",focusable:"false",viewBox:"0 -626 2470.2 783.1","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.031ex",height:"1.946ex",role:"img",focusable:"false",viewBox:"0 -666 4875.6 860","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},$2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.878ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 830 636","aria-hidden":"true"},_2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-15.831ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.276ex",height:"32.793ex",role:"img",focusable:"false",viewBox:"0 -7497.2 19570.1 14494.3","aria-hidden":"true"},a3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.755ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2543.6 1044.2","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.99ex",height:"3.109ex",role:"img",focusable:"false",viewBox:"0 -944.5 5741.5 1374.1","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.232ex",height:"1.355ex",role:"img",focusable:"false",viewBox:"0 -442 986.6 599.1","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.102ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 9327.2 1083.9","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.567ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6438.6 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},x3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},M3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.567ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 2902.8 1328.5","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.076ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 917.6 636","aria-hidden":"true"},V3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.837ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 812 600.8","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.307ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 3229.8 1328.5","aria-hidden":"true"},K3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.935ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9695.2 1000","aria-hidden":"true"},B3={class:"jldocstring custom-block",open:""},O3={class:"jldocstring custom-block",open:""},P3={class:"jldocstring custom-block",open:""},G3={class:"jldocstring custom-block",open:""},z3={class:"jldocstring custom-block",open:""},J3={class:"jldocstring custom-block",open:""},U3={class:"jldocstring custom-block",open:""},X3={class:"jldocstring custom-block",open:""},W3={class:"jldocstring custom-block",open:""},q3={class:"jldocstring custom-block",open:""},$3={class:"jldocstring custom-block",open:""},Y3={class:"jldocstring custom-block",open:""},_3={class:"jldocstring custom-block",open:""},t4={class:"jldocstring custom-block",open:""},a4={class:"jldocstring custom-block",open:""},s4={class:"jldocstring custom-block",open:""},e4={class:"jldocstring custom-block",open:""},Q4={class:"jldocstring custom-block",open:""},l4={class:"jldocstring custom-block",open:""},T4={class:"jldocstring custom-block",open:""},i4={class:"jldocstring custom-block",open:""},n4={class:"jldocstring custom-block",open:""},o4={class:"jldocstring custom-block",open:""},r4={class:"jldocstring custom-block",open:""},d4={class:"jldocstring custom-block",open:""},m4={class:"jldocstring custom-block",open:""},p4={class:"jldocstring custom-block",open:""},h4={class:"jldocstring custom-block",open:""},g4={class:"jldocstring custom-block",open:""},k4={class:"jldocstring custom-block",open:""},c4={class:"jldocstring custom-block",open:""},u4={class:"jldocstring custom-block",open:""},H4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},y4={class:"jldocstring custom-block",open:""},b4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},M4={class:"jldocstring custom-block",open:""},L4={class:"jldocstring custom-block",open:""},v4={class:"jldocstring custom-block",open:""},E4={class:"jldocstring custom-block",open:""},Z4={class:"jldocstring custom-block",open:""},j4={class:"jldocstring custom-block",open:""},D4={class:"jldocstring custom-block",open:""},S4={class:"jldocstring custom-block",open:""},V4={class:"jldocstring custom-block",open:""},I4={class:"jldocstring custom-block",open:""},R4={class:"jldocstring custom-block",open:""},F4={class:"jldocstring custom-block",open:""},C4={class:"jldocstring custom-block",open:""},N4={class:"jldocstring custom-block",open:""},K4={class:"jldocstring custom-block",open:""};function A4(B4,a,O4,P4,G4,z4){const T=o("Badge");return l(),Q("div",null,[a[474]||(a[474]=t("h1",{id:"Time-discretization",tabindex:"-1"},[s("Time discretization "),t("a",{class:"header-anchor",href:"#Time-discretization","aria-label":'Permalink to "Time discretization {#Time-discretization}"'},"​")],-1)),a[475]||(a[475]=t("p",null,"The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity",-1)),t("mjx-container",d,[(l(),Q("svg",m,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},")")])],-1))]),a[476]||(a[476]=t("p",null,"subject to the algebraic constraint formed by the mass equation",-1)),t("mjx-container",p,[(l(),Q("svg",h,a[2]||(a[2]=[e('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"M"),t("mi",null,"u"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",null,"="),t("mn",null,"0.")])],-1))]),t("p",null,[a[8]||(a[8]=s("In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term ")),t("mjx-container",g,[(l(),Q("svg",k,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])])],-1))]),a[9]||(a[9]=s(", which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field ")),t("mjx-container",c,[(l(),Q("svg",u,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[10]||(a[10]=s(" stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following)."))]),t("p",null,[a[41]||(a[41]=s("Consider the interval ")),t("mjx-container",H,[(l(),Q("svg",w,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mi",null,"T"),t("mo",{stretchy:"false"},"]")])],-1))]),a[42]||(a[42]=s(" for some simulation time ")),t("mjx-container",y,[(l(),Q("svg",b,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[43]||(a[43]=s(". We will divide it into ")),t("mjx-container",x,[(l(),Q("svg",f,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"N")])],-1))]),a[44]||(a[44]=s(" sub-intervals ")),t("mjx-container",M,[(l(),Q("svg",L,a[17]||(a[17]=[e('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,","),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"]")])],-1))]),a[45]||(a[45]=s(" for ")),t("mjx-container",v,[(l(),Q("svg",E,a[19]||(a[19]=[e('',1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",null,"−"),t("mn",null,"1")])],-1))]),a[46]||(a[46]=s(", with ")),t("mjx-container",Z,[(l(),Q("svg",j,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"="),t("mn",null,"0")])],-1))]),a[47]||(a[47]=s(", ")),t("mjx-container",D,[(l(),Q("svg",S,a[23]||(a[23]=[e('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"T")])],-1))]),a[48]||(a[48]=s(", and increment ")),t("mjx-container",V,[(l(),Q("svg",I,a[25]||(a[25]=[e('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,"="),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,"−"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")])])],-1))]),a[49]||(a[49]=s(". We define ")),t("mjx-container",R,[(l(),Q("svg",F,a[27]||(a[27]=[e('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"≈"),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[50]||(a[50]=s(" as an approximation to the exact discrete velocity field ")),t("mjx-container",C,[(l(),Q("svg",N,a[29]||(a[29]=[e('',1)]))),a[30]||(a[30]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[51]||(a[51]=s(", with ")),t("mjx-container",K,[(l(),Q("svg",A,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[52]||(a[52]=s(" starting from the exact initial conditions. We say that the time integration scheme (definition of ")),t("mjx-container",B,[(l(),Q("svg",O,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")])])],-1))]),a[53]||(a[53]=s(") is accurate to the order ")),t("mjx-container",P,[(l(),Q("svg",G,a[35]||(a[35]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[36]||(a[36]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[54]||(a[54]=s(" if ")),t("mjx-container",z,[(l(),Q("svg",J,a[37]||(a[37]=[e('',1)]))),a[38]||(a[38]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[55]||(a[55]=s(" for all ")),t("mjx-container",U,[(l(),Q("svg",X,a[39]||(a[39]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[40]||(a[40]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[56]||(a[56]=s("."))]),a[477]||(a[477]=t("p",null,"IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.",-1)),a[478]||(a[478]=t("p",null,[s("The code is currently not adapted to time steppers from "),t("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/solvers/dae_solve/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl"),s(", but they may be integrated in the future.")],-1)),t("details",W,[t("summary",null,[a[57]||(a[57]=t("a",{id:"IncompressibleNavierStokes.AbstractODEMethod",href:"#IncompressibleNavierStokes.AbstractODEMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractODEMethod")],-1)),a[58]||(a[58]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[59]||(a[59]=e('
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    ',4))]),t("details",q,[t("summary",null,[a[60]||(a[60]=t("a",{id:"IncompressibleNavierStokes.ode_method_cache",href:"#IncompressibleNavierStokes.ode_method_cache"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ode_method_cache")],-1)),a[61]||(a[61]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[62]||(a[62]=e('
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    ',3))]),t("details",$,[t("summary",null,[a[63]||(a[63]=t("a",{id:"IncompressibleNavierStokes.runge_kutta_method",href:"#IncompressibleNavierStokes.runge_kutta_method"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.runge_kutta_method")],-1)),a[64]||(a[64]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[65]||(a[65]=e(`
    julia
    runge_kutta_method(
    +import{_ as n,c as Q,j as t,a as s,a5 as e,G as i,B as o,o as l}from"./chunks/framework.CojPSOJE.js";const U4=JSON.parse('{"title":"Time discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time.md","filePath":"manual/time.md","lastUpdated":null}'),r={name:"manual/time.md"},d={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.898ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 11446.9 2067","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.193ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6273.2 888","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.988ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204.7 1000","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.237ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 3640.9 1083.9","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.452ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7272 877","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.953ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2631.1 915.9","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.035ex",height:"2.099ex",role:"img",focusable:"false",viewBox:"0 -846 3109.5 928","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.605ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 6897.5 915.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.478ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4631.1 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.019ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2218.3 1000","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1079.3 686.5","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},U={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},W={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.869ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7456.2 1000","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.012ex",height:"13.249ex",role:"img",focusable:"false",viewBox:"0 -3178 21221.3 5856","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.353ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3692.2 1000","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.874ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2596.1 1209.9","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.329ex",height:"2.748ex",role:"img",focusable:"false",viewBox:"0 -864.9 8985.2 1214.4","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.031ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.662ex",height:"17.192ex",role:"img",focusable:"false",viewBox:"0 -4049.5 23718.8 7599","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.801ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.818ex",height:"2.758ex",role:"img",focusable:"false",viewBox:"0 -864.9 5223.7 1219","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.661ex",height:"4.88ex",role:"img",focusable:"false",viewBox:"0 -1460 20624.2 2157","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.846ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15402 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.069ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 5334.6 910","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},q1={class:"jldocstring custom-block",open:""},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.126ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 939.6 636","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},l2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 650","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.37ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1489.7 650","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.513ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9066.7 1000","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.287ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9408.7 1000","aria-hidden":"true"},g2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.093ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2693.1 1209.9","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.724ex",role:"img",focusable:"false",viewBox:"0 -751 485 762","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.933ex",height:"5.926ex",role:"img",focusable:"false",viewBox:"0 -1449.5 29142.5 2619.4","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"30.973ex",height:"5.355ex",role:"img",focusable:"false",viewBox:"0 -1669.9 13690.2 2366.9","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.441ex",height:"5.796ex",role:"img",focusable:"false",viewBox:"0 -1392 9035 2561.9","aria-hidden":"true"},v2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.602ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.092ex",height:"4.663ex",role:"img",focusable:"false",viewBox:"0 -1353 9764.7 2061","aria-hidden":"true"},Z2={class:"jldocstring custom-block",open:""},j2={class:"jldocstring custom-block",open:""},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",role:"img",focusable:"false",viewBox:"0 -442 469 452","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.585ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 5562.5 881.6","aria-hidden":"true"},B2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.879ex",height:"1.977ex",role:"img",focusable:"false",viewBox:"0 -716 4808.5 873.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.358ex",height:"1.975ex",role:"img",focusable:"false",viewBox:"0 -716 4136.2 873.1","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.589ex",height:"1.772ex",role:"img",focusable:"false",viewBox:"0 -626 2470.2 783.1","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.031ex",height:"1.946ex",role:"img",focusable:"false",viewBox:"0 -666 4875.6 860","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},$2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.878ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 830 636","aria-hidden":"true"},_2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-15.831ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.276ex",height:"32.793ex",role:"img",focusable:"false",viewBox:"0 -7497.2 19570.1 14494.3","aria-hidden":"true"},a3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.755ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2543.6 1044.2","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.99ex",height:"3.109ex",role:"img",focusable:"false",viewBox:"0 -944.5 5741.5 1374.1","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.232ex",height:"1.355ex",role:"img",focusable:"false",viewBox:"0 -442 986.6 599.1","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.102ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 9327.2 1083.9","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.567ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6438.6 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},b3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},M3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.567ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 2902.8 1328.5","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.076ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 917.6 636","aria-hidden":"true"},V3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.837ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 812 600.8","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.307ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 3229.8 1328.5","aria-hidden":"true"},K3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.935ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9695.2 1000","aria-hidden":"true"},B3={class:"jldocstring custom-block",open:""},O3={class:"jldocstring custom-block",open:""},P3={class:"jldocstring custom-block",open:""},G3={class:"jldocstring custom-block",open:""},z3={class:"jldocstring custom-block",open:""},J3={class:"jldocstring custom-block",open:""},U3={class:"jldocstring custom-block",open:""},X3={class:"jldocstring custom-block",open:""},W3={class:"jldocstring custom-block",open:""},q3={class:"jldocstring custom-block",open:""},$3={class:"jldocstring custom-block",open:""},Y3={class:"jldocstring custom-block",open:""},_3={class:"jldocstring custom-block",open:""},t4={class:"jldocstring custom-block",open:""},a4={class:"jldocstring custom-block",open:""},s4={class:"jldocstring custom-block",open:""},e4={class:"jldocstring custom-block",open:""},Q4={class:"jldocstring custom-block",open:""},l4={class:"jldocstring custom-block",open:""},T4={class:"jldocstring custom-block",open:""},i4={class:"jldocstring custom-block",open:""},n4={class:"jldocstring custom-block",open:""},o4={class:"jldocstring custom-block",open:""},r4={class:"jldocstring custom-block",open:""},d4={class:"jldocstring custom-block",open:""},m4={class:"jldocstring custom-block",open:""},p4={class:"jldocstring custom-block",open:""},h4={class:"jldocstring custom-block",open:""},g4={class:"jldocstring custom-block",open:""},k4={class:"jldocstring custom-block",open:""},c4={class:"jldocstring custom-block",open:""},u4={class:"jldocstring custom-block",open:""},H4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},y4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},b4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},M4={class:"jldocstring custom-block",open:""},L4={class:"jldocstring custom-block",open:""},v4={class:"jldocstring custom-block",open:""},E4={class:"jldocstring custom-block",open:""},Z4={class:"jldocstring custom-block",open:""},j4={class:"jldocstring custom-block",open:""},D4={class:"jldocstring custom-block",open:""},S4={class:"jldocstring custom-block",open:""},V4={class:"jldocstring custom-block",open:""},I4={class:"jldocstring custom-block",open:""},R4={class:"jldocstring custom-block",open:""},F4={class:"jldocstring custom-block",open:""},C4={class:"jldocstring custom-block",open:""},N4={class:"jldocstring custom-block",open:""},K4={class:"jldocstring custom-block",open:""};function A4(B4,a,O4,P4,G4,z4){const T=o("Badge");return l(),Q("div",null,[a[474]||(a[474]=t("h1",{id:"Time-discretization",tabindex:"-1"},[s("Time discretization "),t("a",{class:"header-anchor",href:"#Time-discretization","aria-label":'Permalink to "Time discretization {#Time-discretization}"'},"​")],-1)),a[475]||(a[475]=t("p",null,"The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity",-1)),t("mjx-container",d,[(l(),Q("svg",m,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},")")])],-1))]),a[476]||(a[476]=t("p",null,"subject to the algebraic constraint formed by the mass equation",-1)),t("mjx-container",p,[(l(),Q("svg",h,a[2]||(a[2]=[e('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"M"),t("mi",null,"u"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",null,"="),t("mn",null,"0.")])],-1))]),t("p",null,[a[8]||(a[8]=s("In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term ")),t("mjx-container",g,[(l(),Q("svg",k,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])])],-1))]),a[9]||(a[9]=s(", which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field ")),t("mjx-container",c,[(l(),Q("svg",u,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[10]||(a[10]=s(" stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following)."))]),t("p",null,[a[41]||(a[41]=s("Consider the interval ")),t("mjx-container",H,[(l(),Q("svg",w,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mi",null,"T"),t("mo",{stretchy:"false"},"]")])],-1))]),a[42]||(a[42]=s(" for some simulation time ")),t("mjx-container",y,[(l(),Q("svg",x,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[43]||(a[43]=s(". We will divide it into ")),t("mjx-container",b,[(l(),Q("svg",f,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"N")])],-1))]),a[44]||(a[44]=s(" sub-intervals ")),t("mjx-container",M,[(l(),Q("svg",L,a[17]||(a[17]=[e('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,","),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"]")])],-1))]),a[45]||(a[45]=s(" for ")),t("mjx-container",v,[(l(),Q("svg",E,a[19]||(a[19]=[e('',1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",null,"−"),t("mn",null,"1")])],-1))]),a[46]||(a[46]=s(", with ")),t("mjx-container",Z,[(l(),Q("svg",j,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"="),t("mn",null,"0")])],-1))]),a[47]||(a[47]=s(", ")),t("mjx-container",D,[(l(),Q("svg",S,a[23]||(a[23]=[e('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"T")])],-1))]),a[48]||(a[48]=s(", and increment ")),t("mjx-container",V,[(l(),Q("svg",I,a[25]||(a[25]=[e('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,"="),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,"−"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")])])],-1))]),a[49]||(a[49]=s(". We define ")),t("mjx-container",R,[(l(),Q("svg",F,a[27]||(a[27]=[e('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"≈"),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[50]||(a[50]=s(" as an approximation to the exact discrete velocity field ")),t("mjx-container",C,[(l(),Q("svg",N,a[29]||(a[29]=[e('',1)]))),a[30]||(a[30]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[51]||(a[51]=s(", with ")),t("mjx-container",K,[(l(),Q("svg",A,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[52]||(a[52]=s(" starting from the exact initial conditions. We say that the time integration scheme (definition of ")),t("mjx-container",B,[(l(),Q("svg",O,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")])])],-1))]),a[53]||(a[53]=s(") is accurate to the order ")),t("mjx-container",P,[(l(),Q("svg",G,a[35]||(a[35]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[36]||(a[36]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[54]||(a[54]=s(" if ")),t("mjx-container",z,[(l(),Q("svg",J,a[37]||(a[37]=[e('',1)]))),a[38]||(a[38]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[55]||(a[55]=s(" for all ")),t("mjx-container",U,[(l(),Q("svg",X,a[39]||(a[39]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[40]||(a[40]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[56]||(a[56]=s("."))]),a[477]||(a[477]=t("p",null,"IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.",-1)),a[478]||(a[478]=t("p",null,[s("The code is currently not adapted to time steppers from "),t("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/solvers/dae_solve/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl"),s(", but they may be integrated in the future.")],-1)),t("details",W,[t("summary",null,[a[57]||(a[57]=t("a",{id:"IncompressibleNavierStokes.AbstractODEMethod",href:"#IncompressibleNavierStokes.AbstractODEMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractODEMethod")],-1)),a[58]||(a[58]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[59]||(a[59]=e('
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    ',4))]),t("details",q,[t("summary",null,[a[60]||(a[60]=t("a",{id:"IncompressibleNavierStokes.ode_method_cache",href:"#IncompressibleNavierStokes.ode_method_cache"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ode_method_cache")],-1)),a[61]||(a[61]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[62]||(a[62]=e('
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    ',3))]),t("details",$,[t("summary",null,[a[63]||(a[63]=t("a",{id:"IncompressibleNavierStokes.runge_kutta_method",href:"#IncompressibleNavierStokes.runge_kutta_method"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.runge_kutta_method")],-1)),a[64]||(a[64]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[65]||(a[65]=e(`
    julia
    runge_kutta_method(
         A,
         b,
         c,
         r;
         T,
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    `,5))]),t("details",Y,[t("summary",null,[a[66]||(a[66]=t("a",{id:"IncompressibleNavierStokes.create_stepper",href:"#IncompressibleNavierStokes.create_stepper"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_stepper")],-1)),a[67]||(a[67]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[68]||(a[68]=e('
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    ',3))]),t("details",_,[t("summary",null,[a[69]||(a[69]=t("a",{id:"IncompressibleNavierStokes.timestep",href:"#IncompressibleNavierStokes.timestep"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep")],-1)),a[70]||(a[70]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[71]||(a[71]=e('
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    ',5))]),t("details",t1,[t("summary",null,[a[72]||(a[72]=t("a",{id:"IncompressibleNavierStokes.timestep!",href:"#IncompressibleNavierStokes.timestep!"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep!")],-1)),a[73]||(a[73]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[74]||(a[74]=e('
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    ',5))]),a[479]||(a[479]=t("h2",{id:"Adams-Bashforth-Crank-Nicolson-method",tabindex:"-1"},[s("Adams-Bashforth Crank-Nicolson method "),t("a",{class:"header-anchor",href:"#Adams-Bashforth-Crank-Nicolson-method","aria-label":'Permalink to "Adams-Bashforth Crank-Nicolson method {#Adams-Bashforth-Crank-Nicolson-method}"'},"​")],-1)),t("details",a1,[t("summary",null,[a[75]||(a[75]=t("a",{id:"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod",href:"#IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod")],-1)),a[76]||(a[76]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[151]||(a[151]=e('
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    ',4)),t("p",null,[a[91]||(a[91]=s("We here require that the time step ")),t("mjx-container",s1,[(l(),Q("svg",e1,a[77]||(a[77]=[e('',1)]))),a[78]||(a[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[92]||(a[92]=s(" is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field ")),t("mjx-container",Q1,[(l(),Q("svg",l1,a[79]||(a[79]=[e('',1)]))),a[80]||(a[80]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[93]||(a[93]=s(" at a time ")),t("mjx-container",T1,[(l(),Q("svg",i1,a[81]||(a[81]=[e('',1)]))),a[82]||(a[82]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[94]||(a[94]=s(" and its previous value ")),t("mjx-container",n1,[(l(),Q("svg",o1,a[83]||(a[83]=[e('',1)]))),a[84]||(a[84]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" at the previous time ")),t("mjx-container",r1,[(l(),Q("svg",d1,a[85]||(a[85]=[e('',1)]))),a[86]||(a[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[96]||(a[96]=s(", the predicted velocity field ")),t("mjx-container",m1,[(l(),Q("svg",p1,a[87]||(a[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[88]||(a[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[97]||(a[97]=s(" at the time ")),t("mjx-container",h1,[(l(),Q("svg",g1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[98]||(a[98]=s(" is defined by first computing a tentative velocity:"))]),t("mjx-container",k1,[(l(),Q("svg",c1,a[99]||(a[99]=[e('',1)]))),a[100]||(a[100]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"v"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])])])])],-1))]),t("p",null,[a[111]||(a[111]=s("where ")),t("mjx-container",u1,[(l(),Q("svg",H1,a[101]||(a[101]=[e('',1)]))),a[102]||(a[102]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"∈"),t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"1"),t("mo",{stretchy:"false"},"]")])],-1))]),a[112]||(a[112]=s(" is the Crank-Nicolson parameter (")),t("mjx-container",w1,[(l(),Q("svg",y1,a[103]||(a[103]=[e('',1)]))),a[104]||(a[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[113]||(a[113]=s(" for second order convergence), ")),t("mjx-container",b1,[(l(),Q("svg",x1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"3"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[114]||(a[114]=s(" are the Adams-Bashforth coefficients, and ")),t("mjx-container",f1,[(l(),Q("svg",M1,a[107]||(a[107]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[108]||(a[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[115]||(a[115]=s(" is a tentative velocity yet to be made divergence free. We can group the terms containing ")),t("mjx-container",L1,[(l(),Q("svg",v1,a[109]||(a[109]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[110]||(a[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[116]||(a[116]=s(" on the left hand side, to obtain"))]),t("mjx-container",E1,[(l(),Q("svg",Z1,a[117]||(a[117]=[e('',1)]))),a[118]||(a[118]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"v")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[125]||(a[125]=s("We can compute ")),t("mjx-container",j1,[(l(),Q("svg",D1,a[119]||(a[119]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[120]||(a[120]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[126]||(a[126]=s(" by inverting the positive definite matrix ")),t("mjx-container",S1,[(l(),Q("svg",V1,a[121]||(a[121]=[e('',1)]))),a[122]||(a[122]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[127]||(a[127]=s(" for the given right hand side using a suitable linear solver. Assuming ")),t("mjx-container",I1,[(l(),Q("svg",R1,a[123]||(a[123]=[e('',1)]))),a[124]||(a[124]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[128]||(a[128]=s(" is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping."))]),t("p",null,[a[131]||(a[131]=s("We then compute the pressure difference ")),t("mjx-container",F1,[(l(),Q("svg",C1,a[129]||(a[129]=[e('',1)]))),a[130]||(a[130]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[132]||(a[132]=s(" by solving"))]),t("mjx-container",N1,[(l(),Q("svg",K1,a[133]||(a[133]=[e('',1)]))),a[134]||(a[134]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mo",null,"−"),t("mi",null,"W"),t("mi",null,"M"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),t("p",null,[a[137]||(a[137]=s("after which a divergence free velocity ")),t("mjx-container",A1,[(l(),Q("svg",B1,a[135]||(a[135]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[136]||(a[136]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[138]||(a[138]=s(" can be enforced:"))]),t("mjx-container",O1,[(l(),Q("svg",P1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",null,"v"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),t("p",null,[a[147]||(a[147]=s("A first order accurate prediction of the corresponding pressure is ")),t("mjx-container",G1,[(l(),Q("svg",z1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",null,"="),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[148]||(a[148]=s(". However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure ")),t("mjx-container",J1,[(l(),Q("svg",U1,a[143]||(a[143]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[144]||(a[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[149]||(a[149]=s(" is then accurate to the same order as ")),t("mjx-container",X1,[(l(),Q("svg",W1,a[145]||(a[145]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[146]||(a[146]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[150]||(a[150]=s("."))]),a[152]||(a[152]=e('

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    ',3))]),a[480]||(a[480]=t("h2",{id:"One-leg-beta-method",tabindex:"-1"},[s("One-leg beta method "),t("a",{class:"header-anchor",href:"#One-leg-beta-method","aria-label":'Permalink to "One-leg beta method {#One-leg-beta-method}"'},"​")],-1)),t("details",q1,[t("summary",null,[a[153]||(a[153]=t("a",{id:"IncompressibleNavierStokes.OneLegMethod",href:"#IncompressibleNavierStokes.OneLegMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.OneLegMethod")],-1)),a[154]||(a[154]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[202]||(a[202]=e('
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    ',2)),t("p",null,[a[175]||(a[175]=s("We here require that the time step ")),t("mjx-container",$1,[(l(),Q("svg",Y1,a[155]||(a[155]=[e('',1)]))),a[156]||(a[156]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[176]||(a[176]=s(" is constant. Given the velocity ")),t("mjx-container",_1,[(l(),Q("svg",t2,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[177]||(a[177]=s(" and pressure ")),t("mjx-container",a2,[(l(),Q("svg",s2,a[159]||(a[159]=[e('',1)]))),a[160]||(a[160]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mn",null,"0")])])],-1))]),a[178]||(a[178]=s(" at the current time ")),t("mjx-container",e2,[(l(),Q("svg",Q2,a[161]||(a[161]=[e('',1)]))),a[162]||(a[162]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[179]||(a[179]=s(" and their previous values ")),t("mjx-container",l2,[(l(),Q("svg",T2,a[163]||(a[163]=[e('',1)]))),a[164]||(a[164]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[180]||(a[180]=s(" and ")),t("mjx-container",i2,[(l(),Q("svg",n2,a[165]||(a[165]=[e('',1)]))),a[166]||(a[166]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[181]||(a[181]=s(" at the time ")),t("mjx-container",o2,[(l(),Q("svg",r2,a[167]||(a[167]=[e('',1)]))),a[168]||(a[168]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[182]||(a[182]=s(', we start by computing the "offstep" values ')),t("mjx-container",d2,[(l(),Q("svg",m2,a[169]||(a[169]=[e('',1)]))),a[170]||(a[170]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"v"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[183]||(a[183]=s(" and ")),t("mjx-container",p2,[(l(),Q("svg",h2,a[171]||(a[171]=[e('',1)]))),a[172]||(a[172]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[184]||(a[184]=s(" for some ")),t("mjx-container",g2,[(l(),Q("svg",k2,a[173]||(a[173]=[e('',1)]))),a[174]||(a[174]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"β"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[185]||(a[185]=s("."))]),t("p",null,[a[188]||(a[188]=s("A tentative velocity field ")),t("mjx-container",c2,[(l(),Q("svg",u2,a[186]||(a[186]=[e('',1)]))),a[187]||(a[187]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])])])],-1))]),a[189]||(a[189]=s(" is then computed as follows:"))]),t("mjx-container",H2,[(l(),Q("svg",w2,a[190]||(a[190]=[e('',1)]))),a[191]||(a[191]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"2"),t("mi",null,"β"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"β"),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"v"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"Q"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[a[194]||(a[194]=s("A pressure correction ")),t("mjx-container",y2,[(l(),Q("svg",b2,a[192]||(a[192]=[e('',1)]))),a[193]||(a[193]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[195]||(a[195]=s(" is obtained by solving the Poisson equation"))]),t("mjx-container",x2,[(l(),Q("svg",f2,a[196]||(a[196]=[e('',1)]))),a[197]||(a[197]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"W"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),a[203]||(a[203]=t("p",null,"Finally, the divergence free velocity field is given by",-1)),t("mjx-container",M2,[(l(),Q("svg",L2,a[198]||(a[198]=[e('',1)]))),a[199]||(a[199]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")]),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,",")])],-1))]),a[204]||(a[204]=t("p",null,"while the second order accurate pressure is given by",-1)),t("mjx-container",v2,[(l(),Q("svg",E2,a[200]||(a[200]=[e('',1)]))),a[201]||(a[201]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"p"),t("mo",null,"="),t("mn",null,"2"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"4"),t("mn",null,"3")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,".")])],-1))]),a[205]||(a[205]=t("p",null,[t("strong",null,"Fields")],-1)),a[206]||(a[206]=t("ul",null,[t("li",null,[t("p",null,[t("code",null,"β")])]),t("li",null,[t("p",null,[t("code",null,"p_add_solve")])]),t("li",null,[t("p",null,[t("code",null,"method_startup")])])],-1)),a[207]||(a[207]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/time_steppers/methods.jl#L90",target:"_blank",rel:"noreferrer"},"source")],-1))]),a[481]||(a[481]=t("h2",{id:"Runge-Kutta-methods",tabindex:"-1"},[s("Runge-Kutta methods "),t("a",{class:"header-anchor",href:"#Runge-Kutta-methods","aria-label":'Permalink to "Runge-Kutta methods {#Runge-Kutta-methods}"'},"​")],-1)),t("details",Z2,[t("summary",null,[a[208]||(a[208]=t("a",{id:"IncompressibleNavierStokes.AbstractRungeKuttaMethod",href:"#IncompressibleNavierStokes.AbstractRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractRungeKuttaMethod")],-1)),a[209]||(a[209]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[210]||(a[210]=e('
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    ',4))]),t("details",j2,[t("summary",null,[a[211]||(a[211]=t("a",{id:"IncompressibleNavierStokes.ExplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ExplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ExplicitRungeKuttaMethod")],-1)),a[212]||(a[212]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[313]||(a[313]=e('
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    ',2)),t("p",null,[a[229]||(a[229]=s("Consider the velocity field ")),t("mjx-container",D2,[(l(),Q("svg",S2,a[213]||(a[213]=[e('',1)]))),a[214]||(a[214]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[230]||(a[230]=s(" at a certain time ")),t("mjx-container",V2,[(l(),Q("svg",I2,a[215]||(a[215]=[e('',1)]))),a[216]||(a[216]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[231]||(a[231]=s(". We will now perform one time step to ")),t("mjx-container",R2,[(l(),Q("svg",F2,a[217]||(a[217]=[e('',1)]))),a[218]||(a[218]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[232]||(a[232]=s(". For explicit Runge-Kutta methods, this time step is divided into ")),t("mjx-container",C2,[(l(),Q("svg",N2,a[219]||(a[219]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D460",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z",style:{"stroke-width":"3"}})])])],-1)]))),a[220]||(a[220]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"s")])],-1))]),a[233]||(a[233]=s(" sub-steps ")),t("mjx-container",K2,[(l(),Q("svg",A2,a[221]||(a[221]=[e('',1)]))),a[222]||(a[222]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[234]||(a[234]=s(" with increment ")),t("mjx-container",B2,[(l(),Q("svg",O2,a[223]||(a[223]=[e('',1)]))),a[224]||(a[224]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[235]||(a[235]=s(". The final substep performs the full time step ")),t("mjx-container",P2,[(l(),Q("svg",G2,a[225]||(a[225]=[e('',1)]))),a[226]||(a[226]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[236]||(a[236]=s(" such that ")),t("mjx-container",z2,[(l(),Q("svg",J2,a[227]||(a[227]=[e('',1)]))),a[228]||(a[228]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"t")])],-1))]),a[237]||(a[237]=s("."))]),t("p",null,[a[244]||(a[244]=s("For ")),t("mjx-container",U2,[(l(),Q("svg",X2,a[238]||(a[238]=[e('',1)]))),a[239]||(a[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"s")])],-1))]),a[245]||(a[245]=s(", the intermediate velocity ")),t("mjx-container",W2,[(l(),Q("svg",q2,a[240]||(a[240]=[e('',1)]))),a[241]||(a[241]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[246]||(a[246]=s(" and pressure ")),t("mjx-container",$2,[(l(),Q("svg",Y2,a[242]||(a[242]=[e('',1)]))),a[243]||(a[243]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])])],-1))]),a[247]||(a[247]=s(" are computed as follows:"))]),t("mjx-container",_2,[(l(),Q("svg",t3,a[248]||(a[248]=[e('',1)]))),a[249]||(a[249]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"k"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")])])]),t("mtr",null,[t("mtd",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mi",null,"M"),t("mfrac",null,[t("mn",null,"1"),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")])]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")]),t("mo",null,"+"),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[254]||(a[254]=s("where ")),t("mjx-container",a3,[(l(),Q("svg",s3,a[250]||(a[250]=[e('',1)]))),a[251]||(a[251]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[255]||(a[255]=s(" are the Butcher tableau coefficients of the RK-method, with the convention ")),t("mjx-container",e3,[(l(),Q("svg",Q3,a[252]||(a[252]=[e('',1)]))),a[253]||(a[253]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[256]||(a[256]=s("."))]),t("p",null,[a[285]||(a[285]=s("Finally, we return ")),t("mjx-container",l3,[(l(),Q("svg",T3,a[257]||(a[257]=[e('',1)]))),a[258]||(a[258]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")])])],-1))]),a[286]||(a[286]=s(". If ")),t("mjx-container",i3,[(l(),Q("svg",n3,a[259]||(a[259]=[e('',1)]))),a[260]||(a[260]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[287]||(a[287]=s(", we get the accuracy ")),t("mjx-container",o3,[(l(),Q("svg",r3,a[261]||(a[261]=[e('',1)]))),a[262]||(a[262]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[288]||(a[288]=s(", where ")),t("mjx-container",d3,[(l(),Q("svg",m3,a[263]||(a[263]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[264]||(a[264]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[289]||(a[289]=s(" is the order of the RK-method. If we perform ")),t("mjx-container",p3,[(l(),Q("svg",h3,a[265]||(a[265]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[266]||(a[266]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[290]||(a[290]=s(" RK time steps instead of one, starting at exact initial conditions ")),t("mjx-container",g3,[(l(),Q("svg",k3,a[267]||(a[267]=[e('',1)]))),a[268]||(a[268]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[291]||(a[291]=s(", then ")),t("mjx-container",c3,[(l(),Q("svg",u3,a[269]||(a[269]=[e('',1)]))),a[270]||(a[270]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[292]||(a[292]=s(" for all ")),t("mjx-container",H3,[(l(),Q("svg",w3,a[271]||(a[271]=[e('',1)]))),a[272]||(a[272]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),a[293]||(a[293]=s(". Note that for a given ")),t("mjx-container",y3,[(l(),Q("svg",b3,a[273]||(a[273]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[274]||(a[274]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[294]||(a[294]=s(", the corresponding pressure ")),t("mjx-container",x3,[(l(),Q("svg",f3,a[275]||(a[275]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[276]||(a[276]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[295]||(a[295]=s(" can be calculated to the same accuracy as ")),t("mjx-container",M3,[(l(),Q("svg",L3,a[277]||(a[277]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[278]||(a[278]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[296]||(a[296]=s(" by doing an additional pressure projection after each outer time step ")),t("mjx-container",v3,[(l(),Q("svg",E3,a[279]||(a[279]=[e('',1)]))),a[280]||(a[280]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[297]||(a[297]=s(" (if we know ")),t("mjx-container",Z3,[(l(),Q("svg",j3,a[281]||(a[281]=[e('',1)]))),a[282]||(a[282]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[298]||(a[298]=s("), or to first order accuracy by simply returning ")),t("mjx-container",D3,[(l(),Q("svg",S3,a[283]||(a[283]=[e('',1)]))),a[284]||(a[284]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"s")])])],-1))]),a[299]||(a[299]=s("."))]),t("p",null,[a[308]||(a[308]=s("Note that each of the sub-step velocities ")),t("mjx-container",V3,[(l(),Q("svg",I3,a[300]||(a[300]=[e('',1)]))),a[301]||(a[301]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[309]||(a[309]=s(" is divergence free, after projecting the tentative velocities ")),t("mjx-container",R3,[(l(),Q("svg",F3,a[302]||(a[302]=[e('',1)]))),a[303]||(a[303]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])])],-1))]),a[310]||(a[310]=s(". This is ensured due to the judiciously chosen replacement of ")),t("mjx-container",C3,[(l(),Q("svg",N3,a[304]||(a[304]=[e('',1)]))),a[305]||(a[305]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")])],-1))]),a[311]||(a[311]=s(" with ")),t("mjx-container",K3,[(l(),Q("svg",A3,a[306]||(a[306]=[e('',1)]))),a[307]||(a[307]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[312]||(a[312]=s(". The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors."))]),a[314]||(a[314]=e('

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    ',3))]),t("details",B3,[t("summary",null,[a[315]||(a[315]=t("a",{id:"IncompressibleNavierStokes.ImplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ImplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ImplicitRungeKuttaMethod")],-1)),a[316]||(a[316]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[317]||(a[317]=e('
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    ',7))]),t("details",O3,[t("summary",null,[a[318]||(a[318]=t("a",{id:"IncompressibleNavierStokes.RKMethods",href:"#IncompressibleNavierStokes.RKMethods"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods")],-1)),a[319]||(a[319]=s()),i(T,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[320]||(a[320]=e('

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    ',5))]),t("details",P3,[t("summary",null,[a[321]||(a[321]=t("a",{id:"IncompressibleNavierStokes.LMWray3",href:"#IncompressibleNavierStokes.LMWray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.LMWray3")],-1)),a[322]||(a[322]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[323]||(a[323]=e('
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    ',4))]),a[482]||(a[482]=t("h3",{id:"Explicit-Methods",tabindex:"-1"},[s("Explicit Methods "),t("a",{class:"header-anchor",href:"#Explicit-Methods","aria-label":'Permalink to "Explicit Methods {#Explicit-Methods}"'},"​")],-1)),t("details",G3,[t("summary",null,[a[324]||(a[324]=t("a",{id:"IncompressibleNavierStokes.RKMethods.FE11",href:"#IncompressibleNavierStokes.RKMethods.FE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.FE11")],-1)),a[325]||(a[325]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[326]||(a[326]=e(`
    julia
    FE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    `,5))]),t("details",Y,[t("summary",null,[a[66]||(a[66]=t("a",{id:"IncompressibleNavierStokes.create_stepper",href:"#IncompressibleNavierStokes.create_stepper"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_stepper")],-1)),a[67]||(a[67]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[68]||(a[68]=e('
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    ',3))]),t("details",_,[t("summary",null,[a[69]||(a[69]=t("a",{id:"IncompressibleNavierStokes.timestep",href:"#IncompressibleNavierStokes.timestep"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep")],-1)),a[70]||(a[70]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[71]||(a[71]=e('
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    ',5))]),t("details",t1,[t("summary",null,[a[72]||(a[72]=t("a",{id:"IncompressibleNavierStokes.timestep!",href:"#IncompressibleNavierStokes.timestep!"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep!")],-1)),a[73]||(a[73]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[74]||(a[74]=e('
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    ',5))]),a[479]||(a[479]=t("h2",{id:"Adams-Bashforth-Crank-Nicolson-method",tabindex:"-1"},[s("Adams-Bashforth Crank-Nicolson method "),t("a",{class:"header-anchor",href:"#Adams-Bashforth-Crank-Nicolson-method","aria-label":'Permalink to "Adams-Bashforth Crank-Nicolson method {#Adams-Bashforth-Crank-Nicolson-method}"'},"​")],-1)),t("details",a1,[t("summary",null,[a[75]||(a[75]=t("a",{id:"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod",href:"#IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod")],-1)),a[76]||(a[76]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[151]||(a[151]=e('
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    ',4)),t("p",null,[a[91]||(a[91]=s("We here require that the time step ")),t("mjx-container",s1,[(l(),Q("svg",e1,a[77]||(a[77]=[e('',1)]))),a[78]||(a[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[92]||(a[92]=s(" is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field ")),t("mjx-container",Q1,[(l(),Q("svg",l1,a[79]||(a[79]=[e('',1)]))),a[80]||(a[80]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[93]||(a[93]=s(" at a time ")),t("mjx-container",T1,[(l(),Q("svg",i1,a[81]||(a[81]=[e('',1)]))),a[82]||(a[82]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[94]||(a[94]=s(" and its previous value ")),t("mjx-container",n1,[(l(),Q("svg",o1,a[83]||(a[83]=[e('',1)]))),a[84]||(a[84]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" at the previous time ")),t("mjx-container",r1,[(l(),Q("svg",d1,a[85]||(a[85]=[e('',1)]))),a[86]||(a[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[96]||(a[96]=s(", the predicted velocity field ")),t("mjx-container",m1,[(l(),Q("svg",p1,a[87]||(a[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[88]||(a[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[97]||(a[97]=s(" at the time ")),t("mjx-container",h1,[(l(),Q("svg",g1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[98]||(a[98]=s(" is defined by first computing a tentative velocity:"))]),t("mjx-container",k1,[(l(),Q("svg",c1,a[99]||(a[99]=[e('',1)]))),a[100]||(a[100]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"v"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])])])])],-1))]),t("p",null,[a[111]||(a[111]=s("where ")),t("mjx-container",u1,[(l(),Q("svg",H1,a[101]||(a[101]=[e('',1)]))),a[102]||(a[102]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"∈"),t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"1"),t("mo",{stretchy:"false"},"]")])],-1))]),a[112]||(a[112]=s(" is the Crank-Nicolson parameter (")),t("mjx-container",w1,[(l(),Q("svg",y1,a[103]||(a[103]=[e('',1)]))),a[104]||(a[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[113]||(a[113]=s(" for second order convergence), ")),t("mjx-container",x1,[(l(),Q("svg",b1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"3"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[114]||(a[114]=s(" are the Adams-Bashforth coefficients, and ")),t("mjx-container",f1,[(l(),Q("svg",M1,a[107]||(a[107]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[108]||(a[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[115]||(a[115]=s(" is a tentative velocity yet to be made divergence free. We can group the terms containing ")),t("mjx-container",L1,[(l(),Q("svg",v1,a[109]||(a[109]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[110]||(a[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[116]||(a[116]=s(" on the left hand side, to obtain"))]),t("mjx-container",E1,[(l(),Q("svg",Z1,a[117]||(a[117]=[e('',1)]))),a[118]||(a[118]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"v")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[125]||(a[125]=s("We can compute ")),t("mjx-container",j1,[(l(),Q("svg",D1,a[119]||(a[119]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[120]||(a[120]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[126]||(a[126]=s(" by inverting the positive definite matrix ")),t("mjx-container",S1,[(l(),Q("svg",V1,a[121]||(a[121]=[e('',1)]))),a[122]||(a[122]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[127]||(a[127]=s(" for the given right hand side using a suitable linear solver. Assuming ")),t("mjx-container",I1,[(l(),Q("svg",R1,a[123]||(a[123]=[e('',1)]))),a[124]||(a[124]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[128]||(a[128]=s(" is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping."))]),t("p",null,[a[131]||(a[131]=s("We then compute the pressure difference ")),t("mjx-container",F1,[(l(),Q("svg",C1,a[129]||(a[129]=[e('',1)]))),a[130]||(a[130]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[132]||(a[132]=s(" by solving"))]),t("mjx-container",N1,[(l(),Q("svg",K1,a[133]||(a[133]=[e('',1)]))),a[134]||(a[134]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mo",null,"−"),t("mi",null,"W"),t("mi",null,"M"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),t("p",null,[a[137]||(a[137]=s("after which a divergence free velocity ")),t("mjx-container",A1,[(l(),Q("svg",B1,a[135]||(a[135]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[136]||(a[136]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[138]||(a[138]=s(" can be enforced:"))]),t("mjx-container",O1,[(l(),Q("svg",P1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",null,"v"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),t("p",null,[a[147]||(a[147]=s("A first order accurate prediction of the corresponding pressure is ")),t("mjx-container",G1,[(l(),Q("svg",z1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",null,"="),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[148]||(a[148]=s(". However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure ")),t("mjx-container",J1,[(l(),Q("svg",U1,a[143]||(a[143]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[144]||(a[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[149]||(a[149]=s(" is then accurate to the same order as ")),t("mjx-container",X1,[(l(),Q("svg",W1,a[145]||(a[145]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[146]||(a[146]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[150]||(a[150]=s("."))]),a[152]||(a[152]=e('

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    ',3))]),a[480]||(a[480]=t("h2",{id:"One-leg-beta-method",tabindex:"-1"},[s("One-leg beta method "),t("a",{class:"header-anchor",href:"#One-leg-beta-method","aria-label":'Permalink to "One-leg beta method {#One-leg-beta-method}"'},"​")],-1)),t("details",q1,[t("summary",null,[a[153]||(a[153]=t("a",{id:"IncompressibleNavierStokes.OneLegMethod",href:"#IncompressibleNavierStokes.OneLegMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.OneLegMethod")],-1)),a[154]||(a[154]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[202]||(a[202]=e('
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    ',2)),t("p",null,[a[175]||(a[175]=s("We here require that the time step ")),t("mjx-container",$1,[(l(),Q("svg",Y1,a[155]||(a[155]=[e('',1)]))),a[156]||(a[156]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[176]||(a[176]=s(" is constant. Given the velocity ")),t("mjx-container",_1,[(l(),Q("svg",t2,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[177]||(a[177]=s(" and pressure ")),t("mjx-container",a2,[(l(),Q("svg",s2,a[159]||(a[159]=[e('',1)]))),a[160]||(a[160]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mn",null,"0")])])],-1))]),a[178]||(a[178]=s(" at the current time ")),t("mjx-container",e2,[(l(),Q("svg",Q2,a[161]||(a[161]=[e('',1)]))),a[162]||(a[162]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[179]||(a[179]=s(" and their previous values ")),t("mjx-container",l2,[(l(),Q("svg",T2,a[163]||(a[163]=[e('',1)]))),a[164]||(a[164]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[180]||(a[180]=s(" and ")),t("mjx-container",i2,[(l(),Q("svg",n2,a[165]||(a[165]=[e('',1)]))),a[166]||(a[166]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[181]||(a[181]=s(" at the time ")),t("mjx-container",o2,[(l(),Q("svg",r2,a[167]||(a[167]=[e('',1)]))),a[168]||(a[168]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[182]||(a[182]=s(', we start by computing the "offstep" values ')),t("mjx-container",d2,[(l(),Q("svg",m2,a[169]||(a[169]=[e('',1)]))),a[170]||(a[170]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"v"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[183]||(a[183]=s(" and ")),t("mjx-container",p2,[(l(),Q("svg",h2,a[171]||(a[171]=[e('',1)]))),a[172]||(a[172]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[184]||(a[184]=s(" for some ")),t("mjx-container",g2,[(l(),Q("svg",k2,a[173]||(a[173]=[e('',1)]))),a[174]||(a[174]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"β"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[185]||(a[185]=s("."))]),t("p",null,[a[188]||(a[188]=s("A tentative velocity field ")),t("mjx-container",c2,[(l(),Q("svg",u2,a[186]||(a[186]=[e('',1)]))),a[187]||(a[187]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])])])],-1))]),a[189]||(a[189]=s(" is then computed as follows:"))]),t("mjx-container",H2,[(l(),Q("svg",w2,a[190]||(a[190]=[e('',1)]))),a[191]||(a[191]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"2"),t("mi",null,"β"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"β"),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"v"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"Q"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[a[194]||(a[194]=s("A pressure correction ")),t("mjx-container",y2,[(l(),Q("svg",x2,a[192]||(a[192]=[e('',1)]))),a[193]||(a[193]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[195]||(a[195]=s(" is obtained by solving the Poisson equation"))]),t("mjx-container",b2,[(l(),Q("svg",f2,a[196]||(a[196]=[e('',1)]))),a[197]||(a[197]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"W"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),a[203]||(a[203]=t("p",null,"Finally, the divergence free velocity field is given by",-1)),t("mjx-container",M2,[(l(),Q("svg",L2,a[198]||(a[198]=[e('',1)]))),a[199]||(a[199]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")]),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,",")])],-1))]),a[204]||(a[204]=t("p",null,"while the second order accurate pressure is given by",-1)),t("mjx-container",v2,[(l(),Q("svg",E2,a[200]||(a[200]=[e('',1)]))),a[201]||(a[201]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"p"),t("mo",null,"="),t("mn",null,"2"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"4"),t("mn",null,"3")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,".")])],-1))]),a[205]||(a[205]=t("p",null,[t("strong",null,"Fields")],-1)),a[206]||(a[206]=t("ul",null,[t("li",null,[t("p",null,[t("code",null,"β")])]),t("li",null,[t("p",null,[t("code",null,"p_add_solve")])]),t("li",null,[t("p",null,[t("code",null,"method_startup")])])],-1)),a[207]||(a[207]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/time_steppers/methods.jl#L90",target:"_blank",rel:"noreferrer"},"source")],-1))]),a[481]||(a[481]=t("h2",{id:"Runge-Kutta-methods",tabindex:"-1"},[s("Runge-Kutta methods "),t("a",{class:"header-anchor",href:"#Runge-Kutta-methods","aria-label":'Permalink to "Runge-Kutta methods {#Runge-Kutta-methods}"'},"​")],-1)),t("details",Z2,[t("summary",null,[a[208]||(a[208]=t("a",{id:"IncompressibleNavierStokes.AbstractRungeKuttaMethod",href:"#IncompressibleNavierStokes.AbstractRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractRungeKuttaMethod")],-1)),a[209]||(a[209]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[210]||(a[210]=e('
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    ',4))]),t("details",j2,[t("summary",null,[a[211]||(a[211]=t("a",{id:"IncompressibleNavierStokes.ExplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ExplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ExplicitRungeKuttaMethod")],-1)),a[212]||(a[212]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[313]||(a[313]=e('
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    ',2)),t("p",null,[a[229]||(a[229]=s("Consider the velocity field ")),t("mjx-container",D2,[(l(),Q("svg",S2,a[213]||(a[213]=[e('',1)]))),a[214]||(a[214]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[230]||(a[230]=s(" at a certain time ")),t("mjx-container",V2,[(l(),Q("svg",I2,a[215]||(a[215]=[e('',1)]))),a[216]||(a[216]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[231]||(a[231]=s(". We will now perform one time step to ")),t("mjx-container",R2,[(l(),Q("svg",F2,a[217]||(a[217]=[e('',1)]))),a[218]||(a[218]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[232]||(a[232]=s(". For explicit Runge-Kutta methods, this time step is divided into ")),t("mjx-container",C2,[(l(),Q("svg",N2,a[219]||(a[219]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D460",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z",style:{"stroke-width":"3"}})])])],-1)]))),a[220]||(a[220]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"s")])],-1))]),a[233]||(a[233]=s(" sub-steps ")),t("mjx-container",K2,[(l(),Q("svg",A2,a[221]||(a[221]=[e('',1)]))),a[222]||(a[222]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[234]||(a[234]=s(" with increment ")),t("mjx-container",B2,[(l(),Q("svg",O2,a[223]||(a[223]=[e('',1)]))),a[224]||(a[224]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[235]||(a[235]=s(". The final substep performs the full time step ")),t("mjx-container",P2,[(l(),Q("svg",G2,a[225]||(a[225]=[e('',1)]))),a[226]||(a[226]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[236]||(a[236]=s(" such that ")),t("mjx-container",z2,[(l(),Q("svg",J2,a[227]||(a[227]=[e('',1)]))),a[228]||(a[228]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"t")])],-1))]),a[237]||(a[237]=s("."))]),t("p",null,[a[244]||(a[244]=s("For ")),t("mjx-container",U2,[(l(),Q("svg",X2,a[238]||(a[238]=[e('',1)]))),a[239]||(a[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"s")])],-1))]),a[245]||(a[245]=s(", the intermediate velocity ")),t("mjx-container",W2,[(l(),Q("svg",q2,a[240]||(a[240]=[e('',1)]))),a[241]||(a[241]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[246]||(a[246]=s(" and pressure ")),t("mjx-container",$2,[(l(),Q("svg",Y2,a[242]||(a[242]=[e('',1)]))),a[243]||(a[243]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])])],-1))]),a[247]||(a[247]=s(" are computed as follows:"))]),t("mjx-container",_2,[(l(),Q("svg",t3,a[248]||(a[248]=[e('',1)]))),a[249]||(a[249]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"k"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")])])]),t("mtr",null,[t("mtd",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mi",null,"M"),t("mfrac",null,[t("mn",null,"1"),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")])]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")]),t("mo",null,"+"),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[254]||(a[254]=s("where ")),t("mjx-container",a3,[(l(),Q("svg",s3,a[250]||(a[250]=[e('',1)]))),a[251]||(a[251]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[255]||(a[255]=s(" are the Butcher tableau coefficients of the RK-method, with the convention ")),t("mjx-container",e3,[(l(),Q("svg",Q3,a[252]||(a[252]=[e('',1)]))),a[253]||(a[253]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[256]||(a[256]=s("."))]),t("p",null,[a[285]||(a[285]=s("Finally, we return ")),t("mjx-container",l3,[(l(),Q("svg",T3,a[257]||(a[257]=[e('',1)]))),a[258]||(a[258]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")])])],-1))]),a[286]||(a[286]=s(". If ")),t("mjx-container",i3,[(l(),Q("svg",n3,a[259]||(a[259]=[e('',1)]))),a[260]||(a[260]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[287]||(a[287]=s(", we get the accuracy ")),t("mjx-container",o3,[(l(),Q("svg",r3,a[261]||(a[261]=[e('',1)]))),a[262]||(a[262]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[288]||(a[288]=s(", where ")),t("mjx-container",d3,[(l(),Q("svg",m3,a[263]||(a[263]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[264]||(a[264]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[289]||(a[289]=s(" is the order of the RK-method. If we perform ")),t("mjx-container",p3,[(l(),Q("svg",h3,a[265]||(a[265]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[266]||(a[266]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[290]||(a[290]=s(" RK time steps instead of one, starting at exact initial conditions ")),t("mjx-container",g3,[(l(),Q("svg",k3,a[267]||(a[267]=[e('',1)]))),a[268]||(a[268]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[291]||(a[291]=s(", then ")),t("mjx-container",c3,[(l(),Q("svg",u3,a[269]||(a[269]=[e('',1)]))),a[270]||(a[270]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[292]||(a[292]=s(" for all ")),t("mjx-container",H3,[(l(),Q("svg",w3,a[271]||(a[271]=[e('',1)]))),a[272]||(a[272]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),a[293]||(a[293]=s(". Note that for a given ")),t("mjx-container",y3,[(l(),Q("svg",x3,a[273]||(a[273]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[274]||(a[274]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[294]||(a[294]=s(", the corresponding pressure ")),t("mjx-container",b3,[(l(),Q("svg",f3,a[275]||(a[275]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[276]||(a[276]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[295]||(a[295]=s(" can be calculated to the same accuracy as ")),t("mjx-container",M3,[(l(),Q("svg",L3,a[277]||(a[277]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[278]||(a[278]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[296]||(a[296]=s(" by doing an additional pressure projection after each outer time step ")),t("mjx-container",v3,[(l(),Q("svg",E3,a[279]||(a[279]=[e('',1)]))),a[280]||(a[280]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[297]||(a[297]=s(" (if we know ")),t("mjx-container",Z3,[(l(),Q("svg",j3,a[281]||(a[281]=[e('',1)]))),a[282]||(a[282]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[298]||(a[298]=s("), or to first order accuracy by simply returning ")),t("mjx-container",D3,[(l(),Q("svg",S3,a[283]||(a[283]=[e('',1)]))),a[284]||(a[284]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"s")])])],-1))]),a[299]||(a[299]=s("."))]),t("p",null,[a[308]||(a[308]=s("Note that each of the sub-step velocities ")),t("mjx-container",V3,[(l(),Q("svg",I3,a[300]||(a[300]=[e('',1)]))),a[301]||(a[301]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[309]||(a[309]=s(" is divergence free, after projecting the tentative velocities ")),t("mjx-container",R3,[(l(),Q("svg",F3,a[302]||(a[302]=[e('',1)]))),a[303]||(a[303]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])])],-1))]),a[310]||(a[310]=s(". This is ensured due to the judiciously chosen replacement of ")),t("mjx-container",C3,[(l(),Q("svg",N3,a[304]||(a[304]=[e('',1)]))),a[305]||(a[305]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")])],-1))]),a[311]||(a[311]=s(" with ")),t("mjx-container",K3,[(l(),Q("svg",A3,a[306]||(a[306]=[e('',1)]))),a[307]||(a[307]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[312]||(a[312]=s(". The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors."))]),a[314]||(a[314]=e('

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    ',3))]),t("details",B3,[t("summary",null,[a[315]||(a[315]=t("a",{id:"IncompressibleNavierStokes.ImplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ImplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ImplicitRungeKuttaMethod")],-1)),a[316]||(a[316]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[317]||(a[317]=e('
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    ',7))]),t("details",O3,[t("summary",null,[a[318]||(a[318]=t("a",{id:"IncompressibleNavierStokes.RKMethods",href:"#IncompressibleNavierStokes.RKMethods"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods")],-1)),a[319]||(a[319]=s()),i(T,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[320]||(a[320]=e('

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    ',5))]),t("details",P3,[t("summary",null,[a[321]||(a[321]=t("a",{id:"IncompressibleNavierStokes.LMWray3",href:"#IncompressibleNavierStokes.LMWray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.LMWray3")],-1)),a[322]||(a[322]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[323]||(a[323]=e('
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    ',4))]),a[482]||(a[482]=t("h3",{id:"Explicit-Methods",tabindex:"-1"},[s("Explicit Methods "),t("a",{class:"header-anchor",href:"#Explicit-Methods","aria-label":'Permalink to "Explicit Methods {#Explicit-Methods}"'},"​")],-1)),t("details",G3,[t("summary",null,[a[324]||(a[324]=t("a",{id:"IncompressibleNavierStokes.RKMethods.FE11",href:"#IncompressibleNavierStokes.RKMethods.FE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.FE11")],-1)),a[325]||(a[325]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[326]||(a[326]=e(`
    julia
    FE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    `,3))]),t("details",z3,[t("summary",null,[a[327]||(a[327]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP22",href:"#IncompressibleNavierStokes.RKMethods.SSP22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP22")],-1)),a[328]||(a[328]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[329]||(a[329]=e(`
    julia
    SSP22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    `,3))]),t("details",z3,[t("summary",null,[a[327]||(a[327]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP22",href:"#IncompressibleNavierStokes.RKMethods.SSP22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP22")],-1)),a[328]||(a[328]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[329]||(a[329]=e(`
    julia
    SSP22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    `,3))]),t("details",J3,[t("summary",null,[a[330]||(a[330]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP42",href:"#IncompressibleNavierStokes.RKMethods.SSP42"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP42")],-1)),a[331]||(a[331]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[332]||(a[332]=e(`
    julia
    SSP42(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    `,3))]),t("details",J3,[t("summary",null,[a[330]||(a[330]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP42",href:"#IncompressibleNavierStokes.RKMethods.SSP42"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP42")],-1)),a[331]||(a[331]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[332]||(a[332]=e(`
    julia
    SSP42(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    `,3))]),t("details",U3,[t("summary",null,[a[333]||(a[333]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP33",href:"#IncompressibleNavierStokes.RKMethods.SSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP33")],-1)),a[334]||(a[334]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[335]||(a[335]=e(`
    julia
    SSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    `,3))]),t("details",U3,[t("summary",null,[a[333]||(a[333]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP33",href:"#IncompressibleNavierStokes.RKMethods.SSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP33")],-1)),a[334]||(a[334]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[335]||(a[335]=e(`
    julia
    SSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    `,3))]),t("details",X3,[t("summary",null,[a[336]||(a[336]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP43",href:"#IncompressibleNavierStokes.RKMethods.SSP43"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP43")],-1)),a[337]||(a[337]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[338]||(a[338]=e(`
    julia
    SSP43(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    `,3))]),t("details",X3,[t("summary",null,[a[336]||(a[336]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP43",href:"#IncompressibleNavierStokes.RKMethods.SSP43"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP43")],-1)),a[337]||(a[337]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[338]||(a[338]=e(`
    julia
    SSP43(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    `,3))]),t("details",W3,[t("summary",null,[a[339]||(a[339]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP104",href:"#IncompressibleNavierStokes.RKMethods.SSP104"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP104")],-1)),a[340]||(a[340]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[341]||(a[341]=e(`
    julia
    SSP104(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    `,3))]),t("details",W3,[t("summary",null,[a[339]||(a[339]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP104",href:"#IncompressibleNavierStokes.RKMethods.SSP104"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP104")],-1)),a[340]||(a[340]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[341]||(a[341]=e(`
    julia
    SSP104(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    `,3))]),t("details",q3,[t("summary",null,[a[342]||(a[342]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs2",href:"#IncompressibleNavierStokes.RKMethods.rSSPs2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs2")],-1)),a[343]||(a[343]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[344]||(a[344]=e(`
    julia
    rSSPs2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    `,3))]),t("details",q3,[t("summary",null,[a[342]||(a[342]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs2",href:"#IncompressibleNavierStokes.RKMethods.rSSPs2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs2")],-1)),a[343]||(a[343]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[344]||(a[344]=e(`
    julia
    rSSPs2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    `,3))]),t("details",$3,[t("summary",null,[a[345]||(a[345]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs3",href:"#IncompressibleNavierStokes.RKMethods.rSSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs3")],-1)),a[346]||(a[346]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[347]||(a[347]=e(`
    julia
    rSSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    `,3))]),t("details",$3,[t("summary",null,[a[345]||(a[345]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs3",href:"#IncompressibleNavierStokes.RKMethods.rSSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs3")],-1)),a[346]||(a[346]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[347]||(a[347]=e(`
    julia
    rSSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    `,3))]),t("details",Y3,[t("summary",null,[a[348]||(a[348]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Wray3",href:"#IncompressibleNavierStokes.RKMethods.Wray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Wray3")],-1)),a[349]||(a[349]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[350]||(a[350]=e(`
    julia
    Wray3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    `,3))]),t("details",Y3,[t("summary",null,[a[348]||(a[348]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Wray3",href:"#IncompressibleNavierStokes.RKMethods.Wray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Wray3")],-1)),a[349]||(a[349]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[350]||(a[350]=e(`
    julia
    Wray3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    `,3))]),t("details",_3,[t("summary",null,[a[351]||(a[351]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK56",href:"#IncompressibleNavierStokes.RKMethods.RK56"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK56")],-1)),a[352]||(a[352]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[353]||(a[353]=e(`
    julia
    RK56(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    `,3))]),t("details",_3,[t("summary",null,[a[351]||(a[351]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK56",href:"#IncompressibleNavierStokes.RKMethods.RK56"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK56")],-1)),a[352]||(a[352]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[353]||(a[353]=e(`
    julia
    RK56(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    `,3))]),t("details",t4,[t("summary",null,[a[354]||(a[354]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DOPRI6",href:"#IncompressibleNavierStokes.RKMethods.DOPRI6"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DOPRI6")],-1)),a[355]||(a[355]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[356]||(a[356]=e(`
    julia
    DOPRI6(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    `,3))]),t("details",t4,[t("summary",null,[a[354]||(a[354]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DOPRI6",href:"#IncompressibleNavierStokes.RKMethods.DOPRI6"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DOPRI6")],-1)),a[355]||(a[355]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[356]||(a[356]=e(`
    julia
    DOPRI6(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    `,3))]),a[483]||(a[483]=t("h3",{id:"Implicit-Methods",tabindex:"-1"},[s("Implicit Methods "),t("a",{class:"header-anchor",href:"#Implicit-Methods","aria-label":'Permalink to "Implicit Methods {#Implicit-Methods}"'},"​")],-1)),t("details",a4,[t("summary",null,[a[357]||(a[357]=t("a",{id:"IncompressibleNavierStokes.RKMethods.BE11",href:"#IncompressibleNavierStokes.RKMethods.BE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.BE11")],-1)),a[358]||(a[358]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[359]||(a[359]=e(`
    julia
    BE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    `,3))]),a[483]||(a[483]=t("h3",{id:"Implicit-Methods",tabindex:"-1"},[s("Implicit Methods "),t("a",{class:"header-anchor",href:"#Implicit-Methods","aria-label":'Permalink to "Implicit Methods {#Implicit-Methods}"'},"​")],-1)),t("details",a4,[t("summary",null,[a[357]||(a[357]=t("a",{id:"IncompressibleNavierStokes.RKMethods.BE11",href:"#IncompressibleNavierStokes.RKMethods.BE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.BE11")],-1)),a[358]||(a[358]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[359]||(a[359]=e(`
    julia
    BE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    `,3))]),t("details",s4,[t("summary",null,[a[360]||(a[360]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SDIRK34",href:"#IncompressibleNavierStokes.RKMethods.SDIRK34"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SDIRK34")],-1)),a[361]||(a[361]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[362]||(a[362]=e(`
    julia
    SDIRK34(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    `,3))]),t("details",s4,[t("summary",null,[a[360]||(a[360]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SDIRK34",href:"#IncompressibleNavierStokes.RKMethods.SDIRK34"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SDIRK34")],-1)),a[361]||(a[361]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[362]||(a[362]=e(`
    julia
    SDIRK34(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    `,3))]),t("details",e4,[t("summary",null,[a[363]||(a[363]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPm2",href:"#IncompressibleNavierStokes.RKMethods.ISSPm2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPm2")],-1)),a[364]||(a[364]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[365]||(a[365]=e(`
    julia
    ISSPm2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    `,3))]),t("details",e4,[t("summary",null,[a[363]||(a[363]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPm2",href:"#IncompressibleNavierStokes.RKMethods.ISSPm2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPm2")],-1)),a[364]||(a[364]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[365]||(a[365]=e(`
    julia
    ISSPm2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPm2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    `,3))]),t("details",Q4,[t("summary",null,[a[366]||(a[366]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPs3",href:"#IncompressibleNavierStokes.RKMethods.ISSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPs3")],-1)),a[367]||(a[367]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[368]||(a[368]=e(`
    julia
    ISSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    `,3))]),t("details",Q4,[t("summary",null,[a[366]||(a[366]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPs3",href:"#IncompressibleNavierStokes.RKMethods.ISSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPs3")],-1)),a[367]||(a[367]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[368]||(a[368]=e(`
    julia
    ISSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    `,3))]),a[484]||(a[484]=t("h3",{id:"Half-explicit-methods",tabindex:"-1"},[s("Half explicit methods "),t("a",{class:"header-anchor",href:"#Half-explicit-methods","aria-label":'Permalink to "Half explicit methods {#Half-explicit-methods}"'},"​")],-1)),t("details",l4,[t("summary",null,[a[369]||(a[369]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3",href:"#IncompressibleNavierStokes.RKMethods.HEM3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3")],-1)),a[370]||(a[370]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[371]||(a[371]=e(`
    julia
    HEM3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    `,3))]),a[484]||(a[484]=t("h3",{id:"Half-explicit-methods",tabindex:"-1"},[s("Half explicit methods "),t("a",{class:"header-anchor",href:"#Half-explicit-methods","aria-label":'Permalink to "Half explicit methods {#Half-explicit-methods}"'},"​")],-1)),t("details",l4,[t("summary",null,[a[369]||(a[369]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3",href:"#IncompressibleNavierStokes.RKMethods.HEM3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3")],-1)),a[370]||(a[370]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[371]||(a[371]=e(`
    julia
    HEM3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    `,3))]),t("details",T4,[t("summary",null,[a[372]||(a[372]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3BS",href:"#IncompressibleNavierStokes.RKMethods.HEM3BS"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3BS")],-1)),a[373]||(a[373]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[374]||(a[374]=e(`
    julia
    HEM3BS(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    `,3))]),t("details",T4,[t("summary",null,[a[372]||(a[372]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3BS",href:"#IncompressibleNavierStokes.RKMethods.HEM3BS"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3BS")],-1)),a[373]||(a[373]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[374]||(a[374]=e(`
    julia
    HEM3BS(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    `,3))]),t("details",i4,[t("summary",null,[a[375]||(a[375]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM5",href:"#IncompressibleNavierStokes.RKMethods.HEM5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM5")],-1)),a[376]||(a[376]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[377]||(a[377]=e(`
    julia
    HEM5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    `,3))]),t("details",i4,[t("summary",null,[a[375]||(a[375]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM5",href:"#IncompressibleNavierStokes.RKMethods.HEM5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM5")],-1)),a[376]||(a[376]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[377]||(a[377]=e(`
    julia
    HEM5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    `,3))]),a[485]||(a[485]=t("h3",{id:"Classical-Methods",tabindex:"-1"},[s("Classical Methods "),t("a",{class:"header-anchor",href:"#Classical-Methods","aria-label":'Permalink to "Classical Methods {#Classical-Methods}"'},"​")],-1)),t("details",n4,[t("summary",null,[a[378]||(a[378]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL1",href:"#IncompressibleNavierStokes.RKMethods.GL1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL1")],-1)),a[379]||(a[379]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[380]||(a[380]=e(`
    julia
    GL1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    `,3))]),a[485]||(a[485]=t("h3",{id:"Classical-Methods",tabindex:"-1"},[s("Classical Methods "),t("a",{class:"header-anchor",href:"#Classical-Methods","aria-label":'Permalink to "Classical Methods {#Classical-Methods}"'},"​")],-1)),t("details",n4,[t("summary",null,[a[378]||(a[378]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL1",href:"#IncompressibleNavierStokes.RKMethods.GL1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL1")],-1)),a[379]||(a[379]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[380]||(a[380]=e(`
    julia
    GL1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    `,3))]),t("details",o4,[t("summary",null,[a[381]||(a[381]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL2",href:"#IncompressibleNavierStokes.RKMethods.GL2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL2")],-1)),a[382]||(a[382]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[383]||(a[383]=e(`
    julia
    GL2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    `,3))]),t("details",o4,[t("summary",null,[a[381]||(a[381]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL2",href:"#IncompressibleNavierStokes.RKMethods.GL2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL2")],-1)),a[382]||(a[382]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[383]||(a[383]=e(`
    julia
    GL2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    `,3))]),t("details",r4,[t("summary",null,[a[384]||(a[384]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL3",href:"#IncompressibleNavierStokes.RKMethods.GL3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL3")],-1)),a[385]||(a[385]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[386]||(a[386]=e(`
    julia
    GL3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    `,3))]),t("details",r4,[t("summary",null,[a[384]||(a[384]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL3",href:"#IncompressibleNavierStokes.RKMethods.GL3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL3")],-1)),a[385]||(a[385]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[386]||(a[386]=e(`
    julia
    GL3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    `,3))]),t("details",d4,[t("summary",null,[a[387]||(a[387]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA1",href:"#IncompressibleNavierStokes.RKMethods.RIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA1")],-1)),a[388]||(a[388]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[389]||(a[389]=e(`
    julia
    RIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    `,3))]),t("details",d4,[t("summary",null,[a[387]||(a[387]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA1",href:"#IncompressibleNavierStokes.RKMethods.RIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA1")],-1)),a[388]||(a[388]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[389]||(a[389]=e(`
    julia
    RIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    `,3))]),t("details",m4,[t("summary",null,[a[390]||(a[390]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA2",href:"#IncompressibleNavierStokes.RKMethods.RIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA2")],-1)),a[391]||(a[391]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[392]||(a[392]=e(`
    julia
    RIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    `,3))]),t("details",m4,[t("summary",null,[a[390]||(a[390]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA2",href:"#IncompressibleNavierStokes.RKMethods.RIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA2")],-1)),a[391]||(a[391]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[392]||(a[392]=e(`
    julia
    RIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    `,3))]),t("details",p4,[t("summary",null,[a[393]||(a[393]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA3",href:"#IncompressibleNavierStokes.RKMethods.RIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA3")],-1)),a[394]||(a[394]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[395]||(a[395]=e(`
    julia
    RIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    `,3))]),t("details",p4,[t("summary",null,[a[393]||(a[393]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA3",href:"#IncompressibleNavierStokes.RKMethods.RIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA3")],-1)),a[394]||(a[394]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[395]||(a[395]=e(`
    julia
    RIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    `,3))]),t("details",h4,[t("summary",null,[a[396]||(a[396]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA1",href:"#IncompressibleNavierStokes.RKMethods.RIIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA1")],-1)),a[397]||(a[397]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[398]||(a[398]=e(`
    julia
    RIIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    `,3))]),t("details",h4,[t("summary",null,[a[396]||(a[396]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA1",href:"#IncompressibleNavierStokes.RKMethods.RIIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA1")],-1)),a[397]||(a[397]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[398]||(a[398]=e(`
    julia
    RIIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    `,3))]),t("details",g4,[t("summary",null,[a[399]||(a[399]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA2",href:"#IncompressibleNavierStokes.RKMethods.RIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA2")],-1)),a[400]||(a[400]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[401]||(a[401]=e(`
    julia
    RIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    `,3))]),t("details",g4,[t("summary",null,[a[399]||(a[399]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA2",href:"#IncompressibleNavierStokes.RKMethods.RIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA2")],-1)),a[400]||(a[400]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[401]||(a[401]=e(`
    julia
    RIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    `,3))]),t("details",k4,[t("summary",null,[a[402]||(a[402]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA3",href:"#IncompressibleNavierStokes.RKMethods.RIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA3")],-1)),a[403]||(a[403]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[404]||(a[404]=e(`
    julia
    RIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    `,3))]),t("details",k4,[t("summary",null,[a[402]||(a[402]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA3",href:"#IncompressibleNavierStokes.RKMethods.RIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA3")],-1)),a[403]||(a[403]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[404]||(a[404]=e(`
    julia
    RIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    `,3))]),t("details",c4,[t("summary",null,[a[405]||(a[405]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA2",href:"#IncompressibleNavierStokes.RKMethods.LIIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA2")],-1)),a[406]||(a[406]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[407]||(a[407]=e(`
    julia
    LIIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    `,3))]),t("details",c4,[t("summary",null,[a[405]||(a[405]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA2",href:"#IncompressibleNavierStokes.RKMethods.LIIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA2")],-1)),a[406]||(a[406]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[407]||(a[407]=e(`
    julia
    LIIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    `,3))]),t("details",u4,[t("summary",null,[a[408]||(a[408]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA3",href:"#IncompressibleNavierStokes.RKMethods.LIIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA3")],-1)),a[409]||(a[409]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[410]||(a[410]=e(`
    julia
    LIIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    `,3))]),t("details",u4,[t("summary",null,[a[408]||(a[408]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA3",href:"#IncompressibleNavierStokes.RKMethods.LIIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA3")],-1)),a[409]||(a[409]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[410]||(a[410]=e(`
    julia
    LIIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    `,3))]),a[486]||(a[486]=t("h3",{id:"Chebyshev-methods",tabindex:"-1"},[s("Chebyshev methods "),t("a",{class:"header-anchor",href:"#Chebyshev-methods","aria-label":'Permalink to "Chebyshev methods {#Chebyshev-methods}"'},"​")],-1)),t("details",H4,[t("summary",null,[a[411]||(a[411]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHDIRK3",href:"#IncompressibleNavierStokes.RKMethods.CHDIRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHDIRK3")],-1)),a[412]||(a[412]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[413]||(a[413]=e(`
    julia
    CHDIRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    `,3))]),a[486]||(a[486]=t("h3",{id:"Chebyshev-methods",tabindex:"-1"},[s("Chebyshev methods "),t("a",{class:"header-anchor",href:"#Chebyshev-methods","aria-label":'Permalink to "Chebyshev methods {#Chebyshev-methods}"'},"​")],-1)),t("details",H4,[t("summary",null,[a[411]||(a[411]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHDIRK3",href:"#IncompressibleNavierStokes.RKMethods.CHDIRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHDIRK3")],-1)),a[412]||(a[412]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[413]||(a[413]=e(`
    julia
    CHDIRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    `,3))]),t("details",w4,[t("summary",null,[a[414]||(a[414]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHCONS3",href:"#IncompressibleNavierStokes.RKMethods.CHCONS3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHCONS3")],-1)),a[415]||(a[415]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[416]||(a[416]=e(`
    julia
    CHCONS3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    `,3))]),t("details",w4,[t("summary",null,[a[414]||(a[414]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHCONS3",href:"#IncompressibleNavierStokes.RKMethods.CHCONS3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHCONS3")],-1)),a[415]||(a[415]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[416]||(a[416]=e(`
    julia
    CHCONS3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    `,3))]),t("details",y4,[t("summary",null,[a[417]||(a[417]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC3",href:"#IncompressibleNavierStokes.RKMethods.CHC3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC3")],-1)),a[418]||(a[418]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[419]||(a[419]=e(`
    julia
    CHC3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    `,3))]),t("details",y4,[t("summary",null,[a[417]||(a[417]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC3",href:"#IncompressibleNavierStokes.RKMethods.CHC3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC3")],-1)),a[418]||(a[418]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[419]||(a[419]=e(`
    julia
    CHC3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    `,3))]),t("details",b4,[t("summary",null,[a[420]||(a[420]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC5",href:"#IncompressibleNavierStokes.RKMethods.CHC5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC5")],-1)),a[421]||(a[421]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[422]||(a[422]=e(`
    julia
    CHC5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    `,3))]),t("details",x4,[t("summary",null,[a[420]||(a[420]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC5",href:"#IncompressibleNavierStokes.RKMethods.CHC5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC5")],-1)),a[421]||(a[421]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[422]||(a[422]=e(`
    julia
    CHC5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    `,3))]),a[487]||(a[487]=t("h3",{id:"Miscellaneous-Methods",tabindex:"-1"},[s("Miscellaneous Methods "),t("a",{class:"header-anchor",href:"#Miscellaneous-Methods","aria-label":'Permalink to "Miscellaneous Methods {#Miscellaneous-Methods}"'},"​")],-1)),t("details",x4,[t("summary",null,[a[423]||(a[423]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Mid22",href:"#IncompressibleNavierStokes.RKMethods.Mid22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Mid22")],-1)),a[424]||(a[424]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[425]||(a[425]=e(`
    julia
    Mid22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    `,3))]),a[487]||(a[487]=t("h3",{id:"Miscellaneous-Methods",tabindex:"-1"},[s("Miscellaneous Methods "),t("a",{class:"header-anchor",href:"#Miscellaneous-Methods","aria-label":'Permalink to "Miscellaneous Methods {#Miscellaneous-Methods}"'},"​")],-1)),t("details",b4,[t("summary",null,[a[423]||(a[423]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Mid22",href:"#IncompressibleNavierStokes.RKMethods.Mid22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Mid22")],-1)),a[424]||(a[424]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[425]||(a[425]=e(`
    julia
    Mid22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    `,3))]),t("details",f4,[t("summary",null,[a[426]||(a[426]=t("a",{id:"IncompressibleNavierStokes.RKMethods.MTE22",href:"#IncompressibleNavierStokes.RKMethods.MTE22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.MTE22")],-1)),a[427]||(a[427]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[428]||(a[428]=e(`
    julia
    MTE22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    `,3))]),t("details",f4,[t("summary",null,[a[426]||(a[426]=t("a",{id:"IncompressibleNavierStokes.RKMethods.MTE22",href:"#IncompressibleNavierStokes.RKMethods.MTE22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.MTE22")],-1)),a[427]||(a[427]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[428]||(a[428]=e(`
    julia
    MTE22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    `,3))]),t("details",M4,[t("summary",null,[a[429]||(a[429]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CN22",href:"#IncompressibleNavierStokes.RKMethods.CN22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CN22")],-1)),a[430]||(a[430]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[431]||(a[431]=e(`
    julia
    CN22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    `,3))]),t("details",M4,[t("summary",null,[a[429]||(a[429]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CN22",href:"#IncompressibleNavierStokes.RKMethods.CN22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CN22")],-1)),a[430]||(a[430]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[431]||(a[431]=e(`
    julia
    CN22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    `,3))]),t("details",L4,[t("summary",null,[a[432]||(a[432]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Heun33",href:"#IncompressibleNavierStokes.RKMethods.Heun33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Heun33")],-1)),a[433]||(a[433]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[434]||(a[434]=e(`
    julia
    Heun33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    `,3))]),t("details",L4,[t("summary",null,[a[432]||(a[432]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Heun33",href:"#IncompressibleNavierStokes.RKMethods.Heun33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Heun33")],-1)),a[433]||(a[433]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[434]||(a[434]=e(`
    julia
    Heun33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    `,3))]),t("details",v4,[t("summary",null,[a[435]||(a[435]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33C2",href:"#IncompressibleNavierStokes.RKMethods.RK33C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33C2")],-1)),a[436]||(a[436]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[437]||(a[437]=e(`
    julia
    RK33C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    `,3))]),t("details",v4,[t("summary",null,[a[435]||(a[435]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33C2",href:"#IncompressibleNavierStokes.RKMethods.RK33C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33C2")],-1)),a[436]||(a[436]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[437]||(a[437]=e(`
    julia
    RK33C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    `,3))]),t("details",E4,[t("summary",null,[a[438]||(a[438]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33P2",href:"#IncompressibleNavierStokes.RKMethods.RK33P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33P2")],-1)),a[439]||(a[439]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[440]||(a[440]=e(`
    julia
    RK33P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    `,3))]),t("details",E4,[t("summary",null,[a[438]||(a[438]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33P2",href:"#IncompressibleNavierStokes.RKMethods.RK33P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33P2")],-1)),a[439]||(a[439]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[440]||(a[440]=e(`
    julia
    RK33P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    `,3))]),t("details",Z4,[t("summary",null,[a[441]||(a[441]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44",href:"#IncompressibleNavierStokes.RKMethods.RK44"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44")],-1)),a[442]||(a[442]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[443]||(a[443]=e(`
    julia
    RK44(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    `,3))]),t("details",Z4,[t("summary",null,[a[441]||(a[441]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44",href:"#IncompressibleNavierStokes.RKMethods.RK44"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44")],-1)),a[442]||(a[442]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[443]||(a[443]=e(`
    julia
    RK44(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    `,3))]),t("details",j4,[t("summary",null,[a[444]||(a[444]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C2",href:"#IncompressibleNavierStokes.RKMethods.RK44C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C2")],-1)),a[445]||(a[445]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[446]||(a[446]=e(`
    julia
    RK44C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    `,3))]),t("details",j4,[t("summary",null,[a[444]||(a[444]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C2",href:"#IncompressibleNavierStokes.RKMethods.RK44C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C2")],-1)),a[445]||(a[445]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[446]||(a[446]=e(`
    julia
    RK44C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    `,3))]),t("details",D4,[t("summary",null,[a[447]||(a[447]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C23",href:"#IncompressibleNavierStokes.RKMethods.RK44C23"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C23")],-1)),a[448]||(a[448]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[449]||(a[449]=e(`
    julia
    RK44C23(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    `,3))]),t("details",D4,[t("summary",null,[a[447]||(a[447]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C23",href:"#IncompressibleNavierStokes.RKMethods.RK44C23"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C23")],-1)),a[448]||(a[448]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[449]||(a[449]=e(`
    julia
    RK44C23(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    `,3))]),t("details",S4,[t("summary",null,[a[450]||(a[450]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44P2",href:"#IncompressibleNavierStokes.RKMethods.RK44P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44P2")],-1)),a[451]||(a[451]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[452]||(a[452]=e(`
    julia
    RK44P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    `,3))]),t("details",S4,[t("summary",null,[a[450]||(a[450]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44P2",href:"#IncompressibleNavierStokes.RKMethods.RK44P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44P2")],-1)),a[451]||(a[451]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[452]||(a[452]=e(`
    julia
    RK44P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    `,3))]),a[488]||(a[488]=t("h3",{id:"DSRK-Methods",tabindex:"-1"},[s("DSRK Methods "),t("a",{class:"header-anchor",href:"#DSRK-Methods","aria-label":'Permalink to "DSRK Methods {#DSRK-Methods}"'},"​")],-1)),t("details",V4,[t("summary",null,[a[453]||(a[453]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSso2",href:"#IncompressibleNavierStokes.RKMethods.DSso2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSso2")],-1)),a[454]||(a[454]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[455]||(a[455]=e(`
    julia
    DSso2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    `,3))]),a[488]||(a[488]=t("h3",{id:"DSRK-Methods",tabindex:"-1"},[s("DSRK Methods "),t("a",{class:"header-anchor",href:"#DSRK-Methods","aria-label":'Permalink to "DSRK Methods {#DSRK-Methods}"'},"​")],-1)),t("details",V4,[t("summary",null,[a[453]||(a[453]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSso2",href:"#IncompressibleNavierStokes.RKMethods.DSso2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSso2")],-1)),a[454]||(a[454]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[455]||(a[455]=e(`
    julia
    DSso2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    `,3))]),t("details",I4,[t("summary",null,[a[456]||(a[456]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK2",href:"#IncompressibleNavierStokes.RKMethods.DSRK2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK2")],-1)),a[457]||(a[457]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[458]||(a[458]=e(`
    julia
    DSRK2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    `,3))]),t("details",I4,[t("summary",null,[a[456]||(a[456]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK2",href:"#IncompressibleNavierStokes.RKMethods.DSRK2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK2")],-1)),a[457]||(a[457]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[458]||(a[458]=e(`
    julia
    DSRK2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    `,3))]),t("details",R4,[t("summary",null,[a[459]||(a[459]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK3",href:"#IncompressibleNavierStokes.RKMethods.DSRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK3")],-1)),a[460]||(a[460]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[461]||(a[461]=e(`
    julia
    DSRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    `,3))]),t("details",R4,[t("summary",null,[a[459]||(a[459]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK3",href:"#IncompressibleNavierStokes.RKMethods.DSRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK3")],-1)),a[460]||(a[460]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[461]||(a[461]=e(`
    julia
    DSRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    `,3))]),a[489]||(a[489]=t("h3",{id:"Non-SSP-Methods-of-Wong-and-Spiteri",tabindex:"-1"},[s('"Non-SSP" Methods of Wong & Spiteri '),t("a",{class:"header-anchor",href:"#Non-SSP-Methods-of-Wong-and-Spiteri","aria-label":'Permalink to ""Non-SSP" Methods of Wong & Spiteri {#"Non-SSP"-Methods-of-Wong-and-Spiteri}"'},"​")],-1)),t("details",F4,[t("summary",null,[a[462]||(a[462]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP21",href:"#IncompressibleNavierStokes.RKMethods.NSSP21"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP21")],-1)),a[463]||(a[463]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[464]||(a[464]=e(`
    julia
    NSSP21(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    `,3))]),a[489]||(a[489]=t("h3",{id:"Non-SSP-Methods-of-Wong-and-Spiteri",tabindex:"-1"},[s('"Non-SSP" Methods of Wong & Spiteri '),t("a",{class:"header-anchor",href:"#Non-SSP-Methods-of-Wong-and-Spiteri","aria-label":'Permalink to ""Non-SSP" Methods of Wong & Spiteri {#"Non-SSP"-Methods-of-Wong-and-Spiteri}"'},"​")],-1)),t("details",F4,[t("summary",null,[a[462]||(a[462]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP21",href:"#IncompressibleNavierStokes.RKMethods.NSSP21"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP21")],-1)),a[463]||(a[463]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[464]||(a[464]=e(`
    julia
    NSSP21(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    `,3))]),t("details",C4,[t("summary",null,[a[465]||(a[465]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP32",href:"#IncompressibleNavierStokes.RKMethods.NSSP32"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP32")],-1)),a[466]||(a[466]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[467]||(a[467]=e(`
    julia
    NSSP32(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    `,3))]),t("details",C4,[t("summary",null,[a[465]||(a[465]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP32",href:"#IncompressibleNavierStokes.RKMethods.NSSP32"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP32")],-1)),a[466]||(a[466]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[467]||(a[467]=e(`
    julia
    NSSP32(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    `,3))]),t("details",N4,[t("summary",null,[a[468]||(a[468]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP33",href:"#IncompressibleNavierStokes.RKMethods.NSSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP33")],-1)),a[469]||(a[469]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[470]||(a[470]=e(`
    julia
    NSSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    `,3))]),t("details",N4,[t("summary",null,[a[468]||(a[468]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP33",href:"#IncompressibleNavierStokes.RKMethods.NSSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP33")],-1)),a[469]||(a[469]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[470]||(a[470]=e(`
    julia
    NSSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    `,3))]),t("details",K4,[t("summary",null,[a[471]||(a[471]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP53",href:"#IncompressibleNavierStokes.RKMethods.NSSP53"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP53")],-1)),a[472]||(a[472]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[473]||(a[473]=e(`
    julia
    NSSP53(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    `,3))]),t("details",K4,[t("summary",null,[a[471]||(a[471]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP53",href:"#IncompressibleNavierStokes.RKMethods.NSSP53"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP53")],-1)),a[472]||(a[472]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[473]||(a[473]=e(`
    julia
    NSSP53(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    `,3))])])}const X4=n(r,[["render",A4]]);export{U4 as __pageData,X4 as default}; +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    `,3))])])}const X4=n(r,[["render",A4]]);export{U4 as __pageData,X4 as default}; diff --git a/previews/PR126/assets/manual_time.md.Cp9DQrAy.lean.js b/previews/PR126/assets/manual_time.md.BVGrMWBs.lean.js similarity index 99% rename from previews/PR126/assets/manual_time.md.Cp9DQrAy.lean.js rename to previews/PR126/assets/manual_time.md.BVGrMWBs.lean.js index f6b6b6dd..0716af96 100644 --- a/previews/PR126/assets/manual_time.md.Cp9DQrAy.lean.js +++ b/previews/PR126/assets/manual_time.md.BVGrMWBs.lean.js @@ -1,174 +1,174 @@ -import{_ as n,c as Q,j as t,a as s,a5 as e,G as i,B as o,o as l}from"./chunks/framework.BSoZtefh.js";const U4=JSON.parse('{"title":"Time discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time.md","filePath":"manual/time.md","lastUpdated":null}'),r={name:"manual/time.md"},d={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.898ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 11446.9 2067","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.193ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6273.2 888","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.988ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204.7 1000","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},x={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.237ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 3640.9 1083.9","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.452ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7272 877","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.953ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2631.1 915.9","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.035ex",height:"2.099ex",role:"img",focusable:"false",viewBox:"0 -846 3109.5 928","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.605ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 6897.5 915.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.478ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4631.1 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.019ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2218.3 1000","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1079.3 686.5","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},U={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},W={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.869ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7456.2 1000","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.012ex",height:"13.249ex",role:"img",focusable:"false",viewBox:"0 -3178 21221.3 5856","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.353ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3692.2 1000","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.874ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2596.1 1209.9","aria-hidden":"true"},b1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.329ex",height:"2.748ex",role:"img",focusable:"false",viewBox:"0 -864.9 8985.2 1214.4","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.031ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.662ex",height:"17.192ex",role:"img",focusable:"false",viewBox:"0 -4049.5 23718.8 7599","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.801ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.818ex",height:"2.758ex",role:"img",focusable:"false",viewBox:"0 -864.9 5223.7 1219","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.661ex",height:"4.88ex",role:"img",focusable:"false",viewBox:"0 -1460 20624.2 2157","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.846ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15402 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.069ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 5334.6 910","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},q1={class:"jldocstring custom-block",open:""},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.126ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 939.6 636","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},l2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 650","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.37ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1489.7 650","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.513ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9066.7 1000","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.287ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9408.7 1000","aria-hidden":"true"},g2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.093ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2693.1 1209.9","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.724ex",role:"img",focusable:"false",viewBox:"0 -751 485 762","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.933ex",height:"5.926ex",role:"img",focusable:"false",viewBox:"0 -1449.5 29142.5 2619.4","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},x2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"30.973ex",height:"5.355ex",role:"img",focusable:"false",viewBox:"0 -1669.9 13690.2 2366.9","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.441ex",height:"5.796ex",role:"img",focusable:"false",viewBox:"0 -1392 9035 2561.9","aria-hidden":"true"},v2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.602ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.092ex",height:"4.663ex",role:"img",focusable:"false",viewBox:"0 -1353 9764.7 2061","aria-hidden":"true"},Z2={class:"jldocstring custom-block",open:""},j2={class:"jldocstring custom-block",open:""},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",role:"img",focusable:"false",viewBox:"0 -442 469 452","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.585ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 5562.5 881.6","aria-hidden":"true"},B2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.879ex",height:"1.977ex",role:"img",focusable:"false",viewBox:"0 -716 4808.5 873.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.358ex",height:"1.975ex",role:"img",focusable:"false",viewBox:"0 -716 4136.2 873.1","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.589ex",height:"1.772ex",role:"img",focusable:"false",viewBox:"0 -626 2470.2 783.1","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.031ex",height:"1.946ex",role:"img",focusable:"false",viewBox:"0 -666 4875.6 860","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},$2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.878ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 830 636","aria-hidden":"true"},_2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-15.831ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.276ex",height:"32.793ex",role:"img",focusable:"false",viewBox:"0 -7497.2 19570.1 14494.3","aria-hidden":"true"},a3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.755ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2543.6 1044.2","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.99ex",height:"3.109ex",role:"img",focusable:"false",viewBox:"0 -944.5 5741.5 1374.1","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.232ex",height:"1.355ex",role:"img",focusable:"false",viewBox:"0 -442 986.6 599.1","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.102ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 9327.2 1083.9","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.567ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6438.6 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},x3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},M3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.567ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 2902.8 1328.5","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.076ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 917.6 636","aria-hidden":"true"},V3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.837ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 812 600.8","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.307ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 3229.8 1328.5","aria-hidden":"true"},K3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.935ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9695.2 1000","aria-hidden":"true"},B3={class:"jldocstring custom-block",open:""},O3={class:"jldocstring custom-block",open:""},P3={class:"jldocstring custom-block",open:""},G3={class:"jldocstring custom-block",open:""},z3={class:"jldocstring custom-block",open:""},J3={class:"jldocstring custom-block",open:""},U3={class:"jldocstring custom-block",open:""},X3={class:"jldocstring custom-block",open:""},W3={class:"jldocstring custom-block",open:""},q3={class:"jldocstring custom-block",open:""},$3={class:"jldocstring custom-block",open:""},Y3={class:"jldocstring custom-block",open:""},_3={class:"jldocstring custom-block",open:""},t4={class:"jldocstring custom-block",open:""},a4={class:"jldocstring custom-block",open:""},s4={class:"jldocstring custom-block",open:""},e4={class:"jldocstring custom-block",open:""},Q4={class:"jldocstring custom-block",open:""},l4={class:"jldocstring custom-block",open:""},T4={class:"jldocstring custom-block",open:""},i4={class:"jldocstring custom-block",open:""},n4={class:"jldocstring custom-block",open:""},o4={class:"jldocstring custom-block",open:""},r4={class:"jldocstring custom-block",open:""},d4={class:"jldocstring custom-block",open:""},m4={class:"jldocstring custom-block",open:""},p4={class:"jldocstring custom-block",open:""},h4={class:"jldocstring custom-block",open:""},g4={class:"jldocstring custom-block",open:""},k4={class:"jldocstring custom-block",open:""},c4={class:"jldocstring custom-block",open:""},u4={class:"jldocstring custom-block",open:""},H4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},y4={class:"jldocstring custom-block",open:""},b4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},M4={class:"jldocstring custom-block",open:""},L4={class:"jldocstring custom-block",open:""},v4={class:"jldocstring custom-block",open:""},E4={class:"jldocstring custom-block",open:""},Z4={class:"jldocstring custom-block",open:""},j4={class:"jldocstring custom-block",open:""},D4={class:"jldocstring custom-block",open:""},S4={class:"jldocstring custom-block",open:""},V4={class:"jldocstring custom-block",open:""},I4={class:"jldocstring custom-block",open:""},R4={class:"jldocstring custom-block",open:""},F4={class:"jldocstring custom-block",open:""},C4={class:"jldocstring custom-block",open:""},N4={class:"jldocstring custom-block",open:""},K4={class:"jldocstring custom-block",open:""};function A4(B4,a,O4,P4,G4,z4){const T=o("Badge");return l(),Q("div",null,[a[474]||(a[474]=t("h1",{id:"Time-discretization",tabindex:"-1"},[s("Time discretization "),t("a",{class:"header-anchor",href:"#Time-discretization","aria-label":'Permalink to "Time discretization {#Time-discretization}"'},"​")],-1)),a[475]||(a[475]=t("p",null,"The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity",-1)),t("mjx-container",d,[(l(),Q("svg",m,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},")")])],-1))]),a[476]||(a[476]=t("p",null,"subject to the algebraic constraint formed by the mass equation",-1)),t("mjx-container",p,[(l(),Q("svg",h,a[2]||(a[2]=[e('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"M"),t("mi",null,"u"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",null,"="),t("mn",null,"0.")])],-1))]),t("p",null,[a[8]||(a[8]=s("In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term ")),t("mjx-container",g,[(l(),Q("svg",k,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])])],-1))]),a[9]||(a[9]=s(", which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field ")),t("mjx-container",c,[(l(),Q("svg",u,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[10]||(a[10]=s(" stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following)."))]),t("p",null,[a[41]||(a[41]=s("Consider the interval ")),t("mjx-container",H,[(l(),Q("svg",w,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mi",null,"T"),t("mo",{stretchy:"false"},"]")])],-1))]),a[42]||(a[42]=s(" for some simulation time ")),t("mjx-container",y,[(l(),Q("svg",b,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[43]||(a[43]=s(". We will divide it into ")),t("mjx-container",x,[(l(),Q("svg",f,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"N")])],-1))]),a[44]||(a[44]=s(" sub-intervals ")),t("mjx-container",M,[(l(),Q("svg",L,a[17]||(a[17]=[e('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,","),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"]")])],-1))]),a[45]||(a[45]=s(" for ")),t("mjx-container",v,[(l(),Q("svg",E,a[19]||(a[19]=[e('',1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",null,"−"),t("mn",null,"1")])],-1))]),a[46]||(a[46]=s(", with ")),t("mjx-container",Z,[(l(),Q("svg",j,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"="),t("mn",null,"0")])],-1))]),a[47]||(a[47]=s(", ")),t("mjx-container",D,[(l(),Q("svg",S,a[23]||(a[23]=[e('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"T")])],-1))]),a[48]||(a[48]=s(", and increment ")),t("mjx-container",V,[(l(),Q("svg",I,a[25]||(a[25]=[e('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,"="),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,"−"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")])])],-1))]),a[49]||(a[49]=s(". We define ")),t("mjx-container",R,[(l(),Q("svg",F,a[27]||(a[27]=[e('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"≈"),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[50]||(a[50]=s(" as an approximation to the exact discrete velocity field ")),t("mjx-container",C,[(l(),Q("svg",N,a[29]||(a[29]=[e('',1)]))),a[30]||(a[30]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[51]||(a[51]=s(", with ")),t("mjx-container",K,[(l(),Q("svg",A,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[52]||(a[52]=s(" starting from the exact initial conditions. We say that the time integration scheme (definition of ")),t("mjx-container",B,[(l(),Q("svg",O,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")])])],-1))]),a[53]||(a[53]=s(") is accurate to the order ")),t("mjx-container",P,[(l(),Q("svg",G,a[35]||(a[35]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[36]||(a[36]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[54]||(a[54]=s(" if ")),t("mjx-container",z,[(l(),Q("svg",J,a[37]||(a[37]=[e('',1)]))),a[38]||(a[38]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[55]||(a[55]=s(" for all ")),t("mjx-container",U,[(l(),Q("svg",X,a[39]||(a[39]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[40]||(a[40]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[56]||(a[56]=s("."))]),a[477]||(a[477]=t("p",null,"IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.",-1)),a[478]||(a[478]=t("p",null,[s("The code is currently not adapted to time steppers from "),t("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/solvers/dae_solve/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl"),s(", but they may be integrated in the future.")],-1)),t("details",W,[t("summary",null,[a[57]||(a[57]=t("a",{id:"IncompressibleNavierStokes.AbstractODEMethod",href:"#IncompressibleNavierStokes.AbstractODEMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractODEMethod")],-1)),a[58]||(a[58]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[59]||(a[59]=e('
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    ',4))]),t("details",q,[t("summary",null,[a[60]||(a[60]=t("a",{id:"IncompressibleNavierStokes.ode_method_cache",href:"#IncompressibleNavierStokes.ode_method_cache"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ode_method_cache")],-1)),a[61]||(a[61]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[62]||(a[62]=e('
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    ',3))]),t("details",$,[t("summary",null,[a[63]||(a[63]=t("a",{id:"IncompressibleNavierStokes.runge_kutta_method",href:"#IncompressibleNavierStokes.runge_kutta_method"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.runge_kutta_method")],-1)),a[64]||(a[64]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[65]||(a[65]=e(`
    julia
    runge_kutta_method(
    +import{_ as n,c as Q,j as t,a as s,a5 as e,G as i,B as o,o as l}from"./chunks/framework.CojPSOJE.js";const U4=JSON.parse('{"title":"Time discretization","description":"","frontmatter":{},"headers":[],"relativePath":"manual/time.md","filePath":"manual/time.md","lastUpdated":null}'),r={name:"manual/time.md"},d={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},m={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.898ex",height:"4.676ex",role:"img",focusable:"false",viewBox:"0 -1370 11446.9 2067","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},h={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.464ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.193ex",height:"2.009ex",role:"img",focusable:"false",viewBox:"0 -683 6273.2 888","aria-hidden":"true"},g={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.991ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 1763.8 1328.5","aria-hidden":"true"},c={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.871ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1711 1000","aria-hidden":"true"},H={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.988ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2204.7 1000","aria-hidden":"true"},y={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.593ex",height:"1.532ex",role:"img",focusable:"false",viewBox:"0 -677 704 677","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"2.009ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 888 683","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.237ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 3640.9 1083.9","aria-hidden":"true"},v={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.452ex",height:"1.984ex",role:"img",focusable:"false",viewBox:"0 -683 7272 877","aria-hidden":"true"},Z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.953ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 2631.1 915.9","aria-hidden":"true"},D={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.035ex",height:"2.099ex",role:"img",focusable:"false",viewBox:"0 -846 3109.5 928","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.186ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.605ex",height:"2.072ex",role:"img",focusable:"false",viewBox:"0 -833.9 6897.5 915.9","aria-hidden":"true"},R={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.478ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4631.1 1000","aria-hidden":"true"},C={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.019ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2218.3 1000","aria-hidden":"true"},K={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},B={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.442ex",height:"1.553ex",role:"img",focusable:"false",viewBox:"0 -675.5 1079.3 686.5","aria-hidden":"true"},P={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},U={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},W={class:"jldocstring custom-block",open:""},q={class:"jldocstring custom-block",open:""},$={class:"jldocstring custom-block",open:""},Y={class:"jldocstring custom-block",open:""},_={class:"jldocstring custom-block",open:""},t1={class:"jldocstring custom-block",open:""},a1={class:"jldocstring custom-block",open:""},s1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},e1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Q1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},l1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},T1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},i1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},n1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},o1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"16.869ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7456.2 1000","aria-hidden":"true"},r1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},d1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},m1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},p1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},h1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},k1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},c1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-6.059ex"},xmlns:"http://www.w3.org/2000/svg",width:"48.012ex",height:"13.249ex",role:"img",focusable:"false",viewBox:"0 -3178 21221.3 5856","aria-hidden":"true"},u1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},H1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"8.353ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 3692.2 1000","aria-hidden":"true"},w1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.874ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2596.1 1209.9","aria-hidden":"true"},x1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},b1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.791ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.329ex",height:"2.748ex",role:"img",focusable:"false",viewBox:"0 -864.9 8985.2 1214.4","aria-hidden":"true"},f1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},M1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},L1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},v1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},E1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},Z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-8.031ex"},xmlns:"http://www.w3.org/2000/svg",width:"53.662ex",height:"17.192ex",role:"img",focusable:"false",viewBox:"0 -4049.5 23718.8 7599","aria-hidden":"true"},j1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},D1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.027ex",role:"img",focusable:"false",viewBox:"0 -443 485 454","aria-hidden":"true"},S1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},V1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.801ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.818ex",height:"2.758ex",role:"img",focusable:"false",viewBox:"0 -864.9 5223.7 1219","aria-hidden":"true"},I1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},R1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},F1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},C1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},N1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},K1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"46.661ex",height:"4.88ex",role:"img",focusable:"false",viewBox:"0 -1460 20624.2 2157","aria-hidden":"true"},A1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},B1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},O1={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},P1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"34.846ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 15402 1000","aria-hidden":"true"},G1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},z1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.069ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 5334.6 910","aria-hidden":"true"},J1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},U1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},X1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},W1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},q1={class:"jldocstring custom-block",open:""},$1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y1={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},_1={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},t2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},a2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.126ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 939.6 636","aria-hidden":"true"},e2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},l2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.526ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1558.7 650","aria-hidden":"true"},i2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.37ex",height:"1.471ex",role:"img",focusable:"false",viewBox:"0 -442 1489.7 650","aria-hidden":"true"},o2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.471ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.338ex",height:"2.09ex",role:"img",focusable:"false",viewBox:"0 -716 5895.2 924","aria-hidden":"true"},d2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.513ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9066.7 1000","aria-hidden":"true"},p2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.287ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9408.7 1000","aria-hidden":"true"},g2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.781ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.093ex",height:"2.737ex",role:"img",focusable:"false",viewBox:"0 -864.9 2693.1 1209.9","aria-hidden":"true"},c2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.097ex",height:"1.724ex",role:"img",focusable:"false",viewBox:"0 -751 485 762","aria-hidden":"true"},H2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},w2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"65.933ex",height:"5.926ex",role:"img",focusable:"false",viewBox:"0 -1449.5 29142.5 2619.4","aria-hidden":"true"},y2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"3.023ex",height:"2.059ex",role:"img",focusable:"false",viewBox:"0 -716 1336 910","aria-hidden":"true"},b2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},f2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.577ex"},xmlns:"http://www.w3.org/2000/svg",width:"30.973ex",height:"5.355ex",role:"img",focusable:"false",viewBox:"0 -1669.9 13690.2 2366.9","aria-hidden":"true"},M2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},L2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-2.647ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.441ex",height:"5.796ex",role:"img",focusable:"false",viewBox:"0 -1392 9035 2561.9","aria-hidden":"true"},v2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},E2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-1.602ex"},xmlns:"http://www.w3.org/2000/svg",width:"22.092ex",height:"4.663ex",role:"img",focusable:"false",viewBox:"0 -1353 9764.7 2061","aria-hidden":"true"},Z2={class:"jldocstring custom-block",open:""},j2={class:"jldocstring custom-block",open:""},D2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.282ex",height:"1.375ex",role:"img",focusable:"false",viewBox:"0 -442 1008.6 607.6","aria-hidden":"true"},V2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.804ex",height:"1.791ex",role:"img",focusable:"false",viewBox:"0 -626 797.6 791.6","aria-hidden":"true"},R2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.105ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 4908.6 881.6","aria-hidden":"true"},C2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.023ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.061ex",height:"1.023ex",role:"img",focusable:"false",viewBox:"0 -442 469 452","aria-hidden":"true"},K2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.375ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.585ex",height:"1.994ex",role:"img",focusable:"false",viewBox:"0 -716 5562.5 881.6","aria-hidden":"true"},B2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},O2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.879ex",height:"1.977ex",role:"img",focusable:"false",viewBox:"0 -716 4808.5 873.8","aria-hidden":"true"},P2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},G2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.358ex",height:"1.975ex",role:"img",focusable:"false",viewBox:"0 -716 4136.2 873.1","aria-hidden":"true"},z2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},J2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.589ex",height:"1.772ex",role:"img",focusable:"false",viewBox:"0 -626 2470.2 783.1","aria-hidden":"true"},U2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},X2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"11.031ex",height:"1.946ex",role:"img",focusable:"false",viewBox:"0 -666 4875.6 860","aria-hidden":"true"},W2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},q2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},$2={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Y2={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.878ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 830 636","aria-hidden":"true"},_2={class:"MathJax",jax:"SVG",display:"true",style:{direction:"ltr",display:"block","text-align":"center",margin:"1em 0",position:"relative"}},t3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-15.831ex"},xmlns:"http://www.w3.org/2000/svg",width:"44.276ex",height:"32.793ex",role:"img",focusable:"false",viewBox:"0 -7497.2 19570.1 14494.3","aria-hidden":"true"},a3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},s3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.666ex"},xmlns:"http://www.w3.org/2000/svg",width:"5.755ex",height:"2.363ex",role:"img",focusable:"false",viewBox:"0 -750 2543.6 1044.2","aria-hidden":"true"},e3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},Q3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.972ex"},xmlns:"http://www.w3.org/2000/svg",width:"12.99ex",height:"3.109ex",role:"img",focusable:"false",viewBox:"0 -944.5 5741.5 1374.1","aria-hidden":"true"},l3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},T3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.355ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.232ex",height:"1.355ex",role:"img",focusable:"false",viewBox:"0 -442 986.6 599.1","aria-hidden":"true"},i3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},n3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"10.158ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 4489.7 1000","aria-hidden":"true"},o3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},r3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.102ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 9327.2 1083.9","aria-hidden":"true"},d3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},m3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.02ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 451 453","aria-hidden":"true"},p3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},h3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.357ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 600 453","aria-hidden":"true"},g3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},k3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"9.484ex",height:"2.452ex",role:"img",focusable:"false",viewBox:"0 -833.9 4192.1 1083.9","aria-hidden":"true"},c3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},u3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"20.415ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9023.4 1000","aria-hidden":"true"},H3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},w3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"14.567ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6438.6 1000","aria-hidden":"true"},y3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},x3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},b3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},f3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.138ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 503 636","aria-hidden":"true"},M3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},L3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},v3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},E3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.701ex",height:"1.645ex",role:"img",focusable:"false",viewBox:"0 -716 1194 727","aria-hidden":"true"},Z3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},j3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.567ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 2902.8 1328.5","aria-hidden":"true"},D3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},S3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.439ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.076ex",height:"1.439ex",role:"img",focusable:"false",viewBox:"0 -442 917.6 636","aria-hidden":"true"},V3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},I3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"2.034ex",height:"1.357ex",role:"img",focusable:"false",viewBox:"0 -442 899 599.8","aria-hidden":"true"},R3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},F3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.357ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.837ex",height:"1.359ex",role:"img",focusable:"false",viewBox:"0 -443 812 600.8","aria-hidden":"true"},C3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},N3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.798ex"},xmlns:"http://www.w3.org/2000/svg",width:"7.307ex",height:"3.006ex",role:"img",focusable:"false",viewBox:"0 -975.7 3229.8 1328.5","aria-hidden":"true"},K3={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},A3={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"21.935ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 9695.2 1000","aria-hidden":"true"},B3={class:"jldocstring custom-block",open:""},O3={class:"jldocstring custom-block",open:""},P3={class:"jldocstring custom-block",open:""},G3={class:"jldocstring custom-block",open:""},z3={class:"jldocstring custom-block",open:""},J3={class:"jldocstring custom-block",open:""},U3={class:"jldocstring custom-block",open:""},X3={class:"jldocstring custom-block",open:""},W3={class:"jldocstring custom-block",open:""},q3={class:"jldocstring custom-block",open:""},$3={class:"jldocstring custom-block",open:""},Y3={class:"jldocstring custom-block",open:""},_3={class:"jldocstring custom-block",open:""},t4={class:"jldocstring custom-block",open:""},a4={class:"jldocstring custom-block",open:""},s4={class:"jldocstring custom-block",open:""},e4={class:"jldocstring custom-block",open:""},Q4={class:"jldocstring custom-block",open:""},l4={class:"jldocstring custom-block",open:""},T4={class:"jldocstring custom-block",open:""},i4={class:"jldocstring custom-block",open:""},n4={class:"jldocstring custom-block",open:""},o4={class:"jldocstring custom-block",open:""},r4={class:"jldocstring custom-block",open:""},d4={class:"jldocstring custom-block",open:""},m4={class:"jldocstring custom-block",open:""},p4={class:"jldocstring custom-block",open:""},h4={class:"jldocstring custom-block",open:""},g4={class:"jldocstring custom-block",open:""},k4={class:"jldocstring custom-block",open:""},c4={class:"jldocstring custom-block",open:""},u4={class:"jldocstring custom-block",open:""},H4={class:"jldocstring custom-block",open:""},w4={class:"jldocstring custom-block",open:""},y4={class:"jldocstring custom-block",open:""},x4={class:"jldocstring custom-block",open:""},b4={class:"jldocstring custom-block",open:""},f4={class:"jldocstring custom-block",open:""},M4={class:"jldocstring custom-block",open:""},L4={class:"jldocstring custom-block",open:""},v4={class:"jldocstring custom-block",open:""},E4={class:"jldocstring custom-block",open:""},Z4={class:"jldocstring custom-block",open:""},j4={class:"jldocstring custom-block",open:""},D4={class:"jldocstring custom-block",open:""},S4={class:"jldocstring custom-block",open:""},V4={class:"jldocstring custom-block",open:""},I4={class:"jldocstring custom-block",open:""},R4={class:"jldocstring custom-block",open:""},F4={class:"jldocstring custom-block",open:""},C4={class:"jldocstring custom-block",open:""},N4={class:"jldocstring custom-block",open:""},K4={class:"jldocstring custom-block",open:""};function A4(B4,a,O4,P4,G4,z4){const T=o("Badge");return l(),Q("div",null,[a[474]||(a[474]=t("h1",{id:"Time-discretization",tabindex:"-1"},[s("Time discretization "),t("a",{class:"header-anchor",href:"#Time-discretization","aria-label":'Permalink to "Time discretization {#Time-discretization}"'},"​")],-1)),a[475]||(a[475]=t("p",null,"The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity",-1)),t("mjx-container",d,[(l(),Q("svg",m,a[0]||(a[0]=[e('',1)]))),a[1]||(a[1]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"u")]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"u"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},")")])],-1))]),a[476]||(a[476]=t("p",null,"subject to the algebraic constraint formed by the mass equation",-1)),t("mjx-container",p,[(l(),Q("svg",h,a[2]||(a[2]=[e('',1)]))),a[3]||(a[3]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"M"),t("mi",null,"u"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",null,"="),t("mn",null,"0.")])],-1))]),t("p",null,[a[8]||(a[8]=s("In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term ")),t("mjx-container",g,[(l(),Q("svg",k,a[4]||(a[4]=[e('',1)]))),a[5]||(a[5]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])])])],-1))]),a[9]||(a[9]=s(", which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field ")),t("mjx-container",c,[(l(),Q("svg",u,a[6]||(a[6]=[e('',1)]))),a[7]||(a[7]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[10]||(a[10]=s(" stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following)."))]),t("p",null,[a[41]||(a[41]=s("Consider the interval ")),t("mjx-container",H,[(l(),Q("svg",w,a[11]||(a[11]=[e('',1)]))),a[12]||(a[12]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mi",null,"T"),t("mo",{stretchy:"false"},"]")])],-1))]),a[42]||(a[42]=s(" for some simulation time ")),t("mjx-container",y,[(l(),Q("svg",x,a[13]||(a[13]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D447",d:"M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",style:{"stroke-width":"3"}})])])],-1)]))),a[14]||(a[14]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"T")])],-1))]),a[43]||(a[43]=s(". We will divide it into ")),t("mjx-container",b,[(l(),Q("svg",f,a[15]||(a[15]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D441",d:"M234 637Q231 637 226 637Q201 637 196 638T191 649Q191 676 202 682Q204 683 299 683Q376 683 387 683T401 677Q612 181 616 168L670 381Q723 592 723 606Q723 633 659 637Q635 637 635 648Q635 650 637 660Q641 676 643 679T653 683Q656 683 684 682T767 680Q817 680 843 681T873 682Q888 682 888 672Q888 650 880 642Q878 637 858 637Q787 633 769 597L620 7Q618 0 599 0Q585 0 582 2Q579 5 453 305L326 604L261 344Q196 88 196 79Q201 46 268 46H278Q284 41 284 38T282 19Q278 6 272 0H259Q228 2 151 2Q123 2 100 2T63 2T46 1Q31 1 31 10Q31 14 34 26T39 40Q41 46 62 46Q130 49 150 85Q154 91 221 362L289 634Q287 635 234 637Z",style:{"stroke-width":"3"}})])])],-1)]))),a[16]||(a[16]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"N")])],-1))]),a[44]||(a[44]=s(" sub-intervals ")),t("mjx-container",M,[(l(),Q("svg",L,a[17]||(a[17]=[e('',1)]))),a[18]||(a[18]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"["),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,","),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},"]")])],-1))]),a[45]||(a[45]=s(" for ")),t("mjx-container",v,[(l(),Q("svg",E,a[19]||(a[19]=[e('',1)]))),a[20]||(a[20]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"="),t("mn",null,"0"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",null,"−"),t("mn",null,"1")])],-1))]),a[46]||(a[46]=s(", with ")),t("mjx-container",Z,[(l(),Q("svg",j,a[21]||(a[21]=[e('',1)]))),a[22]||(a[22]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"="),t("mn",null,"0")])],-1))]),a[47]||(a[47]=s(", ")),t("mjx-container",D,[(l(),Q("svg",S,a[23]||(a[23]=[e('',1)]))),a[24]||(a[24]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"t"),t("mi",null,"N")]),t("mo",null,"="),t("mi",null,"T")])],-1))]),a[48]||(a[48]=s(", and increment ")),t("mjx-container",V,[(l(),Q("svg",I,a[25]||(a[25]=[e('',1)]))),a[26]||(a[26]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",null,"="),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"n"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",null,"−"),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")])])],-1))]),a[49]||(a[49]=s(". We define ")),t("mjx-container",R,[(l(),Q("svg",F,a[27]||(a[27]=[e('',1)]))),a[28]||(a[28]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"≈"),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[50]||(a[50]=s(" as an approximation to the exact discrete velocity field ")),t("mjx-container",C,[(l(),Q("svg",N,a[29]||(a[29]=[e('',1)]))),a[30]||(a[30]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")")])],-1))]),a[51]||(a[51]=s(", with ")),t("mjx-container",K,[(l(),Q("svg",A,a[31]||(a[31]=[e('',1)]))),a[32]||(a[32]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[52]||(a[52]=s(" starting from the exact initial conditions. We say that the time integration scheme (definition of ")),t("mjx-container",B,[(l(),Q("svg",O,a[33]||(a[33]=[e('',1)]))),a[34]||(a[34]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")])])],-1))]),a[53]||(a[53]=s(") is accurate to the order ")),t("mjx-container",P,[(l(),Q("svg",G,a[35]||(a[35]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[36]||(a[36]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[54]||(a[54]=s(" if ")),t("mjx-container",z,[(l(),Q("svg",J,a[37]||(a[37]=[e('',1)]))),a[38]||(a[38]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[55]||(a[55]=s(" for all ")),t("mjx-container",U,[(l(),Q("svg",X,a[39]||(a[39]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[40]||(a[40]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[56]||(a[56]=s("."))]),a[477]||(a[477]=t("p",null,"IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.",-1)),a[478]||(a[478]=t("p",null,[s("The code is currently not adapted to time steppers from "),t("a",{href:"https://docs.sciml.ai/DiffEqDocs/stable/solvers/dae_solve/",target:"_blank",rel:"noreferrer"},"DifferentialEquations.jl"),s(", but they may be integrated in the future.")],-1)),t("details",W,[t("summary",null,[a[57]||(a[57]=t("a",{id:"IncompressibleNavierStokes.AbstractODEMethod",href:"#IncompressibleNavierStokes.AbstractODEMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractODEMethod")],-1)),a[58]||(a[58]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[59]||(a[59]=e('
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    ',4))]),t("details",q,[t("summary",null,[a[60]||(a[60]=t("a",{id:"IncompressibleNavierStokes.ode_method_cache",href:"#IncompressibleNavierStokes.ode_method_cache"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ode_method_cache")],-1)),a[61]||(a[61]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[62]||(a[62]=e('
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    ',3))]),t("details",$,[t("summary",null,[a[63]||(a[63]=t("a",{id:"IncompressibleNavierStokes.runge_kutta_method",href:"#IncompressibleNavierStokes.runge_kutta_method"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.runge_kutta_method")],-1)),a[64]||(a[64]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[65]||(a[65]=e(`
    julia
    runge_kutta_method(
         A,
         b,
         c,
         r;
         T,
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    `,5))]),t("details",Y,[t("summary",null,[a[66]||(a[66]=t("a",{id:"IncompressibleNavierStokes.create_stepper",href:"#IncompressibleNavierStokes.create_stepper"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_stepper")],-1)),a[67]||(a[67]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[68]||(a[68]=e('
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    ',3))]),t("details",_,[t("summary",null,[a[69]||(a[69]=t("a",{id:"IncompressibleNavierStokes.timestep",href:"#IncompressibleNavierStokes.timestep"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep")],-1)),a[70]||(a[70]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[71]||(a[71]=e('
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    ',5))]),t("details",t1,[t("summary",null,[a[72]||(a[72]=t("a",{id:"IncompressibleNavierStokes.timestep!",href:"#IncompressibleNavierStokes.timestep!"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep!")],-1)),a[73]||(a[73]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[74]||(a[74]=e('
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    ',5))]),a[479]||(a[479]=t("h2",{id:"Adams-Bashforth-Crank-Nicolson-method",tabindex:"-1"},[s("Adams-Bashforth Crank-Nicolson method "),t("a",{class:"header-anchor",href:"#Adams-Bashforth-Crank-Nicolson-method","aria-label":'Permalink to "Adams-Bashforth Crank-Nicolson method {#Adams-Bashforth-Crank-Nicolson-method}"'},"​")],-1)),t("details",a1,[t("summary",null,[a[75]||(a[75]=t("a",{id:"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod",href:"#IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod")],-1)),a[76]||(a[76]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[151]||(a[151]=e('
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    ',4)),t("p",null,[a[91]||(a[91]=s("We here require that the time step ")),t("mjx-container",s1,[(l(),Q("svg",e1,a[77]||(a[77]=[e('',1)]))),a[78]||(a[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[92]||(a[92]=s(" is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field ")),t("mjx-container",Q1,[(l(),Q("svg",l1,a[79]||(a[79]=[e('',1)]))),a[80]||(a[80]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[93]||(a[93]=s(" at a time ")),t("mjx-container",T1,[(l(),Q("svg",i1,a[81]||(a[81]=[e('',1)]))),a[82]||(a[82]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[94]||(a[94]=s(" and its previous value ")),t("mjx-container",n1,[(l(),Q("svg",o1,a[83]||(a[83]=[e('',1)]))),a[84]||(a[84]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" at the previous time ")),t("mjx-container",r1,[(l(),Q("svg",d1,a[85]||(a[85]=[e('',1)]))),a[86]||(a[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[96]||(a[96]=s(", the predicted velocity field ")),t("mjx-container",m1,[(l(),Q("svg",p1,a[87]||(a[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[88]||(a[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[97]||(a[97]=s(" at the time ")),t("mjx-container",h1,[(l(),Q("svg",g1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[98]||(a[98]=s(" is defined by first computing a tentative velocity:"))]),t("mjx-container",k1,[(l(),Q("svg",c1,a[99]||(a[99]=[e('',1)]))),a[100]||(a[100]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"v"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])])])])],-1))]),t("p",null,[a[111]||(a[111]=s("where ")),t("mjx-container",u1,[(l(),Q("svg",H1,a[101]||(a[101]=[e('',1)]))),a[102]||(a[102]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"∈"),t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"1"),t("mo",{stretchy:"false"},"]")])],-1))]),a[112]||(a[112]=s(" is the Crank-Nicolson parameter (")),t("mjx-container",w1,[(l(),Q("svg",y1,a[103]||(a[103]=[e('',1)]))),a[104]||(a[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[113]||(a[113]=s(" for second order convergence), ")),t("mjx-container",b1,[(l(),Q("svg",x1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"3"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[114]||(a[114]=s(" are the Adams-Bashforth coefficients, and ")),t("mjx-container",f1,[(l(),Q("svg",M1,a[107]||(a[107]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[108]||(a[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[115]||(a[115]=s(" is a tentative velocity yet to be made divergence free. We can group the terms containing ")),t("mjx-container",L1,[(l(),Q("svg",v1,a[109]||(a[109]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[110]||(a[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[116]||(a[116]=s(" on the left hand side, to obtain"))]),t("mjx-container",E1,[(l(),Q("svg",Z1,a[117]||(a[117]=[e('',1)]))),a[118]||(a[118]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"v")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[125]||(a[125]=s("We can compute ")),t("mjx-container",j1,[(l(),Q("svg",D1,a[119]||(a[119]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[120]||(a[120]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[126]||(a[126]=s(" by inverting the positive definite matrix ")),t("mjx-container",S1,[(l(),Q("svg",V1,a[121]||(a[121]=[e('',1)]))),a[122]||(a[122]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[127]||(a[127]=s(" for the given right hand side using a suitable linear solver. Assuming ")),t("mjx-container",I1,[(l(),Q("svg",R1,a[123]||(a[123]=[e('',1)]))),a[124]||(a[124]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[128]||(a[128]=s(" is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping."))]),t("p",null,[a[131]||(a[131]=s("We then compute the pressure difference ")),t("mjx-container",F1,[(l(),Q("svg",C1,a[129]||(a[129]=[e('',1)]))),a[130]||(a[130]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[132]||(a[132]=s(" by solving"))]),t("mjx-container",N1,[(l(),Q("svg",K1,a[133]||(a[133]=[e('',1)]))),a[134]||(a[134]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mo",null,"−"),t("mi",null,"W"),t("mi",null,"M"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),t("p",null,[a[137]||(a[137]=s("after which a divergence free velocity ")),t("mjx-container",A1,[(l(),Q("svg",B1,a[135]||(a[135]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[136]||(a[136]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[138]||(a[138]=s(" can be enforced:"))]),t("mjx-container",O1,[(l(),Q("svg",P1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",null,"v"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),t("p",null,[a[147]||(a[147]=s("A first order accurate prediction of the corresponding pressure is ")),t("mjx-container",G1,[(l(),Q("svg",z1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",null,"="),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[148]||(a[148]=s(". However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure ")),t("mjx-container",J1,[(l(),Q("svg",U1,a[143]||(a[143]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[144]||(a[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[149]||(a[149]=s(" is then accurate to the same order as ")),t("mjx-container",X1,[(l(),Q("svg",W1,a[145]||(a[145]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[146]||(a[146]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[150]||(a[150]=s("."))]),a[152]||(a[152]=e('

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    ',3))]),a[480]||(a[480]=t("h2",{id:"One-leg-beta-method",tabindex:"-1"},[s("One-leg beta method "),t("a",{class:"header-anchor",href:"#One-leg-beta-method","aria-label":'Permalink to "One-leg beta method {#One-leg-beta-method}"'},"​")],-1)),t("details",q1,[t("summary",null,[a[153]||(a[153]=t("a",{id:"IncompressibleNavierStokes.OneLegMethod",href:"#IncompressibleNavierStokes.OneLegMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.OneLegMethod")],-1)),a[154]||(a[154]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[202]||(a[202]=e('
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    ',2)),t("p",null,[a[175]||(a[175]=s("We here require that the time step ")),t("mjx-container",$1,[(l(),Q("svg",Y1,a[155]||(a[155]=[e('',1)]))),a[156]||(a[156]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[176]||(a[176]=s(" is constant. Given the velocity ")),t("mjx-container",_1,[(l(),Q("svg",t2,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[177]||(a[177]=s(" and pressure ")),t("mjx-container",a2,[(l(),Q("svg",s2,a[159]||(a[159]=[e('',1)]))),a[160]||(a[160]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mn",null,"0")])])],-1))]),a[178]||(a[178]=s(" at the current time ")),t("mjx-container",e2,[(l(),Q("svg",Q2,a[161]||(a[161]=[e('',1)]))),a[162]||(a[162]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[179]||(a[179]=s(" and their previous values ")),t("mjx-container",l2,[(l(),Q("svg",T2,a[163]||(a[163]=[e('',1)]))),a[164]||(a[164]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[180]||(a[180]=s(" and ")),t("mjx-container",i2,[(l(),Q("svg",n2,a[165]||(a[165]=[e('',1)]))),a[166]||(a[166]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[181]||(a[181]=s(" at the time ")),t("mjx-container",o2,[(l(),Q("svg",r2,a[167]||(a[167]=[e('',1)]))),a[168]||(a[168]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[182]||(a[182]=s(', we start by computing the "offstep" values ')),t("mjx-container",d2,[(l(),Q("svg",m2,a[169]||(a[169]=[e('',1)]))),a[170]||(a[170]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"v"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[183]||(a[183]=s(" and ")),t("mjx-container",p2,[(l(),Q("svg",h2,a[171]||(a[171]=[e('',1)]))),a[172]||(a[172]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[184]||(a[184]=s(" for some ")),t("mjx-container",g2,[(l(),Q("svg",k2,a[173]||(a[173]=[e('',1)]))),a[174]||(a[174]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"β"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[185]||(a[185]=s("."))]),t("p",null,[a[188]||(a[188]=s("A tentative velocity field ")),t("mjx-container",c2,[(l(),Q("svg",u2,a[186]||(a[186]=[e('',1)]))),a[187]||(a[187]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])])])],-1))]),a[189]||(a[189]=s(" is then computed as follows:"))]),t("mjx-container",H2,[(l(),Q("svg",w2,a[190]||(a[190]=[e('',1)]))),a[191]||(a[191]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"2"),t("mi",null,"β"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"β"),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"v"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"Q"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[a[194]||(a[194]=s("A pressure correction ")),t("mjx-container",y2,[(l(),Q("svg",b2,a[192]||(a[192]=[e('',1)]))),a[193]||(a[193]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[195]||(a[195]=s(" is obtained by solving the Poisson equation"))]),t("mjx-container",x2,[(l(),Q("svg",f2,a[196]||(a[196]=[e('',1)]))),a[197]||(a[197]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"W"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),a[203]||(a[203]=t("p",null,"Finally, the divergence free velocity field is given by",-1)),t("mjx-container",M2,[(l(),Q("svg",L2,a[198]||(a[198]=[e('',1)]))),a[199]||(a[199]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")]),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,",")])],-1))]),a[204]||(a[204]=t("p",null,"while the second order accurate pressure is given by",-1)),t("mjx-container",v2,[(l(),Q("svg",E2,a[200]||(a[200]=[e('',1)]))),a[201]||(a[201]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"p"),t("mo",null,"="),t("mn",null,"2"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"4"),t("mn",null,"3")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,".")])],-1))]),a[205]||(a[205]=t("p",null,[t("strong",null,"Fields")],-1)),a[206]||(a[206]=t("ul",null,[t("li",null,[t("p",null,[t("code",null,"β")])]),t("li",null,[t("p",null,[t("code",null,"p_add_solve")])]),t("li",null,[t("p",null,[t("code",null,"method_startup")])])],-1)),a[207]||(a[207]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/time_steppers/methods.jl#L90",target:"_blank",rel:"noreferrer"},"source")],-1))]),a[481]||(a[481]=t("h2",{id:"Runge-Kutta-methods",tabindex:"-1"},[s("Runge-Kutta methods "),t("a",{class:"header-anchor",href:"#Runge-Kutta-methods","aria-label":'Permalink to "Runge-Kutta methods {#Runge-Kutta-methods}"'},"​")],-1)),t("details",Z2,[t("summary",null,[a[208]||(a[208]=t("a",{id:"IncompressibleNavierStokes.AbstractRungeKuttaMethod",href:"#IncompressibleNavierStokes.AbstractRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractRungeKuttaMethod")],-1)),a[209]||(a[209]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[210]||(a[210]=e('
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    ',4))]),t("details",j2,[t("summary",null,[a[211]||(a[211]=t("a",{id:"IncompressibleNavierStokes.ExplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ExplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ExplicitRungeKuttaMethod")],-1)),a[212]||(a[212]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[313]||(a[313]=e('
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    ',2)),t("p",null,[a[229]||(a[229]=s("Consider the velocity field ")),t("mjx-container",D2,[(l(),Q("svg",S2,a[213]||(a[213]=[e('',1)]))),a[214]||(a[214]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[230]||(a[230]=s(" at a certain time ")),t("mjx-container",V2,[(l(),Q("svg",I2,a[215]||(a[215]=[e('',1)]))),a[216]||(a[216]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[231]||(a[231]=s(". We will now perform one time step to ")),t("mjx-container",R2,[(l(),Q("svg",F2,a[217]||(a[217]=[e('',1)]))),a[218]||(a[218]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[232]||(a[232]=s(". For explicit Runge-Kutta methods, this time step is divided into ")),t("mjx-container",C2,[(l(),Q("svg",N2,a[219]||(a[219]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D460",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z",style:{"stroke-width":"3"}})])])],-1)]))),a[220]||(a[220]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"s")])],-1))]),a[233]||(a[233]=s(" sub-steps ")),t("mjx-container",K2,[(l(),Q("svg",A2,a[221]||(a[221]=[e('',1)]))),a[222]||(a[222]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[234]||(a[234]=s(" with increment ")),t("mjx-container",B2,[(l(),Q("svg",O2,a[223]||(a[223]=[e('',1)]))),a[224]||(a[224]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[235]||(a[235]=s(". The final substep performs the full time step ")),t("mjx-container",P2,[(l(),Q("svg",G2,a[225]||(a[225]=[e('',1)]))),a[226]||(a[226]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[236]||(a[236]=s(" such that ")),t("mjx-container",z2,[(l(),Q("svg",J2,a[227]||(a[227]=[e('',1)]))),a[228]||(a[228]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"t")])],-1))]),a[237]||(a[237]=s("."))]),t("p",null,[a[244]||(a[244]=s("For ")),t("mjx-container",U2,[(l(),Q("svg",X2,a[238]||(a[238]=[e('',1)]))),a[239]||(a[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"s")])],-1))]),a[245]||(a[245]=s(", the intermediate velocity ")),t("mjx-container",W2,[(l(),Q("svg",q2,a[240]||(a[240]=[e('',1)]))),a[241]||(a[241]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[246]||(a[246]=s(" and pressure ")),t("mjx-container",$2,[(l(),Q("svg",Y2,a[242]||(a[242]=[e('',1)]))),a[243]||(a[243]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])])],-1))]),a[247]||(a[247]=s(" are computed as follows:"))]),t("mjx-container",_2,[(l(),Q("svg",t3,a[248]||(a[248]=[e('',1)]))),a[249]||(a[249]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"k"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")])])]),t("mtr",null,[t("mtd",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mi",null,"M"),t("mfrac",null,[t("mn",null,"1"),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")])]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")]),t("mo",null,"+"),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[254]||(a[254]=s("where ")),t("mjx-container",a3,[(l(),Q("svg",s3,a[250]||(a[250]=[e('',1)]))),a[251]||(a[251]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[255]||(a[255]=s(" are the Butcher tableau coefficients of the RK-method, with the convention ")),t("mjx-container",e3,[(l(),Q("svg",Q3,a[252]||(a[252]=[e('',1)]))),a[253]||(a[253]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[256]||(a[256]=s("."))]),t("p",null,[a[285]||(a[285]=s("Finally, we return ")),t("mjx-container",l3,[(l(),Q("svg",T3,a[257]||(a[257]=[e('',1)]))),a[258]||(a[258]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")])])],-1))]),a[286]||(a[286]=s(". If ")),t("mjx-container",i3,[(l(),Q("svg",n3,a[259]||(a[259]=[e('',1)]))),a[260]||(a[260]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[287]||(a[287]=s(", we get the accuracy ")),t("mjx-container",o3,[(l(),Q("svg",r3,a[261]||(a[261]=[e('',1)]))),a[262]||(a[262]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[288]||(a[288]=s(", where ")),t("mjx-container",d3,[(l(),Q("svg",m3,a[263]||(a[263]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[264]||(a[264]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[289]||(a[289]=s(" is the order of the RK-method. If we perform ")),t("mjx-container",p3,[(l(),Q("svg",h3,a[265]||(a[265]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[266]||(a[266]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[290]||(a[290]=s(" RK time steps instead of one, starting at exact initial conditions ")),t("mjx-container",g3,[(l(),Q("svg",k3,a[267]||(a[267]=[e('',1)]))),a[268]||(a[268]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[291]||(a[291]=s(", then ")),t("mjx-container",c3,[(l(),Q("svg",u3,a[269]||(a[269]=[e('',1)]))),a[270]||(a[270]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[292]||(a[292]=s(" for all ")),t("mjx-container",H3,[(l(),Q("svg",w3,a[271]||(a[271]=[e('',1)]))),a[272]||(a[272]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),a[293]||(a[293]=s(". Note that for a given ")),t("mjx-container",y3,[(l(),Q("svg",b3,a[273]||(a[273]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[274]||(a[274]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[294]||(a[294]=s(", the corresponding pressure ")),t("mjx-container",x3,[(l(),Q("svg",f3,a[275]||(a[275]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[276]||(a[276]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[295]||(a[295]=s(" can be calculated to the same accuracy as ")),t("mjx-container",M3,[(l(),Q("svg",L3,a[277]||(a[277]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[278]||(a[278]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[296]||(a[296]=s(" by doing an additional pressure projection after each outer time step ")),t("mjx-container",v3,[(l(),Q("svg",E3,a[279]||(a[279]=[e('',1)]))),a[280]||(a[280]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[297]||(a[297]=s(" (if we know ")),t("mjx-container",Z3,[(l(),Q("svg",j3,a[281]||(a[281]=[e('',1)]))),a[282]||(a[282]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[298]||(a[298]=s("), or to first order accuracy by simply returning ")),t("mjx-container",D3,[(l(),Q("svg",S3,a[283]||(a[283]=[e('',1)]))),a[284]||(a[284]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"s")])])],-1))]),a[299]||(a[299]=s("."))]),t("p",null,[a[308]||(a[308]=s("Note that each of the sub-step velocities ")),t("mjx-container",V3,[(l(),Q("svg",I3,a[300]||(a[300]=[e('',1)]))),a[301]||(a[301]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[309]||(a[309]=s(" is divergence free, after projecting the tentative velocities ")),t("mjx-container",R3,[(l(),Q("svg",F3,a[302]||(a[302]=[e('',1)]))),a[303]||(a[303]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])])],-1))]),a[310]||(a[310]=s(". This is ensured due to the judiciously chosen replacement of ")),t("mjx-container",C3,[(l(),Q("svg",N3,a[304]||(a[304]=[e('',1)]))),a[305]||(a[305]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")])],-1))]),a[311]||(a[311]=s(" with ")),t("mjx-container",K3,[(l(),Q("svg",A3,a[306]||(a[306]=[e('',1)]))),a[307]||(a[307]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[312]||(a[312]=s(". The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors."))]),a[314]||(a[314]=e('

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    ',3))]),t("details",B3,[t("summary",null,[a[315]||(a[315]=t("a",{id:"IncompressibleNavierStokes.ImplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ImplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ImplicitRungeKuttaMethod")],-1)),a[316]||(a[316]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[317]||(a[317]=e('
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    ',7))]),t("details",O3,[t("summary",null,[a[318]||(a[318]=t("a",{id:"IncompressibleNavierStokes.RKMethods",href:"#IncompressibleNavierStokes.RKMethods"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods")],-1)),a[319]||(a[319]=s()),i(T,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[320]||(a[320]=e('

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    ',5))]),t("details",P3,[t("summary",null,[a[321]||(a[321]=t("a",{id:"IncompressibleNavierStokes.LMWray3",href:"#IncompressibleNavierStokes.LMWray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.LMWray3")],-1)),a[322]||(a[322]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[323]||(a[323]=e('
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    ',4))]),a[482]||(a[482]=t("h3",{id:"Explicit-Methods",tabindex:"-1"},[s("Explicit Methods "),t("a",{class:"header-anchor",href:"#Explicit-Methods","aria-label":'Permalink to "Explicit Methods {#Explicit-Methods}"'},"​")],-1)),t("details",G3,[t("summary",null,[a[324]||(a[324]=t("a",{id:"IncompressibleNavierStokes.RKMethods.FE11",href:"#IncompressibleNavierStokes.RKMethods.FE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.FE11")],-1)),a[325]||(a[325]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[326]||(a[326]=e(`
    julia
    FE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    `,5))]),t("details",Y,[t("summary",null,[a[66]||(a[66]=t("a",{id:"IncompressibleNavierStokes.create_stepper",href:"#IncompressibleNavierStokes.create_stepper"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.create_stepper")],-1)),a[67]||(a[67]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[68]||(a[68]=e('
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    ',3))]),t("details",_,[t("summary",null,[a[69]||(a[69]=t("a",{id:"IncompressibleNavierStokes.timestep",href:"#IncompressibleNavierStokes.timestep"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep")],-1)),a[70]||(a[70]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[71]||(a[71]=e('
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    ',5))]),t("details",t1,[t("summary",null,[a[72]||(a[72]=t("a",{id:"IncompressibleNavierStokes.timestep!",href:"#IncompressibleNavierStokes.timestep!"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.timestep!")],-1)),a[73]||(a[73]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[74]||(a[74]=e('
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    ',5))]),a[479]||(a[479]=t("h2",{id:"Adams-Bashforth-Crank-Nicolson-method",tabindex:"-1"},[s("Adams-Bashforth Crank-Nicolson method "),t("a",{class:"header-anchor",href:"#Adams-Bashforth-Crank-Nicolson-method","aria-label":'Permalink to "Adams-Bashforth Crank-Nicolson method {#Adams-Bashforth-Crank-Nicolson-method}"'},"​")],-1)),t("details",a1,[t("summary",null,[a[75]||(a[75]=t("a",{id:"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod",href:"#IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod")],-1)),a[76]||(a[76]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[151]||(a[151]=e('
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    ',4)),t("p",null,[a[91]||(a[91]=s("We here require that the time step ")),t("mjx-container",s1,[(l(),Q("svg",e1,a[77]||(a[77]=[e('',1)]))),a[78]||(a[78]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[92]||(a[92]=s(" is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field ")),t("mjx-container",Q1,[(l(),Q("svg",l1,a[79]||(a[79]=[e('',1)]))),a[80]||(a[80]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[93]||(a[93]=s(" at a time ")),t("mjx-container",T1,[(l(),Q("svg",i1,a[81]||(a[81]=[e('',1)]))),a[82]||(a[82]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[94]||(a[94]=s(" and its previous value ")),t("mjx-container",n1,[(l(),Q("svg",o1,a[83]||(a[83]=[e('',1)]))),a[84]||(a[84]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[95]||(a[95]=s(" at the previous time ")),t("mjx-container",r1,[(l(),Q("svg",d1,a[85]||(a[85]=[e('',1)]))),a[86]||(a[86]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[96]||(a[96]=s(", the predicted velocity field ")),t("mjx-container",m1,[(l(),Q("svg",p1,a[87]||(a[87]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[88]||(a[88]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[97]||(a[97]=s(" at the time ")),t("mjx-container",h1,[(l(),Q("svg",g1,a[89]||(a[89]=[e('',1)]))),a[90]||(a[90]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[98]||(a[98]=s(" is defined by first computing a tentative velocity:"))]),t("mjx-container",k1,[(l(),Q("svg",c1,a[99]||(a[99]=[e('',1)]))),a[100]||(a[100]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mfrac",null,[t("mrow",null,[t("mi",null,"v"),t("mo",null,"−"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},"("),t("mi",null,"D"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])])])])],-1))]),t("p",null,[a[111]||(a[111]=s("where ")),t("mjx-container",u1,[(l(),Q("svg",H1,a[101]||(a[101]=[e('',1)]))),a[102]||(a[102]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"∈"),t("mo",{stretchy:"false"},"["),t("mn",null,"0"),t("mo",null,","),t("mn",null,"1"),t("mo",{stretchy:"false"},"]")])],-1))]),a[112]||(a[112]=s(" is the Crank-Nicolson parameter (")),t("mjx-container",w1,[(l(),Q("svg",y1,a[103]||(a[103]=[e('',1)]))),a[104]||(a[104]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"θ"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[113]||(a[113]=s(" for second order convergence), ")),t("mjx-container",x1,[(l(),Q("svg",b1,a[105]||(a[105]=[e('',1)]))),a[106]||(a[106]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"3"),t("mn",null,"2")]),t("mo",null,","),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[114]||(a[114]=s(" are the Adams-Bashforth coefficients, and ")),t("mjx-container",f1,[(l(),Q("svg",M1,a[107]||(a[107]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[108]||(a[108]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[115]||(a[115]=s(" is a tentative velocity yet to be made divergence free. We can group the terms containing ")),t("mjx-container",L1,[(l(),Q("svg",v1,a[109]||(a[109]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[110]||(a[110]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[116]||(a[116]=s(" on the left hand side, to obtain"))]),t("mjx-container",E1,[(l(),Q("svg",Z1,a[117]||(a[117]=[e('',1)]))),a[118]||(a[118]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mi",null,"v")]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"α"),t("mn",null,"0")]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("msub",null,[t("mi",null,"α"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mi",null,"C"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"y"),t("mi",null,"D")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"+"),t("mi",null,"θ"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"−"),t("mi",null,"θ"),t("mo",{stretchy:"false"},")"),t("mi",null,"f"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])])])])],-1))]),t("p",null,[a[125]||(a[125]=s("We can compute ")),t("mjx-container",j1,[(l(),Q("svg",D1,a[119]||(a[119]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D463",d:"M173 380Q173 405 154 405Q130 405 104 376T61 287Q60 286 59 284T58 281T56 279T53 278T49 278T41 278H27Q21 284 21 287Q21 294 29 316T53 368T97 419T160 441Q202 441 225 417T249 361Q249 344 246 335Q246 329 231 291T200 202T182 113Q182 86 187 69Q200 26 250 26Q287 26 319 60T369 139T398 222T409 277Q409 300 401 317T383 343T365 361T357 383Q357 405 376 424T417 443Q436 443 451 425T467 367Q467 340 455 284T418 159T347 40T241 -11Q177 -11 139 22Q102 54 102 117Q102 148 110 181T151 298Q173 362 173 380Z",style:{"stroke-width":"3"}})])])],-1)]))),a[120]||(a[120]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v")])],-1))]),a[126]||(a[126]=s(" by inverting the positive definite matrix ")),t("mjx-container",S1,[(l(),Q("svg",V1,a[121]||(a[121]=[e('',1)]))),a[122]||(a[122]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"I"),t("mo",null,"−"),t("mi",null,"θ"),t("mi",null,"D"),t("mo",{"data-mjx-texclass":"CLOSE"},")")])])],-1))]),a[127]||(a[127]=s(" for the given right hand side using a suitable linear solver. Assuming ")),t("mjx-container",I1,[(l(),Q("svg",R1,a[123]||(a[123]=[e('',1)]))),a[124]||(a[124]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[128]||(a[128]=s(" is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping."))]),t("p",null,[a[131]||(a[131]=s("We then compute the pressure difference ")),t("mjx-container",F1,[(l(),Q("svg",C1,a[129]||(a[129]=[e('',1)]))),a[130]||(a[130]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[132]||(a[132]=s(" by solving"))]),t("mjx-container",N1,[(l(),Q("svg",K1,a[133]||(a[133]=[e('',1)]))),a[134]||(a[134]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("mi",null,"v"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mo",null,"−"),t("mi",null,"W"),t("mi",null,"M"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,",")])],-1))]),t("p",null,[a[137]||(a[137]=s("after which a divergence free velocity ")),t("mjx-container",A1,[(l(),Q("svg",B1,a[135]||(a[135]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[136]||(a[136]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[138]||(a[138]=s(" can be enforced:"))]),t("mjx-container",O1,[(l(),Q("svg",P1,a[139]||(a[139]=[e('',1)]))),a[140]||(a[140]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mi",null,"v"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),t("p",null,[a[147]||(a[147]=s("A first order accurate prediction of the corresponding pressure is ")),t("mjx-container",G1,[(l(),Q("svg",z1,a[141]||(a[141]=[e('',1)]))),a[142]||(a[142]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p"),t("mo",null,"="),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[148]||(a[148]=s(". However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure ")),t("mjx-container",J1,[(l(),Q("svg",U1,a[143]||(a[143]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[144]||(a[144]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[149]||(a[149]=s(" is then accurate to the same order as ")),t("mjx-container",X1,[(l(),Q("svg",W1,a[145]||(a[145]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[146]||(a[146]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[150]||(a[150]=s("."))]),a[152]||(a[152]=e('

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    ',3))]),a[480]||(a[480]=t("h2",{id:"One-leg-beta-method",tabindex:"-1"},[s("One-leg beta method "),t("a",{class:"header-anchor",href:"#One-leg-beta-method","aria-label":'Permalink to "One-leg beta method {#One-leg-beta-method}"'},"​")],-1)),t("details",q1,[t("summary",null,[a[153]||(a[153]=t("a",{id:"IncompressibleNavierStokes.OneLegMethod",href:"#IncompressibleNavierStokes.OneLegMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.OneLegMethod")],-1)),a[154]||(a[154]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[202]||(a[202]=e('
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    ',2)),t("p",null,[a[175]||(a[175]=s("We here require that the time step ")),t("mjx-container",$1,[(l(),Q("svg",Y1,a[155]||(a[155]=[e('',1)]))),a[156]||(a[156]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[176]||(a[176]=s(" is constant. Given the velocity ")),t("mjx-container",_1,[(l(),Q("svg",t2,a[157]||(a[157]=[e('',1)]))),a[158]||(a[158]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[177]||(a[177]=s(" and pressure ")),t("mjx-container",a2,[(l(),Q("svg",s2,a[159]||(a[159]=[e('',1)]))),a[160]||(a[160]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mn",null,"0")])])],-1))]),a[178]||(a[178]=s(" at the current time ")),t("mjx-container",e2,[(l(),Q("svg",Q2,a[161]||(a[161]=[e('',1)]))),a[162]||(a[162]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[179]||(a[179]=s(" and their previous values ")),t("mjx-container",l2,[(l(),Q("svg",T2,a[163]||(a[163]=[e('',1)]))),a[164]||(a[164]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[180]||(a[180]=s(" and ")),t("mjx-container",i2,[(l(),Q("svg",n2,a[165]||(a[165]=[e('',1)]))),a[166]||(a[166]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[181]||(a[181]=s(" at the time ")),t("mjx-container",o2,[(l(),Q("svg",r2,a[167]||(a[167]=[e('',1)]))),a[168]||(a[168]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[182]||(a[182]=s(', we start by computing the "offstep" values ')),t("mjx-container",d2,[(l(),Q("svg",m2,a[169]||(a[169]=[e('',1)]))),a[170]||(a[170]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"v"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"v"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"v"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[183]||(a[183]=s(" and ")),t("mjx-container",p2,[(l(),Q("svg",h2,a[171]||(a[171]=[e('',1)]))),a[172]||(a[172]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"Q"),t("mo",null,"="),t("mo",{stretchy:"false"},"("),t("mn",null,"1"),t("mo",null,"+"),t("mi",null,"β"),t("mo",{stretchy:"false"},")"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("mi",null,"β"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])])])],-1))]),a[184]||(a[184]=s(" for some ")),t("mjx-container",g2,[(l(),Q("svg",k2,a[173]||(a[173]=[e('',1)]))),a[174]||(a[174]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"β"),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])],-1))]),a[185]||(a[185]=s("."))]),t("p",null,[a[188]||(a[188]=s("A tentative velocity field ")),t("mjx-container",c2,[(l(),Q("svg",u2,a[186]||(a[186]=[e('',1)]))),a[187]||(a[187]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])])])],-1))]),a[189]||(a[189]=s(" is then computed as follows:"))]),t("mjx-container",H2,[(l(),Q("svg",w2,a[190]||(a[190]=[e('',1)]))),a[191]||(a[191]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"="),t("mfrac",null,[t("mn",null,"1"),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mn",null,"2"),t("mi",null,"β"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"−"),t("mrow",{"data-mjx-texclass":"INNER"},[t("mo",{"data-mjx-texclass":"OPEN"},"("),t("mi",null,"β"),t("mo",null,"−"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")]),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("mi",null,"v"),t("mo",null,","),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("mo",{stretchy:"false"},"("),t("mi",null,"G"),t("mi",null,"Q"),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",{"data-mjx-texclass":"CLOSE"},")")]),t("mo",null,".")])],-1))]),t("p",null,[a[194]||(a[194]=s("A pressure correction ")),t("mjx-container",y2,[(l(),Q("svg",x2,a[192]||(a[192]=[e('',1)]))),a[193]||(a[193]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p")])],-1))]),a[195]||(a[195]=s(" is obtained by solving the Poisson equation"))]),t("mjx-container",b2,[(l(),Q("svg",f2,a[196]||(a[196]=[e('',1)]))),a[197]||(a[197]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"L"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,"="),t("mfrac",null,[t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])]),t("mi",null,"W"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,".")])],-1))]),a[203]||(a[203]=t("p",null,"Finally, the divergence free velocity field is given by",-1)),t("mjx-container",M2,[(l(),Q("svg",L2,a[198]||(a[198]=[e('',1)]))),a[199]||(a[199]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"u"),t("mo",null,"="),t("mrow",{"data-mjx-texclass":"ORD"},[t("mover",null,[t("mi",null,"v"),t("mo",{stretchy:"false"},"~")])]),t("mo",null,"−"),t("mfrac",null,[t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")]),t("mrow",null,[t("mi",null,"β"),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"1"),t("mn",null,"2")])])]),t("mi",null,"G"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,",")])],-1))]),a[204]||(a[204]=t("p",null,"while the second order accurate pressure is given by",-1)),t("mjx-container",v2,[(l(),Q("svg",E2,a[200]||(a[200]=[e('',1)]))),a[201]||(a[201]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mi",null,"p"),t("mo",null,"="),t("mn",null,"2"),t("msub",null,[t("mi",null,"p"),t("mn",null,"0")]),t("mo",null,"−"),t("msub",null,[t("mi",null,"p"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,"+"),t("mfrac",null,[t("mn",null,"4"),t("mn",null,"3")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"p"),t("mo",null,".")])],-1))]),a[205]||(a[205]=t("p",null,[t("strong",null,"Fields")],-1)),a[206]||(a[206]=t("ul",null,[t("li",null,[t("p",null,[t("code",null,"β")])]),t("li",null,[t("p",null,[t("code",null,"p_add_solve")])]),t("li",null,[t("p",null,[t("code",null,"method_startup")])])],-1)),a[207]||(a[207]=t("p",null,[t("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/time_steppers/methods.jl#L90",target:"_blank",rel:"noreferrer"},"source")],-1))]),a[481]||(a[481]=t("h2",{id:"Runge-Kutta-methods",tabindex:"-1"},[s("Runge-Kutta methods "),t("a",{class:"header-anchor",href:"#Runge-Kutta-methods","aria-label":'Permalink to "Runge-Kutta methods {#Runge-Kutta-methods}"'},"​")],-1)),t("details",Z2,[t("summary",null,[a[208]||(a[208]=t("a",{id:"IncompressibleNavierStokes.AbstractRungeKuttaMethod",href:"#IncompressibleNavierStokes.AbstractRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.AbstractRungeKuttaMethod")],-1)),a[209]||(a[209]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[210]||(a[210]=e('
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    ',4))]),t("details",j2,[t("summary",null,[a[211]||(a[211]=t("a",{id:"IncompressibleNavierStokes.ExplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ExplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ExplicitRungeKuttaMethod")],-1)),a[212]||(a[212]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[313]||(a[313]=e('
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    ',2)),t("p",null,[a[229]||(a[229]=s("Consider the velocity field ")),t("mjx-container",D2,[(l(),Q("svg",S2,a[213]||(a[213]=[e('',1)]))),a[214]||(a[214]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")])])],-1))]),a[230]||(a[230]=s(" at a certain time ")),t("mjx-container",V2,[(l(),Q("svg",I2,a[215]||(a[215]=[e('',1)]))),a[216]||(a[216]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mn",null,"0")])])],-1))]),a[231]||(a[231]=s(". We will now perform one time step to ")),t("mjx-container",R2,[(l(),Q("svg",F2,a[217]||(a[217]=[e('',1)]))),a[218]||(a[218]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"t"),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[232]||(a[232]=s(". For explicit Runge-Kutta methods, this time step is divided into ")),t("mjx-container",C2,[(l(),Q("svg",N2,a[219]||(a[219]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D460",d:"M131 289Q131 321 147 354T203 415T300 442Q362 442 390 415T419 355Q419 323 402 308T364 292Q351 292 340 300T328 326Q328 342 337 354T354 372T367 378Q368 378 368 379Q368 382 361 388T336 399T297 405Q249 405 227 379T204 326Q204 301 223 291T278 274T330 259Q396 230 396 163Q396 135 385 107T352 51T289 7T195 -10Q118 -10 86 19T53 87Q53 126 74 143T118 160Q133 160 146 151T160 120Q160 94 142 76T111 58Q109 57 108 57T107 55Q108 52 115 47T146 34T201 27Q237 27 263 38T301 66T318 97T323 122Q323 150 302 164T254 181T195 196T148 231Q131 256 131 289Z",style:{"stroke-width":"3"}})])])],-1)]))),a[220]||(a[220]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"s")])],-1))]),a[233]||(a[233]=s(" sub-steps ")),t("mjx-container",K2,[(l(),Q("svg",A2,a[221]||(a[221]=[e('',1)]))),a[222]||(a[222]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[234]||(a[234]=s(" with increment ")),t("mjx-container",B2,[(l(),Q("svg",O2,a[223]||(a[223]=[e('',1)]))),a[224]||(a[224]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",null,"="),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[235]||(a[235]=s(". The final substep performs the full time step ")),t("mjx-container",P2,[(l(),Q("svg",G2,a[225]||(a[225]=[e('',1)]))),a[226]||(a[226]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[236]||(a[236]=s(" such that ")),t("mjx-container",z2,[(l(),Q("svg",J2,a[227]||(a[227]=[e('',1)]))),a[228]||(a[228]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"t"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"t")])],-1))]),a[237]||(a[237]=s("."))]),t("p",null,[a[244]||(a[244]=s("For ")),t("mjx-container",U2,[(l(),Q("svg",X2,a[238]||(a[238]=[e('',1)]))),a[239]||(a[239]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"i"),t("mo",null,"="),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"s")])],-1))]),a[245]||(a[245]=s(", the intermediate velocity ")),t("mjx-container",W2,[(l(),Q("svg",q2,a[240]||(a[240]=[e('',1)]))),a[241]||(a[241]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[246]||(a[246]=s(" and pressure ")),t("mjx-container",$2,[(l(),Q("svg",Y2,a[242]||(a[242]=[e('',1)]))),a[243]||(a[243]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])])],-1))]),a[247]||(a[247]=s(" are computed as follows:"))]),t("mjx-container",_2,[(l(),Q("svg",t3,a[248]||(a[248]=[e('',1)]))),a[249]||(a[249]=t("mjx-assistive-mml",{unselectable:"on",display:"block",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",overflow:"hidden",width:"100%"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[t("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"k"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"F"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"u"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",null,","),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"G")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mo",null,"−"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t"),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")])])]),t("mtr",null,[t("mtd",null,[t("mi",null,"L"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mi",null,"M"),t("mfrac",null,[t("mn",null,"1"),t("msub",null,[t("mi",null,"c"),t("mi",null,"i")])]),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mi",null,"k"),t("mi",null,"j")]),t("mo",null,"+"),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("mo",{stretchy:"false"},"("),t("mi",null,"M"),t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd"),t("mtd",null,[t("mi"),t("mo",null,"="),t("mi",null,"W"),t("mfrac",null,[t("mrow",null,[t("mi",null,"M"),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"+"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")]),t("mrow",null,[t("mi",{mathvariant:"normal"},"Δ"),t("msubsup",null,[t("mi",null,"t"),t("mi",null,"i"),t("mi",null,"n")])])])])]),t("mtr",null,[t("mtd",null,[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])]),t("mtd",null,[t("mi"),t("mo",null,"="),t("msub",null,[t("mi",null,"v"),t("mi",null,"i")]),t("mo",null,"−"),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mi",null,"G"),t("msub",null,[t("mi",null,"p"),t("mi",null,"i")]),t("mo",null,",")])])])])],-1))]),t("p",null,[a[254]||(a[254]=s("where ")),t("mjx-container",a3,[(l(),Q("svg",s3,a[250]||(a[250]=[e('',1)]))),a[251]||(a[251]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])]),t("msub",null,[t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[255]||(a[255]=s(" are the Butcher tableau coefficients of the RK-method, with the convention ")),t("mjx-container",e3,[(l(),Q("svg",Q3,a[252]||(a[252]=[e('',1)]))),a[253]||(a[253]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"c"),t("mi",null,"i")]),t("mo",null,"="),t("munderover",null,[t("mo",{"data-mjx-texclass":"OP"},"∑"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"j"),t("mo",null,"="),t("mn",null,"1")]),t("mi",null,"i")]),t("msub",null,[t("mi",null,"a"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"i"),t("mi",null,"j")])])])],-1))]),a[256]||(a[256]=s("."))]),t("p",null,[a[285]||(a[285]=s("Finally, we return ")),t("mjx-container",l3,[(l(),Q("svg",T3,a[257]||(a[257]=[e('',1)]))),a[258]||(a[258]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")])])],-1))]),a[286]||(a[286]=s(". If ")),t("mjx-container",i3,[(l(),Q("svg",n3,a[259]||(a[259]=[e('',1)]))),a[260]||(a[260]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")")])],-1))]),a[287]||(a[287]=s(", we get the accuracy ")),t("mjx-container",o3,[(l(),Q("svg",r3,a[261]||(a[261]=[e('',1)]))),a[262]||(a[262]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"s")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",null,"r"),t("mo",null,"+"),t("mn",null,"1")])]),t("mo",{stretchy:"false"},")")])],-1))]),a[288]||(a[288]=s(", where ")),t("mjx-container",d3,[(l(),Q("svg",m3,a[263]||(a[263]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45F",d:"M21 287Q22 290 23 295T28 317T38 348T53 381T73 411T99 433T132 442Q161 442 183 430T214 408T225 388Q227 382 228 382T236 389Q284 441 347 441H350Q398 441 422 400Q430 381 430 363Q430 333 417 315T391 292T366 288Q346 288 334 299T322 328Q322 376 378 392Q356 405 342 405Q286 405 239 331Q229 315 224 298T190 165Q156 25 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 114 189T154 366Q154 405 128 405Q107 405 92 377T68 316T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[264]||(a[264]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"r")])],-1))]),a[289]||(a[289]=s(" is the order of the RK-method. If we perform ")),t("mjx-container",p3,[(l(),Q("svg",h3,a[265]||(a[265]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45B",d:"M21 287Q22 293 24 303T36 341T56 388T89 425T135 442Q171 442 195 424T225 390T231 369Q231 367 232 367L243 378Q304 442 382 442Q436 442 469 415T503 336T465 179T427 52Q427 26 444 26Q450 26 453 27Q482 32 505 65T540 145Q542 153 560 153Q580 153 580 145Q580 144 576 130Q568 101 554 73T508 17T439 -10Q392 -10 371 17T350 73Q350 92 386 193T423 345Q423 404 379 404H374Q288 404 229 303L222 291L189 157Q156 26 151 16Q138 -11 108 -11Q95 -11 87 -5T76 7T74 17Q74 30 112 180T152 343Q153 348 153 366Q153 405 129 405Q91 405 66 305Q60 285 60 284Q58 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[266]||(a[266]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n")])],-1))]),a[290]||(a[290]=s(" RK time steps instead of one, starting at exact initial conditions ")),t("mjx-container",g3,[(l(),Q("svg",k3,a[267]||(a[267]=[e('',1)]))),a[268]||(a[268]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mn",null,"0")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("mn",null,"0"),t("mo",{stretchy:"false"},")")])],-1))]),a[291]||(a[291]=s(", then ")),t("mjx-container",c3,[(l(),Q("svg",u3,a[269]||(a[269]=[e('',1)]))),a[270]||(a[270]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msup",null,[t("mi",null,"u"),t("mi",null,"n")]),t("mo",null,"="),t("mi",null,"u"),t("mo",{stretchy:"false"},"("),t("msup",null,[t("mi",null,"t"),t("mi",null,"n")]),t("mo",{stretchy:"false"},")"),t("mo",null,"+"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"O")]),t("mo",{stretchy:"false"},"("),t("mi",{mathvariant:"normal"},"Δ"),t("msup",null,[t("mi",null,"t"),t("mi",null,"r")]),t("mo",{stretchy:"false"},")")])],-1))]),a[292]||(a[292]=s(" for all ")),t("mjx-container",H3,[(l(),Q("svg",w3,a[271]||(a[271]=[e('',1)]))),a[272]||(a[272]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"n"),t("mo",null,"∈"),t("mo",{fence:"false",stretchy:"false"},"{"),t("mn",null,"1"),t("mo",null,","),t("mo",null,"…"),t("mo",null,","),t("mi",null,"N"),t("mo",{fence:"false",stretchy:"false"},"}")])],-1))]),a[293]||(a[293]=s(". Note that for a given ")),t("mjx-container",y3,[(l(),Q("svg",x3,a[273]||(a[273]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[274]||(a[274]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[294]||(a[294]=s(", the corresponding pressure ")),t("mjx-container",b3,[(l(),Q("svg",f3,a[275]||(a[275]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D45D",d:"M23 287Q24 290 25 295T30 317T40 348T55 381T75 411T101 433T134 442Q209 442 230 378L240 387Q302 442 358 442Q423 442 460 395T497 281Q497 173 421 82T249 -10Q227 -10 210 -4Q199 1 187 11T168 28L161 36Q160 35 139 -51T118 -138Q118 -144 126 -145T163 -148H188Q194 -155 194 -157T191 -175Q188 -187 185 -190T172 -194Q170 -194 161 -194T127 -193T65 -192Q-5 -192 -24 -194H-32Q-39 -187 -39 -183Q-37 -156 -26 -148H-6Q28 -147 33 -136Q36 -130 94 103T155 350Q156 355 156 364Q156 405 131 405Q109 405 94 377T71 316T59 280Q57 278 43 278H29Q23 284 23 287ZM178 102Q200 26 252 26Q282 26 310 49T356 107Q374 141 392 215T411 325V331Q411 405 350 405Q339 405 328 402T306 393T286 380T269 365T254 350T243 336T235 326L232 322Q232 321 229 308T218 264T204 212Q178 106 178 102Z",style:{"stroke-width":"3"}})])])],-1)]))),a[276]||(a[276]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"p")])],-1))]),a[295]||(a[295]=s(" can be calculated to the same accuracy as ")),t("mjx-container",M3,[(l(),Q("svg",L3,a[277]||(a[277]=[t("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[t("g",{"data-mml-node":"math"},[t("g",{"data-mml-node":"mi"},[t("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z",style:{"stroke-width":"3"}})])])],-1)]))),a[278]||(a[278]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",null,"u")])],-1))]),a[296]||(a[296]=s(" by doing an additional pressure projection after each outer time step ")),t("mjx-container",v3,[(l(),Q("svg",E3,a[279]||(a[279]=[e('',1)]))),a[280]||(a[280]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mi",{mathvariant:"normal"},"Δ"),t("mi",null,"t")])],-1))]),a[297]||(a[297]=s(" (if we know ")),t("mjx-container",Z3,[(l(),Q("svg",j3,a[281]||(a[281]=[e('',1)]))),a[282]||(a[282]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("mi",null,"t"),t("mo",{stretchy:"false"},")")])],-1))]),a[298]||(a[298]=s("), or to first order accuracy by simply returning ")),t("mjx-container",D3,[(l(),Q("svg",S3,a[283]||(a[283]=[e('',1)]))),a[284]||(a[284]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"p"),t("mi",null,"s")])])],-1))]),a[299]||(a[299]=s("."))]),t("p",null,[a[308]||(a[308]=s("Note that each of the sub-step velocities ")),t("mjx-container",V3,[(l(),Q("svg",I3,a[300]||(a[300]=[e('',1)]))),a[301]||(a[301]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"u"),t("mi",null,"i")])])],-1))]),a[309]||(a[309]=s(" is divergence free, after projecting the tentative velocities ")),t("mjx-container",R3,[(l(),Q("svg",F3,a[302]||(a[302]=[e('',1)]))),a[303]||(a[303]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("msub",null,[t("mi",null,"v"),t("mi",null,"i")])])],-1))]),a[310]||(a[310]=s(". This is ensured due to the judiciously chosen replacement of ")),t("mjx-container",C3,[(l(),Q("svg",N3,a[304]||(a[304]=[e('',1)]))),a[305]||(a[305]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mfrac",null,[t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")])]),t("mrow",null,[t("mrow",{"data-mjx-texclass":"ORD"},[t("mi",{mathvariant:"normal"},"d")]),t("mi",null,"t")])]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")")])],-1))]),a[311]||(a[311]=s(" with ")),t("mjx-container",K3,[(l(),Q("svg",A3,a[306]||(a[306]=[e('',1)]))),a[307]||(a[307]=t("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[t("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")]),t("mo",{stretchy:"false"},")"),t("mo",null,"−"),t("msub",null,[t("mi",null,"y"),t("mi",null,"M")]),t("mo",{stretchy:"false"},"("),t("msub",null,[t("mi",null,"t"),t("mn",null,"0")]),t("mo",{stretchy:"false"},")"),t("mo",{stretchy:"false"},")"),t("mrow",{"data-mjx-texclass":"ORD"},[t("mo",null,"/")]),t("mi",{mathvariant:"normal"},"Δ"),t("msub",null,[t("mi",null,"t"),t("mi",null,"i")])])],-1))]),a[312]||(a[312]=s(". The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors."))]),a[314]||(a[314]=e('

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    ',3))]),t("details",B3,[t("summary",null,[a[315]||(a[315]=t("a",{id:"IncompressibleNavierStokes.ImplicitRungeKuttaMethod",href:"#IncompressibleNavierStokes.ImplicitRungeKuttaMethod"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.ImplicitRungeKuttaMethod")],-1)),a[316]||(a[316]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[317]||(a[317]=e('
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    ',7))]),t("details",O3,[t("summary",null,[a[318]||(a[318]=t("a",{id:"IncompressibleNavierStokes.RKMethods",href:"#IncompressibleNavierStokes.RKMethods"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods")],-1)),a[319]||(a[319]=s()),i(T,{type:"info",class:"jlObjectType jlModule",text:"Module"})]),a[320]||(a[320]=e('

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    ',5))]),t("details",P3,[t("summary",null,[a[321]||(a[321]=t("a",{id:"IncompressibleNavierStokes.LMWray3",href:"#IncompressibleNavierStokes.LMWray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.LMWray3")],-1)),a[322]||(a[322]=s()),i(T,{type:"info",class:"jlObjectType jlType",text:"Type"})]),a[323]||(a[323]=e('
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    ',4))]),a[482]||(a[482]=t("h3",{id:"Explicit-Methods",tabindex:"-1"},[s("Explicit Methods "),t("a",{class:"header-anchor",href:"#Explicit-Methods","aria-label":'Permalink to "Explicit Methods {#Explicit-Methods}"'},"​")],-1)),t("details",G3,[t("summary",null,[a[324]||(a[324]=t("a",{id:"IncompressibleNavierStokes.RKMethods.FE11",href:"#IncompressibleNavierStokes.RKMethods.FE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.FE11")],-1)),a[325]||(a[325]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[326]||(a[326]=e(`
    julia
    FE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    `,3))]),t("details",z3,[t("summary",null,[a[327]||(a[327]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP22",href:"#IncompressibleNavierStokes.RKMethods.SSP22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP22")],-1)),a[328]||(a[328]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[329]||(a[329]=e(`
    julia
    SSP22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    `,3))]),t("details",z3,[t("summary",null,[a[327]||(a[327]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP22",href:"#IncompressibleNavierStokes.RKMethods.SSP22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP22")],-1)),a[328]||(a[328]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[329]||(a[329]=e(`
    julia
    SSP22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    `,3))]),t("details",J3,[t("summary",null,[a[330]||(a[330]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP42",href:"#IncompressibleNavierStokes.RKMethods.SSP42"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP42")],-1)),a[331]||(a[331]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[332]||(a[332]=e(`
    julia
    SSP42(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    `,3))]),t("details",J3,[t("summary",null,[a[330]||(a[330]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP42",href:"#IncompressibleNavierStokes.RKMethods.SSP42"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP42")],-1)),a[331]||(a[331]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[332]||(a[332]=e(`
    julia
    SSP42(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    `,3))]),t("details",U3,[t("summary",null,[a[333]||(a[333]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP33",href:"#IncompressibleNavierStokes.RKMethods.SSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP33")],-1)),a[334]||(a[334]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[335]||(a[335]=e(`
    julia
    SSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    `,3))]),t("details",U3,[t("summary",null,[a[333]||(a[333]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP33",href:"#IncompressibleNavierStokes.RKMethods.SSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP33")],-1)),a[334]||(a[334]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[335]||(a[335]=e(`
    julia
    SSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    `,3))]),t("details",X3,[t("summary",null,[a[336]||(a[336]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP43",href:"#IncompressibleNavierStokes.RKMethods.SSP43"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP43")],-1)),a[337]||(a[337]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[338]||(a[338]=e(`
    julia
    SSP43(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    `,3))]),t("details",X3,[t("summary",null,[a[336]||(a[336]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP43",href:"#IncompressibleNavierStokes.RKMethods.SSP43"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP43")],-1)),a[337]||(a[337]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[338]||(a[338]=e(`
    julia
    SSP43(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    `,3))]),t("details",W3,[t("summary",null,[a[339]||(a[339]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP104",href:"#IncompressibleNavierStokes.RKMethods.SSP104"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP104")],-1)),a[340]||(a[340]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[341]||(a[341]=e(`
    julia
    SSP104(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    `,3))]),t("details",W3,[t("summary",null,[a[339]||(a[339]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SSP104",href:"#IncompressibleNavierStokes.RKMethods.SSP104"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SSP104")],-1)),a[340]||(a[340]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[341]||(a[341]=e(`
    julia
    SSP104(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    `,3))]),t("details",q3,[t("summary",null,[a[342]||(a[342]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs2",href:"#IncompressibleNavierStokes.RKMethods.rSSPs2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs2")],-1)),a[343]||(a[343]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[344]||(a[344]=e(`
    julia
    rSSPs2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    `,3))]),t("details",q3,[t("summary",null,[a[342]||(a[342]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs2",href:"#IncompressibleNavierStokes.RKMethods.rSSPs2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs2")],-1)),a[343]||(a[343]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[344]||(a[344]=e(`
    julia
    rSSPs2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    `,3))]),t("details",$3,[t("summary",null,[a[345]||(a[345]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs3",href:"#IncompressibleNavierStokes.RKMethods.rSSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs3")],-1)),a[346]||(a[346]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[347]||(a[347]=e(`
    julia
    rSSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    `,3))]),t("details",$3,[t("summary",null,[a[345]||(a[345]=t("a",{id:"IncompressibleNavierStokes.RKMethods.rSSPs3",href:"#IncompressibleNavierStokes.RKMethods.rSSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.rSSPs3")],-1)),a[346]||(a[346]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[347]||(a[347]=e(`
    julia
    rSSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    `,3))]),t("details",Y3,[t("summary",null,[a[348]||(a[348]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Wray3",href:"#IncompressibleNavierStokes.RKMethods.Wray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Wray3")],-1)),a[349]||(a[349]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[350]||(a[350]=e(`
    julia
    Wray3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    `,3))]),t("details",Y3,[t("summary",null,[a[348]||(a[348]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Wray3",href:"#IncompressibleNavierStokes.RKMethods.Wray3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Wray3")],-1)),a[349]||(a[349]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[350]||(a[350]=e(`
    julia
    Wray3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    `,3))]),t("details",_3,[t("summary",null,[a[351]||(a[351]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK56",href:"#IncompressibleNavierStokes.RKMethods.RK56"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK56")],-1)),a[352]||(a[352]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[353]||(a[353]=e(`
    julia
    RK56(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    `,3))]),t("details",_3,[t("summary",null,[a[351]||(a[351]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK56",href:"#IncompressibleNavierStokes.RKMethods.RK56"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK56")],-1)),a[352]||(a[352]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[353]||(a[353]=e(`
    julia
    RK56(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    `,3))]),t("details",t4,[t("summary",null,[a[354]||(a[354]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DOPRI6",href:"#IncompressibleNavierStokes.RKMethods.DOPRI6"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DOPRI6")],-1)),a[355]||(a[355]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[356]||(a[356]=e(`
    julia
    DOPRI6(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    `,3))]),t("details",t4,[t("summary",null,[a[354]||(a[354]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DOPRI6",href:"#IncompressibleNavierStokes.RKMethods.DOPRI6"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DOPRI6")],-1)),a[355]||(a[355]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[356]||(a[356]=e(`
    julia
    DOPRI6(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    `,3))]),a[483]||(a[483]=t("h3",{id:"Implicit-Methods",tabindex:"-1"},[s("Implicit Methods "),t("a",{class:"header-anchor",href:"#Implicit-Methods","aria-label":'Permalink to "Implicit Methods {#Implicit-Methods}"'},"​")],-1)),t("details",a4,[t("summary",null,[a[357]||(a[357]=t("a",{id:"IncompressibleNavierStokes.RKMethods.BE11",href:"#IncompressibleNavierStokes.RKMethods.BE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.BE11")],-1)),a[358]||(a[358]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[359]||(a[359]=e(`
    julia
    BE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    `,3))]),a[483]||(a[483]=t("h3",{id:"Implicit-Methods",tabindex:"-1"},[s("Implicit Methods "),t("a",{class:"header-anchor",href:"#Implicit-Methods","aria-label":'Permalink to "Implicit Methods {#Implicit-Methods}"'},"​")],-1)),t("details",a4,[t("summary",null,[a[357]||(a[357]=t("a",{id:"IncompressibleNavierStokes.RKMethods.BE11",href:"#IncompressibleNavierStokes.RKMethods.BE11"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.BE11")],-1)),a[358]||(a[358]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[359]||(a[359]=e(`
    julia
    BE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    `,3))]),t("details",s4,[t("summary",null,[a[360]||(a[360]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SDIRK34",href:"#IncompressibleNavierStokes.RKMethods.SDIRK34"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SDIRK34")],-1)),a[361]||(a[361]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[362]||(a[362]=e(`
    julia
    SDIRK34(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    `,3))]),t("details",s4,[t("summary",null,[a[360]||(a[360]=t("a",{id:"IncompressibleNavierStokes.RKMethods.SDIRK34",href:"#IncompressibleNavierStokes.RKMethods.SDIRK34"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.SDIRK34")],-1)),a[361]||(a[361]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[362]||(a[362]=e(`
    julia
    SDIRK34(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    `,3))]),t("details",e4,[t("summary",null,[a[363]||(a[363]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPm2",href:"#IncompressibleNavierStokes.RKMethods.ISSPm2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPm2")],-1)),a[364]||(a[364]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[365]||(a[365]=e(`
    julia
    ISSPm2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    `,3))]),t("details",e4,[t("summary",null,[a[363]||(a[363]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPm2",href:"#IncompressibleNavierStokes.RKMethods.ISSPm2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPm2")],-1)),a[364]||(a[364]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[365]||(a[365]=e(`
    julia
    ISSPm2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPm2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    `,3))]),t("details",Q4,[t("summary",null,[a[366]||(a[366]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPs3",href:"#IncompressibleNavierStokes.RKMethods.ISSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPs3")],-1)),a[367]||(a[367]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[368]||(a[368]=e(`
    julia
    ISSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    `,3))]),t("details",Q4,[t("summary",null,[a[366]||(a[366]=t("a",{id:"IncompressibleNavierStokes.RKMethods.ISSPs3",href:"#IncompressibleNavierStokes.RKMethods.ISSPs3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.ISSPs3")],-1)),a[367]||(a[367]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[368]||(a[368]=e(`
    julia
    ISSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    `,3))]),a[484]||(a[484]=t("h3",{id:"Half-explicit-methods",tabindex:"-1"},[s("Half explicit methods "),t("a",{class:"header-anchor",href:"#Half-explicit-methods","aria-label":'Permalink to "Half explicit methods {#Half-explicit-methods}"'},"​")],-1)),t("details",l4,[t("summary",null,[a[369]||(a[369]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3",href:"#IncompressibleNavierStokes.RKMethods.HEM3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3")],-1)),a[370]||(a[370]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[371]||(a[371]=e(`
    julia
    HEM3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    `,3))]),a[484]||(a[484]=t("h3",{id:"Half-explicit-methods",tabindex:"-1"},[s("Half explicit methods "),t("a",{class:"header-anchor",href:"#Half-explicit-methods","aria-label":'Permalink to "Half explicit methods {#Half-explicit-methods}"'},"​")],-1)),t("details",l4,[t("summary",null,[a[369]||(a[369]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3",href:"#IncompressibleNavierStokes.RKMethods.HEM3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3")],-1)),a[370]||(a[370]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[371]||(a[371]=e(`
    julia
    HEM3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    `,3))]),t("details",T4,[t("summary",null,[a[372]||(a[372]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3BS",href:"#IncompressibleNavierStokes.RKMethods.HEM3BS"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3BS")],-1)),a[373]||(a[373]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[374]||(a[374]=e(`
    julia
    HEM3BS(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    `,3))]),t("details",T4,[t("summary",null,[a[372]||(a[372]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM3BS",href:"#IncompressibleNavierStokes.RKMethods.HEM3BS"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM3BS")],-1)),a[373]||(a[373]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[374]||(a[374]=e(`
    julia
    HEM3BS(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    `,3))]),t("details",i4,[t("summary",null,[a[375]||(a[375]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM5",href:"#IncompressibleNavierStokes.RKMethods.HEM5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM5")],-1)),a[376]||(a[376]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[377]||(a[377]=e(`
    julia
    HEM5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    `,3))]),t("details",i4,[t("summary",null,[a[375]||(a[375]=t("a",{id:"IncompressibleNavierStokes.RKMethods.HEM5",href:"#IncompressibleNavierStokes.RKMethods.HEM5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.HEM5")],-1)),a[376]||(a[376]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[377]||(a[377]=e(`
    julia
    HEM5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    `,3))]),a[485]||(a[485]=t("h3",{id:"Classical-Methods",tabindex:"-1"},[s("Classical Methods "),t("a",{class:"header-anchor",href:"#Classical-Methods","aria-label":'Permalink to "Classical Methods {#Classical-Methods}"'},"​")],-1)),t("details",n4,[t("summary",null,[a[378]||(a[378]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL1",href:"#IncompressibleNavierStokes.RKMethods.GL1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL1")],-1)),a[379]||(a[379]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[380]||(a[380]=e(`
    julia
    GL1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    `,3))]),a[485]||(a[485]=t("h3",{id:"Classical-Methods",tabindex:"-1"},[s("Classical Methods "),t("a",{class:"header-anchor",href:"#Classical-Methods","aria-label":'Permalink to "Classical Methods {#Classical-Methods}"'},"​")],-1)),t("details",n4,[t("summary",null,[a[378]||(a[378]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL1",href:"#IncompressibleNavierStokes.RKMethods.GL1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL1")],-1)),a[379]||(a[379]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[380]||(a[380]=e(`
    julia
    GL1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    `,3))]),t("details",o4,[t("summary",null,[a[381]||(a[381]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL2",href:"#IncompressibleNavierStokes.RKMethods.GL2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL2")],-1)),a[382]||(a[382]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[383]||(a[383]=e(`
    julia
    GL2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    `,3))]),t("details",o4,[t("summary",null,[a[381]||(a[381]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL2",href:"#IncompressibleNavierStokes.RKMethods.GL2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL2")],-1)),a[382]||(a[382]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[383]||(a[383]=e(`
    julia
    GL2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    `,3))]),t("details",r4,[t("summary",null,[a[384]||(a[384]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL3",href:"#IncompressibleNavierStokes.RKMethods.GL3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL3")],-1)),a[385]||(a[385]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[386]||(a[386]=e(`
    julia
    GL3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    `,3))]),t("details",r4,[t("summary",null,[a[384]||(a[384]=t("a",{id:"IncompressibleNavierStokes.RKMethods.GL3",href:"#IncompressibleNavierStokes.RKMethods.GL3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.GL3")],-1)),a[385]||(a[385]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[386]||(a[386]=e(`
    julia
    GL3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    `,3))]),t("details",d4,[t("summary",null,[a[387]||(a[387]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA1",href:"#IncompressibleNavierStokes.RKMethods.RIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA1")],-1)),a[388]||(a[388]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[389]||(a[389]=e(`
    julia
    RIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    `,3))]),t("details",d4,[t("summary",null,[a[387]||(a[387]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA1",href:"#IncompressibleNavierStokes.RKMethods.RIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA1")],-1)),a[388]||(a[388]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[389]||(a[389]=e(`
    julia
    RIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    `,3))]),t("details",m4,[t("summary",null,[a[390]||(a[390]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA2",href:"#IncompressibleNavierStokes.RKMethods.RIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA2")],-1)),a[391]||(a[391]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[392]||(a[392]=e(`
    julia
    RIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    `,3))]),t("details",m4,[t("summary",null,[a[390]||(a[390]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA2",href:"#IncompressibleNavierStokes.RKMethods.RIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA2")],-1)),a[391]||(a[391]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[392]||(a[392]=e(`
    julia
    RIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    `,3))]),t("details",p4,[t("summary",null,[a[393]||(a[393]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA3",href:"#IncompressibleNavierStokes.RKMethods.RIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA3")],-1)),a[394]||(a[394]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[395]||(a[395]=e(`
    julia
    RIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    `,3))]),t("details",p4,[t("summary",null,[a[393]||(a[393]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIA3",href:"#IncompressibleNavierStokes.RKMethods.RIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIA3")],-1)),a[394]||(a[394]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[395]||(a[395]=e(`
    julia
    RIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    `,3))]),t("details",h4,[t("summary",null,[a[396]||(a[396]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA1",href:"#IncompressibleNavierStokes.RKMethods.RIIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA1")],-1)),a[397]||(a[397]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[398]||(a[398]=e(`
    julia
    RIIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    `,3))]),t("details",h4,[t("summary",null,[a[396]||(a[396]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA1",href:"#IncompressibleNavierStokes.RKMethods.RIIA1"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA1")],-1)),a[397]||(a[397]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[398]||(a[398]=e(`
    julia
    RIIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    `,3))]),t("details",g4,[t("summary",null,[a[399]||(a[399]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA2",href:"#IncompressibleNavierStokes.RKMethods.RIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA2")],-1)),a[400]||(a[400]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[401]||(a[401]=e(`
    julia
    RIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    `,3))]),t("details",g4,[t("summary",null,[a[399]||(a[399]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA2",href:"#IncompressibleNavierStokes.RKMethods.RIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA2")],-1)),a[400]||(a[400]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[401]||(a[401]=e(`
    julia
    RIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    `,3))]),t("details",k4,[t("summary",null,[a[402]||(a[402]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA3",href:"#IncompressibleNavierStokes.RKMethods.RIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA3")],-1)),a[403]||(a[403]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[404]||(a[404]=e(`
    julia
    RIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    `,3))]),t("details",k4,[t("summary",null,[a[402]||(a[402]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RIIA3",href:"#IncompressibleNavierStokes.RKMethods.RIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RIIA3")],-1)),a[403]||(a[403]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[404]||(a[404]=e(`
    julia
    RIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    `,3))]),t("details",c4,[t("summary",null,[a[405]||(a[405]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA2",href:"#IncompressibleNavierStokes.RKMethods.LIIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA2")],-1)),a[406]||(a[406]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[407]||(a[407]=e(`
    julia
    LIIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    `,3))]),t("details",c4,[t("summary",null,[a[405]||(a[405]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA2",href:"#IncompressibleNavierStokes.RKMethods.LIIIA2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA2")],-1)),a[406]||(a[406]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[407]||(a[407]=e(`
    julia
    LIIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    `,3))]),t("details",u4,[t("summary",null,[a[408]||(a[408]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA3",href:"#IncompressibleNavierStokes.RKMethods.LIIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA3")],-1)),a[409]||(a[409]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[410]||(a[410]=e(`
    julia
    LIIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    `,3))]),t("details",u4,[t("summary",null,[a[408]||(a[408]=t("a",{id:"IncompressibleNavierStokes.RKMethods.LIIIA3",href:"#IncompressibleNavierStokes.RKMethods.LIIIA3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.LIIIA3")],-1)),a[409]||(a[409]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[410]||(a[410]=e(`
    julia
    LIIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    `,3))]),a[486]||(a[486]=t("h3",{id:"Chebyshev-methods",tabindex:"-1"},[s("Chebyshev methods "),t("a",{class:"header-anchor",href:"#Chebyshev-methods","aria-label":'Permalink to "Chebyshev methods {#Chebyshev-methods}"'},"​")],-1)),t("details",H4,[t("summary",null,[a[411]||(a[411]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHDIRK3",href:"#IncompressibleNavierStokes.RKMethods.CHDIRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHDIRK3")],-1)),a[412]||(a[412]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[413]||(a[413]=e(`
    julia
    CHDIRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    `,3))]),a[486]||(a[486]=t("h3",{id:"Chebyshev-methods",tabindex:"-1"},[s("Chebyshev methods "),t("a",{class:"header-anchor",href:"#Chebyshev-methods","aria-label":'Permalink to "Chebyshev methods {#Chebyshev-methods}"'},"​")],-1)),t("details",H4,[t("summary",null,[a[411]||(a[411]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHDIRK3",href:"#IncompressibleNavierStokes.RKMethods.CHDIRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHDIRK3")],-1)),a[412]||(a[412]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[413]||(a[413]=e(`
    julia
    CHDIRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    `,3))]),t("details",w4,[t("summary",null,[a[414]||(a[414]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHCONS3",href:"#IncompressibleNavierStokes.RKMethods.CHCONS3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHCONS3")],-1)),a[415]||(a[415]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[416]||(a[416]=e(`
    julia
    CHCONS3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    `,3))]),t("details",w4,[t("summary",null,[a[414]||(a[414]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHCONS3",href:"#IncompressibleNavierStokes.RKMethods.CHCONS3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHCONS3")],-1)),a[415]||(a[415]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[416]||(a[416]=e(`
    julia
    CHCONS3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    `,3))]),t("details",y4,[t("summary",null,[a[417]||(a[417]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC3",href:"#IncompressibleNavierStokes.RKMethods.CHC3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC3")],-1)),a[418]||(a[418]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[419]||(a[419]=e(`
    julia
    CHC3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    `,3))]),t("details",y4,[t("summary",null,[a[417]||(a[417]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC3",href:"#IncompressibleNavierStokes.RKMethods.CHC3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC3")],-1)),a[418]||(a[418]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[419]||(a[419]=e(`
    julia
    CHC3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    `,3))]),t("details",b4,[t("summary",null,[a[420]||(a[420]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC5",href:"#IncompressibleNavierStokes.RKMethods.CHC5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC5")],-1)),a[421]||(a[421]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[422]||(a[422]=e(`
    julia
    CHC5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    `,3))]),t("details",x4,[t("summary",null,[a[420]||(a[420]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CHC5",href:"#IncompressibleNavierStokes.RKMethods.CHC5"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CHC5")],-1)),a[421]||(a[421]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[422]||(a[422]=e(`
    julia
    CHC5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    `,3))]),a[487]||(a[487]=t("h3",{id:"Miscellaneous-Methods",tabindex:"-1"},[s("Miscellaneous Methods "),t("a",{class:"header-anchor",href:"#Miscellaneous-Methods","aria-label":'Permalink to "Miscellaneous Methods {#Miscellaneous-Methods}"'},"​")],-1)),t("details",x4,[t("summary",null,[a[423]||(a[423]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Mid22",href:"#IncompressibleNavierStokes.RKMethods.Mid22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Mid22")],-1)),a[424]||(a[424]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[425]||(a[425]=e(`
    julia
    Mid22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    `,3))]),a[487]||(a[487]=t("h3",{id:"Miscellaneous-Methods",tabindex:"-1"},[s("Miscellaneous Methods "),t("a",{class:"header-anchor",href:"#Miscellaneous-Methods","aria-label":'Permalink to "Miscellaneous Methods {#Miscellaneous-Methods}"'},"​")],-1)),t("details",b4,[t("summary",null,[a[423]||(a[423]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Mid22",href:"#IncompressibleNavierStokes.RKMethods.Mid22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Mid22")],-1)),a[424]||(a[424]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[425]||(a[425]=e(`
    julia
    Mid22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    `,3))]),t("details",f4,[t("summary",null,[a[426]||(a[426]=t("a",{id:"IncompressibleNavierStokes.RKMethods.MTE22",href:"#IncompressibleNavierStokes.RKMethods.MTE22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.MTE22")],-1)),a[427]||(a[427]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[428]||(a[428]=e(`
    julia
    MTE22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    `,3))]),t("details",f4,[t("summary",null,[a[426]||(a[426]=t("a",{id:"IncompressibleNavierStokes.RKMethods.MTE22",href:"#IncompressibleNavierStokes.RKMethods.MTE22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.MTE22")],-1)),a[427]||(a[427]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[428]||(a[428]=e(`
    julia
    MTE22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    `,3))]),t("details",M4,[t("summary",null,[a[429]||(a[429]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CN22",href:"#IncompressibleNavierStokes.RKMethods.CN22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CN22")],-1)),a[430]||(a[430]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[431]||(a[431]=e(`
    julia
    CN22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    `,3))]),t("details",M4,[t("summary",null,[a[429]||(a[429]=t("a",{id:"IncompressibleNavierStokes.RKMethods.CN22",href:"#IncompressibleNavierStokes.RKMethods.CN22"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.CN22")],-1)),a[430]||(a[430]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[431]||(a[431]=e(`
    julia
    CN22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    `,3))]),t("details",L4,[t("summary",null,[a[432]||(a[432]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Heun33",href:"#IncompressibleNavierStokes.RKMethods.Heun33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Heun33")],-1)),a[433]||(a[433]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[434]||(a[434]=e(`
    julia
    Heun33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    `,3))]),t("details",L4,[t("summary",null,[a[432]||(a[432]=t("a",{id:"IncompressibleNavierStokes.RKMethods.Heun33",href:"#IncompressibleNavierStokes.RKMethods.Heun33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.Heun33")],-1)),a[433]||(a[433]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[434]||(a[434]=e(`
    julia
    Heun33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    `,3))]),t("details",v4,[t("summary",null,[a[435]||(a[435]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33C2",href:"#IncompressibleNavierStokes.RKMethods.RK33C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33C2")],-1)),a[436]||(a[436]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[437]||(a[437]=e(`
    julia
    RK33C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    `,3))]),t("details",v4,[t("summary",null,[a[435]||(a[435]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33C2",href:"#IncompressibleNavierStokes.RKMethods.RK33C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33C2")],-1)),a[436]||(a[436]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[437]||(a[437]=e(`
    julia
    RK33C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    `,3))]),t("details",E4,[t("summary",null,[a[438]||(a[438]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33P2",href:"#IncompressibleNavierStokes.RKMethods.RK33P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33P2")],-1)),a[439]||(a[439]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[440]||(a[440]=e(`
    julia
    RK33P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    `,3))]),t("details",E4,[t("summary",null,[a[438]||(a[438]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK33P2",href:"#IncompressibleNavierStokes.RKMethods.RK33P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK33P2")],-1)),a[439]||(a[439]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[440]||(a[440]=e(`
    julia
    RK33P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    `,3))]),t("details",Z4,[t("summary",null,[a[441]||(a[441]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44",href:"#IncompressibleNavierStokes.RKMethods.RK44"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44")],-1)),a[442]||(a[442]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[443]||(a[443]=e(`
    julia
    RK44(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    `,3))]),t("details",Z4,[t("summary",null,[a[441]||(a[441]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44",href:"#IncompressibleNavierStokes.RKMethods.RK44"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44")],-1)),a[442]||(a[442]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[443]||(a[443]=e(`
    julia
    RK44(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    `,3))]),t("details",j4,[t("summary",null,[a[444]||(a[444]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C2",href:"#IncompressibleNavierStokes.RKMethods.RK44C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C2")],-1)),a[445]||(a[445]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[446]||(a[446]=e(`
    julia
    RK44C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    `,3))]),t("details",j4,[t("summary",null,[a[444]||(a[444]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C2",href:"#IncompressibleNavierStokes.RKMethods.RK44C2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C2")],-1)),a[445]||(a[445]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[446]||(a[446]=e(`
    julia
    RK44C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    `,3))]),t("details",D4,[t("summary",null,[a[447]||(a[447]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C23",href:"#IncompressibleNavierStokes.RKMethods.RK44C23"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C23")],-1)),a[448]||(a[448]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[449]||(a[449]=e(`
    julia
    RK44C23(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    `,3))]),t("details",D4,[t("summary",null,[a[447]||(a[447]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44C23",href:"#IncompressibleNavierStokes.RKMethods.RK44C23"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44C23")],-1)),a[448]||(a[448]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[449]||(a[449]=e(`
    julia
    RK44C23(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    `,3))]),t("details",S4,[t("summary",null,[a[450]||(a[450]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44P2",href:"#IncompressibleNavierStokes.RKMethods.RK44P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44P2")],-1)),a[451]||(a[451]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[452]||(a[452]=e(`
    julia
    RK44P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    `,3))]),t("details",S4,[t("summary",null,[a[450]||(a[450]=t("a",{id:"IncompressibleNavierStokes.RKMethods.RK44P2",href:"#IncompressibleNavierStokes.RKMethods.RK44P2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.RK44P2")],-1)),a[451]||(a[451]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[452]||(a[452]=e(`
    julia
    RK44P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    `,3))]),a[488]||(a[488]=t("h3",{id:"DSRK-Methods",tabindex:"-1"},[s("DSRK Methods "),t("a",{class:"header-anchor",href:"#DSRK-Methods","aria-label":'Permalink to "DSRK Methods {#DSRK-Methods}"'},"​")],-1)),t("details",V4,[t("summary",null,[a[453]||(a[453]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSso2",href:"#IncompressibleNavierStokes.RKMethods.DSso2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSso2")],-1)),a[454]||(a[454]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[455]||(a[455]=e(`
    julia
    DSso2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    `,3))]),a[488]||(a[488]=t("h3",{id:"DSRK-Methods",tabindex:"-1"},[s("DSRK Methods "),t("a",{class:"header-anchor",href:"#DSRK-Methods","aria-label":'Permalink to "DSRK Methods {#DSRK-Methods}"'},"​")],-1)),t("details",V4,[t("summary",null,[a[453]||(a[453]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSso2",href:"#IncompressibleNavierStokes.RKMethods.DSso2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSso2")],-1)),a[454]||(a[454]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[455]||(a[455]=e(`
    julia
    DSso2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    `,3))]),t("details",I4,[t("summary",null,[a[456]||(a[456]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK2",href:"#IncompressibleNavierStokes.RKMethods.DSRK2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK2")],-1)),a[457]||(a[457]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[458]||(a[458]=e(`
    julia
    DSRK2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    `,3))]),t("details",I4,[t("summary",null,[a[456]||(a[456]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK2",href:"#IncompressibleNavierStokes.RKMethods.DSRK2"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK2")],-1)),a[457]||(a[457]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[458]||(a[458]=e(`
    julia
    DSRK2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    `,3))]),t("details",R4,[t("summary",null,[a[459]||(a[459]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK3",href:"#IncompressibleNavierStokes.RKMethods.DSRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK3")],-1)),a[460]||(a[460]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[461]||(a[461]=e(`
    julia
    DSRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    `,3))]),t("details",R4,[t("summary",null,[a[459]||(a[459]=t("a",{id:"IncompressibleNavierStokes.RKMethods.DSRK3",href:"#IncompressibleNavierStokes.RKMethods.DSRK3"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.DSRK3")],-1)),a[460]||(a[460]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[461]||(a[461]=e(`
    julia
    DSRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    `,3))]),a[489]||(a[489]=t("h3",{id:"Non-SSP-Methods-of-Wong-and-Spiteri",tabindex:"-1"},[s('"Non-SSP" Methods of Wong & Spiteri '),t("a",{class:"header-anchor",href:"#Non-SSP-Methods-of-Wong-and-Spiteri","aria-label":'Permalink to ""Non-SSP" Methods of Wong & Spiteri {#"Non-SSP"-Methods-of-Wong-and-Spiteri}"'},"​")],-1)),t("details",F4,[t("summary",null,[a[462]||(a[462]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP21",href:"#IncompressibleNavierStokes.RKMethods.NSSP21"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP21")],-1)),a[463]||(a[463]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[464]||(a[464]=e(`
    julia
    NSSP21(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    `,3))]),a[489]||(a[489]=t("h3",{id:"Non-SSP-Methods-of-Wong-and-Spiteri",tabindex:"-1"},[s('"Non-SSP" Methods of Wong & Spiteri '),t("a",{class:"header-anchor",href:"#Non-SSP-Methods-of-Wong-and-Spiteri","aria-label":'Permalink to ""Non-SSP" Methods of Wong & Spiteri {#"Non-SSP"-Methods-of-Wong-and-Spiteri}"'},"​")],-1)),t("details",F4,[t("summary",null,[a[462]||(a[462]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP21",href:"#IncompressibleNavierStokes.RKMethods.NSSP21"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP21")],-1)),a[463]||(a[463]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[464]||(a[464]=e(`
    julia
    NSSP21(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    `,3))]),t("details",C4,[t("summary",null,[a[465]||(a[465]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP32",href:"#IncompressibleNavierStokes.RKMethods.NSSP32"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP32")],-1)),a[466]||(a[466]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[467]||(a[467]=e(`
    julia
    NSSP32(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    `,3))]),t("details",C4,[t("summary",null,[a[465]||(a[465]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP32",href:"#IncompressibleNavierStokes.RKMethods.NSSP32"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP32")],-1)),a[466]||(a[466]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[467]||(a[467]=e(`
    julia
    NSSP32(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    `,3))]),t("details",N4,[t("summary",null,[a[468]||(a[468]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP33",href:"#IncompressibleNavierStokes.RKMethods.NSSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP33")],-1)),a[469]||(a[469]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[470]||(a[470]=e(`
    julia
    NSSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    `,3))]),t("details",N4,[t("summary",null,[a[468]||(a[468]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP33",href:"#IncompressibleNavierStokes.RKMethods.NSSP33"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP33")],-1)),a[469]||(a[469]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[470]||(a[470]=e(`
    julia
    NSSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    `,3))]),t("details",K4,[t("summary",null,[a[471]||(a[471]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP53",href:"#IncompressibleNavierStokes.RKMethods.NSSP53"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP53")],-1)),a[472]||(a[472]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[473]||(a[473]=e(`
    julia
    NSSP53(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    `,3))]),t("details",K4,[t("summary",null,[a[471]||(a[471]=t("a",{id:"IncompressibleNavierStokes.RKMethods.NSSP53",href:"#IncompressibleNavierStokes.RKMethods.NSSP53"},[t("span",{class:"jlbinding"},"IncompressibleNavierStokes.RKMethods.NSSP53")],-1)),a[472]||(a[472]=s()),i(T,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),a[473]||(a[473]=e(`
    julia
    NSSP53(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    `,3))])])}const X4=n(r,[["render",A4]]);export{U4 as __pageData,X4 as default}; +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    `,3))])])}const X4=n(r,[["render",A4]]);export{U4 as __pageData,X4 as default}; diff --git a/previews/PR126/assets/manual_utils.md.D-cuMr_K.js b/previews/PR126/assets/manual_utils.md.D_Sg5CTM.js similarity index 70% rename from previews/PR126/assets/manual_utils.md.D-cuMr_K.js rename to previews/PR126/assets/manual_utils.md.D_Sg5CTM.js index b5b76bed..8efc7b3d 100644 --- a/previews/PR126/assets/manual_utils.md.D-cuMr_K.js +++ b/previews/PR126/assets/manual_utils.md.D_Sg5CTM.js @@ -1,11 +1,11 @@ -import{_ as r,c as n,j as i,a as e,G as l,a5 as t,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const F=JSON.parse('{"title":"Utils","description":"","frontmatter":{},"headers":[],"relativePath":"manual/utils.md","filePath":"manual/utils.md","lastUpdated":null}'),d={name:"manual/utils.md"},k={class:"jldocstring custom-block",open:""},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.779ex",height:"1.995ex",role:"img",focusable:"false",viewBox:"0 -666 2996.4 882","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function f(T,s,v,Q,j,x){const a=o("Badge");return p(),n("div",null,[s[32]||(s[32]=i("h1",{id:"utils",tabindex:"-1"},[e("Utils "),i("a",{class:"header-anchor",href:"#utils","aria-label":'Permalink to "Utils"'},"​")],-1)),i("details",k,[i("summary",null,[s[0]||(s[0]=i("a",{id:"IncompressibleNavierStokes.get_lims",href:"#IncompressibleNavierStokes.get_lims"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_lims")],-1)),s[1]||(s[1]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=t(`
    julia
    get_lims(x) -> Tuple{Any, Any}
    -get_lims(x, n) -> Tuple{Any, Any}
    `,1)),i("p",null,[s[4]||(s[4]=e("Get approximate lower and upper limits of a field ")),s[5]||(s[5]=i("code",null,"x",-1)),s[6]||(s[6]=e(" based on the mean and standard deviation (")),i("mjx-container",h,[(p(),n("svg",g,s[2]||(s[2]=[t('',1)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"μ"),i("mo",null,"±"),i("mi",null,"n"),i("mi",null,"σ")])],-1))]),s[7]||(s[7]=e("). If ")),s[8]||(s[8]=i("code",null,"x",-1)),s[9]||(s[9]=e(" is constant, a margin of ")),s[10]||(s[10]=i("code",null,"1e-4",-1)),s[11]||(s[11]=e(" is enforced. This is required for contour plotting functions that require a certain range."))]),s[13]||(s[13]=i("p",null,[i("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/utils.jl#L13",target:"_blank",rel:"noreferrer"},"source")],-1))]),i("details",u,[i("summary",null,[s[14]||(s[14]=i("a",{id:"IncompressibleNavierStokes.get_spectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.get_spectrum-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_spectrum")],-1)),s[15]||(s[15]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t(`
    julia
    get_spectrum(
    +import{_ as r,c as n,j as i,a as e,G as l,a5 as t,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const F=JSON.parse('{"title":"Utils","description":"","frontmatter":{},"headers":[],"relativePath":"manual/utils.md","filePath":"manual/utils.md","lastUpdated":null}'),d={name:"manual/utils.md"},k={class:"jldocstring custom-block",open:""},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.779ex",height:"1.995ex",role:"img",focusable:"false",viewBox:"0 -666 2996.4 882","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""};function T(f,s,v,Q,j,x){const a=o("Badge");return p(),n("div",null,[s[32]||(s[32]=i("h1",{id:"utils",tabindex:"-1"},[e("Utils "),i("a",{class:"header-anchor",href:"#utils","aria-label":'Permalink to "Utils"'},"​")],-1)),i("details",k,[i("summary",null,[s[0]||(s[0]=i("a",{id:"IncompressibleNavierStokes.get_lims",href:"#IncompressibleNavierStokes.get_lims"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_lims")],-1)),s[1]||(s[1]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=t(`
    julia
    get_lims(x) -> Tuple{Any, Any}
    +get_lims(x, n) -> Tuple{Any, Any}
    `,1)),i("p",null,[s[4]||(s[4]=e("Get approximate lower and upper limits of a field ")),s[5]||(s[5]=i("code",null,"x",-1)),s[6]||(s[6]=e(" based on the mean and standard deviation (")),i("mjx-container",h,[(p(),n("svg",g,s[2]||(s[2]=[t('',1)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"μ"),i("mo",null,"±"),i("mi",null,"n"),i("mi",null,"σ")])],-1))]),s[7]||(s[7]=e("). If ")),s[8]||(s[8]=i("code",null,"x",-1)),s[9]||(s[9]=e(" is constant, a margin of ")),s[10]||(s[10]=i("code",null,"1e-4",-1)),s[11]||(s[11]=e(" is enforced. This is required for contour plotting functions that require a certain range."))]),s[13]||(s[13]=i("p",null,[i("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/utils.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),i("details",u,[i("summary",null,[s[14]||(s[14]=i("a",{id:"IncompressibleNavierStokes.get_spectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.get_spectrum-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_spectrum")],-1)),s[15]||(s[15]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t(`
    julia
    get_spectrum(
         setup;
         npoint,
         a
    -) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",b,[i("summary",null,[s[17]||(s[17]=i("a",{id:"IncompressibleNavierStokes.getoffset-Tuple{Any}",href:"#IncompressibleNavierStokes.getoffset-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getoffset")],-1)),s[18]||(s[18]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    ',3))]),i("details",c,[i("summary",null,[s[20]||(s[20]=i("a",{id:"IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x",href:"#IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getval")],-1)),s[21]||(s[21]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    ',3))]),i("details",m,[i("summary",null,[s[23]||(s[23]=i("a",{id:"IncompressibleNavierStokes.plotgrid",href:"#IncompressibleNavierStokes.plotgrid"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.plotgrid")],-1)),s[24]||(s[24]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[25]||(s[25]=t(`
    julia
    plotgrid(x, y; kwargs...)
    -plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    `,3))]),i("details",E,[i("summary",null,[s[26]||(s[26]=i("a",{id:"IncompressibleNavierStokes.spectral_stuff-Tuple{Any}",href:"#IncompressibleNavierStokes.spectral_stuff-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.spectral_stuff")],-1)),s[27]||(s[27]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
    julia
    spectral_stuff(
    +) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",m,[i("summary",null,[s[17]||(s[17]=i("a",{id:"IncompressibleNavierStokes.getoffset-Tuple{Any}",href:"#IncompressibleNavierStokes.getoffset-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getoffset")],-1)),s[18]||(s[18]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    ',3))]),i("details",E,[i("summary",null,[s[20]||(s[20]=i("a",{id:"IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x",href:"#IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getval")],-1)),s[21]||(s[21]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    ',3))]),i("details",c,[i("summary",null,[s[23]||(s[23]=i("a",{id:"IncompressibleNavierStokes.plotgrid",href:"#IncompressibleNavierStokes.plotgrid"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.plotgrid")],-1)),s[24]||(s[24]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[25]||(s[25]=t(`
    julia
    plotgrid(x, y; kwargs...)
    +plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    `,3))]),i("details",y,[i("summary",null,[s[26]||(s[26]=i("a",{id:"IncompressibleNavierStokes.spectral_stuff-Tuple{Any}",href:"#IncompressibleNavierStokes.spectral_stuff-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.spectral_stuff")],-1)),s[27]||(s[27]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
    julia
    spectral_stuff(
         setup;
         npoint,
         a
    -) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    `,3))]),i("details",y,[i("summary",null,[s[29]||(s[29]=i("a",{id:"IncompressibleNavierStokes.splitseed-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.splitseed-Tuple{Any, Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.splitseed")],-1)),s[30]||(s[30]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t('
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    ',3))])])}const A=r(d,[["render",f]]);export{F as __pageData,A as default}; +) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    `,3))]),i("details",b,[i("summary",null,[s[29]||(s[29]=i("a",{id:"IncompressibleNavierStokes.splitseed-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.splitseed-Tuple{Any, Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.splitseed")],-1)),s[30]||(s[30]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t('
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    ',3))])])}const A=r(d,[["render",T]]);export{F as __pageData,A as default}; diff --git a/previews/PR126/assets/manual_utils.md.D-cuMr_K.lean.js b/previews/PR126/assets/manual_utils.md.D_Sg5CTM.lean.js similarity index 70% rename from previews/PR126/assets/manual_utils.md.D-cuMr_K.lean.js rename to previews/PR126/assets/manual_utils.md.D_Sg5CTM.lean.js index b5b76bed..8efc7b3d 100644 --- a/previews/PR126/assets/manual_utils.md.D-cuMr_K.lean.js +++ b/previews/PR126/assets/manual_utils.md.D_Sg5CTM.lean.js @@ -1,11 +1,11 @@ -import{_ as r,c as n,j as i,a as e,G as l,a5 as t,B as o,o as p}from"./chunks/framework.BSoZtefh.js";const F=JSON.parse('{"title":"Utils","description":"","frontmatter":{},"headers":[],"relativePath":"manual/utils.md","filePath":"manual/utils.md","lastUpdated":null}'),d={name:"manual/utils.md"},k={class:"jldocstring custom-block",open:""},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.779ex",height:"1.995ex",role:"img",focusable:"false",viewBox:"0 -666 2996.4 882","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""};function f(T,s,v,Q,j,x){const a=o("Badge");return p(),n("div",null,[s[32]||(s[32]=i("h1",{id:"utils",tabindex:"-1"},[e("Utils "),i("a",{class:"header-anchor",href:"#utils","aria-label":'Permalink to "Utils"'},"​")],-1)),i("details",k,[i("summary",null,[s[0]||(s[0]=i("a",{id:"IncompressibleNavierStokes.get_lims",href:"#IncompressibleNavierStokes.get_lims"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_lims")],-1)),s[1]||(s[1]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=t(`
    julia
    get_lims(x) -> Tuple{Any, Any}
    -get_lims(x, n) -> Tuple{Any, Any}
    `,1)),i("p",null,[s[4]||(s[4]=e("Get approximate lower and upper limits of a field ")),s[5]||(s[5]=i("code",null,"x",-1)),s[6]||(s[6]=e(" based on the mean and standard deviation (")),i("mjx-container",h,[(p(),n("svg",g,s[2]||(s[2]=[t('',1)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"μ"),i("mo",null,"±"),i("mi",null,"n"),i("mi",null,"σ")])],-1))]),s[7]||(s[7]=e("). If ")),s[8]||(s[8]=i("code",null,"x",-1)),s[9]||(s[9]=e(" is constant, a margin of ")),s[10]||(s[10]=i("code",null,"1e-4",-1)),s[11]||(s[11]=e(" is enforced. This is required for contour plotting functions that require a certain range."))]),s[13]||(s[13]=i("p",null,[i("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/22cf530329bdeb0a7be6eba072fc55a59f3a8b02/src/utils.jl#L13",target:"_blank",rel:"noreferrer"},"source")],-1))]),i("details",u,[i("summary",null,[s[14]||(s[14]=i("a",{id:"IncompressibleNavierStokes.get_spectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.get_spectrum-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_spectrum")],-1)),s[15]||(s[15]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t(`
    julia
    get_spectrum(
    +import{_ as r,c as n,j as i,a as e,G as l,a5 as t,B as o,o as p}from"./chunks/framework.CojPSOJE.js";const F=JSON.parse('{"title":"Utils","description":"","frontmatter":{},"headers":[],"relativePath":"manual/utils.md","filePath":"manual/utils.md","lastUpdated":null}'),d={name:"manual/utils.md"},k={class:"jldocstring custom-block",open:""},h={class:"MathJax",jax:"SVG",style:{direction:"ltr",position:"relative"}},g={style:{overflow:"visible","min-height":"1px","min-width":"1px","vertical-align":"-0.489ex"},xmlns:"http://www.w3.org/2000/svg",width:"6.779ex",height:"1.995ex",role:"img",focusable:"false",viewBox:"0 -666 2996.4 882","aria-hidden":"true"},u={class:"jldocstring custom-block",open:""},m={class:"jldocstring custom-block",open:""},E={class:"jldocstring custom-block",open:""},c={class:"jldocstring custom-block",open:""},y={class:"jldocstring custom-block",open:""},b={class:"jldocstring custom-block",open:""};function T(f,s,v,Q,j,x){const a=o("Badge");return p(),n("div",null,[s[32]||(s[32]=i("h1",{id:"utils",tabindex:"-1"},[e("Utils "),i("a",{class:"header-anchor",href:"#utils","aria-label":'Permalink to "Utils"'},"​")],-1)),i("details",k,[i("summary",null,[s[0]||(s[0]=i("a",{id:"IncompressibleNavierStokes.get_lims",href:"#IncompressibleNavierStokes.get_lims"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_lims")],-1)),s[1]||(s[1]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[12]||(s[12]=t(`
    julia
    get_lims(x) -> Tuple{Any, Any}
    +get_lims(x, n) -> Tuple{Any, Any}
    `,1)),i("p",null,[s[4]||(s[4]=e("Get approximate lower and upper limits of a field ")),s[5]||(s[5]=i("code",null,"x",-1)),s[6]||(s[6]=e(" based on the mean and standard deviation (")),i("mjx-container",h,[(p(),n("svg",g,s[2]||(s[2]=[t('',1)]))),s[3]||(s[3]=i("mjx-assistive-mml",{unselectable:"on",display:"inline",style:{top:"0px",left:"0px",clip:"rect(1px, 1px, 1px, 1px)","-webkit-touch-callout":"none","-webkit-user-select":"none","-khtml-user-select":"none","-moz-user-select":"none","-ms-user-select":"none","user-select":"none",position:"absolute",padding:"1px 0px 0px 0px",border:"0px",display:"block",width:"auto",overflow:"hidden"}},[i("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[i("mi",null,"μ"),i("mo",null,"±"),i("mi",null,"n"),i("mi",null,"σ")])],-1))]),s[7]||(s[7]=e("). If ")),s[8]||(s[8]=i("code",null,"x",-1)),s[9]||(s[9]=e(" is constant, a margin of ")),s[10]||(s[10]=i("code",null,"1e-4",-1)),s[11]||(s[11]=e(" is enforced. This is required for contour plotting functions that require a certain range."))]),s[13]||(s[13]=i("p",null,[i("a",{href:"https://github.com/agdestein/IncompressibleNavierStokes.jl/blob/9d0d24ea384503b9d120133fae3d244209c92872/src/utils.jl#L27",target:"_blank",rel:"noreferrer"},"source")],-1))]),i("details",u,[i("summary",null,[s[14]||(s[14]=i("a",{id:"IncompressibleNavierStokes.get_spectrum-Tuple{Any}",href:"#IncompressibleNavierStokes.get_spectrum-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.get_spectrum")],-1)),s[15]||(s[15]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[16]||(s[16]=t(`
    julia
    get_spectrum(
         setup;
         npoint,
         a
    -) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",b,[i("summary",null,[s[17]||(s[17]=i("a",{id:"IncompressibleNavierStokes.getoffset-Tuple{Any}",href:"#IncompressibleNavierStokes.getoffset-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getoffset")],-1)),s[18]||(s[18]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    ',3))]),i("details",c,[i("summary",null,[s[20]||(s[20]=i("a",{id:"IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x",href:"#IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getval")],-1)),s[21]||(s[21]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    ',3))]),i("details",m,[i("summary",null,[s[23]||(s[23]=i("a",{id:"IncompressibleNavierStokes.plotgrid",href:"#IncompressibleNavierStokes.plotgrid"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.plotgrid")],-1)),s[24]||(s[24]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[25]||(s[25]=t(`
    julia
    plotgrid(x, y; kwargs...)
    -plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    `,3))]),i("details",E,[i("summary",null,[s[26]||(s[26]=i("a",{id:"IncompressibleNavierStokes.spectral_stuff-Tuple{Any}",href:"#IncompressibleNavierStokes.spectral_stuff-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.spectral_stuff")],-1)),s[27]||(s[27]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
    julia
    spectral_stuff(
    +) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    `,3))]),i("details",m,[i("summary",null,[s[17]||(s[17]=i("a",{id:"IncompressibleNavierStokes.getoffset-Tuple{Any}",href:"#IncompressibleNavierStokes.getoffset-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getoffset")],-1)),s[18]||(s[18]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[19]||(s[19]=t('
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    ',3))]),i("details",E,[i("summary",null,[s[20]||(s[20]=i("a",{id:"IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x",href:"#IncompressibleNavierStokes.getval-Union{Tuple{Val{x}}, Tuple{x}} where x"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.getval")],-1)),s[21]||(s[21]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[22]||(s[22]=t('
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    ',3))]),i("details",c,[i("summary",null,[s[23]||(s[23]=i("a",{id:"IncompressibleNavierStokes.plotgrid",href:"#IncompressibleNavierStokes.plotgrid"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.plotgrid")],-1)),s[24]||(s[24]=e()),l(a,{type:"info",class:"jlObjectType jlFunction",text:"Function"})]),s[25]||(s[25]=t(`
    julia
    plotgrid(x, y; kwargs...)
    +plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    `,3))]),i("details",y,[i("summary",null,[s[26]||(s[26]=i("a",{id:"IncompressibleNavierStokes.spectral_stuff-Tuple{Any}",href:"#IncompressibleNavierStokes.spectral_stuff-Tuple{Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.spectral_stuff")],-1)),s[27]||(s[27]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[28]||(s[28]=t(`
    julia
    spectral_stuff(
         setup;
         npoint,
         a
    -) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    `,3))]),i("details",y,[i("summary",null,[s[29]||(s[29]=i("a",{id:"IncompressibleNavierStokes.splitseed-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.splitseed-Tuple{Any, Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.splitseed")],-1)),s[30]||(s[30]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t('
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    ',3))])])}const A=r(d,[["render",f]]);export{F as __pageData,A as default}; +) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    `,3))]),i("details",b,[i("summary",null,[s[29]||(s[29]=i("a",{id:"IncompressibleNavierStokes.splitseed-Tuple{Any, Any}",href:"#IncompressibleNavierStokes.splitseed-Tuple{Any, Any}"},[i("span",{class:"jlbinding"},"IncompressibleNavierStokes.splitseed")],-1)),s[30]||(s[30]=e()),l(a,{type:"info",class:"jlObjectType jlMethod",text:"Method"})]),s[31]||(s[31]=t('
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    ',3))])])}const A=r(d,[["render",T]]);export{F as __pageData,A as default}; diff --git a/previews/PR126/assets/ctebodm.D8geYuhY.png b/previews/PR126/assets/npdsiqn.D8geYuhY.png similarity index 100% rename from previews/PR126/assets/ctebodm.D8geYuhY.png rename to previews/PR126/assets/npdsiqn.D8geYuhY.png diff --git a/previews/PR126/assets/smlqomf.C3CW_rGA.png b/previews/PR126/assets/nsdhhlu.C3CW_rGA.png similarity index 100% rename from previews/PR126/assets/smlqomf.C3CW_rGA.png rename to previews/PR126/assets/nsdhhlu.C3CW_rGA.png diff --git a/previews/PR126/assets/hxniwym.D0gpz0HH.png b/previews/PR126/assets/opgihfw.D0gpz0HH.png similarity index 100% rename from previews/PR126/assets/hxniwym.D0gpz0HH.png rename to previews/PR126/assets/opgihfw.D0gpz0HH.png diff --git a/previews/PR126/assets/pvzthuc.C2NI-x6W.png b/previews/PR126/assets/qkfemqj.C2NI-x6W.png similarity index 100% rename from previews/PR126/assets/pvzthuc.C2NI-x6W.png rename to previews/PR126/assets/qkfemqj.C2NI-x6W.png diff --git a/previews/PR126/assets/references.md.BG5rX2tb.js b/previews/PR126/assets/references.md.CsepnbHo.js similarity index 99% rename from previews/PR126/assets/references.md.BG5rX2tb.js rename to previews/PR126/assets/references.md.CsepnbHo.js index f517a8b5..9be10021 100644 --- a/previews/PR126/assets/references.md.BG5rX2tb.js +++ b/previews/PR126/assets/references.md.CsepnbHo.js @@ -1 +1 @@ -import{_ as r,c as a,a5 as t,o}from"./chunks/framework.BSoZtefh.js";const h=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md","lastUpdated":null}'),i={name:"references.md"};function n(l,e,s,p,c,f){return o(),a("div",null,e[0]||(e[0]=[t('

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    ',4)]))}const g=r(i,[["render",n]]);export{h as __pageData,g as default}; +import{_ as r,c as a,a5 as t,o}from"./chunks/framework.CojPSOJE.js";const h=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md","lastUpdated":null}'),i={name:"references.md"};function n(l,e,s,p,c,f){return o(),a("div",null,e[0]||(e[0]=[t('

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    ',4)]))}const g=r(i,[["render",n]]);export{h as __pageData,g as default}; diff --git a/previews/PR126/assets/references.md.BG5rX2tb.lean.js b/previews/PR126/assets/references.md.CsepnbHo.lean.js similarity index 99% rename from previews/PR126/assets/references.md.BG5rX2tb.lean.js rename to previews/PR126/assets/references.md.CsepnbHo.lean.js index f517a8b5..9be10021 100644 --- a/previews/PR126/assets/references.md.BG5rX2tb.lean.js +++ b/previews/PR126/assets/references.md.CsepnbHo.lean.js @@ -1 +1 @@ -import{_ as r,c as a,a5 as t,o}from"./chunks/framework.BSoZtefh.js";const h=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md","lastUpdated":null}'),i={name:"references.md"};function n(l,e,s,p,c,f){return o(),a("div",null,e[0]||(e[0]=[t('

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    ',4)]))}const g=r(i,[["render",n]]);export{h as __pageData,g as default}; +import{_ as r,c as a,a5 as t,o}from"./chunks/framework.CojPSOJE.js";const h=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md","lastUpdated":null}'),i={name:"references.md"};function n(l,e,s,p,c,f){return o(),a("div",null,e[0]||(e[0]=[t('

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    ',4)]))}const g=r(i,[["render",n]]);export{h as __pageData,g as default}; diff --git a/previews/PR126/assets/style.BAVfFGJP.css b/previews/PR126/assets/style.C2HjVilM.css similarity index 99% rename from previews/PR126/assets/style.BAVfFGJP.css rename to previews/PR126/assets/style.C2HjVilM.css index ef41508d..c4172028 100644 --- a/previews/PR126/assets/style.BAVfFGJP.css +++ b/previews/PR126/assets/style.C2HjVilM.css @@ -1 +1 @@ -.img-box[data-v-f778be06]{box-sizing:content-box;border-radius:14px;margin:20px;height:230px;width:230px;overflow:hidden;display:inline-block;color:#fff;position:relative;background-color:transparent;border:2px solid var(--vp-c-bg-alt)}.img-box h2[data-v-f778be06]{border-top:0}.img-box img[data-v-f778be06]{height:100%;width:100%;object-fit:cover;opacity:.3;transition:transform .3s ease,opacity .3s ease}.caption[data-v-f778be06]{position:absolute;bottom:30px;color:var(--vp-c-text-1);left:10px;opacity:1;transition:transform .3s ease,opacity .3s ease}.subcaption[data-v-f778be06]{position:absolute;bottom:5px;color:var(--vp-c-text-1);left:10px;opacity:0;transition:transform .3s ease,opacity .3s ease}.transparent-box1[data-v-f778be06]{height:160px;width:230px;background-color:transparent;position:absolute;top:0;left:0;transition:background-color .3s ease}.transparent-box2[data-v-f778be06]{height:70px;width:230px;background-color:transparent;position:absolute;top:160px;left:0;transition:background-color .3s ease}.img-box:hover img[data-v-f778be06]{transform:scale(1.1)}.img-box:hover .transparent-box1[data-v-f778be06],.img-box:hover .transparent-box2[data-v-f778be06]{background-color:var(--vp-c-bg-alt)}.img-box:hover .caption[data-v-f778be06],.img-box:hover .subcaption[data-v-f778be06]{transform:translateY(-20px);opacity:1}.img-box[data-v-f778be06]:hover{border:2px solid var(--vp-c-brand-light);cursor:pointer}.caption>p[data-v-f778be06]:nth-child(2){font-size:.8em}.subcaption>p[data-v-f778be06]:nth-child(2){font-size:.8em}.opacity-low[data-v-f778be06]{opacity:.85}.heading[data-v-9f22d17b]{text-align:center;font-size:2em;letter-spacing:1px;padding:40px;color:#fff}.gallery-image[data-v-9f22d17b]{padding:20px;display:flex;flex-wrap:wrap;justify-content:center}.gallery-image[data-v-9f22d17b] img{height:230px;width:230px;transform:scale(1);transition:transform .4s ease}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-d26d30cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d26d30cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d26d30cb]>svg,.VPSocialLink[data-v-d26d30cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.8.0 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: JuliaMono-Regular, monospace}.mono-no-substitutions{font-family:JuliaMono-Regular,monospace;font-feature-settings:"calt" off}.mono-no-substitutions-alt{font-family:JuliaMono-Regular,monospace;font-variant-ligatures:none}pre,code{font-family:JuliaMono-Regular,monospace;font-feature-settings:"calt" off}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #9558B2 30%, #CB3C33 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDoc{padding-top:15px!important;padding-left:5px!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}@media (max-width: 960px){.VPDoc{padding-left:25px!important}}.jldocstring.custom-block{border:1px solid var(--vp-c-gray-2);color:var(--vp-c-text-1)}.jldocstring.custom-block summary{font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 0 8px}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none} +.img-box[data-v-f778be06]{box-sizing:content-box;border-radius:14px;margin:20px;height:230px;width:230px;overflow:hidden;display:inline-block;color:#fff;position:relative;background-color:transparent;border:2px solid var(--vp-c-bg-alt)}.img-box h2[data-v-f778be06]{border-top:0}.img-box img[data-v-f778be06]{height:100%;width:100%;object-fit:cover;opacity:.3;transition:transform .3s ease,opacity .3s ease}.caption[data-v-f778be06]{position:absolute;bottom:30px;color:var(--vp-c-text-1);left:10px;opacity:1;transition:transform .3s ease,opacity .3s ease}.subcaption[data-v-f778be06]{position:absolute;bottom:5px;color:var(--vp-c-text-1);left:10px;opacity:0;transition:transform .3s ease,opacity .3s ease}.transparent-box1[data-v-f778be06]{height:160px;width:230px;background-color:transparent;position:absolute;top:0;left:0;transition:background-color .3s ease}.transparent-box2[data-v-f778be06]{height:70px;width:230px;background-color:transparent;position:absolute;top:160px;left:0;transition:background-color .3s ease}.img-box:hover img[data-v-f778be06]{transform:scale(1.1)}.img-box:hover .transparent-box1[data-v-f778be06],.img-box:hover .transparent-box2[data-v-f778be06]{background-color:var(--vp-c-bg-alt)}.img-box:hover .caption[data-v-f778be06],.img-box:hover .subcaption[data-v-f778be06]{transform:translateY(-20px);opacity:1}.img-box[data-v-f778be06]:hover{border:2px solid var(--vp-c-brand-light);cursor:pointer}.caption>p[data-v-f778be06]:nth-child(2){font-size:.8em}.subcaption>p[data-v-f778be06]:nth-child(2){font-size:.8em}.opacity-low[data-v-f778be06]{opacity:.85}.heading[data-v-9f22d17b]{text-align:center;font-size:2em;letter-spacing:1px;padding:40px;color:#fff}.gallery-image[data-v-9f22d17b]{padding:20px;display:flex;flex-wrap:wrap;justify-content:center}.gallery-image[data-v-9f22d17b] img{height:230px;width:230px;transform:scale(1);transition:transform .4s ease}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/IncompressibleNavierStokes.jl/previews/PR126/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;-webkit-user-select:none;user-select:none;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-b06cdb19]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-b06cdb19],.VPBackdrop.fade-leave-to[data-v-b06cdb19]{opacity:0}.VPBackdrop.fade-leave-active[data-v-b06cdb19]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-b06cdb19]{display:none}}.NotFound[data-v-951cab6c]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-951cab6c]{padding:96px 32px 168px}}.code[data-v-951cab6c]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-951cab6c]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-951cab6c]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-951cab6c]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-951cab6c]{padding-top:20px}.link[data-v-951cab6c]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-951cab6c]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-3f927ebe]{position:relative;z-index:1}.nested[data-v-3f927ebe]{padding-right:16px;padding-left:16px}.outline-link[data-v-3f927ebe]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-3f927ebe]:hover,.outline-link.active[data-v-3f927ebe]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-3f927ebe]{padding-left:13px}.VPDocAsideOutline[data-v-b38bf2ff]{display:none}.VPDocAsideOutline.has-outline[data-v-b38bf2ff]{display:block}.content[data-v-b38bf2ff]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-b38bf2ff]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-b38bf2ff]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-6d7b3c46]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-6d7b3c46]{flex-grow:1}.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-6d7b3c46] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-6d7b3c46] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-475f71b8]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-475f71b8]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-4f9813fa]{margin-top:64px}.edit-info[data-v-4f9813fa]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-4f9813fa]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-4f9813fa]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-4f9813fa]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-4f9813fa]{margin-right:8px}.prev-next[data-v-4f9813fa]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-4f9813fa]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-4f9813fa]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-4f9813fa]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-4f9813fa]{margin-left:auto;text-align:right}.desc[data-v-4f9813fa]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-4f9813fa]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-83890dd9]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-83890dd9]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-83890dd9]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-83890dd9]{display:flex;justify-content:center}.VPDoc .aside[data-v-83890dd9]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-83890dd9]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-83890dd9]{max-width:1104px}}.container[data-v-83890dd9]{margin:0 auto;width:100%}.aside[data-v-83890dd9]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-83890dd9]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-83890dd9]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-83890dd9]::-webkit-scrollbar{display:none}.aside-curtain[data-v-83890dd9]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-83890dd9]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-83890dd9]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-83890dd9]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-83890dd9]{order:1;margin:0;min-width:640px}}.content-container[data-v-83890dd9]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-83890dd9]{max-width:688px}.VPButton[data-v-906d7fb4]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-906d7fb4]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-906d7fb4]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-906d7fb4]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-906d7fb4]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-906d7fb4]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-906d7fb4]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-906d7fb4]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-906d7fb4]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-906d7fb4]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-906d7fb4]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-906d7fb4]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-906d7fb4]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-35a7d0b8]{display:none}.dark .VPImage.light[data-v-35a7d0b8]{display:none}.VPHero[data-v-955009fc]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-955009fc]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-955009fc]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-955009fc]{flex-direction:row}}.main[data-v-955009fc]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-955009fc]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-955009fc]{text-align:left}}@media (min-width: 960px){.main[data-v-955009fc]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-955009fc]{max-width:592px}}.name[data-v-955009fc],.text[data-v-955009fc]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0 auto}.name[data-v-955009fc]{color:var(--vp-home-hero-name-color)}.clip[data-v-955009fc]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-955009fc],.text[data-v-955009fc]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-955009fc],.text[data-v-955009fc]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-955009fc],.VPHero.has-image .text[data-v-955009fc]{margin:0}}.tagline[data-v-955009fc]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-955009fc]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-955009fc]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-955009fc]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-955009fc]{margin:0}}.actions[data-v-955009fc]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-955009fc]{justify-content:center}@media (min-width: 640px){.actions[data-v-955009fc]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-955009fc]{justify-content:flex-start}}.action[data-v-955009fc]{flex-shrink:0;padding:6px}.image[data-v-955009fc]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-955009fc]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-955009fc]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-955009fc]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-955009fc]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-955009fc]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-955009fc]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-955009fc]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-955009fc]{width:320px;height:320px}}[data-v-955009fc] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-955009fc] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-955009fc] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-f5e9645b]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-f5e9645b]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-f5e9645b]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-f5e9645b]>.VPImage{margin-bottom:20px}.icon[data-v-f5e9645b]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-f5e9645b]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-f5e9645b]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-f5e9645b]{padding-top:8px}.link-text-value[data-v-f5e9645b]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-f5e9645b]{margin-left:6px}.VPFeatures[data-v-d0a190d7]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-d0a190d7]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-d0a190d7]{padding:0 64px}}.container[data-v-d0a190d7]{margin:0 auto;max-width:1152px}.items[data-v-d0a190d7]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-d0a190d7]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-d0a190d7],.item.grid-4[data-v-d0a190d7]{width:50%}.item.grid-3[data-v-d0a190d7],.item.grid-6[data-v-d0a190d7]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-d0a190d7]{width:25%}}.container[data-v-7a48a447]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-7a48a447]{padding:0 48px}}@media (min-width: 960px){.container[data-v-7a48a447]{width:100%;padding:0 64px}}.vp-doc[data-v-7a48a447] .VPHomeSponsors,.vp-doc[data-v-7a48a447] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-7a48a447] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-7a48a447] .VPHomeSponsors a,.vp-doc[data-v-7a48a447] .VPTeamPage a{text-decoration:none}.VPHome[data-v-cbb6ec48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-cbb6ec48]{margin-bottom:128px}}.VPContent[data-v-91765379]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-91765379]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-91765379]{margin:0}@media (min-width: 960px){.VPContent[data-v-91765379]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-91765379]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-91765379]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-c970a860]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-c970a860]{display:none}.VPFooter[data-v-c970a860] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-c970a860] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-c970a860]{padding:32px}}.container[data-v-c970a860]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-c970a860],.copyright[data-v-c970a860]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-bc9dc845]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-bc9dc845]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-bc9dc845]{color:var(--vp-c-text-1)}.icon[data-v-bc9dc845]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-bc9dc845]{font-size:14px}.icon[data-v-bc9dc845]{font-size:16px}}.open>.icon[data-v-bc9dc845]{transform:rotate(90deg)}.items[data-v-bc9dc845]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-bc9dc845]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-bc9dc845]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-bc9dc845]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-bc9dc845]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-bc9dc845]{transition:all .2s ease-out}.flyout-leave-active[data-v-bc9dc845]{transition:all .15s ease-in}.flyout-enter-from[data-v-bc9dc845],.flyout-leave-to[data-v-bc9dc845]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-070ab83d]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-070ab83d]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-070ab83d]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-070ab83d]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-070ab83d]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-070ab83d]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-070ab83d]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-070ab83d]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-070ab83d]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-070ab83d]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-070ab83d]{display:none}}.menu-icon[data-v-070ab83d]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-070ab83d]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-070ab83d]{padding:12px 32px 11px}}.VPSwitch[data-v-4a1c76db]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-4a1c76db]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-4a1c76db]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-4a1c76db]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-4a1c76db] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-4a1c76db] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-e40a8bb6]{opacity:1}.moon[data-v-e40a8bb6],.dark .sun[data-v-e40a8bb6]{opacity:0}.dark .moon[data-v-e40a8bb6]{opacity:1}.dark .VPSwitchAppearance[data-v-e40a8bb6] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-af096f4a]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-af096f4a]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-acbfed09]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-acbfed09]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-acbfed09]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-acbfed09]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-48c802d0]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-48c802d0]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-48c802d0]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-48c802d0]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-7dd3104a]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-7dd3104a] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-7dd3104a] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-7dd3104a] .group:last-child{padding-bottom:0}.VPMenu[data-v-7dd3104a] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-7dd3104a] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-7dd3104a] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-7dd3104a] .action{padding-left:24px}.VPFlyout[data-v-04f5c5e9]{position:relative}.VPFlyout[data-v-04f5c5e9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-04f5c5e9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-04f5c5e9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-04f5c5e9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-04f5c5e9]{color:var(--vp-c-brand-2)}.button[aria-expanded=false]+.menu[data-v-04f5c5e9]{opacity:0;visibility:hidden;transform:translateY(0)}.VPFlyout:hover .menu[data-v-04f5c5e9],.button[aria-expanded=true]+.menu[data-v-04f5c5e9]{opacity:1;visibility:visible;transform:translateY(0)}.button[data-v-04f5c5e9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-04f5c5e9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-04f5c5e9]{margin-right:0;font-size:16px}.text-icon[data-v-04f5c5e9]{margin-left:4px;font-size:14px}.icon[data-v-04f5c5e9]{font-size:20px;transition:fill .25s}.menu[data-v-04f5c5e9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-d26d30cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-d26d30cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-d26d30cb]>svg,.VPSocialLink[data-v-d26d30cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-ee7a9424]{display:flex;justify-content:center}.VPNavBarExtra[data-v-925effce]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-925effce]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-925effce]{display:none}}.trans-title[data-v-925effce]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-925effce],.item.social-links[data-v-925effce]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-925effce]{min-width:176px}.appearance-action[data-v-925effce]{margin-right:-2px}.social-links-list[data-v-925effce]{margin:-4px -8px}.VPNavBarHamburger[data-v-5dea55bf]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-5dea55bf]{display:none}}.container[data-v-5dea55bf]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-5dea55bf]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-5dea55bf]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-5dea55bf]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-5dea55bf],.VPNavBarHamburger.active:hover .middle[data-v-5dea55bf],.VPNavBarHamburger.active:hover .bottom[data-v-5dea55bf]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-5dea55bf],.middle[data-v-5dea55bf],.bottom[data-v-5dea55bf]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-5dea55bf]{top:0;left:0;transform:translate(0)}.middle[data-v-5dea55bf]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-5dea55bf]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-956ec74c]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-956ec74c],.VPNavBarMenuLink[data-v-956ec74c]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-e6d46098]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-e6d46098]{display:flex}}/*! @docsearch/css 3.8.2 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 #0304094d;--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow);transform:translate3d(0,1px,0)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-164c457f]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-164c457f]{display:flex;align-items:center}}.title[data-v-0f4f798b]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-0f4f798b]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-0f4f798b]{border-bottom-color:var(--vp-c-divider)}}[data-v-0f4f798b] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-c80d9ad0]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-c80d9ad0]{display:flex;align-items:center}}.title[data-v-c80d9ad0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-822684d1]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-822684d1]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-822684d1]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-822684d1]:not(.home){background-color:transparent}.VPNavBar[data-v-822684d1]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-822684d1]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-822684d1]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-822684d1]{padding:0}}.container[data-v-822684d1]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-822684d1],.container>.content[data-v-822684d1]{pointer-events:none}.container[data-v-822684d1] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-822684d1]{max-width:100%}}.title[data-v-822684d1]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-822684d1]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-822684d1]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-822684d1]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-822684d1]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-822684d1]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-822684d1]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-822684d1]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-822684d1]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-822684d1]{column-gap:.5rem}}.menu+.translations[data-v-822684d1]:before,.menu+.appearance[data-v-822684d1]:before,.menu+.social-links[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before,.appearance+.social-links[data-v-822684d1]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-822684d1]:before,.translations+.appearance[data-v-822684d1]:before{margin-right:16px}.appearance+.social-links[data-v-822684d1]:before{margin-left:16px}.social-links[data-v-822684d1]{margin-right:-8px}.divider[data-v-822684d1]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-822684d1]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-822684d1]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-822684d1]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-822684d1]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-ffb44008]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-ffb44008]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-735512b8]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-735512b8]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-372ae7c0]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-372ae7c0]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-4b8941ac]{display:block}.title[data-v-4b8941ac]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-875057a5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-875057a5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-875057a5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-875057a5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-875057a5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-875057a5]{transform:rotate(45deg)}.button[data-v-875057a5]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-875057a5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-875057a5]{transition:transform .25s}.group[data-v-875057a5]:first-child{padding-top:0}.group+.group[data-v-875057a5],.group+.item[data-v-875057a5]{padding-top:4px}.VPNavScreenTranslations[data-v-362991c2]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-362991c2]{height:auto}.title[data-v-362991c2]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-362991c2]{font-size:16px}.icon.lang[data-v-362991c2]{margin-right:8px}.icon.chevron[data-v-362991c2]{margin-left:4px}.list[data-v-362991c2]{padding:4px 0 0 24px}.link[data-v-362991c2]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-833aabba]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-833aabba],.VPNavScreen.fade-leave-active[data-v-833aabba]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-833aabba],.VPNavScreen.fade-leave-active .container[data-v-833aabba]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-833aabba],.VPNavScreen.fade-leave-to[data-v-833aabba]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-833aabba],.VPNavScreen.fade-leave-to .container[data-v-833aabba]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-833aabba]{display:none}}.container[data-v-833aabba]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-833aabba],.menu+.appearance[data-v-833aabba],.translations+.appearance[data-v-833aabba]{margin-top:24px}.menu+.social-links[data-v-833aabba]{margin-top:16px}.appearance+.social-links[data-v-833aabba]{margin-top:16px}.VPNav[data-v-f1e365da]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-f1e365da]{position:fixed}}.VPSidebarItem.level-0[data-v-196b2e5f]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-196b2e5f]{padding-bottom:10px}.item[data-v-196b2e5f]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-196b2e5f]{cursor:pointer}.indicator[data-v-196b2e5f]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-196b2e5f]{background-color:var(--vp-c-brand-1)}.link[data-v-196b2e5f]{display:flex;align-items:center;flex-grow:1}.text[data-v-196b2e5f]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-196b2e5f]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-196b2e5f],.VPSidebarItem.level-2 .text[data-v-196b2e5f],.VPSidebarItem.level-3 .text[data-v-196b2e5f],.VPSidebarItem.level-4 .text[data-v-196b2e5f],.VPSidebarItem.level-5 .text[data-v-196b2e5f]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-196b2e5f],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.text[data-v-196b2e5f],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-196b2e5f]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-196b2e5f],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-196b2e5f]{color:var(--vp-c-brand-1)}.caret[data-v-196b2e5f]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-196b2e5f]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-196b2e5f]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-196b2e5f]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-196b2e5f]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-196b2e5f],.VPSidebarItem.level-2 .items[data-v-196b2e5f],.VPSidebarItem.level-3 .items[data-v-196b2e5f],.VPSidebarItem.level-4 .items[data-v-196b2e5f],.VPSidebarItem.level-5 .items[data-v-196b2e5f]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-196b2e5f]{display:none}.no-transition[data-v-9e426adc] .caret-icon{transition:none}.group+.group[data-v-9e426adc]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9e426adc]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-18756405]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-18756405]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-18756405]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-18756405]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-18756405]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-18756405]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-18756405]{outline:0}.VPSkipLink[data-v-c3508ec8]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-c3508ec8]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-c3508ec8]{top:14px;left:16px}}.Layout[data-v-a9a9e638]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-db81191c]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-db81191c]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{margin:128px 0}}.VPHomeSponsors[data-v-db81191c]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-db81191c]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-db81191c]{padding:0 64px}}.container[data-v-db81191c]{margin:0 auto;max-width:1152px}.love[data-v-db81191c]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-db81191c]{display:inline-block}.message[data-v-db81191c]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-db81191c]{padding-top:32px}.action[data-v-db81191c]{padding-top:40px;text-align:center}.VPTeamPage[data-v-c2f8e101]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-c2f8e101]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-c2f8e101-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-c2f8e101-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-c2f8e101-s],.VPTeamMembers+.VPTeamPageSection[data-v-c2f8e101-s]{margin-top:96px}}.VPTeamMembers[data-v-c2f8e101-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-c2f8e101-s]{padding:0 64px}}.VPTeamPageTitle[data-v-e277e15c]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-e277e15c]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-e277e15c]{padding:80px 64px 48px}}.title[data-v-e277e15c]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-e277e15c]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-e277e15c]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-e277e15c]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-d43bc49d]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-d43bc49d]{padding:0 64px}}.title[data-v-d43bc49d]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-d43bc49d]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-d43bc49d]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-d43bc49d]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-d43bc49d]{padding-top:40px}.VPTeamMembersItem[data-v-f9987cb6]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f9987cb6]{padding:32px}.VPTeamMembersItem.small .data[data-v-f9987cb6]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f9987cb6]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f9987cb6]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f9987cb6]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f9987cb6]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f9987cb6]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f9987cb6]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f9987cb6]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f9987cb6]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f9987cb6]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f9987cb6]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f9987cb6]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f9987cb6]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f9987cb6]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f9987cb6]{text-align:center}.avatar[data-v-f9987cb6]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f9987cb6]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f9987cb6]{margin:0;font-weight:600}.affiliation[data-v-f9987cb6]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f9987cb6]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f9987cb6]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f9987cb6]{margin:0 auto}.desc[data-v-f9987cb6] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f9987cb6]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f9987cb6]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f9987cb6]:hover,.sp .sp-link.link[data-v-f9987cb6]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f9987cb6]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-fba19bad]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-fba19bad]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-fba19bad]{max-width:876px}.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-fba19bad]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-fba19bad]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-fba19bad]{max-width:760px}.container[data-v-fba19bad]{display:grid;gap:24px;margin:0 auto;max-width:1152px}:root{--vp-plugin-tabs-tab-text-color: var(--vp-c-text-2);--vp-plugin-tabs-tab-active-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-hover-text-color: var(--vp-c-text-1);--vp-plugin-tabs-tab-bg: var(--vp-c-bg-soft);--vp-plugin-tabs-tab-divider: var(--vp-c-divider);--vp-plugin-tabs-tab-active-bar-color: var(--vp-c-brand-1)}.plugin-tabs{margin:16px 0;background-color:var(--vp-plugin-tabs-tab-bg);border-radius:8px}.plugin-tabs--tab-list{position:relative;padding:0 12px;overflow-x:auto;overflow-y:hidden}.plugin-tabs--tab-list:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--vp-plugin-tabs-tab-divider)}.plugin-tabs--tab{position:relative;padding:0 12px;line-height:48px;border-bottom:2px solid transparent;color:var(--vp-plugin-tabs-tab-text-color);font-size:14px;font-weight:500;white-space:nowrap;transition:color .25s}.plugin-tabs--tab[aria-selected=true]{color:var(--vp-plugin-tabs-tab-active-text-color)}.plugin-tabs--tab:hover{color:var(--vp-plugin-tabs-tab-hover-text-color)}.plugin-tabs--tab:after{content:"";position:absolute;bottom:-2px;left:8px;right:8px;height:2px;background-color:transparent;transition:background-color .25s;z-index:1}.plugin-tabs--tab[aria-selected=true]:after{background-color:var(--vp-plugin-tabs-tab-active-bar-color)}.plugin-tabs--content[data-v-9b0d03d2]{padding:16px}.plugin-tabs--content[data-v-9b0d03d2]>:first-child:first-child{margin-top:0}.plugin-tabs--content[data-v-9b0d03d2]>:last-child:last-child{margin-bottom:0}.plugin-tabs--content[data-v-9b0d03d2]>div[class*=language-]{border-radius:8px;margin:16px 0}:root:not(.dark) .plugin-tabs--content[data-v-9b0d03d2] div[class*=language-]{background-color:var(--vp-c-bg)}.VPHero .clip{white-space:pre;max-width:500px}@font-face{font-family:JuliaMono-Regular;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono/webfonts/JuliaMono-Regular.woff2)}:root{--vp-font-family-base: "Barlow", "Inter var experimental", "Inter var", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vp-font-family-mono: JuliaMono-Regular, monospace}.mono-no-substitutions{font-family:JuliaMono-Regular,monospace;font-feature-settings:"calt" off}.mono-no-substitutions-alt{font-family:JuliaMono-Regular,monospace;font-variant-ligatures:none}pre,code{font-family:JuliaMono-Regular,monospace;font-feature-settings:"calt" off}:root{--julia-blue: #4063D8;--julia-purple: #9558B2;--julia-red: #CB3C33;--julia-green: #389826;--vp-c-brand: #389826;--vp-c-brand-light: #3dd027;--vp-c-brand-lighter: #9499ff;--vp-c-brand-lightest: #bcc0ff;--vp-c-brand-dark: #535bf2;--vp-c-brand-darker: #454ce1;--vp-c-brand-dimm: #212425}:root{--vp-button-brand-border: var(--vp-c-brand-light);--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand);--vp-button-brand-hover-border: var(--vp-c-brand-light);--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-light);--vp-button-brand-active-border: var(--vp-c-brand-light);--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-button-brand-bg)}:root{--vp-home-hero-name-color: transparent;--vp-home-hero-name-background: -webkit-linear-gradient( 120deg, #9558B2 30%, #CB3C33 );--vp-home-hero-image-background-image: linear-gradient( -45deg, #9558B2 30%, #389826 30%, #CB3C33 );--vp-home-hero-image-filter: blur(40px)}@media (min-width: 640px){:root{--vp-home-hero-image-filter: blur(56px)}}@media (min-width: 960px){:root{--vp-home-hero-image-filter: blur(72px)}}:root.dark{--vp-custom-block-tip-border: var(--vp-c-brand);--vp-custom-block-tip-text: var(--vp-c-brand-lightest);--vp-custom-block-tip-bg: var(--vp-c-brand-dimm);--vp-c-black: hsl(220 20% 9%);--vp-c-black-pure: hsl(220, 24%, 4%);--vp-c-black-soft: hsl(220 16% 13%);--vp-c-black-mute: hsl(220 14% 17%);--vp-c-gray: hsl(220 8% 56%);--vp-c-gray-dark-1: hsl(220 10% 39%);--vp-c-gray-dark-2: hsl(220 12% 28%);--vp-c-gray-dark-3: hsl(220 12% 23%);--vp-c-gray-dark-4: hsl(220 14% 17%);--vp-c-gray-dark-5: hsl(220 16% 13%);--vp-custom-block-info-bg: hsl(220 14% 17%)}.DocSearch{--docsearch-primary-color: var(--vp-c-brand) !important}mjx-container>svg{display:block;margin:auto}mjx-container{padding:.5rem 0}mjx-container{display:inline;margin:auto 2px -2px}mjx-container>svg{margin:auto;display:inline-block}:root{--vp-c-brand-1: #CB3C33;--vp-c-brand-2: #CB3C33;--vp-c-brand-3: #CB3C33;--vp-c-sponsor: #ca2971;--vitest-c-sponsor-hover: #c13071}.dark{--vp-c-brand-1: #91dd33;--vp-c-brand-2: #91dd33;--vp-c-brand-3: #91dd33;--vp-c-sponsor: #91dd33;--vitest-c-sponsor-hover: #e51370}:root:not(.dark) .dark-only{display:none}:root:is(.dark) .light-only{display:none}.VPDoc.has-aside .content-container{max-width:100%!important}.aside{max-width:200px!important;padding-left:0!important}.VPDoc{padding-top:15px!important;padding-left:5px!important}.VPDocOutlineItem li{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:200px}.VPNavBar .title{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}@media (max-width: 960px){.VPDoc{padding-left:25px!important}}.jldocstring.custom-block{border:1px solid var(--vp-c-gray-2);color:var(--vp-c-text-1)}.jldocstring.custom-block summary{font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none;margin:0 0 8px}.VPLocalSearchBox[data-v-42e65fb9]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-42e65fb9]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-42e65fb9]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-42e65fb9]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-42e65fb9]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-42e65fb9]{padding:0 8px}}.search-bar[data-v-42e65fb9]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-42e65fb9]{display:block;font-size:18px}.navigate-icon[data-v-42e65fb9]{display:block;font-size:14px}.search-icon[data-v-42e65fb9]{margin:8px}@media (max-width: 767px){.search-icon[data-v-42e65fb9]{display:none}}.search-input[data-v-42e65fb9]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-42e65fb9]{padding:6px 4px}}.search-actions[data-v-42e65fb9]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-42e65fb9]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-42e65fb9]{display:none}}.search-actions button[data-v-42e65fb9]{padding:8px}.search-actions button[data-v-42e65fb9]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-42e65fb9]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-42e65fb9]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-42e65fb9]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-42e65fb9]{display:none}}.search-keyboard-shortcuts kbd[data-v-42e65fb9]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-42e65fb9]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-42e65fb9]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-42e65fb9]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-42e65fb9]{margin:8px}}.titles[data-v-42e65fb9]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-42e65fb9]{display:flex;align-items:center;gap:4px}.title.main[data-v-42e65fb9]{font-weight:500}.title-icon[data-v-42e65fb9]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-42e65fb9]{opacity:.5}.result.selected[data-v-42e65fb9]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-42e65fb9]{position:relative}.excerpt[data-v-42e65fb9]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-42e65fb9]{opacity:1}.excerpt[data-v-42e65fb9] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-42e65fb9] mark,.excerpt[data-v-42e65fb9] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-42e65fb9] .vp-code-group .tabs{display:none}.excerpt[data-v-42e65fb9] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-42e65fb9]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-42e65fb9]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-42e65fb9],.result.selected .title-icon[data-v-42e65fb9]{color:var(--vp-c-brand-1)!important}.no-results[data-v-42e65fb9]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-42e65fb9]{flex:none} diff --git a/previews/PR126/assets/tglpiml.BmW-IXuN.png b/previews/PR126/assets/tglpiml.BmW-IXuN.png deleted file mode 100644 index 9f23bbf0..00000000 Binary files a/previews/PR126/assets/tglpiml.BmW-IXuN.png and /dev/null differ diff --git a/previews/PR126/assets/mwblntt.CGB02zQg.png b/previews/PR126/assets/udeaqlz.CGB02zQg.png similarity index 100% rename from previews/PR126/assets/mwblntt.CGB02zQg.png rename to previews/PR126/assets/udeaqlz.CGB02zQg.png diff --git a/previews/PR126/assets/umvagyk.Dbt_L6Xl.png b/previews/PR126/assets/umvagyk.Dbt_L6Xl.png new file mode 100644 index 00000000..24d9558b Binary files /dev/null and b/previews/PR126/assets/umvagyk.Dbt_L6Xl.png differ diff --git a/previews/PR126/assets/vhpjezl.BFO_dsdV.png b/previews/PR126/assets/vhpjezl.BFO_dsdV.png new file mode 100644 index 00000000..2eb6a87e Binary files /dev/null and b/previews/PR126/assets/vhpjezl.BFO_dsdV.png differ diff --git a/previews/PR126/assets/mgwqqoh.BQ4kmQL6.png b/previews/PR126/assets/wvbzouq.BQ4kmQL6.png similarity index 100% rename from previews/PR126/assets/mgwqqoh.BQ4kmQL6.png rename to previews/PR126/assets/wvbzouq.BQ4kmQL6.png diff --git a/previews/PR126/examples/generated/Actuator2D.html b/previews/PR126/examples/generated/Actuator2D.html index ecc43a8d..a0fd9e0c 100644 --- a/previews/PR126/examples/generated/Actuator2D.html +++ b/previews/PR126/examples/generated/Actuator2D.html @@ -6,14 +6,14 @@ Unsteady actuator case - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -26,7 +26,7 @@
    Skip to content

    Unsteady actuator case - 2D

    In this example, an unsteady inlet velocity profile at encounters a wind turbine blade in a wall-less domain. The blade is modeled as a uniform body force on a thin rectangle.

    Packages

    A Makie plotting backend is needed for plotting. GLMakie creates an interactive window (useful for real-time plotting), but does not work when building this example on GitHub. CairoMakie makes high-quality static vector-graphics plots.

    julia
    using CairoMakie
     using IncompressibleNavierStokes

    Setup

    A 2D grid is a Cartesian product of two vectors

    julia
    n = 40
     x = LinRange(0.0, 10.0, 5n + 1), LinRange(-2.0, 2.0, 2n + 1)
    -plotgrid(x...; figure = (; size = (600, 300)))

    Boundary conditions

    julia
    inflow(dim, x, y, t) = sinpi(sinpi(t / 6) / 6 + (dim == 1) / 2)
    +plotgrid(x...; figure = (; size = (600, 300)))

    Boundary conditions

    julia
    inflow(dim, x, y, t) = sinpi(sinpi(t / 6) / 6 + (dim == 1) / 2)
     boundary_conditions = ((DirichletBC(inflow), PressureBC()), (PressureBC(), PressureBC()))
    ((DirichletBC{typeof(Main.inflow)}(Main.inflow), PressureBC()), (PressureBC(), PressureBC()))

    Actuator body force: A thrust coefficient Cₜ distributed over a thin rectangle

    julia
    xc, yc = 2.0, 0.0 # Disk center
     D = 1.0           # Disk diameter
     δ = 0.11          # Disk thickness
    @@ -86,25 +86,25 @@
             rtp = realtimeplotter(; setup, size = (600, 300), nupdate = 5),
             log = timelogger(; nupdate = 24),
         ),
    -);
    [ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.11
    -[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.041
    -[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.0095
    -[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.0087
    -[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0088
    -[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0087
    -[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0089
    -[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.0089
    -[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0088
    -[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0087

    Post-process

    We create a box to visualize the actuator.

    julia
    box = (
    +);
    [ Info: t = 1.2	Δt = 0.05	umax = 1.1	itertime = 0.12
    +[ Info: t = 2.4	Δt = 0.05	umax = 1	itertime = 0.042
    +[ Info: t = 3.6	Δt = 0.05	umax = 1	itertime = 0.01
    +[ Info: t = 4.8	Δt = 0.05	umax = 1	itertime = 0.009
    +[ Info: t = 6	Δt = 0.05	umax = 1	itertime = 0.0089
    +[ Info: t = 7.2	Δt = 0.05	umax = 1	itertime = 0.0089
    +[ Info: t = 8.4	Δt = 0.05	umax = 1	itertime = 0.0091
    +[ Info: t = 9.6	Δt = 0.05	umax = 1	itertime = 0.009
    +[ Info: t = 10.8	Δt = 0.05	umax = 1	itertime = 0.0091
    +[ Info: t = 12	Δt = 0.05	umax = 1	itertime = 0.0091

    Post-process

    We create a box to visualize the actuator.

    julia
    box = (
         [xc - δ / 2, xc - δ / 2, xc + δ / 2, xc + δ / 2, xc - δ / 2],
         [yc + D / 2, yc - D / 2, yc - D / 2, yc + D / 2, yc + D / 2],
     )
    ([1.945, 1.945, 2.055, 2.055, 1.945], [0.5, -0.5, -0.5, 0.5, 0.5])

    Plot pressure

    julia
    fig = fieldplot(state; setup, size = (600, 300), fieldname = :pressure)
     lines!(box...; color = :red)
    -fig

    Plot velocity

    julia
    fig = fieldplot(state; setup, size = (600, 300), fieldname = :velocitynorm)
    +fig

    Plot velocity

    julia
    fig = fieldplot(state; setup, size = (600, 300), fieldname = :velocitynorm)
     lines!(box...; color = :red)
    -fig

    Plot vorticity

    julia
    fig = fieldplot(state; setup, size = (600, 300), fieldname = :vorticity)
    +fig

    Plot vorticity

    julia
    fig = fieldplot(state; setup, size = (600, 300), fieldname = :vorticity)
     lines!(box...; color = :red)
    -fig

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
    +fig

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
     using IncompressibleNavierStokes
     
     n = 40
    @@ -153,8 +153,8 @@
     
     fig = fieldplot(state; setup, size = (600, 300), fieldname = :vorticity)
     lines!(box...; color = :red)
    -fig

    This page was generated using Literate.jl.

    - +fig

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/Actuator3D.html b/previews/PR126/examples/generated/Actuator3D.html index 48e7b6bb..c699d95a 100644 --- a/previews/PR126/examples/generated/Actuator3D.html +++ b/previews/PR126/examples/generated/Actuator3D.html @@ -6,14 +6,14 @@ Unsteady actuator case - 3D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -138,8 +138,8 @@ outputs.rtp -save_vtk(state; setup, filename = joinpath(outdir, "solution"))

    This page was generated using Literate.jl.

    - +save_vtk(state; setup, filename = joinpath(outdir, "solution"))

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/BackwardFacingStep2D.html b/previews/PR126/examples/generated/BackwardFacingStep2D.html index c5cd974b..b408c8c0 100644 --- a/previews/PR126/examples/generated/BackwardFacingStep2D.html +++ b/previews/PR126/examples/generated/BackwardFacingStep2D.html @@ -6,14 +6,14 @@ Backward Facing Step - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -118,8 +118,8 @@ fieldplot(state; setup, size = (600, 150), fieldname = :velocitynorm) -fieldplot(state; setup, size = (600, 150), fieldname = :vorticity)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup, size = (600, 150), fieldname = :vorticity)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/BackwardFacingStep3D.html b/previews/PR126/examples/generated/BackwardFacingStep3D.html index 23edd1e0..5a7b5983 100644 --- a/previews/PR126/examples/generated/BackwardFacingStep3D.html +++ b/previews/PR126/examples/generated/BackwardFacingStep3D.html @@ -6,14 +6,14 @@ Backward Facing Step - 3D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -121,8 +121,8 @@ fieldplot(state; setup, fieldname = :velocitynorm) -fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/DecayingTurbulence2D.html b/previews/PR126/examples/generated/DecayingTurbulence2D.html index 9020c1f2..7fa0708a 100644 --- a/previews/PR126/examples/generated/DecayingTurbulence2D.html +++ b/previews/PR126/examples/generated/DecayingTurbulence2D.html @@ -6,14 +6,14 @@ Decaying Homogeneous Isotropic Turbulence - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -47,13 +47,14 @@ ), log = timelogger(; nupdate = 100), ), -);
    [ Info: t = 0.107178	Δt = 0.0012	umax = 3	itertime = 0.027
    -[ Info: t = 0.221125	Δt = 0.0013	umax = 2.7	itertime = 0.016
    -[ Info: t = 0.349375	Δt = 0.0014	umax = 2.5	itertime = 0.015
    -[ Info: t = 0.476132	Δt = 0.0013	umax = 2.8	itertime = 0.015
    -[ Info: t = 0.608872	Δt = 0.0014	umax = 2.6	itertime = 0.015
    -[ Info: t = 0.748175	Δt = 0.0015	umax = 2.4	itertime = 0.015
    -[ Info: t = 0.901732	Δt = 0.0015	umax = 2.4	itertime = 0.015

    Post-process

    We may visualize or export the computed fields

    Energy history

    julia
    outputs.ehist

    Energy spectrum

    julia
    outputs.espec

    Plot field

    julia
    fieldplot(state; setup)

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
    +);
    [ Info: t = 0.0796116	Δt = 0.00081	umax = 4.3	itertime = 0.027
    +[ Info: t = 0.166772	Δt = 0.001	umax = 3.5	itertime = 0.016
    +[ Info: t = 0.280155	Δt = 0.0012	umax = 2.9	itertime = 0.015
    +[ Info: t = 0.391684	Δt = 0.0011	umax = 3.3	itertime = 0.015
    +[ Info: t = 0.516822	Δt = 0.0014	umax = 2.5	itertime = 0.015
    +[ Info: t = 0.639491	Δt = 0.0012	umax = 2.9	itertime = 0.015
    +[ Info: t = 0.775942	Δt = 0.0013	umax = 2.7	itertime = 0.015
    +[ Info: t = 0.905614	Δt = 0.0012	umax = 3	itertime = 0.015

    Post-process

    We may visualize or export the computed fields

    Energy history

    julia
    outputs.ehist

    Energy spectrum

    julia
    outputs.espec

    Plot field

    julia
    fieldplot(state; setup)

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
     using IncompressibleNavierStokes
     
     n = 256
    @@ -87,8 +88,8 @@
     
     outputs.espec
     
    -fieldplot(state; setup)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/DecayingTurbulence3D.html b/previews/PR126/examples/generated/DecayingTurbulence3D.html index f5c9ce80..f70cba98 100644 --- a/previews/PR126/examples/generated/DecayingTurbulence3D.html +++ b/previews/PR126/examples/generated/DecayingTurbulence3D.html @@ -6,14 +6,14 @@ Decaying Homogeneous Isotropic Turbulence - 3D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -79,8 +79,8 @@ # outputs.ehist -outputs.espec

    This page was generated using Literate.jl.

    - +outputs.espec

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/Kolmogorov2D.html b/previews/PR126/examples/generated/Kolmogorov2D.html index 108c554a..4941774f 100644 --- a/previews/PR126/examples/generated/Kolmogorov2D.html +++ b/previews/PR126/examples/generated/Kolmogorov2D.html @@ -6,14 +6,14 @@ Kolmogorov flow (2D) | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -97,8 +97,8 @@ outputs.ehist -outputs.espec

    This page was generated using Literate.jl.

    - +outputs.espec

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/LidDrivenCavity2D.html b/previews/PR126/examples/generated/LidDrivenCavity2D.html index e1e9a2f7..6ee9f606 100644 --- a/previews/PR126/examples/generated/LidDrivenCavity2D.html +++ b/previews/PR126/examples/generated/LidDrivenCavity2D.html @@ -6,14 +6,14 @@ Tutorial: Lid-Driven Cavity - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -113,8 +113,8 @@ # outputs.anim # outputs.vtk # outputs.field -outputs.log

    This page was generated using Literate.jl.

    - +outputs.log

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/LidDrivenCavity3D.html b/previews/PR126/examples/generated/LidDrivenCavity3D.html index e795b9c2..76c643f1 100644 --- a/previews/PR126/examples/generated/LidDrivenCavity3D.html +++ b/previews/PR126/examples/generated/LidDrivenCavity3D.html @@ -6,14 +6,14 @@ Lid-Driven Cavity - 3D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -101,8 +101,8 @@ save_vtk(state; setup, filename = joinpath(outdir, "solution")) -outputs.ehist

    This page was generated using Literate.jl.

    - +outputs.ehist

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/MultiActuator.html b/previews/PR126/examples/generated/MultiActuator.html index 673d7652..300e7bc2 100644 --- a/previews/PR126/examples/generated/MultiActuator.html +++ b/previews/PR126/examples/generated/MultiActuator.html @@ -6,14 +6,14 @@ Unsteady actuator case - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -215,8 +215,8 @@ fig = fieldplot(state; setup, size = (600, 300), fieldname = :vorticity) lines!.(boxes; color = :red); -fig

    This page was generated using Literate.jl.

    - +fig

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/PlanarMixing2D.html b/previews/PR126/examples/generated/PlanarMixing2D.html index b99c0099..72ddc0b8 100644 --- a/previews/PR126/examples/generated/PlanarMixing2D.html +++ b/previews/PR126/examples/generated/PlanarMixing2D.html @@ -6,14 +6,14 @@ Planar mixing - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -128,8 +128,8 @@ outputs.rtp -save_vtk(state; setup, filename = joinpath(outdir, "solution"), psolver)

    This page was generated using Literate.jl.

    - +save_vtk(state; setup, filename = joinpath(outdir, "solution"), psolver)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/PlaneJets2D.html b/previews/PR126/examples/generated/PlaneJets2D.html index 30383a43..420ea45e 100644 --- a/previews/PR126/examples/generated/PlaneJets2D.html +++ b/previews/PR126/examples/generated/PlaneJets2D.html @@ -6,14 +6,14 @@ Plane jets - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -295,8 +295,8 @@ fieldplot(state; setup, fieldname = :velocitynorm) -fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/RayleighBenard2D.html b/previews/PR126/examples/generated/RayleighBenard2D.html index 232fc045..362f401b 100644 --- a/previews/PR126/examples/generated/RayleighBenard2D.html +++ b/previews/PR126/examples/generated/RayleighBenard2D.html @@ -6,14 +6,14 @@ Rayleigh-Bénard convection (2D) | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -84,7 +84,7 @@ nondim_type = 1, )
    (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)

    Grid

    julia
    n = 100
     x = tanh_grid(T(0), T(2), 2n, T(1.2)), tanh_grid(T(0), T(1), n, T(1.2))
    -plotgrid(x...)

    Setup

    julia
    setup = Setup(;
    +plotgrid(x...)

    Setup

    julia
    setup = Setup(;
         x,
         boundary_conditions = ((DirichletBC(), DirichletBC()), (DirichletBC(), DirichletBC())),
         Re = 1 / temperature.α1,
    @@ -111,15 +111,15 @@
             nupdate = 50,
         ),
         log = timelogger(; nupdate = 1000),
    -)
    (rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#295#296"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#295#296"()), log = (initialize = IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#295#296"()))

    Solve equation

    julia
    state, outputs = solve_unsteady(;
    +)
    (rtp = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(fieldplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), IncompressibleNavierStokes.fieldplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Any, NTuple{4, Symbol}, @NamedTuple{fieldname::Symbol, colorrange::Tuple{Float32, Float32}, size::Tuple{Int64, Int64}, colormap::Symbol}}(:fieldname => :temperature, :colorrange => (0.0f0, 1.0f0), :size => (600, 350), :colormap => :seaborn_icefire_gradient)), finalize = IncompressibleNavierStokes.var"#291#292"()), nusselt = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.nusseltplot), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.nusseltplot, 20, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), avg = (initialize = IncompressibleNavierStokesMakieExt.var"#10#12"{@NamedTuple{grid::@NamedTuple{xlims::Tuple{Tuple{Float32, Float32}, Tuple{Float32, Float32}}, dimension::IncompressibleNavierStokes.Dimension{2}, N::Tuple{Int64, Int64}, Nu::Tuple{Tuple{Int64, Int64}, Tuple{Int64, Int64}}, Np::Tuple{Int64, Int64}, Iu::Tuple{CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}, Ip::CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}, x::Tuple{Vector{Float32}, Vector{Float32}}, xu::Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, xp::Tuple{Vector{Float32}, Vector{Float32}}, Δ::Tuple{Vector{Float32}, Vector{Float32}}, Δu::Tuple{Vector{Float32}, Vector{Float32}}, A::Tuple{Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}, Tuple{Tuple{Vector{Float32}, Vector{Float32}}, Tuple{Vector{Float32}, Vector{Float32}}}}}, boundary_conditions::Tuple{Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}, Tuple{DirichletBC{Nothing}, DirichletBC{Nothing}}}, Re::Float32, bodyforce::Nothing, issteadybodyforce::Bool, closure_model::Nothing, backend::CPU, workgroupsize::Int64, temperature::@NamedTuple{α1::Float32, α2::Float32, α3::Float32, α4::Float32, γ::Float32, dodissipation::Bool, boundary_conditions::Tuple{Tuple{SymmetricBC, SymmetricBC}, Tuple{DirichletBC{Float32}, DirichletBC{Float32}}}, gdir::Int64}}, typeof(Main.averagetemp), Int64, Bool, Nothing, Bool, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}((grid = (xlims = ((0.0f0, 2.0f0), (0.0f0, 1.0f0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (202, 102), Nu = ((199, 100), (200, 99)), Np = (200, 100), Iu = (CartesianIndices((2:200, 2:101)), CartesianIndices((2:201, 2:100))), Ip = CartesianIndices((2:201, 2:101)), x = (Float32[0.0, 0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0]), xu = ((Float32[0.0, 0.0044347644, 0.008958757, 0.0135733485, 0.01827985, 0.023079693, 0.027974367, 0.032965183, 0.038053393, 0.043240547  …  1.9619466, 1.9670348, 1.9720256, 1.9769204, 1.9817202, 1.9864266, 1.9910412, 1.9955652, 2.0, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0044793785, 0.009139925, 0.013987184, 0.019026697, 0.024263948, 0.029704452, 0.03535363, 0.04121679, 0.047299176  …  0.9587832, 0.96464634, 0.97029555, 0.975736, 0.9809733, 0.9860128, 0.9908601, 0.9955206, 1.0, 1.0])), xp = (Float32[0.0, 0.0022173822, 0.0066967607, 0.011266053, 0.0159266, 0.020679772, 0.02552703, 0.030469775, 0.03550929, 0.04064697  …  1.959353, 1.9644907, 1.9695302, 1.974473, 1.9793203, 1.9840734, 1.9887339, 1.9933032, 1.9977826, 2.0], Float32[0.0, 0.0022396892, 0.006809652, 0.011563554, 0.01650694, 0.021645322, 0.0269842, 0.03252904, 0.03828521, 0.044257984  …  0.955742, 0.96171474, 0.96747094, 0.9730158, 0.9783547, 0.9834931, 0.98843646, 0.99319035, 0.9977603, 1.0]), Δ = (Float32[1.1920929f-7, 0.0044347644, 0.0045239925, 0.0046145916, 0.004706502, 0.004799843, 0.004894674, 0.004990816, 0.00508821, 0.005187154  …  0.005187154, 0.00508821, 0.004990816, 0.0048947334, 0.004799843, 0.0047063828, 0.0046145916, 0.0045239925, 0.004434824, 1.1920929f-7], Float32[1.1920929f-7, 0.0044793785, 0.004660547, 0.0048472583, 0.005039513, 0.0052372515, 0.0054405034, 0.005649179, 0.00586316, 0.006082386  …  0.006082356, 0.00586313, 0.005649209, 0.0054404736, 0.0052372813, 0.005039513, 0.004847288, 0.004660487, 0.0044794083, 1.1920929f-7]), Δu = (Float32[0.0022173822, 0.0044793785, 0.004569292, 0.004660547, 0.0047531724, 0.0048472583, 0.004942745, 0.005039513, 0.005137682, 0.0052372515  …  0.005137682, 0.0050395727, 0.004942775, 0.004847288, 0.004753113, 0.004660487, 0.004569292, 0.0044794083, 0.002217412, 1.1920929f-7], Float32[0.0022396892, 0.0045699626, 0.0047539026, 0.0049433857, 0.0051383823, 0.0053388774, 0.0055448413, 0.0057561696, 0.005972773, 0.0061945915  …  0.005972743, 0.0057561994, 0.0055448413, 0.0053389072, 0.005138397, 0.004943371, 0.0047538877, 0.0045699477, 0.0022397041, 1.1920929f-7]), A = (((Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), (Float32[1.0, 1.0, 0.5099108, 0.50981885, 0.5097228, 0.50962067, 0.50951755, 0.5094086, 0.50929356, 0.509176  …  0.49093604, 0.49081892, 0.4907065, 0.49058872, 0.4904881, 0.49038374, 0.49028164, 0.49017644, 0.49009407, 0.0], Float32[0.0, 0.49008918, 0.49018115, 0.49027717, 0.49037933, 0.49048245, 0.49059144, 0.49070647, 0.49082395, 0.49094325  …  0.5091811, 0.5092935, 0.5094113, 0.5095119, 0.50961626, 0.50971836, 0.50982356, 0.50990593, 1.0, 1.0])), ((Float32[1.0, 1.0, 0.50497997, 0.50495696, 0.50493026, 0.5049094, 0.5048909, 0.5048628, 0.50483155, 0.5048146  …  0.49520862, 0.4951738, 0.4951626, 0.49514025, 0.49510598, 0.4950843, 0.49507612, 0.49504304, 0.49502343, 0.0], Float32[0.0, 0.49502006, 0.49504304, 0.49506977, 0.4950906, 0.49510905, 0.4951372, 0.49516848, 0.4951854, 0.49521717  …  0.5048262, 0.5048374, 0.50485975, 0.504894, 0.5049157, 0.5049239, 0.50495696, 0.5049766, 1.0, 1.0]), (Float32[1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], Float32[0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing)), (DirichletBC{Nothing}(nothing), DirichletBC{Nothing}(nothing))), Re = 3752.933f0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = (α1 = 0.00026645826f0, α2 = 1.0f0, α3 = 0.00026645826f0, α4 = 0.0003752933f0, γ = 1.0f0, dodissipation = true, boundary_conditions = ((SymmetricBC(), SymmetricBC()), (DirichletBC{Float32}(1.0f0), DirichletBC{Float32}(0.0f0))), gdir = 2)), Main.averagetemp, 50, true, nothing, false, nothing, Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}()), finalize = IncompressibleNavierStokes.var"#291#292"()), log = (initialize = IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}(false, true, true, true, true, 1000), finalize = IncompressibleNavierStokes.var"#291#292"()))

    Solve equation

    julia
    state, outputs = solve_unsteady(;
         setup,
         ustart,
         tempstart,
         tlims = (T(0), T(20)),
         Δt = T(1e-2),
         processors,
    -);
    [ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.014
    -[ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.012

    Nusselt numbers

    julia
    outputs.nusselt

    Average temperature

    julia
    outputs.avg

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
    +);
    [ Info: t = 10.0001	Δt = 0.01	umax = 0.24	itertime = 0.015
    +[ Info: t = 20.0004	Δt = 0.01	umax = 0.55	itertime = 0.012

    Nusselt numbers

    julia
    outputs.nusselt

    Average temperature

    julia
    outputs.avg

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
     using IncompressibleNavierStokes
     
     outdir = joinpath(@__DIR__, "output", "RayleighBenard2D")
    @@ -244,8 +244,8 @@
     
     outputs.nusselt
     
    -outputs.avg

    This page was generated using Literate.jl.

    - +outputs.avg

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/RayleighBenard3D.html b/previews/PR126/examples/generated/RayleighBenard3D.html index d3865e7d..d1327d2b 100644 --- a/previews/PR126/examples/generated/RayleighBenard3D.html +++ b/previews/PR126/examples/generated/RayleighBenard3D.html @@ -6,14 +6,14 @@ Rayleigh-Bénard convection (3D) | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -196,8 +196,8 @@ # levels = LinRange(-T(5), T(1), 10), # fieldname = :eig2field, fieldname = :temperature, -)

    This page was generated using Literate.jl.

    - +)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/RayleighTaylor2D.html b/previews/PR126/examples/generated/RayleighTaylor2D.html index 1ce5fa30..9dfe2fae 100644 --- a/previews/PR126/examples/generated/RayleighTaylor2D.html +++ b/previews/PR126/examples/generated/RayleighTaylor2D.html @@ -6,14 +6,14 @@ Rayleigh-Taylor instability in 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -29,7 +29,7 @@ # using CUDA, CUDSS # backend = CUDABackend()
    CPU(false)

    Precision

    julia
    T = Float64
    Float64

    Grid

    julia
    n = 50
     x = tanh_grid(T(0), T(1), n, T(1.5)), tanh_grid(T(0), T(2), 2n, T(1.5))
    -plotgrid(x...; figure = (; size = (300, 600)))

    Setup

    julia
    temperature = temperature_equation(;
    +plotgrid(x...; figure = (; size = (300, 600)))

    Setup

    julia
    temperature = temperature_equation(;
         Pr = T(0.71),
         Ra = T(1e6),
         Ge = T(1.0),
    @@ -60,15 +60,15 @@
             log = timelogger(; nupdate = 200),
         ),
     );
    [ Info: t = 1	Δt = 0.005	umax = 0.1	itertime = 0.011
    -[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0032
    -[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0032
    +[ Info: t = 2	Δt = 0.005	umax = 0.32	itertime = 0.0033
    +[ Info: t = 3	Δt = 0.005	umax = 0.78	itertime = 0.0033
     [ Info: t = 4	Δt = 0.005	umax = 0.75	itertime = 0.0032
     [ Info: t = 5	Δt = 0.005	umax = 0.78	itertime = 0.0032
     [ Info: t = 6	Δt = 0.005	umax = 0.84	itertime = 0.0032
    -[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0033
    +[ Info: t = 7	Δt = 0.005	umax = 0.84	itertime = 0.0032
     [ Info: t = 8	Δt = 0.005	umax = 0.89	itertime = 0.0033
    -[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0032
    -[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0032

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
    +[ Info: t = 9	Δt = 0.005	umax = 1.2	itertime = 0.0033
    +[ Info: t = 10	Δt = 0.005	umax = 0.88	itertime = 0.0034

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
     using IncompressibleNavierStokes
     
     outdir = joinpath(@__DIR__, "output", "RayleighTaylor2D")
    @@ -118,8 +118,8 @@
             ),
             log = timelogger(; nupdate = 200),
         ),
    -);

    This page was generated using Literate.jl.

    - +);

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/RayleighTaylor3D.html b/previews/PR126/examples/generated/RayleighTaylor3D.html index f0318217..6c506148 100644 --- a/previews/PR126/examples/generated/RayleighTaylor3D.html +++ b/previews/PR126/examples/generated/RayleighTaylor3D.html @@ -6,14 +6,14 @@ Rayleigh-Taylor instability in 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -183,8 +183,8 @@ field = IncompressibleNavierStokes.eig2field(state.u, setup)[setup.grid.Ip] hist(vec(Array(log.(max.(eps(T), .-field))))) -fieldplot(state; setup, fieldname = :temperature)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup, fieldname = :temperature)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/ShearLayer2D.html b/previews/PR126/examples/generated/ShearLayer2D.html index 575d50fd..e7f06792 100644 --- a/previews/PR126/examples/generated/ShearLayer2D.html +++ b/previews/PR126/examples/generated/ShearLayer2D.html @@ -6,14 +6,14 @@ Shear layer - 2D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -106,8 +106,8 @@ fieldplot(state; setup, fieldname = :velocitynorm) -fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    - +fieldplot(state; setup, fieldname = :vorticity)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/TaylorGreenVortex2D.html b/previews/PR126/examples/generated/TaylorGreenVortex2D.html index 9f09ca38..c784b369 100644 --- a/previews/PR126/examples/generated/TaylorGreenVortex2D.html +++ b/previews/PR126/examples/generated/TaylorGreenVortex2D.html @@ -6,14 +6,14 @@ Convergence study: Taylor-Green vortex (2D) | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -88,7 +88,7 @@ scatterlines!(ax, nlist, e; label = "Data") lines!(ax, collect(extrema(nlist)), n -> n^-2.0; linestyle = :dash, label = "n^-2") axislegend(ax) -fig

    Save figure

    julia
    save(joinpath(outdir, "convergence.png"), fig)
    CairoMakie.Screen{IMAGE}

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
    +fig

    Save figure

    julia
    save(joinpath(outdir, "convergence.png"), fig)
    CairoMakie.Screen{IMAGE}

    Copy-pasteable code

    Below is the full code for this example stripped of comments and output.

    julia
    using GLMakie
     using IncompressibleNavierStokes
     using LinearAlgebra
     
    @@ -157,8 +157,8 @@
     axislegend(ax)
     fig
     
    -save(joinpath(outdir, "convergence.png"), fig)

    This page was generated using Literate.jl.

    - +save(joinpath(outdir, "convergence.png"), fig)

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/generated/TaylorGreenVortex3D.html b/previews/PR126/examples/generated/TaylorGreenVortex3D.html index 0cb826bc..0cd2395d 100644 --- a/previews/PR126/examples/generated/TaylorGreenVortex3D.html +++ b/previews/PR126/examples/generated/TaylorGreenVortex3D.html @@ -6,14 +6,14 @@ Taylor-Green vortex - 3D | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -104,8 +104,8 @@ outputs.ehist -outputs.espec

    This page was generated using Literate.jl.

    - +outputs.espec

    This page was generated using Literate.jl.

    + \ No newline at end of file diff --git a/previews/PR126/examples/index.html b/previews/PR126/examples/index.html index a0b3fe18..db39da97 100644 --- a/previews/PR126/examples/index.html +++ b/previews/PR126/examples/index.html @@ -6,14 +6,14 @@ Examples gallery | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Examples gallery

    Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

    Simple flows

    Flows with mixed boundary conditions

    With a temperature equation

    Neural network closure models

    - +
    Skip to content

    Examples gallery

    Here is a gallery of selected commented example simulations. The outputs are generated with Literate.jl and displayed inline. Copy-pasteable code is available at the bottom of each example. The raw Julia source scripts can be found in the examples folder.

    Simple flows

    Flows with mixed boundary conditions

    With a temperature equation

    Neural network closure models

    + \ No newline at end of file diff --git a/previews/PR126/getting_started.html b/previews/PR126/getting_started.html index 0088f194..0f3eb31e 100644 --- a/previews/PR126/getting_started.html +++ b/previews/PR126/getting_started.html @@ -6,14 +6,14 @@ Getting Started | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Getting Started

    To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

    sh
    add IncompressibleNavierStokes

    which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

    Check out the gallery for commented example simulations.

    - +
    Skip to content

    Getting Started

    To install IncompressibleNavierStokes, open up a Julia-REPL, type ] to get into Pkg-mode, and type:

    sh
    add IncompressibleNavierStokes

    which will install the package and all dependencies to your local environment. Note that IncompressibleNavierStokes requires Julia version 1.9 or above.

    Check out the gallery for commented example simulations.

    + \ No newline at end of file diff --git a/previews/PR126/hashmap.json b/previews/PR126/hashmap.json index 6166ecb0..90735921 100644 --- a/previews/PR126/hashmap.json +++ b/previews/PR126/hashmap.json @@ -1 +1 @@ -{"about_citing.md":"Dcb0a_6u","about_contributing.md":"BzPOAokx","about_development.md":"DV7wzfz4","about_index.md":"CEm1ci23","about_license.md":"BWGOXKn6","about_versions.md":"spYcSs0d","examples_generated_actuator2d.md":"CPxjirdp","examples_generated_actuator3d.md":"DDNf_NQa","examples_generated_backwardfacingstep2d.md":"B1L_JUM9","examples_generated_backwardfacingstep3d.md":"BQ3_PVJu","examples_generated_decayingturbulence2d.md":"pTOk0VQT","examples_generated_decayingturbulence3d.md":"CPesWMyv","examples_generated_kolmogorov2d.md":"C7XWVq5k","examples_generated_liddrivencavity2d.md":"D_iNsMnv","examples_generated_liddrivencavity3d.md":"CXnvIfHv","examples_generated_multiactuator.md":"DeF4XHSW","examples_generated_planarmixing2d.md":"DlU0y6-e","examples_generated_planejets2d.md":"Cxpw6Mt8","examples_generated_rayleighbenard2d.md":"BkiCHbrq","examples_generated_rayleighbenard3d.md":"BFDE04bU","examples_generated_rayleightaylor2d.md":"oD5hepLY","examples_generated_rayleightaylor3d.md":"DNAhoUfj","examples_generated_shearlayer2d.md":"DGqD8BRv","examples_generated_taylorgreenvortex2d.md":"DQ07YTsD","examples_generated_taylorgreenvortex3d.md":"CgnLg1YH","examples_index.md":"Bv0KGHOS","getting_started.md":"CNlPkqwq","index.md":"DfziRIh_","manual_closure.md":"s1okUHBh","manual_differentiability.md":"LRiuXsIx","manual_gpu.md":"DpR1QCQ8","manual_les.md":"C92GZ80j","manual_matrices.md":"bqsxKyZ2","manual_ns.md":"Bdh0AlV6","manual_operators.md":"C-RXRSw7","manual_precision.md":"B1snHDv2","manual_pressure.md":"CcFLQeFQ","manual_sciml.md":"D14bQOZ2","manual_setup.md":"axplHjHr","manual_solver.md":"BQt3A_rE","manual_spatial.md":"Cj3WsAzX","manual_temperature.md":"CPXaDcA-","manual_time.md":"Cp9DQrAy","manual_utils.md":"D-cuMr_K","references.md":"BG5rX2tb"} +{"about_citing.md":"TqNm3uUR","about_contributing.md":"D9mywf4p","about_development.md":"Be53C4_K","about_index.md":"CmPZh-J-","about_license.md":"CnnGAoVz","about_versions.md":"Ib_2zz2x","examples_generated_actuator2d.md":"XEdcJ7D_","examples_generated_actuator3d.md":"Do97Evrm","examples_generated_backwardfacingstep2d.md":"DnwQ8OOv","examples_generated_backwardfacingstep3d.md":"DobF6mmh","examples_generated_decayingturbulence2d.md":"DppokV8U","examples_generated_decayingturbulence3d.md":"Dg09qhTk","examples_generated_kolmogorov2d.md":"evM9cP7-","examples_generated_liddrivencavity2d.md":"DKchvkMs","examples_generated_liddrivencavity3d.md":"Cl04Txa7","examples_generated_multiactuator.md":"Cx0M-9lH","examples_generated_planarmixing2d.md":"p5HNvMEf","examples_generated_planejets2d.md":"D5dQzF-j","examples_generated_rayleighbenard2d.md":"D9MRvGoD","examples_generated_rayleighbenard3d.md":"BwFG5aXw","examples_generated_rayleightaylor2d.md":"CiHBMR2I","examples_generated_rayleightaylor3d.md":"CyfwF_YF","examples_generated_shearlayer2d.md":"DYQHuo0o","examples_generated_taylorgreenvortex2d.md":"Cu7C7v5Q","examples_generated_taylorgreenvortex3d.md":"Cvz76giG","examples_index.md":"VmxEgioE","getting_started.md":"C05263AI","index.md":"ZaF1sGJo","manual_closure.md":"CZwmLtkz","manual_differentiability.md":"FG6WYO97","manual_gpu.md":"R8m1jgoL","manual_les.md":"B91LySPy","manual_matrices.md":"C52OXQSB","manual_ns.md":"K2Xm3fp6","manual_operators.md":"BWJyilKl","manual_precision.md":"ClrCWUTo","manual_pressure.md":"BKvWGea4","manual_sciml.md":"qY4MTzys","manual_setup.md":"DlOs-IW7","manual_solver.md":"Bi4FRO99","manual_spatial.md":"BhAOohkr","manual_temperature.md":"C4cjejrf","manual_time.md":"BVGrMWBs","manual_utils.md":"D_Sg5CTM","references.md":"CsepnbHo"} diff --git a/previews/PR126/index.html b/previews/PR126/index.html index c3641eb6..cfebe38e 100644 --- a/previews/PR126/index.html +++ b/previews/PR126/index.html @@ -6,14 +6,14 @@ IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content
    - +
    Skip to content
    + \ No newline at end of file diff --git a/previews/PR126/manual/closure.html b/previews/PR126/manual/closure.html index 6704086f..4caef590 100644 --- a/previews/PR126/manual/closure.html +++ b/previews/PR126/manual/closure.html @@ -6,14 +6,14 @@ Neural closure models | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -24,10 +24,10 @@
    Skip to content

    Neural closure models

    NeuralClosure

    These features are experimental, and require cloning IncompressibleNavierStokes from GitHub:

    sh
    git clone https://github.com/agdestein/IncompressibleNavierStokes.jl
    -cd IncompressibleNavierStokes/lib/NeuralClosure

    Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

    Mu=0,dudt=F(u)Gp.

    Applying a spatial filter Φ, the extracted large scale components u¯=Φu are governed by the equation

    Mu¯=0,du¯dt=F(u¯)+cGp¯,

    where the discretizations M, F, and G are adapted to the size of their inputs and c=F(u)F(u¯) is a commutator error. We here assumed that M and Φ commute, which is the case for face averaging filters. Replacing c with a parameterized closure model m(u¯,θ)c gives the LES equations for the approximate large scale velocity v¯u¯

    Mv¯=0,dv¯dt=F(v¯)+m(v¯,θ)Gq¯.

    NeuralClosure module

    IncompressibleNavierStokes provides a NeuralClosure module.

    NeuralClosure.NeuralClosure Module

    Neural closure modelling tools.

    source

    NeuralClosure.collocate Method
    julia
    collocate(u) -> Any

    Interpolate velocity components to volume centers.

    source

    NeuralClosure.create_closure Method
    julia
    create_closure(layers...; rng)

    Create neural closure model from layers.

    source

    NeuralClosure.decollocate Method
    julia
    decollocate(u) -> Any

    Interpolate closure force from volume centers to volume faces.

    source

    NeuralClosure.wrappedclosure Method
    julia
    wrappedclosure(
    +cd IncompressibleNavierStokes/lib/NeuralClosure

    Large eddy simulation, a closure model is required. With IncompressibleNavierStokes, a neural closure model can be trained on filtered DNS data. The discrete DNS equations are given by

    Mu=0,dudt=F(u)Gp.

    Applying a spatial filter Φ, the extracted large scale components u¯=Φu are governed by the equation

    Mu¯=0,du¯dt=F(u¯)+cGp¯,

    where the discretizations M, F, and G are adapted to the size of their inputs and c=F(u)F(u¯) is a commutator error. We here assumed that M and Φ commute, which is the case for face averaging filters. Replacing c with a parameterized closure model m(u¯,θ)c gives the LES equations for the approximate large scale velocity v¯u¯

    Mv¯=0,dv¯dt=F(v¯)+m(v¯,θ)Gq¯.

    NeuralClosure module

    IncompressibleNavierStokes provides a NeuralClosure module.

    NeuralClosure.NeuralClosure Module

    Neural closure modelling tools.

    source

    NeuralClosure.collocate Method
    julia
    collocate(u) -> Any

    Interpolate velocity components to volume centers.

    source

    NeuralClosure.create_closure Method
    julia
    create_closure(layers...; rng)

    Create neural closure model from layers.

    source

    NeuralClosure.decollocate Method
    julia
    decollocate(u) -> Any

    Interpolate closure force from volume centers to volume faces.

    source

    NeuralClosure.wrappedclosure Method
    julia
    wrappedclosure(
         m,
         setup
    -) -> NeuralClosure.var"#neuralclosure#1"

    Wrap closure model and parameters so that it can be used in the solver.

    source

    Filters

    The following filters are available:

    NeuralClosure.AbstractFilter Type
    julia
    abstract type AbstractFilter

    Discrete DNS filter.

    Subtypes ConcreteFilter should implement the in-place method:

    (::ConcreteFilter)(v, u, setup_les, compression)

    which filters the DNS field u and put result in LES field v. Then the out-of place method:

    (::ConcreteFilter)(u, setup_les, compression)

    automatically becomes available.

    Fields

    source

    NeuralClosure.FaceAverage Type
    julia
    struct FaceAverage <: NeuralClosure.AbstractFilter

    Average fine grid velocity field over coarse volume face.

    Fields

    source

    NeuralClosure.VolumeAverage Type
    julia
    struct VolumeAverage <: NeuralClosure.AbstractFilter

    Average fine grid velocity field over coarse volume.

    Fields

    source

    NeuralClosure.reconstruct! Method
    julia
    reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

    Reconstruct DNS velocity u from LES velocity v.

    source

    NeuralClosure.reconstruct Method
    julia
    reconstruct(v, setup_dns, setup_les, comp) -> Any

    Reconstruct DNS velocity field. See also reconstruct!.

    source

    Training

    To improve the model parameters, we exploit exact filtered DNS data u¯ and exact commutator errors c obtained through DNS. The model is trained by minimizing the a priori loss function

    Lprior(θ)=m(u¯,θ)c2,

    or the a posteriori loss function

    Lpost(θ)=v¯θu¯2,

    where v¯θ is the solution to the LES equation for the given parameters θ. The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing Lprior does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE.

    NeuralClosure.create_callback Method
    julia
    create_callback(
    +) -> NeuralClosure.var"#neuralclosure#1"

    Wrap closure model and parameters so that it can be used in the solver.

    source

    Filters

    The following filters are available:

    NeuralClosure.AbstractFilter Type
    julia
    abstract type AbstractFilter

    Discrete DNS filter.

    Subtypes ConcreteFilter should implement the in-place method:

    (::ConcreteFilter)(v, u, setup_les, compression)

    which filters the DNS field u and put result in LES field v. Then the out-of place method:

    (::ConcreteFilter)(u, setup_les, compression)

    automatically becomes available.

    Fields

    source

    NeuralClosure.FaceAverage Type
    julia
    struct FaceAverage <: NeuralClosure.AbstractFilter

    Average fine grid velocity field over coarse volume face.

    Fields

    source

    NeuralClosure.VolumeAverage Type
    julia
    struct VolumeAverage <: NeuralClosure.AbstractFilter

    Average fine grid velocity field over coarse volume.

    Fields

    source

    NeuralClosure.reconstruct! Method
    julia
    reconstruct!(u, v, setup_dns, setup_les, comp) -> Any

    Reconstruct DNS velocity u from LES velocity v.

    source

    NeuralClosure.reconstruct Method
    julia
    reconstruct(v, setup_dns, setup_les, comp) -> Any

    Reconstruct DNS velocity field. See also reconstruct!.

    source

    Training

    To improve the model parameters, we exploit exact filtered DNS data u¯ and exact commutator errors c obtained through DNS. The model is trained by minimizing the a priori loss function

    Lprior(θ)=m(u¯,θ)c2,

    or the a posteriori loss function

    Lpost(θ)=v¯θu¯2,

    where v¯θ is the solution to the LES equation for the given parameters θ. The prior loss is easy to evaluate and easy to differentiate, as it does not involve solving the ODE. However, minimizing Lprior does not take into account the effect of the prediction error on the LES solution error. The posterior loss does, but has a longer computational chain involving solving the LES ODE.

    NeuralClosure.create_callback Method
    julia
    create_callback(
         err;
         θ,
         callbackstate,
    @@ -36,29 +36,29 @@
         displayupdates,
         figfile,
         nupdate
    -)

    Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

    If state is nonempty, it also plots previous convergence.

    If not using interactive GLMakie window, set displayupdates to true.

    source

    NeuralClosure.create_dataloader_post Method
    julia
    create_dataloader_post(
    +)

    Create convergence plot for relative error between f(x, θ) and y. At each callback, plot is updated and current error is printed.

    If state is nonempty, it also plots previous convergence.

    If not using interactive GLMakie window, set displayupdates to true.

    source

    NeuralClosure.create_dataloader_post Method
    julia
    create_dataloader_post(
         trajectories;
         ntrajectory,
         nunroll,
         device
    -)

    Create trajectory dataloader.

    source

    NeuralClosure.create_dataloader_prior Method
    julia
    create_dataloader_prior(
    +)

    Create trajectory dataloader.

    source

    NeuralClosure.create_dataloader_prior Method
    julia
    create_dataloader_prior(
         data;
         batchsize,
         device
    -) -> NeuralClosure.var"#dataloader#40"{Int64}

    Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

    source

    NeuralClosure.create_loss_post Method
    julia
    create_loss_post(
    +) -> NeuralClosure.var"#dataloader#40"{Int64}

    Create dataloader that uses a batch of batchsize random samples from data at each evaluation. The batch is moved to device.

    source

    NeuralClosure.create_loss_post Method
    julia
    create_loss_post(
     ;
         setup,
         method,
         psolver,
         closure_model,
         nsubstep
    -)

    Create a-posteriori loss function.

    source

    NeuralClosure.create_loss_prior Function
    julia
    create_loss_prior(
    +)

    Create a-posteriori loss function.

    source

    NeuralClosure.create_loss_prior Function
    julia
    create_loss_prior(
         f
     ) -> NeuralClosure.var"#loss_prior#53"{_A, NeuralClosure.var"#51#52"} where _A
     create_loss_prior(
         f,
         normalize
    -) -> NeuralClosure.var"#loss_prior#53"

    Return mean squared error loss for the predictor f.

    source

    NeuralClosure.create_relerr_post Method
    julia
    create_relerr_post(
    +) -> NeuralClosure.var"#loss_prior#53"

    Return mean squared error loss for the predictor f.

    source

    NeuralClosure.create_relerr_post Method
    julia
    create_relerr_post(
     ;
         data,
         setup,
    @@ -66,7 +66,7 @@
         psolver,
         closure_model,
         nsubstep
    -)

    Create a-posteriori relative error.

    source

    NeuralClosure.create_relerr_prior Method
    julia
    create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

    Create a-priori error.

    source

    NeuralClosure.create_relerr_symmetry_post Method
    julia
    create_relerr_symmetry_post(
    +)

    Create a-posteriori relative error.

    source

    NeuralClosure.create_relerr_prior Method
    julia
    create_relerr_prior(f, x, y) -> NeuralClosure.var"#54#55"

    Create a-priori error.

    source

    NeuralClosure.create_relerr_symmetry_post Method
    julia
    create_relerr_symmetry_post(
     ;
         u,
         setup,
    @@ -75,7 +75,7 @@
         Δt,
         nstep,
         g
    -)

    Create a-posteriori symmetry error.

    source

    NeuralClosure.create_relerr_symmetry_prior Method
    julia
    create_relerr_symmetry_prior(; u, setup, g)

    Create a-priori equivariance error.

    source

    NeuralClosure.train Method
    julia
    train(
    +)

    Create a-posteriori symmetry error.

    source

    NeuralClosure.create_relerr_symmetry_prior Method
    julia
    create_relerr_symmetry_prior(; u, setup, g)

    Create a-priori equivariance error.

    source

    NeuralClosure.train Method
    julia
    train(
     ;
         dataloader,
         loss,
    @@ -84,7 +84,7 @@
         callback,
         callbackstate,
         λ
    -)

    Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

    Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

    source

    NeuralClosure.trainepoch Method
    julia
    trainepoch(
    +)

    Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

    Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

    source

    NeuralClosure.trainepoch Method
    julia
    trainepoch(
     ;
         dataloader,
         loss,
    @@ -94,7 +94,7 @@
         device,
         noiselevel,
         λ
    -)

    Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

    Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

    source

    Neural architectures

    We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).

    NeuralClosure.cnn Method
    julia
    cnn(
    +)

    Update parameters θ to minimize loss(dataloader(), θ) using the optimiser opt for niter iterations.

    Return the a new named tuple (; opt, θ, callbackstate) with updated state and parameters.

    source

    Neural architectures

    We provide neural architectures: A convolutional neural network (CNN), group convolutional neural networks (G-CNN) and a Fourier neural operator (FNO).

    NeuralClosure.cnn Method
    julia
    cnn(
     ;
         setup,
         radii,
    @@ -103,7 +103,7 @@
         use_bias,
         channel_augmenter,
         rng
    -)

    Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

    source

    NeuralClosure.GroupConv2D Type
    julia
    struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

    Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

    The kwargs are passed to the Conv layer.

    The layer has three variants:

    • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

    • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

    • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

    Fields

    • islifting

    • isprojecting

    • cin

    • cout

    • conv

    source

    NeuralClosure.gcnn Method
    julia
    gcnn(; setup, radii, channels, activations, use_bias, rng)

    Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

    source

    NeuralClosure.rot2 Function
    julia
    rot2(u, r)

    Rotate the field u by 90 degrees counter-clockwise r - 1 times.

    source

    NeuralClosure.rot2 Method
    julia
    rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

    Rotate vector fields [ux;;; uy]

    source

    NeuralClosure.rot2stag Method
    julia
    rot2stag(u, g) -> Any

    Rotate staggered grid velocity field. See also rot2.

    source

    NeuralClosure.vecrot2 Method
    julia
    vecrot2(u, r) -> Any

    Rotate vector fields [ux;;; uy]

    source

    NeuralClosure.FourierLayer Type
    julia
    struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

    Fourier layer operating on uniformly discretized functions.

    Some important sizes:

    • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

    • (nx..., cin, nsample): Input size

    • (nx..., cout, nsample): Output size

    • nx = fill(n, dimension()): Number of points in each spatial dimension

    • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

    • kmax: Cut-off wavenumber

    • nsample: Number of input samples (treated independently)

    Fields

    • dimension

    • kmax

    • cin

    • cout

    • σ

    • init_weight

    source

    NeuralClosure.fno Method
    julia
    fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

    Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

    source

    Data generation

    NeuralClosure.create_io_arrays Method
    julia
    create_io_arrays(data, setup) -> NamedTuple

    Create (u¯,c) pairs for a-priori training.

    source

    NeuralClosure.create_les_data Method
    julia
    create_les_data(
    +)

    Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

    source

    NeuralClosure.GroupConv2D Type
    julia
    struct GroupConv2D{C} <: LuxCore.AbstractLuxLayer

    Group-equivariant convolutional layer – with respect to the p4 group. The layer is equivariant to rotations and translations of the input vector field.

    The kwargs are passed to the Conv layer.

    The layer has three variants:

    • If islifting then it lifts a vector input (u1, u2) into a rotation-state vector (v1, v2, v3, v4).

    • If isprojecting, it projects a rotation-state vector (u1, u2, u3, v4) into a vector (v1, v2).

    • Otherwise, it cyclically transforms the rotation-state vector (u1, u2, u3, u4) into a new rotation-state vector (v1, v2, v3, v4).

    Fields

    • islifting

    • isprojecting

    • cin

    • cout

    • conv

    source

    NeuralClosure.gcnn Method
    julia
    gcnn(; setup, radii, channels, activations, use_bias, rng)

    Create CNN closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(u, θ) predicts the commutator error.

    source

    NeuralClosure.rot2 Function
    julia
    rot2(u, r)

    Rotate the field u by 90 degrees counter-clockwise r - 1 times.

    source

    NeuralClosure.rot2 Method
    julia
    rot2(u::Tuple{T, T}, r) -> Union{Nothing, Tuple{Any, Any}}

    Rotate vector fields [ux;;; uy]

    source

    NeuralClosure.rot2stag Method
    julia
    rot2stag(u, g) -> Any

    Rotate staggered grid velocity field. See also rot2.

    source

    NeuralClosure.vecrot2 Method
    julia
    vecrot2(u, r) -> Any

    Rotate vector fields [ux;;; uy]

    source

    NeuralClosure.FourierLayer Type
    julia
    struct FourierLayer{D, A, F} <: LuxCore.AbstractLuxLayer

    Fourier layer operating on uniformly discretized functions.

    Some important sizes:

    • dimension: Spatial dimension, e.g. Dimension(2) or Dimension(3).

    • (nx..., cin, nsample): Input size

    • (nx..., cout, nsample): Output size

    • nx = fill(n, dimension()): Number of points in each spatial dimension

    • n ≥ kmax: Same number of points in each spatial dimension, must be larger than cut-off wavenumber

    • kmax: Cut-off wavenumber

    • nsample: Number of input samples (treated independently)

    Fields

    • dimension

    • kmax

    • cin

    • cout

    • σ

    • init_weight

    source

    NeuralClosure.fno Method
    julia
    fno(; setup, kmax, c, σ, ψ, rng, kwargs...)

    Create FNO closure model. Return a tuple (closure, θ) where θ are the initial parameters and closure(V, θ) predicts the commutator error.

    source

    Data generation

    NeuralClosure.create_io_arrays Method
    julia
    create_io_arrays(data, setup) -> NamedTuple

    Create (u¯,c) pairs for a-priori training.

    source

    NeuralClosure.create_les_data Method
    julia
    create_les_data(
     ;
         D,
         Re,
    @@ -123,7 +123,7 @@
         rng,
         filenames,
         kwargs...
    -)

    Create filtered DNS data.

    source

    NeuralClosure.filtersaver Method
    julia
    filtersaver(
    +)

    Create filtered DNS data.

    source

    NeuralClosure.filtersaver Method
    julia
    filtersaver(
         dns,
         les,
         filters,
    @@ -134,8 +134,8 @@
         filenames,
         F,
         p
    -)

    Save filtered DNS data.

    source

    - +)

    Save filtered DNS data.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/differentiability.html b/previews/PR126/manual/differentiability.html index 971a1594..ad9f48fb 100644 --- a/previews/PR126/manual/differentiability.html +++ b/previews/PR126/manual/differentiability.html @@ -6,14 +6,14 @@ Differentiating through the code | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -98,7 +98,7 @@ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

    Remember that the derivative of the output (also called the seed) has to be set to 1 in order to compute the gradient. In this case the output is the force, that we store mutating the value of dudt inside right_hand_side!.

    Then we pack the parameters to be passed to right_hand_side!:

    julia
    params = [setup, psolver];
    -params_ref = Ref(params);
    Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#124"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
    +params_ref = Ref(params);
    Base.RefValue{Vector{Any}}(Any[(grid = (xlims = ((0.0, 1.0), (0.0, 1.0)), dimension = IncompressibleNavierStokes.Dimension{2}(), N = (102, 102), Nu = ((100, 100), (100, 100)), Np = (100, 100), Iu = (CartesianIndices((2:101, 2:101)), CartesianIndices((2:101, 2:101))), Ip = CartesianIndices((2:101, 2:101)), x = ([-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.010000000000000009, 0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01]), xu = (([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09  …  0.92, 0.93, 0.94, 0.95, 0.96, 0.97, 0.98, 0.99, 1.0, 1.01])), xp = ([-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005], [-0.0050000000000000044, 0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.07500000000000001, 0.08499999999999999  …  0.915, 0.925, 0.935, 0.945, 0.955, 0.965, 0.975, 0.985, 0.995, 1.005]), Δ = ([0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009], [0.010000000000000009, 0.01, 0.01, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000009, 0.009999999999999995, 0.009999999999999995  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009]), Δu = ([0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044], [0.010000000000000005, 0.009999999999999998, 0.010000000000000002, 0.010000000000000002, 0.009999999999999995, 0.010000000000000002, 0.010000000000000002, 0.010000000000000009, 0.009999999999999981, 0.010000000000000009  …  0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.010000000000000009, 0.009999999999999898, 0.0050000000000000044]), A = ((([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0]), ([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0])), (([1.0, 0.4999999999999998, 0.4999999999999999, 0.5, 0.5000000000000003, 0.5, 0.49999999999999967, 0.5000000000000003, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5000000000000056, 0.5, 0.5, 0.5, 0.5, 0.5, 0.49999999999999445], [0.5000000000000002, 0.5000000000000001, 0.5, 0.49999999999999967, 0.5, 0.5000000000000003, 0.49999999999999967, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.49999999999999445, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5000000000000056, 1.0]), ([1.0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5  …  0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1.0])))), boundary_conditions = ((PeriodicBC(), PeriodicBC()), (PeriodicBC(), PeriodicBC())), Re = 500.0, bodyforce = nothing, issteadybodyforce = false, closure_model = nothing, backend = CPU(false), workgroupsize = 64, temperature = nothing), IncompressibleNavierStokes.var"#psolve!#120"{FFTW.rFFTWPlan{Float64, -1, false, 2, Tuple{Int64, Int64}}, Matrix{Float64}, Matrix{ComplexF64}, Int64, CartesianIndices{2, Tuple{UnitRange{Int64}, UnitRange{Int64}}}}(FFTW real-to-complex plan for 100×100 array of Float64
     (rdft2-rank>=2/1
       (rdft2-vrank>=1-x100/1
         (rdft2-ct-dit/20
    @@ -113,10 +113,10 @@
       (dft-vrank>=1-x51/1
         (dft-ct-dit/10
           (dftw-direct-10/6 "t3fv_10_avx2_128")
    -      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [0.0 1.0e-323 … 4.476222801294416e-309 2.22285826e-316; 1.0e-323 5.0e-324 … 4.086352372e-315 2.788239291745271e-292; … ; 1.0e-323 0.0 … 1.5e-323 2.5e-323; 5.0e-324 5.0e-324 … 4.172013485024793e-309 2.781469643852857e-309], ComplexF64[6.9473808475373e-310 + 6.9472543692157e-310im 6.9473808474195e-310 + 6.94738084786455e-310im … 1.45993310422047e-310 + 1.459933104524e-310im 1.02534836643315e-310 + 1.01855797969653e-310im; 6.94738084734203e-310 + 6.9473808472946e-310im 6.94738084786455e-310 + 6.9473396554765e-310im … 1.01855798000167e-310 + 1.02534836643315e-310im 1.0253483662276e-310 + 1.45314271789175e-310im; … ; 6.9473808474195e-310 + 6.94738084786455e-310im 0.0 + 0.0im … 1.425981173916e-311 + 1.0253483662276e-310im 1.425981173916e-311 + 1.0253483662276e-310im; 6.94738084741634e-310 + 6.9473808474195e-310im 0.0 + 0.0im … 1.45314271789175e-310 + 1.02534836643157e-310im 1.4259811738527e-311 + 1.351286920025e-310im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

    Now, we call the autodiff function from Enzyme:

    julia
    Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
    ((nothing, nothing, nothing, nothing),)

    Since we have passed a Duplicated object, the gradient of u is stored in du.

    Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

    julia
    f = create_right_hand_side(setup, psolver)
    +      (dft-directbuf/14-10-x10 "n1fv_10_avx2")))), [-1.5169854288852012e167 3.836077315317973e-74 … 2.1219957905e-314 2.1219957905e-314; -8.507379514117979e-225 1.6027028966112923e-91 … 1.920406190823e-311 1.4578111083926e-311; … ; -1.2141858833153945e-300 3.3507373493510954e-307 … 0.0 2.1219957905e-314; 2.1995970577474693e-65 1.9226358005791237e-244 … 0.0 1.7209385864723e-311], ComplexF64[-1.861253086923037e-142 + 8.042877991305456e-295im -2.0507237810427664e196 + 7.951586378475656e99im … 3.226759849637e-312 + 9.732773503e-315im NaN + NaN*im; 2.8101085824812788e-154 + 3.6740254877366077e-153im 3.542437186098202e-246 - 4.88313130037973e-42im … 5.10171079e-315 + 4.61191569e-315im 5.101703954e-315 + 0.0im; … ; -3.041019724203204e130 - 6.465481485673722e146im 0.0 + 0.0im … 3.487346077e-315 + 4.0e-323im 7.153453405e-315 + 9.814087183e-315im; -2.1844512363060048e92 + 3.0219088082524375e124im 2.47e-320 + 0.0im … 3.50943247e-315 + 4.0e-323im 0.0 + 0.0im], Core.Box(([0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  3.68865585100403, 3.752613360087727, 3.809654104932039, 3.859552971776503, 3.9021130325903073, 3.9371663222572626, 3.9645745014573777, 3.984229402628956, 3.996053456856544, 4.0], [0.0, 0.003946543143456876, 0.01577059737104434, 0.035425498542622634, 0.06283367774273778, 0.09788696740969285, 0.1404470282234972, 0.19034589506796099, 0.24738663991227286, 0.3113441489959698  …  0.3819660112501049, 0.3113441489959696, 0.24738663991227255, 0.19034589506796068, 0.14044702822349744, 0.09788696740969302, 0.06283367774273789, 0.0354254985426227, 0.015770597371044366, 0.003946543143456883])), 2, CartesianIndices((2:101, 2:101)))])

    Now, we call the autodiff function from Enzyme:

    julia
    Enzyme.autodiff(Enzyme.Reverse, f!, Duplicated(dudt,ddudt), Duplicated(u,du), Const(params_ref), Const(t))
    ((nothing, nothing, nothing, nothing),)

    Since we have passed a Duplicated object, the gradient of u is stored in du.

    Finally, we can also compare its value with the one obtained by Zygote differentiating the out-of-place (non-mutating) version of the right-hand side:

    julia
    f = create_right_hand_side(setup, psolver)
     _, zpull = Zygote.pullback(f, u, nothing, 0.0);
    -@assert zpull(dudt)[1] == du
    - +@assert zpull(dudt)[1] == du + \ No newline at end of file diff --git a/previews/PR126/manual/gpu.html b/previews/PR126/manual/gpu.html index bba734bf..4107cc4b 100644 --- a/previews/PR126/manual/gpu.html +++ b/previews/PR126/manual/gpu.html @@ -6,14 +6,14 @@ GPU Support | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -24,8 +24,8 @@
    Skip to content

    GPU Support

    IncompressibleNavierStokes supports various array types. The desired backend only has to be passed to the Setup function:

    julia
    using CUDA
    -setup = Setup(; kwargs..., backend = CUDABackend())

    All operators have been made are backend agnostic by using KernelAbstractions.jl. Even if a GPU is not available, the operators are multithreaded if Julia is started with multiple threads (e.g. julia -t 4)

    • This has been tested with CUDA compatible GPUs.

    • This has not been tested with other GPU interfaces, such as

      If they start supporting sparse matrices and fast Fourier transforms they could also be used.

    psolver_direct on CUDA

    To use a specialized linear solver for CUDA, make sure to install and using CUDA.jl and CUDSS.jl. Then psolver_direct will automatically use the CUDSS solver.

    - +setup = Setup(; kwargs..., backend = CUDABackend())

    All operators have been made are backend agnostic by using KernelAbstractions.jl. Even if a GPU is not available, the operators are multithreaded if Julia is started with multiple threads (e.g. julia -t 4)

    psolver_direct on CUDA

    To use a specialized linear solver for CUDA, make sure to install and using CUDA.jl and CUDSS.jl. Then psolver_direct will automatically use the CUDSS solver.

    + \ No newline at end of file diff --git a/previews/PR126/manual/les.html b/previews/PR126/manual/les.html index 1cfdb2dc..25ae4dd4 100644 --- a/previews/PR126/manual/les.html +++ b/previews/PR126/manual/les.html @@ -6,14 +6,14 @@ Large eddy simulation | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Large eddy simulation

    Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

    On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

    On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

    If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

    Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

    - +
    Skip to content

    Large eddy simulation

    Depending on the problem specification, a given grid resolution may not be sufficient to resolve all spatial features of the flow. Consider the following example:

    On the left, the grid spacing is too large to capt the smallest eddies in the flow. These eddies create sub-grid stresses that also affect the large scale features. The grid must be refined if we want to compute these stresses exactly.

    On the right, the smallest spatial feature of the flow is fully resolved, and there are no sub-grid stresses. The equations can be solved without worrying about errors from unresolved features. This is known as Direct Numerical Simulation (DNS).

    If refining the grid is too costly, a closure model can be used to predict the sub-grid stresses. The models only give an estimate for these stresses, and may need to be calibrated to the given problem. When used correctly, they can predict the evolution of the large fluid motions without computing the sub-grid motions themselves. This is known as Large Eddy Simulation (LES).

    Eddy viscosity models add a local contribution to the global baseline viscosity. The baseline viscosity models transfer of energy from resolved to atomic scales. The new turbulent viscosity on the other hand, models energy transfer from resolved to unresolved scales. This non-constant field is computed from the local velocity field.

    + \ No newline at end of file diff --git a/previews/PR126/manual/matrices.html b/previews/PR126/manual/matrices.html index ef993ca5..6fedc060 100644 --- a/previews/PR126/manual/matrices.html +++ b/previews/PR126/manual/matrices.html @@ -6,14 +6,14 @@ Sparse matrices | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -133,16 +133,16 @@ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 … 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 - 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

    By adding yM, we get the equality:

    julia
    maximum(abs, (div_matrix + yM) - div_kernel)
    2.842170943040401e-14

    API

    IncompressibleNavierStokes.bc_p_mat Function

    Matrix for applying boundary conditions to pressure fields p.

    source

    IncompressibleNavierStokes.bc_temp_mat Function

    Matrix for applying boundary conditions to temperature fields temp.

    source

    IncompressibleNavierStokes.bc_u_mat Function

    Create matrix for applying boundary conditions to velocity fields u. This matrix only applies the boundary conditions depending on u itself (e.g. PeriodicBC). It does not apply constant boundary conditions (e.g. non-zero DirichletBC).

    source

    IncompressibleNavierStokes.diffusion_mat Method
    julia
    diffusion_mat(
    + 0.0     0.0     0.0     0.0     0.0        0.0     0.0     0.0     0.0  0.0

    By adding yM, we get the equality:

    julia
    maximum(abs, (div_matrix + yM) - div_kernel)
    2.842170943040401e-14

    API

    IncompressibleNavierStokes.bc_p_mat Function

    Matrix for applying boundary conditions to pressure fields p.

    source

    IncompressibleNavierStokes.bc_temp_mat Function

    Matrix for applying boundary conditions to temperature fields temp.

    source

    IncompressibleNavierStokes.bc_u_mat Function

    Create matrix for applying boundary conditions to velocity fields u. This matrix only applies the boundary conditions depending on u itself (e.g. PeriodicBC). It does not apply constant boundary conditions (e.g. non-zero DirichletBC).

    source

    IncompressibleNavierStokes.diffusion_mat Method
    julia
    diffusion_mat(
         setup
    -) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Diffusion matrix.

    source

    IncompressibleNavierStokes.divergence_mat Method
    julia
    divergence_mat(
    +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Diffusion matrix.

    source

    IncompressibleNavierStokes.divergence_mat Method
    julia
    divergence_mat(
         setup
    -) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Divergence matrix.

    source

    IncompressibleNavierStokes.laplacian_mat Method
    julia
    laplacian_mat(setup) -> Any

    Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

    source

    IncompressibleNavierStokes.pad_scalarfield_mat Method
    julia
    pad_scalarfield_mat(setup) -> Any

    Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

    See also: pad_vectorfield_mat.

    source

    IncompressibleNavierStokes.pad_vectorfield_mat Method
    julia
    pad_vectorfield_mat(
    +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Divergence matrix.

    source

    IncompressibleNavierStokes.laplacian_mat Method
    julia
    laplacian_mat(setup) -> Any

    Get matrix for the Laplacian operator (for the pressure-Poisson equation). This matrix takes scalar field inputs restricted to the actual degrees of freedom.

    source

    IncompressibleNavierStokes.pad_scalarfield_mat Method
    julia
    pad_scalarfield_mat(setup) -> Any

    Create matrix for padding inner scalar field with boundary volumes. This can be useful for algorithms that require vectors with degrees of freedom only, and not the ghost volumes. To go back, simply transpose the matrix.

    See also: pad_vectorfield_mat.

    source

    IncompressibleNavierStokes.pad_vectorfield_mat Method
    julia
    pad_vectorfield_mat(
         setup
    -) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

    source

    IncompressibleNavierStokes.pressuregradient_mat Method
    julia
    pressuregradient_mat(
    +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Create matrix for padding inner vector field with boundary volumes, similar to pad_scalarfield_mat.

    source

    IncompressibleNavierStokes.pressuregradient_mat Method
    julia
    pressuregradient_mat(
         setup
    -) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Pressure gradient matrix.

    source

    IncompressibleNavierStokes.volume_mat Method
    julia
    volume_mat(setup) -> Any

    Volume-size matrix.

    source

    - +) -> SparseArrays.SparseMatrixCSC{Tv, Int64} where Tv

    Pressure gradient matrix.

    source

    IncompressibleNavierStokes.volume_mat Method
    julia
    volume_mat(setup) -> Any

    Volume-size matrix.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/ns.html b/previews/PR126/manual/ns.html index f38c1632..92082218 100644 --- a/previews/PR126/manual/ns.html +++ b/previews/PR126/manual/ns.html @@ -6,14 +6,14 @@ Incompressible Navier-Stokes equations | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Incompressible Navier-Stokes equations

    The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:

    u=0,ut+(uuT)=p+ν2u+f,

    where ΩRd is the domain, d{2,3} is the spatial dimension, u=(u1,,ud) is the velocity field, p is the pressure, ν is the kinematic viscosity, and f=(f1,,fd) is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate x=(x1,,xd) and time t. We assume that Ω is a rectangular domain.

    Integral form

    The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:

    1|O|OundΓ=0,ddt1|O|OudΩ=1|O|O(uuTpI+νu)ndΓ+1|O|OfdΩ,

    where OΩ is an arbitrary control volume with boundary O, normal n, surface element dΓ, and volume size |O|. We have divided by the control volume sizes in the integral form.

    Boundary conditions

    The boundary conditions on a part of the boundary ΓΩ are one or more of the following:

    • Dirichlet: u=uBC on Γ for some uBC;

    • Neumann: un=0 on Γ;

    • Periodic: u(x)=u(x+τ) and p(x)=p(x+τ) for xΓ, where Γ+τΩ is another part of the boundary and τ is a translation vector;

    • Stress free: σn=0 on Γ, where σ=(pI+2νS).

    Pressure equation

    Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:

    2p=((uuT))f

    In scalar notation, this becomes

    α=1d2xαxαp=α=1dβ=1d2xαxβ(uαuβ)α=1dfαxα.

    Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.

    If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to 1.

    Other quantities of interest

    Reynolds number

    The Reynolds number is the inverse of the viscosity: Re=1ν. It is the only flow parameter governing the incompressible Navier-Stokes equations.

    Kinetic energy

    The local and total kinetic energy are defined by k=12u22 and K=12uL2(Ω)2=ΩkdΩ.

    Vorticity

    The vorticity is defined as ω=×u.

    In 2D, it is a scalar field given by

    ω=u1x2+u2x1.

    In 3D, it is a vector field given by

    ω=(u2x3+u3x2u3x1+u1x3u1x2+u2x1).

    Note that the 2D vorticity is equal to the x3-component of the 3D vorticity.

    Stream function

    In 2D, the stream function ψ is a scalar field such that

    u1=ψx2,u2=ψx1.

    It can be found by solving

    2ψ=ω.

    In 3D, the stream function is a vector field such that

    u=×ψ.

    It can be found by solving

    2ψ=×ω.
    - +
    Skip to content

    Incompressible Navier-Stokes equations

    The incompressible Navier-Stokes equations describe conservation of mass and conservation of momentum, which can be written as a divergence-free constraint and an evolution equation:

    u=0,ut+(uuT)=p+ν2u+f,

    where ΩRd is the domain, d{2,3} is the spatial dimension, u=(u1,,ud) is the velocity field, p is the pressure, ν is the kinematic viscosity, and f=(f1,,fd) is the body force per unit of volume. The velocity, pressure, and body force are functions of the spatial coordinate x=(x1,,xd) and time t. We assume that Ω is a rectangular domain.

    Integral form

    The integral form of the Navier-Stokes equations is used as starting point to develop a spatial discretization:

    1|O|OundΓ=0,ddt1|O|OudΩ=1|O|O(uuTpI+νu)ndΓ+1|O|OfdΩ,

    where OΩ is an arbitrary control volume with boundary O, normal n, surface element dΓ, and volume size |O|. We have divided by the control volume sizes in the integral form.

    Boundary conditions

    The boundary conditions on a part of the boundary ΓΩ are one or more of the following:

    • Dirichlet: u=uBC on Γ for some uBC;

    • Neumann: un=0 on Γ;

    • Periodic: u(x)=u(x+τ) and p(x)=p(x+τ) for xΓ, where Γ+τΩ is another part of the boundary and τ is a translation vector;

    • Stress free: σn=0 on Γ, where σ=(pI+2νS).

    Pressure equation

    Taking the divergence of the momemtum equations yields a Poisson equation for the pressure:

    2p=((uuT))f

    In scalar notation, this becomes

    α=1d2xαxαp=α=1dβ=1d2xαxβ(uαuβ)α=1dfαxα.

    Note the absence of time derivatives in the pressure equation. While the velocity field evolves in time, the pressure only changes such that the velocity stays divergence free.

    If there are no pressure boundary conditions, the pressure is only unique up to a constant. We set this constant to 1.

    Other quantities of interest

    Reynolds number

    The Reynolds number is the inverse of the viscosity: Re=1ν. It is the only flow parameter governing the incompressible Navier-Stokes equations.

    Kinetic energy

    The local and total kinetic energy are defined by k=12u22 and K=12uL2(Ω)2=ΩkdΩ.

    Vorticity

    The vorticity is defined as ω=×u.

    In 2D, it is a scalar field given by

    ω=u1x2+u2x1.

    In 3D, it is a vector field given by

    ω=(u2x3+u3x2u3x1+u1x3u1x2+u2x1).

    Note that the 2D vorticity is equal to the x3-component of the 3D vorticity.

    Stream function

    In 2D, the stream function ψ is a scalar field such that

    u1=ψx2,u2=ψx1.

    It can be found by solving

    2ψ=ω.

    In 3D, the stream function is a vector field such that

    u=×ψ.

    It can be found by solving

    2ψ=×ω.
    + \ No newline at end of file diff --git a/previews/PR126/manual/operators.html b/previews/PR126/manual/operators.html index 810ae3a6..b5383c9d 100644 --- a/previews/PR126/manual/operators.html +++ b/previews/PR126/manual/operators.html @@ -6,14 +6,14 @@ Operators | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,13 +23,13 @@ -
    Skip to content

    Operators

    All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

    IncompressibleNavierStokes.Offset Type
    julia
    struct Offset{D}

    Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

    See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

    Fields

    source

    IncompressibleNavierStokes.Dfield! Method
    julia
    Dfield!(d, G, p, setup; ϵ) -> Any

    Compute the D-field (in-place version).

    source

    IncompressibleNavierStokes.Dfield Method
    julia
    Dfield(p, setup; kwargs...) -> Any

    Compute the D-field [5] given by

    D=2|p|2p.

    Differentiable version.

    source

    IncompressibleNavierStokes.Qfield! Method
    julia
    Qfield!(Q, u, setup) -> Any

    Compute the Q-field (in-place version).

    source

    IncompressibleNavierStokes.Qfield Method
    julia
    Qfield(u, setup) -> Any

    Compute Q-field [6] given by

    Q=12α,βuαxβuβxα.

    Differentiable version.

    source

    IncompressibleNavierStokes.applybodyforce! Method
    julia
    applybodyforce!(F, u, t, setup) -> Any

    Compute body force (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.applybodyforce Method
    julia
    applybodyforce(u, t, setup) -> Any

    Compute body force (differentiable version).

    source

    IncompressibleNavierStokes.applypressure! Method
    julia
    applypressure!(u, p, setup) -> Any

    Subtract pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.applypressure Method
    julia
    applypressure(u, p, setup) -> Any

    Subtract pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.avg Method
    julia
    avg(ϕ, Δ, I, α) -> Any

    Average scalar field ϕ in the α-direction.

    source

    IncompressibleNavierStokes.convection! Method
    julia
    convection!(F, u, setup) -> Any

    Compute convective term (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.convection Method
    julia
    convection(u, setup) -> Any

    Compute convective term (differentiable version).

    source

    IncompressibleNavierStokes.convection_diffusion_temp! Method
    julia
    convection_diffusion_temp!(c, u, temp, setup) -> Any

    Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

    source

    IncompressibleNavierStokes.convection_diffusion_temp Method
    julia
    convection_diffusion_temp(u, temp, setup) -> Any

    Compute convection-diffusion term for the temperature equation. (differentiable version).

    source

    IncompressibleNavierStokes.convectiondiffusion! Method
    julia
    convectiondiffusion!(F, u, setup) -> Any

    Compute convective and diffusive terms (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.diffusion! Method
    julia
    diffusion!(F, u, setup; use_viscosity) -> Any

    Compute diffusive term (in-place version). Add the result to F.

    Keyword arguments:

    • with_viscosity = true: Include viscosity in the operator.

    source

    IncompressibleNavierStokes.diffusion Method
    julia
    diffusion(u, setup; kwargs...) -> Any

    Compute diffusive term (differentiable version).

    source

    IncompressibleNavierStokes.dissipation! Method
    julia
    dissipation!(diss, diff, u, setup) -> Any

    Compute dissipation term for the temperature equation (in-place version). Add result to diss.

    source

    IncompressibleNavierStokes.dissipation Method
    julia
    dissipation(u, setup) -> Any

    Compute dissipation term for the temperature equation (differentiable version).

    source

    IncompressibleNavierStokes.dissipation_from_strain! Method
    julia
    dissipation_from_strain!(ϵ, u, setup) -> Any

    Compute dissipation term from strain-rate tensor (in-place version).

    source

    IncompressibleNavierStokes.dissipation_from_strain Method
    julia
    dissipation_from_strain(u, setup) -> Any

    Compute dissipation term 2νSijSij from strain-rate tensor (differentiable version).

    source

    IncompressibleNavierStokes.divergence! Method
    julia
    divergence!(div, u, setup) -> Any

    Compute divergence of velocity field (in-place version).

    source

    IncompressibleNavierStokes.divergence Method
    julia
    divergence(u, setup) -> Any

    Compute divergence of velocity field (differentiable version).

    source

    IncompressibleNavierStokes.divoftensor! Method
    julia
    divoftensor!(s, σ, setup) -> Any

    Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

    source

    IncompressibleNavierStokes.eig2field! Method
    julia
    eig2field!(λ, u, setup) -> Any

    Compute the second eigenvalue of S2+R2 (in-place version).

    source

    IncompressibleNavierStokes.eig2field Method
    julia
    eig2field(u, setup) -> Any

    Compute the second eigenvalue of S2+R2, as proposed by Jeong and Hussain [6].

    Differentiable version.

    source

    IncompressibleNavierStokes.get_scale_numbers Method
    julia
    get_scale_numbers(
    +    
    Skip to content

    Operators

    All discrete operators are built using KernelAbstractions.jl and Cartesian indices, similar to WaterLily.jl. This allows for dimension- and backend-agnostic code. See this blog post for how to write kernels. IncompressibleNavierStokes previously relied on assembling sparse operators to perform the same operations. While being very efficient and also compatible with CUDA (CUSPARSE), storing these matrices in memory is expensive for large 3D problems.

    IncompressibleNavierStokes.Offset Type
    julia
    struct Offset{D}

    Cartesian index unit vector in D = 2 or D = 3 dimensions. Calling Offset(D)(α) returns a Cartesian index with 1 in the dimension α and zeros elsewhere.

    See https://b-fg.github.io/2023/05/07/waterlily-on-gpu.html for writing kernel loops using Cartesian indices.

    Fields

    source

    IncompressibleNavierStokes.Dfield! Method
    julia
    Dfield!(d, G, p, setup; ϵ) -> Any

    Compute the D-field (in-place version).

    source

    IncompressibleNavierStokes.Dfield Method
    julia
    Dfield(p, setup; kwargs...) -> Any

    Compute the D-field [5] given by

    D=2|p|2p.

    Differentiable version.

    source

    IncompressibleNavierStokes.Qfield! Method
    julia
    Qfield!(Q, u, setup) -> Any

    Compute the Q-field (in-place version).

    source

    IncompressibleNavierStokes.Qfield Method
    julia
    Qfield(u, setup) -> Any

    Compute Q-field [6] given by

    Q=12α,βuαxβuβxα.

    Differentiable version.

    source

    IncompressibleNavierStokes.applybodyforce! Method
    julia
    applybodyforce!(F, u, t, setup) -> Any

    Compute body force (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.applybodyforce Method
    julia
    applybodyforce(u, t, setup) -> Any

    Compute body force (differentiable version).

    source

    IncompressibleNavierStokes.applypressure! Method
    julia
    applypressure!(u, p, setup) -> Any

    Subtract pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.applypressure Method
    julia
    applypressure(u, p, setup) -> Any

    Subtract pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.avg Method
    julia
    avg(ϕ, Δ, I, α) -> Any

    Average scalar field ϕ in the α-direction.

    source

    IncompressibleNavierStokes.convection! Method
    julia
    convection!(F, u, setup) -> Any

    Compute convective term (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.convection Method
    julia
    convection(u, setup) -> Any

    Compute convective term (differentiable version).

    source

    IncompressibleNavierStokes.convection_diffusion_temp! Method
    julia
    convection_diffusion_temp!(c, u, temp, setup) -> Any

    Compute convection-diffusion term for the temperature equation. (in-place version). Add result to c.

    source

    IncompressibleNavierStokes.convection_diffusion_temp Method
    julia
    convection_diffusion_temp(u, temp, setup) -> Any

    Compute convection-diffusion term for the temperature equation. (differentiable version).

    source

    IncompressibleNavierStokes.convectiondiffusion! Method
    julia
    convectiondiffusion!(F, u, setup) -> Any

    Compute convective and diffusive terms (in-place version). Add the result to F.

    source

    IncompressibleNavierStokes.diffusion! Method
    julia
    diffusion!(F, u, setup; use_viscosity) -> Any

    Compute diffusive term (in-place version). Add the result to F.

    Keyword arguments:

    • with_viscosity = true: Include viscosity in the operator.

    source

    IncompressibleNavierStokes.diffusion Method
    julia
    diffusion(u, setup; kwargs...) -> Any

    Compute diffusive term (differentiable version).

    source

    IncompressibleNavierStokes.dissipation! Method
    julia
    dissipation!(diss, diff, u, setup) -> Any

    Compute dissipation term for the temperature equation (in-place version). Add result to diss.

    source

    IncompressibleNavierStokes.dissipation Method
    julia
    dissipation(u, setup) -> Any

    Compute dissipation term for the temperature equation (differentiable version).

    source

    IncompressibleNavierStokes.dissipation_from_strain! Method
    julia
    dissipation_from_strain!(ϵ, u, setup) -> Any

    Compute dissipation term from strain-rate tensor (in-place version).

    source

    IncompressibleNavierStokes.dissipation_from_strain Method
    julia
    dissipation_from_strain(u, setup) -> Any

    Compute dissipation term 2νSijSij from strain-rate tensor (differentiable version).

    source

    IncompressibleNavierStokes.divergence! Method
    julia
    divergence!(div, u, setup) -> Any

    Compute divergence of velocity field (in-place version).

    source

    IncompressibleNavierStokes.divergence Method
    julia
    divergence(u, setup) -> Any

    Compute divergence of velocity field (differentiable version).

    source

    IncompressibleNavierStokes.divoftensor! Method
    julia
    divoftensor!(s, σ, setup) -> Any

    Compute divergence of a tensor with all components in the pressure points (in-place version). The stress tensors should be precomputed and stored in σ.

    source

    IncompressibleNavierStokes.eig2field! Method
    julia
    eig2field!(λ, u, setup) -> Any

    Compute the second eigenvalue of S2+R2 (in-place version).

    source

    IncompressibleNavierStokes.eig2field Method
    julia
    eig2field(u, setup) -> Any

    Compute the second eigenvalue of S2+R2, as proposed by Jeong and Hussain [6].

    Differentiable version.

    source

    IncompressibleNavierStokes.get_scale_numbers Method
    julia
    get_scale_numbers(
         u,
         setup
    -) -> NamedTuple{(:uavg, , , , :Reλ, :L, ), <:Tuple{Any, Any, Any, Any, Any, Nothing, Nothing}}

    Get the following dimensional scale numbers [7]:

    • Velocity uavg=uiui1/2

    • Dissipation rate ϵ=2νSijSij

    • Kolmolgorov length scale η=(ν3ϵ)1/4

    • Taylor length scale λ=(5νϵ)1/2uavg

    • Taylor-scale Reynolds number Reλ=λuavg3ν

    • Integral length scale L=3π2uavg20E(k)kdk

    • Large-eddy turnover time τ=Luavg

    source

    IncompressibleNavierStokes.gravity! Method
    julia
    gravity!(F, temp, setup) -> Any

    Compute gravity term (in-place version). add the result to F.

    source

    IncompressibleNavierStokes.gravity Method
    julia
    gravity(temp, setup) -> Any

    Compute gravity term (differentiable version).

    source

    IncompressibleNavierStokes.interpolate_u_p! Method
    julia
    interpolate_u_p!(up, u, setup) -> Any

    Interpolate velocity to pressure points (in-place version).

    source

    IncompressibleNavierStokes.interpolate_u_p Method
    julia
    interpolate_u_p(u, setup) -> Any

    Interpolate velocity to pressure points (differentiable version).

    source

    IncompressibleNavierStokes.interpolate_ω_p! Method
    julia
    interpolate_ω_p!(ωp, ω, setup) -> Any

    Interpolate vorticity to pressure points (in-place version).

    source

    IncompressibleNavierStokes.interpolate_ω_p Method
    julia
    interpolate_ω_p(ω, setup) -> Any

    Interpolate vorticity to pressure points (differentiable version).

    source

    IncompressibleNavierStokes.kinetic_energy! Method
    julia
    kinetic_energy!(ke, u, setup; interpolate_first) -> Any

    Compute kinetic energy field (in-place version).

    source

    IncompressibleNavierStokes.kinetic_energy Method
    julia
    kinetic_energy(u, setup; kwargs...) -> Any

    Compute kinetic energy field k (in-place version). If interpolate_first is true, it is given by

    kI=18α(uI+hαα+uIhαα)2.

    Otherwise, it is given by

    kI=14α((uI+hαα)2+(uIhαα)2),

    as in [8].

    Differentiable version.

    source

    IncompressibleNavierStokes.laplacian! Method
    julia
    laplacian!(L, p, setup) -> Any

    Compute Laplacian of pressure field (in-place version).

    source

    IncompressibleNavierStokes.laplacian Method
    julia
    laplacian(p, setup) -> Any

    Compute Laplacian of pressure field (differentiable version).

    source

    IncompressibleNavierStokes.momentum! Method
    julia
    momentum!(F, u, temp, t, setup) -> Any

    Right hand side of momentum equations, excluding pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.momentum Method
    julia
    momentum(u, temp, t, setup) -> Any

    Right hand side of momentum equations, excluding pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.pressuregradient! Method
    julia
    pressuregradient!(G, p, setup) -> Any

    Compute pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.pressuregradient Method
    julia
    pressuregradient(p, setup) -> Any

    Compute pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.scalewithvolume! Method
    julia
    scalewithvolume!(p, setup) -> Any

    Scale scalar field with volume sizes (in-place version).

    source

    IncompressibleNavierStokes.scalewithvolume Method
    julia
    scalewithvolume(p, setup) -> Any

    Scale scalar field p with volume sizes (differentiable version).

    source

    IncompressibleNavierStokes.smagorinsky_closure Method
    julia
    smagorinsky_closure(
    +) -> NamedTuple{(:uavg, , , , :Reλ, :L, , :Re_int), <:NTuple{8, Any}}

    Get the following dimensional scale numbers [7]:

    • Velocity uavg=uiui1/2

    • Dissipation rate ϵ=2νSijSij

    • Kolmolgorov length scale η=(ν3ϵ)1/4

    • Taylor length scale λ=(5νϵ)1/2uavg

    • Taylor-scale Reynolds number Reλ=λuavg3ν

    • Integral length scale L=3π2uavg20E(k)kdk

    • Large-eddy turnover time τ=Luavg

    source

    IncompressibleNavierStokes.gravity! Method
    julia
    gravity!(F, temp, setup) -> Any

    Compute gravity term (in-place version). add the result to F.

    source

    IncompressibleNavierStokes.gravity Method
    julia
    gravity(temp, setup) -> Any

    Compute gravity term (differentiable version).

    source

    IncompressibleNavierStokes.interpolate_u_p! Method
    julia
    interpolate_u_p!(up, u, setup) -> Any

    Interpolate velocity to pressure points (in-place version).

    source

    IncompressibleNavierStokes.interpolate_u_p Method
    julia
    interpolate_u_p(u, setup) -> Any

    Interpolate velocity to pressure points (differentiable version).

    source

    IncompressibleNavierStokes.interpolate_ω_p! Method
    julia
    interpolate_ω_p!(ωp, ω, setup) -> Any

    Interpolate vorticity to pressure points (in-place version).

    source

    IncompressibleNavierStokes.interpolate_ω_p Method
    julia
    interpolate_ω_p(ω, setup) -> Any

    Interpolate vorticity to pressure points (differentiable version).

    source

    IncompressibleNavierStokes.kinetic_energy! Method
    julia
    kinetic_energy!(ke, u, setup; interpolate_first) -> Any

    Compute kinetic energy field (in-place version).

    source

    IncompressibleNavierStokes.kinetic_energy Method
    julia
    kinetic_energy(u, setup; kwargs...) -> Any

    Compute kinetic energy field k (in-place version). If interpolate_first is true, it is given by

    kI=18α(uI+hαα+uIhαα)2.

    Otherwise, it is given by

    kI=14α((uI+hαα)2+(uIhαα)2),

    as in [8].

    Differentiable version.

    source

    IncompressibleNavierStokes.laplacian! Method
    julia
    laplacian!(L, p, setup) -> Any

    Compute Laplacian of pressure field (in-place version).

    source

    IncompressibleNavierStokes.laplacian Method
    julia
    laplacian(p, setup) -> Any

    Compute Laplacian of pressure field (differentiable version).

    source

    IncompressibleNavierStokes.momentum! Method
    julia
    momentum!(F, u, temp, t, setup) -> Any

    Right hand side of momentum equations, excluding pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.momentum Method
    julia
    momentum(u, temp, t, setup) -> Any

    Right hand side of momentum equations, excluding pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.pressuregradient! Method
    julia
    pressuregradient!(G, p, setup) -> Any

    Compute pressure gradient (in-place version).

    source

    IncompressibleNavierStokes.pressuregradient Method
    julia
    pressuregradient(p, setup) -> Any

    Compute pressure gradient (differentiable version).

    source

    IncompressibleNavierStokes.scalewithvolume! Method
    julia
    scalewithvolume!(p, setup) -> Any

    Scale scalar field with volume sizes (in-place version).

    source

    IncompressibleNavierStokes.scalewithvolume Method
    julia
    scalewithvolume(p, setup) -> Any

    Scale scalar field p with volume sizes (differentiable version).

    source

    IncompressibleNavierStokes.smagorinsky_closure Method
    julia
    smagorinsky_closure(
         setup
    -) -> IncompressibleNavierStokes.var"#closure#188"

    Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

    source

    IncompressibleNavierStokes.smagtensor! Method
    julia
    smagtensor!(σ, u, θ, setup) -> Any

    Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

    source

    IncompressibleNavierStokes.total_kinetic_energy Method
    julia
    total_kinetic_energy(u, setup; kwargs...) -> Any

    Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

    source

    IncompressibleNavierStokes.unit_cartesian_indices Method
    julia
    unit_cartesian_indices(D) -> Any

    Get tuple of all unit vectors as Cartesian indices.

    source

    IncompressibleNavierStokes.vorticity! Method
    julia
    vorticity!(ω, u, setup) -> Any

    Compute vorticity field (in-place version).

    source

    IncompressibleNavierStokes.vorticity Method
    julia
    vorticity(u, setup) -> Any

    Compute vorticity field (differentiable version).

    source

    IncompressibleNavierStokes.lastdimcontract Method
    julia
    lastdimcontract(a, b, setup) -> Any

    Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

    source

    IncompressibleNavierStokes.tensorbasis! Method
    julia
    tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}

    Compute symmetry tensor basis B[1]-B[11] and invariants V[1]-V[5], as specified in [9] in equations (9) and (11). Note that B[1] corresponds to T0 in the paper, and V to I.

    source

    IncompressibleNavierStokes.tensorbasis Method
    julia
    tensorbasis(u, setup) -> Tuple{Any, Any}

    Compute symmetry tensor basis (differentiable version).

    source

    - +) -> IncompressibleNavierStokes.var"#closure#184"

    Create Smagorinsky closure model m. The model is called as m(u, θ), where the Smagorinsky constant θ should be a scalar between 0 and 1 (for example θ = 0.1).

    source

    IncompressibleNavierStokes.smagtensor! Method
    julia
    smagtensor!(σ, u, θ, setup) -> Any

    Compute Smagorinsky stress tensors σ[I] (in-place version). The Smagorinsky constant θ should be a scalar between 0 and 1.

    source

    IncompressibleNavierStokes.total_kinetic_energy Method
    julia
    total_kinetic_energy(u, setup; kwargs...) -> Any

    Compute total kinetic energy. The velocity components are interpolated to the volume centers and squared.

    source

    IncompressibleNavierStokes.unit_cartesian_indices Method
    julia
    unit_cartesian_indices(D) -> Any

    Get tuple of all unit vectors as Cartesian indices.

    source

    IncompressibleNavierStokes.vorticity! Method
    julia
    vorticity!(ω, u, setup) -> Any

    Compute vorticity field (in-place version).

    source

    IncompressibleNavierStokes.vorticity Method
    julia
    vorticity(u, setup) -> Any

    Compute vorticity field (differentiable version).

    source

    IncompressibleNavierStokes.lastdimcontract Method
    julia
    lastdimcontract(a, b, setup) -> Any

    Compute c[I] = sum_i a[I, i] * b[I, i], where c[:, i] and b[:, i] are tensor fields (elements are SMatrixes), a[:, i] is a scalar field, and the i dimension is contracted (multiple channels).

    source

    IncompressibleNavierStokes.tensorbasis! Method
    julia
    tensorbasis!(B, V, u, setup) -> Tuple{Any, Any}

    Compute symmetry tensor basis B[1]-B[11] and invariants V[1]-V[5], as specified in [9] in equations (9) and (11). Note that B[1] corresponds to T0 in the paper, and V to I.

    source

    IncompressibleNavierStokes.tensorbasis Method
    julia
    tensorbasis(u, setup) -> Tuple{Any, Any}

    Compute symmetry tensor basis (differentiable version).

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/precision.html b/previews/PR126/manual/precision.html index a7238849..317e5d52 100644 --- a/previews/PR126/manual/precision.html +++ b/previews/PR126/manual/precision.html @@ -6,14 +6,14 @@ Floating point precision | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Floating point precision

    IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

    • Double precision (Float64)

    • Single precision (Float32)

    • Half precision (Float16)

    To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

    GPU precision

    For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

    Pressure solvers

    SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

    - +
    Skip to content

    Floating point precision

    IncompressibleNavierStokes generates efficient code for different floating point precisions, such as

    • Double precision (Float64)

    • Single precision (Float32)

    • Half precision (Float16)

    To use single or half precision, all user input floats should be converted to the desired type. Mixing different precisions causes unnecessary conversions and may break the code.

    GPU precision

    For GPUs, single precision is preferred. CUDA.jls cu converts to single precision.

    Pressure solvers

    SparseArrays.jls sparse matrix factorizations only support double precision. psolver_direct only works for Float64. Consider using an iterative solver such as psolver_cg when using single or half precision.

    + \ No newline at end of file diff --git a/previews/PR126/manual/pressure.html b/previews/PR126/manual/pressure.html index 83ce8456..eb1dc308 100644 --- a/previews/PR126/manual/pressure.html +++ b/previews/PR126/manual/pressure.html @@ -6,14 +6,14 @@ Pressure solvers | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -25,21 +25,21 @@
    Skip to content

    Pressure solvers

    The discrete pressure Poisson equation

    Lp=WMF(u)

    enforces divergence freeness. There are multiple options for solving this system.

    IncompressibleNavierStokes.default_psolver Method
    julia
    default_psolver(
         setup
    -) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#124"}

    Get default Poisson solver from setup.

    source

    IncompressibleNavierStokes.poisson! Method
    julia
    poisson!(psolver, f) -> Any

    Solve the Poisson equation for the pressure (in-place version).

    source

    IncompressibleNavierStokes.poisson Method
    julia
    poisson(psolver, f) -> Any

    Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

    Differentiable version.

    source

    IncompressibleNavierStokes.pressure! Method
    julia
    pressure!(p, u, temp, t, setup; psolver, F)

    Compute pressure from velocity field (in-place version).

    source

    IncompressibleNavierStokes.pressure Method
    julia
    pressure(u, temp, t, setup; psolver)

    Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

    Differentiable version.

    source

    IncompressibleNavierStokes.project! Method
    julia
    project!(u, setup; psolver, p)

    Project velocity field onto divergence-free space (in-place version).

    source

    IncompressibleNavierStokes.project Method
    julia
    project(u, setup; psolver)

    Project velocity field onto divergence-free space (differentiable version).

    source

    IncompressibleNavierStokes.psolver_cg Method
    julia
    psolver_cg(
    +) -> Union{IncompressibleNavierStokes.var"#psolve!#101"{Bool}, IncompressibleNavierStokes.var"#psolve!#120"}

    Get default Poisson solver from setup.

    source

    IncompressibleNavierStokes.poisson! Method
    julia
    poisson!(psolver, f) -> Any

    Solve the Poisson equation for the pressure (in-place version).

    source

    IncompressibleNavierStokes.poisson Method
    julia
    poisson(psolver, f) -> Any

    Solve the Poisson equation for the pressure with right hand side f at time t. For periodic and no-slip BC, the sum of f should be zero.

    Differentiable version.

    source

    IncompressibleNavierStokes.pressure! Method
    julia
    pressure!(p, u, temp, t, setup; psolver, F)

    Compute pressure from velocity field (in-place version).

    source

    IncompressibleNavierStokes.pressure Method
    julia
    pressure(u, temp, t, setup; psolver)

    Compute pressure from velocity field. This makes the pressure compatible with the velocity field, resulting in same order pressure as velocity.

    Differentiable version.

    source

    IncompressibleNavierStokes.project! Method
    julia
    project!(u, setup; psolver, p)

    Project velocity field onto divergence-free space (in-place version).

    source

    IncompressibleNavierStokes.project Method
    julia
    project(u, setup; psolver)

    Project velocity field onto divergence-free space (differentiable version).

    source

    IncompressibleNavierStokes.psolver_cg Method
    julia
    psolver_cg(
         setup;
         abstol,
         reltol,
         maxiter,
         preconditioner
    -) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

    Conjugate gradients iterative Poisson solver.

    source

    IncompressibleNavierStokes.psolver_cg_matrix Method
    julia
    psolver_cg_matrix(
    +) -> IncompressibleNavierStokes.var"#psolve!#111"{_A, _B, _C, IncompressibleNavierStokes.var"#laplace_diag#109"{ndrange, workgroupsize}} where {_A, _B, _C, ndrange, workgroupsize}

    Conjugate gradients iterative Poisson solver.

    source

    IncompressibleNavierStokes.psolver_cg_matrix Method
    julia
    psolver_cg_matrix(
         setup;
         kwargs...
    -) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

    Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

    source

    IncompressibleNavierStokes.psolver_direct Method
    julia
    psolver_direct(
    +) -> IncompressibleNavierStokes.var"#psolve!#105"{Base.Pairs{Symbol, Union{}, Tuple{}, @NamedTuple{}}}

    Conjugate gradients iterative Poisson solver. The kwargs are passed to the cg! function from IterativeSolvers.jl.

    source

    IncompressibleNavierStokes.psolver_direct Method
    julia
    psolver_direct(
         setup
    -) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

    Create direct Poisson solver using an appropriate matrix decomposition.

    source

    IncompressibleNavierStokes.psolver_spectral Method
    julia
    psolver_spectral(
    +) -> IncompressibleNavierStokes.var"#psolve!#101"{Bool}

    Create direct Poisson solver using an appropriate matrix decomposition.

    source

    IncompressibleNavierStokes.psolver_spectral Method
    julia
    psolver_spectral(
         setup
    -) -> IncompressibleNavierStokes.var"#psolve!#124"

    Create spectral Poisson solver from setup.

    source

    - +) -> IncompressibleNavierStokes.var"#psolve!#120"

    Create spectral Poisson solver from setup.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/sciml.html b/previews/PR126/manual/sciml.html index f18f905c..e833b481 100644 --- a/previews/PR126/manual/sciml.html +++ b/previews/PR126/manual/sciml.html @@ -6,14 +6,14 @@ Using IncompressibleNavierStokes in SciML | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -34,48 +34,48 @@ problem = ODEProblem(f, u0, tspan) #SciMLBase.ODEProblem sol = solve(problem, Tsit5(), reltol = 1e-8, abstol = 1e-8) # sol: SciMLBase.ODESolution
    retcode: Success
     Interpolation: specialized 4th order "free" interpolation
    -t: 212-element Vector{Float64}:
    +t: 250-element Vector{Float64}:
      0.0
    - 0.0016775779886938518
    - 0.0024515906294917565
    - 0.0036937756597660177
    - 0.004744359932985878
    - 0.005955362736923781
    - 0.0071390751083091316
    - 0.008386636861924696
    - 0.009645156117581473
    - 0.010936958169616918
    + 0.001556073323302609
    + 0.0022719733109081946
    + 0.003421770136632073
    + 0.004392878613129141
    + 0.005511656380449501
    + 0.006603690367079683
    + 0.007753321995088192
    + 0.008911590687048847
    + 0.010098916435172417
     
    - 0.8984930998969533
    - 0.9118748988126503
    - 0.9254968389682297
    - 0.9393543206945666
    - 0.9534433190187698
    - 0.9677595077716898
    - 0.9822997420095799
    - 0.9970628244296934
    + 0.9180935463070241
    + 0.9287950605670815
    + 0.9396497491283882
    + 0.950661239457886
    + 0.9618337193811496
    + 0.9731711225787223
    + 0.9846787126922614
    + 0.996361412839949
      1.0
    -u: 212-element Vector{Array{Float64, 3}}:
    - [1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433; … ; 1.4582588614111747 2.059383423679714 … 1.4582588614111747 2.059383423679714; 1.5872394002098646 2.0445219330008433 … 1.5872394002098646 2.0445219330008433;;; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525; … ; -0.3564156774579681 -0.5303307599819173 … -0.3564156774579681 -0.5303307599819173; -0.34474720155412086 -0.32988571087525 … -0.34474720155412086 -0.32988571087525]
    - [1.4310738946896817 2.037963099708429 … 1.4310738946896817 2.037963099708429; 1.5869175083011309 2.0532385940120887 … 1.588327603138371 2.074915689630976; … ; 1.4310738946896817 2.0646385389800517 … 1.4707449035500546 2.037963099708429; 1.5869175083011309 2.074915689630976 … 1.5869175083011309 2.074915689630976;;; -0.3843075577328367 -0.6173973185403617 … -0.3843075577328367 -0.6173973185403617; -0.34228152248255667 -0.2420089432080796 … -0.25340888817604323 -0.38860275562819596; … ; -0.3843075577328367 -0.44793764689863946 … -0.28243935383757307 -0.6173973185403617; -0.34228152248255667 -0.38860275562819596 … -0.34228152248255667 -0.38860275562819596]
    - [1.41677387871106 2.026206225445256 … 1.41677387871106 2.026206225445256; 1.5847511350956696 2.0556684473065676 … 1.5879577687647815 2.0866824407621585; … ; 1.41677387871106 2.065761529283348 … 1.4758327495143713 2.026206225445256; 1.5847511350956696 2.0866824407621585 … 1.5847511350956696 2.0866824407621585;;; -0.39899399061633306 -0.6593050784076984 … -0.39899399061633306 -0.6593050784076984; -0.34188065544854157 -0.20124022712840817 … -0.21133330910518938 -0.41592062803461616; … ; -0.39899399061633306 -0.4105277740400618 … -0.24894307730776155 -0.6593050784076984; -0.34188065544854157 -0.41592062803461616 … -0.34188065544854157 -0.41592062803461616]
    - [1.391620717845853 2.005052930950454 … 1.391620717845853 2.005052930950454; 1.5785967602636484 2.0575009086990472 … 1.5862214072663858 2.1026182098459665; … ; 1.391620717845853 2.065879364931202 … 1.4830825537815986 2.005052930950454; 1.5785967602636484 2.1026182098459665 … 1.5785967602636484 2.1026182098459665;;; -0.4251380669009577 -0.7289528594833986 … -0.4251380669009577 -0.7289528594833986; -0.3424451007836423 -0.13576237682522638 … -0.14414083305738165 -0.46022008886919996; … ; -0.4251380669009577 -0.3514934686109557 … -0.19619839721969912 -0.7289528594833986; -0.3424451007836423 -0.46022008886919996 … -0.3424451007836423 -0.46022008886919996]
    - [1.3683366507304067 1.9851283805313755 … 1.3683366507304067 1.9851283805313755; 1.5708280441413918 2.057102516014986 … 1.5836664262450098 2.1133081687983375; … ; 1.3683366507304067 2.0643939821950585 … 1.4883158148529916 1.9851283805313755; 1.5708280441413918 2.1133081687983375 … 1.5708280441413918 2.1133081687983375;;; -0.44984225330664884 -0.7902139129867269 … -0.44984225330664884 -0.7902139129867269; -0.34427101031988805 -0.08053363877178918 … -0.08782510495186124 -0.4982591359356883; … ; -0.44984225330664884 -0.30267536983452664 … -0.15268278547971995 -0.7902139129867269; -0.34427101031988805 -0.4982591359356883 … -0.34427101031988805 -0.4982591359356883]
    - [1.3393682527712583 1.9600730631740435 … 1.3393682527712583 1.9600730631740435; 1.558999023490557 2.054493427553239 … 1.57950836847274 2.1225488522672933; … ; 1.3393682527712583 2.060933169437688 … 1.4933079794955013 1.9600730631740435; 1.558999023490557 2.1225488522672933 … 1.558999023490557 2.1225488522672933;;; -0.48138807330255545 -0.8635507784356191 … -0.48138807330255545 -0.8635507784356191; -0.34814473328245776 -0.01729418575514602 … -0.02373392763959295 -0.5429297006640443; … ; -0.48138807330255545 -0.2478305189843362 … -0.10389764719909182 -0.8635507784356191; -0.34814473328245776 -0.5429297006640443 … -0.34814473328245776 -0.5429297006640443]
    - [1.309023603907686 1.9336578801571804 … 1.309023603907686 1.9336578801571804; 1.5445301181443962 2.0497976350046425 … 1.5742163600010184 2.1285084136651826; … ; 1.309023603907686 2.0558026885624203 … 1.497096545742828 1.9336578801571804; 1.5445301181443962 2.1285084136651826 … 1.5445301181443962 2.1285084136651826;;; -0.5154881691893956 -0.9380605402073995 … -0.5154881691893956 -0.9380605402073995; -0.3539882338969757 0.043835392813216995 … 0.03783033925544225 -0.5876158502792285; … ; -0.5154881691893956 -0.19583831365463097 … -0.05774146260707564 -0.9380605402073995; -0.3539882338969757 -0.5876158502792285 … -0.3539882338969757 -0.5876158502792285]
    - [1.2750805605945816 1.904031237572206 … 1.2750805605945816 1.904031237572206; 1.5262751744748195 2.0426552525097845 … 1.5673604992364663 2.13165995622661; … ; 1.2750805605945816 2.0486025202291174 … 1.499910676274747 1.904031237572206; 1.5262751744748195 2.13165995622661 … 1.5262751744748195 2.13165995622661;;; -0.5549806081559608 -1.0195833757760737 … -0.5549806081559608 -1.0195833757760737; -0.36258175247807684 0.10726628202190677 … 0.101319014302577 -0.6359866935141251; … ; -0.5549806081559608 -0.1428955588958576 … -0.010821008352053463 -1.0195833757760737; -0.36258175247807684 -0.6359866935141251 … -0.36258175247807684 -0.6359866935141251]
    - [1.2390293609716085 1.8725732991803752 … 1.2390293609716085 1.8725732991803752; 1.5048708458871851 2.033288015121601 … 1.5591546395991858 2.1317769112643323; … ; 1.2390293609716085 2.0395614281872345 … 1.501517456149803 1.8725732991803752; 1.5048708458871851 2.1317769112643323 … 1.5048708458871851 2.1317769112643323;;; -0.5985326754929186 -1.1048628282971928 … -0.5985326754929186 -1.1048628282971928; -0.3739981547416027 0.1699656370380011 … 0.16369222397237182 -0.6862777065879397; … ; -0.5985326754929186 -0.09150946309929023 … 0.034657669392390775 -1.1048628282971928; -0.3739981547416027 -0.6862777065879397 … -0.3739981547416027 -0.6862777065879397]
    - [1.2003859162688768 1.8389443123237112 … 1.2003859162688768 1.8389443123237112; 1.4799487091064865 2.021549979114891 … 1.5494279100647357 2.1289256658165314; … ; 1.2003859162688768 2.0285213189520688 … 1.5018789444457645 1.8389443123237112; 1.4799487091064865 2.1289256658165314 … 1.4799487091064865 2.1289256658165314;;; -0.6470887764045219 -1.195453394721505 … -0.6470887764045219 -1.195453394721505; -0.38877926401317714 0.23273741070513682 … 0.22576607086796496 -0.7396157784188764; … ; -0.6470887764045219 -0.04093867588285244 … 0.07937258002515016 -1.195453394721505; -0.38877926401317714 -0.7396157784188764 … -0.38877926401317714 -0.7396157784188764]
    +u: 250-element Vector{Array{Float64, 3}}:
    + [-0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767; … ; -0.19539736486988413 -0.6070006876953232 … -0.19539736486988413 -0.6070006876953232; -0.47254498901215514 -1.03907936680767 … -0.47254498901215514 -1.03907936680767;;; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933; … ; -0.8938100127319855 -0.38904336111919496 … -0.8938100127319855 -0.38904336111919496; -0.8291462584455838 -0.39706757933323933 … -0.8291462584455838 -0.39706757933323933]
    + [-0.2641988258161559 -0.6842105823948037 … -0.2641988258161559 -0.6842105823948037; -0.5554719943970878 -1.08372897008126 … -0.528894551624645 -1.125192961125848; … ; -0.2641988258161559 -0.6521599014458829 … -0.24660861817531196 -0.6842105823948037; -0.5554719943970878 -1.125192961125848 … -0.5554719943970878 -1.125192961125848;;; -0.8306925883975206 -0.35454388747389226 … -0.8306925883975206 -0.35454388747389226; -0.7586606649333464 -0.37724634474597607 … -0.8088154133813523 -0.35541234336812005; … ; -0.8306925883975206 -0.3913130883274286 … -0.8953078101536035 -0.35454388747389226; -0.7586606649333464 -0.35541234336812005 … -0.7586606649333464 -0.35541234336812005]
    + [-0.29635788393351875 -0.7203682339266996 … -0.29635788393351875 -0.7203682339266996; -0.5933162222243581 -1.1048800462393567 … -0.555300508914644 -1.1643784257900822; … ; -0.29635788393351875 -0.6735966431693873 … -0.2706142291619179 -0.7203682339266996; -0.5933162222243581 -1.1643784257900822 … -0.5933162222243581 -1.1643784257900822;;; -0.8012086656581645 -0.33810243969112724 … -0.8012086656581645 -0.33810243969112724; -0.72560424690118 -0.36724612686305513 … -0.7985295299330236 -0.3359125744024713; … ; -0.8012086656581645 -0.3913746919645915 … -0.8951618846757197 -0.33810243969112724; -0.72560424690118 -0.3359125744024713 … -0.72560424690118 -0.3359125744024713]
    + [-0.34870754688428995 -0.7792596863183789 … -0.34870754688428995 -0.7792596863183789; -0.6536904301507283 -1.1395757760607585 … -0.5983345984476474 -1.2266899400473281; … ; -0.34870754688428995 -0.708884091950401 … -0.3097852247390696 -0.7792596863183789; -0.6536904301507283 -1.2266899400473281 … -0.6536904301507283 -1.2266899400473281;;; -0.753216807906376 -0.31096681916681274 … -0.753216807906376 -0.31096681916681274; -0.6716905600910769 -0.3500842508696068 … -0.7807759349799628 -0.3042677935801389; … ; -0.753216807906376 -0.39012952150454966 … -0.8937554550180197 -0.31096681916681274; -0.6716905600910769 -0.3042677935801389 … -0.6716905600910769 -0.3042677935801389]
    + [-0.39361546526753777 -0.8297647119844105 … -0.39361546526753777 -0.8297647119844105; -0.7042833888763731 -1.1695019008798557 … -0.6352636457861688 -1.2786676916508652; … ; -0.39361546526753777 -0.7394933393542665 … -0.3434795771460868 -0.8297647119844105; -0.7042833888763731 -1.2786676916508652 … -0.7042833888763731 -1.2786676916508652;;; -0.7120319197818502 -0.2873699515434851 … -0.7120319197818502 -0.2873699515434851; -0.6253825540141095 -0.33459423769035684 … -0.7646027992159439 -0.2773323957675547; … ; -0.7120319197818502 -0.38775605243015243 … -0.8913876494923778 -0.2873699515434851; -0.6253825540141095 -0.2773323957675547 … -0.6253825540141095 -0.2773323957675547]
    + [-0.4461634229992338 -0.8887849397472614 … -0.4461634229992338 -0.8887849397472614; -0.7620974925853543 -1.2045755939435638 … -0.6784394648834674 -1.3377339263593422; … ; -0.4461634229992338 -0.7756381846387064 … -0.383011302659914 -0.8887849397472614; -0.7620974925853543 -1.3377339263593422 … -0.7620974925853543 -1.3377339263593422;;; -0.6637977532679439 -0.2594495139580558 … -0.6637977532679439 -0.2594495139580558; -0.5711913409704478 -0.31571389869368033 … -0.7446513079985353 -0.2462154169355641; … ; -0.6637977532679439 -0.38348972758687006 … -0.8872523550652668 -0.2594495139580558; -0.5711913409704478 -0.2462154169355641 … -0.5711913409704478 -0.2462154169355641]
    + [-0.49830968480792187 -0.947212977565134 … -0.49830968480792187 -0.947212977565134; -0.8180108075209138 -1.2393008281557438 … -0.7211930017278865 -1.3944547759171668; … ; -0.49830968480792187 -0.8117828430335173 … -0.42234916731621935 -0.947212977565134; -0.8180108075209138 -1.3944547759171668 … -0.8180108075209138 -1.3944547759171668;;; -0.615861342309636 -0.23148070686490213 … -0.615861342309636 -0.23148070686490213; -0.5174805693233535 -0.2963296028916884 … -0.7238475880139124 -0.21592330024807257; … ; -0.615861342309636 -0.3777229387338287 … -0.8816979780401091 -0.23148070686490213; -0.5174805693233535 -0.21592330024807257 … -0.5174805693233535 -0.21592330024807257]
    + [-0.5541277796045936 -1.009535330400806 … -0.5541277796045936 -1.009535330400806; -0.8762706094789094 -1.2762212525839953 … -0.7667917804973445 -1.453052732869159; … ; -0.5541277796045936 -0.8506901457986655 … -0.46457135411059036 -1.009535330400806; -0.8762706094789094 -1.453052732869159 … -0.8762706094789094 -1.453052732869159;;; -0.5644424424610739 -0.20133259927658942 … -0.5644424424610739 -0.20133259927658942; -0.46014869396484176 -0.27505011099912496 … -0.7005812177844533 -0.18432917246446268; … ; -0.5644424424610739 -0.36993227528061523 … -0.8741637253888226 -0.20133259927658942; -0.46014869396484176 -0.18432917246446268 … -0.46014869396484176 -0.18432917246446268]
    + [-0.6113188355612936 -1.0730901502800942 … -0.6113188355612936 -1.0730901502800942; -0.9342761753547372 -1.3136112244033429 … -0.8132665202195992 -1.5107941098760225; … ; -0.6113188355612936 -0.8906927667179808 … -0.5079484072907596 -1.0730901502800942; -0.9342761753547372 -1.5107941098760225 … -0.9342761753547372 -1.5107941098760225;;; -0.5116144577915119 -0.17030399583320407 … -0.5116144577915119 -0.17030399583320407; -0.4016783050313231 -0.25288023085937766 … -0.6757986885447391 -0.15304289223675197; … ; -0.5116144577915119 -0.36030644877162527 … -0.8647617965965074 -0.17030399583320407; -0.4016783050313231 -0.15304289223675197 … -0.4016783050313231 -0.15304289223675197]
    + [-0.6709207752864298 -1.1389341858331228 … -0.6709207752864298 -1.1389341858331228; -0.9929267103789987 -1.351922786908686 … -0.8613612264733349 -1.568464077675137; … ; -0.6709207752864298 -0.9324262333581842 … -0.5532718324517414 -1.1389341858331228; -0.9929267103789987 -1.568464077675137 … -0.9929267103789987 -1.568464077675137;;; -0.45637398637517057 -0.13791381931950897 … -0.45637398637517057 -0.13791381931950897; -0.34114843658326266 -0.22960206139636438 … -0.6490986149468652 -0.12181430001360327; … ; -0.45637398637517057 -0.3486158886946604 … -0.8531831743790232 -0.13791381931950897; -0.34114843658326266 -0.12181430001360327 … -0.34114843658326266 -0.12181430001360327]
     
    - [0.6048854718137157 1.7487841124129428 … 0.6048854718137157 1.7487841124129428; 0.5896185921818861 0.1505645261347854 … 0.15240233330966635 2.1036591177156305; … ; 0.6048854718137157 0.16279095516406053 … 0.16229980382267836 1.7487841124129428; 0.5896185921818861 2.1036591177156305 … 0.5896185921818861 2.1036591177156305;;; -6.86780939456026 -7.0267128790424955 … -6.86780939456026 -7.0267128790424955; -5.717907919358522 -0.15627288942074785 … -0.16849931844999072 -5.943197746830108; … ; -6.86780939456026 -0.1657913435934261 … -0.1749933043938824 -7.0267128790424955; -5.717907919358522 -5.943197746830108 … -5.717907919358522 -5.943197746830108]
    - [0.6050014144769785 1.748153123634293 … 0.6050014144769785 1.748153123634293; 0.5900975469606192 0.15052392859078634 … 0.15312228527657937 2.103787615228544; … ; 0.6050014144769785 0.16087478543160325 … 0.16144707846505515 1.748153123634293; 0.5900975469606192 2.103787615228544 … 0.5900975469606192 2.103787615228544;;; -6.867210580036855 -7.027409795615081 … -6.867210580036855 -7.027409795615081; -5.716365792589818 -0.15490284078797595 … -0.16525369762875974 -5.942661142693805; … ; -6.867210580036855 -0.16528144072912018 … -0.17237448288502757 -7.027409795615081; -5.716365792589818 -5.942661142693805 … -5.716365792589818 -5.942661142693805]
    - [0.6044249222451645 1.7469106126508502 … 0.6044249222451645 1.7469106126508502; 0.5900274372629859 0.1498402974886133 … 0.15317663182585173 2.1033964431830405; … ; 0.6044249222451645 0.15830772883283686 … 0.15987551123188729 1.7469106126508502; 0.5900274372629859 2.1033964431830405 … 0.5900274372629859 2.1033964431830405;;; -6.867381645601023 -7.028796544094941 … -6.867381645601023 -7.028796544094941; -5.715518625925486 -0.15399665041844993 … -0.16246408176264088 -5.942792582381415; … ; -6.867381645601023 -0.16524854794342847 … -0.1702736286334392 -7.028796544094941; -5.715518625925486 -5.942792582381415 … -5.715518625925486 -5.942792582381415]
    - [0.6031812862420463 1.7450953976257477 … 0.6031812862420463 1.7450953976257477; 0.5894024122775645 0.1485366310428622 … 0.1525727845682203 2.1024938421686965; … ; 0.6031812862420463 0.1551333805764159 … 0.15761387899624388 1.7450953976257477; 0.5894024122775645 2.1024938421686965 … 0.5894024122775645 2.1024938421686965;;; -6.868268679688738 -7.030804299340781 … -6.868268679688738 -7.030804299340781; -5.715349687682886 -0.15353358777170695 … -0.16013033730522802 -5.943558268755094; … ; -6.868268679688738 -0.16563634636437952 … -0.16865471950754676 -7.030804299340781; -5.715349687682886 -5.943558268755094 … -5.715349687682886 -5.943558268755094]
    - [0.6013085665698479 1.742755945895593 … 0.6013085665698479 1.742755945895593; 0.5882286005654174 0.14664447091012814 … 0.15132900103549865 2.1010980291583543; … ; 0.6013085665698479 0.15140235565122434 … 0.15470156992990525 1.742755945895593; 0.5882286005654174 2.1010980291583543 … 0.5882286005654174 2.1010980291583543;;; -6.869807557370203 -7.033358035379117 … -6.869807557370203 -7.033358035379117; -5.7158292479648685 -0.15348060101411037 … -0.15823848575517419 -5.944913967346289; … ; -6.869807557370203 -0.16637975997295137 … -0.1674702015560798 -7.033358035379117; -5.7158292479648685 -5.944913967346289 … -5.7158292479648685 -5.944913967346289]
    - [0.598855892317473 1.7399486131942257 … 0.598855892317473 1.7399486131942257; 0.5865234384949342 0.14420257362155195 … 0.14947336059990066 2.099236269320718; … ; 0.598855892317473 0.14717056425114167 … 0.1511869228624846 1.7399486131942257; 0.5865234384949342 2.099236269320718 … 0.5865234384949342 2.099236269320718;;; -6.871926544771357 -7.036378952815045 … -6.871926544771357 -7.036378952815045; -5.716916280449167 -0.1537941605127281 … -0.15676215114228556 -5.946806979844537; … ; -6.871926544771357 -0.16740741888827054 … -0.16666333597637634 -7.036378952815045; -5.716916280449167 -5.946806979844537 … -5.716916280449167 -5.946806979844537]
    - [0.5958811815730007 1.7367353970175616 … 0.5958811815730007 1.7367353970175616; 0.5843144049204488 0.14125514734050593 … 0.14704223379031514 2.096943457889973; … ; 0.5958811815730007 0.14249693421680834 … 0.14712492153548007 1.7367353970175616; 0.5843144049204488 2.096943457889973 … 0.5843144049204488 2.096943457889973;;; -6.8745491457220105 -7.0397870793822195 … -6.8745491457220105 -7.0397870793822195; -5.718560585210772 -0.15442234356989648 … -0.15566413044616673 -5.949178459716383; … ; -6.8745491457220105 -0.16864416365228513 … -0.1661704881941689 -7.0397870793822195; -5.718560585210772 -5.949178459716383 … -5.718560585210772 -5.949178459716383]
    - [0.5924486575208425 1.733181704205474 … 0.5924486575208425 1.733181704205474; 0.5816373449202014 0.13785000188772933 … 0.14407842680583244 2.0942604659118893; … ; 0.5924486575208425 0.13744136679333582 … 0.14257484181118496 1.733181704205474; 0.5816373449202014 2.0942604659118893 … 0.5816373449202014 2.0942604659118893;;; -6.877596861611518 -7.043503508107856 … -6.877596861611518 -7.043503508107856; -5.720705249283326 -0.15530711497910096 … -0.15489847988467512 -5.951965779045637; … ; -6.877596861611518 -0.17001336497945702 … -0.16592357051038312 -7.043503508107856; -5.720705249283326 -5.951965779045637 … -5.720705249283326 -5.951965779045637]
    - [0.5917236853921971 1.7324466138864494 … 0.5917236853921971 1.7324466138864494; 0.5810578454401288 0.1371288733000369 … 0.14343522277923373 2.0936892619948675; … ; 0.5917236853921971 0.13640463537769287 … 0.14162539765649912 1.7324466138864494; 0.5810578454401288 2.0936892619948675 … 0.5810578454401288 2.0936892619948675;;; -6.878241166841342 -7.044266014850046 … -6.878241166841342 -7.044266014850046; -5.721181922711051 -0.15550653671354817 … -0.15478229879117186 -5.9525588810990575; … ; -6.878241166841342 -0.1702923518797587 … -0.1658978521484009 -7.044266014850046; -5.721181922711051 -5.9525588810990575 … -5.721181922711051 -5.9525588810990575]

    Alternatively, it is also possible to use an in-place formulation

    julia
    f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
    + [-1.2931007986840914 -1.7031160512642476 … -1.2931007986840914 -1.7031160512642476; -0.4476201050854184 0.7051094661178132 … 0.6976764032560655 -0.691373970429577; … ; -1.2931007986840914 0.6941724708221193 … 0.6861745240666373 -1.7031160512642476; -0.4476201050854184 -0.691373970429577 … -0.4476201050854184 -0.691373970429577;;; -0.3319201786040405 -1.1066968228277734 … -0.3319201786040405 -1.1066968228277734; -0.7339027349829377 0.08146985584337366 … 0.0924068511390998 -1.6781148837864952; … ; -0.3319201786040405 0.06503299545433096 … 0.07637620818235707 -1.1066968228277734; -0.7339027349829377 -1.6781148837864952 … -0.7339027349829377 -1.6781148837864952]
    + [-1.3033302294258857 -1.713179343473074 … -1.3033302294258857 -1.713179343473074; -0.45795886772885214 0.7040803213569757 … 0.696660491938344 -0.7012315932885084; … ; -1.3033302294258857 0.6935209673176284 … 0.6857245635110408 -1.713179343473074; -0.45795886772885214 -0.7012315932885084 … -0.45795886772885214 -0.7012315932885084;;; -0.3422573519004336 -1.1177053994467887 … -0.3422573519004336 -1.1177053994467887; -0.7445184282831224 0.08323181645056422 … 0.09379117048994434 -1.689339625763256; … ; -0.3422573519004336 0.0673893886406746 … 0.07840672901885568 -1.1177053994467887; -0.7445184282831224 -1.689339625763256 … -0.7445184282831224 -1.689339625763256]
    + [-1.3134095274974067 -1.7231391610450235 … -1.3134095274974067 -1.7231391610450235; -0.4680589497716697 0.7031425899303251 … 0.695876566510165 -0.7109406378100851; … ; -1.3134095274974067 0.6929260098627148 … 0.6854430483776558 -1.7231391610450235; -0.4680589497716697 -0.7109406378100851 … -0.4680589497716697 -0.7109406378100851;;; -0.3526741483872546 -1.128829845262931 … -0.3526741483872546 -1.128829845262931; -0.7548787322869919 0.0849027348933907 … 0.09511931496103386 -1.7003293819307372; … ; -0.3526741483872546 0.06937447110855348 … 0.08011130382809377 -1.128829845262931; -0.7548787322869919 -1.7003293819307372 … -0.7548787322869919 -1.7003293819307372]
    + [-1.3233838504056097 -1.733018259188943 … -1.3233838504056097 -1.733018259188943; -0.47795630815458795 0.7023007080275229 … 0.6953117322349547 -0.7205144393149414; … ; -1.3233838504056097 0.6923841222225156 … 0.6853073456180867 -1.733018259188943; -0.47795630815458795 -0.7205144393149414 … -0.47795630815458795 -0.7205144393149414;;; -0.3633376127439469 -1.140243995152969 … -0.3633376127439469 -1.140243995152969; -0.765170719883973 0.08632948540266908 … 0.09624607120770974 -1.711280985623885; … ; -0.3633376127439469 0.07086131054405251 … 0.08136799295997219 -1.140243995152969; -0.765170719883973 -1.711280985623885 … -0.765170719883973 -1.711280985623885]
    + [-1.3333033984017677 -1.74284474256906 … -1.3333033984017677 -1.74284474256906; -0.48769451733971814 0.7015524141228384 … 0.6949448881942601 -0.7299735203232772; … ; -1.3333033984017677 0.691886659893196 … 0.6852888281442672 -1.74284474256906; -0.48769451733971814 -0.7299735203232772 … -0.48769451733971814 -0.7299735203232772;;; -0.374400132844818 -1.1521046561379444 … -0.374400132844818 -1.1521046561379444; -0.775571081780308 0.08737433752485839 … 0.09704009175453462 -1.722379543235927; … ; -0.374400132844818 0.071742276692659 … 0.082071864773802 -1.1521046561379444; -0.775571081780308 -1.722379543235927 … -0.775571081780308 -1.722379543235927]
    + [-1.3432214137384335 -1.7526504647780206 … -1.3432214137384335 -1.7526504647780206; -0.49732306162838485 0.70088907410381 … 0.6947475158940635 -0.7393444366885983; … ; -1.3432214137384335 0.6914207474295654 … 0.6853541639991926 -1.7526504647780206; -0.49732306162838485 -0.7393444366885983 … -0.49732306162838485 -0.7393444366885983;;; -0.3859968980335953 -1.1645485037241428 … -0.3859968980335953 -1.1645485037241428; -0.7862425457346708 0.0879175374118662 … 0.097385864086145 -1.7337939927024886; … ; -0.3859968980335953 0.07193028639620751 … 0.08213587731725909 -1.1645485037241428; -0.7862425457346708 -1.7337939927024886 … -0.7862425457346708 -1.7337939927024886]
    + [-1.3531940008756465 -1.7624711663329278 … -1.3531940008756465 -1.7624711663329278; -0.5068973837688652 0.7002964119879739 … 0.6946849079856697 -0.7486602438730344; … ; -1.3531940008756465 0.6909705203116911 … 0.6854669804319274 -1.7624711663329278; -0.5068973837688652 -0.7486602438730344 … -0.5068973837688652 -0.7486602438730344;;; -0.39824630093679814 -1.1776923174767342 … -0.39824630093679814 -1.1776923174767342; -0.7973333113635569 0.08785911634943988 … 0.09718500802575686 -1.7456760088369485; … ; -0.39824630093679814 0.07135944587144352 … 0.08149131311546902 -1.1776923174767342; -0.7973333113635569 -1.7456760088369485 … -0.7973333113635569 -1.7456760088369485]
    + [-1.3632768075167574 -1.7723434658809323 … -1.3632768075167574 -1.7723434658809323; -0.5164758240843459 0.699755933948873 … 0.6947179115633345 -0.7579578537808336; … ; -1.3632768075167574 0.6905188089567419 … 0.6855898083159826 -1.7723434658809323; -0.5164758240843459 -0.7579578537808336 … -0.5164758240843459 -0.7579578537808336;;; -0.4112474111851038 -1.1916302889845585 … -0.4112474111851038 -1.1916302889845585; -0.8089740336813523 0.08711969029762791 … 0.09635681528979329 -1.7581564675498191; … ; -0.4112474111851038 0.06998500742819176 … 0.0800877787811059 -1.1916302889845585; -0.8089740336813523 -1.7581564675498191 … -0.8089740336813523 -1.7581564675498191]
    + [-1.3664165852536658 -1.7754037561894658 … -1.3664165852536658 -1.7754037561894658; -0.5194395386158631 0.6995965671054124 … 0.6947409485882146 -0.7608273016555152; … ; -1.3664165852536658 0.6903765813076334 … 0.6856239819956859 -1.7754037561894658; -0.5194395386158631 -0.7608273016555152 … -0.5194395386158631 -0.7608273016555152;;; -0.4154209528727798 -1.196100131813737 … -0.4154209528727798 -1.196100131813737; -0.8126924689970357 0.08674468242062354 … 0.09596466821843684 -1.7621432231857432; … ; -0.4154209528727798 0.06939482878041375 … 0.07949641409494351 -1.196100131813737; -0.8126924689970357 -1.7621432231857432 … -0.8126924689970357 -1.7621432231857432]

    Alternatively, it is also possible to use an in-place formulation

    julia
    f!(du,u,p,t) = right_hand_side!(du, u, Ref([setup, psolver]), t)
     u = similar(u0)
     du = similar(u0)
     p = nothing
    @@ -83,8 +83,8 @@
     f!(du,u,p,t)

    that is usually faster than the out-of-place formulation.

    You can look here for more information on how to use the SciML solvers and all the options available.

    API

    IncompressibleNavierStokes.create_right_hand_side Method
    julia
    create_right_hand_side(
         setup,
         psolver
    -) -> IncompressibleNavierStokes.var"#right_hand_side#343"
    create_right_hand_side(setup, psolver)

    Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

    Arguments

    Returns

    A function that computes the right-hand side of the Navier-Stokes equations.

    source

    IncompressibleNavierStokes.right_hand_side! Method
    julia
    right_hand_side!(dudt, u, params_ref, t)
    right_hand_side!(dudt, u, params_ref, t)

    Computes the right-hand side of the Navier-Stokes equations in-place.

    Arguments

    Returns

    Nothing. The result is stored in dudt.

    source

    - +) -> IncompressibleNavierStokes.var"#right_hand_side#339"
    create_right_hand_side(setup, psolver)

    Creates a function that computes the right-hand side of the Navier-Stokes equations for a given setup and pressure solver.

    Arguments

    Returns

    A function that computes the right-hand side of the Navier-Stokes equations.

    source

    IncompressibleNavierStokes.right_hand_side! Method
    julia
    right_hand_side!(dudt, u, params_ref, t)
    right_hand_side!(dudt, u, params_ref, t)

    Computes the right-hand side of the Navier-Stokes equations in-place.

    Arguments

    Returns

    Nothing. The result is stored in dudt.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/setup.html b/previews/PR126/manual/setup.html index 451655db..59986952 100644 --- a/previews/PR126/manual/setup.html +++ b/previews/PR126/manual/setup.html @@ -6,14 +6,14 @@ Problem setup | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,13 +23,13 @@ -
    Skip to content

    Problem setup

    Boundary conditions

    Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.

    IncompressibleNavierStokes.AbstractBC Type
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    IncompressibleNavierStokes.DirichletBC Type
    julia
    struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

    Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

    When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

    Fields

    • u: Boundary condition

    source

    IncompressibleNavierStokes.PeriodicBC Type
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    IncompressibleNavierStokes.PressureBC Type
    julia
    struct PressureBC <: IncompressibleNavierStokes.AbstractBC

    Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

    Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

    Fields

    source

    IncompressibleNavierStokes.SymmetricBC Type
    julia
    struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

    Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

    Fields

    source

    IncompressibleNavierStokes.apply_bc_p! Method
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_p Method
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.apply_bc_temp! Method
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_temp Method
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.apply_bc_u! Method
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_u Method
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.boundary Method
    julia
    boundary(β, N, I, isright) -> Any

    Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

    source

    IncompressibleNavierStokes.offset_p Function
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    IncompressibleNavierStokes.offset_u Function
    julia
    offset_u(bc, isnormal, isright)

    Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

    source

    Grid

    IncompressibleNavierStokes.Dimension Type
    julia
    struct Dimension{N}

    Represent an N-dimensional space. Returns N when called.

    julia
    julia> d = Dimension(3)
    +    
    Skip to content

    Problem setup

    Boundary conditions

    Each boundary has exactly one type of boundary conditions. For periodic boundary conditions, the opposite boundary must also be periodic.

    IncompressibleNavierStokes.AbstractBC Type
    julia
    abstract type AbstractBC

    Boundary condition for one side of the domain.

    Fields

    source

    IncompressibleNavierStokes.DirichletBC Type
    julia
    struct DirichletBC{U} <: IncompressibleNavierStokes.AbstractBC

    Dirichlet boundary conditions for the velocity, where u[1] = (x..., t) -> u1_BC up to u[d] = (x..., t) -> ud_BC, where d is the dimension.

    When u is nothing, then the boundary conditions are no slip boundary conditions, where all velocity components are zero.

    Fields

    • u: Boundary condition

    source

    IncompressibleNavierStokes.PeriodicBC Type
    julia
    struct PeriodicBC <: IncompressibleNavierStokes.AbstractBC

    Periodic boundary conditions. Must be periodic on both sides.

    Fields

    source

    IncompressibleNavierStokes.PressureBC Type
    julia
    struct PressureBC <: IncompressibleNavierStokes.AbstractBC

    Pressure boundary conditions. The pressure is prescribed on the boundary (usually an "outlet"). The velocity has zero Neumann conditions.

    Note: Currently, the pressure is prescribed with the constant value of zero on the entire boundary.

    Fields

    source

    IncompressibleNavierStokes.SymmetricBC Type
    julia
    struct SymmetricBC <: IncompressibleNavierStokes.AbstractBC

    Symmetric boundary conditions. The parallel velocity and pressure is the same at each side of the boundary. The normal velocity is zero.

    Fields

    source

    IncompressibleNavierStokes.apply_bc_p! Method
    julia
    apply_bc_p!(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_p Method
    julia
    apply_bc_p(p, t, setup; kwargs...) -> Any

    Apply pressure boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.apply_bc_temp! Method
    julia
    apply_bc_temp!(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_temp Method
    julia
    apply_bc_temp(temp, t, setup; kwargs...) -> Any

    Apply temperature boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.apply_bc_u! Method
    julia
    apply_bc_u!(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (in-place version).

    source

    IncompressibleNavierStokes.apply_bc_u Method
    julia
    apply_bc_u(u, t, setup; kwargs...) -> Any

    Apply velocity boundary conditions (differentiable version).

    source

    IncompressibleNavierStokes.boundary Method
    julia
    boundary(β, N, I, isright) -> Any

    Get boundary indices of boundary layer normal to β. The CartesianIndices given by I should contain those of the inner DOFs, typically Ip or Iu[α]. The boundary layer is then just outside those.

    source

    IncompressibleNavierStokes.offset_p Function
    julia
    offset_p(bc, isnormal, isright)

    Number of non-DOF pressure components at boundary.

    source

    IncompressibleNavierStokes.offset_u Function
    julia
    offset_u(bc, isnormal, isright)

    Number of non-DOF velocity components at boundary. If isnormal, then the velocity is normal to the boundary, else parallel. If isright, it is at the end/right/rear/top boundary, otherwise beginning.

    source

    Grid

    IncompressibleNavierStokes.Dimension Type
    julia
    struct Dimension{N}

    Represent an N-dimensional space. Returns N when called.

    julia
    julia> d = Dimension(3)
     Dimension{3}()
     
     julia> d()
    -3

    Fields

    source

    IncompressibleNavierStokes.Grid Method
    julia
    Grid(; x, boundary_conditions, backend)

    Create useful quantities for Cartesian box mesh ``x[1] \times \dots \times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

    • N[α]: Number of finite volumes in direction β, including ghost volumes

    • Nu[α][β]: Number of u[α] velocity DOFs in direction β

    • Np[α]: Number of pressure DOFs in direction α

    • Iu[α]: Cartesian index range of u[α] velocity DOFs

    • Ip: Cartesian index range of pressure DOFs

    • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

    • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

    • xu[α][β]: β-coordinates of u[α] velocity points

    • xp[α]: α-coordinates of pressure points

    • Δ[α]: All volume widths in direction α

    • Δu[α]: Distance between pressure points in direction α

    • A[α][β]: Interpolation weights from α-face centers xI to xI±hβ

    Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.

    source

    IncompressibleNavierStokes.cosine_grid Method
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    xi=a+12(1cos(πin))(ba),i=0,,N

    See also stretched_grid.

    source

    IncompressibleNavierStokes.max_size Method
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    IncompressibleNavierStokes.stretched_grid Function
    julia
    stretched_grid(a, b, N) -> Any
    -stretched_grid(a, b, N, s) -> Any

    Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector xRN+1 such that xn=a+i=1nsi1h for n=0,,N. Setting xN=b then gives h=(ba)1s1sN, resulting in

    xn=a+(ba)1sn1sN,n=0,,N.

    Note that stretched_grid(a, b, N, s)[n] corresponds to xn1.

    See also cosine_grid.

    source

    IncompressibleNavierStokes.tanh_grid Function
    julia
    tanh_grid(a, b, N) -> Any
    -tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    Setup

    KernelAbstractions.CPU Type
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    IncompressibleNavierStokes.Setup Method
    julia
    Setup(
    +3

    Fields

    source

    IncompressibleNavierStokes.Grid Method
    julia
    Grid(; x, boundary_conditions, backend)

    Create useful quantities for Cartesian box mesh ``x[1] \times \dots \times x[d]with boundary conditionsboundary_conditions. Return a named tuple ([α]` denotes a tuple index) with the following fields:

    • N[α]: Number of finite volumes in direction β, including ghost volumes

    • Nu[α][β]: Number of u[α] velocity DOFs in direction β

    • Np[α]: Number of pressure DOFs in direction α

    • Iu[α]: Cartesian index range of u[α] velocity DOFs

    • Ip: Cartesian index range of pressure DOFs

    • xlims[α]: Tuple containing the limits of the physical domain (not grid) in the direction α

    • x[α]: α-coordinates of all volume boundaries, including the left point of the first ghost volume

    • xu[α][β]: β-coordinates of u[α] velocity points

    • xp[α]: α-coordinates of pressure points

    • Δ[α]: All volume widths in direction α

    • Δu[α]: Distance between pressure points in direction α

    • A[α][β]: Interpolation weights from α-face centers xI to xI±hβ

    Note that the memory footprint of the redundant 1D-arrays above is negligible compared to the memory footprint of the 2D/3D-fields used in the code.

    source

    IncompressibleNavierStokes.cosine_grid Method
    julia
    cosine_grid(a, b, N) -> Any

    Create a nonuniform grid of N + 1 points from a to b using a cosine profile, i.e.

    xi=a+12(1cos(πin))(ba),i=0,,N

    See also stretched_grid.

    source

    IncompressibleNavierStokes.max_size Method
    julia
    max_size(grid) -> Any

    Get size of the largest grid element.

    source

    IncompressibleNavierStokes.stretched_grid Function
    julia
    stretched_grid(a, b, N) -> Any
    +stretched_grid(a, b, N, s) -> Any

    Create a nonuniform grid of N + 1 points from a to b with a stretch factor of s. If s = 1, return a uniform spacing from a to b. Otherwise, return a vector xRN+1 such that xn=a+i=1nsi1h for n=0,,N. Setting xN=b then gives h=(ba)1s1sN, resulting in

    xn=a+(ba)1sn1sN,n=0,,N.

    Note that stretched_grid(a, b, N, s)[n] corresponds to xn1.

    See also cosine_grid.

    source

    IncompressibleNavierStokes.tanh_grid Function
    julia
    tanh_grid(a, b, N) -> Any
    +tanh_grid(a, b, N, γ) -> Any

    Create a nonuniform grid of N + 1 points from a to b, as proposed by Trias et al. [10].

    source

    Setup

    KernelAbstractions.CPU Type
    julia
    struct CPU <: KernelAbstractions.Backend
    CPU(; static=false)

    Instantiate a CPU (multi-threaded) backend.

    Options:

    • static: Uses a static thread assignment, this can be beneficial for NUMA aware code. Defaults to false.

    Fields

    • static

    source

    IncompressibleNavierStokes.Setup Method
    julia
    Setup(
     ;
         x,
         boundary_conditions,
    @@ -41,7 +41,7 @@
         workgroupsize,
         temperature,
         Re
    -)

    Create problem setup (stored in a named tuple).

    source

    IncompressibleNavierStokes.temperature_equation Method
    julia
    temperature_equation(
    +)

    Create problem setup (stored in a named tuple).

    source

    IncompressibleNavierStokes.temperature_equation Method
    julia
    temperature_equation(
     ;
         Pr,
         Ra,
    @@ -50,11 +50,11 @@
         boundary_conditions,
         gdir,
         nondim_type
    -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    Field initializers

    IncompressibleNavierStokes.random_field Function
    julia
    random_field(setup; ...) -> Any
    -random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    IncompressibleNavierStokes.scalarfield Method
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    IncompressibleNavierStokes.temperaturefield Function
    julia
    temperaturefield(setup, tempfunc) -> Any
    -temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    IncompressibleNavierStokes.vectorfield Method
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    IncompressibleNavierStokes.velocityfield Function
    julia
    velocityfield(setup, ufunc; ...) -> Any
    -velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    - +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    Field initializers

    IncompressibleNavierStokes.random_field Function
    julia
    random_field(setup; ...) -> Any
    +random_field(setup, t; A, kp, psolver, rng) -> Any

    Create random field, as in [11].

    • A: Eddy amplitude scaling

    • kp: Peak energy wavenumber

    source

    IncompressibleNavierStokes.scalarfield Method
    julia
    scalarfield(setup) -> Any

    Create empty scalar field.

    source

    IncompressibleNavierStokes.temperaturefield Function
    julia
    temperaturefield(setup, tempfunc) -> Any
    +temperaturefield(setup, tempfunc, t) -> Any

    Create temperature field from function with boundary conditions at time t.

    source

    IncompressibleNavierStokes.vectorfield Method
    julia
    vectorfield(setup) -> Any

    Create empty vector field.

    source

    IncompressibleNavierStokes.velocityfield Function
    julia
    velocityfield(setup, ufunc; ...) -> Any
    +velocityfield(setup, ufunc, t; psolver, doproject) -> Any

    Create divergence free velocity field u with boundary conditions at time t. The initial conditions of u[α] are specified by the function ufunc(α, x...).

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/solver.html b/previews/PR126/manual/solver.html index efc31e02..143ad8c5 100644 --- a/previews/PR126/manual/solver.html +++ b/previews/PR126/manual/solver.html @@ -6,14 +6,14 @@ Solvers | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,9 +23,9 @@ -
    Skip to content

    Solvers

    Solvers

    IncompressibleNavierStokes.get_cfl_timestep! Method
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    IncompressibleNavierStokes.get_state Method
    julia
    get_state(
    +    
    Skip to content

    Solvers

    Solvers

    IncompressibleNavierStokes.get_cfl_timestep! Method
    julia
    get_cfl_timestep!(buf, u, setup) -> Any

    Get proposed maximum time step for convection and diffusion terms.

    source

    IncompressibleNavierStokes.get_state Method
    julia
    get_state(
         stepper
    -) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    IncompressibleNavierStokes.solve_unsteady Method
    julia
    solve_unsteady(
    +) -> NamedTuple{(:u, :temp, :t, :n), <:NTuple{4, Any}}

    Get state (; u, temp, t, n) from stepper.

    source

    IncompressibleNavierStokes.solve_unsteady Method
    julia
    solve_unsteady(
     ;
         setup,
         tlims,
    @@ -41,9 +41,9 @@
         processors,
         θ,
         cache
    -)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    Processors

    Processors can be used to process the solution in solve_unsteady after every time step.

    IncompressibleNavierStokes.animator Function

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    IncompressibleNavierStokes.energy_history_plot Function

    Create energy history plot.

    source

    IncompressibleNavierStokes.energy_spectrum_plot Function

    Create energy spectrum plot. The energy at a scalar wavenumber level κN is defined by

    e^(κ)=κk2<κ+1|e^(k)|dk,

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    IncompressibleNavierStokes.fieldplot Function

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    IncompressibleNavierStokes.fieldsaver Method
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    IncompressibleNavierStokes.observefield Method
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    IncompressibleNavierStokes.observespectrum Method
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    IncompressibleNavierStokes.processor Function
    julia
    processor(
    +)

    Solve unsteady problem using method.

    If Δt is a real number, it is rounded such that (t_end - t_start) / Δt is an integer. If Δt = nothing, the time step is chosen every n_adapt_Δt iteration with CFL-number cfl. If Δt_min is given, the adaptive time step never goes below it.

    The processors are called after every time step.

    Note that the state observable passed to the processor.initialize function contains vector living on the device, and you may have to move them back to the host using Array(u) in the processor.

    Return (; u, t), outputs, where outputs is a named tuple with the outputs of processors with the same field names.

    source

    Processors

    Processors can be used to process the solution in solve_unsteady after every time step.

    IncompressibleNavierStokes.animator Function

    Animate a plot of the solution every update iteration. The animation is saved to path, which should have one of the following extensions:

    • ".mkv"

    • ".mp4"

    • ".webm"

    • ".gif"

    The plot is determined by a plotter processor. Additional kwargs are passed to plot.

    source

    IncompressibleNavierStokes.energy_history_plot Function

    Create energy history plot.

    source

    IncompressibleNavierStokes.energy_spectrum_plot Function

    Create energy spectrum plot. The energy at a scalar wavenumber level κN is defined by

    e^(κ)=κk2<κ+1|e^(k)|dk,

    as in San and Staples [12].

    Keyword arguments:

    • sloperange = [0.6, 0.9]: Percentage (between 0 and 1) of x-axis where the slope is plotted.

    • slopeoffset = 1.3: How far above the energy spectrum the inertial slope is plotted.

    • kwargs...: They are passed to observespectrum.

    source

    IncompressibleNavierStokes.fieldplot Function

    Plot state field in pressure points. If state is Observable, then the plot is interactive.

    Available fieldnames are:

    • :velocity,

    • :vorticity,

    • :streamfunction,

    • :pressure.

    Available plot types for 2D are:

    • heatmap (default),

    • image,

    • contour,

    • contourf.

    Available plot types for 3D are:

    • contour (default).

    The alpha value gets passed to contour in 3D.

    source

    IncompressibleNavierStokes.fieldsaver Method
    julia
    fieldsaver(; setup, nupdate)

    Create processor that stores the solution and time every nupdate time step.

    source

    IncompressibleNavierStokes.observefield Method
    julia
    observefield(state; setup, fieldname, logtol, psolver)

    Observe field fieldname at pressure points.

    source

    IncompressibleNavierStokes.observespectrum Method
    julia
    observespectrum(state; setup, npoint, a)

    Observe energy spectrum of state.

    source

    IncompressibleNavierStokes.processor Function
    julia
    processor(
         initialize
    -) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#295#296"}}
    +) -> NamedTuple{(:initialize, :finalize), <:Tuple{Any, IncompressibleNavierStokes.var"#291#292"}}
     processor(
         initialize,
         finalize
    @@ -65,7 +65,7 @@
     The summand is 3, the time is 1.2
     The summand is 4, the time is 1.6
     The summand is 5, the time is 2.0
    -The final sum (at time t=2.0) is 15

    source

    IncompressibleNavierStokes.realtimeplotter Function

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    IncompressibleNavierStokes.save_vtk Method
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    IncompressibleNavierStokes.snapshotsaver Method
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    IncompressibleNavierStokes.timelogger Method
    julia
    timelogger(
    +The final sum (at time t=2.0) is 15

    source

    IncompressibleNavierStokes.realtimeplotter Function

    Processor for plotting the solution in real time.

    Keyword arguments:

    • plot: Plot function.

    • nupdate: Show solution every nupdate time step.

    • displayfig: Display the figure at the start.

    • screen: If nothing, use default display. If GLMakie.screen() multiple plots can be displayed in separate windows like in MATLAB (see also GLMakie.closeall()).

    • displayupdates: Display the figure at every update (if using CairoMakie).

    • sleeptime: The sleeptime is slept at every update, to give Makie time to update the plot. Set this to nothing to skip sleeping.

    Additional kwargs are passed to the plot function.

    source

    IncompressibleNavierStokes.save_vtk Method
    julia
    save_vtk(state; setup, filename, kwargs...)

    Save fields to vtk file.

    The kwargs are passed to snapshotsaver.

    source

    IncompressibleNavierStokes.snapshotsaver Method
    julia
    snapshotsaver(state; setup, fieldnames, psolver)

    In the case of a 2D setup, the velocity field is saved as a 3D vector with a z-component of zero, as this seems to be preferred by ParaView.

    source

    IncompressibleNavierStokes.timelogger Method
    julia
    timelogger(
     ;
         showiter,
         showt,
    @@ -73,8 +73,8 @@
         showmax,
         showspeed,
         nupdate
    -) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#298#300"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#295#296"}

    Create processor that logs time step information.

    source

    IncompressibleNavierStokes.vtk_writer Method
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    - +) -> @NamedTuple{initialize::IncompressibleNavierStokes.var"#294#296"{Bool, Bool, Bool, Bool, Bool, Int64}, finalize::IncompressibleNavierStokes.var"#291#292"}

    Create processor that logs time step information.

    source

    IncompressibleNavierStokes.vtk_writer Method
    julia
    vtk_writer(; setup, nupdate, dir, filename, kwargs...)

    Create processor that writes the solution every nupdate time steps to a VTK file. The resulting Paraview data collection file is stored in "$dir/$filename.pvd". The kwargs are passed to snapshotsaver.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/spatial.html b/previews/PR126/manual/spatial.html index d84f13ff..91961a48 100644 --- a/previews/PR126/manual/spatial.html +++ b/previews/PR126/manual/spatial.html @@ -6,14 +6,14 @@ Spatial discretization | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    Spatial discretization

    the d spatial dimensions are indexed by α{1,,d}. The α-th unit vector is denoted eα=(eαβ)β=1d, where the Kronecker symbol eαβ is 1 if α=β and 0 otherwise. We note hα=eα/2. The Cartesian index I=(I1,,Id) is used to avoid repeating terms and equations d times, where Iα is a scalar index (typically one of i, j, and k in common notation). This notation is dimension-agnostic, since we can write uI instead of uij in 2D or uijk in 3D. In our Julia implementation of the solver we use the same Cartesian notation (u[I] instead of u[i, j] or u[i, j, k]).

    For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [13]. Consider a rectangular domain Ω=α=1d[aα,bα], where aα<bα are the domain boundaries and is a Cartesian product. Let Ω=IIΩI be a partitioning of Ω, where I=α=1d{12,212,,Nα12} are volume center indices, N=(N1,,Nd)Nd are the number of volumes in each dimension, ΩI=α=1dΔIαα is a finite volume, ΓIα=ΩIhαΩI+hα=βαΔIββ is a volume face, Δiα=[xi12α,xi+12α] is a volume edge, x0α,,xNαα are volume boundary coordinates, and xiα=12(xi12α+xi+12α) for i{1/2,,Nα1/2} are volume center coordinates. We also define the operator δα which maps a discrete scalar field φ=(φI)I to

    (δαφ)I=φI+hαφIhα|ΔIαα|.

    It can be interpreted as a discrete equivalent of the continuous operator xα. All the above definitions are extended to be valid in volume centers II, volume faces II+hα, or volume corners II+α=1dhα. The discretization is illustrated below:

    Finite volume discretization of the Navier-Stokes equations

    We now define the unknown degrees of freedom. The average pressure in ΩI, II is approximated by the quantity pI(t). The average α-velocity on the face ΓIα, II+hα is approximated by the quantity uIα(t). Note how the pressure p and the d velocity fields uα are each defined in their own canonical positions xI and xI+hα for II. In the following, we derive equations for these unknowns.

    Using the pressure control volume O=ΩI with II in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ΓIudΓ|ΓI|uI results in the discrete divergence-free constraint

    α=1d(δαuα)I=0.

    Note how dividing by the volume size results in a discrete equation resembling the continuous one (since |ΩI|=|ΓIα||ΔIαα|).

    Similarly, choosing an α-velocity control volume O=ΩI with II+hα in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations

    ddtuIα=β=1d(δβ(uαuβ))I+νβ=1d(δβδβuα)I+fα(xI)(δαp)I.

    where we made the assumption that f is constant in time for simplicity. The outer discrete derivative in (δβδβuα)I is required at the position I, which means that the inner derivative is evaluated as (δβuα)I+hβ and (δβuα)Ihβ, thus requiring uI2hβα, uIα, and uI+2hβα, which are all in their canonical positions. The two velocity components in the convective term uαuβ are required at the positions Ihβ and I+hβ, which are outside the canonical positions. Their value at the required position is obtained using averaging with weights 1/2 for the α-component and with linear interpolation for the β-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [14].

    Boundary conditions

    Storage convention

    We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the x1-index i will vary for one whole cycle in the vectors before the x2-index j, x3 index k, and component-index α are incremented, e.g. uh=(u(1,1,1)1,u(2,1,1)1,u(Nu3(1),Nu3(2),Nu3(3))3) in 3D.

    Fourth order accurate discretization

    The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension [14] [15]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume

    ΩI3=α=1dΩIeαΩIΩI+eα,

    while the momentum equation is derived for its shifted variant ΩI+hα3. The resulting fourth order accurate equations are given by

    α=1d(δαuα)I|ΩI3|32+d|ΩI|α=1d(δα3uα)I=0

    and

    ddtuIα=β=1d(δβ(uαuβ))I+νβ=1d(δβδβuα)I+fα(xI)(δαp)I+fourth order,

    where

    (δα3φ)I=φI+3hαφI3hαΔIα1α+ΔIαα+ΔIα+1α.

    Matrix representation

    We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes

    Muh+yM=0,

    where M is the discrete divergence operator and yM contains the boundary value contributions of the velocity to the divergence field.

    The discrete momentum equations become

    duhdt=C(uh)+ν(Duh+yD)+fh(Gph+yG)=F(uh)(Gph+yG),

    where C is she convection operator (including boundary contributions), D is the diffusion operator, yD is boundary contribution to the diffusion term, G=Wu1MTW is the pressure gradient operator, yG contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), Wu is a diagonal matrix containing the velocity volume sizes |ΩI+δ(α)/2|, and W is a diagonal matrix containing the reference volume sizes |ΩI|. The term F refers to all the forces except for the pressure gradient.

    Volume normalization

    All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.

    Discrete pressure Poisson equation

    Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the discrete setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator M to the discrete momentum equations yields the discrete pressure Poisson equation

    Lph=WM(F(uh)yG)+WdyMdt,

    where L=WMG=WMWu1MTW is a discrete Laplace operator. It is positive symmetric.

    Unsteady Dirichlet boundary conditions

    If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term dyMdt will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example dyMdt(yM(t)yM(tΔt))/Δt for some Δt.

    Uniqueness of pressure field

    Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as L will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field.

    Pressure projection

    The pressure field ph can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:

    ph=L1WM(F(uh)yG)+L1WdyMdt.

    The momentum equations then become

    duhdt=(IGL1WM)(F(uh)yG)GL1WdyMdt.

    The matrix (IGL1WM) is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix L1, which would be very costly.

    Discrete output quantities

    Kinetic energy

    The local kinetic energy is defined by k=12u22=12α=1duαuα. On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares.

    Vorticity

    In 2D, the vorticity is a scalar. We define it as

    ω=δ2u1+δ1u2.

    The 3D vorticity is a vector field (ω1,ω2,ω3). Noting α+=mod3(α+1) and α=mod3(α1), the vorticity is defined as through

    ωα=δαuα++δα+uα.

    Stream function

    In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields

    ΩI+h1+h2ωdΩ=ΩI+h1+h22ψdΩ=ΓI+e1+h21ψx1dΓΓI+h21ψx1dΓ+ΓI+h1+e22ψx2dΓΓI+h12ψx2dΓ.

    Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:

    |ΓI+h1+h21|(ψI+3/h1+h2ψI+h1+h2xI1+3/21xI1+1/21ψI+h1+h2ψIh1+h2xI1+1/21xI11/21)+|ΓI+h1+h22|(ψI+h1+3h2ψI+h1+h2xI1+3/22xI1+1/22ψI+h1+h2ψI+h1h2xI2+1/22xI21/22)=|ΩI+h1+h2|ωI+h1+h2
    - +
    Skip to content

    Spatial discretization

    the d spatial dimensions are indexed by α{1,,d}. The α-th unit vector is denoted eα=(eαβ)β=1d, where the Kronecker symbol eαβ is 1 if α=β and 0 otherwise. We note hα=eα/2. The Cartesian index I=(I1,,Id) is used to avoid repeating terms and equations d times, where Iα is a scalar index (typically one of i, j, and k in common notation). This notation is dimension-agnostic, since we can write uI instead of uij in 2D or uijk in 3D. In our Julia implementation of the solver we use the same Cartesian notation (u[I] instead of u[i, j] or u[i, j, k]).

    For the discretization scheme, we use a staggered Cartesian grid as proposed by Harlow and Welch [13]. Consider a rectangular domain Ω=α=1d[aα,bα], where aα<bα are the domain boundaries and is a Cartesian product. Let Ω=IIΩI be a partitioning of Ω, where I=α=1d{12,212,,Nα12} are volume center indices, N=(N1,,Nd)Nd are the number of volumes in each dimension, ΩI=α=1dΔIαα is a finite volume, ΓIα=ΩIhαΩI+hα=βαΔIββ is a volume face, Δiα=[xi12α,xi+12α] is a volume edge, x0α,,xNαα are volume boundary coordinates, and xiα=12(xi12α+xi+12α) for i{1/2,,Nα1/2} are volume center coordinates. We also define the operator δα which maps a discrete scalar field φ=(φI)I to

    (δαφ)I=φI+hαφIhα|ΔIαα|.

    It can be interpreted as a discrete equivalent of the continuous operator xα. All the above definitions are extended to be valid in volume centers II, volume faces II+hα, or volume corners II+α=1dhα. The discretization is illustrated below:

    Finite volume discretization of the Navier-Stokes equations

    We now define the unknown degrees of freedom. The average pressure in ΩI, II is approximated by the quantity pI(t). The average α-velocity on the face ΓIα, II+hα is approximated by the quantity uIα(t). Note how the pressure p and the d velocity fields uα are each defined in their own canonical positions xI and xI+hα for II. In the following, we derive equations for these unknowns.

    Using the pressure control volume O=ΩI with II in the mass integral constraint and approximating the face integrals with the mid-point quadrature rule ΓIudΓ|ΓI|uI results in the discrete divergence-free constraint

    α=1d(δαuα)I=0.

    Note how dividing by the volume size results in a discrete equation resembling the continuous one (since |ΩI|=|ΓIα||ΔIαα|).

    Similarly, choosing an α-velocity control volume O=ΩI with II+hα in the integral momentum equation, approximating the volume- and face integrals using the mid-point quadrature rule, and replacing remaining spatial derivatives in the diffusive term with a finite difference approximation gives the discrete momentum equations

    ddtuIα=β=1d(δβ(uαuβ))I+νβ=1d(δβδβuα)I+fα(xI)(δαp)I.

    where we made the assumption that f is constant in time for simplicity. The outer discrete derivative in (δβδβuα)I is required at the position I, which means that the inner derivative is evaluated as (δβuα)I+hβ and (δβuα)Ihβ, thus requiring uI2hβα, uIα, and uI+2hβα, which are all in their canonical positions. The two velocity components in the convective term uαuβ are required at the positions Ihβ and I+hβ, which are outside the canonical positions. Their value at the required position is obtained using averaging with weights 1/2 for the α-component and with linear interpolation for the β-component. This preserves the skew-symmetry of the convection operator, such that energy is conserved (in the convective term) [14].

    Boundary conditions

    Storage convention

    We use the column-major convention (Julia, MATLAB, Fortran), and not the row-major convention (Python, C). Thus the x1-index i will vary for one whole cycle in the vectors before the x2-index j, x3 index k, and component-index α are incremented, e.g. uh=(u(1,1,1)1,u(2,1,1)1,u(Nu3(1),Nu3(2),Nu3(3))3) in 3D.

    Fourth order accurate discretization

    The above discretization is second order accurate. A fourth order accurate discretization can be obtained by judiciously combining the second order discretization with itself on a grid with three times larger cells in each dimension [14] [15]. The coarse discretization is identical, but the mass equation is derived for the three times coarser control volume

    ΩI3=α=1dΩIeαΩIΩI+eα,

    while the momentum equation is derived for its shifted variant ΩI+hα3. The resulting fourth order accurate equations are given by

    α=1d(δαuα)I|ΩI3|32+d|ΩI|α=1d(δα3uα)I=0

    and

    ddtuIα=β=1d(δβ(uαuβ))I+νβ=1d(δβδβuα)I+fα(xI)(δαp)I+fourth order,

    where

    (δα3φ)I=φI+3hαφI3hαΔIα1α+ΔIαα+ΔIα+1α.

    Matrix representation

    We can write the mass and momentum equations in matrix form. We will use the same matrix notation for the second- and fourth order accurate discretizations. The discrete mass equation becomes

    Muh+yM=0,

    where M is the discrete divergence operator and yM contains the boundary value contributions of the velocity to the divergence field.

    The discrete momentum equations become

    duhdt=C(uh)+ν(Duh+yD)+fh(Gph+yG)=F(uh)(Gph+yG),

    where C is she convection operator (including boundary contributions), D is the diffusion operator, yD is boundary contribution to the diffusion term, G=Wu1MTW is the pressure gradient operator, yG contains the boundary contribution of the pressure to the pressure gradient (only non-zero for pressure boundary conditions), Wu is a diagonal matrix containing the velocity volume sizes |ΩI+δ(α)/2|, and W is a diagonal matrix containing the reference volume sizes |ΩI|. The term F refers to all the forces except for the pressure gradient.

    Volume normalization

    All the operators have been divided by the velocity volume sizes. As a result, the operators have the same units as their continuous counterparts.

    Discrete pressure Poisson equation

    Instead of directly discretizing the continuous pressure Poisson equation, we will rededuce it in the discrete setting, thus aiming to preserve the discrete divergence freeness instead of the continuous one. Applying the discrete divergence operator M to the discrete momentum equations yields the discrete pressure Poisson equation

    Lph=WM(F(uh)yG)+WdyMdt,

    where L=WMG=WMWu1MTW is a discrete Laplace operator. It is positive symmetric.

    Unsteady Dirichlet boundary conditions

    If the equations are prescribed with unsteady Dirichlet boundary conditions, for example an inflow that varies with time, the term dyMdt will be non-zero. If this term is not known exactly, for example if the next value of the inflow is unknown at the time of the current value, it must be computed using past values of of the velocity inflow only, for example dyMdt(yM(t)yM(tΔt))/Δt for some Δt.

    Uniqueness of pressure field

    Unless pressure boundary conditions are present, the pressure is only determined up to a constant, as L will have an eigenvalue of zero. Since only the gradient of the pressure appears in the equations, we can set the unknown constant to zero without affecting the velocity field.

    Pressure projection

    The pressure field ph can be seen as a Lagrange multiplier enforcing the constraint of discrete divergence freeness. It is also possible to write the momentum equations without the pressure by explicitly solving the discrete Poisson equation:

    ph=L1WM(F(uh)yG)+L1WdyMdt.

    The momentum equations then become

    duhdt=(IGL1WM)(F(uh)yG)GL1WdyMdt.

    The matrix (IGL1WM) is a projector onto the space of discretely divergence free velocities. However, using this formulation would require an efficient way to perform the projection without assembling the operator matrix L1, which would be very costly.

    Discrete output quantities

    Kinetic energy

    The local kinetic energy is defined by k=12u22=12α=1duαuα. On the staggered grid however, the different velocity components are not located at the same point. We will therefore interpolate the velocity to the pressure point before summing the squares.

    Vorticity

    In 2D, the vorticity is a scalar. We define it as

    ω=δ2u1+δ1u2.

    The 3D vorticity is a vector field (ω1,ω2,ω3). Noting α+=mod3(α+1) and α=mod3(α1), the vorticity is defined as through

    ωα=δαuα++δα+uα.

    Stream function

    In 2D, the stream function is defined at the corners with the vorticity. Integrating the stream function Poisson equation over the vorticity volume yields

    ΩI+h1+h2ωdΩ=ΩI+h1+h22ψdΩ=ΓI+e1+h21ψx1dΓΓI+h21ψx1dΓ+ΓI+h1+e22ψx2dΓΓI+h12ψx2dΓ.

    Replacing the integrals with the mid-point quadrature rule and the spatial derivatives with central finite differences yields the discrete Poisson equation for the stream function at the vorticity point:

    |ΓI+h1+h21|(ψI+3/h1+h2ψI+h1+h2xI1+3/21xI1+1/21ψI+h1+h2ψIh1+h2xI1+1/21xI11/21)+|ΓI+h1+h22|(ψI+h1+3h2ψI+h1+h2xI1+3/22xI1+1/22ψI+h1+h2ψI+h1h2xI2+1/22xI21/22)=|ΩI+h1+h2|ωI+h1+h2
    + \ No newline at end of file diff --git a/previews/PR126/manual/temperature.html b/previews/PR126/manual/temperature.html index e6f86619..8501e694 100644 --- a/previews/PR126/manual/temperature.html +++ b/previews/PR126/manual/temperature.html @@ -6,14 +6,14 @@ Temperature equation | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -35,8 +35,8 @@ boundary_conditions, gdir, nondim_type -)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    - +)

    Create temperature equation setup (stored in a named tuple).

    The equation is parameterized by three dimensionless numbers (Prandtl number, Rayleigh number, and Gebhart number), and requires separate boundary conditions for the temperature field. The gdir keyword specifies the direction gravity, while non_dim_type specifies the type of non-dimensionalization.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/time.html b/previews/PR126/manual/time.html index a990ce50..6106fcd0 100644 --- a/previews/PR126/manual/time.html +++ b/previews/PR126/manual/time.html @@ -6,14 +6,14 @@ Time discretization | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,181 +23,181 @@ -
    Skip to content

    Time discretization

    The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity

    dudt=F(u,t)(Gp+yG)

    subject to the algebraic constraint formed by the mass equation

    Mu+yM=0.

    In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term dyMdt, which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field u(t) stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following).

    Consider the interval [0,T] for some simulation time T. We will divide it into N sub-intervals [tn,tn+1] for n=0,,N1, with t0=0, tN=T, and increment Δtn=tn+1tn. We define unu(tn) as an approximation to the exact discrete velocity field u(tn), with u0=u(0) starting from the exact initial conditions. We say that the time integration scheme (definition of un) is accurate to the order r if un=u(tn)+O(Δtr) for all n.

    IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.

    The code is currently not adapted to time steppers from DifferentialEquations.jl, but they may be integrated in the future.

    IncompressibleNavierStokes.AbstractODEMethod Type
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    IncompressibleNavierStokes.ode_method_cache Function
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    IncompressibleNavierStokes.runge_kutta_method Function
    julia
    runge_kutta_method(
    +    
    Skip to content

    Time discretization

    The spatially discretized Navier-Stokes equations form a differential-algebraic system, with an ODE for the velocity

    dudt=F(u,t)(Gp+yG)

    subject to the algebraic constraint formed by the mass equation

    Mu+yM=0.

    In the end of the previous section, we differentiated the mass equation in time to obtain a discrete pressure Poisson equation. This equation includes the term dyMdt, which is non-zero if an unsteady flow of mass is added to the domain (Dirichlet boundary conditions). This term ensures that the time-continuous discrete velocity field u(t) stays divergence free (conserves mass). However, if we directly discretize this system in time, the mass preservation may actually not be respected. For this, we will change the definition of the pressure such that the time-discretized velocity field is divergence free at each time step and each time sub-step (to be defined in the following).

    Consider the interval [0,T] for some simulation time T. We will divide it into N sub-intervals [tn,tn+1] for n=0,,N1, with t0=0, tN=T, and increment Δtn=tn+1tn. We define unu(tn) as an approximation to the exact discrete velocity field u(tn), with u0=u(0) starting from the exact initial conditions. We say that the time integration scheme (definition of un) is accurate to the order r if un=u(tn)+O(Δtr) for all n.

    IncompressibleNavierStokes provides a collection of explicit and implicit Runge-Kutta methods, in addition to Adams-Bashforth Crank-Nicolson and one-leg beta method time steppers.

    The code is currently not adapted to time steppers from DifferentialEquations.jl, but they may be integrated in the future.

    IncompressibleNavierStokes.AbstractODEMethod Type
    julia
    abstract type AbstractODEMethod{T}

    Abstract ODE method.

    Fields

    source

    IncompressibleNavierStokes.ode_method_cache Function
    julia
    ode_method_cache(method, setup, u, temp)

    Get time stepper cache for the given ODE method.

    source

    IncompressibleNavierStokes.runge_kutta_method Function
    julia
    runge_kutta_method(
         A,
         b,
         c,
         r;
         T,
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    IncompressibleNavierStokes.create_stepper Function
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    IncompressibleNavierStokes.timestep Function
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    IncompressibleNavierStokes.timestep! Function
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    Adams-Bashforth Crank-Nicolson method

    IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod Type
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    We here require that the time step Δt is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field u0=u(t0) at a time t0 and its previous value u1=u(t0Δt) at the previous time t1=t0Δt, the predicted velocity field u at the time t=t0+Δt is defined by first computing a tentative velocity:

    vu0Δt=(α0C(u0,t0)+α1C(u1,t1))+θ(Du0+yD(t0))+(1θ)(Dv+yD(t))+θf(t0)+(1θ)f(t)(Gp0+yG(t0)),

    where θ[0,1] is the Crank-Nicolson parameter (θ=12 for second order convergence), (α0,α1)=(32,12) are the Adams-Bashforth coefficients, and v is a tentative velocity yet to be made divergence free. We can group the terms containing v on the left hand side, to obtain

    (1ΔtI(1θ)D)v=(1ΔtIθD)u0(α0C(u0,t0)+α1C(u1,t1))+θyD(t0)+(1θ)yD(t)+θf(t0)+(1θ)f(t)(Gp0+yG(t0)).

    We can compute v by inverting the positive definite matrix (1ΔtIθD) for the given right hand side using a suitable linear solver. Assuming Δt is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping.

    We then compute the pressure difference Δp by solving

    LΔp=WMv+yM(t)ΔtWM(yG(t)yG(t0)),

    after which a divergence free velocity u can be enforced:

    u=vΔt(GΔp+yG(t)yG(t0)).

    A first order accurate prediction of the corresponding pressure is p=p0+Δp. However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure p is then accurate to the same order as u.

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    One-leg beta method

    IncompressibleNavierStokes.OneLegMethod Type
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    We here require that the time step Δt is constant. Given the velocity u0 and pressure p0 at the current time t0 and their previous values u1 and p1 at the time t1=t0Δt, we start by computing the "offstep" values v=(1+β)v0βv1 and Q=(1+β)p0βp1 for some β=12.

    A tentative velocity field v~ is then computed as follows:

    v~=1β+12(2βu0(β12)u1+ΔtF(v,t)Δt(GQ+yG(t))).

    A pressure correction Δp is obtained by solving the Poisson equation

    LΔp=β+12ΔtW(Mv~+yM(t)).

    Finally, the divergence free velocity field is given by

    u=v~Δtβ+12GΔp,

    while the second order accurate pressure is given by

    p=2p0p1+43Δp.

    Fields

    • β

    • p_add_solve

    • method_startup

    source

    Runge-Kutta methods

    IncompressibleNavierStokes.AbstractRungeKuttaMethod Type
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    IncompressibleNavierStokes.ExplicitRungeKuttaMethod Type
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    Consider the velocity field u0 at a certain time t0. We will now perform one time step to t=t0+Δt. For explicit Runge-Kutta methods, this time step is divided into s sub-steps ti=t0+Δti with increment Δti=ciΔt. The final substep performs the full time step Δts=Δt such that ts=t.

    For i=1,,s, the intermediate velocity ui and pressure pi are computed as follows:

    ki=F(ui1,ti1)yG(ti1)vi=u0+Δtj=1iaijkjLpi=WM1cij=1iaijkj+WyM(ti)yM(t0)Δti=W(Mvi+yM(ti))(Mu0+yM(t0))Δtin=WMvi+yM(ti)Δtinui=viΔtiGpi,

    where (aij)ij are the Butcher tableau coefficients of the RK-method, with the convention ci=j=1iaij.

    Finally, we return us. If u0=u(t0), we get the accuracy us=u(t)+O(Δtr+1), where r is the order of the RK-method. If we perform n RK time steps instead of one, starting at exact initial conditions u0=u(0), then un=u(tn)+O(Δtr) for all n{1,,N}. Note that for a given u, the corresponding pressure p can be calculated to the same accuracy as u by doing an additional pressure projection after each outer time step Δt (if we know dyMdt(t)), or to first order accuracy by simply returning ps.

    Note that each of the sub-step velocities ui is divergence free, after projecting the tentative velocities vi. This is ensured due to the judiciously chosen replacement of dyMdt(ti) with (yM(ti)yM(t0))/Δti. The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors.

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    IncompressibleNavierStokes.ImplicitRungeKuttaMethod Type
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    IncompressibleNavierStokes.RKMethods Module

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    IncompressibleNavierStokes.LMWray3 Type
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    Explicit Methods

    IncompressibleNavierStokes.RKMethods.FE11 Function
    julia
    FE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Get Runge Kutta method. The function checks whether the method is explicit.

    p_add_solve: whether to add a pressure solve step to the method.

    For implicit RK methods: newton_type, maxiter, abstol, reltol.

    source

    IncompressibleNavierStokes.create_stepper Function
    julia
    create_stepper(method; setup, psolver, u, temp, t, n)

    Create time stepper.

    source

    IncompressibleNavierStokes.timestep Function
    julia
    timestep(method, stepper, Δt; θ = nothing)

    Perform one time step.

    Non-mutating/allocating/out-of-place version.

    See also timestep!.

    source

    IncompressibleNavierStokes.timestep! Function
    julia
    timestep!(method, stepper, Δt; θ = nothing, cache)

    Perform one time step>

    Mutating/non-allocating/in-place version.

    See also timestep.

    source

    Adams-Bashforth Crank-Nicolson method

    IncompressibleNavierStokes.AdamsBashforthCrankNicolsonMethod Type
    julia
    struct AdamsBashforthCrankNicolsonMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    IMEX AB-CN: Adams-Bashforth for explicit convection (parameters α₁ and α₂) and Crank-Nicolson for implicit diffusion (implicitness θ). The method is second order for θ = 1/2.

    The LU decomposition of the LHS matrix is computed every time the time step changes.

    Note that, in contrast to explicit methods, the pressure from previous time steps has an influence on the accuracy of the velocity.

    We here require that the time step Δt is constant. This methods uses Adams-Bashforth for the convective terms and Crank-Nicolson stepping for the diffusion and body force terms. Given the velocity field u0=u(t0) at a time t0 and its previous value u1=u(t0Δt) at the previous time t1=t0Δt, the predicted velocity field u at the time t=t0+Δt is defined by first computing a tentative velocity:

    vu0Δt=(α0C(u0,t0)+α1C(u1,t1))+θ(Du0+yD(t0))+(1θ)(Dv+yD(t))+θf(t0)+(1θ)f(t)(Gp0+yG(t0)),

    where θ[0,1] is the Crank-Nicolson parameter (θ=12 for second order convergence), (α0,α1)=(32,12) are the Adams-Bashforth coefficients, and v is a tentative velocity yet to be made divergence free. We can group the terms containing v on the left hand side, to obtain

    (1ΔtI(1θ)D)v=(1ΔtIθD)u0(α0C(u0,t0)+α1C(u1,t1))+θyD(t0)+(1θ)yD(t)+θf(t0)+(1θ)f(t)(Gp0+yG(t0)).

    We can compute v by inverting the positive definite matrix (1ΔtIθD) for the given right hand side using a suitable linear solver. Assuming Δt is constant, we can precompute a Cholesky factorization of this matrix before starting time stepping.

    We then compute the pressure difference Δp by solving

    LΔp=WMv+yM(t)ΔtWM(yG(t)yG(t0)),

    after which a divergence free velocity u can be enforced:

    u=vΔt(GΔp+yG(t)yG(t0)).

    A first order accurate prediction of the corresponding pressure is p=p0+Δp. However, since this pressure is reused in the next time step, we perform an additional pressure solve to avoid accumulating first order errors. The resulting pressure p is then accurate to the same order as u.

    Fields

    • α₁

    • α₂

    • θ

    • p_add_solve

    • method_startup

    source

    One-leg beta method

    IncompressibleNavierStokes.OneLegMethod Type
    julia
    struct OneLegMethod{T, M} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Explicit one-leg β-method following symmetry-preserving discretization of turbulent flow. See Verstappen and Veldman [14] [16] for details.

    We here require that the time step Δt is constant. Given the velocity u0 and pressure p0 at the current time t0 and their previous values u1 and p1 at the time t1=t0Δt, we start by computing the "offstep" values v=(1+β)v0βv1 and Q=(1+β)p0βp1 for some β=12.

    A tentative velocity field v~ is then computed as follows:

    v~=1β+12(2βu0(β12)u1+ΔtF(v,t)Δt(GQ+yG(t))).

    A pressure correction Δp is obtained by solving the Poisson equation

    LΔp=β+12ΔtW(Mv~+yM(t)).

    Finally, the divergence free velocity field is given by

    u=v~Δtβ+12GΔp,

    while the second order accurate pressure is given by

    p=2p0p1+43Δp.

    Fields

    • β

    • p_add_solve

    • method_startup

    source

    Runge-Kutta methods

    IncompressibleNavierStokes.AbstractRungeKuttaMethod Type
    julia
    abstract type AbstractRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractODEMethod{T}

    Abstract Runge Kutta method.

    Fields

    source

    IncompressibleNavierStokes.ExplicitRungeKuttaMethod Type
    julia
    struct ExplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Explicit Runge Kutta method. See Sanderse [17].

    Consider the velocity field u0 at a certain time t0. We will now perform one time step to t=t0+Δt. For explicit Runge-Kutta methods, this time step is divided into s sub-steps ti=t0+Δti with increment Δti=ciΔt. The final substep performs the full time step Δts=Δt such that ts=t.

    For i=1,,s, the intermediate velocity ui and pressure pi are computed as follows:

    ki=F(ui1,ti1)yG(ti1)vi=u0+Δtj=1iaijkjLpi=WM1cij=1iaijkj+WyM(ti)yM(t0)Δti=W(Mvi+yM(ti))(Mu0+yM(t0))Δtin=WMvi+yM(ti)Δtinui=viΔtiGpi,

    where (aij)ij are the Butcher tableau coefficients of the RK-method, with the convention ci=j=1iaij.

    Finally, we return us. If u0=u(t0), we get the accuracy us=u(t)+O(Δtr+1), where r is the order of the RK-method. If we perform n RK time steps instead of one, starting at exact initial conditions u0=u(0), then un=u(tn)+O(Δtr) for all n{1,,N}. Note that for a given u, the corresponding pressure p can be calculated to the same accuracy as u by doing an additional pressure projection after each outer time step Δt (if we know dyMdt(t)), or to first order accuracy by simply returning ps.

    Note that each of the sub-step velocities ui is divergence free, after projecting the tentative velocities vi. This is ensured due to the judiciously chosen replacement of dyMdt(ti) with (yM(ti)yM(t0))/Δti. The space-discrete divergence-freeness is thus perfectly preserved, even though the time discretization introduces other errors.

    Fields

    • A

    • b

    • c

    • r

    • p_add_solve

    source

    IncompressibleNavierStokes.ImplicitRungeKuttaMethod Type
    julia
    struct ImplicitRungeKuttaMethod{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Implicit Runge Kutta method. See Sanderse [18].

    The implicit linear system is solved at each time step using Newton's method. The newton_type may be one of the following:

    • :no: Replace iteration matrix with I/Δt (no Jacobian)

    • :approximate: Build Jacobian once before iterations only

    • :full: Build Jacobian at each iteration

    Fields

    • A

    • b

    • c

    • r

    • newton_type

    • maxiter

    • abstol

    • reltol

    • p_add_solve

    source

    IncompressibleNavierStokes.RKMethods Module

    Set up Butcher arrays A, b, and c, as well as and SSP coefficient r. For families of methods, optional input s is the number of stages.

    Original (MATLAB) by David Ketcheson, extended by Benjamin Sanderse.

    Exports

    source

    IncompressibleNavierStokes.LMWray3 Type
    julia
    struct LMWray3{T} <: IncompressibleNavierStokes.AbstractRungeKuttaMethod{T}

    Low memory Wray 3rd order scheme. Uses 3 vector fields and one scalar field.

    Fields

    source

    Explicit Methods

    IncompressibleNavierStokes.RKMethods.FE11 Function
    julia
    FE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    IncompressibleNavierStokes.RKMethods.SSP22 Function
    julia
    SSP22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    FE11 (Forward Euler).

    source

    IncompressibleNavierStokes.RKMethods.SSP22 Function
    julia
    SSP22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    IncompressibleNavierStokes.RKMethods.SSP42 Function
    julia
    SSP42(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP22.

    source

    IncompressibleNavierStokes.RKMethods.SSP42 Function
    julia
    SSP42(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    IncompressibleNavierStokes.RKMethods.SSP33 Function
    julia
    SSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP42.

    source

    IncompressibleNavierStokes.RKMethods.SSP33 Function
    julia
    SSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    IncompressibleNavierStokes.RKMethods.SSP43 Function
    julia
    SSP43(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP33.

    source

    IncompressibleNavierStokes.RKMethods.SSP43 Function
    julia
    SSP43(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    IncompressibleNavierStokes.RKMethods.SSP104 Function
    julia
    SSP104(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP43.

    source

    IncompressibleNavierStokes.RKMethods.SSP104 Function
    julia
    SSP104(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    IncompressibleNavierStokes.RKMethods.rSSPs2 Function
    julia
    rSSPs2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    SSP104.

    source

    IncompressibleNavierStokes.RKMethods.rSSPs2 Function
    julia
    rSSPs2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    IncompressibleNavierStokes.RKMethods.rSSPs3 Function
    julia
    rSSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s-stage 2nd order SSP.

    source

    IncompressibleNavierStokes.RKMethods.rSSPs3 Function
    julia
    rSSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}
     rSSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    IncompressibleNavierStokes.RKMethods.Wray3 Function
    julia
    Wray3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Rational (optimal, low-storage) s^2-stage 3rd order SSP.

    source

    IncompressibleNavierStokes.RKMethods.Wray3 Function
    julia
    Wray3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    IncompressibleNavierStokes.RKMethods.RK56 Function
    julia
    RK56(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Wray's RK3.

    source

    IncompressibleNavierStokes.RKMethods.RK56 Function
    julia
    RK56(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    IncompressibleNavierStokes.RKMethods.DOPRI6 Function
    julia
    DOPRI6(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK56.

    source

    IncompressibleNavierStokes.RKMethods.DOPRI6 Function
    julia
    DOPRI6(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    Implicit Methods

    IncompressibleNavierStokes.RKMethods.BE11 Function
    julia
    BE11(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Dormand-Price pair.

    source

    Implicit Methods

    IncompressibleNavierStokes.RKMethods.BE11 Function
    julia
    BE11(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    IncompressibleNavierStokes.RKMethods.SDIRK34 Function
    julia
    SDIRK34(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Backward Euler.

    source

    IncompressibleNavierStokes.RKMethods.SDIRK34 Function
    julia
    SDIRK34(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    IncompressibleNavierStokes.RKMethods.ISSPm2 Function
    julia
    ISSPm2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    3-stage, 4th order singly diagonally implicit (SSP).

    source

    IncompressibleNavierStokes.RKMethods.ISSPm2 Function
    julia
    ISSPm2(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPm2(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    IncompressibleNavierStokes.RKMethods.ISSPs3 Function
    julia
    ISSPs3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 2.

    source

    IncompressibleNavierStokes.RKMethods.ISSPs3 Function
    julia
    ISSPs3(
     ;
         ...
     ) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}
     ISSPs3(
         s;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    Half explicit methods

    IncompressibleNavierStokes.RKMethods.HEM3 Function
    julia
    HEM3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod, IncompressibleNavierStokes.ImplicitRungeKuttaMethod}

    Optimal DIRK SSP schemes of order 3.

    source

    Half explicit methods

    IncompressibleNavierStokes.RKMethods.HEM3 Function
    julia
    HEM3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    IncompressibleNavierStokes.RKMethods.HEM3BS Function
    julia
    HEM3BS(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer.

    source

    IncompressibleNavierStokes.RKMethods.HEM3BS Function
    julia
    HEM3BS(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    IncompressibleNavierStokes.RKMethods.HEM5 Function
    julia
    HEM5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    HEM3BS.

    source

    IncompressibleNavierStokes.RKMethods.HEM5 Function
    julia
    HEM5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    Classical Methods

    IncompressibleNavierStokes.RKMethods.GL1 Function
    julia
    GL1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Brasey and Hairer, 5 stage, 4th order.

    source

    Classical Methods

    IncompressibleNavierStokes.RKMethods.GL1 Function
    julia
    GL1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    IncompressibleNavierStokes.RKMethods.GL2 Function
    julia
    GL2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL1.

    source

    IncompressibleNavierStokes.RKMethods.GL2 Function
    julia
    GL2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    IncompressibleNavierStokes.RKMethods.GL3 Function
    julia
    GL3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL2.

    source

    IncompressibleNavierStokes.RKMethods.GL3 Function
    julia
    GL3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    IncompressibleNavierStokes.RKMethods.RIA1 Function
    julia
    RIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    GL3.

    source

    IncompressibleNavierStokes.RKMethods.RIA1 Function
    julia
    RIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    IncompressibleNavierStokes.RKMethods.RIA2 Function
    julia
    RIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    This is implicit Euler.

    source

    IncompressibleNavierStokes.RKMethods.RIA2 Function
    julia
    RIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    IncompressibleNavierStokes.RKMethods.RIA3 Function
    julia
    RIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA2.

    source

    IncompressibleNavierStokes.RKMethods.RIA3 Function
    julia
    RIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    IncompressibleNavierStokes.RKMethods.RIIA1 Function
    julia
    RIIA1(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIA3.

    source

    IncompressibleNavierStokes.RKMethods.RIIA1 Function
    julia
    RIIA1(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    IncompressibleNavierStokes.RKMethods.RIIA2 Function
    julia
    RIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA1.

    source

    IncompressibleNavierStokes.RKMethods.RIIA2 Function
    julia
    RIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    IncompressibleNavierStokes.RKMethods.RIIA3 Function
    julia
    RIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA2.

    source

    IncompressibleNavierStokes.RKMethods.RIIA3 Function
    julia
    RIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    IncompressibleNavierStokes.RKMethods.LIIIA2 Function
    julia
    LIIIA2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RIIA3.

    source

    IncompressibleNavierStokes.RKMethods.LIIIA2 Function
    julia
    LIIIA2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    IncompressibleNavierStokes.RKMethods.LIIIA3 Function
    julia
    LIIIA3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA2.

    source

    IncompressibleNavierStokes.RKMethods.LIIIA3 Function
    julia
    LIIIA3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    Chebyshev methods

    IncompressibleNavierStokes.RKMethods.CHDIRK3 Function
    julia
    CHDIRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    LIIIA3.

    source

    Chebyshev methods

    IncompressibleNavierStokes.RKMethods.CHDIRK3 Function
    julia
    CHDIRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    IncompressibleNavierStokes.RKMethods.CHCONS3 Function
    julia
    CHCONS3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev based DIRK (not algebraically stable).

    source

    IncompressibleNavierStokes.RKMethods.CHCONS3 Function
    julia
    CHCONS3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    IncompressibleNavierStokes.RKMethods.CHC3 Function
    julia
    CHC3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHCONS3.

    source

    IncompressibleNavierStokes.RKMethods.CHC3 Function
    julia
    CHC3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    IncompressibleNavierStokes.RKMethods.CHC5 Function
    julia
    CHC5(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Chebyshev quadrature and C(3) satisfied. Note this equals Lobatto IIIA.

    source

    IncompressibleNavierStokes.RKMethods.CHC5 Function
    julia
    CHC5(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    Miscellaneous Methods

    IncompressibleNavierStokes.RKMethods.Mid22 Function
    julia
    Mid22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CHC5.

    source

    Miscellaneous Methods

    IncompressibleNavierStokes.RKMethods.Mid22 Function
    julia
    Mid22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    IncompressibleNavierStokes.RKMethods.MTE22 Function
    julia
    MTE22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Midpoint 22 method.

    source

    IncompressibleNavierStokes.RKMethods.MTE22 Function
    julia
    MTE22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    IncompressibleNavierStokes.RKMethods.CN22 Function
    julia
    CN22(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Minimal truncation error 22 method (Heun).

    source

    IncompressibleNavierStokes.RKMethods.CN22 Function
    julia
    CN22(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    IncompressibleNavierStokes.RKMethods.Heun33 Function
    julia
    Heun33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Crank-Nicholson.

    source

    IncompressibleNavierStokes.RKMethods.Heun33 Function
    julia
    Heun33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    IncompressibleNavierStokes.RKMethods.RK33C2 Function
    julia
    RK33C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Heun33.

    source

    IncompressibleNavierStokes.RKMethods.RK33C2 Function
    julia
    RK33C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    IncompressibleNavierStokes.RKMethods.RK33P2 Function
    julia
    RK33P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying C(2) for i=3.

    source

    IncompressibleNavierStokes.RKMethods.RK33P2 Function
    julia
    RK33P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    IncompressibleNavierStokes.RKMethods.RK44 Function
    julia
    RK44(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK3 satisfying the second order condition for the pressure.

    source

    IncompressibleNavierStokes.RKMethods.RK44 Function
    julia
    RK44(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    IncompressibleNavierStokes.RKMethods.RK44C2 Function
    julia
    RK44C2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Classical fourth order.

    source

    IncompressibleNavierStokes.RKMethods.RK44C2 Function
    julia
    RK44C2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    IncompressibleNavierStokes.RKMethods.RK44C23 Function
    julia
    RK44C23(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3.

    source

    IncompressibleNavierStokes.RKMethods.RK44C23 Function
    julia
    RK44C23(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    IncompressibleNavierStokes.RKMethods.RK44P2 Function
    julia
    RK44P2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying C(2) for i=3 and c2=c3.

    source

    IncompressibleNavierStokes.RKMethods.RK44P2 Function
    julia
    RK44P2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    DSRK Methods

    IncompressibleNavierStokes.RKMethods.DSso2 Function
    julia
    DSso2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    RK4 satisfying the second order condition for the pressure (but not third order).

    source

    DSRK Methods

    IncompressibleNavierStokes.RKMethods.DSso2 Function
    julia
    DSso2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    IncompressibleNavierStokes.RKMethods.DSRK2 Function
    julia
    DSRK2(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRKso2.

    source

    IncompressibleNavierStokes.RKMethods.DSRK2 Function
    julia
    DSRK2(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    IncompressibleNavierStokes.RKMethods.DSRK3 Function
    julia
    DSRK3(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    CBM's DSRK2.

    source

    IncompressibleNavierStokes.RKMethods.DSRK3 Function
    julia
    DSRK3(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    "Non-SSP" Methods of Wong & Spiteri

    IncompressibleNavierStokes.RKMethods.NSSP21 Function
    julia
    NSSP21(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    Zennaro's DSRK3.

    source

    "Non-SSP" Methods of Wong & Spiteri

    IncompressibleNavierStokes.RKMethods.NSSP21 Function
    julia
    NSSP21(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    IncompressibleNavierStokes.RKMethods.NSSP32 Function
    julia
    NSSP32(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP21.

    source

    IncompressibleNavierStokes.RKMethods.NSSP32 Function
    julia
    NSSP32(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    IncompressibleNavierStokes.RKMethods.NSSP33 Function
    julia
    NSSP33(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP32.

    source

    IncompressibleNavierStokes.RKMethods.NSSP33 Function
    julia
    NSSP33(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    IncompressibleNavierStokes.RKMethods.NSSP53 Function
    julia
    NSSP53(
    +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP33.

    source

    IncompressibleNavierStokes.RKMethods.NSSP53 Function
    julia
    NSSP53(
     ;
         kwargs...
    -) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    - +) -> Union{IncompressibleNavierStokes.ExplicitRungeKuttaMethod{Float64}, IncompressibleNavierStokes.ImplicitRungeKuttaMethod{Float64}}

    NSSP53.

    source

    + \ No newline at end of file diff --git a/previews/PR126/manual/utils.html b/previews/PR126/manual/utils.html index 21c86e09..910900fa 100644 --- a/previews/PR126/manual/utils.html +++ b/previews/PR126/manual/utils.html @@ -6,14 +6,14 @@ Utils | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -24,17 +24,17 @@
    Skip to content

    Utils

    IncompressibleNavierStokes.get_lims Function
    julia
    get_lims(x) -> Tuple{Any, Any}
    -get_lims(x, n) -> Tuple{Any, Any}

    Get approximate lower and upper limits of a field x based on the mean and standard deviation (μ±nσ). If x is constant, a margin of 1e-4 is enforced. This is required for contour plotting functions that require a certain range.

    source

    IncompressibleNavierStokes.get_spectrum Method
    julia
    get_spectrum(
    +get_lims(x, n) -> Tuple{Any, Any}

    Get approximate lower and upper limits of a field x based on the mean and standard deviation (μ±nσ). If x is constant, a margin of 1e-4 is enforced. This is required for contour plotting functions that require a certain range.

    source

    IncompressibleNavierStokes.get_spectrum Method
    julia
    get_spectrum(
         setup;
         npoint,
         a
    -) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    IncompressibleNavierStokes.getoffset Method
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    IncompressibleNavierStokes.getval Method
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    IncompressibleNavierStokes.plotgrid Function
    julia
    plotgrid(x, y; kwargs...)
    -plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    IncompressibleNavierStokes.spectral_stuff Method
    julia
    spectral_stuff(
    +) -> NamedTuple{(, :masks, :K), <:Tuple{Any, Any, Any}}

    Get energy spectrum of velocity field.

    source

    IncompressibleNavierStokes.getoffset Method
    julia
    getoffset(I) -> Any

    Get offset from CartesianIndices I.

    source

    IncompressibleNavierStokes.getval Method
    julia
    getval(_::Val{x}) -> Any

    Get value contained in Val.

    source

    IncompressibleNavierStokes.plotgrid Function
    julia
    plotgrid(x, y; kwargs...)
    +plotgrid(x, y, z)

    Plot nonuniform Cartesian grid.

    source

    IncompressibleNavierStokes.spectral_stuff Method
    julia
    spectral_stuff(
         setup;
         npoint,
         a
    -) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    IncompressibleNavierStokes.splitseed Method
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    - +) -> NamedTuple{(:inds, , :K), <:Tuple{Any, Any, Any}}

    Get utilities to compute energy spectrum.

    source

    IncompressibleNavierStokes.splitseed Method
    julia
    splitseed(seed, n) -> AbstractArray

    Split random number generator seed into n new seeds.

    source

    + \ No newline at end of file diff --git a/previews/PR126/references.html b/previews/PR126/references.html index ac62d41e..0aafc489 100644 --- a/previews/PR126/references.html +++ b/previews/PR126/references.html @@ -6,14 +6,14 @@ References | IncompressibleNavierStokes.jl - + - + - - - + + + @@ -23,8 +23,8 @@ -
    Skip to content

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    - +
    Skip to content

    References


    Bibliography

    1. D. Kochkov, J. A. Smith, A. Alieva, Q. Wang, M. P. Brenner and S. Hoyer. Machine learning-accelerated computational fluid dynamics. Proceedings of the National Academy of Sciences 118 (2021).

    2. M. Kurz, P. Offenhäuser and A. Beck. Deep Reinforcement Learning for Turbulence Modeling in Large Eddy Simulations, arXiv (2022).

    3. B. List, L.-W. Chen and N. Thuerey. Learned Turbulence Modelling with Differentiable Fluid Solvers, arxiv:2202.06988 (2022).

    4. J. F. MacArt, J. Sirignano and J. B. Freund. Embedded training of neural-network sub-grid-scale turbulence models (2021).

    5. J. Li and P. M. Carrica. A simple approach for vortex core visualization, arXiv:1910.06998 (2019), arXiv:1910.06998 [physics.flu-dyn].

    6. J. Jeong and F. Hussain. On the identification of a vortex. J. Fluid. Mech. 285, 69–94 (1995).

    7. S. B. Pope. Turbulent Flows (Cambridge University Press, Cambridge, England, 2000).

    8. B. Sanderse and F. X. Trias. Energy-consistent discretization of viscous dissipation with application to natural convection flow (Jul 2023), arXiv:2307.10874v1 [physics.flu-dyn].

    9. M. H. Silvis, R. A. Remmerswaal and R. Verstappen. Physical consistency of subgrid-scale models for large-eddy simulation of incompressible turbulent flows. Physics of Fluids 29 (2017).

    10. F. X. TRIAS, M. SORIA, A. OLIVA and C. D. PÉREZ-SEGARRA. Direct numerical simulations of two- and three-dimensional turbulent natural convection flows in a differentially heated cavity of aspect ratio 4. Journal of Fluid Mechanics 586, 259–293 (2007).

    11. P. Orlandi. Fluid flow phenomena: a numerical toolkit. Vol. 55 (Springer Science & Business Media, 2000).

    12. O. San and A. E. Staples. High-order methods for decaying two-dimensional homogeneous isotropic turbulence. Computers & Fluids 63, 105–127 (2012).

    13. F. H. Harlow and J. E. Welch. * Numerical Calculation of Time‐Dependent Viscous Incompressible Flow of Fluid with Free Surface *. The Physics of Fluids 8, 2182–2189 (1965), arXiv:https://aip.scitation.org/doi/pdf/10.1063/1.1761178.

    14. R. W. Verstappen and A. E. Veldman. Symmetry-Preserving Discretization of Turbulent Flow. J. Comput. Phys. 187, 343–368 (2003).

    15. B. Sanderse, R. Verstappen and B. Koren. Boundary treatment for fourth-order staggered mesh discretizations of the incompressible Navier–Stokes equations. Journal of Computational Physics 257, 1472–1505 (2014). Physics-compatible numerical methods.

    16. R. Verstappen and A. Veldman. Direct Numerical Simulation of Turbulence at Lower Costs. Journal of Engineering Mathematics 32, 143–159 (1997).

    17. B. Sanderse and B. Koren. Accuracy analysis of explicit Runge–Kutta methods applied to the incompressible Navier–Stokes equations. Journal of Computational Physics 231, 3041–3063 (2012).

    18. B. Sanderse. Energy-conserving Runge–Kutta methods for the incompressible Navier–Stokes equations. Journal of Computational Physics 233, 100–131 (2013).

    + \ No newline at end of file